From a2d2dc2e14d06453b6ed6e611f602333eb41bf0a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 30 三月 2023 10:57:08 +0800
Subject: [PATCH] 更改项目名称,命名空间,上传更改过的jar包,更改服务名,项目中的类引用路径
---
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntAuthorityDTO.java | 124
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOServiceI.java | 128
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/AuthClientServiceImpl.java | 33
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java | 77
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntAuthorityVO.java | 123
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeNoOpPasswordEncoder.java | 50
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/NoticeMapper.xml | 54
Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java | 43
Source/UBCS/ubcs-gateway/Dockerfile | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/CombinationServiceImpl.java | 127
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeClassifyTemplateLC.java | 144
Source/UBCS/pom.xml | 220
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java | 82
Source/UBCS/ubcs-service-api/ubcs-system-api/pom.xml | 24
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/AuthClientMapper.xml | 27
Source/UBCS/doc/sql/dm/bladex-sword-dameng.dmp | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java | 263
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java | 42
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom | 46
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessTempDO.java | 169
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouter.java | 24
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/UserController.java | 172
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom | 51
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/AdminConfiguration.java | 32
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntAuthorityDaoI.java | 128
Source/UBCS/ubcs-auth/src/main/resources/static/js/popper.min.js | 0
Source/UBCS/doc/nacos/routes/blade-gateway-dev.json | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateMapServiceImpl.java | 278
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/CookieInterceptor.java | 43
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictBizEnum.java | 39
Source/UBCS/doc/sql/mysql/bladex-flowable-mysql.sql | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleScope.java | 71
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntBaseServiceI.java | 101
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeAllCodeDO.java | 170
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java | 112
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css | 0
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml | 17
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobScheduleHelper.java | 354
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeButtonServiceI.java | 115
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuSettingMapper.xml | 5
Source/UBCS/ubcs-auth/Dockerfile | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/LogApplication.java | 35
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/layer.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobLogController.java | 230
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ParamController.java | 107
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/EnumVO.java | 25
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobRegistry.java | 55
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingTaskDaoI.java | 127
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java | 223
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IApiScopeService.java | 29
Source/UBCS/ubcs-plugin-api/README.md | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java | 230
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RegionVO.java | 89
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/OssVO.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntParamDO.java | 89
Source/UBCS/script/docker/elk/README.md | 0
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayFilter.java | 41
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java | 150
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrMappingDO.java | 207
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTemplatePhaseServiceImpl.java | 509
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateDaoI.java | 170
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingTaskDaoImpl.java | 214
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantServiceImpl.java | 337
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java | 80
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataServiceI.java | 152
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Model.java | 74
Source/UBCS/.gitignore | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java | 145
Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/LeaveMapper.xml | 6
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java | 517
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css | 0
Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/update.json | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrRangeDaoImpl.java | 204
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMapMethod.java | 24
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application.yml | 61
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/user/user.index.ftl | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeRuleDO.java | 79
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/templates/code.properties | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java | 62
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/XxlJobServiceImpl.java | 372
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntBaseDO.java | 78
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingTaskVO.java | 200
Source/UBCS/ubcs-auth/src/main/resources/static/css/bootstrap.min.css | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantPackageController.java | 131
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom | 33
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/ISmsService.java | 56
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateMapController.java | 116
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java | 669
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom | 40
Source/UBCS/doc/sql/update/bladex-update-postgresql-3.0.0~3.0.1.sql | 0
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthProvider.java | 67
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java | 39
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java | 70
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/result.json | 0
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java | 73
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogUsualService.java | 29
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictServiceImpl.java | 125
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSerialValueDaoI.java | 128
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java | 101
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DataScopeController.java | 123
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/enums/SmsCodeEnum.java | 62
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java | 359
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantService.java | 90
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingDataSyncScheduling.java | 56
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java | 23
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateMapServiceI.java | 100
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java | 71
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java | 108
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java | 113
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleMenu.java | 70
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/BackXml.java | 42
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/UserVO.java | 56
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ApiScope.java | 71
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Json2XmlUtil.java | 121
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowFollowController.java | 68
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml | 71
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserDeptService.java | 30
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/cache/CacheNames.java | 59
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/favicon.ico | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogApiMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java | 19
Source/UBCS/LICENSE | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Pro.java | 40
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java | 35
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClient.java | 74
Source/UBCS/ubcs-service/ubcs-system/pom.xml | 75
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionImporter.java | 40
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/INoticeService.java | 39
Source/UBCS/doc/nacos/README.md | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobDynamicScheduler.java | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionsVO.java | 26
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkService.java | 110
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleVO.java | 72
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictMapper.java | 73
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobcode.index.1.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/PropertyVO.java | 48
Source/UBCS/ubcs-service-api/ubcs-desk-api/pom.xml | 17
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodePhaseAttrServiceI.java | 107
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RegionWrapper.java | 52
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 4016 ++
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowEntity.java | 43
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/SystemApplication.java | 35
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java | 76
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmDuckingConstant.java | 146
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryClassifyVO.java | 23
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StrategyController.java | 122
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuMapper.xml | 21
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthSecure.java | 37
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/launch/LauncherServiceImpl.java | 62
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.lastUpdated | 5
Source/UBCS/ubcs-gateway/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataCondtionsVO.java | 20
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSynonymDaoI.java | 128
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ParamMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.index.1.js | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogUsualController.java | 66
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java | 1053
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DeptMapper.java | 68
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java | 67
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/LocalCacheUtil.java | 133
Source/UBCS/doc/sql/postgresql/bladex-flowable-postgresql.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot | 0
Source/UBCS/ubcs-service/pom.xml | 57
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrRangeDO.java | 95
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java | 130
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntParamDaoI.java | 144
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/gennerAttrMapUtil.java | 45
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/BladeTokenGranter.java | 52
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ValueRangeMapper.xml | 85
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java | 34
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Sms.java | 82
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java | 166
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java | 33
Source/UBCS/script/docker/elk/undeploy.sh | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/JsonRootDataDTO.java | 21
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TopMenuController.java | 136
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/CombinationMapper.java | 59
Source/UBCS/doc/nacos/blade.yaml | 0
Source/UBCS/script/docker/app/prometheus/config/wechat.tmpl | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/tt.xml | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/UserPwdstrategy.java | 77
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/DeptDTO.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserWebMapper.xml | 5
Source/UBCS/script/docker/elk/logstash-filebeat.conf | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogUsualServiceImpl.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg | 0
Source/UBCS/script/docker/app/prometheus/dashboard/bladex-linux.json | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/AttachMapper.java | 42
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeTemplatePhaseDaoI.java | 142
Source/UBCS/doc/sql/oracle/bladex-sword-oracle.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js | 0
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/DingTalkConfiguration.java | 52
Source/UBCS/doc/sql/oracle/bladex-flowable-oracle.sql | 0
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictBizCache.java | 133
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeRuleDaoI.java | 155
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogReport.java | 54
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/constant/AuthConstant.java | 53
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/annotation/PermissionLimit.java | 29
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java | 651
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java | 133
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataInfoDaoI.java | 128
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java | 116
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js | 0
Source/UBCS/script/docker/elk/logstash.yml | 0
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java | 177
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java | 51
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IParamService.java | 37
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRegionService.java | 86
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/LeaveMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkNotifier.java | 105
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfysVO.java | 30
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/RouterFunctionConfiguration.java | 81
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java | 109
Source/UBCS/script/docker/elk/kibana.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotSaveDatVO.java | 55
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogReportDao.java | 26
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java | 135
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/InterParameterVO.java | 21
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java | 37
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RoleWrapper.java | 61
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java | 40
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java | 73
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserWebMapper.java | 30
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSynonymDaoImpl.java | 215
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeButtonDaoI.java | 142
Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StrategyMapper.java | 52
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingLogeVO.java | 177
Source/UBCS/doc/nacos/blade-test.yaml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeTemplatePhaseDO.java | 81
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/ILeaveService.java | 37
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryLibraryVO.java | 39
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessPhaseDO.java | 127
Source/UBCS/ubcs-auth/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/OssWrapper.java | 49
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobFailMonitorHelper.java | 209
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserAppMapper.xml | 5
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StrategyMapper.xml | 118
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserDeptServiceImpl.java | 34
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java | 104
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java | 177
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/ResourceApplication.java | 36
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java | 17
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeDeleteBatchDTO.java | 49
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/index.ftl | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ApiScopeMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobcode/jobcode.index.ftl | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingLogeDTO.java | 179
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java | 685
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java | 88
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntInfoServiceImpl.java | 1097
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/classfy.json | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotResembleVO.java | 66
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java | 130
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/CombinationMapper.xml | 109
Source/UBCS/ubcs-auth/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java | 167
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/QiniuSmsBuilder.java | 47
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.index.ftl | 0
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/LeaveServiceImpl.java | 81
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportResultVO.java | 123
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 920
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateMapDO.java | 114
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/UserPwdstrategyVO.java | 29
Source/UBCS/ubcs-service/ubcs-desk/pom.xml | 97
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/LoginService.java | 106
Source/UBCS/ubcs-service/ubcs-desk/Dockerfile | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/AliOssBuilder.java | 63
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntHeaderVO.java | 80
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuServiceImpl.java | 63
Source/UBCS/doc/sql/sqlserver/bladex-flowable-sqlserver.sql | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateDaoImpl.java | 321
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java | 377
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/PatternUtil.java | 49
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DeptServiceImpl.java | 173
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java | 64
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java | 144
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrMappingDaoImpl.java | 205
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/script/docker/app/prometheus/config/prometheus.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/common.1.js | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IDatasourceService.java | 29
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/ApiScopeWrapper.java | 48
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateMapDaoI.java | 141
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Attach.java | 71
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java | 278
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictBizMapper.java | 64
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClient.java | 72
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/dto/ModelDTO.java | 42
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntParamDaoImpl.java | 258
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictBizWrapper.java | 61
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/ErrorHandlerConfiguration.java | 44
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowMapper.java | 46
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/data.xml | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/BladeTest.java | 46
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java | 112
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeDefaultLC.java | 159
Source/UBCS/ubcs-gateway/src/main/resources/bootstrap.yml | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/TencentSmsBuilder.java | 46
Source/UBCS/script/docker/elk/filebeat.yml | 0
Source/UBCS/ubcs-service/ubcs-omd/pom.xml | 93
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java | 62
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DataScopeClient.java | 109
Source/UBCS/doc/sql/update/bladex-update-dameng-3.0.0~3.0.1.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/jobhandler/SampleXxlJob.java | 195
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntInfoServiceI.java | 159
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/TriggerTypeEnum.java | 26
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodePhaseAttrDO.java | 93
Source/UBCS/ubcs-auth/src/main/resources/static/js/jquery.min.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineServiceI.java | 362
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java | 179
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java | 166
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalRequestLogFilter.java | 112
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.detail.ftl | 0
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.java | 36
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/mapper/FlowMapper.xml | 53
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ApiScopeController.java | 123
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserOauthServiceImpl.java | 36
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfyVO.java | 83
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantTreeVO.java | 40
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DeptWrapper.java | 78
Source/UBCS/script/docker/app/prometheus/config/grafana.ini | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Dept.java | 108
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/CodeMapper.xml | 22
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java | 167
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java | 1071
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java | 244
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java | 122
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntBaseVO.java | 25
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java | 23
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/xx.xml | 0
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTempMapItemServiceImpl.java | 297
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobInfoDao.java | 49
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java | 345
Source/UBCS/ubcs-ops/ubcs-log/Dockerfile | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyProcessTempServiceI.java | 124
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserApp.java | 64
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java | 63
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTempMapItemDO.java | 181
Source/UBCS/doc/sql/db/database-info.md | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message_en.properties | 262
Source/UBCS/ubcs-service-api/ubcs-user-api/pom.xml | 24
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java | 121
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/ParamCache.java | 72
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrMappingDaoI.java | 133
Source/UBCS/ubcs-ops/ubcs-flow/doc/nacos/blade-flow-dev.yaml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/layer.css | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Strategy.java | 175
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/FlowClient.java | 107
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java | 19
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeFixedValueDaoImpl.java | 222
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/JwtTokenStoreConfiguration.java | 77
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultClassifyVO.java | 21
Source/UBCS/script/docker/elk/deploy.sh | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/GeneralMappingUtil.java | 30
Source/UBCS/service-start.sh | 83
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IOssService.java | 56
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java | 344
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/SocialTokenGranter.java | 130
Source/UBCS/ubcs-ops/ubcs-admin/README.md | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogUsualMapper.java | 29
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDeptService.java | 119
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/FlowBusinessService.java | 72
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java | 48
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/AttachController.java | 127
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeRuleServiceI.java | 175
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java | 119
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateAttrDaoI.java | 128
Source/UBCS/ubcs-service-api/ubcs-scope-api/pom.xml | 32
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserSearchServiceImpl.java | 65
Source/UBCS/ubcs-ops/ubcs-report/pom.xml | 70
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyProcessTempDaoImpl.java | 247
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml | 62
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateMapVO.java | 96
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlUtil.java | 770
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyAttributeVO.java | 63
Source/UBCS/ubcs-ops/ubcs-log/pom.xml | 66
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeTemplatePhaseServiceI.java | 137
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/security/InternalAuthorizationManager.java | 75
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/FtlUtil.java | 31
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/ModelPrototype.java | 119
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultDataVO.java | 47
Source/UBCS/script/docker/elk/es-slave2.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/tt.json | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserAppMapper.java | 30
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/SmsMapper.xml | 30
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobUserDao.java | 31
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataDTO.java | 244
Source/UBCS/ubcs-ops/ubcs-admin/Dockerfile | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java | 59
Source/UBCS/script/docker/app/nginx/web/nginx.conf | 0
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeAuthorizationServerConfiguration.java | 120
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogErrorService.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyServiceI.java | 240
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingSeviceImpl.java | 531
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message.properties | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/DatasourceServiceImpl.java | 33
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java | 27
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleMenuVO.java | 35
Source/UBCS/ubcs-ops-api/pom.xml | 52
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowProcess.java | 65
Source/UBCS/script/docker/app/.env | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/feign/LogClient.java | 68
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataDaoI.java | 127
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-prod.yml | 0
Source/UBCS/script/docker/app/nginx/api/nginx.conf | 0
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/props/AuthProperties.java | 59
Source/UBCS/doc/nacos/blade-prod.yaml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java | 98
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataInfoServiceI.java | 100
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DeptController.java | 176
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatRuleController.java | 115
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserExcel.java | 97
Source/UBCS/ubcs-common/pom.xml | 46
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Combination.java | 112
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java | 20
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/NoticeServiceImpl.java | 43
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantPackageService.java | 29
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java | 83
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataObjectVO.java | 72
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/RegionCache.java | 63
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/SmsMapper.java | 41
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobGroupDao.java | 26
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/YunpianSmsBuilder.java | 44
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/index.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogGlueDao.java | 24
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCompPreviewDTO.java | 42
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataServiceImpl.java | 1119
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTempMapItemDaoI.java | 127
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css | 0
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntInfoDaoI.java | 127
Source/UBCS/ubcs-plugin/pom.xml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsAxis2ClientUtil.java | 59
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java | 333
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ClassifyVO.java | 112
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelPrototypeMapper.java | 29
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateDTO.java | 104
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/dto/DictDTO.java | 33
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyValueDO.java | 108
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/result.json | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/CodeMapper.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataDaoImpl.java | 214
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTempMapItemDTO.java | 184
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogErrorMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-resource/pom.xml | 120
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/SecurityConfiguration.java | 73
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingServiceImpl.java | 1111
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyProcessTempDaoI.java | 141
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/utils/FlowCache.java | 78
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserSearchClient.java | 81
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotParmaDatVO.java | 41
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodePhaseAttrDaoImpl.java | 246
Source/UBCS/script/docker/elk/es-slave1.yml | 0
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/SmsUtil.java | 113
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js | 0
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClient.java | 100
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntBaseDaoI.java | 128
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java | 133
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingDataDaoImpl.java | 215
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java | 190
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeAllCodeLC.java | 165
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/entity/ProcessLeave.java | 67
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/TencentOssBuilder.java | 66
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantPackageMapper.xml | 20
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantPackageMapper.java | 29
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogApiMapper.xml | 26
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeResembleRuleVO.java | 119
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeOssConfiguration.java | 44
Source/UBCS/ubcs-service-api/pom.xml | 75
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/QiniuOssBuilder.java | 52
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RegionMapper.java | 62
Source/UBCS/ubcs-ops/ubcs-flow/Dockerfile | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java | 481
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java | 155
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateServiceImpl.java | 1091
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLifeCycleConstant.java | 26
Source/UBCS/ubcs-ops-api/ubcs-resource-api/pom.xml | 28
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml | 87
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/CookieUtil.java | 98
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RegionServiceImpl.java | 120
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java | 132
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java | 48
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DeptVO.java | 84
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOtherMapper.java | 30
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryClsfDO.java | 42
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/scheduler/XxlJobScheduler.java | 112
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java | 199
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingDataDaoI.java | 128
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Post.java | 66
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/AttachMapper.xml | 28
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ColumnVO.java | 51
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStrategyService.java | 72
Source/UBCS/ubcs-ops/ubcs-xxljob/pom.xml | 62
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeBasicSecServiceI.java | 182
Source/UBCS/ubcs-ops-api/ubcs-flow-api/pom.xml | 19
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClient.java | 60
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ParamMapper.xml | 20
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictBizController.java | 179
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon.png | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application.yml | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java | 44
Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ParamDTO.java | 33
Source/UBCS/doc/sql/oracle/bladex-saber-oracle.sql | 0
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/DictBiz.java | 108
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java | 114
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom | 35
Source/UBCS/doc/sql/dm/bladex-flowable-dameng.dmp | 0
Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB官方文档.md | 1740
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOauthMapper.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeServiceI.java | 38
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntBaseServiceImpl.java | 285
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java | 85
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java | 138
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java | 189
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantMapper.java | 41
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobGroup.java | 76
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java | 84
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeFixedValueDaoI.java | 127
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataVO.java | 256
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Oss.java | 87
Source/UBCS/ubcs-gateway/pom.xml | 102
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeRuleDaoImpl.java | 276
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/login.1.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java | 120
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Menu.java | 149
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ParamVO.java | 35
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java | 167
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java | 636
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 | 0
Source/UBCS/ubcs-ops/ubcs-admin/pom.xml | 118
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java | 71
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ApiScopeServiceImpl.java | 33
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java | 1024
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeImprotDataGridVO.java | 4
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java | 200
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/clsfAttrMap.xml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/PostController.java | 149
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java | 174
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java | 47
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserSearchClient.java | 65
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java | 121
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/AdminBizImpl.java | 171
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java | 226
Source/UBCS/doc/sql/sqlserver/bladex-saber-sqlserver.sql | 0
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOther.java | 64
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java | 169
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/OssMapper.java | 42
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java | 72
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java | 39
Source/UBCS/ubcs-auth/README.md | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogApiService.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/PermissionInterceptor.java | 59
Source/UBCS/script/docker/app/prometheus/dashboard/bladex-docker.json | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultSystemVO.java | 61
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOauthMapper.xml | 22
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DataScopeMapper.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTempMapItemController.java | 116
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDataScopeService.java | 29
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/DatasourceController.java | 128
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java | 157
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogApiServiceImpl.java | 34
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/UserApplication.java | 35
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntParamDTO.java | 81
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/TaskUtil.java | 71
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeResembleRuleServiceI.java | 100
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenuSetting.java | 38
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictEnum.java | 95
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultVO.java | 21
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/HttpUtils.java | 194
Source/UBCS/script/docker/app/prometheus/config/dingtalk.yml | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ApiScopeVO.java | 39
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/PostDTO.java | 33
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntParamVO.java | 80
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/DataScopeModelHandler.java | 65
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeClassifyFullInfoBO.java | 66
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/LeaveController.java | 66
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application.yml | 0
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java | 90
Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-style.css | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyProcessTempDTO.java | 152
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ProppertyVO.java | 56
Source/UBCS/ubcs-ops/ubcs-resource/Dockerfile | 15
Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/entity/Notice.java | 64
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoderFactories.java | 66
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom | 46
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml | 61
Source/UBCS/script/docker/app/nacos/init.d/custom.properties | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/IndexController.java | 93
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java | 746
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java | 21
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelMapper.xml | 27
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionsVO.java | 48
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateButtonDO.java | 135
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RegionController.java | 202
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java | 142
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/feign/SmsClient.java | 69
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobLogReportHelper.java | 152
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/tt.xml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreAttrMappingSeviceI.java | 48
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/application.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuSettingServiceImpl.java | 33
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java | 225
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyValueServiceI.java | 152
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml | 60
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java | 50
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeTemplatePhaseDaoImpl.java | 247
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataInfoServiceImpl.java | 277
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/config/BladeCommonConfiguration.java | 32
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ParamServiceImpl.java | 40
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DeptMapper.xml | 115
Source/UBCS/doc/sql/update/bladex-update-oracle-3.0.0~3.0.1.sql | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelPrototypeService.java | 47
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js | 234
Source/UBCS/doc/sql/sqlserver/bladex-sword-sqlserver.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java | 120
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/java/com/vci/ubcs/swagger/SwaggerApplication.java | 36
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml | 63
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntInfoDaoImpl.java | 214
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/DateUtils.java | 527
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogDao.java | 60
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobInfoController.java | 166
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/SmsWrapper.java | 49
Source/UBCS/ubcs-service/ubcs-code/pom.xml | 170
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingClassSyncScheduling.java | 57
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java | 47
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserWeb.java | 64
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java | 116
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClientFallback.java | 45
Source/UBCS/ubcs-auth/src/main/resources/templates/confirm.ftl | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java | 84
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobRegistryDao.java | 38
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java | 115
Source/UBCS/ubcs-ops/ubcs-xxljob/Dockerfile | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionVO.java | 42
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleScopeService.java | 29
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuSettingService.java | 29
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClientFallback.java | 58
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/classify.xml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/I18nUtil.java | 80
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/SecurityConfiguration.java | 64
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClientFallback.java | 46
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/config/FlowableConfiguration.java | 44
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobinfo.index.1.js | 0
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntHeaderDaoI.java | 143
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/pom.xml | 125
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataVO.java | 19
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java | 12
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/nacos/blade-xxljob-admin-dev.yaml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateButtonDaoI.java | 127
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/AttributeMapConfig.java | 33
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuSettingMapper.java | 29
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictVO.java | 71
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoder.java | 39
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java | 134
Source/UBCS/doc/nacos/routes/README.md | 0
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeFixedValueDO.java | 93
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/NoticeController.java | 150
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml | 51
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java | 79
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/xxx.json | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/conf/XxlJobAdminConfig.java | 147
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobTriggerPoolHelper.java | 145
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/OssBuilder.java | 160
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/OssController.java | 149
Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-prod.yml | 0
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom | 54
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeBasicSecDO.java | 728
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java | 104
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingLogeDaoI.java | 128
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogApiController.java | 66
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/XxlJobTrigger.java | 211
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/CombinationController.java | 108
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserSearchService.java | 64
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/banner.txt | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodePhaseAttrVO.java | 77
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyDO.java | 276
Source/UBCS/ubcs-ops/ubcs-admin/src/main/resources/bootstrap.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMenuMapper.xml | 16
Source/UBCS/doc/sql/update/bladex-update-sqlserver-3.0.0~3.0.1.sql | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/PostWrapper.java | 47
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java | 157
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingScheduling.java | 57
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/cache/UserCache.java | 87
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js | 0
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/FlowUtil.java | 66
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/SmsServiceImpl.java | 67
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantPackageServiceImpl.java | 33
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/CodeController.java | 188
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeKeyAttrRepeatRuleDaoI.java | 148
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ValueRangeServiceImpl.java | 115
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingSyncServiceI.java | 48
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.exception.ftl | 0
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalResponseLogFilter.java | 99
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/AttachVO.java | 35
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeAllCodeDaoI.java | 141
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/enums/UserEnum.java | 69
Source/UBCS/ubcs-ops/ubcs-develop/src/test/resources/templates/code.properties | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/SmsEndpoint.java | 175
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/DatasourceMapper.xml | 22
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantController.java | 245
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateDO.java | 93
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/SearchController.java | 98
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatRuleDTO.java | 99
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/appcode.xml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleScopeMapper.xml | 12
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/SignSecure.java | 37
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/JacksonUtil.java | 92
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/handler/ErrorExceptionHandler.java | 96
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Code.java | 180
Source/UBCS/doc/docker/README.md | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOtherMapper.xml | 5
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeFixedValueServiceI.java | 124
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSerialAlgorithmServiceI.java | 18
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/AliSmsBuilder.java | 50
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java | 190
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/RequestFilter.java | 63
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobGroupController.java | 165
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/help.ftl | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/PostMapper.java | 50
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java | 87
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/constant/DictConstant.java | 38
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/DashBoardController.java | 207
Source/UBCS/script/docker/elk/docker-compose.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTempMapItemServiceI.java | 101
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntHeaderDO.java | 90
Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java | 43
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/logback.xml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java | 102
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictBizMapper.xml | 51
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.lastUpdated | 17
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeResembleRuleDTO.java | 118
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/LibraryVO.java | 49
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/AdminApplication.java | 39
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Role.java | 100
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateServiceI.java | 199
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/MenuWrapper.java | 72
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/login.ftl | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IPostService.java | 68
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserInfo.java | 68
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java | 127
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfyVO.java | 49
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserImporter.java | 40
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/CaptchaTokenGranter.java | 65
Source/UBCS/service-stop.sh | 199
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataDO.java | 266
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java | 69
Source/UBCS/doc/sql/mysql/bladex-saber-mysql.sql | 0
Source/UBCS/ubcs-auth/src/main/resources/static/js/md5.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelPrototypeController.java | 136
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/config/ScopeConfiguration.java | 50
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java | 233
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 2758 +
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/NoticeMapper.java | 50
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataInfoDTO.java | 126
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingServiceI.java | 92
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java | 301
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/DatasourceMapper.java | 29
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateMapDTO.java | 96
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleScopeMapper.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css | 0
Source/UBCS/ubcs-ops/ubcs-flow/pom.xml | 110
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySyncController.java | 169
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java | 215
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSynonymDO.java | 121
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Datasource.java | 71
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeKeyAttrRepeatRuleServiceI.java | 115
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/ICodeService.java | 38
Source/UBCS/script/docker/app/prometheus/dashboard/bladex-nacos.json | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuService.java | 41
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DataScopeVO.java | 39
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfysVO.java | 21
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTempMapItemVO.java | 210
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java | 129
Source/UBCS/ubcs-service/ubcs-user/Dockerfile | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntHeaderDTO.java | 80
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryDO.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodePhaseAttrDTO.java | 64
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/ApiScopeClient.java | 63
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClientFallback.java | 44
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/DataScopeCache.java | 96
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntAuthorityServiceI.java | 101
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingTaskDO.java | 224
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultSystemVO.java | 52
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DataScopeServiceImpl.java | 33
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeKeyAttrRepeatRuleDO.java | 120
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DataResembleVO.java | 36
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl | 0
Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/MonitorProperties.java | 67
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/CheckedTreeVO.java | 37
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IAuthClientService.java | 29
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataAttributeVO.java | 112
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMap.java | 28
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/processes/LeaveProcess.bpmn20.xml | 0
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom | 57
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/controller/WorkController.java | 147
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Tenant.java | 103
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java | 165
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml | 478
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntHeaderDaoImpl.java | 262
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java | 41
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 836
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLinkTypeConstant.java | 13
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeDuckingController.java | 293
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/SmsBuilder.java | 157
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSynonymServiceI.java | 101
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/TenantConstant.java | 66
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/TenantVO.java | 40
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java | 29
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSerialValueDO.java | 88
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/controller/TestController.java | 23
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml | 98
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClientFallback.java | 39
Source/UBCS/ubcs-auth/src/main/resources/static/js/bootstrap.min.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyValueDaoI.java | 147
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java | 57
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictCache.java | 160
Source/UBCS/doc/other/http-code.md | 0
Source/UBCS/script/docker/app/prometheus/dashboard/bladex-jvm.json | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateAttrServiceI.java | 133
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java | 559
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntInfoDO.java | 656
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeBasicSecDaoImpl.java | 271
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java | 142
Source/UBCS/doc/nacos/blade-dev.yaml | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserOauthService.java | 30
Source/更改过的jar包/blade-starter-tenant/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Param.java | 64
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeButtonDTO.java | 85
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeResembleRuleDO.java | 137
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/feign/NoticeClient.java | 54
Source/UBCS/.editorconfig | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobThreadPool.java | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/UpdateSysInfoStatusDTO.java | 40
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteServiceListener.java | 96
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java | 137
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntAuthorityDO.java | 159
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ConfigAttrMappingVO.java | 6
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/ApiScopeCache.java | 77
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/OssServiceImpl.java | 67
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobUser.java | 73
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ApiScopeMapper.xml | 5
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleVO.java | 72
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java | 324
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelController.java | 228
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsErpClientUtil.java | 59
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/AuthApplication.java | 36
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultData.java | 45
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultClassfyVO.java | 60
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java | 255
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobgroup.index.1.js | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java | 279
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java | 136
Source/UBCS/ubcs-plugin/README.md | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDataVO.java | 119
Source/更改过的jar包/blade-starter-develop/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-auth/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/PostServiceImpl.java | 74
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/AuthClientController.java | 118
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobInfo.java | 218
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java | 136
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/MenuVO.java | 93
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java | 183
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictBizVO.java | 71
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrRangeDaoI.java | 126
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/SmsController.java | 150
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuMapper.java | 29
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java | 92
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictClient.java | 63
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowExecution.java | 50
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeButtonVO.java | 98
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeBasicSecDaoI.java | 148
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/CodeServiceImpl.java | 39
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxxxxxxxx.json | 0
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/AttachServiceImpl.java | 40
Source/UBCS/script/docker/app/docker-compose.yml | 0
Source/UBCS/ubcs-service/ubcs-system/Dockerfile | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataObjectVO.java | 24
Source/UBCS/doc/sql/dm/bladex-saber-dameng.dmp | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf | 0
Source/UBCS/ubcs-ops/pom.xml | 36
Source/UBCS/doc/other/env.md | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java | 52
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/SysCache.java | 374
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingLogeDaoImpl.java | 215
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java | 28
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/utils/CommonUtil.java | 26
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/DataScope.java | 86
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/RequestProvider.java | 49
Source/UBCS/ubcs-ops/ubcs-swagger/Dockerfile | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.css.map | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/RootDataVO.java | 58
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ValueRangeController.java | 92
Source/UBCS/ubcs-service/ubcs-user/pom.xml | 76
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelPrototypeServiceImpl.java | 55
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java | 215
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java | 170
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/RowDatas.java | 125
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java | 140
Source/UBCS/README.md | 0
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/BasicSecure.java | 37
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java | 169
Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java | 215
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ICombinationService.java | 71
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogErrorMapper.xml | 27
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeResembleRuleDaoImpl.java | 247
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingLogeDO.java | 228
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/XxlJobService.java | 86
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataVO.java | 19
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/TaskDuckingDO.java | 236
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java | 214
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayRoute.java | 57
Source/UBCS/ubcs-ops/ubcs-develop/src/test/java/com/vci/test/CodeGenerator.java | 95
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOauth.java | 107
Source/UBCS/script/fatjar/service.sh | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/AuthClientMapper.java | 29
Source/更改过的jar包/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMenuMapper.java | 41
Source/UBCS/script/fatjar/service.cmd | 0
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserDeptMapper.java | 30
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/Dict.java | 102
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlData.java | 143
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java | 46
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSynonymVO.java | 103
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java | 382
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictMapper.xml | 54
Source/UBCS/script/docker/app/prometheus/dashboard/bladex-mysql.json | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java | 297
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ValueRange.java | 104
Source/UBCS/doc/sql/update/bladex-update-mysql-3.0.0~3.0.1.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/config/XxlJobConfig.java | 74
Source/UBCS/script/docker/app/nginx/web/html/index.html | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDO.java | 26
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java | 46
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenu.java | 61
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelService.java | 29
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateButtonServiceI.java | 133
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataInfoDO.java | 103
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/MinioOssBuilder.java | 48
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateAttrDO.java | 858
Source/UBCS/script/docker/app/deploy.sh | 0
Source/UBCS/ubcs-service-api/ubcs-dict-api/pom.xml | 24
Source/UBCS/doc/sql/postgresql/bladex-sword-postgresql.sql | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 743
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-ops/ubcs-develop/pom.xml | 62
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RegionMapper.xml | 105
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMapper.xml | 63
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxx.json | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java | 106
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntBaseDaoImpl.java | 215
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MenuController.java | 284
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/AuthClient.java | 98
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/wrapper/NoticeWrapper.java | 64
Source/UBCS/ubcs-plugin-api/pom.xml | 0
Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogUsualMapper.xml | 22
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/constant/ProcessConstant.java | 61
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java | 132
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantMapper.xml | 30
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogErrorServiceImpl.java | 33
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeButtonDaoImpl.java | 247
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultJsonDTO.java | 21
Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelPrototypeMapper.xml | 35
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntBaseDTO.java | 26
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryData.java | 45
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml | 229
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteService.java | 101
Source/UBCS/script/docker/elk/es-master.yml | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantVO.java | 49
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java | 124
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogErrorController.java | 66
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/OssMapper.xml | 30
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java | 728
Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/feign/INoticeClient.java | 49
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/logback.xml | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java | 83
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml | 249
Source/UBCS/ubcs-common/src/main/resources/banner.txt | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/RemoteHttpJobBean.java | 0
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeClientDetailsServiceImpl.java | 51
Source/UBCS/script/docker/app/prometheus/config/alert_rules.yml | 0
Source/UBCS/ubcs-ops/ubcs-swagger/pom.xml | 56
Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/SmsVO.java | 45
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowModel.java | 58
Source/更改过的jar包/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.lastUpdated | 11
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.lastUpdated | 5
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TenantPackage.java | 56
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl | 0
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/_remote.repositories | 4
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayPredicate.java | 41
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobApiController.java | 129
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionVO.java | 60
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IAttachService.java | 40
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/AuthFilter.java | 120
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/MenuDTO.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/Dockerfile | 0
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-theme.css | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyDaoImpl.java | 520
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java | 664
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobCodeController.java | 96
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java | 62
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleScopeServiceImpl.java | 33
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeButtonDO.java | 125
Source/UBCS/doc/sql/mysql/bladex-sword-mysql.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLog.java | 157
Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/ApiScopePermissionHandler.java | 61
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeImprotDataDTO.java | 66
Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/vo/NoticeVO.java | 23
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml | 62
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelServiceImpl.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleDTO.java | 33
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java | 135
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSerialValueDaoImpl.java | 214
Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/ReportApplication.java | 35
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java | 105
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessController.java | 96
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java | 109
Source/UBCS/ubcs-ops/ubcs-report/Dockerfile | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB架构图.pptx | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderSecDTO.java | 44
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IValueRangeService.java | 56
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictWrapper.java | 60
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java | 130
Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClient.java | 73
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java | 83
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js | 0
Source/更改过的jar包/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingTaskDTO.java | 197
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java | 247
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/PostMapper.xml | 40
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/GateWayApplication.java | 39
Source/UBCS/script/docker/app/prometheus/config/alertmanager.yml | 0
Source/UBCS/ubcs-ops/ubcs-develop/Dockerfile | 0
Source/更改过的jar包/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java | 67
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/exception/XxlJobException.java | 14
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleMenuDTO.java | 33
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java | 47
Source/UBCS/doc/sql/postgresql/bladex-saber-postgresql.sql | 0
Source/UBCS/ubcs-auth/src/main/resources/application.yml | 65
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js | 0
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserDept.java | 64
Source/UBCS/ubcs-auth/src/main/resources/templates/login.ftl | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeResembleRuleDaoI.java | 141
Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserDeptMapper.xml | 5
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImProtRusultVO.java | 41
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogGlue.java | 75
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntAuthorityServiceImpl.java | 290
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/OmdApplication.java | 35
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeAllCodeDaoImpl.java | 247
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ValueRangeMapper.java | 43
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntAuthorityDaoImpl.java | 215
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java | 135
Source/更改过的jar包/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.sha1 | 1
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingDataDO.java | 148
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.detail.1.js | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/db/tables_xxl_job.sql | 0
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/user.index.1.js | 0
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/FlowApplication.java | 37
Source/更改过的jar包/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.sha1 | 1
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java | 61
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.lastUpdated | 11
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-prod.yml | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DataScopeMapper.xml | 5
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java | 63
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateVO.java | 105
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DataScopeWrapper.java | 48
Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/ResponseProvider.java | 84
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyValueDaoImpl.java | 257
Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeSmsConfiguration.java | 47
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Region.java | 128
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff | 0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictController.java | 196
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.sha1 | 1
Source/更改过的jar包/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.lastUpdated | 11
Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-test.yml | 0
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelMapper.java | 29
Source/UBCS/ubcs-auth/pom.xml | 154
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java | 115
Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-dev.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java | 146
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java | 127
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictService.java | 109
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataInfoVO.java | 121
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java | 24
Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application.yml | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyDaoI.java | 232
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodePhaseAttrDaoI.java | 141
Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/DevelopApplication.java | 36
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/resolver/WebExceptionResolver.java | 64
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/cron/CronExpression.java | 1666
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.macro.ftl | 0
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/data.json | 0
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java | 324
Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/DeskApplication.java | 36
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDatasVO.java | 27
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java | 322
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/PostVO.java | 40
Source/UBCS/doc/mvn/mvn命令.md | 0
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEnumIdConstant.java | 78
/dev/null | 173
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/enums/FlowModeEnum.java | 45
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java | 62
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java | 264
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/WebMvcConfig.java | 28
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java | 111
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionExcel.java | 90
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeALlCodeMapper.xml | 7
1,214 files changed, 116,497 insertions(+), 173 deletions(-)
diff --git a/Source/BladeX/blade-auth/pom.xml b/Source/BladeX/blade-auth/pom.xml
deleted file mode 100644
index b79e5d7..0000000
--- a/Source/BladeX/blade-auth/pom.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?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">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
-
- <artifactId>blade-auth</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springblade</groupId>
- <artifactId>blade-scope-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-db</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-cloud</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-metrics</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-redis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-social</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-user-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-system-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <!--瀹夊叏妯″潡-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.security.oauth</groupId>
- <artifactId>spring-security-oauth2</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-jwt</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- </dependency>
- <!-- 楠岃瘉鐮� -->
- <dependency>
- <groupId>com.github.whvcse</groupId>
- <artifactId>easy-captcha</artifactId>
- </dependency>
- <!--freemarker-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-freemarker</artifactId>
- </dependency>
- <!--oracle椹卞姩-->
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- <!-- 閾捐矾杩借釜銆佹湇鍔$洃鎺� -->
- <!--<dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-trace</artifactId>
- </dependency>-->
- <!-- 瑙e喅Java11鏃犳硶杩愯鐨勯棶棰� -->
- <!--<dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.2.11</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>2.2.11</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>2.2.11</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>1.1.1</version>
- </dependency>-->
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/AuthApplication.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/AuthApplication.java
deleted file mode 100644
index fc4363d..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/AuthApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.auth;
-
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
-
-/**
- * 鐢ㄦ埛璁よ瘉鏈嶅姟鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class AuthApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_AUTH_NAME, AuthApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeAuthorizationServerConfiguration.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeAuthorizationServerConfiguration.java
deleted file mode 100644
index db9033b..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeAuthorizationServerConfiguration.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.auth.config;
-
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springblade.auth.constant.AuthConstant;
-import org.springblade.auth.granter.BladeTokenGranter;
-import org.springblade.auth.service.BladeClientDetailsServiceImpl;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.social.props.SocialProperties;
-import org.springblade.system.user.feign.IUserClient;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.annotation.Order;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
-import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
-import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
-import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
-import org.springframework.security.oauth2.provider.TokenGranter;
-import org.springframework.security.oauth2.provider.token.TokenEnhancer;
-import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
-import org.springframework.security.oauth2.provider.token.TokenStore;
-import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
-
-import javax.sql.DataSource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-/**
- * 璁よ瘉鏈嶅姟鍣ㄩ厤缃�
- *
- * @author Chill
- */
-@Order
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-@EnableAuthorizationServer
-public class BladeAuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
-
- private final DataSource dataSource;
-
- private final AuthenticationManager authenticationManager;
-
- private final UserDetailsService userDetailsService;
-
- private final TokenStore tokenStore;
-
- private final TokenEnhancer jwtTokenEnhancer;
-
- private final JwtAccessTokenConverter jwtAccessTokenConverter;
-
- private final BladeRedis bladeRedis;
-
- private final IUserClient userClient;
-
- private final SocialProperties socialProperties;
-
- @Override
- public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
- //鑾峰彇鑷畾涔塼okenGranter
- TokenGranter tokenGranter = BladeTokenGranter.getTokenGranter(authenticationManager, endpoints, bladeRedis, userClient, socialProperties);
-
- //閰嶇疆绔偣
- endpoints.tokenStore(tokenStore)
- .authenticationManager(authenticationManager)
- .userDetailsService(userDetailsService)
- .tokenGranter(tokenGranter);
-
- //鎵╁睍token杩斿洖缁撴灉
- if (jwtAccessTokenConverter != null && jwtTokenEnhancer != null) {
- TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
- List<TokenEnhancer> enhancerList = new ArrayList<>();
- enhancerList.add(jwtTokenEnhancer);
- enhancerList.add(jwtAccessTokenConverter);
- tokenEnhancerChain.setTokenEnhancers(enhancerList);
- //jwt澧炲己
- endpoints.tokenEnhancer(tokenEnhancerChain).accessTokenConverter(jwtAccessTokenConverter);
- }
- }
-
- /**
- * 閰嶇疆瀹㈡埛绔俊鎭�
- * 鏈嶅姟鍚姩鏃跺姞杞絪ql
- * 浣滅敤锛氭煡璇lient淇℃伅
- */
- @Override
- @SneakyThrows
- public void configure(ClientDetailsServiceConfigurer clients) {
- BladeClientDetailsServiceImpl clientDetailsService = new BladeClientDetailsServiceImpl(dataSource);
- clientDetailsService.setSelectClientDetailsSql(AuthConstant.DEFAULT_SELECT_STATEMENT);
- clientDetailsService.setFindClientDetailsSql(AuthConstant.DEFAULT_FIND_STATEMENT);
- clients.withClientDetails(clientDetailsService);
- }
-
- @Override
- public void configure(AuthorizationServerSecurityConfigurer oauthServer) {
- oauthServer
- .allowFormAuthenticationForClients()
- .tokenKeyAccess("permitAll()")
- .checkTokenAccess("isAuthenticated()");
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeResourceServerConfiguration.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeResourceServerConfiguration.java
deleted file mode 100644
index c09af6a..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/BladeResourceServerConfiguration.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.auth.config;
-
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
-
-/**
- * 鑷畾涔夎祫婧愭斁琛�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-public class BladeResourceServerConfiguration extends ResourceServerConfigurerAdapter {
-
- @Override
- @SneakyThrows
- public void configure(HttpSecurity http) {
- http.authorizeRequests()
- .antMatchers(
- "/actuator/**",
- "/oauth/captcha",
- "/oauth/logout",
- "/oauth/clear-cache",
- "/oauth/render/**",
- "/oauth/callback/**",
- "/oauth/revoke/**",
- "/oauth/refresh/**",
- "/oauth/login",
- "/oauth/form",
- "/token/**",
- "/mobile/**",
- "/static/**",
- "/v2/api-docs").permitAll()
- .anyRequest().authenticated().and()
- .csrf().disable();
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/JwtTokenStoreConfiguration.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/JwtTokenStoreConfiguration.java
deleted file mode 100644
index f3686f7..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/JwtTokenStoreConfiguration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.auth.config;
-
-import org.springblade.auth.support.BladeJwtTokenEnhancer;
-import org.springblade.core.jwt.props.JwtProperties;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.jwt.crypto.sign.MacSigner;
-import org.springframework.security.jwt.crypto.sign.SignatureVerifier;
-import org.springframework.security.oauth2.provider.token.TokenEnhancer;
-import org.springframework.security.oauth2.provider.token.TokenStore;
-import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
-import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
-
-/**
- * JwtTokenStore
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@ConditionalOnProperty(prefix = "blade.security.oauth2", name = "storeType", havingValue = "jwt", matchIfMissing = true)
-public class JwtTokenStoreConfiguration {
-
- /**
- * 浣跨敤jwtTokenStore瀛樺偍token
- */
- @Bean
- public TokenStore jwtTokenStore(JwtProperties jwtProperties) {
- return new JwtTokenStore(getJwtAccessTokenConverter(jwtProperties));
- }
-
- /**
- * 鐢ㄤ簬鐢熸垚jwt
- */
- @Bean
- public JwtAccessTokenConverter jwtAccessTokenConverter(JwtProperties jwtProperties) {
- return getJwtAccessTokenConverter(jwtProperties);
- }
-
- /**
- * 鑷畾涔� JwtAccessTokenConverter
- */
- private JwtAccessTokenConverter getJwtAccessTokenConverter(JwtProperties jwtProperties) {
- JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
- accessTokenConverter.setSigningKey(jwtProperties.getSignKey());
- SignatureVerifier verifier = new MacSigner(jwtProperties.getSignKey());
- accessTokenConverter.setVerifier(verifier);
- return accessTokenConverter;
- }
-
- /**
- * 鐢ㄤ簬鎵╁睍jwt
- */
- @Bean
- @ConditionalOnMissingBean(name = "jwtTokenEnhancer")
- public TokenEnhancer jwtTokenEnhancer(JwtAccessTokenConverter jwtAccessTokenConverter, JwtProperties jwtProperties) {
- return new BladeJwtTokenEnhancer(jwtAccessTokenConverter, jwtProperties);
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java
deleted file mode 100644
index 44440ef..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.auth.config;
-
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springblade.auth.support.BladePasswordEncoderFactories;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-/**
- * Security閰嶇疆
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
-
- @Bean
- @Override
- @SneakyThrows
- public AuthenticationManager authenticationManagerBean() {
- return super.authenticationManagerBean();
- }
-
- @Bean
- public PasswordEncoder passwordEncoder() {
- return BladePasswordEncoderFactories.createDelegatingPasswordEncoder();
- }
-
- @Override
- @SneakyThrows
- protected void configure(HttpSecurity http) {
- http.headers().frameOptions().disable();
- http.httpBasic().and().csrf().disable();
- http.formLogin().loginPage("/oauth/login").loginProcessingUrl("/oauth/form");
- }
-
- @Override
- public void configure(WebSecurity web) {
- web.ignoring().antMatchers("/js/*.js", "/css/*.css");
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/constant/AuthConstant.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/constant/AuthConstant.java
deleted file mode 100644
index dcc498a..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/constant/AuthConstant.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.auth.constant;
-
-/**
- * 鎺堟潈鏍¢獙甯搁噺
- *
- * @author Chill
- */
-public interface AuthConstant {
-
- /**
- * 瀵嗙爜鍔犲瘑瑙勫垯
- */
- String ENCRYPT = "{blade}";
-
- /**
- * pl_sys_client琛ㄥ瓧娈�
- */
- String CLIENT_FIELDS = "client_id, CONCAT('{noop}',client_secret) as client_secret, Autowired_ids, scope, authorized_grant_types, " +
- "web_server_redirect_uri, authorities, access_token_validity, " +
- "refresh_token_validity, additional_information, autoapprove";
-
- /**
- * pl_sys_client鏌ヨ璇彞
- */
- String BASE_STATEMENT = "select " + CLIENT_FIELDS + " from pl_sys_client";
-
- /**
- * pl_sys_client鏌ヨ鎺掑簭
- */
- String DEFAULT_FIND_STATEMENT = BASE_STATEMENT + " order by client_id";
-
- /**
- * 鏌ヨclient_id
- */
- String DEFAULT_SELECT_STATEMENT = BASE_STATEMENT + " where client_id = ?";
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeSocialEndpoint.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeSocialEndpoint.java
deleted file mode 100644
index eea704f..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeSocialEndpoint.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.auth.endpoint;
-
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.model.AuthCallback;
-import me.zhyd.oauth.model.AuthToken;
-import me.zhyd.oauth.request.AuthRequest;
-import me.zhyd.oauth.utils.AuthStateUtils;
-import org.springblade.core.social.props.SocialProperties;
-import org.springblade.core.social.utils.SocialUtil;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * SocialEndpoint
- *
- * @author Chill
- */
-@NonDS
-@Slf4j
-@RestController
-@AllArgsConstructor
-@ConditionalOnProperty(value = "social.enabled", havingValue = "true")
-public class BladeSocialEndpoint {
-
- private final SocialProperties socialProperties;
-
- /**
- * 鎺堟潈瀹屾瘯璺宠浆
- */
- @RequestMapping("/oauth/render/{source}")
- public void renderAuth(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
- AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
- String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
- response.sendRedirect(authorizeUrl);
- }
-
- /**
- * 鑾峰彇璁よ瘉淇℃伅
- */
- @RequestMapping("/oauth/callback/{source}")
- public Object login(@PathVariable("source") String source, AuthCallback callback) {
- AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
- return authRequest.login(callback);
- }
-
- /**
- * 鎾ら攢鎺堟潈
- */
- @RequestMapping("/oauth/revoke/{source}/{token}")
- public Object revokeAuth(@PathVariable("source") String source, @PathVariable("token") String token) {
- AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
- return authRequest.revoke(AuthToken.builder().accessToken(token).build());
- }
-
- /**
- * 缁湡浠ょ墝
- */
- @RequestMapping("/oauth/refresh/{source}")
- public Object refreshAuth(@PathVariable("source") String source, String token) {
- AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
- return authRequest.refresh(AuthToken.builder().refreshToken(token).build());
- }
-
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java
deleted file mode 100644
index bbdeccb..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * 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.auth.endpoint;
-
-import com.wf.captcha.SpecCaptcha;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.cache.CacheNames;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.jwt.JwtUtil;
-import org.springblade.core.jwt.props.JwtProperties;
-import org.springblade.core.launch.constant.TokenConstant;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.core.tool.utils.WebUtil;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import org.springframework.security.oauth2.common.OAuth2RefreshToken;
-import org.springframework.security.oauth2.provider.AuthorizationRequest;
-import org.springframework.security.oauth2.provider.ClientDetailsService;
-import org.springframework.security.oauth2.provider.token.TokenStore;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpSession;
-import java.time.Duration;
-
-import static org.springblade.core.cache.constant.CacheConstant.*;
-
-/**
- * BladeEndPoint
- *
- * @author Chill
- */
-@NonDS
-@Slf4j
-@RestController
-@AllArgsConstructor
-public class BladeTokenEndPoint {
-
- private final BladeRedis bladeRedis;
- private final JwtProperties jwtProperties;
- private final ClientDetailsService clientDetailsService;
- private final TokenStore tokenStore;
-
- /**
- * 鐧诲綍椤甸潰
- */
- @GetMapping("/oauth/login")
- public ModelAndView require(ModelAndView model) {
- model.setViewName("login");
- return model;
- }
-
- /**
- * 鎺堟潈椤甸潰
- */
- @GetMapping("/oauth/confirm_access")
- public ModelAndView confirm(HttpSession session, ModelAndView model) {
- Object auth = session.getAttribute("authorizationRequest");
- if (auth != null) {
- AuthorizationRequest authorizationRequest = (AuthorizationRequest) auth;
- model.addObject("client", clientDetailsService.loadClientByClientId(authorizationRequest.getClientId()));
- model.addObject("principal", SecurityContextHolder.getContext().getAuthentication().getPrincipal());
- }
- model.setViewName("confirm");
- return model;
- }
-
- /**
- * 鐢ㄦ埛淇℃伅
- */
- @GetMapping("/oauth/user-info")
- public R<Authentication> currentUser(Authentication authentication) {
- return R.data(authentication);
- }
-
- /**
- * 楠岃瘉鐮�
- */
- @GetMapping("/oauth/captcha")
- public Kv captcha() {
- SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
- String verCode = specCaptcha.text().toLowerCase();
- String key = StringUtil.randomUUID();
- // 瀛樺叆redis骞惰缃繃鏈熸椂闂翠负30鍒嗛挓
- bladeRedis.setEx(CacheNames.CAPTCHA_KEY + key, verCode, Duration.ofMinutes(30));
- // 灏唊ey鍜宐ase64杩斿洖缁欏墠绔�
- return Kv.create().set("key", key).set("image", specCaptcha.toBase64());
- }
-
- /**
- * 閫�鍑虹櫥褰�
- */
- @GetMapping("/oauth/logout")
- public Kv logout() {
- BladeUser user = AuthUtil.getUser();
- String token = JwtUtil.getToken(WebUtil.getRequest().getHeader(TokenConstant.HEADER));
- // 娓呯┖redis淇濆瓨鐨則oken
- if (user != null && jwtProperties.getState()) {
- JwtUtil.removeAccessToken(user.getTenantId(), String.valueOf(user.getUserId()), token);
- }
- // 娓呯┖璧勬簮鏈嶅姟鍣ㄤ繚瀛樼殑token
- OAuth2AccessToken accessToken = tokenStore.readAccessToken(token);
- OAuth2RefreshToken refreshToken = null;
- if (accessToken != null && StringUtil.isNoneBlank(accessToken.getValue())) {
- refreshToken = accessToken.getRefreshToken();
- tokenStore.removeAccessToken(accessToken);
- }
- if (refreshToken != null && StringUtil.isNoneBlank(refreshToken.getValue())) {
- tokenStore.removeRefreshToken(refreshToken);
- }
- return Kv.create().set("success", "true").set("msg", "success");
- }
-
- /**
- * 缂撳瓨娓呯┖
- */
- @GetMapping("/oauth/clear-cache")
- public Kv clearCache() {
- CacheUtil.clear(BIZ_CACHE);
- CacheUtil.clear(USER_CACHE);
- CacheUtil.clear(DICT_CACHE);
- CacheUtil.clear(FLOW_CACHE);
- CacheUtil.clear(SYS_CACHE);
- CacheUtil.clear(PARAM_CACHE);
- CacheUtil.clear(RESOURCE_CACHE);
- CacheUtil.clear(MENU_CACHE);
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
- return Kv.create().set("success", "true").set("msg", "success");
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/BladeTokenGranter.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/BladeTokenGranter.java
deleted file mode 100644
index 9bab44f..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/BladeTokenGranter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.auth.granter;
-
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.social.props.SocialProperties;
-import org.springblade.system.user.feign.IUserClient;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
-import org.springframework.security.oauth2.provider.CompositeTokenGranter;
-import org.springframework.security.oauth2.provider.TokenGranter;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * 鑷畾涔夋嫇灞昑okenGranter
- *
- * @author Chill
- */
-public class BladeTokenGranter {
-
- /**
- * 鑷畾涔塼okenGranter
- */
- public static TokenGranter getTokenGranter(final AuthenticationManager authenticationManager, final AuthorizationServerEndpointsConfigurer endpoints, BladeRedis bladeRedis, IUserClient userClient, SocialProperties socialProperties) {
- // 榛樿tokenGranter闆嗗悎
- List<TokenGranter> granters = new ArrayList<>(Collections.singletonList(endpoints.getTokenGranter()));
- // 澧炲姞楠岃瘉鐮佹ā寮�
- granters.add(new CaptchaTokenGranter(authenticationManager, endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), bladeRedis));
- // 澧炲姞绗笁鏂圭櫥闄嗘ā寮�
- granters.add(new SocialTokenGranter(endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), userClient, socialProperties));
- // 缁勫悎tokenGranter闆嗗悎
- return new CompositeTokenGranter(granters);
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java
deleted file mode 100644
index a2c837a..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.springblade.auth.granter;
-
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import org.springblade.auth.utils.TokenUtil;
-import org.springblade.common.cache.CacheNames;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.core.tool.utils.WebUtil;
-import org.springframework.security.authentication.*;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
-import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
-import org.springframework.security.oauth2.provider.*;
-import org.springframework.security.oauth2.provider.token.AbstractTokenGranter;
-import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * 楠岃瘉鐮乀okenGranter
- *
- * @author Chill
- */
-public class CaptchaTokenGranter extends AbstractTokenGranter {
-
- private static final String GRANT_TYPE = "captcha";
-
- private final AuthenticationManager authenticationManager;
-
- private BladeRedis bladeRedis;
-
- public CaptchaTokenGranter(AuthenticationManager authenticationManager,
- AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, BladeRedis bladeRedis) {
- this(authenticationManager, tokenServices, clientDetailsService, requestFactory, GRANT_TYPE);
- this.bladeRedis = bladeRedis;
- }
-
- protected CaptchaTokenGranter(AuthenticationManager authenticationManager, AuthorizationServerTokenServices tokenServices,
- ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, String grantType) {
- super(tokenServices, clientDetailsService, requestFactory, grantType);
- this.authenticationManager = authenticationManager;
- }
-
- @Override
- protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
- Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
- String username = parameters.get("username");
- String password = parameters.get("password");
- // Protect from downstream leaks of password
- parameters.remove("password");
-
- Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password);
- ((AbstractAuthenticationToken) userAuth).setDetails(parameters);
- try {
- userAuth = authenticationManager.authenticate(userAuth);
- }
- catch (AccountStatusException | BadCredentialsException ase) {
- //covers expired, locked, disabled cases (mentioned in section 5.2, draft 31)
- throw new InvalidGrantException(ase.getMessage());
- }
- // If the username/password are wrong the spec says we should send 400/invalid grant
-
- if (userAuth == null || !userAuth.isAuthenticated()) {
- throw new InvalidGrantException("Could not authenticate user: " + username);
- }
-
- OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
- return new OAuth2Authentication(storedOAuth2Request, userAuth);
- }
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java
deleted file mode 100644
index 1727fcc..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.auth.granter;
-
-import me.zhyd.oauth.model.AuthCallback;
-import me.zhyd.oauth.model.AuthResponse;
-import me.zhyd.oauth.model.AuthUser;
-import me.zhyd.oauth.request.AuthRequest;
-import org.springblade.auth.constant.AuthConstant;
-import org.springblade.auth.service.BladeUserDetails;
-import org.springblade.auth.utils.TokenUtil;
-import org.springblade.core.social.props.SocialProperties;
-import org.springblade.core.social.utils.SocialUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.WebUtil;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.entity.UserInfo;
-import org.springblade.system.user.entity.UserOauth;
-import org.springblade.system.user.feign.IUserClient;
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.authority.AuthorityUtils;
-import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
-import org.springframework.security.oauth2.provider.*;
-import org.springframework.security.oauth2.provider.token.AbstractTokenGranter;
-import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * 绗笁鏂圭櫥褰曡璇佺被
- *
- * @author Chill
- */
-public class SocialTokenGranter extends AbstractTokenGranter {
- private static final String GRANT_TYPE = "social";
- private static final Integer AUTH_SUCCESS_CODE = 2000;
-
- private final IUserClient userClient;
- private final SocialProperties socialProperties;
-
- protected SocialTokenGranter(AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, IUserClient userClient, SocialProperties socialProperties) {
- super(tokenServices, clientDetailsService, requestFactory, GRANT_TYPE);
- this.userClient = userClient;
- this.socialProperties = socialProperties;
- }
-
- @Override
- protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
- // 璇锋眰澶寸鎴蜂俊鎭�
- HttpServletRequest request = WebUtil.getRequest();
- String tenantId = Func.toStr(request.getHeader(TokenUtil.TENANT_HEADER_KEY), TokenUtil.DEFAULT_TENANT_ID);
-
- Map<String, String> parameters = new LinkedHashMap<>(tokenRequest.getRequestParameters());
- // 寮�鏀惧钩鍙版潵婧�
- String sourceParameter = parameters.get("source");
- // 鍖归厤鏄惁鏈夊埆鍚嶅畾涔�
- String source = socialProperties.getAlias().getOrDefault(sourceParameter, sourceParameter);
- // 寮�鏀惧钩鍙版巿鏉冪爜
- String code = parameters.get("code");
- // 寮�鏀惧钩鍙扮姸鎬佸悧
- String state = parameters.get("state");
-
- // 鑾峰彇寮�鏀惧钩鍙版巿鏉冩暟鎹�
- AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
- AuthCallback authCallback = new AuthCallback();
- authCallback.setCode(code);
- authCallback.setState(state);
- AuthResponse authResponse = authRequest.login(authCallback);
- AuthUser authUser;
- if (authResponse.getCode() == AUTH_SUCCESS_CODE) {
- authUser = (AuthUser) authResponse.getData();
- } else {
- throw new InvalidGrantException("social grant failure, auth response is not success");
- }
-
- // 缁勮鏁版嵁
- UserOauth userOauth = Objects.requireNonNull(BeanUtil.copy(authUser, UserOauth.class));
- userOauth.setSource(authUser.getSource());
- userOauth.setTenantId(tenantId);
- userOauth.setUuid(authUser.getUuid());
-
- // 杩滅▼璋冪敤锛岃幏鍙栬璇佷俊鎭�
- R<UserInfo> result = userClient.userAuthInfo(userOauth);
- BladeUserDetails bladeUserDetails;
- if (result.isSuccess()) {
- User user = result.getData().getUser();
- Kv detail = result.getData().getDetail();
- if (user == null || user.getId() == null) {
- throw new InvalidGrantException("social grant failure, user is null");
- }
- bladeUserDetails = new BladeUserDetails(user.getId(),
- tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(userOauth.getAvatar(), TokenUtil.DEFAULT_AVATAR),
- userOauth.getUsername(), AuthConstant.ENCRYPT + user.getPassword(), detail, true, true, true, true,
- AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())));
- } else {
- throw new InvalidGrantException("social grant failure, feign client return error");
- }
-
- // 缁勮璁よ瘉鏁版嵁锛屽叧闂瘑鐮佹牎楠�
- Authentication userAuth = new UsernamePasswordAuthenticationToken(bladeUserDetails, null, bladeUserDetails.getAuthorities());
- ((AbstractAuthenticationToken) userAuth).setDetails(parameters);
- OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
-
- // 杩斿洖 OAuth2Authentication
- return new OAuth2Authentication(storedOAuth2Request, userAuth);
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeClientDetailsServiceImpl.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeClientDetailsServiceImpl.java
deleted file mode 100644
index 35bf28e..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeClientDetailsServiceImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.auth.service;
-
-import org.springframework.security.oauth2.provider.ClientDetails;
-import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
-import org.springframework.stereotype.Component;
-
-import javax.sql.DataSource;
-
-/**
- * 瀹㈡埛绔俊鎭�
- *
- * @author Chill
- */
-@Component
-public class BladeClientDetailsServiceImpl extends JdbcClientDetailsService {
-
- public BladeClientDetailsServiceImpl(DataSource dataSource) {
- super(dataSource);
- }
-
- /**
- * 缂撳瓨瀹㈡埛绔俊鎭�
- * clientId=saber
- * @param clientId 瀹㈡埛绔痠d
- */
- @Override
- public ClientDetails loadClientByClientId(String clientId) {
- try {
- return super.loadClientByClientId(clientId);
- } catch (Exception ex) {
- ex.printStackTrace();
- return null;
- }
- }
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java
deleted file mode 100644
index 562c53d..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.auth.service;
-
-import lombok.Getter;
-import org.springblade.core.tool.support.Kv;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.User;
-
-import java.util.Collection;
-
-/**
- * 鐢ㄦ埛淇℃伅鎷撳睍
- *
- * @author Chill
- */
-@Getter
-public class BladeUserDetails extends User {
-
- /**
- * 鐢ㄦ埛id
- */
- private final Long userId;
- /**
- * 绉熸埛ID
- */
- private final String tenantId;
- /**
- * 绗笁鏂硅璇両D
- */
- private final String oauthId;
- /**
- * 鏄电О
- */
- private final String name;
- /**
- * 鐪熷悕
- */
- private final String realName;
- /**
- * 璐﹀彿
- */
- private final String account;
- /**
- * 閮ㄩ棬id
- */
- private final String deptId;
- /**
- * 宀椾綅id
- */
- private final String postId;
- /**
- * 瑙掕壊id
- */
- private final String roleId;
- /**
- * 瑙掕壊鍚�
- */
- private final String roleName;
- /**
- * 澶村儚
- */
- private final String avatar;
- /**
- * 鐢ㄦ埛璇︽儏
- */
- private final Kv detail;
- /**
- * 瀵嗙爜绛栫暐淇敼鐘舵��
- */
- private Long strategyUpdateStatus;
-
-
- public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus) {
- super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
- this.userId = userId;
- this.tenantId = tenantId;
- this.oauthId = oauthId;
- this.name = name;
- this.realName = realName;
- this.account = username;
- this.deptId = deptId;
- this.postId = postId;
- this.roleId = roleId;
- this.roleName = roleName;
- this.avatar = avatar;
- this.detail = detail;
- this.strategyUpdateStatus = strategyUpdateStatus;
- }
-
- public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
- super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
- this.userId = userId;
- this.tenantId = tenantId;
- this.oauthId = oauthId;
- this.name = name;
- this.realName = realName;
- this.account = username;
- this.deptId = deptId;
- this.postId = postId;
- this.roleId = roleId;
- this.roleName = roleName;
- this.avatar = avatar;
- this.detail = detail;
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
deleted file mode 100644
index 3efc4ed..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * 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.auth.service;
-
-import com.alibaba.nacos.common.utils.StringUtils;
-import io.jsonwebtoken.Claims;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import me.zhyd.oauth.log.Log;
-import org.springblade.auth.constant.AuthConstant;
-import org.springblade.auth.utils.TokenUtil;
-import org.springblade.common.cache.CacheNames;
-import org.springblade.core.jwt.JwtUtil;
-import org.springblade.core.jwt.props.JwtProperties;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.*;
-import org.springblade.system.cache.ParamCache;
-import org.springblade.system.entity.Strategy;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.feign.ISysClient;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.entity.UserInfo;
-import org.springblade.system.user.enums.UserEnum;
-import org.springblade.system.user.feign.IUserClient;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.AuthorityUtils;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鐢ㄦ埛淇℃伅
- *
- * @author Chill
- */
-@Service
-@RequiredArgsConstructor
-public class BladeUserDetailsServiceImpl implements UserDetailsService {
-
- /**
- * 鍏佽閿欒娆℃暟
- */
- public static final Integer FAIL_COUNT = 5;
- public static final String FAIL_COUNT_VALUE = "account.failCount";
-
- /**
- * user鏈嶅姟璋冪敤绫�
- */
- private final IUserClient userClient;
-
- private final ISysClient sysClient;
-
- private final BladeRedis bladeRedis;
-
- private final JwtProperties jwtProperties;
-
-
- /**
- * 瓒呯骇绠$悊鍛樹俊鎭�
- */
- @Value("${user-info.tenant-id}")
- private String tenantId;
- @Value("${user-info.user-name}")
- private String userName;
- @Value("${user-info.passwrod}")
- private String password;
- @Value("${user-info.id}")
- private String id;
- @Value("${ip-whitelist.ip-enable}")
- private Boolean ipEnable;
- @Value("#{'${ip-whitelist.ip}'.split(',')}")
- private List<String> ips;
-
- @Override
- @SneakyThrows
- public BladeUserDetails loadUserByUsername(String username) {
- HttpServletRequest request = WebUtil.getRequest();
- // 鑾峰彇鐢ㄦ埛缁戝畾ID
- String headerDept = request.getHeader(TokenUtil.DEPT_HEADER_KEY);
- String headerRole = request.getHeader(TokenUtil.ROLE_HEADER_KEY);
- // 鑾峰彇绉熸埛ID
- String headerTenant = request.getHeader(TokenUtil.TENANT_HEADER_KEY);
- String paramTenant = request.getParameter(TokenUtil.TENANT_PARAM_KEY);
- String password = request.getParameter(TokenUtil.PASSWORD_KEY);
- String grantType = request.getParameter(TokenUtil.GRANT_TYPE_KEY);
- // 鍒ゆ柇绉熸埛璇锋眰澶�
- if (StringUtil.isAllBlank(headerTenant, paramTenant)) {
- throw new UserDeniedAuthorizationException(TokenUtil.TENANT_NOT_FOUND);
- }
- // 鍒ゆ柇浠ょ墝鍚堟硶鎬�
- if (!judgeRefreshToken(grantType, request)) {
- throw new UserDeniedAuthorizationException(TokenUtil.TOKEN_NOT_PERMISSION);
- }
-
- // 鎸囧畾绉熸埛ID
- String tenantId = StringUtils.isBlank(headerTenant) ? paramTenant : headerTenant;
-
- Log.debug("褰撳墠鐧诲綍鐢ㄦ埛鐨勭鎴稩d涓猴細"+tenantId+"褰撳墠鐧诲綍鐢ㄦ埛鍚嶄负锛�"+username);
- Strategy strategy = sysClient.getByTenantIdAndName(tenantId, username).getData();
-
- // 鍒ゆ柇鐧诲綍鏄惁閿佸畾
- int count = getFailCount(tenantId, username);
- int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), Func.toInt(strategy.getLockingNum()));
-
- if (count >= failCount) {
- throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
- }
- //瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id涓�000000
- if(tenantId.equals(this.tenantId)){
- if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) {
- setFailCount(tenantId, username, count,strategy.getLockingTime());
- throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
- }
- //濡傛灉ip姣斿鍚巊et鎶涘嚭寮傚父No value present灏辩洿鎺ユ姏寮傚父缁撴潫鐧诲綍
- if(ipEnable){
- Log.debug("褰撳墠璁块棶IP锛�"+getIpAddress(request));
- try {
- ips.stream().filter(s -> s.equals(getIpAddress(request))).findFirst().get();
- } catch (Exception e){
- throw new UserDeniedAuthorizationException(TokenUtil.IP_NOT_FOND);
- }
- }
-
- ArrayList<GrantedAuthority> authorities = new ArrayList<>();
- authorities.add(new SimpleGrantedAuthority("administrator"));
- // 鎴愬姛鍒欐竻闄ょ櫥褰曢敊璇鏁�
- delFailCount(tenantId, username);
- Kv kv = Kv.create();
- kv.set("type","web");
- return new BladeUserDetails(
- new Long(this.id),this.tenantId, StringPool.EMPTY, "瓒呯骇绠$悊鍛�", "瓒呯骇绠$悊鍛�",this.id, this.id,"1123598816738675201",
- "administrator","https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" ,this.userName,AuthConstant.ENCRYPT + this.password, kv,
- true, true, true, true,authorities
- );
- }else {
- R<Tenant> tenant = sysClient.getTenant(tenantId);
-
- if (tenant.isSuccess()) {
- if (TokenUtil.judgeTenant(tenant.getData())) {
- throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION);
- }
- } else {
- throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT);
- }
-
- // 鑾峰彇鐢ㄦ埛绫诲瀷
- String userType = Func.toStr(request.getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE);
-
- // 杩滅▼璋冪敤杩斿洖鏁版嵁
- R<UserInfo> result;
- // 鏍规嵁涓嶅悓鐢ㄦ埛绫诲瀷璋冪敤瀵瑰簲鐨勬帴鍙h繑鍥炴暟鎹紝鐢ㄦ埛鍙嚜琛屾嫇灞�
- if (userType.equals(UserEnum.WEB.getName())) {
- result = userClient.userInfo(tenantId, username, UserEnum.WEB.getName());
- } else if (userType.equals(UserEnum.APP.getName())) {
- result = userClient.userInfo(tenantId, username, UserEnum.APP.getName());
- } else {
- result = userClient.userInfo(tenantId, username, UserEnum.OTHER.getName());
- }
-
- // 鍒ゆ柇杩斿洖淇℃伅
- if (result.isSuccess()) {
- UserInfo userInfo = result.getData();
- User user = userInfo.getUser();
- // 鐢ㄦ埛涓嶅瓨鍦�,浣嗘彁绀虹敤鎴峰悕涓庡瘑鐮侀敊璇苟閿佸畾璐﹀彿
- if (user == null || user.getId() == null) {
- setFailCount(tenantId, username, count,strategy.getLockingTime());
- throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
- }
- String hex = DigestUtil.hex(password);
- // 鐢ㄦ埛瀛樺湪浣嗗瘑鐮侀敊璇�,瓒呰繃娆℃暟鍒欓攣瀹氳处鍙�
- if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(hex)) {
- setFailCount(tenantId, username, count,strategy.getLockingTime());
- throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
- }
- // 鐢ㄦ埛瑙掕壊涓嶅瓨鍦�
- if (Func.isEmpty(userInfo.getRoles())) {
- throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_ROLE);
- }
- // 澶氶儴闂ㄦ儏鍐典笅鎸囧畾鍗曢儴闂�
- if (Func.isNotEmpty(headerDept) && user.getDeptId().contains(headerDept)) {
- user.setDeptId(headerDept);
- }
- // 澶氳鑹叉儏鍐典笅鎸囧畾鍗曡鑹�
- if (Func.isNotEmpty(headerRole) && user.getRoleId().contains(headerRole)) {
- R<List<String>> roleResult = sysClient.getRoleAliases(headerRole);
- if (roleResult.isSuccess()) {
- userInfo.setRoles(roleResult.getData());
- }
- user.setRoleId(headerRole);
- }
- // 鎴愬姛鍒欐竻闄ょ櫥褰曢敊璇鏁�
- delFailCount(tenantId, username);
- //濉厖鐢ㄦ埛淇℃伅鍒扮敤鎴蜂俊鎭墿灞曠被
- BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(),
- user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
- username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true,
- AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus());
- return bladeUserDetails;
- } else {
- throw new UsernameNotFoundException(result.getMsg());
- }
- }
- }
-
- /**
- * 鑾峰彇瀹㈡埛绔痠p锛屽鎴风鍙兘缁忚繃浠g悊锛屼篃鍙兘娌$粡杩囦唬鐞�
- * 濡傚紑鍚櫄鎷熸満鐨勬儏鍐典篃鍙兘瀵艰嚧鑾峰彇鍒扮殑鏄櫄鎷熸満鐨刬p
- * @param request
- * @return
- */
- public static String getIpAddress(HttpServletRequest request){
- String ip = request.getHeader("x-forwarded-for");
- if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
- // 澶氭鍙嶅悜浠g悊鍚庝細鏈夊涓猧p鍊硷紝绗竴涓猧p鎵嶆槸鐪熷疄ip
- ip = ip.split(",")[0];
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- System.out.println("Proxy-Client-IP"+ip);
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- System.out.println("WL-Proxy-Client-IP"+ip);
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_CLIENT_IP");
- System.out.println("HTTP_CLIENT_IP"+ip);
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_X_FORWARDED_FOR");
- System.out.println("HTTP_X_FORWARDED_FOR"+ip);
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("X-Real-IP");
- System.out.println("X-Real-IP"+ip);
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- System.out.println("getRemoteAddr"+ip);
- }
- //濡傛灉娌″彇鍒癷p锛岃繑鍥�""
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = "";
- }
- return ip;
- }
-
- /**
- * 鑾峰彇璐﹀彿閿欒娆℃暟
- *
- * @param tenantId 绉熸埛id
- * @param username 璐﹀彿
- * @return int
- */
- private int getFailCount(String tenantId, String username) {
- return Func.toInt(bladeRedis.get(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username)), 0);
- }
-
- /**
- * 璁剧疆璐﹀彿閿欒娆℃暟
- *
- * @param tenantId 绉熸埛id
- * @param username 璐﹀彿
- * @param count 娆℃暟
- */
- private void setFailCount(String tenantId, String username, int count, Long expir) {
- bladeRedis.setEx(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username), count + 1, Duration.ofMinutes(expir));
- }
-
- /**
- * 娓呯┖璐﹀彿閿欒娆℃暟
- *
- * @param tenantId 绉熸埛id
- * @param username 璐﹀彿
- */
- private void delFailCount(String tenantId, String username) {
- bladeRedis.del(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username));
- }
-
- /**
- * 鏍¢獙refreshToken鍚堟硶鎬�
- *
- * @param grantType 璁よ瘉绫诲瀷
- * @param request 璇锋眰
- */
- private boolean judgeRefreshToken(String grantType, HttpServletRequest request) {
- if (jwtProperties.getState() && jwtProperties.getSingle() && StringUtil.equals(grantType, TokenUtil.REFRESH_TOKEN_KEY)) {
- String refreshToken = request.getParameter(TokenUtil.REFRESH_TOKEN_KEY);
- Claims claims = JwtUtil.parseJWT(refreshToken);
- String tenantId = String.valueOf(claims.get("tenant_id"));
- String userId = String.valueOf(claims.get("user_id"));
- String token = JwtUtil.getRefreshToken(tenantId, userId, refreshToken);
- return StringUtil.equalsIgnoreCase(token, refreshToken);
- }
- return true;
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java
deleted file mode 100644
index 5baaaee..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.auth.support;
-
-import lombok.AllArgsConstructor;
-import org.springblade.auth.service.BladeUserDetails;
-import org.springblade.auth.utils.TokenUtil;
-import org.springblade.core.jwt.JwtUtil;
-import org.springblade.core.jwt.props.JwtProperties;
-import org.springblade.core.tool.utils.Func;
-import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import org.springframework.security.oauth2.common.OAuth2RefreshToken;
-import org.springframework.security.oauth2.provider.OAuth2Authentication;
-import org.springframework.security.oauth2.provider.token.TokenEnhancer;
-import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * jwt杩斿洖鍙傛暟澧炲己
- *
- * @author Chill
- */
-@AllArgsConstructor
-public class BladeJwtTokenEnhancer implements TokenEnhancer {
-
- private final JwtAccessTokenConverter jwtAccessTokenConverter;
- private final JwtProperties jwtProperties;
-
- @Override
- public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
- BladeUserDetails principal = (BladeUserDetails) authentication.getUserAuthentication().getPrincipal();
-
- //token鍙傛暟澧炲己
- Map<String, Object> info = new HashMap<>(16);
- info.put(TokenUtil.CLIENT_ID, TokenUtil.getClientIdFromHeader());
- info.put(TokenUtil.USER_ID, Func.toStr(principal.getUserId()));
- info.put(TokenUtil.DEPT_ID, Func.toStr(principal.getDeptId()));
- info.put(TokenUtil.POST_ID, Func.toStr(principal.getPostId()));
- info.put(TokenUtil.ROLE_ID, Func.toStr(principal.getRoleId()));
- info.put(TokenUtil.TENANT_ID, principal.getTenantId());
- info.put(TokenUtil.OAUTH_ID, principal.getOauthId());
- info.put(TokenUtil.ACCOUNT, principal.getAccount());
- info.put(TokenUtil.USER_NAME, principal.getUsername());
- info.put(TokenUtil.NICK_NAME, principal.getName());
- info.put(TokenUtil.REAL_NAME, principal.getRealName());
- info.put(TokenUtil.ROLE_NAME, principal.getRoleName());
- info.put(TokenUtil.AVATAR, principal.getAvatar());
- info.put(TokenUtil.DETAIL, principal.getDetail());
- info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME);
- info.put(TokenUtil.STRATEGYUPDATESTATUS, principal.getStrategyUpdateStatus());
- ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);
-
- //token鐘舵�佽缃�
- if (jwtProperties.getState()) {
- OAuth2AccessToken oAuth2AccessToken = jwtAccessTokenConverter.enhance(accessToken, authentication);
- String accessTokenValue = oAuth2AccessToken.getValue();
- String tenantId = principal.getTenantId();
- String userId = Func.toStr(principal.getUserId());
- JwtUtil.addAccessToken(tenantId, userId, accessTokenValue, accessToken.getExpiresIn());
-
- if (jwtProperties.getSingle()) {
- OAuth2RefreshToken oAuth2RefreshToken = oAuth2AccessToken.getRefreshToken();
- String refreshTokenValue = oAuth2RefreshToken.getValue();
- JwtUtil.addRefreshToken(tenantId, userId, refreshTokenValue, accessToken.getExpiresIn() * 168);
- }
- }
-
- return accessToken;
- }
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeNoOpPasswordEncoder.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeNoOpPasswordEncoder.java
deleted file mode 100644
index 9210fb8..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeNoOpPasswordEncoder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.auth.support;
-
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-/**
- * 鏃犲瘑鐮佸姞瀵�
- *
- * @author Chill
- */
-public class BladeNoOpPasswordEncoder implements PasswordEncoder {
-
- @Override
- public String encode(CharSequence rawPassword) {
- return rawPassword.toString();
- }
-
- @Override
- public boolean matches(CharSequence rawPassword, String encodedPassword) {
- return rawPassword.toString().equals(encodedPassword);
- }
-
- /**
- * Get the singleton {@link BladeNoOpPasswordEncoder}.
- */
- public static PasswordEncoder getInstance() {
- return INSTANCE;
- }
-
- private static final PasswordEncoder INSTANCE = new BladeNoOpPasswordEncoder();
-
- private BladeNoOpPasswordEncoder() {
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoder.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoder.java
deleted file mode 100644
index c226b93..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.auth.support;
-
-import org.springblade.core.tool.utils.DigestUtil;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-/**
- * 鑷畾涔夊瘑鐮佸姞瀵�
- *
- * @author Chill
- */
-public class BladePasswordEncoder implements PasswordEncoder {
-
- @Override
- public String encode(CharSequence rawPassword) {
- return DigestUtil.hex((String) rawPassword);
- }
-
- @Override
- public boolean matches(CharSequence rawPassword, String encodedPassword) {
- return encodedPassword.equals(encode(rawPassword));
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoderFactories.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoderFactories.java
deleted file mode 100644
index 664b0ba..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladePasswordEncoderFactories.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002-2017 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.springblade.auth.support;
-
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
-import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 鑷畾涔夊瘑鐮佸伐鍘�
- *
- * @author Rob Winch, Chill
- * @since 5.0
- */
-public class BladePasswordEncoderFactories {
-
- /**
- * Creates a {@link DelegatingPasswordEncoder} with default mappings. Additional
- * mappings may be added and the encoding will be updated to conform with best
- * practices. However, due to the nature of {@link DelegatingPasswordEncoder} the
- * updates should not impact users. The mappings current are:
- *
- * <ul>
- * <li>blade - {@link BladePasswordEncoder} (sha1(md5("password")))</li>
- * <li>bcrypt - {@link BCryptPasswordEncoder} (Also used for encoding)</li>
- * <li>noop - {@link BladeNoOpPasswordEncoder}</li>
- * <li>pbkdf2 - {@link Pbkdf2PasswordEncoder}</li>
- * <li>scrypt - {@link SCryptPasswordEncoder}</li>
- * </ul>
- *
- * @return the {@link PasswordEncoder} to use
- */
- public static PasswordEncoder createDelegatingPasswordEncoder() {
- String encodingId = "blade";
- Map<String, PasswordEncoder> encoders = new HashMap<>(16);
- encoders.put(encodingId, new BladePasswordEncoder());
- encoders.put("bcrypt", new BCryptPasswordEncoder());
- encoders.put("noop", BladeNoOpPasswordEncoder.getInstance());
- encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
- encoders.put("scrypt", new SCryptPasswordEncoder());
-
- return new DelegatingPasswordEncoder(encodingId, encoders);
- }
-
- private BladePasswordEncoderFactories() {
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java
deleted file mode 100644
index f1f3f3c..0000000
--- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * 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.auth.utils;
-
-import lombok.SneakyThrows;
-import org.springblade.common.constant.TenantConstant;
-import org.springblade.core.launch.constant.TokenConstant;
-import org.springblade.core.tenant.BladeTenantProperties;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.utils.*;
-import org.springblade.system.entity.Tenant;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException;
-import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
-
-import java.util.Base64;
-import java.util.Calendar;
-
-/**
- * 璁よ瘉宸ュ叿绫�
- *
- * @author Chill
- */
-public class TokenUtil {
-
- public final static String AVATAR = TokenConstant.AVATAR;
- public final static String ACCOUNT = TokenConstant.ACCOUNT;
- public final static String USER_NAME = TokenConstant.USER_NAME;
- public final static String NICK_NAME = TokenConstant.NICK_NAME;
- public final static String REAL_NAME = TokenConstant.REAL_NAME;
- public final static String USER_ID = TokenConstant.USER_ID;
- public final static String DEPT_ID = TokenConstant.DEPT_ID;
- public final static String POST_ID = TokenConstant.POST_ID;
- public final static String ROLE_ID = TokenConstant.ROLE_ID;
- public final static String ROLE_NAME = TokenConstant.ROLE_NAME;
- public final static String TENANT_ID = TokenConstant.TENANT_ID;
- public final static String OAUTH_ID = TokenConstant.OAUTH_ID;
- public final static String CLIENT_ID = TokenConstant.CLIENT_ID;
- public final static String DETAIL = TokenConstant.DETAIL;
- public final static String LICENSE = TokenConstant.LICENSE;
- public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME;
- public final static String STRATEGYUPDATESTATUS = "strategyUpdateStatus";
-
- public final static String DEPT_HEADER_KEY = "Dept-Id";
- public final static String ROLE_HEADER_KEY = "Role-Id";
- public final static String CAPTCHA_HEADER_KEY = "Captcha-Key";
- public final static String CAPTCHA_HEADER_CODE = "Captcha-Code";
- public final static String CAPTCHA_NOT_CORRECT = "楠岃瘉鐮佷笉姝g‘";
- public final static String TENANT_HEADER_KEY = "Tenant-Id";
- public final static String TENANT_PARAM_KEY = "tenant_id";
- public final static String DEFAULT_TENANT_ID = "000000";
- public final static String TENANT_NOT_FOUND = "绉熸埛ID鏈壘鍒�";
- public final static String USER_TYPE_HEADER_KEY = "User-Type";
- public final static String DEFAULT_USER_TYPE = "web";
- public final static String TOKEN_NOT_PERMISSION = "浠ょ墝鎺堟潈宸茶繃鏈�";
- public final static String USER_NOT_FOUND = "鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒";
- public final static String USER_HAS_NO_ROLE = "鏈幏寰楃敤鎴风殑瑙掕壊淇℃伅";
- public final static String USER_HAS_NO_TENANT = "鏈幏寰楃敤鎴风殑绉熸埛淇℃伅";
- public final static String USER_HAS_NO_TENANT_PERMISSION = "绉熸埛鎺堟潈宸茶繃鏈�,璇疯仈绯荤鐞嗗憳";
- public final static String USER_HAS_TOO_MANY_FAILS = "鐧诲綍閿欒娆℃暟杩囧,璇风◢鍚庡啀璇�";
- public final static String IP_NOT_FOND = "璇P鍦板潃鏃犺闂潈闄愶紝璇烽厤缃甀P鐧藉悕鍗�";
- public final static String HEADER_KEY = "Authorization";
- public final static String HEADER_PREFIX = "Basic ";
- public final static String DEFAULT_AVATAR = "";
- public final static String PASSWORD_KEY = "password";
- public final static String GRANT_TYPE_KEY = "grant_type";
- public final static String REFRESH_TOKEN_KEY = "refresh_token";
-
- private static BladeTenantProperties tenantProperties;
-
- /**
- * 鑾峰彇绉熸埛閰嶇疆
- *
- * @return tenantProperties
- */
- private static BladeTenantProperties getTenantProperties() {
- if (tenantProperties == null) {
- tenantProperties = SpringUtil.getBean(BladeTenantProperties.class);
- }
- return tenantProperties;
- }
-
- /**
- * 瑙g爜
- */
- @SneakyThrows
- public static String[] extractAndDecodeHeader() {
- String header = WebUtil.getRequest().getHeader(TokenUtil.HEADER_KEY);
- if (header == null || !header.startsWith(TokenUtil.HEADER_PREFIX)) {
- throw new UnapprovedClientAuthenticationException("璇锋眰澶翠腑鏃燾lient淇℃伅");
- }
-
- byte[] base64Token = header.substring(6).getBytes(Charsets.UTF_8_NAME);
-
- byte[] decoded;
- try {
- decoded = Base64.getDecoder().decode(base64Token);
- } catch (IllegalArgumentException var7) {
- throw new BadCredentialsException("Failed to decode basic authentication token");
- }
-
- String token = new String(decoded, Charsets.UTF_8_NAME);
- int index = token.indexOf(StringPool.COLON);
- if (index == -1) {
- throw new BadCredentialsException("Invalid basic authentication token");
- } else {
- return new String[]{token.substring(0, index), token.substring(index + 1)};
- }
- }
-
- /**
- * 鑾峰彇璇锋眰澶翠腑鐨勫鎴风id
- */
- public static String getClientIdFromHeader() {
- String[] tokens = extractAndDecodeHeader();
- return tokens[0];
- }
-
- /**
- * 鑾峰彇token杩囨湡鏃堕棿(娆℃棩鍑屾櫒3鐐�)
- *
- * @return expire
- */
- public static int getTokenValiditySecond() {
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.DAY_OF_YEAR, 1);
- cal.set(Calendar.HOUR_OF_DAY, 3);
- cal.set(Calendar.SECOND, 0);
- cal.set(Calendar.MINUTE, 0);
- cal.set(Calendar.MILLISECOND, 0);
- return (int) (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
- }
-
- /**
- * 鑾峰彇refreshToken杩囨湡鏃堕棿
- *
- * @return expire
- */
- public static int getRefreshTokenValiditySeconds() {
- return 60 * 60 * 24 * 15;
- }
-
- /**
- * 鍒ゆ柇绉熸埛鏉冮檺
- *
- * @param tenant 绉熸埛淇℃伅
- * @return boolean
- */
- public static boolean judgeTenant(Tenant tenant) {
- if (tenant == null || tenant.getId() == null) {
- throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT);
- }
- if (StringUtil.equalsIgnoreCase(tenant.getTenantId(), BladeConstant.ADMIN_TENANT_ID)) {
- return false;
- }
- if (getTenantProperties().getLicense()) {
- String licenseKey = tenant.getLicenseKey();
- String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY);
- }
- return false;
- }
-
-}
diff --git a/Source/BladeX/blade-auth/src/main/resources/application.yml b/Source/BladeX/blade-auth/src/main/resources/application.yml
deleted file mode 100644
index b5931cf..0000000
--- a/Source/BladeX/blade-auth/src/main/resources/application.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# 鍦ㄤ娇鐢⊿pring榛樿鏁版嵁婧怘ikari鐨勬儏鍐典笅閰嶇疆浠ヤ笅閰嶇疆椤�
-spring:
- datasource:
- hikari:
- # 鑷姩鎻愪氦浠庢睜涓繑鍥炵殑杩炴帴
- auto-commit: true
- # 杩炴帴姹犱腑缁存姢鐨勬渶灏忕┖闂茶繛鎺ユ暟
- minimum-idle: 10
- # 杩炴帴姹犱腑鍏佽鐨勬渶澶ц繛鎺ユ暟銆傜己鐪佸�硷細10锛涙帹鑽愮殑鍏紡锛�((core_count * 2) + effective_spindle_count)
- maximum-pool-size: 60
- # 绌洪棽杩炴帴瓒呮椂鏃堕棿锛岄粯璁ゅ��600000锛�10鍒嗛挓锛夛紝澶т簬绛変簬max-lifetime涓攎ax-lifetime>0锛屼細琚噸缃负0锛涗笉绛変簬0涓斿皬浜�10绉掞紝浼氳閲嶇疆涓�10绉掋��
- # 鍙湁绌洪棽杩炴帴鏁板ぇ浜庢渶澶ц繛鎺ユ暟涓旂┖闂叉椂闂磋秴杩囪鍊硷紝鎵嶄細琚噴鏀�
- idle-timeout: 30000
- # 杩炴帴鏈�澶у瓨娲绘椂闂�.涓嶇瓑浜�0涓斿皬浜�30绉掞紝浼氳閲嶇疆涓洪粯璁ゅ��30鍒嗛挓.璁剧疆搴旇姣攎ysql璁剧疆鐨勮秴鏃舵椂闂寸煭
- max-lifetime: 1800000
- # 绛夊緟杩炴帴姹犲垎閰嶈繛鎺ョ殑鏈�澶ф椂闀匡紙姣锛夛紝瓒呰繃杩欎釜鏃堕暱杩樻病鍙敤鐨勮繛鎺ュ垯鍙戠敓SQLException锛� 缂虹渷:30绉�
- connection-timeout: 30000
- # 杩炴帴娴嬭瘯鏌ヨ
- #connection-test-query: select 1
- #connection-test-query: SELECT 1 FROM dual
- freemarker:
- # 妯℃澘鍚庣紑鍚�
- suffix: .ftl
- # 鏂囨。绫诲瀷
- content-type: text/html
- # 椤甸潰缂栫爜
- charset: UTF-8
- # 椤甸潰缂撳瓨
- cache: false
- # 妯℃澘璺緞
- template-loader-path: classpath:/templates/
- web:
- # 璧勬簮璺緞
- Autowireds:
- static-locations: classpath:/static/
-
-#swagger鏂囨。
-swagger:
- base-packages:
- - org.springblade
- - org.springframework.security.oauth2.provider.endpoint
-
-#绗笁鏂圭櫥闄�
-social:
- oauth:
- GITHUB:
- client-id: 233************
- client-secret: 233************************************
- redirect-uri: ${social.domain}/oauth/redirect/github
- GITEE:
- client-id: 233************
- client-secret: 233************************************
- redirect-uri: ${social.domain}/oauth/redirect/gitee
- WECHAT_OPEN:
- client-id: 233************
- client-secret: 233************************************
- redirect-uri: ${social.domain}/oauth/redirect/wechat
- QQ:
- client-id: 233************
- client-secret: 233************************************
- redirect-uri: ${social.domain}/oauth/redirect/qq
- DINGTALK:
- client-id: 233************
- client-secret: 233************************************
- redirect-uri: ${social.domain}/oauth/redirect/dingtalk
diff --git a/Source/BladeX/blade-common/pom.xml b/Source/BladeX/blade-common/pom.xml
deleted file mode 100644
index 80e8ce5..0000000
--- a/Source/BladeX/blade-common/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-common</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-loadbalancer</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-auto</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- <finalName>${project.name}</finalName>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
deleted file mode 100644
index 90355cd..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.common.cache;
-
-/**
- * 缂撳瓨鍚�
- *
- * @author Chill
- */
-public interface CacheNames {
-
- /**
- * 杩斿洖鎷兼帴鍚庣殑key
- *
- * @param cacheKey 缂撳瓨key
- * @param cacheKeyValue 缂撳瓨key鍊�
- * @return tenantKey
- */
- static String cacheKey(String cacheKey, String cacheKeyValue) {
- return cacheKey.concat(cacheKeyValue);
- }
-
- /**
- * 杩斿洖绉熸埛鏍煎紡鐨刱ey
- *
- * @param tenantId 绉熸埛缂栧彿
- * @param cacheKey 缂撳瓨key
- * @param cacheKeyValue 缂撳瓨key鍊�
- * @return tenantKey
- */
- static String tenantKey(String tenantId, String cacheKey, String cacheKeyValue) {
- return tenantId.concat(":").concat(cacheKey).concat(cacheKeyValue);
- }
-
- /**
- * 楠岃瘉鐮乲ey
- */
- String CAPTCHA_KEY = "blade:auth::blade:captcha:";
-
- /**
- * 鐧诲綍澶辫触key
- */
- String USER_FAIL_KEY = "blade:user::blade:fail:";
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/config/BladeCommonConfiguration.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/config/BladeCommonConfiguration.java
deleted file mode 100644
index f6943e8..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/config/BladeCommonConfiguration.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.common.config;
-
-
-import lombok.AllArgsConstructor;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 鍏叡灏佽鍖呴厤缃被
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-public class BladeCommonConfiguration {
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java
deleted file mode 100644
index c7ee103..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.common.constant;
-
-/**
- * 閫氱敤甯搁噺
- *
- * @author Chill
- */
-public interface CommonConstant {
-
- /**
- * sword 绯荤粺鍚�
- */
- String SWORD_NAME = "sword";
-
- /**
- * saber 绯荤粺鍚�
- */
- String SABER_NAME = "saber";
-
- /**
- * CODE 鏂版坊鍔犵殑CODE鏈嶅姟鍚�
- */
- String CODE_NAME = "code";
-
- /**
- * 椤剁骇鐖惰妭鐐筰d
- */
- Long TOP_PARENT_ID = 0L;
-
- /**
- * 椤剁骇鐖惰妭鐐瑰悕绉�
- */
- String TOP_PARENT_NAME = "椤剁骇";
-
- /**
- * 鏈皝瀛樼姸鎬佸��
- */
- Integer NOT_SEALED_ID = 0;
-
- /**
- * 榛樿瀵嗙爜
- */
- String DEFAULT_PASSWORD = "123456";
-
- /**
- * 榛樿瀵嗙爜鍙傛暟鍊�
- */
- String DEFAULT_PARAM_PASSWORD = "account.initPassword";
-
- /**
- * 榛樿鎺掑簭瀛楁
- */
- String SORT_FIELD = "sort";
-
- /**
- * 鏁版嵁鏉冮檺绫诲瀷
- */
- Integer DATA_SCOPE_CATEGORY = 1;
-
- /**
- * 鎺ュ彛鏉冮檺绫诲瀷
- */
- Integer API_SCOPE_CATEGORY = 2;
-
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
deleted file mode 100644
index fdd1df6..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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.common.constant;
-
-import org.springblade.core.launch.constant.AppConstant;
-
-import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
-
-/**
- * 鍚姩甯搁噺
- *
- * @author Chill
- */
-public interface LauncherConstant {
-
- /**
- * xxljob
- */
- String APPLICATION_XXLJOB_NAME = APPLICATION_NAME_PREFIX + "xxljob";
-
- /**
- * xxljob
- */
- String APPLICATION_XXLJOB_ADMIN_NAME = APPLICATION_NAME_PREFIX + "xxljob-admin";
-
- /**
- * nacos dev 鍦板潃
- */
- //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
- String NACOS_DEV_ADDR = "192.168.93.133:38848";
-
- /**
- * nacos prod 鍦板潃
- */
- //String NACOS_PROD_ADDR = "dev.vci-tech.com:38848";
- String NACOS_PROD_ADDR = "192.168.93.129:38848";
-
- /**
- * nacos test 鍦板潃
- */
- //String NACOS_TEST_ADDR = "dev.vci-tech.com:38848";
- String NACOS_TEST_ADDR = "192.168.93.133:38848";
-
- /**
- * sentinel dev 鍦板潃
- */
- //String SENTINEL_DEV_ADDR = "127.0.0.1:8858";
-
- /**
- * sentinel prod 鍦板潃
- */
- //String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
-
- /**
- * sentinel test 鍦板潃
- */
- //String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
-
- /**
- * seata dev 鍦板潃
- */
- String SEATA_DEV_ADDR = "127.0.0.1:8091";
-
- /**
- * seata prod 鍦板潃
- */
- String SEATA_PROD_ADDR = "172.30.0.68:8091";
-
- /**
- * seata test 鍦板潃
- */
- String SEATA_TEST_ADDR = "172.30.0.68:8091";
-
- /**
- * zipkin dev 鍦板潃
- */
- String ZIPKIN_DEV_ADDR = "http://dev.vci-tech.com:38006";
-
- /**
- * zipkin prod 鍦板潃
- */
- String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
-
- /**
- * zipkin test 鍦板潃
- */
- String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
-
- /**
- * elk dev 鍦板潃
- */
- String ELK_DEV_ADDR = "dev.vci-tech.com:38002";
-
- /**
- * elk prod 鍦板潃
- */
- String ELK_PROD_ADDR = "dev.vci-tech.com:38002";
-
- /**
- * elk test 鍦板潃
- */
- String ELK_TEST_ADDR = "dev.vci-tech.com:38002";
-
- /**
- * seata file妯″紡
- */
- String FILE_MODE = "file";
-
- /**
- * seata nacos妯″紡
- */
- String NACOS_MODE = "nacos";
-
- /**
- * seata default妯″紡
- */
- String DEFAULT_MODE = "default";
-
- /**
- * seata group鍚庣紑
- */
- String GROUP_NAME = "-group";
-
- /**
- * seata 鏈嶅姟缁勬牸寮�
- *
- * @param appName 鏈嶅姟鍚�
- * @return group
- */
- static String seataServiceGroup(String appName) {
- return appName.concat(GROUP_NAME);
- }
-
- /**
- * 鍔ㄦ�佽幏鍙杗acos鍦板潃
- *
- * @param profile 鐜鍙橀噺
- * @return addr
- */
- static String nacosAddr(String profile) {
- switch (profile) {
- case (AppConstant.PROD_CODE):
- return NACOS_PROD_ADDR;
- case (AppConstant.TEST_CODE):
- return NACOS_TEST_ADDR;
- default:
- return NACOS_DEV_ADDR;
- }
- }
-
- /**
- * 鍔ㄦ�佽幏鍙杝entinel鍦板潃
- *
- * @param profile 鐜鍙橀噺
- * @return addr
- */
-/* static String sentinelAddr(String profile) {
- switch (profile) {
- case (AppConstant.PROD_CODE):
- return SENTINEL_PROD_ADDR;
- case (AppConstant.TEST_CODE):
- return SENTINEL_TEST_ADDR;
- default:
- return SENTINEL_DEV_ADDR;
- }
- }*/
-
- /**
- * 鍔ㄦ�佽幏鍙杝eata鍦板潃
- *
- * @param profile 鐜鍙橀噺
- * @return addr
- */
- static String seataAddr(String profile) {
- switch (profile) {
- case (AppConstant.PROD_CODE):
- return SEATA_PROD_ADDR;
- case (AppConstant.TEST_CODE):
- return SEATA_TEST_ADDR;
- default:
- return SEATA_DEV_ADDR;
- }
- }
-
- /**
- * 鍔ㄦ�佽幏鍙杬ipkin鍦板潃
- *
- * @param profile 鐜鍙橀噺
- * @return addr
- */
- static String zipkinAddr(String profile) {
- switch (profile) {
- case (AppConstant.PROD_CODE):
- return ZIPKIN_PROD_ADDR;
- case (AppConstant.TEST_CODE):
- return ZIPKIN_TEST_ADDR;
- default:
- return ZIPKIN_DEV_ADDR;
- }
- }
-
- /**
- * 鍔ㄦ�佽幏鍙杄lk鍦板潃
- *
- * @param profile 鐜鍙橀噺
- * @return addr
- */
- static String elkAddr(String profile) {
- switch (profile) {
- case (AppConstant.PROD_CODE):
- return ELK_PROD_ADDR;
- case (AppConstant.TEST_CODE):
- return ELK_TEST_ADDR;
- default:
- return ELK_DEV_ADDR;
- }
- }
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/TenantConstant.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/TenantConstant.java
deleted file mode 100644
index 6f37f8d..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/TenantConstant.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.common.constant;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 绉熸埛甯搁噺
- *
- * @author Chill
- */
-public interface TenantConstant {
-
- /**
- * 绉熸埛榛樿瀵嗙爜KEY
- */
- String PASSWORD_KEY = "tenant.default.password";
-
- /**
- * 绉熸埛榛樿璐﹀彿棰濆害KEY
- */
- //String ACCOUNT_NUMBER_KEY = "tenant.default.accountNumber";
-
- /**
- * 绉熸埛榛樿鑿滃崟闆嗗悎KEY
- */
- String ACCOUNT_MENU_CODE_KEY = "tenant.default.menuCode";
-
- /**
- * 绉熸埛榛樿瀵嗙爜
- */
- String DEFAULT_PASSWORD = "123456";
-
- /**
- * 绉熸埛鎺堟潈鐮侀粯璁�16浣嶅瘑閽�
- */
- String DES_KEY = "0000000000000000";
-
- /**
- * 绉熸埛榛樿璐﹀彿棰濆害
- */
- //Integer DEFAULT_ACCOUNT_NUMBER = -1;
-
- /**
- * 绉熸埛榛樿鑿滃崟闆嗗悎
- */
- List<String> MENU_CODES = Arrays.asList(
- "desk", "flow", "work", "monitor", "Autowired", "role", "user", "dept", "dictbiz", "topmenu"
- );
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
deleted file mode 100644
index 83ec604..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.common.launch;
-
-import org.springblade.common.constant.LauncherConstant;
-import org.springblade.core.auto.service.AutoService;
-import org.springblade.core.launch.service.LauncherService;
-import org.springblade.core.launch.utils.PropsUtil;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-
-import java.util.Properties;
-
-/**
- * 鍚姩鍙傛暟鎷撳睍
- *
- * @author smallchil
- */
-@AutoService(LauncherService.class)
-public class LauncherServiceImpl implements LauncherService {
-
- @Override
- public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
- Properties props = System.getProperties();
- // 閫氱敤娉ㄥ唽
- PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
- PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
- System.out.println( LauncherConstant.nacosAddr(profile));
- //PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
- PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
- PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
-
- // 寮�鍚痚lk鏃ュ織
- PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));
-
- // seata娉ㄥ唽鍦板潃
- // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
- // seata娉ㄥ唽group鏍煎紡
- // PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
- // seata閰嶇疆鏈嶅姟group
- // PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
- // seata娉ㄥ唽妯″紡閰嶇疆
- // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE);
- // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile));
- // PropsUtil.setProperty(props, "seata.config.type", LauncherConstant.NACOS_MODE);
- // PropsUtil.setProperty(props, "seata.config.nacos.server-addr", LauncherConstant.nacosAddr(profile));
- }
-
-}
diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
deleted file mode 100644
index c424bc8..0000000
--- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.common.utils;
-
-/**
- * 閫氱敤宸ュ叿绫�
- *
- * @author Chill
- */
-public class CommonUtil {
-
-}
diff --git a/Source/BladeX/blade-gateway/pom.xml b/Source/BladeX/blade-gateway/pom.xml
deleted file mode 100644
index 64d944e..0000000
--- a/Source/BladeX/blade-gateway/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-gateway</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-undertow</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-metrics</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-jwt</artifactId>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- </dependency>
- <!--Spring-->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-bootstrap</artifactId>
- </dependency>
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
- </dependency>
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-client</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java
deleted file mode 100644
index de1c948..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.gateway;
-
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-/**
- * 椤圭洰鍚姩
- *
- * @author Chill
- */
-@EnableScheduling
-@EnableDiscoveryClient
-@SpringBootApplication
-public class GateWayApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_GATEWAY_NAME, GateWayApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/ErrorHandlerConfiguration.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/ErrorHandlerConfiguration.java
deleted file mode 100644
index 06329ba..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/ErrorHandlerConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.gateway.config;
-
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springblade.gateway.handler.ErrorExceptionHandler;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.web.ServerProperties;
-import org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 寮傚父澶勭悊閰嶇疆绫�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AutoConfigureBefore(ErrorWebFluxAutoConfiguration.class)
-@EnableConfigurationProperties({ServerProperties.class})
-public class ErrorHandlerConfiguration {
-
- @Bean
- public ErrorExceptionHandler globalExceptionHandler(ObjectMapper objectMapper) {
- return new ErrorExceptionHandler(objectMapper);
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/RouterFunctionConfiguration.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/RouterFunctionConfiguration.java
deleted file mode 100644
index db4814b..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/config/RouterFunctionConfiguration.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.gateway.config;
-
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.gateway.props.AuthProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.web.cors.reactive.CorsUtils;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.server.WebFilter;
-import org.springframework.web.server.WebFilterChain;
-import reactor.core.publisher.Mono;
-
-/**
- * 璺敱閰嶇疆淇℃伅
- *
- * @author Chill
- */
-@Slf4j
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-@EnableConfigurationProperties({AuthProperties.class})
-public class RouterFunctionConfiguration {
-
- /**
- * 杩欓噷涓烘敮鎸佺殑璇锋眰澶达紝濡傛灉鏈夎嚜瀹氫箟鐨刪eader瀛楁璇疯嚜宸辨坊鍔�
- */
- private static final String ALLOWED_HEADERS = "X-Requested-With, Tenant-Id, Blade-Auth, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client, knfie4j-gateway-request, knife4j-gateway-code, request-origion";
- private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD";
- private static final String ALLOWED_ORIGIN = "*";
- private static final String ALLOWED_EXPOSE = "*";
- private static final String MAX_AGE = "18000L";
-
- /**
- * 璺ㄥ煙閰嶇疆
- */
- @Bean
- public WebFilter corsFilter() {
- return (ServerWebExchange ctx, WebFilterChain chain) -> {
- ServerHttpRequest request = ctx.getRequest();
- if (CorsUtils.isCorsRequest(request)) {
- ServerHttpResponse response = ctx.getResponse();
- HttpHeaders headers = response.getHeaders();
- headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS);
- headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);
- headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);
- headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);
- headers.add("Access-Control-Max-Age", MAX_AGE);
- headers.add("Access-Control-Allow-Credentials", "true");
- if (request.getMethod() == HttpMethod.OPTIONS) {
- response.setStatusCode(HttpStatus.OK);
- return Mono.empty();
- }
- }
- return chain.filter(ctx);
- };
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteService.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteService.java
deleted file mode 100644
index aed779a..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.gateway.dynamic;
-
-import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
-import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.cloud.gateway.route.RouteDefinitionWriter;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.ApplicationEventPublisherAware;
-import org.springframework.stereotype.Service;
-import reactor.core.publisher.Mono;
-
-import java.util.List;
-
-/**
- * 鍔ㄦ�佽矾鐢变笟鍔$被
- *
- * @author Chill
- */
-@Service
-public class DynamicRouteService implements ApplicationEventPublisherAware {
-
- private final RouteDefinitionWriter routeDefinitionWriter;
-
- private ApplicationEventPublisher publisher;
-
- public DynamicRouteService(RouteDefinitionWriter routeDefinitionWriter) {
- this.routeDefinitionWriter = routeDefinitionWriter;
- }
-
- @Override
- public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
- this.publisher = applicationEventPublisher;
- }
-
- /**
- * 澧炲姞璺敱
- */
- public String save(RouteDefinition definition) {
- try {
- routeDefinitionWriter.save(Mono.just(definition)).subscribe();
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- return "save success";
- } catch (Exception e) {
- e.printStackTrace();
- return "save failure";
- }
- }
-
- /**
- * 鏇存柊璺敱
- */
- public String update(RouteDefinition definition) {
- try {
- this.routeDefinitionWriter.delete(Mono.just(definition.getId()));
- this.routeDefinitionWriter.save(Mono.just(definition)).subscribe();
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- return "update success";
- } catch (Exception e) {
- e.printStackTrace();
- return "update failure";
- }
- }
-
- /**
- * 鏇存柊璺敱
- */
- public String updateList(List<RouteDefinition> routeDefinitions) {
- routeDefinitions.forEach(this::update);
- return "update done";
- }
-
- /**
- * 鍒犻櫎璺敱
- */
- public String delete(String id) {
- try {
- this.routeDefinitionWriter.delete(Mono.just(id));
- return "delete success";
- } catch (Exception e) {
- e.printStackTrace();
- return "delete failure";
- }
- }
-
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteServiceListener.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteServiceListener.java
deleted file mode 100644
index 31a87b9..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/DynamicRouteServiceListener.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.gateway.dynamic;
-
-import com.alibaba.cloud.nacos.NacosConfigProperties;
-import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.nacos.api.NacosFactory;
-import com.alibaba.nacos.api.PropertyKeyConst;
-import com.alibaba.nacos.api.config.ConfigService;
-import com.alibaba.nacos.api.config.listener.Listener;
-import com.alibaba.nacos.api.exception.NacosException;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.launch.constant.NacosConstant;
-import org.springblade.core.launch.props.BladeProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.Executor;
-
-/**
- * 鍔ㄦ�佽矾鐢辩洃鍚櫒
- *
- * @author Chill
- */
-@Order
-@Slf4j
-@Component
-@RefreshScope
-public class DynamicRouteServiceListener {
-
- private final DynamicRouteService dynamicRouteService;
- private final NacosDiscoveryProperties nacosDiscoveryProperties;
- private final NacosConfigProperties nacosConfigProperties;
- private final BladeProperties bladeProperties;
-
- public DynamicRouteServiceListener(DynamicRouteService dynamicRouteService, NacosDiscoveryProperties nacosDiscoveryProperties, NacosConfigProperties nacosConfigProperties, BladeProperties bladeProperties) {
- this.dynamicRouteService = dynamicRouteService;
- this.nacosDiscoveryProperties = nacosDiscoveryProperties;
- this.nacosConfigProperties = nacosConfigProperties;
- this.bladeProperties = bladeProperties;
- dynamicRouteServiceListener();
- }
-
- /**
- * 鐩戝惉Nacos涓嬪彂鐨勫姩鎬佽矾鐢遍厤缃�
- */
- private void dynamicRouteServiceListener() {
- try {
- String dataId = NacosConstant.dataId(bladeProperties.getName(), bladeProperties.getEnv(), NacosConstant.NACOS_CONFIG_JSON_FORMAT);
- String group = nacosConfigProperties.getGroup();
- Properties properties = new Properties();
- properties.setProperty(PropertyKeyConst.SERVER_ADDR, nacosDiscoveryProperties.getServerAddr());
- properties.setProperty(PropertyKeyConst.NAMESPACE, nacosDiscoveryProperties.getNamespace());
- ConfigService configService = NacosFactory.createConfigService(properties);
- configService.addListener(dataId, group, new Listener() {
- @Override
- public void receiveConfigInfo(String configInfo) {
- List<RouteDefinition> routeDefinitions = JSON.parseArray(configInfo, RouteDefinition.class);
- dynamicRouteService.updateList(routeDefinitions);
- }
-
- @Override
- public Executor getExecutor() {
- return null;
- }
- });
- String configInfo = configService.getConfig(dataId, group, 5000);
- if (configInfo != null) {
- List<RouteDefinition> routeDefinitions = JSON.parseArray(configInfo, RouteDefinition.class);
- dynamicRouteService.updateList(routeDefinitions);
- }
- } catch (NacosException ignored) {
- ignored.printStackTrace();
- }
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayFilter.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayFilter.java
deleted file mode 100644
index a7c64ec..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayFilter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.gateway.dynamic;
-
-import lombok.Data;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * 杩囨护鍣ㄥ畾涔夋ā鍨�
- *
- * @author Chill
- */
-@Data
-public class GatewayFilter {
-
- /**
- * 杩囨护鍣ㄥ搴旂殑Name
- */
- private String name;
-
- /**
- * 瀵瑰簲鐨勮矾鐢辫鍒�
- */
- private Map<String, String> args = new LinkedHashMap<>();
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayPredicate.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayPredicate.java
deleted file mode 100644
index 1e8e435..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayPredicate.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.gateway.dynamic;
-
-import lombok.Data;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * 璺敱鏂█瀹氫箟妯″瀷
- *
- * @author Chill
- */
-@Data
-public class GatewayPredicate {
-
- /**
- * 鏂█瀵瑰簲鐨凬ame
- */
- private String name;
-
- /**
- * 閰嶇疆鐨勬柇瑷�瑙勫垯
- */
- private Map<String, String> args = new LinkedHashMap<>();
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayRoute.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayRoute.java
deleted file mode 100644
index c126009..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/dynamic/GatewayRoute.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.gateway.dynamic;
-
-
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Gateway鐨勮矾鐢卞畾涔夋ā鍨�
- *
- * @author Chill
- */
-@Data
-public class GatewayRoute {
-
- /**
- * 璺敱鐨刬d
- */
- private String id;
-
- /**
- * 璺敱鏂█闆嗗悎閰嶇疆
- */
- private List<GatewayPredicate> predicates = new ArrayList<>();
-
- /**
- * 璺敱杩囨护鍣ㄩ泦鍚堥厤缃�
- */
- private List<GatewayFilter> filters = new ArrayList<>();
-
- /**
- * 璺敱瑙勫垯杞彂鐨勭洰鏍噓ri
- */
- private String uri;
-
- /**
- * 璺敱鎵ц鐨勯『搴�
- */
- private int order = 0;
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/AuthFilter.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/AuthFilter.java
deleted file mode 100644
index 4175149..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/AuthFilter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.gateway.filter;
-
-import com.alibaba.nacos.common.utils.StringUtils;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.jsonwebtoken.Claims;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.jwt.JwtUtil;
-import org.springblade.core.jwt.props.JwtProperties;
-import org.springblade.core.launch.constant.TokenConstant;
-import org.springblade.gateway.props.AuthProperties;
-import org.springblade.gateway.provider.AuthProvider;
-import org.springblade.gateway.provider.RequestProvider;
-import org.springblade.gateway.provider.ResponseProvider;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.core.io.buffer.DataBuffer;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.stereotype.Component;
-import org.springframework.util.AntPathMatcher;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * 閴存潈璁よ瘉
- *
- * @author Chill
- */
-@Slf4j
-@Component
-@AllArgsConstructor
-public class AuthFilter implements GlobalFilter, Ordered {
- private final AuthProperties authProperties;
- private final ObjectMapper objectMapper;
- private final JwtProperties jwtProperties;
- private final AntPathMatcher antPathMatcher = new AntPathMatcher();
-
- @Override
- public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
- //鏍¢獙 Token 鏀捐
- String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange);
- String path = exchange.getRequest().getURI().getPath();
- if (isSkip(path) || isSkip(originalRequestUrl)) {
- return chain.filter(exchange);
- }
- //鏍¢獙 Token 鍚堟硶鎬�
- ServerHttpResponse resp = exchange.getResponse();
- String headerToken = exchange.getRequest().getHeaders().getFirst(AuthProvider.AUTH_KEY);
- String paramToken = exchange.getRequest().getQueryParams().getFirst(AuthProvider.AUTH_KEY);
- if (StringUtils.isBlank(headerToken) && StringUtils.isBlank(paramToken)) {
- return unAuth(resp, "缂哄け浠ょ墝,閴存潈澶辫触");
- }
- String auth = StringUtils.isBlank(headerToken) ? paramToken : headerToken;
- String token = JwtUtil.getToken(auth);
- Claims claims = JwtUtil.parseJWT(token);
- if (token == null || claims == null) {
- return unAuth(resp, "璇锋眰鏈巿鏉�");
- }
- //鍒ゆ柇 Token 鐘舵��
- if (jwtProperties.getState()) {
- String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID));
- String userId = String.valueOf(claims.get(TokenConstant.USER_ID));
- String accessToken = JwtUtil.getAccessToken(tenantId, userId, token);
- if (!token.equalsIgnoreCase(accessToken)) {
- return unAuth(resp, "浠ょ墝宸插け鏁�");
- }
- }
- return chain.filter(exchange);
- }
-
- private boolean isSkip(String path) {
- return AuthProvider.getDefaultSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path))
- || authProperties.getSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path))
- || authProperties.getAuth().stream().anyMatch(auth -> antPathMatcher.match(auth.getPattern(), path))
- || authProperties.getBasic().stream().anyMatch(basic -> antPathMatcher.match(basic.getPattern(), path))
- || authProperties.getSign().stream().anyMatch(sign -> antPathMatcher.match(sign.getPattern(), path));
- }
-
- private Mono<Void> unAuth(ServerHttpResponse resp, String msg) {
- resp.setStatusCode(HttpStatus.UNAUTHORIZED);
- resp.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
- String result = "";
- try {
- result = objectMapper.writeValueAsString(ResponseProvider.unAuth(msg));
- } catch (JsonProcessingException e) {
- log.error(e.getMessage(), e);
- }
- DataBuffer buffer = resp.bufferFactory().wrap(result.getBytes(StandardCharsets.UTF_8));
- return resp.writeWith(Flux.just(buffer));
- }
-
-
- @Override
- public int getOrder() {
- return -100;
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalRequestLogFilter.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalRequestLogFilter.java
deleted file mode 100644
index a81b2d0..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalRequestLogFilter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.gateway.filter;
-
-import com.alibaba.nacos.common.utils.StringUtils;
-import io.jsonwebtoken.Claims;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.jwt.JwtUtil;
-import org.springblade.gateway.provider.AuthProvider;
-import org.springblade.gateway.provider.RequestProvider;
-import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * webflux 鏃ュ織璇锋眰璁板綍锛屾柟渚垮紑鍙戣皟璇曘�傝姹傛棩蹇楄繃婊ゅ櫒鎺掑簭灏介噺浣庛��
- *
- * <p>
- * 娉ㄦ剰锛氭殏鏃朵笉鏀寔缁撴瀯浣撴墦鍗帮紝鎯冲疄鐜帮紝璇风湅涓嬮潰鐨勯摼鎺ャ��
- * https://stackoverflow.com/questions/45240005/how-to-log-request-and-response-bodies-in-spring-webflux
- * https://github.com/Silvmike/webflux-demo/blob/master/tests/src/test/java/ru/hardcoders/demo/webflux/web_handler/filters/logging
- * </p>
- *
- * @author dream.lu
- */
-@Slf4j
-@Configuration(proxyBeanMethods = false)
-@RequiredArgsConstructor
-@ConditionalOnProperty(value = "blade.log.request.enabled", havingValue = "true", matchIfMissing = true)
-public class GlobalRequestLogFilter implements GlobalFilter, Ordered {
- private final WebEndpointProperties endpointProperties;
-
- @Override
- public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
- ServerHttpRequest request = exchange.getRequest();
- // 鎵撳嵃璇锋眰璺緞
- String path = request.getPath().pathWithinApplication().value();
-
- // 蹇界暐 endpoint 璇锋眰
- String endpointBasePath = endpointProperties.getBasePath();
- if (StringUtils.isNotBlank(endpointBasePath) && path.startsWith(endpointBasePath)) {
- return chain.filter(exchange);
- }
-
- String requestUrl = RequestProvider.getOriginalRequestUrl(exchange);
-
- // 鏋勫缓鎴愪竴鏉¢暱 鏃ュ織锛岄伩鍏嶅苟鍙戜笅鏃ュ織閿欎贡
- StringBuilder beforeReqLog = new StringBuilder(300);
- // 鏃ュ織鍙傛暟
- List<Object> beforeReqArgs = new ArrayList<>();
- beforeReqLog.append("\n\n================ Gateway Request Start ================\n");
- // 鎵撳嵃璺敱
- beforeReqLog.append("===> {}: {}\n");
- // 鍙傛暟
- String requestMethod = request.getMethodValue();
- beforeReqArgs.add(requestMethod);
- beforeReqArgs.add(requestUrl);
-
- // 鎵撳嵃璇锋眰澶�
- HttpHeaders headers = request.getHeaders();
- headers.forEach((headerName, headerValue) -> {
- beforeReqLog.append("===Headers=== {}: {}\n");
- beforeReqArgs.add(headerName);
- if (AuthProvider.AUTH_KEY.toLowerCase().equals(headerName)) {
- String value = headerValue.get(0);
- String token = JwtUtil.getToken(value);
- Claims claims = JwtUtil.parseJWT(token);
- beforeReqArgs.add((claims == null) ? "" : claims.toString());
- beforeReqLog.append("===Headers=== {}: {}\n");
- beforeReqArgs.add(headerName.concat("-original"));
- beforeReqArgs.add(headerValue.toArray());
- } else {
- beforeReqArgs.add(headerValue.toArray());
- }
- });
-
- beforeReqLog.append("================ Gateway Request End =================\n");
- // 鎵撳嵃鎵ц鏃堕棿
- log.info(beforeReqLog.toString(), beforeReqArgs.toArray());
- return chain.filter(exchange);
- }
-
- @Override
- public int getOrder() {
- return Ordered.LOWEST_PRECEDENCE;
- }
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalResponseLogFilter.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalResponseLogFilter.java
deleted file mode 100644
index 355b8a7..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/GlobalResponseLogFilter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.gateway.filter;
-
-import com.alibaba.nacos.common.utils.StringUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.util.UriComponentsBuilder;
-import reactor.core.publisher.Mono;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * webflux 鐩稿簲鏃ュ織锛屾柟渚垮紑鍙戣皟璇曪紝娉ㄦ剰鎺掑簭瑕佷紭鍏堛��
- *
- * @author dream.lu
- */
-@Slf4j
-@Configuration(proxyBeanMethods = false)
-@RequiredArgsConstructor
-@ConditionalOnProperty(value = "blade.log.request.enabled", havingValue = "true", matchIfMissing = true)
-public class GlobalResponseLogFilter implements GlobalFilter, Ordered {
- private final WebEndpointProperties endpointProperties;
-
- @Override
- public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
- ServerHttpRequest request = exchange.getRequest();
- // 鎵撳嵃璇锋眰璺緞
- String path = request.getPath().pathWithinApplication().value();
- // 蹇界暐 endpoint 璇锋眰
- String endpointBasePath = endpointProperties.getBasePath();
- if (StringUtils.isNotBlank(endpointBasePath) && path.startsWith(endpointBasePath)) {
- return chain.filter(exchange);
- }
- return chain.filter(exchange).then(
- Mono.fromRunnable(() -> {
- MultiValueMap<String, String> queryParams = request.getQueryParams();
- String requestUrl = UriComponentsBuilder.fromPath(path).queryParams(queryParams).build().toUriString();
-
- // 鏋勫缓鎴愪竴鏉¢暱 鏃ュ織锛岄伩鍏嶅苟鍙戜笅鏃ュ織閿欎贡
- StringBuilder responseLog = new StringBuilder(300);
- // 鏃ュ織鍙傛暟
- List<Object> responseArgs = new ArrayList<>();
- responseLog.append("\n\n================ Gateway Response Start ================\n");
- ServerHttpResponse response = exchange.getResponse();
- // 鎵撳嵃璺敱 200 get: /api/xxx/xxx
- responseLog.append("<=== {} {}: {}\n");
- // 鍙傛暟
- String requestMethod = request.getMethodValue();
- responseArgs.add(response.getStatusCode().value());
- responseArgs.add(requestMethod);
- responseArgs.add(requestUrl);
-
- // 鎵撳嵃璇锋眰澶�
- HttpHeaders headers = response.getHeaders();
- headers.forEach((headerName, headerValue) -> {
- responseLog.append("===Headers=== {}: {}\n");
- responseArgs.add(headerName);
- responseArgs.add(headerValue.toArray());
- });
-
- responseLog.append("================ Gateway Response End =================\n");
- // 鎵撳嵃鎵ц鏃堕棿
- log.info(responseLog.toString(), responseArgs.toArray());
- })
- );
- }
-
- @Override
- public int getOrder() {
- return Ordered.HIGHEST_PRECEDENCE;
- }
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/RequestFilter.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/RequestFilter.java
deleted file mode 100644
index b351716..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/filter/RequestFilter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.springblade.gateway.filter;
-
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
-import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.addOriginalRequestUrl;
-
-/**
- * <p>
- * 鍏ㄥ眬鎷︽埅鍣紝浣滅敤鎵�鏈夌殑寰湇鍔�
- * <p>
- * 1. 瀵硅姹傚ご涓弬鏁拌繘琛屽鐞� from 鍙傛暟杩涜娓呮礂
- * 2. 閲嶅啓StripPrefix = 1,鏀寔鍏ㄥ眬
- *
- * @author lengleng
- */
-@Component
-public class RequestFilter implements GlobalFilter, Ordered {
-
- /**
- * Process the Web request and (optionally) delegate to the next
- * {@code WebFilter} through the given {@link GatewayFilterChain}.
- *
- * @param exchange the current server exchange
- * @param chain provides a way to delegate to the next filter
- * @return {@code Mono<Void>} to indicate when request processing is complete
- */
- @Override
- public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
- // 1. 娓呮礂璇锋眰澶翠腑from 鍙傛暟
- ServerHttpRequest request = exchange.getRequest().mutate()
- .headers(httpHeaders -> httpHeaders.remove("X"))
- .build();
-
- // 2. 閲嶅啓StripPrefix
- addOriginalRequestUrl(exchange, request.getURI());
- String rawPath = request.getURI().getRawPath();
- String newPath = "/" + Arrays.stream(StringUtils.tokenizeToStringArray(rawPath, "/"))
- .skip(1L).collect(Collectors.joining("/"));
- ServerHttpRequest newRequest = request.mutate()
- .path(newPath)
- .build();
- exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI());
-
- return chain.filter(exchange.mutate().request(newRequest.mutate().build()).build());
- }
-
- @Override
- public int getOrder() {
- return -1000;
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/handler/ErrorExceptionHandler.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/handler/ErrorExceptionHandler.java
deleted file mode 100644
index b00d981..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/handler/ErrorExceptionHandler.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.gateway.handler;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.RequiredArgsConstructor;
-import org.springblade.gateway.provider.ResponseProvider;
-import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
-import org.springframework.core.annotation.Order;
-import org.springframework.core.io.buffer.DataBufferFactory;
-import org.springframework.http.MediaType;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.web.server.ResponseStatusException;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.util.Map;
-
-/**
- * 寮傚父澶勭悊
- *
- * @author Chill
- */
-@Order(-1)
-@RequiredArgsConstructor
-public class ErrorExceptionHandler implements ErrorWebExceptionHandler {
-
- private final ObjectMapper objectMapper;
-
- @Override
- public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
- ServerHttpRequest request = exchange.getRequest();
- ServerHttpResponse response = exchange.getResponse();
-
- if (response.isCommitted()) {
- return Mono.error(ex);
- }
-
- response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
- if (ex instanceof ResponseStatusException) {
- response.setStatusCode(((ResponseStatusException) ex).getStatus());
- }
-
- return response.writeWith(Mono.fromSupplier(() -> {
- DataBufferFactory bufferFactory = response.bufferFactory();
- try {
- int status = 500;
- if (response.getStatusCode() != null) {
- status = response.getStatusCode().value();
- }
- Map<String, Object> result = ResponseProvider.response(status, this.buildMessage(request, ex));
- return bufferFactory.wrap(objectMapper.writeValueAsBytes(result));
- } catch (JsonProcessingException e) {
- return bufferFactory.wrap(new byte[0]);
- }
- }));
- }
-
-
- /**
- * 鏋勫缓寮傚父淇℃伅
- */
- private String buildMessage(ServerHttpRequest request, Throwable ex) {
- String uri = request.getURI().toString();
- if (uri.endsWith("doc.html")) {
- return "[Swagger鑱氬悎缃戝叧] 宸茶縼绉昏嚦 [blade-swagger] 鏈嶅姟锛岃寮�鍚� [blade-swagger] 鏈嶅姟骞惰闂� [http://127.0.0.1:18000/doc.html]";
- }
- StringBuilder message = new StringBuilder("Failed to handle request [");
- message.append(request.getMethodValue());
- message.append(" ");
- message.append(request.getURI());
- message.append("]");
- if (ex != null) {
- message.append(": ");
- message.append(ex.getMessage());
- }
- return message.toString();
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/props/AuthProperties.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/props/AuthProperties.java
deleted file mode 100644
index d76eb7d..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/props/AuthProperties.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.gateway.props;
-
-import lombok.Data;
-import org.springblade.gateway.provider.AuthSecure;
-import org.springblade.gateway.provider.BasicSecure;
-import org.springblade.gateway.provider.SignSecure;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鏉冮檺杩囨护
- *
- * @author Chill
- */
-@Data
-@RefreshScope
-@ConfigurationProperties("blade.secure")
-public class AuthProperties {
-
- /**
- * 鏀捐API闆嗗悎
- */
- private final List<String> skipUrl = new ArrayList<>();
-
- /**
- * 鑷畾涔夋巿鏉冮厤缃�
- */
- private final List<AuthSecure> auth = new ArrayList<>();
-
- /**
- * 鍩虹璁よ瘉閰嶇疆
- */
- private final List<BasicSecure> basic = new ArrayList<>();
-
- /**
- * 绛惧悕璁よ瘉閰嶇疆
- */
- private final List<SignSecure> sign = new ArrayList<>();
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java
deleted file mode 100644
index 9a66d4a..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import org.springblade.core.launch.constant.TokenConstant;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 閴存潈閰嶇疆
- *
- * @author Chill
- */
-public class AuthProvider {
-
- public static final String AUTH_KEY = TokenConstant.HEADER;
- private static final List<String> DEFAULT_SKIP_URL = new ArrayList<>();
-
- static {
- DEFAULT_SKIP_URL.add("/example");
- DEFAULT_SKIP_URL.add("/oauth/token/**");
- DEFAULT_SKIP_URL.add("/oauth/captcha/**");
- DEFAULT_SKIP_URL.add("/oauth/clear-cache/**");
- DEFAULT_SKIP_URL.add("/oauth/user-info");
- DEFAULT_SKIP_URL.add("/oauth/render/**");
- DEFAULT_SKIP_URL.add("/oauth/callback/**");
- DEFAULT_SKIP_URL.add("/oauth/revoke/**");
- DEFAULT_SKIP_URL.add("/oauth/refresh/**");
- DEFAULT_SKIP_URL.add("/token/**");
- DEFAULT_SKIP_URL.add("/actuator/**");
- DEFAULT_SKIP_URL.add("/v2/api-docs/**");
- DEFAULT_SKIP_URL.add("/auth/**");
- DEFAULT_SKIP_URL.add("/log/**");
- DEFAULT_SKIP_URL.add("/menu/routes");
- DEFAULT_SKIP_URL.add("/menu/auth-routes");
- DEFAULT_SKIP_URL.add("/menu/top-menu");
- DEFAULT_SKIP_URL.add("/tenant/info");
- DEFAULT_SKIP_URL.add("/process/Autowired-view");
- DEFAULT_SKIP_URL.add("/process/diagram-view");
- DEFAULT_SKIP_URL.add("/manager/check-upload");
- DEFAULT_SKIP_URL.add("/error/**");
- DEFAULT_SKIP_URL.add("/assets/**");
- }
-
- /**
- * 榛樿鏃犻渶閴存潈鐨凙PI
- */
- public static List<String> getDefaultSkipUrl() {
- return DEFAULT_SKIP_URL;
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthSecure.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthSecure.java
deleted file mode 100644
index 2e69987..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/AuthSecure.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 鑷畾涔夋巿鏉冭鍒�
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class AuthSecure {
- /**
- * 璇锋眰璺緞
- */
- private String pattern;
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/BasicSecure.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/BasicSecure.java
deleted file mode 100644
index bbd62c2..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/BasicSecure.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 鍩虹鎺堟潈瑙勫垯
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class BasicSecure {
- /**
- * 璇锋眰璺緞
- */
- private String pattern;
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/RequestProvider.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/RequestProvider.java
deleted file mode 100644
index 95c68dc..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/RequestProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import java.net.URI;
-import java.util.LinkedHashSet;
-
-/**
- * RequestProvider
- *
- * @author Chill
- */
-public class RequestProvider {
-
- /**
- * 鑾峰彇鍘熷url
- *
- * @param exchange
- * @return
- */
- public static String getOriginalRequestUrl(ServerWebExchange exchange) {
- ServerHttpRequest request = exchange.getRequest();
- LinkedHashSet<URI> uris = exchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
- URI requestUri = uris.stream().findFirst().orElse(request.getURI());
- MultiValueMap<String, String> queryParams = request.getQueryParams();
- return UriComponentsBuilder.fromPath(requestUri.getRawPath()).queryParams(queryParams).build().toUriString();
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/ResponseProvider.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/ResponseProvider.java
deleted file mode 100644
index 579cf61..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/ResponseProvider.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 璇锋眰鍝嶅簲杩斿洖
- *
- * @author Chill
- */
-public class ResponseProvider {
-
- /**
- * 鎴愬姛
- *
- * @param message 淇℃伅
- * @return
- */
- public static Map<String, Object> success(String message) {
- return response(200, message);
- }
-
- /**
- * 澶辫触
- *
- * @param message 淇℃伅
- * @return
- */
- public static Map<String, Object> fail(String message) {
- return response(400, message);
- }
-
- /**
- * 鏈巿鏉�
- *
- * @param message 淇℃伅
- * @return
- */
- public static Map<String, Object> unAuth(String message) {
- return response(401, message);
- }
-
- /**
- * 鏈嶅姟鍣ㄥ紓甯�
- *
- * @param message 淇℃伅
- * @return
- */
- public static Map<String, Object> error(String message) {
- return response(500, message);
- }
-
- /**
- * 鏋勫缓杩斿洖鐨凧SON鏁版嵁鏍煎紡
- *
- * @param status 鐘舵�佺爜
- * @param message 淇℃伅
- * @return
- */
- public static Map<String, Object> response(int status, String message) {
- Map<String, Object> map = new HashMap<>(16);
- map.put("code", status);
- map.put("msg", message);
- map.put("data", null);
- return map;
- }
-
-}
diff --git a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/SignSecure.java b/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/SignSecure.java
deleted file mode 100644
index 14b2ff9..0000000
--- a/Source/BladeX/blade-gateway/src/main/java/org/springblade/gateway/provider/SignSecure.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.gateway.provider;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 绛惧悕鎺堟潈瑙勫垯
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class SignSecure {
- /**
- * 璇锋眰璺緞
- */
- private String pattern;
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/pom.xml b/Source/BladeX/blade-ops-api/blade-flow-api/pom.xml
deleted file mode 100644
index 25060e7..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-flow-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
-
-
-</project>
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/constant/ProcessConstant.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/constant/ProcessConstant.java
deleted file mode 100644
index 8657f7b..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/constant/ProcessConstant.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.flow.core.constant;
-
-/**
- * 娴佺▼甯搁噺.
- *
- * @author Chill
- */
-public interface ProcessConstant {
-
- /**
- * 璇峰亣娴佺▼鏍囪瘑
- */
- String LEAVE_KEY = "Leave";
-
- /**
- * 鎶ラ攢娴佺▼鏍囪瘑
- */
- String EXPENSE_KEY = "Expense";
-
- /**
- * 鍚屾剰鏍囪瘑
- */
- String PASS_KEY = "pass";
-
- /**
- * 鍚屾剰浠e彿
- */
- String PASS_ALIAS = "ok";
-
- /**
- * 鍚屾剰榛樿鎵瑰
- */
- String PASS_COMMENT = "鍚屾剰";
-
- /**
- * 椹冲洖榛樿鎵瑰
- */
- String NOT_PASS_COMMENT = "椹冲洖";
-
- /**
- * 鍒涘缓浜哄彉閲忓悕
- */
- String TASK_VARIABLE_CREATE_USER = "createUser";
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/BladeFlow.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/BladeFlow.java
deleted file mode 100644
index 0492844..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/BladeFlow.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * 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.flow.core.entity;
-
-import lombok.Data;
-import org.springblade.flow.core.constant.ProcessConstant;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * 宸ヤ綔娴侀�氱敤瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-public class BladeFlow implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * 浠诲姟缂栧彿
- */
- private String taskId;
- /**
- * 浠诲姟鍚嶇О
- */
- private String taskName;
- /**
- * 浠诲姟瀹氫箟Key
- */
- private String taskDefinitionKey;
- /**
- * 浠诲姟鎵ц浜虹紪鍙�
- */
- private String assignee;
- /**
- * 浠诲姟鎵ц浜哄悕绉�
- */
- private String assigneeName;
- /**
- * 娴佺▼鍒嗙被
- */
- private String category;
- /**
- * 娴佺▼鍒嗙被鍚�
- */
- private String categoryName;
- /**
- * 鍒涘缓鏃堕棿
- */
- private Date createTime;
- /**
- * 缁撴潫鏃堕棿
- */
- private Date endTime;
- /**
- * 绛炬敹鏃堕棿
- */
- private Date claimTime;
- /**
- * 鍘嗗彶浠诲姟缁撴潫鏃堕棿
- */
- private Date historyTaskEndTime;
- /**
- * 鎵цID
- */
- private String executionId;
- /**
- * 娴佺▼瀹炰緥ID
- */
- private String processInstanceId;
- /**
- * 娴佺▼ID
- */
- private String processDefinitionId;
- /**
- * 娴佺▼鏍囪瘑
- */
- private String processDefinitionKey;
- /**
- * 娴佺▼鍚�
- */
- private String processDefinitionName;
- /**
- * 娴佺▼鐗堟湰
- */
- private int processDefinitionVersion;
- /**
- * 娴佺▼璇存槑
- */
- private String processDefinitionDesc;
- /**
- * 娴佺▼绠�鍥惧悕
- */
- private String processDefinitionDiagramResName;
- /**
- * 娴佺▼閲嶅懡鍚�
- */
- private String processDefinitionResName;
- /**
- * 鍘嗗彶浠诲姟娴佺▼瀹炰緥ID 鏌ョ湅娴佺▼鍥句細鐢ㄥ埌
- */
- private String historyProcessInstanceId;
- /**
- * 娴佺▼瀹炰緥鏄惁缁撴潫
- */
- private String processIsFinished;
- /**
- * 鍘嗗彶娲诲姩ID
- */
- private String historyActivityId;
- /**
- * 鍘嗗彶娲诲姩娴佺▼
- */
- private String historyActivityName;
- /**
- * 鍘嗗彶娲诲姩鑰楁椂
- */
- private String historyActivityDurationTime;
- /**
- * 涓氬姟缁戝畾Table
- */
- private String businessTable;
- /**
- * 涓氬姟缁戝畾ID
- */
- private String businessId;
- /**
- * 浠诲姟鐘舵��
- */
- private String status;
- /**
- * 浠诲姟鎰忚
- */
- private String comment;
- /**
- * 鏄惁閫氳繃
- */
- private boolean isPass;
- /**
- * 鏄惁閫氳繃浠e彿
- */
- private String flag;
- /**
- * 寮�濮嬫煡璇㈡棩鏈�
- */
- private Date beginDate;
- /**
- * 缁撴潫鏌ヨ鏃ユ湡
- */
- private Date endDate;
- /**
- * 娴佺▼鍙傛暟
- */
- private Map<String, Object> variables;
-
- /**
- * 鑾峰彇鏄惁閫氳繃
- */
- public boolean isPass() {
- return ProcessConstant.PASS_ALIAS.equals(flag) || ProcessConstant.PASS_COMMENT.equals(comment);
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/FlowEntity.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/FlowEntity.java
deleted file mode 100644
index bedc62e..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/entity/FlowEntity.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.flow.core.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * FlowEntity
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class FlowEntity extends BaseEntity {
-
- @TableField(exist = false)
- private BladeFlow flow;
-
- public BladeFlow getFlow() {
- if (flow == null) {
- flow = new BladeFlow();
- }
- return flow;
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/enums/FlowModeEnum.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/enums/FlowModeEnum.java
deleted file mode 100644
index c5ab5c7..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/enums/FlowModeEnum.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.flow.core.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 娴佺▼绫诲瀷鏋氫妇
- *
- * @author Chill
- */
-@Getter
-@AllArgsConstructor
-public enum FlowModeEnum {
-
- /**
- * 閫氱敤娴佺▼
- */
- COMMON("common", 1),
-
- /**
- * 瀹氬埗娴佺▼
- */
- CUSTOM("custom", 2),
- ;
-
- final String name;
- final int mode;
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClient.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClient.java
deleted file mode 100644
index 03d86bf..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClient.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.flow.core.feign;
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.Map;
-
-/**
- * 宸ヤ綔娴佽繙绋嬭皟鐢ㄦ帴鍙�.
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_FLOW_NAME,
- fallback = IFlowClientFallback.class
-)
-public interface IFlowClient {
-
- String API_PREFIX = "/client";
- String START_PROCESS_INSTANCE_BY_ID = API_PREFIX + "/start-process-instance-by-id";
- String START_PROCESS_INSTANCE_BY_KEY = API_PREFIX + "/start-process-instance-by-key";
- String COMPLETE_TASK = API_PREFIX + "/complete-task";
- String TASK_VARIABLE = API_PREFIX + "/task-variable";
- String TASK_VARIABLES = API_PREFIX + "/task-variables";
-
- /**
- * 寮�鍚祦绋�
- *
- * @param processDefinitionId 娴佺▼id
- * @param businessKey 涓氬姟key
- * @param variables 鍙傛暟
- * @return BladeFlow
- */
- @PostMapping(START_PROCESS_INSTANCE_BY_ID)
- R<BladeFlow> startProcessInstanceById(@RequestParam("processDefinitionId") String processDefinitionId, @RequestParam("businessKey") String businessKey, @RequestBody Map<String, Object> variables);
-
- /**
- * 寮�鍚祦绋�
- *
- * @param processDefinitionKey 娴佺▼鏍囪瘑
- * @param businessKey 涓氬姟key
- * @param variables 鍙傛暟
- * @return BladeFlow
- */
- @PostMapping(START_PROCESS_INSTANCE_BY_KEY)
- R<BladeFlow> startProcessInstanceByKey(@RequestParam("processDefinitionKey") String processDefinitionKey, @RequestParam("businessKey") String businessKey, @RequestBody Map<String, Object> variables);
-
- /**
- * 瀹屾垚浠诲姟
- *
- * @param taskId 浠诲姟id
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param comment 璇勮
- * @param variables 鍙傛暟
- * @return R
- */
- @PostMapping(COMPLETE_TASK)
- R completeTask(@RequestParam("taskId") String taskId, @RequestParam("processInstanceId") String processInstanceId, @RequestParam("comment") String comment, @RequestBody Map<String, Object> variables);
-
- /**
- * 鑾峰彇娴佺▼鍙橀噺
- *
- * @param taskId 浠诲姟id
- * @param variableName 鍙橀噺鍚�
- * @return R
- */
- @GetMapping(TASK_VARIABLE)
- R<Object> taskVariable(@RequestParam("taskId") String taskId, @RequestParam("variableName") String variableName);
-
- /**
- * 鑾峰彇娴佺▼鍙橀噺闆嗗悎
- *
- * @param taskId 浠诲姟id
- * @return R
- */
- @GetMapping(TASK_VARIABLES)
- R<Map<String, Object>> taskVariables(@RequestParam("taskId") String taskId);
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClientFallback.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClientFallback.java
deleted file mode 100644
index 2404ef9..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/feign/IFlowClientFallback.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.flow.core.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * 娴佺▼杩滅▼璋冪敤澶辫触澶勭悊绫�
- *
- * @author Chill
- */
-@Component
-public class IFlowClientFallback implements IFlowClient {
-
- @Override
- public R<BladeFlow> startProcessInstanceById(String processDefinitionId, String businessKey, Map<String, Object> variables) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R<BladeFlow> startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String, Object> variables) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R completeTask(String taskId, String processInstanceId, String comment, Map<String, Object> variables) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R<Object> taskVariable(String taskId, String variableName) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R<Map<String, Object>> taskVariables(String taskId) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/FlowUtil.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/FlowUtil.java
deleted file mode 100644
index 5323a60..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/FlowUtil.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.flow.core.utils;
-
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.core.constant.ProcessConstant;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 宸ヤ綔娴佸伐鍏风被
- *
- * @author Chill
- */
-public class FlowUtil {
-
- /**
- * 瀹氫箟娴佺▼key瀵瑰簲鐨勮〃鍚�
- */
- private final static Map<String, String> BUSINESS_TABLE = new HashMap<>();
-
- static {
- BUSINESS_TABLE.put(ProcessConstant.LEAVE_KEY, "pl_wf_process_leave");
- }
-
- /**
- * 閫氳繃娴佺▼key鑾峰彇涓氬姟琛ㄥ悕
- *
- * @param key 娴佺▼key
- */
- public static String getBusinessTable(String key) {
- String businessTable = BUSINESS_TABLE.get(key);
- if (Func.isEmpty(businessTable)) {
- throw new RuntimeException("娴佺▼鍚姩澶辫触,鏈壘鍒扮浉鍏充笟鍔¤〃");
- }
- return businessTable;
- }
-
- /**
- * 鑾峰彇涓氬姟鏍囪瘑
- *
- * @param businessTable 涓氬姟琛�
- * @param businessId 涓氬姟琛ㄤ富閿�
- * @return businessKey
- */
- public static String getBusinessKey(String businessTable, String businessId) {
- return StringUtil.format("{}:{}", businessTable, businessId);
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/TaskUtil.java b/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/TaskUtil.java
deleted file mode 100644
index 3366224..0000000
--- a/Source/BladeX/blade-ops-api/blade-flow-api/src/main/java/org/springblade/flow/core/utils/TaskUtil.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.flow.core.utils;
-
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-
-import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
-
-/**
- * 宸ヤ綔娴佷换鍔″伐鍏风被
- *
- * @author Chill
- */
-public class TaskUtil {
-
- /**
- * 鑾峰彇浠诲姟鐢ㄦ埛鏍煎紡
- *
- * @return taskUser
- */
- public static String getTaskUser() {
- return StringUtil.format("{}{}", TASK_USR_PREFIX, AuthUtil.getUserId());
- }
-
- /**
- * 鑾峰彇浠诲姟鐢ㄦ埛鏍煎紡
- *
- * @param userId 鐢ㄦ埛id
- * @return taskUser
- */
- public static String getTaskUser(String userId) {
- return StringUtil.format("{}{}", TASK_USR_PREFIX, userId);
- }
-
-
- /**
- * 鑾峰彇鐢ㄦ埛涓婚敭
- *
- * @param taskUser 浠诲姟鐢ㄦ埛
- * @return userId
- */
- public static Long getUserId(String taskUser) {
- return Func.toLong(StringUtil.removePrefix(taskUser, TASK_USR_PREFIX));
- }
-
- /**
- * 鑾峰彇鐢ㄦ埛缁勬牸寮�
- *
- * @return candidateGroup
- */
- public static String getCandidateGroup() {
- return AuthUtil.getUserRole();
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/pom.xml b/Source/BladeX/blade-ops-api/blade-resource-api/pom.xml
deleted file mode 100644
index 31db0ab..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-Autowired-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-sms</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-tenant</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Attach.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Attach.java
deleted file mode 100644
index 6cb3657..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Attach.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.Autowired.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-/**
- * 闄勪欢琛ㄥ疄浣撶被
- *
- * @author Chill
- */
-@Data
-@TableName("pl_attach")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Attach瀵硅薄", description = "闄勪欢琛�")
-public class Attach extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 闄勪欢鍦板潃
- */
- @ApiModelProperty(value = "闄勪欢鍦板潃")
- private String link;
- /**
- * 闄勪欢鍩熷悕
- */
- @ApiModelProperty(value = "闄勪欢鍩熷悕")
- private String domainUrl;
- /**
- * 闄勪欢鍚嶇О
- */
- @ApiModelProperty(value = "闄勪欢鍚嶇О")
- private String name;
- /**
- * 闄勪欢鍘熷悕
- */
- @ApiModelProperty(value = "闄勪欢鍘熷悕")
- private String originalName;
- /**
- * 闄勪欢鎷撳睍鍚�
- */
- @ApiModelProperty(value = "闄勪欢鎷撳睍鍚�")
- private String extension;
- /**
- * 闄勪欢澶у皬
- */
- @ApiModelProperty(value = "闄勪欢澶у皬")
- private Long attachSize;
-
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Oss.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Oss.java
deleted file mode 100644
index f390e56..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Oss.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.Autowired.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_sys_oss")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Oss瀵硅薄", description = "Oss瀵硅薄")
-public class Oss extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
- /**
- * 鎵�灞炲垎绫�
- */
- @ApiModelProperty(value = "鎵�灞炲垎绫�")
- private Integer category;
-
- /**
- * 璧勬簮缂栧彿
- */
- @ApiModelProperty(value = "璧勬簮缂栧彿")
- private String ossCode;
-
- /**
- * oss鍦板潃
- */
- @ApiModelProperty(value = "璧勬簮鍦板潃")
- private String endpoint;
- /**
- * accessKey
- */
- @ApiModelProperty(value = "accessKey")
- private String accessKey;
- /**
- * secretKey
- */
- @ApiModelProperty(value = "secretKey")
- private String secretKey;
- /**
- * 绌洪棿鍚�
- */
- @ApiModelProperty(value = "绌洪棿鍚�")
- private String bucketName;
- /**
- * 搴旂敤ID TencentCOS闇�瑕�
- */
- @ApiModelProperty(value = "搴旂敤ID")
- private String appId;
- /**
- * 鍦板煙绠�绉� TencentCOS闇�瑕�
- */
- @ApiModelProperty(value = "鍦板煙绠�绉�")
- private String region;
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Sms.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Sms.java
deleted file mode 100644
index 3d8008c..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Sms.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.Autowired.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-/**
- * 鐭俊閰嶇疆琛ㄥ疄浣撶被
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_sys_sms")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Sms瀵硅薄", description = "鐭俊閰嶇疆琛�")
-public class Sms extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 璧勬簮缂栧彿
- */
- @ApiModelProperty(value = "璧勬簮缂栧彿")
- private String smsCode;
-
- /**
- * 妯℃澘ID
- */
- @ApiModelProperty(value = "妯℃澘ID")
- private String templateId;
- /**
- * 鍒嗙被
- */
- @ApiModelProperty(value = "鍒嗙被")
- private Integer category;
- /**
- * accessKey
- */
- @ApiModelProperty(value = "accessKey")
- private String accessKey;
- /**
- * secretKey
- */
- @ApiModelProperty(value = "secretKey")
- private String secretKey;
- /**
- * regionId
- */
- @ApiModelProperty(value = "regionId")
- private String regionId;
- /**
- * 鐭俊绛惧悕
- */
- @ApiModelProperty(value = "鐭俊绛惧悕")
- private String signName;
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/enums/SmsCodeEnum.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/enums/SmsCodeEnum.java
deleted file mode 100644
index d04f7ab..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/enums/SmsCodeEnum.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.Autowired.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import org.springblade.core.tool.utils.StringPool;
-
-/**
- * Sms璧勬簮缂栫爜鏋氫妇绫�
- *
- * @author Chill
- * @apiNote 璇ユ灇涓剧被瀵瑰簲鐭俊閰嶇疆妯″潡鐨勮祫婧愮紪鐮侊紝鍙牴鎹笟鍔¢渶姹傝嚜琛屾嫇灞�
- */
-@Getter
-@AllArgsConstructor
-public enum SmsCodeEnum {
-
- /**
- * 榛樿缂栧彿
- */
- DEFAULT(StringPool.EMPTY, 1),
-
- /**
- * 楠岃瘉鐮佺紪鍙�
- */
- VALIDATE("validate", 2),
-
- /**
- * 閫氱煡鍏憡缂栧彿
- */
- NOTICE("notice", 3),
-
- /**
- * 涓嬪崟閫氱煡缂栧彿
- */
- ORDER("order", 4),
-
- /**
- * 浼氳閫氱煡缂栧彿
- */
- MEETING("meeting", 5),
- ;
-
- final String name;
- final int category;
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClient.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClient.java
deleted file mode 100644
index d251263..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClient.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.resource.feign;
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.sms.model.SmsResponse;
-import org.springblade.core.tool.api.R;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-/**
- * ISmsClient
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_RESOURCE_NAME,
- fallback = ISmsClientFallback.class
-)
-public interface ISmsClient {
- String API_PREFIX = "/client";
- String SEND_MESSAGE = API_PREFIX + "/send-message";
- String SEND_VALIDATE = API_PREFIX + "/send-validate";
- String VALIDATE_MESSAGE = API_PREFIX + "/validate-message";
-
- /**
- * 閫氱敤鐭俊鍙戦��
- *
- * @param code 璧勬簮缂栧彿
- * @param params 妯℃澘鍙傛暟
- * @param phones 鎵嬫満鍙烽泦鍚�
- * @return R
- */
- @PostMapping(SEND_MESSAGE)
- R<SmsResponse> sendMessage(@RequestParam("code") String code, @RequestParam("params") String params, @RequestParam("phones") String phones);
-
- /**
- * 鐭俊楠岃瘉鐮佸彂閫�
- *
- * @param code 璧勬簮缂栧彿
- * @param phone 鎵嬫満鍙�
- * @return R
- */
- @PostMapping(SEND_VALIDATE)
- R sendValidate(@RequestParam("code") String code, @RequestParam("phone") String phone);
-
- /**
- * 鏍¢獙鐭俊
- *
- * @param code 璧勬簮缂栧彿
- * @param id 鏍¢獙id
- * @param value 鏍¢獙鍊�
- * @param phone 鎵嬫満鍙�
- * @return R
- */
- @PostMapping(VALIDATE_MESSAGE)
- R validateMessage(@RequestParam("code") String code, @RequestParam("id") String id, @RequestParam("value") String value, @RequestParam("phone") String phone);
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClientFallback.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClientFallback.java
deleted file mode 100644
index f139fea..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/ISmsClientFallback.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.resource.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springframework.stereotype.Component;
-
-/**
- * 娴佺▼杩滅▼璋冪敤澶辫触澶勭悊绫�
- *
- * @author Chill
- */
-@Component
-public class ISmsClientFallback implements ISmsClient {
- @Override
- public R sendMessage(String code, String params, String phones) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R sendValidate(String code, String phone) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
- @Override
- public R validateMessage(String code, String id, String value, String phone) {
- return R.fail("杩滅▼璋冪敤澶辫触");
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/utils/SmsUtil.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/utils/SmsUtil.java
deleted file mode 100644
index 71753dd..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/utils/SmsUtil.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.Autowired.utils;
-
-import org.springblade.core.sms.model.SmsCode;
-import org.springblade.core.sms.model.SmsResponse;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.RandomType;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.resource.feign.ISmsClient;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 鐭俊鏈嶅姟宸ュ叿绫�
- *
- * @author Chill
- */
-public class SmsUtil {
-
- public static final String PARAM_KEY = "code";
- public static final String SEND_SUCCESS = "鐭俊鍙戦�佹垚鍔�";
- public static final String SEND_FAIL = "鐭俊鍙戦�佸け璐�";
- public static final String VALIDATE_SUCCESS = "鐭俊鏍¢獙鎴愬姛";
- public static final String VALIDATE_FAIL = "鐭俊鏍¢獙澶辫触";
-
- private static ISmsClient smsClient;
-
- /**
- * 鑾峰彇鐭俊鏈嶅姟鏋勫缓绫�
- *
- * @return SmsBuilder
- */
- public static ISmsClient getSmsClient() {
- if (smsClient == null) {
- smsClient = SpringUtil.getBean(ISmsClient.class);
- }
- return smsClient;
- }
-
- /**
- * 鑾峰彇鐭俊楠岃瘉鐮佸弬鏁�
- *
- * @return 楠岃瘉鐮佸弬鏁�
- */
- public static Map<String, String> getValidateParams() {
- Map<String, String> params = new HashMap<>(1);
- params.put(PARAM_KEY, StringUtil.random(6, RandomType.INT));
- return params;
- }
-
- /**
- * 鍙戦�佺煭淇�
- *
- * @param code 璧勬簮缂栧彿
- * @param params 妯℃澘鍙傛暟
- * @param phones 鎵嬫満鍙烽泦鍚�
- * @return 鍙戦�佺粨鏋�
- */
- public static SmsResponse sendMessage(String code, Map<String, String> params, String phones) {
- R<SmsResponse> result = getSmsClient().sendMessage(code, JsonUtil.toJson(params), phones);
- return result.getData();
- }
-
- /**
- * 鍙戦�侀獙璇佺爜
- *
- * @param code 璧勬簮缂栧彿
- * @param phone 鎵嬫満鍙�
- * @return 鍙戦�佺粨鏋�
- */
- public static SmsCode sendValidate(String code, String phone) {
- SmsCode smsCode = new SmsCode();
- R result = getSmsClient().sendValidate(code, phone);
- if (result.isSuccess()) {
- smsCode = JsonUtil.parse(JsonUtil.toJson(result.getData()), SmsCode.class);
- } else {
- smsCode.setSuccess(Boolean.FALSE);
- }
- return smsCode;
- }
-
- /**
- * 鏍¢獙鐭俊
- *
- * @param code 璧勬簮缂栧彿
- * @param id 鏍¢獙id
- * @param value 鏍¢獙鍊�
- * @return 鍙戦�佺粨鏋�
- */
- public static boolean validateMessage(String code, String id, String value, String phone) {
- R result = getSmsClient().validateMessage(code, id, value, phone);
- return result.isSuccess();
- }
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/AttachVO.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/AttachVO.java
deleted file mode 100644
index 2c9dd80..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/AttachVO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.Autowired.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.Autowired.entity.Attach;
-
-/**
- * 闄勪欢琛ㄨ鍥惧疄浣撶被
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "AttachVO瀵硅薄", description = "闄勪欢琛�")
-public class AttachVO extends Attach {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/OssVO.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/OssVO.java
deleted file mode 100644
index a05d56e..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/OssVO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.springblade.Autowired.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.Autowired.entity.Oss;
-
-/**
- * OssVO
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "OssVO瀵硅薄", description = "瀵硅薄瀛樺偍琛�")
-public class OssVO extends Oss {
- private static final long serialVersionUID = 1L;
-
- /**
- * 鍒嗙被鍚�
- */
- private String categoryName;
-
- /**
- * 鏄惁鍚敤
- */
- private String statusName;
-
-}
diff --git a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/SmsVO.java b/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/SmsVO.java
deleted file mode 100644
index 89dbc1f..0000000
--- a/Source/BladeX/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/vo/SmsVO.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.Autowired.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.Autowired.entity.Sms;
-
-/**
- * 鐭俊閰嶇疆琛ㄨ鍥惧疄浣撶被
- *
- * @author BladeX
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "SmsVO瀵硅薄", description = "鐭俊閰嶇疆琛�")
-public class SmsVO extends Sms {
- private static final long serialVersionUID = 1L;
-
- /**
- * 鍒嗙被鍚�
- */
- private String categoryName;
-
- /**
- * 鏄惁鍚敤
- */
- private String statusName;
-
-}
diff --git a/Source/BladeX/blade-ops-api/pom.xml b/Source/BladeX/blade-ops-api/pom.xml
deleted file mode 100644
index 5a98474..0000000
--- a/Source/BladeX/blade-ops-api/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-ops-api</artifactId>
- <name>${project.artifactId}</name>
- <version>3.0.1.RELEASE</version>
- <packaging>pom</packaging>
- <description>BladeX 寰湇鍔PI闆嗗悎</description>
-
- <modules>
- <module>blade-flow-api</module>
- <module>blade-resource-api</module>
- </modules>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-mybatis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-openfeign</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-auto</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- <finalName>${project.name}</finalName>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-admin/pom.xml b/Source/BladeX/blade-ops/blade-admin/pom.xml
deleted file mode 100644
index cf68645..0000000
--- a/Source/BladeX/blade-ops/blade-admin/pom.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-admin</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-undertow</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-prometheus</artifactId>
- </dependency>
- <!-- Nacos -->
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.alibaba.nacos</groupId>
- <artifactId>nacos-client</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.alibaba.nacos</groupId>
- <artifactId>nacos-client</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.alibaba.nacos</groupId>
- <artifactId>nacos-client</artifactId>
- </dependency>
- <!--Admin-Server-->
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-server</artifactId>
- </dependency>
- <!--Security-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- </dependency>
- <!--<dependency>
- <groupId>org.springframework.security.oauth.boot</groupId>
- <artifactId>spring-security-oauth2-autoconfigure</artifactId>
- </dependency>-->
- <!--Taobao-Sdk-->
- <dependency>
- <groupId>com.taobao</groupId>
- <artifactId>taobao-sdk</artifactId>
- <version>20201116</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/AdminApplication.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/AdminApplication.java
deleted file mode 100644
index c219dc8..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/AdminApplication.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.admin;
-
-import de.codecentric.boot.admin.server.config.EnableAdminServer;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-/**
- * admin鍚姩鍣�
- *
- * @author Chill
- */
-@EnableAdminServer
-@EnableDiscoveryClient
-@SpringBootApplication
-public class AdminApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_ADMIN_NAME, AdminApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/AdminConfiguration.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/AdminConfiguration.java
deleted file mode 100644
index 2f632b4..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/AdminConfiguration.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.admin.config;
-
-import org.springblade.admin.dingtalk.MonitorProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 鍚姩鍣�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@EnableConfigurationProperties(MonitorProperties.class)
-public class AdminConfiguration {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/DingTalkConfiguration.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/DingTalkConfiguration.java
deleted file mode 100644
index d726cf9..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/DingTalkConfiguration.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.config;
-
-import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
-import org.springblade.admin.dingtalk.DingTalkNotifier;
-import org.springblade.admin.dingtalk.DingTalkService;
-import org.springblade.admin.dingtalk.MonitorProperties;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.web.reactive.function.client.WebClient;
-
-/**
- * 閽夐拤鑷姩閰嶇疆
- *
- * @author L.cm
- */
-@Configuration(proxyBeanMethods = false)
-@ConditionalOnProperty(value = "monitor.ding-talk.enabled", havingValue = "true")
-public class DingTalkConfiguration {
-
- @Bean
- public DingTalkService dingTalkService(MonitorProperties properties,
- WebClient.Builder builder) {
- return new DingTalkService(properties, builder.build());
- }
-
- @Bean
- public DingTalkNotifier dingTalkNotifier(MonitorProperties properties,
- DingTalkService dingTalkService,
- InstanceRepository repository,
- Environment environment) {
- return new DingTalkNotifier(dingTalkService, properties, environment, repository);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/SecurityConfiguration.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/SecurityConfiguration.java
deleted file mode 100644
index be9708c..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/config/SecurityConfiguration.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.config;
-
-import de.codecentric.boot.admin.server.config.AdminServerProperties;
-import org.springblade.admin.security.InternalAuthorizationManager;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
-import org.springframework.security.config.web.server.ServerHttpSecurity;
-import org.springframework.security.web.server.SecurityWebFilterChain;
-import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler;
-
-import java.net.URI;
-
-/**
- * 鐩戞帶瀹夊叏閰嶇疆
- *
- * @author L.cm
- */
-@EnableWebFluxSecurity
-@Configuration(proxyBeanMethods = false)
-@EnableConfigurationProperties(AdminServerProperties.class)
-public class SecurityConfiguration {
- private final String contextPath;
-
- public SecurityConfiguration(AdminServerProperties adminServerProperties) {
- this.contextPath = adminServerProperties.getContextPath();
- }
-
- @Bean
- public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
- // @formatter:off
- RedirectServerAuthenticationSuccessHandler successHandler = new RedirectServerAuthenticationSuccessHandler();
- successHandler.setLocation(URI.create(contextPath + "/"));
- return http.headers().frameOptions().disable().and()
- .authorizeExchange()
- // 鏀惧紑闈欐�佹枃浠跺拰鐧婚檰
- .pathMatchers(
- contextPath + "/assets/**"
- , contextPath + "/login"
- , contextPath + "/v1/agent/**"
- , contextPath + "/v1/catalog/**"
- , contextPath + "/v1/health/**"
- ).permitAll()
- // 鍐呯綉鍙闂� actuator
- .pathMatchers(contextPath + "/actuator", contextPath + "/actuator/**").access(new InternalAuthorizationManager())
- .anyExchange().authenticated().and()
- .formLogin().loginPage(contextPath + "/login")
- .authenticationSuccessHandler(successHandler).and()
- .logout().logoutUrl(contextPath + "/logout").and()
- .httpBasic().disable()
- .csrf().disable()
- .build();
- // @formatter:on
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkNotifier.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkNotifier.java
deleted file mode 100644
index 8b66a1c..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkNotifier.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.dingtalk;
-
-import de.codecentric.boot.admin.server.domain.entities.Instance;
-import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
-import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
-import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent;
-import de.codecentric.boot.admin.server.domain.values.Registration;
-import de.codecentric.boot.admin.server.domain.values.StatusInfo;
-import de.codecentric.boot.admin.server.notify.AbstractEventNotifier;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.env.Environment;
-import org.springframework.lang.NonNull;
-import reactor.core.publisher.Mono;
-
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-
-/**
- * 鏈嶅姟涓婁笅绾垮憡璀�
- *
- * <p>
- * 娉ㄦ剰锛欰bstractStatusChangeNotifier 杩欎釜浜嬩欢鏈夋瘺鐥�
- * </p>
- *
- * @author L.cm
- */
-@Slf4j
-public class DingTalkNotifier extends AbstractEventNotifier {
- private final DingTalkService dingTalkService;
- private final MonitorProperties properties;
- private final Environment environment;
- public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
- public DingTalkNotifier(DingTalkService dingTalkService, MonitorProperties properties,
- Environment environment, InstanceRepository repository) {
- super(repository);
- this.dingTalkService = dingTalkService;
- this.properties = properties;
- this.environment = environment;
- }
-
- @NonNull
- @Override
- protected Mono<Void> doNotify(@NonNull InstanceEvent event, @NonNull Instance instance) {
- if (event instanceof InstanceStatusChangedEvent) {
- // 鏋勯�犺姹傜粨鏋�
- return createAndPushMsg(event, instance);
- }
- return Mono.empty();
- }
-
- private Mono<Void> createAndPushMsg(InstanceEvent event, Instance instance) {
- Registration registration = instance.getRegistration();
- // 鏈嶅姟鍚�
- String appName = registration.getName();
- // 鏈嶅姟鍦板潃
- String serviceUrl = registration.getServiceUrl();
- StatusInfo status = instance.getStatusInfo();
- // 鏃堕棿
- LocalDateTime localDateTime = LocalDateTime.ofInstant(event.getTimestamp(), ZoneId.systemDefault());
- MonitorProperties.DingTalk dingTalk = properties.getDingTalk();
- String title = dingTalk.getService().getTitle();
-
- String message = "## **" + title + "**\n" +
- "#### **銆愭湇鍔°��** " + appName + "\n" +
- "#### **銆愮幆澧冦��** " + environment.getActiveProfiles()[0] + "\n" +
- "#### **銆愬湴鍧�銆�** " + serviceUrl + "\n" +
- "#### **銆愮姸鎬併��** " + statusCn(status) + "\n" +
- "#### **銆愭椂闂淬��** " + DATETIME_FORMATTER.format(localDateTime) + "\n" +
- "#### **銆愯鎯呫��** " + dingTalk.getLink() + "\n";
-
- return dingTalkService.pushMsg(title, message);
- }
-
- private String statusCn(StatusInfo status) {
- if (status.isUp()) {
- return "搴旂敤涓婄嚎锛圛S UP锛�";
- } else if (status.isDown()) {
- return "搴旂敤瀹曟満锛圛S DOWN锛�";
- } else if (status.isOffline()) {
- return "搴旂敤鎺夌嚎锛圛S OFFLINE锛�";
- } else if (status.isUnknown()) {
- return "鏈煡鐘舵�侊紙UNKNOWN锛�";
- } else {
- return "寮傚父鐘舵��";
- }
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkService.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkService.java
deleted file mode 100644
index 29bed73..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/DingTalkService.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.dingtalk;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.MediaType;
-import org.springframework.util.Base64Utils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.reactive.function.BodyInserters;
-import org.springframework.web.reactive.function.client.WebClient;
-import org.springframework.web.util.UriUtils;
-import reactor.core.publisher.Mono;
-
-import javax.crypto.Mac;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-import java.net.URI;
-import java.nio.charset.StandardCharsets;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 閽夐拤 鏈嶅姟
- *
- * @author L.cm
- */
-@Slf4j
-@RequiredArgsConstructor
-public class DingTalkService {
- private static final String DING_TALK_ROBOT_URL = "https://oapi.dingtalk.com/robot/send?access_token=";
- private final MonitorProperties properties;
- private final WebClient webClient;
-
- /**
- * 鍙戦�佹秷鎭�
- *
- * @param title title
- * @param text 娑堟伅
- */
- public Mono<Void> pushMsg(String title, String text) {
- log.info("閽夐拤娑堟伅锛歔鍒涘缓娑堟伅浣揮title:{}, text:{}", title, text);
-
- HashMap<String, String> params = new HashMap<>(2);
- params.put("title", title);
- params.put("text", text);
-
- Map<String, Object> body = new HashMap<>(2);
- body.put("msgtype", "markdown");
- body.put("markdown", params);
- log.info("鍒涘缓娑堟伅浣� json锛歿}", body);
-
- MonitorProperties.DingTalk dingTalk = properties.getDingTalk();
- String accessToken = dingTalk.getAccessToken();
- if (!StringUtils.hasText(accessToken)) {
- log.error("DingTalk alert config accessToken ${monitor.ding-talk.access-token} is blank.");
- return Mono.empty();
- }
-
- String urlString = DING_TALK_ROBOT_URL + dingTalk.getAccessToken();
- // 鏈夌閽ヨ绛惧悕
- String secret = dingTalk.getSecret();
- if (StringUtils.hasText(secret)) {
- long timestamp = System.currentTimeMillis();
- urlString += String.format("×tamp=%s&sign=%s", timestamp, getSign(secret, timestamp));
- }
- return webClient.post()
- .uri(URI.create(urlString))
- .contentType(MediaType.APPLICATION_JSON)
- .body(BodyInserters.fromValue(body))
- .retrieve()
- .bodyToMono(String.class)
- .doOnSuccess((result) -> log.info("閽夐拤娑堟伅锛歔娑堟伅杩斿洖]result:{}", result))
- .then();
- }
-
- private static String getSign(String secret, long timestamp) {
- String stringToSign = timestamp + "\n" + secret;
- byte[] hmacSha256Bytes = digestHmac(stringToSign, secret);
- return UriUtils.encode(Base64Utils.encodeToString(hmacSha256Bytes), StandardCharsets.UTF_8);
- }
-
- public static byte[] digestHmac(String data, String key) {
- SecretKey secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
- try {
- Mac mac = Mac.getInstance(secretKey.getAlgorithm());
- mac.init(secretKey);
- return mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
- } catch (NoSuchAlgorithmException | InvalidKeyException e) {
- throw new RuntimeException(e.getMessage());
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/MonitorProperties.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/MonitorProperties.java
deleted file mode 100644
index 71b9970..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/dingtalk/MonitorProperties.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.dingtalk;
-
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-
-/**
- * 鐩戞帶閰嶇疆
- *
- * @author L.cm
- */
-@Getter
-@Setter
-@RefreshScope
-@ConfigurationProperties("monitor")
-public class MonitorProperties {
- private DingTalk dingTalk = new DingTalk();
-
- @Getter
- @Setter
- public static class DingTalk {
- /**
- * 鍚敤閽夐拤鍛婅锛岄粯璁や负 true
- */
- private boolean enabled = false;
- /**
- * 閽夐拤鏈哄櫒浜� token
- */
- private String accessToken;
- /**
- * 绛惧悕锛氬鏋滄湁 secret 鍒欒繘琛岀鍚嶏紝鍏煎鑰佹帴鍙�
- */
- private String secret;
- /**
- * 鍦板潃閰嶇疆
- */
- private String link;
- private Service service = new Service();
- }
-
- @Getter
- @Setter
- public static class Service {
- /**
- * 鏈嶅姟 鐘舵�� title
- */
- private String title = "鏈嶅姟鐘舵�侀�氱煡";
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/security/InternalAuthorizationManager.java b/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/security/InternalAuthorizationManager.java
deleted file mode 100644
index 1fbadc1..0000000
--- a/Source/BladeX/blade-ops/blade-admin/src/main/java/org/springblade/admin/security/InternalAuthorizationManager.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
- */
-package org.springblade.admin.security;
-
-import org.springblade.core.launch.utils.INetUtil;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.security.authorization.AuthorizationDecision;
-import org.springframework.security.authorization.ReactiveAuthorizationManager;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.web.server.authorization.AuthorizationContext;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.net.InetSocketAddress;
-import java.util.Optional;
-
-/**
- * 鍐呯綉璁よ瘉绠$悊锛屽唴缃戞斁琛岋紝澶栫綉璁よ瘉
- *
- * @author L.cm
- */
-public class InternalAuthorizationManager implements ReactiveAuthorizationManager<AuthorizationContext> {
- private static final String HEADER_X_FORWARDED_FOR = "X-Forwarded-For";
-
- @Override
- public Mono<AuthorizationDecision> check(Mono<Authentication> authentication, AuthorizationContext context) {
- return Mono.just(getAuthorizationDecision(context));
- }
-
- private static AuthorizationDecision getAuthorizationDecision(AuthorizationContext context) {
- return new AuthorizationDecision(isInternalNet(context));
- }
-
- /**
- * 鍒ゆ柇鏄惁鍐呯綉 ip 璇锋眰
- *
- * @param context AuthorizationContext
- * @return 鏄惁鍐呯綉 ip
- */
- private static boolean isInternalNet(AuthorizationContext context) {
- ServerHttpRequest request = Optional.ofNullable(context)
- .map(AuthorizationContext::getExchange)
- .map(ServerWebExchange::getRequest)
- .orElse(null);
- if (request == null) {
- return false;
- }
- HttpHeaders headers = request.getHeaders();
- // 濡傛灉娌℃湁 X-Forwarded-For 浠h〃涓� admin 鎷夊彇
- if (!headers.containsKey(HEADER_X_FORWARDED_FOR)) {
- return true;
- }
- return Optional.of(request)
- .map(ServerHttpRequest::getRemoteAddress)
- .map(InetSocketAddress::getAddress)
- .map(INetUtil::isInternalIp)
- .orElse(false);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/pom.xml b/Source/BladeX/blade-ops/blade-develop/pom.xml
deleted file mode 100644
index a1f1954..0000000
--- a/Source/BladeX/blade-ops/blade-develop/pom.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<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-ops</artifactId>
- <version>3.0.1.RELEASE</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-develop</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-develop</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-dict-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/DevelopApplication.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/DevelopApplication.java
deleted file mode 100644
index a69d0e4..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/DevelopApplication.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.develop;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * Develop鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class DevelopApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_DEVELOP_NAME, DevelopApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
deleted file mode 100644
index 95ee5b5..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.develop.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.develop.entity.Code;
-import org.springblade.develop.entity.Datasource;
-import org.springblade.develop.entity.Model;
-import org.springblade.develop.entity.ModelPrototype;
-import org.springblade.develop.service.ICodeService;
-import org.springblade.develop.service.IDatasourceService;
-import org.springblade.develop.service.IModelPrototypeService;
-import org.springblade.develop.service.IModelService;
-import org.springblade.develop.support.BladeCodeGenerator;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/code")
-@Api(value = "浠g爜鐢熸垚", tags = "浠g爜鐢熸垚")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-public class CodeController extends BladeController {
-
- private final ICodeService codeService;
- private final IDatasourceService datasourceService;
- private final IModelService modelService;
- private final IModelPrototypeService modelPrototypeService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆code")
- public R<Code> detail(Code code) {
- Code detail = codeService.getOne(Condition.getQueryWrapper(code));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "codeName", value = "妯″潡鍚�", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "tableName", value = "琛ㄥ悕", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "modelName", value = "瀹炰綋鍚�", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆code")
- public R<IPage<Code>> list(@ApiIgnore @RequestParam Map<String, Object> code, Query query) {
- IPage<Code> pages = codeService.page(Condition.getPage(query), Condition.getQueryWrapper(code, Code.class));
- return R.data(pages);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆code")
- public R submit(@Valid @RequestBody Code code) {
- return R.status(codeService.submit(code));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(codeService.removeByIds(Func.toLongList(ids)));
- }
-
- /**
- * 澶嶅埗
- */
- @PostMapping("/copy")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "澶嶅埗", notes = "浼犲叆id")
- public R copy(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
- Code code = codeService.getById(id);
- code.setId(null);
- code.setCodeName(code.getCodeName() + "-copy");
- return R.status(codeService.save(code));
- }
-
- /**
- * 浠g爜鐢熸垚
- */
- @PostMapping("/gen-code")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "浠g爜鐢熸垚", notes = "浼犲叆ids")
- public R genCode(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- Collection<Code> codes = codeService.listByIds(Func.toLongList(ids));
- codes.forEach(code -> {
- BladeCodeGenerator generator = new BladeCodeGenerator();
- // 璁剧疆鍩虹妯″瀷
- Model model = modelService.getById(code.getModelId());
- generator.setModelCode(model.getModelCode());
- generator.setModelClass(model.getModelClass());
- // 璁剧疆妯″瀷闆嗗悎
- List<ModelPrototype> prototypes = modelPrototypeService.prototypeList(model.getId());
- generator.setModel(JsonUtil.readMap(JsonUtil.toJson(model)));
- generator.setPrototypes(JsonUtil.readListMap(JsonUtil.toJson(prototypes)));
- if (StringUtil.isNotBlank(code.getSubModelId())) {
- Model subModel = modelService.getById(Func.toLong(code.getSubModelId()));
- List<ModelPrototype> subPrototypes = modelPrototypeService.prototypeList(subModel.getId());
- generator.setSubModel(JsonUtil.readMap(JsonUtil.toJson(subModel)));
- generator.setSubPrototypes(JsonUtil.readListMap(JsonUtil.toJson(subPrototypes)));
- }
- // 璁剧疆鏁版嵁婧�
- Datasource datasource = datasourceService.getById(model.getDatasourceId());
- generator.setDriverName(datasource.getDriverClass());
- generator.setUrl(datasource.getUrl());
- generator.setUsername(datasource.getUsername());
- generator.setPassword(datasource.getPassword());
- // 璁剧疆鍩虹閰嶇疆
- generator.setCodeStyle(code.getCodeStyle());
- generator.setCodeName(code.getCodeName());
- generator.setServiceName(code.getServiceName());
- generator.setPackageName(code.getPackageName());
- generator.setPackageDir(code.getApiPath());
- generator.setPackageWebDir(code.getWebPath());
- generator.setTablePrefix(Func.toStrArray(code.getTablePrefix()));
- generator.setIncludeTables(Func.toStrArray(code.getTableName()));
- // 璁剧疆妯$増淇℃伅
- generator.setTemplateType(code.getTemplateType());
- generator.setAuthor(code.getAuthor());
- generator.setSubModelId(code.getSubModelId());
- generator.setSubFkId(code.getSubFkId());
- generator.setTreeId(code.getTreeId());
- generator.setTreePid(code.getTreePid());
- generator.setTreeName(code.getTreeName());
- // 璁剧疆鏄惁缁ф壙鍩虹涓氬姟瀛楁
- generator.setHasSuperEntity(code.getBaseMode() == 2);
- // 璁剧疆鏄惁寮�鍚寘瑁呭櫒妯″紡
- generator.setHasWrapper(code.getWrapMode() == 2);
- // 璁剧疆鏄惁寮�鍚繙绋嬭皟鐢ㄦā寮�
- generator.setHasFeign(code.getFeignMode() == 2);
- // 璁剧疆鎺у埗鍣ㄦ湇鍔″悕鍓嶇紑
- generator.setHasServiceName(Boolean.TRUE);
- // 鍚姩浠g爜鐢熸垚
- generator.run();
- });
- return R.success("浠g爜鐢熸垚鎴愬姛");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/DatasourceController.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/DatasourceController.java
deleted file mode 100644
index 7956a86..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/DatasourceController.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.develop.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.develop.entity.Datasource;
-import org.springblade.develop.service.IDatasourceService;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 鏁版嵁婧愰厤缃〃 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/datasource")
-@Api(value = "鏁版嵁婧愰厤缃〃", tags = "鏁版嵁婧愰厤缃〃鎺ュ彛")
-public class DatasourceController extends BladeController {
-
- private final IDatasourceService datasourceService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆datasource")
- public R<Datasource> detail(Datasource datasource) {
- Datasource detail = datasourceService.getOne(Condition.getQueryWrapper(datasource));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 鏁版嵁婧愰厤缃〃
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆datasource")
- public R<IPage<Datasource>> list(Datasource datasource, Query query) {
- IPage<Datasource> pages = datasourceService.page(Condition.getPage(query), Condition.getQueryWrapper(datasource));
- return R.data(pages);
- }
-
- /**
- * 鏂板 鏁版嵁婧愰厤缃〃
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆datasource")
- public R save(@Valid @RequestBody Datasource datasource) {
- return R.status(datasourceService.save(datasource));
- }
-
- /**
- * 淇敼 鏁版嵁婧愰厤缃〃
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆datasource")
- public R update(@Valid @RequestBody Datasource datasource) {
- return R.status(datasourceService.updateById(datasource));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 鏁版嵁婧愰厤缃〃
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆datasource")
- public R submit(@Valid @RequestBody Datasource datasource) {
- datasource.setUrl(datasource.getUrl().replace("&", "&"));
- return R.status(datasourceService.saveOrUpdate(datasource));
- }
-
-
- /**
- * 鍒犻櫎 鏁版嵁婧愰厤缃〃
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(datasourceService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 鏁版嵁婧愬垪琛�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "鏌ヨ鍒楄〃")
- public R<List<Datasource>> select() {
- List<Datasource> list = datasourceService.list();
- return R.data(list);
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelController.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelController.java
deleted file mode 100644
index fb52263..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelController.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * 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.develop.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
-import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
-import com.baomidou.mybatisplus.generator.config.po.TableInfo;
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-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.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.develop.entity.Datasource;
-import org.springblade.develop.entity.Model;
-import org.springblade.develop.entity.ModelPrototype;
-import org.springblade.develop.service.IDatasourceService;
-import org.springblade.develop.service.IModelPrototypeService;
-import org.springblade.develop.service.IModelService;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.Iterator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 鏁版嵁妯″瀷琛� 鎺у埗鍣�
- *
- * @author Chill
- */
-@RestController
-@AllArgsConstructor
-@RequestMapping("/model")
-@Api(value = "鏁版嵁妯″瀷琛�", tags = "鏁版嵁妯″瀷琛ㄦ帴鍙�")
-public class ModelController extends BladeController {
-
- private final IModelService modelService;
- private final IModelPrototypeService modelPrototypeService;
- private final IDatasourceService datasourceService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆model")
- public R<Model> detail(Model model) {
- Model detail = modelService.getOne(Condition.getQueryWrapper(model));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 鏁版嵁妯″瀷琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆model")
- public R<IPage<Model>> list(Model model, Query query) {
- IPage<Model> pages = modelService.page(Condition.getPage(query), Condition.getQueryWrapper(model));
- return R.data(pages);
- }
-
- /**
- * 鏂板 鏁版嵁妯″瀷琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板", notes = "浼犲叆model")
- public R save(@Valid @RequestBody Model model) {
- return R.status(modelService.save(model));
- }
-
- /**
- * 淇敼 鏁版嵁妯″瀷琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇敼", notes = "浼犲叆model")
- public R update(@Valid @RequestBody Model model) {
- return R.status(modelService.updateById(model));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 鏁版嵁妯″瀷琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆model")
- public R submit(@Valid @RequestBody Model model) {
- return R.status(modelService.saveOrUpdate(model));
- }
-
- /**
- * 鍒犻櫎 鏁版嵁妯″瀷琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(modelService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 妯″瀷鍒楄〃
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "妯″瀷鍒楄〃", notes = "妯″瀷鍒楄〃")
- public R<List<Model>> select() {
- List<Model> list = modelService.list();
- list.forEach(model -> model.setModelName(model.getModelTable() + StringPool.COLON + StringPool.SPACE + model.getModelName()));
- return R.data(list);
- }
-
- /**
- * 鑾峰彇鐗╃悊琛ㄥ垪琛�
- */
- @GetMapping("/table-list")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鐗╃悊琛ㄥ垪琛�", notes = "浼犲叆datasourceId")
- public R<List<TableInfo>> tableList(Long datasourceId) {
- Datasource datasource = datasourceService.getById(datasourceId);
- ConfigBuilder config = getConfigBuilder(datasource);
- List<TableInfo> tableInfoList = config.getTableInfoList().stream()
- .filter(tableInfo -> !StringUtil.startsWithIgnoreCase(tableInfo.getName(), "ACT_"))
- .map(tableInfo -> tableInfo.setComment(tableInfo.getName() + StringPool.COLON + tableInfo.getComment()))
- .collect(Collectors.toList());
- return R.data(tableInfoList);
- }
-
- /**
- * 鑾峰彇鐗╃悊琛ㄤ俊鎭�
- */
- @GetMapping("/table-info")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "鐗╃悊琛ㄤ俊鎭�", notes = "浼犲叆model淇℃伅")
- public R<TableInfo> tableInfo(Long modelId, String tableName, Long datasourceId) {
- if (StringUtil.isBlank(tableName)) {
- Model model = modelService.getById(modelId);
- tableName = model.getModelTable();
- }
- TableInfo tableInfo = getTableInfo(tableName, datasourceId);
- return R.data(tableInfo);
- }
-
- /**
- * 鑾峰彇瀛楁淇℃伅
- */
- @GetMapping("/model-prototype")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "鐗╃悊琛ㄥ瓧娈典俊鎭�", notes = "浼犲叆modelId涓巇atasourceId")
- public R modelPrototype(Long modelId, Long datasourceId) {
- List<ModelPrototype> modelPrototypeList = modelPrototypeService.list(Wrappers.<ModelPrototype>query().lambda().eq(ModelPrototype::getModelId, modelId));
- if (modelPrototypeList.size() > 0) {
- return R.data(modelPrototypeList);
- }
- Model model = modelService.getById(modelId);
- String tableName = model.getModelTable();
- TableInfo tableInfo = getTableInfo(tableName, datasourceId);
- if (tableInfo != null) {
- return R.data(tableInfo.getFields());
- } else {
- return R.fail("鏈幏寰楃浉鍏宠〃淇℃伅");
- }
- }
-
- /**
- * 鑾峰彇琛ㄤ俊鎭�
- *
- * @param tableName 琛ㄥ悕
- * @param datasourceId 鏁版嵁婧愪富閿�
- */
- private TableInfo getTableInfo(String tableName, Long datasourceId) {
- Datasource datasource = datasourceService.getById(datasourceId);
- ConfigBuilder config = getConfigBuilder(datasource);
- List<TableInfo> tableInfoList = config.getTableInfoList();
- TableInfo tableInfo = null;
- Iterator<TableInfo> iterator = tableInfoList.stream().filter(table -> table.getName().equals(tableName)).collect(Collectors.toList()).iterator();
- if (iterator.hasNext()) {
- tableInfo = iterator.next();
- tableInfo.setEntityName(tableInfo.getEntityName().replace(StringUtil.firstCharToUpper(tableName.split(StringPool.UNDERSCORE)[0]), StringPool.EMPTY));
- }
- return tableInfo;
- }
-
- /**
- * 鑾峰彇琛ㄩ厤缃俊鎭�
- *
- * @param datasource 鏁版嵁婧愪俊鎭�
- */
- private ConfigBuilder getConfigBuilder(Datasource datasource) {
- StrategyConfig strategyConfig = new StrategyConfig.Builder()
- .entityBuilder()
- .naming(NamingStrategy.underline_to_camel)
- .columnNaming(NamingStrategy.underline_to_camel).build();
- DataSourceConfig datasourceConfig = new DataSourceConfig.Builder(
- datasource.getUrl(), datasource.getUsername(), datasource.getPassword()
- ).build();
- return new ConfigBuilder(null, datasourceConfig, strategyConfig, null, null, null);
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelPrototypeController.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelPrototypeController.java
deleted file mode 100644
index 4dbc539..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/ModelPrototypeController.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.develop.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-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.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.develop.entity.ModelPrototype;
-import org.springblade.develop.service.IModelPrototypeService;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 鏁版嵁鍘熷瀷琛� 鎺у埗鍣�
- *
- * @author Chill
- */
-@RestController
-@AllArgsConstructor
-@RequestMapping("/model-prototype")
-@Api(value = "鏁版嵁鍘熷瀷琛�", tags = "鏁版嵁鍘熷瀷琛ㄦ帴鍙�")
-public class ModelPrototypeController extends BladeController {
-
- private final IModelPrototypeService modelPrototypeService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆modelPrototype")
- public R<ModelPrototype> detail(ModelPrototype modelPrototype) {
- ModelPrototype detail = modelPrototypeService.getOne(Condition.getQueryWrapper(modelPrototype));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 鏁版嵁鍘熷瀷琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆modelPrototype")
- public R<IPage<ModelPrototype>> list(ModelPrototype modelPrototype, Query query) {
- IPage<ModelPrototype> pages = modelPrototypeService.page(Condition.getPage(query), Condition.getQueryWrapper(modelPrototype));
- return R.data(pages);
- }
-
- /**
- * 鏂板 鏁版嵁鍘熷瀷琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆modelPrototype")
- public R save(@Valid @RequestBody ModelPrototype modelPrototype) {
- return R.status(modelPrototypeService.save(modelPrototype));
- }
-
- /**
- * 淇敼 鏁版嵁鍘熷瀷琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆modelPrototype")
- public R update(@Valid @RequestBody ModelPrototype modelPrototype) {
- return R.status(modelPrototypeService.updateById(modelPrototype));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 鏁版嵁鍘熷瀷琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆modelPrototype")
- public R submit(@Valid @RequestBody ModelPrototype modelPrototype) {
- return R.status(modelPrototypeService.saveOrUpdate(modelPrototype));
- }
-
- /**
- * 鎵归噺鏂板鎴栦慨鏀� 鏁版嵁鍘熷瀷琛�
- */
- @PostMapping("/submit-list")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鎵归噺鏂板鎴栦慨鏀�", notes = "浼犲叆modelPrototype闆嗗悎")
- public R submitList(@Valid @RequestBody List<ModelPrototype> modelPrototypes) {
- return R.status(modelPrototypeService.submitList(modelPrototypes));
- }
-
- /**
- * 鍒犻櫎 鏁版嵁鍘熷瀷琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(modelPrototypeService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 鏁版嵁鍘熷瀷鍒楄〃
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "鏁版嵁鍘熷瀷鍒楄〃", notes = "鏁版嵁鍘熷瀷鍒楄〃")
- public R<List<ModelPrototype>> select(@ApiParam(value = "鏁版嵁妯″瀷Id", required = true) @RequestParam Long modelId) {
- List<ModelPrototype> list = modelPrototypeService.list(Wrappers.<ModelPrototype>query().lambda().eq(ModelPrototype::getModelId, modelId));
- list.forEach(prototype -> prototype.setComment(prototype.getJdbcName() + StringPool.COLON + StringPool.SPACE + prototype.getComment()));
- return R.data(list);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/dto/ModelDTO.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/dto/ModelDTO.java
deleted file mode 100644
index db2d920..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/dto/ModelDTO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.develop.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.develop.entity.Model;
-import org.springblade.develop.entity.ModelPrototype;
-
-import java.util.List;
-
-/**
- * 浠g爜妯″瀷DTO
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ModelDTO extends Model {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 浠g爜寤烘ā鍘熷瀷
- */
- private List<ModelPrototype> prototypes;
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Code.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Code.java
deleted file mode 100644
index e19fccb..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Code.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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.develop.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_code")
-@ApiModel(value = "Code瀵硅薄", description = "Code瀵硅薄")
-public class Code implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鏁版嵁妯″瀷涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鏁版嵁妯″瀷涓婚敭")
- private Long modelId;
-
- /**
- * 妯″潡鍚嶇О
- */
- @ApiModelProperty(value = "鏈嶅姟鍚嶇О")
- private String serviceName;
-
- /**
- * 妯″潡鍚嶇О
- */
- @ApiModelProperty(value = "妯″潡鍚嶇О")
- private String codeName;
-
- /**
- * 琛ㄥ悕
- */
- @ApiModelProperty(value = "琛ㄥ悕")
- private String tableName;
-
- /**
- * 瀹炰綋鍚�
- */
- @ApiModelProperty(value = "琛ㄥ墠缂�")
- private String tablePrefix;
-
- /**
- * 涓婚敭鍚�
- */
- @ApiModelProperty(value = "涓婚敭鍚�")
- private String pkName;
-
- /**
- * 鍚庣鍖呭悕
- */
- @ApiModelProperty(value = "鍚庣鍖呭悕")
- private String packageName;
-
- /**
- * 妯$増绫诲瀷
- */
- @ApiModelProperty(value = "妯$増绫诲瀷")
- private String templateType;
-
- /**
- * 浣滆�呬俊鎭�
- */
- @ApiModelProperty(value = "浣滆�呬俊鎭�")
- private String author;
-
- /**
- * 瀛愯〃妯″瀷涓婚敭
- */
- @ApiModelProperty(value = "瀛愯〃妯″瀷涓婚敭")
- private String subModelId;
-
- /**
- * 瀛愯〃缁戝畾澶栭敭
- */
- @ApiModelProperty(value = "瀛愯〃缁戝畾澶栭敭")
- private String subFkId;
-
- /**
- * 鏍戜富閿瓧娈�
- */
- @ApiModelProperty(value = "鏍戜富閿瓧娈�")
- private String treeId;
-
- /**
- * 鏍戠埗涓婚敭瀛楁
- */
- @ApiModelProperty(value = "鏍戠埗涓婚敭瀛楁")
- private String treePid;
-
- /**
- * 鏍戝悕绉板瓧娈�
- */
- @ApiModelProperty(value = "鏍戝悕绉板瓧娈�")
- private String treeName;
-
- /**
- * 鍩虹涓氬姟妯″紡
- */
- @ApiModelProperty(value = "鍩虹涓氬姟妯″紡")
- private Integer baseMode;
-
- /**
- * 鍖呰鍣ㄦā寮�
- */
- @ApiModelProperty(value = "鍖呰鍣ㄦā寮�")
- private Integer wrapMode;
-
- /**
- * 杩滅▼璋冪敤妯″紡
- */
- @ApiModelProperty(value = "杩滅▼璋冪敤妯″紡")
- private Integer feignMode;
-
- /**
- * 浠g爜椋庢牸
- */
- @ApiModelProperty(value = "浠g爜椋庢牸")
- private String codeStyle;
-
- /**
- * 鍚庣璺緞
- */
- @ApiModelProperty(value = "鍚庣璺緞")
- private String apiPath;
-
- /**
- * 鍓嶇璺緞
- */
- @ApiModelProperty(value = "鍓嶇璺緞")
- private String webPath;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Datasource.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Datasource.java
deleted file mode 100644
index cccc3cb..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Datasource.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.develop.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import org.springblade.core.mp.base.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * 鏁版嵁婧愰厤缃〃瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_datasource")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Datasource瀵硅薄", description = "鏁版嵁婧愰厤缃〃")
-public class Datasource extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鍚嶇О
- */
- @ApiModelProperty(value = "鍚嶇О")
- private String name;
- /**
- * 椹卞姩绫�
- */
- @ApiModelProperty(value = "椹卞姩绫�")
- private String driverClass;
- /**
- * 杩炴帴鍦板潃
- */
- @ApiModelProperty(value = "杩炴帴鍦板潃")
- private String url;
- /**
- * 鐢ㄦ埛鍚�
- */
- @ApiModelProperty(value = "鐢ㄦ埛鍚�")
- private String username;
- /**
- * 瀵嗙爜
- */
- @ApiModelProperty(value = "瀵嗙爜")
- private String password;
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Model.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Model.java
deleted file mode 100644
index db24894..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/Model.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.develop.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 鏁版嵁妯″瀷琛ㄥ疄浣撶被
- *
- * @author Chill
- */
-@Data
-@TableName("pl_model")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Model瀵硅薄", description = "鏁版嵁妯″瀷琛�")
-public class Model extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鏁版嵁婧愪富閿�
- */
- @ApiModelProperty(value = "鏁版嵁婧愪富閿�")
- @JsonSerialize(using = ToStringSerializer.class)
- private Long datasourceId;
- /**
- * 妯″瀷鍚嶇О
- */
- @ApiModelProperty(value = "妯″瀷鍚嶇О")
- private String modelName;
- /**
- * 妯″瀷缂栧彿
- */
- @ApiModelProperty(value = "妯″瀷缂栧彿")
- private String modelCode;
- /**
- * 鐗╃悊琛ㄥ悕
- */
- @ApiModelProperty(value = "鐗╃悊琛ㄥ悕")
- private String modelTable;
- /**
- * 妯″瀷绫诲悕
- */
- @ApiModelProperty(value = "妯″瀷绫诲悕")
- private String modelClass;
- /**
- * 妯″瀷澶囨敞
- */
- @ApiModelProperty(value = "妯″瀷澶囨敞")
- private String modelRemark;
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/ModelPrototype.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/ModelPrototype.java
deleted file mode 100644
index 285398d..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/entity/ModelPrototype.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.develop.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 鏁版嵁鍘熷瀷琛ㄥ疄浣撶被
- *
- * @author Chill
- */
-@Data
-@TableName("pl_model_prototype")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "ModelPrototype瀵硅薄", description = "鏁版嵁鍘熷瀷琛�")
-public class ModelPrototype extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 妯″瀷涓婚敭
- */
- @ApiModelProperty(value = "妯″瀷涓婚敭")
- @JsonSerialize(using = ToStringSerializer.class)
- private Long modelId;
- /**
- * 鐗╃悊鍒楀悕
- */
- @ApiModelProperty(value = "鐗╃悊鍒楀悕")
- private String jdbcName;
- /**
- * 鐗╃悊绫诲瀷
- */
- @ApiModelProperty(value = "鐗╃悊绫诲瀷")
- private String jdbcType;
- /**
- * 瀹炰綋鍒楀悕
- */
- @ApiModelProperty(value = "瀹炰綋鍒楀悕")
- private String propertyName;
- /**
- * 瀹炰綋绫诲瀷
- */
- @ApiModelProperty(value = "瀹炰綋绫诲瀷")
- private String propertyType;
- /**
- * 瀹炰綋绫诲瀷寮曠敤
- */
- @ApiModelProperty(value = "瀹炰綋绫诲瀷寮曠敤")
- private String propertyEntity;
- /**
- * 娉ㄩ噴璇存槑
- */
- @ApiModelProperty(value = "娉ㄩ噴璇存槑")
- private String comment;
- /**
- * 鍒楄〃鏄剧ず
- */
- @ApiModelProperty(value = "鍒楄〃鏄剧ず")
- private Integer isList;
- /**
- * 琛ㄥ崟鏄剧ず
- */
- @ApiModelProperty(value = "琛ㄥ崟鏄剧ず")
- private Integer isForm;
- /**
- * 鐙崰涓�琛�
- */
- @ApiModelProperty(value = "鐙崰涓�琛�")
- private Integer isRow;
- /**
- * 缁勪欢绫诲瀷
- */
- @ApiModelProperty(value = "缁勪欢绫诲瀷")
- private String componentType;
- /**
- * 瀛楀吀缂栫爜
- */
- @ApiModelProperty(value = "瀛楀吀缂栫爜")
- private String dictCode;
- /**
- * 鏄惁蹇呭~
- */
- @ApiModelProperty(value = "鏄惁蹇呭~")
- private Integer isRequired;
- /**
- * 鏌ヨ閰嶇疆
- */
- @ApiModelProperty(value = "鏌ヨ閰嶇疆")
- private Integer isQuery;
- /**
- * 鏌ヨ绫诲瀷
- */
- @ApiModelProperty(value = "鏌ヨ绫诲瀷")
- private String queryType;
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.java
deleted file mode 100644
index 2ed8614..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.develop.entity.Code;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface CodeMapper extends BaseMapper<Code> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.xml b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.xml
deleted file mode 100644
index 46db551..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/CodeMapper.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.develop.mapper.CodeMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="codeResultMap" type="org.springblade.develop.entity.Code">
- <id column="id" property="id"/>
- <result column="datasource_id" property="datasourceId"/>
- <result column="service_name" property="serviceName"/>
- <result column="code_name" property="codeName"/>
- <result column="table_name" property="tableName"/>
- <result column="pk_name" property="pkName"/>
- <result column="base_mode" property="baseMode"/>
- <result column="wrap_mode" property="wrapMode"/>
- <result column="table_prefix" property="tablePrefix"/>
- <result column="package_name" property="packageName"/>
- <result column="api_path" property="apiPath"/>
- <result column="web_path" property="webPath"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.java
deleted file mode 100644
index 695c692..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.develop.entity.Datasource;
-
-/**
- * 鏁版嵁婧愰厤缃〃 Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface DatasourceMapper extends BaseMapper<Datasource> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.xml b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.xml
deleted file mode 100644
index c863cd4..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/DatasourceMapper.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.develop.mapper.DatasourceMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="datasourceResultMap" type="org.springblade.develop.entity.Datasource">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="driver_class" property="driverClass"/>
- <result column="url" property="url"/>
- <result column="username" property="username"/>
- <result column="password" property="password"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.java
deleted file mode 100644
index 678cb89..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.develop.entity.Model;
-
-/**
- * 鏁版嵁妯″瀷琛� Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface ModelMapper extends BaseMapper<Model> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.xml b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.xml
deleted file mode 100644
index 7a4f018..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelMapper.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.develop.mapper.ModelMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="modelResultMap" type="org.springblade.develop.entity.Model">
- <id column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="datasource_id" property="datasourceId"/>
- <result column="model_name" property="modelName"/>
- <result column="model_code" property="modelCode"/>
- <result column="model_table" property="modelTable"/>
- <result column="model_class" property="modelClass"/>
- <result column="model_remark" property="modelRemark"/>
- </resultMap>
-
-
- <select id="selectModelPage" resultMap="modelResultMap">
- select * from blade_model where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.java
deleted file mode 100644
index 6d8d067..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.develop.entity.ModelPrototype;
-
-/**
- * 鏁版嵁鍘熷瀷琛� Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface ModelPrototypeMapper extends BaseMapper<ModelPrototype> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.xml b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.xml
deleted file mode 100644
index f963a58..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/mapper/ModelPrototypeMapper.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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.develop.mapper.ModelPrototypeMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="modelPrototypeResultMap" type="org.springblade.develop.entity.ModelPrototype">
- <id column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="jdbc_name" property="jdbcName"/>
- <result column="jdbc_type" property="jdbcType"/>
- <result column="comment" property="comment"/>
- <result column="property_type" property="propertyType"/>
- <result column="property_entity" property="propertyEntity"/>
- <result column="property_name" property="propertyName"/>
- <result column="is_form" property="isForm"/>
- <result column="is_row" property="isRow"/>
- <result column="component_type" property="componentType"/>
- <result column="dict_code" property="dictCode"/>
- <result column="is_required" property="isRequired"/>
- <result column="is_list" property="isList"/>
- <result column="is_query" property="isQuery"/>
- <result column="query_type" property="queryType"/>
- </resultMap>
-
-
- <select id="selectModelPrototypePage" resultMap="modelPrototypeResultMap">
- select * from blade_model_prototype where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/ICodeService.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/ICodeService.java
deleted file mode 100644
index 32bb6d3..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/ICodeService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.develop.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.develop.entity.Code;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ICodeService extends IService<Code> {
-
- /**
- * 鎻愪氦
- *
- * @param code
- * @return
- */
- boolean submit(Code code);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IDatasourceService.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IDatasourceService.java
deleted file mode 100644
index 15080ba..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IDatasourceService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.develop.entity.Datasource;
-
-/**
- * 鏁版嵁婧愰厤缃〃 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IDatasourceService extends BaseService<Datasource> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelPrototypeService.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelPrototypeService.java
deleted file mode 100644
index 98978c5..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelPrototypeService.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.develop.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.develop.entity.ModelPrototype;
-
-import java.util.List;
-
-/**
- * 鏁版嵁鍘熷瀷琛� 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IModelPrototypeService extends BaseService<ModelPrototype> {
-
- /**
- * 鎵归噺鎻愪氦
- *
- * @param modelPrototypes 鍘熷瀷闆嗗悎
- * @return boolean
- */
- boolean submitList(List<ModelPrototype> modelPrototypes);
-
- /**
- * 鍘熷瀷鍒楄〃
- *
- * @param modelId 妯″瀷ID
- * @return List<ModelPrototype>
- */
- List<ModelPrototype> prototypeList(Long modelId);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelService.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelService.java
deleted file mode 100644
index 20ca46c..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/IModelService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.develop.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.develop.entity.Model;
-
-/**
- * 鏁版嵁妯″瀷琛� 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IModelService extends BaseService<Model> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/CodeServiceImpl.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/CodeServiceImpl.java
deleted file mode 100644
index 3d58caa..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/CodeServiceImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.develop.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.develop.entity.Code;
-import org.springblade.develop.mapper.CodeMapper;
-import org.springblade.develop.service.ICodeService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class CodeServiceImpl extends ServiceImpl<CodeMapper, Code> implements ICodeService {
-
- @Override
- public boolean submit(Code code) {
- code.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return saveOrUpdate(code);
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/DatasourceServiceImpl.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/DatasourceServiceImpl.java
deleted file mode 100644
index 31e867e..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/DatasourceServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.develop.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.develop.entity.Datasource;
-import org.springblade.develop.mapper.DatasourceMapper;
-import org.springblade.develop.service.IDatasourceService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏁版嵁婧愰厤缃〃 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DatasourceServiceImpl extends BaseServiceImpl<DatasourceMapper, Datasource> implements IDatasourceService {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
deleted file mode 100644
index c10c1e5..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.develop.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.develop.entity.ModelPrototype;
-import org.springblade.develop.mapper.ModelPrototypeMapper;
-import org.springblade.develop.service.IModelPrototypeService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * 鏁版嵁鍘熷瀷琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class ModelPrototypeServiceImpl extends BaseServiceImpl<ModelPrototypeMapper, ModelPrototype> implements IModelPrototypeService {
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean submitList(List<ModelPrototype> modelPrototypes) {
- modelPrototypes.forEach(modelPrototype -> {
- if (modelPrototype.getId() == null) {
- this.save(modelPrototype);
- } else {
- this.updateById(modelPrototype);
- }
- });
- return true;
- }
-
- @Override
- public List<ModelPrototype> prototypeList(Long modelId) {
- return this.list(Wrappers.<ModelPrototype>lambdaQuery().eq(ModelPrototype::getModelId, modelId));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelServiceImpl.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelServiceImpl.java
deleted file mode 100644
index 6a5613c..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.develop.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.develop.entity.Model;
-import org.springblade.develop.mapper.ModelMapper;
-import org.springblade.develop.service.IModelService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏁版嵁妯″瀷琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class ModelServiceImpl extends BaseServiceImpl<ModelMapper, Model> implements IModelService {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java b/Source/BladeX/blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java
deleted file mode 100644
index 15d8e04..0000000
--- a/Source/BladeX/blade-ops/blade-develop/src/test/java/org/springblade/test/CodeGenerator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.test;
-
-
-import org.springblade.develop.constant.DevelopConstant;
-import org.springblade.develop.support.BladeCodeGenerator;
-
-/**
- * 浠g爜鐢熸垚鍣�
- *
- * @author Chill
- */
-public class CodeGenerator {
-
- /**
- * 浠g爜鐢熸垚鐨勬ā鍧楀悕
- */
- public static String CODE_NAME = "璧勬簮绠$悊";
- /**
- * 浠g爜鎵�鍦ㄦ湇鍔″悕
- */
- public static String SERVICE_NAME = "blade-develop";
- /**
- * 浠g爜鐢熸垚鐨勫寘鍚�
- */
- public static String PACKAGE_NAME = "org.springblade.develop";
- /**
- * 鍓嶇浠g爜鐢熸垚椋庢牸
- */
- public static String CODE_STYLE = DevelopConstant.SABER_NAME;
- /**
- * 鍓嶇浠g爜鐢熸垚鍦板潃
- */
- public static String PACKAGE_WEB_DIR = "/Users/chill/Workspaces/product/Saber";
- /**
- * 闇�瑕佸幓鎺夌殑琛ㄥ墠缂�
- */
- public static String[] TABLE_PREFIX = {"blade_"};
- /**
- * 闇�瑕佺敓鎴愮殑琛ㄥ悕(涓よ�呭彧鑳藉彇鍏朵竴)
- */
- public static String[] INCLUDE_TABLES = {"pl_sys_datasource"};
- /**
- * 闇�瑕佹帓闄ょ殑琛ㄥ悕(涓よ�呭彧鑳藉彇鍏朵竴)
- */
- public static String[] EXCLUDE_TABLES = {};
- /**
- * 鏄惁鍖呭惈鍩虹涓氬姟瀛楁
- */
- public static Boolean HAS_SUPER_ENTITY = Boolean.TRUE;
- /**
- * 鏄惁鍖呭惈杩滅▼璋冪敤
- */
- private static Boolean HAS_FEIGN = Boolean.TRUE;
- /**
- * 鍩虹涓氬姟瀛楁
- */
- public static String[] SUPER_ENTITY_COLUMNS = {"id", "create_time", "create_user", "create_dept", "update_time", "update_user", "status", "is_deleted"};
-
-
- /**
- * RUN THIS
- */
- public static void main(String[] args) {
- BladeCodeGenerator generator = new BladeCodeGenerator();
- generator.setCodeName(CODE_NAME);
- generator.setServiceName(SERVICE_NAME);
- generator.setCodeStyle(CODE_STYLE);
- generator.setPackageName(PACKAGE_NAME);
- generator.setPackageWebDir(PACKAGE_WEB_DIR);
- generator.setTablePrefix(TABLE_PREFIX);
- generator.setIncludeTables(INCLUDE_TABLES);
- generator.setExcludeTables(EXCLUDE_TABLES);
- generator.setHasSuperEntity(HAS_SUPER_ENTITY);
- generator.setHasFeign(HAS_FEIGN);
- generator.setSuperEntityColumns(SUPER_ENTITY_COLUMNS);
- generator.run();
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/pom.xml b/Source/BladeX/blade-ops/blade-flow/pom.xml
deleted file mode 100644
index e863066..0000000
--- a/Source/BladeX/blade-ops/blade-flow/pom.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-flow</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!-- Blade -->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <!--<dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-transaction</artifactId>
- </dependency>-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-dict-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-scope-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-auto</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-user-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-flow-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <!-- 宸ヤ綔娴� -->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-flowable</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <!--瑙e喅涓嶆敮鎸佺殑瀛楃闆嗛棶棰�-->
- <dependency>
- <groupId>com.oracle.database.nls</groupId>
- <artifactId>orai18n</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/FlowApplication.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/FlowApplication.java
deleted file mode 100644
index 8a00d68..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/FlowApplication.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.flow;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.cloud.feign.EnableBladeFeign;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * Flowable鍚姩鍣�
- *
- * @author Chill
- */
-//@SeataCloudApplication
-@BladeCloudApplication
-public class FlowApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_FLOW_NAME, FlowApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/controller/WorkController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/controller/WorkController.java
deleted file mode 100644
index a2c36d2..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/controller/WorkController.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * 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.flow.business.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.flowable.engine.TaskService;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.flow.business.service.FlowBusinessService;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.core.utils.TaskUtil;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 娴佺▼浜嬪姟閫氱敤鎺ュ彛
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("work")
-@Api(value = "娴佺▼浜嬪姟閫氱敤鎺ュ彛", tags = "娴佺▼浜嬪姟閫氱敤鎺ュ彛")
-public class WorkController {
-
- private final TaskService taskService;
- private final FlowEngineService flowEngineService;
- private final FlowBusinessService flowBusinessService;
-
- /**
- * 鍙戣捣浜嬪姟鍒楄〃椤�
- */
- @GetMapping("start-list")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍙戣捣浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼绫诲瀷")
- public R<IPage<FlowProcess>> startList(@ApiParam("娴佺▼绫诲瀷") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) {
- IPage<FlowProcess> pages = flowEngineService.selectProcessPage(Condition.getPage(query), category, mode);
- return R.data(pages);
- }
-
- /**
- * 寰呯浜嬪姟鍒楄〃椤�
- */
- @GetMapping("claim-list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "寰呯浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
- public R<IPage<BladeFlow>> claimList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
- IPage<BladeFlow> pages = flowBusinessService.selectClaimPage(Condition.getPage(query), bladeFlow);
- return R.data(pages);
- }
-
- /**
- * 寰呭姙浜嬪姟鍒楄〃椤�
- */
- @GetMapping("todo-list")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "寰呭姙浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
- public R<IPage<BladeFlow>> todoList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
- IPage<BladeFlow> pages = flowBusinessService.selectTodoPage(Condition.getPage(query), bladeFlow);
- return R.data(pages);
- }
-
- /**
- * 宸插彂浜嬪姟鍒楄〃椤�
- */
- @GetMapping("send-list")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "宸插彂浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
- public R<IPage<BladeFlow>> sendList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
- IPage<BladeFlow> pages = flowBusinessService.selectSendPage(Condition.getPage(query), bladeFlow);
- return R.data(pages);
- }
-
- /**
- * 鍔炵粨浜嬪姟鍒楄〃椤�
- */
- @GetMapping("done-list")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鍔炵粨浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
- public R<IPage<BladeFlow>> doneList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
- IPage<BladeFlow> pages = flowBusinessService.selectDonePage(Condition.getPage(query), bladeFlow);
- return R.data(pages);
- }
-
- /**
- * 绛炬敹浜嬪姟
- *
- * @param taskId 浠诲姟id
- */
- @PostMapping("claim-task")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "绛炬敹浜嬪姟", notes = "浼犲叆娴佺▼淇℃伅")
- public R claimTask(@ApiParam("浠诲姟id") String taskId) {
- taskService.claim(taskId, TaskUtil.getTaskUser());
- return R.success("绛炬敹浜嬪姟鎴愬姛");
- }
-
- /**
- * 瀹屾垚浠诲姟
- *
- * @param flow 璇峰亣淇℃伅
- */
- @PostMapping("complete-task")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "瀹屾垚浠诲姟", notes = "浼犲叆娴佺▼淇℃伅")
- public R completeTask(@ApiParam("浠诲姟淇℃伅") @RequestBody BladeFlow flow) {
- return R.status(flowBusinessService.completeTask(flow));
- }
-
- /**
- * 鍒犻櫎浠诲姟
- *
- * @param taskId 浠诲姟id
- * @param reason 鍒犻櫎鍘熷洜
- */
- @PostMapping("delete-task")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鍒犻櫎浠诲姟", notes = "浼犲叆娴佺▼淇℃伅")
- public R deleteTask(@ApiParam("浠诲姟id") String taskId, @ApiParam("鍒犻櫎鍘熷洜") String reason) {
- taskService.deleteTask(taskId, reason);
- return R.success("鍒犻櫎浠诲姟鎴愬姛");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/FlowClient.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/FlowClient.java
deleted file mode 100644
index f204b29..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/FlowClient.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.flow.business.feign;
-
-import lombok.AllArgsConstructor;
-import org.flowable.engine.IdentityService;
-import org.flowable.engine.RuntimeService;
-import org.flowable.engine.TaskService;
-import org.flowable.engine.runtime.ProcessInstance;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.core.feign.IFlowClient;
-import org.springblade.flow.core.utils.TaskUtil;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Map;
-
-/**
- * 娴佺▼杩滅▼璋冪敤瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-public class FlowClient implements IFlowClient {
-
- private final RuntimeService runtimeService;
- private final IdentityService identityService;
- private final TaskService taskService;
-
- @Override
- @PostMapping(START_PROCESS_INSTANCE_BY_ID)
- public R<BladeFlow> startProcessInstanceById(String processDefinitionId, String businessKey, @RequestBody Map<String, Object> variables) {
- // 璁剧疆娴佺▼鍚姩鐢ㄦ埛
- identityService.setAuthenticatedUserId(TaskUtil.getTaskUser());
- // 寮�鍚祦绋�
- ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, businessKey, variables);
- // 缁勮娴佺▼閫氱敤绫�
- BladeFlow flow = new BladeFlow();
- flow.setProcessInstanceId(processInstance.getId());
- return R.data(flow);
- }
-
- @Override
- @PostMapping(START_PROCESS_INSTANCE_BY_KEY)
- public R<BladeFlow> startProcessInstanceByKey(String processDefinitionKey, String businessKey, @RequestBody Map<String, Object> variables) {
- // 璁剧疆娴佺▼鍚姩鐢ㄦ埛
- identityService.setAuthenticatedUserId(TaskUtil.getTaskUser());
- // 寮�鍚祦绋�
- ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
- // 缁勮娴佺▼閫氱敤绫�
- BladeFlow flow = new BladeFlow();
- flow.setProcessInstanceId(processInstance.getId());
- return R.data(flow);
- }
-
- @Override
- @PostMapping(COMPLETE_TASK)
- public R completeTask(String taskId, String processInstanceId, String comment, @RequestBody Map<String, Object> variables) {
- // 澧炲姞璇勮
- if (StringUtil.isNoneBlank(processInstanceId, comment)) {
- taskService.addComment(taskId, processInstanceId, comment);
- }
- // 闈炵┖鍒ゆ柇
- if (Func.isEmpty(variables)) {
- variables = Kv.create();
- }
- // 瀹屾垚浠诲姟
- taskService.complete(taskId, variables);
- return R.success("娴佺▼鎻愪氦鎴愬姛");
- }
-
- @Override
- @GetMapping(TASK_VARIABLE)
- public R<Object> taskVariable(String taskId, String variableName) {
- return R.data(taskService.getVariable(taskId, variableName));
- }
-
- @Override
- @GetMapping(TASK_VARIABLES)
- public R<Map<String, Object>> taskVariables(String taskId) {
- return R.data(taskService.getVariables(taskId));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/FlowBusinessService.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/FlowBusinessService.java
deleted file mode 100644
index 8fb4227..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/FlowBusinessService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.flow.business.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.flow.core.entity.BladeFlow;
-
-/**
- * 娴佺▼涓氬姟绫�
- *
- * @author Chill
- */
-public interface FlowBusinessService {
-
- /**
- * 娴佺▼寰呯鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param bladeFlow 娴佺▼绫�
- * @return
- */
- IPage<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
-
- /**
- * 娴佺▼寰呭姙鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param bladeFlow 娴佺▼绫�
- * @return
- */
- IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
-
- /**
- * 娴佺▼宸插彂鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param bladeFlow 娴佺▼绫�
- * @return
- */
- IPage<BladeFlow> selectSendPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
-
- /**
- * 娴佺▼鍔炵粨鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param bladeFlow 娴佺▼绫�
- * @return
- */
- IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow);
-
- /**
- * 瀹屾垚浠诲姟
- *
- * @param leave 璇峰亣淇℃伅
- * @return boolean
- */
- boolean completeTask(BladeFlow leave);
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java
deleted file mode 100644
index 0db6bba..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * 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.flow.business.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
-import org.flowable.engine.HistoryService;
-import org.flowable.engine.TaskService;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.flowable.task.api.TaskQuery;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.flowable.task.api.history.HistoricTaskInstanceQuery;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.business.service.FlowBusinessService;
-import org.springblade.flow.core.constant.ProcessConstant;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.core.utils.TaskUtil;
-import org.springblade.flow.engine.constant.FlowEngineConstant;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springblade.flow.engine.utils.FlowCache;
-import org.springframework.stereotype.Service;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 娴佺▼涓氬姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@AllArgsConstructor
-public class FlowBusinessServiceImpl implements FlowBusinessService {
-
- private final TaskService taskService;
- private final HistoryService historyService;
-
- @Override
- public IPage<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
- String taskUser = TaskUtil.getTaskUser();
- String taskGroup = TaskUtil.getCandidateGroup();
- List<BladeFlow> flowList = new LinkedList<>();
-
- // 涓汉绛夊緟绛炬敹鐨勪换鍔�
- TaskQuery claimUserQuery = taskService.createTaskQuery().taskCandidateUser(taskUser)
- .includeProcessVariables().active().orderByTaskCreateTime().desc();
- // 瀹氬埗娴佺▼绛夊緟绛炬敹鐨勪换鍔�
- TaskQuery claimRoleWithTenantIdQuery = taskService.createTaskQuery().taskTenantId(AuthUtil.getTenantId()).taskCandidateGroupIn(Func.toStrList(taskGroup))
- .includeProcessVariables().active().orderByTaskCreateTime().desc();
- // 閫氱敤娴佺▼绛夊緟绛炬敹鐨勪换鍔�
- TaskQuery claimRoleWithoutTenantIdQuery = taskService.createTaskQuery().taskWithoutTenantId().taskCandidateGroupIn(Func.toStrList(taskGroup))
- .includeProcessVariables().active().orderByTaskCreateTime().desc();
-
- // 鏋勫缓鍒楄〃鏁版嵁
- buildFlowTaskList(bladeFlow, flowList, claimUserQuery, FlowEngineConstant.STATUS_CLAIM);
- buildFlowTaskList(bladeFlow, flowList, claimRoleWithTenantIdQuery, FlowEngineConstant.STATUS_CLAIM);
- buildFlowTaskList(bladeFlow, flowList, claimRoleWithoutTenantIdQuery, FlowEngineConstant.STATUS_CLAIM);
-
- // 璁$畻鎬绘暟
- long count = claimUserQuery.count() + claimRoleWithTenantIdQuery.count() + claimRoleWithoutTenantIdQuery.count();
- // 璁剧疆椤垫暟
- page.setSize(count);
- // 璁剧疆鎬绘暟
- page.setTotal(count);
- // 璁剧疆鏁版嵁
- page.setRecords(flowList);
- return page;
- }
-
- @Override
- public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
- String taskUser = TaskUtil.getTaskUser();
- List<BladeFlow> flowList = new LinkedList<>();
-
- // 宸茬鏀剁殑浠诲姟
- TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(taskUser).active()
- .includeProcessVariables().orderByTaskCreateTime().desc();
-
- // 鏋勫缓鍒楄〃鏁版嵁
- buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO);
-
- // 璁$畻鎬绘暟
- long count = todoQuery.count();
- // 璁剧疆椤垫暟
- page.setSize(count);
- // 璁剧疆鎬绘暟
- page.setTotal(count);
- // 璁剧疆鏁版嵁
- page.setRecords(flowList);
- return page;
- }
-
- @Override
- public IPage<BladeFlow> selectSendPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
- String taskUser = TaskUtil.getTaskUser();
- List<BladeFlow> flowList = new LinkedList<>();
-
- HistoricProcessInstanceQuery historyQuery = historyService.createHistoricProcessInstanceQuery().startedBy(taskUser).orderByProcessInstanceStartTime().desc();
-
- if (bladeFlow.getCategory() != null) {
- historyQuery.processDefinitionCategory(bladeFlow.getCategory());
- }
- if (bladeFlow.getProcessDefinitionName() != null) {
- historyQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
- }
- if (bladeFlow.getBeginDate() != null) {
- historyQuery.startedAfter(bladeFlow.getBeginDate());
- }
- if (bladeFlow.getEndDate() != null) {
- historyQuery.startedBefore(bladeFlow.getEndDate());
- }
-
- // 鏌ヨ鍒楄〃
- List<HistoricProcessInstance> historyList = historyQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
-
- historyList.forEach(historicProcessInstance -> {
- BladeFlow flow = new BladeFlow();
- // historicProcessInstance
- flow.setCreateTime(historicProcessInstance.getStartTime());
- flow.setEndTime(historicProcessInstance.getEndTime());
- flow.setVariables(historicProcessInstance.getProcessVariables());
- String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
- if (businessKey.length > 1) {
- flow.setBusinessTable(businessKey[0]);
- flow.setBusinessId(businessKey[1]);
- }
- flow.setHistoryActivityName(historicProcessInstance.getName());
- flow.setProcessInstanceId(historicProcessInstance.getId());
- flow.setHistoryProcessInstanceId(historicProcessInstance.getId());
- // ProcessDefinition
- FlowProcess processDefinition = FlowCache.getProcessDefinition(historicProcessInstance.getProcessDefinitionId());
- flow.setProcessDefinitionId(processDefinition.getId());
- flow.setProcessDefinitionName(processDefinition.getName());
- flow.setProcessDefinitionVersion(processDefinition.getVersion());
- flow.setProcessDefinitionKey(processDefinition.getKey());
- flow.setCategory(processDefinition.getCategory());
- flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
- flow.setProcessInstanceId(historicProcessInstance.getId());
- // HistoricTaskInstance
- List<HistoricTaskInstance> historyTasks = historyService.createHistoricTaskInstanceQuery().processInstanceId(historicProcessInstance.getId()).orderByHistoricTaskInstanceEndTime().desc().list();
- if (Func.isNotEmpty(historyTasks)) {
- HistoricTaskInstance historyTask = historyTasks.iterator().next();
- flow.setTaskId(historyTask.getId());
- flow.setTaskName(historyTask.getName());
- flow.setTaskDefinitionKey(historyTask.getTaskDefinitionKey());
- }
- // Status
- if (historicProcessInstance.getEndActivityId() != null) {
- flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED);
- } else {
- flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED);
- }
- flow.setStatus(FlowEngineConstant.STATUS_FINISH);
- flowList.add(flow);
- });
-
- // 璁$畻鎬绘暟
- long count = historyQuery.count();
- // 璁剧疆鎬绘暟
- page.setTotal(count);
- page.setRecords(flowList);
- return page;
- }
-
- @Override
- public IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
- String taskUser = TaskUtil.getTaskUser();
- List<BladeFlow> flowList = new LinkedList<>();
-
- HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished()
- .includeProcessVariables().orderByHistoricTaskInstanceEndTime().desc();
-
- if (bladeFlow.getCategory() != null) {
- doneQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory()));
- }
- if (bladeFlow.getProcessDefinitionName() != null) {
- doneQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
- }
- if (bladeFlow.getBeginDate() != null) {
- doneQuery.taskCompletedAfter(bladeFlow.getBeginDate());
- }
- if (bladeFlow.getEndDate() != null) {
- doneQuery.taskCompletedBefore(bladeFlow.getEndDate());
- }
-
- // 鏌ヨ鍒楄〃
- List<HistoricTaskInstance> doneList = doneQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
- doneList.forEach(historicTaskInstance -> {
- BladeFlow flow = new BladeFlow();
- flow.setTaskId(historicTaskInstance.getId());
- flow.setTaskDefinitionKey(historicTaskInstance.getTaskDefinitionKey());
- flow.setTaskName(historicTaskInstance.getName());
- flow.setAssignee(historicTaskInstance.getAssignee());
- flow.setCreateTime(historicTaskInstance.getCreateTime());
- flow.setExecutionId(historicTaskInstance.getExecutionId());
- flow.setHistoryTaskEndTime(historicTaskInstance.getEndTime());
- flow.setVariables(historicTaskInstance.getProcessVariables());
-
- FlowProcess processDefinition = FlowCache.getProcessDefinition(historicTaskInstance.getProcessDefinitionId());
- flow.setProcessDefinitionId(processDefinition.getId());
- flow.setProcessDefinitionName(processDefinition.getName());
- flow.setProcessDefinitionKey(processDefinition.getKey());
- flow.setProcessDefinitionVersion(processDefinition.getVersion());
- flow.setCategory(processDefinition.getCategory());
- flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
-
- flow.setProcessInstanceId(historicTaskInstance.getProcessInstanceId());
- flow.setHistoryProcessInstanceId(historicTaskInstance.getProcessInstanceId());
- HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance((historicTaskInstance.getProcessInstanceId()));
- if (Func.isNotEmpty(historicProcessInstance)) {
- String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
- flow.setBusinessTable(businessKey[0]);
- flow.setBusinessId(businessKey[1]);
- if (historicProcessInstance.getEndActivityId() != null) {
- flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED);
- } else {
- flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED);
- }
- }
- flow.setStatus(FlowEngineConstant.STATUS_FINISH);
- flowList.add(flow);
- });
- // 璁$畻鎬绘暟
- long count = doneQuery.count();
- // 璁剧疆鎬绘暟
- page.setTotal(count);
- page.setRecords(flowList);
- return page;
- }
-
- @Override
- public boolean completeTask(BladeFlow flow) {
- String taskId = flow.getTaskId();
- String processInstanceId = flow.getProcessInstanceId();
- String comment = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT);
- // 澧炲姞璇勮
- if (StringUtil.isNoneBlank(processInstanceId, comment)) {
- taskService.addComment(taskId, processInstanceId, comment);
- }
- // 鍒涘缓鍙橀噺
- Map<String, Object> variables = flow.getVariables();
- if (variables == null) {
- variables = Kv.create();
- }
- variables.put(ProcessConstant.PASS_KEY, flow.isPass());
- // 瀹屾垚浠诲姟
- taskService.complete(taskId, variables);
- return true;
- }
-
- /**
- * 鏋勫缓娴佺▼
- *
- * @param bladeFlow 娴佺▼閫氱敤绫�
- * @param flowList 娴佺▼鍒楄〃
- * @param taskQuery 浠诲姟鏌ヨ绫�
- * @param status 鐘舵��
- */
- private void buildFlowTaskList(BladeFlow bladeFlow, List<BladeFlow> flowList, TaskQuery taskQuery, String status) {
- if (bladeFlow.getCategory() != null) {
- taskQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory()));
- }
- if (bladeFlow.getProcessDefinitionName() != null) {
- taskQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
- }
- if (bladeFlow.getBeginDate() != null) {
- taskQuery.taskCreatedAfter(bladeFlow.getBeginDate());
- }
- if (bladeFlow.getEndDate() != null) {
- taskQuery.taskCreatedBefore(bladeFlow.getEndDate());
- }
- taskQuery.list().forEach(task -> {
- BladeFlow flow = new BladeFlow();
- flow.setTaskId(task.getId());
- flow.setTaskDefinitionKey(task.getTaskDefinitionKey());
- flow.setTaskName(task.getName());
- flow.setAssignee(task.getAssignee());
- flow.setCreateTime(task.getCreateTime());
- flow.setClaimTime(task.getClaimTime());
- flow.setExecutionId(task.getExecutionId());
- flow.setVariables(task.getProcessVariables());
-
- HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId());
- if (Func.isNotEmpty(historicProcessInstance)) {
- String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
- flow.setBusinessTable(businessKey[0]);
- flow.setBusinessId(businessKey[1]);
- }
-
- FlowProcess processDefinition = FlowCache.getProcessDefinition(task.getProcessDefinitionId());
- flow.setCategory(processDefinition.getCategory());
- flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
- flow.setProcessDefinitionId(processDefinition.getId());
- flow.setProcessDefinitionName(processDefinition.getName());
- flow.setProcessDefinitionKey(processDefinition.getKey());
- flow.setProcessDefinitionVersion(processDefinition.getVersion());
- flow.setProcessInstanceId(task.getProcessInstanceId());
- flow.setStatus(status);
- flowList.add(flow);
- });
- }
-
- /**
- * 鑾峰彇鍘嗗彶娴佺▼
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @return HistoricProcessInstance
- */
- private HistoricProcessInstance getHistoricProcessInstance(String processInstanceId) {
- return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/config/FlowableConfiguration.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/config/FlowableConfiguration.java
deleted file mode 100644
index f0aff2b..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/config/FlowableConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.flow.engine.config;
-
-import lombok.AllArgsConstructor;
-import org.flowable.spring.SpringProcessEngineConfiguration;
-import org.flowable.spring.boot.EngineConfigurationConfigurer;
-import org.flowable.spring.boot.FlowableProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Flowable閰嶇疆绫�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-@EnableConfigurationProperties(FlowableProperties.class)
-public class FlowableConfiguration implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
- private final FlowableProperties flowableProperties;
-
- @Override
- public void configure(SpringProcessEngineConfiguration engineConfiguration) {
- engineConfiguration.setActivityFontName(flowableProperties.getActivityFontName());
- engineConfiguration.setLabelFontName(flowableProperties.getLabelFontName());
- engineConfiguration.setAnnotationFontName(flowableProperties.getAnnotationFontName());
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/constant/FlowEngineConstant.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/constant/FlowEngineConstant.java
deleted file mode 100644
index bb660ab..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/constant/FlowEngineConstant.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.flow.engine.constant;
-
-/**
- * 娴佺▼甯搁噺.
- *
- * @author zhuangqian
- */
-public interface FlowEngineConstant {
-
- String FLOWABLE_BASE_PACKAGES = "org.flowable.ui";
-
- String SUFFIX = ".bpmn20.xml";
-
- String ACTIVE = "active";
-
- String SUSPEND = "suspend";
-
- String STATUS_TODO = "todo";
-
- String STATUS_CLAIM = "claim";
-
- String STATUS_SEND = "send";
-
- String STATUS_DONE = "done";
-
- String STATUS_FINISHED = "finished";
-
- String STATUS_UNFINISHED = "unfinished";
-
- String STATUS_FINISH = "finish";
-
- String START_EVENT = "startEvent";
-
- String END_EVENT = "endEvent";
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java
deleted file mode 100644
index 253b6e1..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.flow.engine.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.flow.engine.entity.FlowExecution;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 娴佺▼鐘舵�佹帶鍒跺櫒
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@RequestMapping("follow")
-@AllArgsConstructor
-//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-public class FlowFollowController {
-
- private final FlowEngineService flowEngineService;
-
- /**
- * 娴佺▼鐘舵�佸垪琛�
- */
- @GetMapping("list")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
- public R<IPage<FlowExecution>> list(Query query, @ApiParam(value = "娴佺▼瀹炰緥id") String processInstanceId, @ApiParam(value = "娴佺▼key") String processDefinitionKey) {
- IPage<FlowExecution> pages = flowEngineService.selectFollowPage(Condition.getPage(query), processInstanceId, processDefinitionKey);
- return R.data(pages);
- }
-
- /**
- * 鍒犻櫎娴佺▼瀹炰緥
- */
- @PostMapping("delete-process-instance")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭闆嗗悎")
- public R deleteProcessInstance(@ApiParam(value = "娴佺▼瀹炰緥id") @RequestParam String processInstanceId, @ApiParam(value = "鍒犻櫎鍘熷洜") @RequestParam String deleteReason) {
- boolean temp = flowEngineService.deleteProcessInstance(processInstanceId, deleteReason);
- return R.status(temp);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java
deleted file mode 100644
index 1ae54d1..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.flow.engine.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.flow.engine.constant.FlowEngineConstant;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 娴佺▼绠$悊鎺ュ彛
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@RequestMapping("manager")
-@AllArgsConstructor
-@Api(value = "娴佺▼绠$悊鎺ュ彛", tags = "娴佺▼绠$悊鎺ュ彛")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-public class FlowManagerController {
-
- private final FlowEngineService flowEngineService;
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("list")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆娴佺▼绫诲瀷")
- public R<IPage<FlowProcess>> list(@ApiParam("娴佺▼绫诲瀷") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) {
- IPage<FlowProcess> pages = flowEngineService.selectProcessPage(Condition.getPage(query), category, mode);
- return R.data(pages);
- }
-
-
- /**
- * 鍙樻洿娴佺▼鐘舵��
- *
- * @param state 鐘舵��
- * @param processId 娴佺▼id
- */
- @PostMapping("change-state")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍙樻洿娴佺▼鐘舵��", notes = "浼犲叆state,processId")
- public R changeState(@RequestParam String state, @RequestParam String processId) {
- String msg = flowEngineService.changeState(state, processId);
- return R.success(msg);
- }
-
- /**
- * 鍒犻櫎閮ㄧ讲娴佺▼
- *
- * @param deploymentIds 閮ㄧ讲娴佺▼id闆嗗悎
- */
- @PostMapping("delete-deployment")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒犻櫎閮ㄧ讲娴佺▼", notes = "閮ㄧ讲娴佺▼id闆嗗悎")
- public R deleteDeployment(String deploymentIds) {
- return R.status(flowEngineService.deleteDeployment(deploymentIds));
- }
-
- /**
- * 妫�鏌ユ祦绋嬫枃浠舵牸寮�
- *
- * @param file 娴佺▼鏂囦欢
- */
- @PostMapping("check-upload")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "涓婁紶閮ㄧ讲娴佺▼鏂囦欢", notes = "浼犲叆鏂囦欢")
- public R checkUpload(@RequestParam MultipartFile file) {
- boolean temp = Objects.requireNonNull(file.getOriginalFilename()).endsWith(FlowEngineConstant.SUFFIX);
- return R.data(Kv.create().set("name", file.getOriginalFilename()).set("success", temp));
- }
-
- /**
- * 涓婁紶閮ㄧ讲娴佺▼鏂囦欢
- *
- * @param files 娴佺▼鏂囦欢
- * @param category 绫诲瀷
- */
- @PostMapping("deploy-upload")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "涓婁紶閮ㄧ讲娴佺▼鏂囦欢", notes = "浼犲叆鏂囦欢")
- public R deployUpload(@RequestParam List<MultipartFile> files,
- @RequestParam String category,
- @RequestParam(required = false, defaultValue = "") String tenantIds) {
- return R.status(flowEngineService.deployUpload(files, category, Func.toStrList(tenantIds)));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java
deleted file mode 100644
index ce2c5ed..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.flow.engine.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.flow.engine.entity.FlowModel;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.Map;
-
-/**
- * 娴佺▼妯″瀷鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@RequestMapping("model")
-@AllArgsConstructor
-//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-public class FlowModelController {
-
- private final FlowEngineService flowEngineService;
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "modelKey", value = "妯″瀷鏍囪瘑", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "妯″瀷鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
- public R<IPage<FlowModel>> list(@ApiIgnore @RequestParam Map<String, Object> flow, Query query) {
- IPage<FlowModel> pages = flowEngineService.page(Condition.getPage(query), Condition.getQueryWrapper(flow, FlowModel.class)
- .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated")
- .orderByDesc("last_updated"));
- return R.data(pages);
- }
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭闆嗗悎")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎") @RequestParam String ids) {
- boolean temp = flowEngineService.removeByIds(Func.toStrList(ids));
- return R.status(temp);
- }
-
- /**
- * 閮ㄧ讲
- */
- @PostMapping("/deploy")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "閮ㄧ讲", notes = "浼犲叆妯″瀷id鍜屽垎绫�")
- public R deploy(@ApiParam(value = "妯″瀷id") @RequestParam String modelId,
- @ApiParam(value = "宸ヤ綔娴佸垎绫�") @RequestParam String category,
- @ApiParam(value = "绉熸埛ID") @RequestParam(required = false, defaultValue = "") String tenantIds) {
- boolean temp = flowEngineService.deployModel(modelId, category, Func.toStrList(tenantIds));
- return R.status(temp);
- }
-
- @PostMapping("submit")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇濆瓨/缂栬緫")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "妯″瀷id"),
- @ApiImplicitParam(name = "name", value = "妯″瀷鍚嶇О", required = true),
- @ApiImplicitParam(name = "modelKey", value = "妯″瀷key", required = true),
- @ApiImplicitParam(name = "description", value = "妯″瀷鎻忚堪"),
- @ApiImplicitParam(name = "xml", value = "妯″瀷xml", required = true),
- })
- public R<FlowModel> submit(@RequestBody @ApiIgnore FlowModel model) {
- return R.data(flowEngineService.submitModel(model));
- }
-
- @GetMapping("detail")
- @ApiOperation(value = "璇︽儏")
- @ApiOperationSupport(order = 5)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "妯″瀷id", required = true),
- })
- public R<FlowModel> detail(String id) {
- return R.data(flowEngineService.getById(id));
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java
deleted file mode 100644
index 35e1bd3..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.flow.engine.controller;
-
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * 娴佺▼閫氱敤鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@Slf4j
-@RestController
-@AllArgsConstructor
-@RequestMapping("process")
-public class FlowProcessController {
-
- private static final String IMAGE_NAME = "image";
- private final FlowEngineService flowEngineService;
-
- /**
- * 鑾峰彇娴佽浆鍘嗗彶鍒楄〃
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param startActivityId 寮�濮嬭妭鐐筰d
- * @param endActivityId 缁撴潫鑺傜偣id
- */
- @GetMapping(value = "history-flow-list")
- public R<List<BladeFlow>> historyFlowList(@RequestParam String processInstanceId, String startActivityId, String endActivityId) {
- return R.data(flowEngineService.historyFlowList(processInstanceId, startActivityId, endActivityId));
- }
-
- /**
- * 娴佺▼鑺傜偣杩涚▼鍥�
- *
- * @param processDefinitionId 娴佺▼id
- * @param processInstanceId 娴佺▼瀹炰緥id
- */
- @GetMapping(value = "model-view")
- public R modelView(String processDefinitionId, String processInstanceId) {
- return R.data(flowEngineService.modelView(processDefinitionId, processInstanceId));
- }
-
- /**
- * 娴佺▼鑺傜偣杩涚▼鍥�
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param httpServletResponse http鍝嶅簲
- */
- @GetMapping(value = "diagram-view")
- public void diagramView(String processInstanceId, HttpServletResponse httpServletResponse) {
- flowEngineService.diagramView(processInstanceId, httpServletResponse);
- }
-
- /**
- * 娴佺▼鍥惧睍绀�
- *
- * @param processDefinitionId 娴佺▼id
- * @param processInstanceId 瀹炰緥id
- * @param AutowiredType 璧勬簮绫诲瀷
- * @param response 鍝嶅簲
- */
- @GetMapping("Autowired-view")
- public void AutowiredView(@RequestParam String processDefinitionId, String processInstanceId, @RequestParam(defaultValue = IMAGE_NAME) String AutowiredType, HttpServletResponse response) {
- flowEngineService.AutowiredView(processDefinitionId, processInstanceId, AutowiredType, response);
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowExecution.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowExecution.java
deleted file mode 100644
index f8ed862..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowExecution.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.flow.engine.entity;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 杩愯瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-public class FlowExecution implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private String id;
- private String name;
- private String startUserId;
- private String startUser;
- private Date startTime;
- private String taskDefinitionId;
- private String taskDefinitionKey;
- private String category;
- private String categoryName;
- private String processInstanceId;
- private String processDefinitionId;
- private String processDefinitionKey;
- private String activityId;
- private int suspensionState;
- private String executionId;
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowModel.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowModel.java
deleted file mode 100644
index b37109a..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowModel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.flow.engine.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 娴佺▼妯″瀷
- *
- * @author Chill
- */
-@Data
-@TableName("ACT_DE_MODEL")
-public class FlowModel implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static final int MODEL_TYPE_BPMN = 0;
- public static final int MODEL_TYPE_FORM = 2;
- public static final int MODEL_TYPE_APP = 3;
- public static final int MODEL_TYPE_DECISION_TABLE = 4;
- public static final int MODEL_TYPE_CMMN = 5;
-
- private String id;
- private String name;
- private String modelKey;
- private String description;
- private Date created;
- private Date lastUpdated;
- private String createdBy;
- private String lastUpdatedBy;
- private Integer version;
- private String modelEditorJson;
- private String modelComment;
- private Integer modelType;
- private String tenantId;
- private byte[] thumbnail;
- private String modelEditorXml;
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowProcess.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowProcess.java
deleted file mode 100644
index 9030053..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/entity/FlowProcess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.flow.engine.entity;
-
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
-import org.springblade.flow.engine.utils.FlowCache;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * FlowProcess
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-public class FlowProcess implements Serializable {
-
- private String id;
- private String tenantId;
- private String name;
- private String key;
- private String category;
- private String categoryName;
- private Integer version;
- private String deploymentId;
- private String ResourceName;
- private String diagramResourceName;
- private Integer suspensionState;
- private Date deploymentTime;
-
- public FlowProcess(ProcessDefinitionEntityImpl entity) {
- if (entity != null) {
- this.id = entity.getId();
- this.tenantId = entity.getTenantId();
- this.name = entity.getName();
- this.key = entity.getKey();
- this.category = entity.getCategory();
- this.categoryName = FlowCache.getCategoryName(entity.getCategory());
- this.version = entity.getVersion();
- this.deploymentId = entity.getDeploymentId();
- this.ResourceName = entity.getResourceName();
- this.diagramResourceName = entity.getDiagramResourceName();
- this.suspensionState = entity.getSuspensionState();
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.java
deleted file mode 100644
index 681b385..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.flow.engine.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.flow.engine.entity.FlowModel;
-
-import java.util.List;
-
-/**
- * FlowMapper.
- *
- * @author Chill
- */
-public interface FlowMapper extends BaseMapper<FlowModel> {
-
- /**
- * 鑷畾涔夊垎椤�
- * @param page
- * @param flowModel
- * @return
- */
- List<FlowModel> selectFlowPage(IPage page, FlowModel flowModel);
-
- /**
- * 鑾峰彇妯″瀷
- * @param parentModelId
- * @return
- */
- List<FlowModel> findByParentModelId(String parentModelId);
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.xml b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.xml
deleted file mode 100644
index a7af970..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/mapper/FlowMapper.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java
deleted file mode 100644
index 2ef752b..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.flow.engine.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.engine.entity.FlowExecution;
-import org.springblade.flow.engine.entity.FlowModel;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-import java.util.Map;
-
-/**
- * FlowService
- *
- * @author Chill
- */
-public interface FlowEngineService extends IService<FlowModel> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param flowModel 娴佺▼妯″瀷
- * @return
- */
- IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel);
-
- /**
- * 娴佺▼绠$悊鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param category 鍒嗙被
- * @param mode 褰㈡��
- * @return
- */
- IPage<FlowProcess> selectProcessPage(IPage<FlowProcess> page, String category, Integer mode);
-
- /**
- * 娴佺▼绠$悊鍒楄〃
- *
- * @param page 鍒嗛〉宸ュ叿
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param processDefinitionKey 娴佺▼key
- * @return
- */
- IPage<FlowExecution> selectFollowPage(IPage<FlowExecution> page, String processInstanceId, String processDefinitionKey);
-
- /**
- * 鑾峰彇娴佽浆鍘嗗彶鍒楄〃
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param startActivityId 寮�濮嬭妭鐐筰d
- * @param endActivityId 缁撴潫鑺傜偣id
- * @return
- */
- List<BladeFlow> historyFlowList(String processInstanceId, String startActivityId, String endActivityId);
-
- /**
- * 鍙樻洿娴佺▼鐘舵��
- *
- * @param state 鐘舵��
- * @param processId 娴佺▼ID
- * @return
- */
- String changeState(String state, String processId);
-
- /**
- * 鍒犻櫎閮ㄧ讲娴佺▼
- *
- * @param deploymentIds 閮ㄧ讲娴佺▼id闆嗗悎
- * @return
- */
- boolean deleteDeployment(String deploymentIds);
-
- /**
- * 涓婁紶閮ㄧ讲娴佺▼
- *
- * @param files 娴佺▼閰嶇疆鏂囦欢
- * @param category 娴佺▼鍒嗙被
- * @param tenantIdList 绉熸埛id闆嗗悎
- * @return
- */
- boolean deployUpload(List<MultipartFile> files, String category, List<String> tenantIdList);
-
- /**
- * 閮ㄧ讲娴佺▼
- *
- * @param modelId 妯″瀷id
- * @param category 鍒嗙被
- * @param tenantIdList 绉熸埛id闆嗗悎
- * @return
- */
- boolean deployModel(String modelId, String category, List<String> tenantIdList);
-
- /**
- * 鍒犻櫎娴佺▼瀹炰緥
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @param deleteReason 鍒犻櫎鍘熷洜
- * @return
- */
- boolean deleteProcessInstance(String processInstanceId, String deleteReason);
-
-
- /**
- * 淇濆瓨/鏇存柊妯″瀷
- *
- * @param model 妯″瀷
- * @return 妯″瀷
- */
- FlowModel submitModel(FlowModel model);
-
- /**
- * 娴佺▼鑺傜偣杩涚▼鍥�
- *
- * @param processDefinitionId
- * @param processInstanceId
- * @return
- */
- Map<String, Object> modelView(String processDefinitionId, String processInstanceId);
-
- /**
- * 娴佺▼鑺傜偣杩涚▼鍥�
- *
- * @param processInstanceId
- * @param httpServletResponse
- */
- void diagramView(String processInstanceId, HttpServletResponse httpServletResponse);
-
- /**
- * 娴佺▼鍥惧睍绀�
- *
- * @param processDefinitionId
- * @param processInstanceId
- * @param AutowiredType
- * @param response
- */
- void AutowiredView(String processDefinitionId, String processInstanceId, String AutowiredType, HttpServletResponse response);
-
- /**
- * 鑾峰彇XML
- *
- * @param model
- * @return
- */
- byte[] getModelEditorXML(FlowModel model);
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java
deleted file mode 100644
index f308b59..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- * 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.flow.engine.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.flowable.bpmn.converter.BpmnXMLConverter;
-import org.flowable.bpmn.model.BpmnModel;
-import org.flowable.bpmn.model.Process;
-import org.flowable.common.engine.impl.util.IoUtil;
-import org.flowable.common.engine.impl.util.io.StringStreamSource;
-import org.flowable.editor.language.json.converter.BpmnJsonConverter;
-import org.flowable.engine.*;
-import org.flowable.engine.history.HistoricActivityInstance;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
-import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.engine.repository.ProcessDefinitionQuery;
-import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.engine.runtime.ProcessInstanceQuery;
-import org.flowable.engine.task.Comment;
-import org.flowable.image.ProcessDiagramGenerator;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.FileUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.core.enums.FlowModeEnum;
-import org.springblade.flow.core.utils.TaskUtil;
-import org.springblade.flow.engine.constant.FlowEngineConstant;
-import org.springblade.flow.engine.entity.FlowExecution;
-import org.springblade.flow.engine.entity.FlowModel;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springblade.flow.engine.mapper.FlowMapper;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springblade.flow.engine.utils.FlowCache;
-import org.springblade.system.user.cache.UserCache;
-import org.springblade.system.user.entity.User;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.*;
-
-/**
- * 宸ヤ綔娴佹湇鍔″疄鐜扮被
- *
- * @author Chill
- */
-@Slf4j
-@Service
-@AllArgsConstructor
-public class FlowEngineServiceImpl extends ServiceImpl<FlowMapper, FlowModel> implements FlowEngineService {
- private static final String ALREADY_IN_STATE = "already in state";
- private static final String USR_TASK = "userTask";
- private static final String IMAGE_NAME = "image";
- private static final String XML_NAME = "xml";
- private static final Integer INT_1024 = 1024;
- private static final BpmnJsonConverter BPMN_JSON_CONVERTER = new BpmnJsonConverter();
- private static final BpmnXMLConverter BPMN_XML_CONVERTER = new BpmnXMLConverter();
- private final ObjectMapper objectMapper;
- private final RepositoryService repositoryService;
- private final RuntimeService runtimeService;
- private final HistoryService historyService;
- private final TaskService taskService;
- private final ProcessEngine processEngine;
-
- @Override
- public IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel) {
- return page.setRecords(baseMapper.selectFlowPage(page, flowModel));
- }
-
- @Override
- public IPage<FlowProcess> selectProcessPage(IPage<FlowProcess> page, String category, Integer mode) {
- ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery().latestVersion().orderByProcessDefinitionKey().asc();
- // 閫氱敤娴佺▼
- if (mode == FlowModeEnum.COMMON.getMode()) {
- processDefinitionQuery.processDefinitionWithoutTenantId();
- }
- // 瀹氬埗娴佺▼
- else if (!AuthUtil.isAdministrator()) {
- processDefinitionQuery.processDefinitionTenantId(AuthUtil.getTenantId());
- }
- if (StringUtils.isNotEmpty(category)) {
- processDefinitionQuery.processDefinitionCategory(category);
- }
- List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
- List<FlowProcess> flowProcessList = new ArrayList<>();
- processDefinitionList.forEach(processDefinition -> {
- String deploymentId = processDefinition.getDeploymentId();
- Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
- FlowProcess flowProcess = new FlowProcess((ProcessDefinitionEntityImpl) processDefinition);
- flowProcess.setDeploymentTime(deployment.getDeploymentTime());
- flowProcessList.add(flowProcess);
- });
- page.setTotal(processDefinitionQuery.count());
- page.setRecords(flowProcessList);
- return page;
- }
-
- @Override
- public IPage<FlowExecution> selectFollowPage(IPage<FlowExecution> page, String processInstanceId, String processDefinitionKey) {
- ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
- if (StringUtil.isNotBlank(processInstanceId)) {
- processInstanceQuery.processInstanceId(processInstanceId);
- }
- if (StringUtil.isNotBlank(processDefinitionKey)) {
- processInstanceQuery.processDefinitionKey(processDefinitionKey);
- }
- List<FlowExecution> flowList = new ArrayList<>();
- List<ProcessInstance> procInsList = processInstanceQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
- procInsList.forEach(processInstance -> {
- ExecutionEntityImpl execution = (ExecutionEntityImpl) processInstance;
- FlowExecution flowExecution = new FlowExecution();
- flowExecution.setId(execution.getId());
- flowExecution.setName(execution.getName());
- flowExecution.setStartUserId(execution.getStartUserId());
- User taskUser = UserCache.getUserByTaskUser(execution.getStartUserId());
- if (taskUser != null) {
- flowExecution.setStartUser(taskUser.getName());
- }
- flowExecution.setStartTime(execution.getStartTime());
- flowExecution.setExecutionId(execution.getId());
- flowExecution.setProcessInstanceId(execution.getProcessInstanceId());
- flowExecution.setProcessDefinitionId(execution.getProcessDefinitionId());
- flowExecution.setProcessDefinitionKey(execution.getProcessDefinitionKey());
- flowExecution.setSuspensionState(execution.getSuspensionState());
- FlowProcess processDefinition = FlowCache.getProcessDefinition(execution.getProcessDefinitionId());
- flowExecution.setCategory(processDefinition.getCategory());
- flowExecution.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
- flowList.add(flowExecution);
- });
- page.setTotal(processInstanceQuery.count());
- page.setRecords(flowList);
- return page;
- }
-
- @Override
- public List<BladeFlow> historyFlowList(String processInstanceId, String startActivityId, String endActivityId) {
- List<BladeFlow> flowList = new LinkedList<>();
- List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().orderByHistoricActivityInstanceEndTime().asc().list();
- boolean start = false;
- Map<String, Integer> activityMap = new HashMap<>(16);
- for (int i = 0; i < historicActivityInstanceList.size(); i++) {
- HistoricActivityInstance historicActivityInstance = historicActivityInstanceList.get(i);
- // 杩囨护寮�濮嬭妭鐐瑰墠鐨勮妭鐐�
- if (StringUtil.isNotBlank(startActivityId) && startActivityId.equals(historicActivityInstance.getActivityId())) {
- start = true;
- }
- if (StringUtil.isNotBlank(startActivityId) && !start) {
- continue;
- }
- // 鏄剧ず寮�濮嬭妭鐐瑰拰缁撴潫鑺傜偣锛屽苟涓旀墽琛屼汉涓嶄负绌虹殑浠诲姟
- if (StringUtils.equals(USR_TASK, historicActivityInstance.getActivityType())
- || FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())
- || FlowEngineConstant.END_EVENT.equals(historicActivityInstance.getActivityType())) {
- // 缁欒妭鐐瑰鍔犲簭鍙�
- Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
- if (activityNum == null) {
- activityMap.put(historicActivityInstance.getActivityId(), activityMap.size());
- }
- BladeFlow flow = new BladeFlow();
- flow.setHistoryActivityId(historicActivityInstance.getActivityId());
- flow.setHistoryActivityName(historicActivityInstance.getActivityName());
- flow.setCreateTime(historicActivityInstance.getStartTime());
- flow.setEndTime(historicActivityInstance.getEndTime());
- String durationTime = DateUtil.secondToTime(Func.toLong(historicActivityInstance.getDurationInMillis(), 0L) / 1000);
- flow.setHistoryActivityDurationTime(durationTime);
- // 鑾峰彇娴佺▼鍙戣捣浜哄悕绉�
- if (FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) {
- List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).orderByProcessInstanceStartTime().asc().list();
- if (processInstanceList.size() > 0) {
- if (StringUtil.isNotBlank(processInstanceList.get(0).getStartUserId())) {
- String taskUser = processInstanceList.get(0).getStartUserId();
- User user = UserCache.getUser(TaskUtil.getUserId(taskUser));
- if (user != null) {
- flow.setAssignee(historicActivityInstance.getAssignee());
- flow.setAssigneeName(user.getName());
- }
- }
- }
- }
- // 鑾峰彇浠诲姟鎵ц浜哄悕绉�
- if (StringUtil.isNotBlank(historicActivityInstance.getAssignee())) {
- User user = UserCache.getUser(TaskUtil.getUserId(historicActivityInstance.getAssignee()));
- if (user != null) {
- flow.setAssignee(historicActivityInstance.getAssignee());
- flow.setAssigneeName(user.getName());
- }
- }
- // 鑾峰彇鎰忚璇勮鍐呭
- if (StringUtil.isNotBlank(historicActivityInstance.getTaskId())) {
- List<Comment> commentList = taskService.getTaskComments(historicActivityInstance.getTaskId());
- if (commentList.size() > 0) {
- flow.setComment(commentList.get(0).getFullMessage());
- }
- }
- flowList.add(flow);
- }
- // 杩囨护缁撴潫鑺傜偣鍚庣殑鑺傜偣
- if (StringUtils.isNotBlank(endActivityId) && endActivityId.equals(historicActivityInstance.getActivityId())) {
- boolean temp = false;
- Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
- // 璇ユ椿鍔ㄨ妭鐐癸紝鍚庣画鑺傜偣鏄惁鍦ㄧ粨鏉熻妭鐐逛箣鍓嶏紝鍦ㄥ悗缁妭鐐逛腑鏄惁瀛樺湪
- for (int j = i + 1; j < historicActivityInstanceList.size(); j++) {
- HistoricActivityInstance hi = historicActivityInstanceList.get(j);
- Integer activityNumA = activityMap.get(hi.getActivityId());
- boolean numberTemp = activityNumA != null && activityNumA < activityNum;
- boolean equalsTemp = StringUtils.equals(hi.getActivityId(), historicActivityInstance.getActivityId());
- if (numberTemp || equalsTemp) {
- temp = true;
- }
- }
- if (!temp) {
- break;
- }
- }
- }
- return flowList;
- }
-
- @Override
- public String changeState(String state, String processId) {
- try {
- if (state.equals(FlowEngineConstant.ACTIVE)) {
- repositoryService.activateProcessDefinitionById(processId, true, null);
- return StringUtil.format("婵�娲籌D涓� [{}] 鐨勬祦绋嬫垚鍔�", processId);
- } else if (state.equals(FlowEngineConstant.SUSPEND)) {
- repositoryService.suspendProcessDefinitionById(processId, true, null);
- return StringUtil.format("鎸傝捣ID涓� [{}] 鐨勬祦绋嬫垚鍔�", processId);
- } else {
- return "鏆傛棤娴佺▼鍙樻洿";
- }
- } catch (Exception e) {
- if (e.getMessage().contains(ALREADY_IN_STATE)) {
- return StringUtil.format("ID涓� [{}] 鐨勬祦绋嬪凡鏄鐘舵�侊紝鏃犻渶鎿嶄綔", processId);
- }
- return e.getMessage();
- }
- }
-
- @Override
- public boolean deleteDeployment(String deploymentIds) {
- Func.toStrList(deploymentIds).forEach(deploymentId -> repositoryService.deleteDeployment(deploymentId, true));
- return true;
- }
-
- @Override
- public boolean deployUpload(List<MultipartFile> files, String category, List<String> tenantIdList) {
- files.forEach(file -> {
- try {
- String fileName = file.getOriginalFilename();
- InputStream fileInputStream = file.getInputStream();
- byte[] bytes = FileUtil.copyToByteArray(fileInputStream);
- if (Func.isNotEmpty(tenantIdList)) {
- tenantIdList.forEach(tenantId -> {
- Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).tenantId(tenantId).deploy();
- deploy(deployment, category);
- });
- } else {
- Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).deploy();
- deploy(deployment, category);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- });
- return true;
- }
-
- @Override
- public boolean deployModel(String modelId, String category, List<String> tenantIdList) {
- FlowModel model = this.getById(modelId);
- if (model == null) {
- throw new ServiceException("鏈壘鍒版ā鍨� id: " + modelId);
- }
- byte[] bytes = getBpmnXML(model);
- String processName = model.getName();
- if (!StringUtil.endsWithIgnoreCase(processName, FlowEngineConstant.SUFFIX)) {
- processName += FlowEngineConstant.SUFFIX;
- }
- String finalProcessName = processName;
- if (Func.isNotEmpty(tenantIdList)) {
- tenantIdList.forEach(tenantId -> {
- Deployment deployment = repositoryService.createDeployment().addBytes(finalProcessName, bytes).name(model.getName()).key(model.getModelKey()).tenantId(tenantId).deploy();
- deploy(deployment, category);
- });
- } else {
- Deployment deployment = repositoryService.createDeployment().addBytes(finalProcessName, bytes).name(model.getName()).key(model.getModelKey()).deploy();
- deploy(deployment, category);
- }
- return true;
- }
-
- @Override
- public boolean deleteProcessInstance(String processInstanceId, String deleteReason) {
- runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
- return true;
- }
-
- private void deploy(Deployment deployment, String category) {
- log.debug("娴佺▼閮ㄧ讲--------deploy: " + deployment + " 鍒嗙被---------->" + category);
- List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
- StringBuilder logBuilder = new StringBuilder(500);
- List<Object> logArgs = new ArrayList<>();
- // 璁剧疆娴佺▼鍒嗙被
- for (ProcessDefinition processDefinition : list) {
- if (StringUtil.isNotBlank(category)) {
- repositoryService.setProcessDefinitionCategory(processDefinition.getId(), category);
- }
- logBuilder.append("閮ㄧ讲鎴愬姛,娴佺▼ID={} \n");
- logArgs.add(processDefinition.getId());
- }
- if (list.size() == 0) {
- throw new ServiceException("閮ㄧ讲澶辫触,鏈壘鍒版祦绋�");
- } else {
- log.info(logBuilder.toString(), logArgs.toArray());
- }
- }
-
- @Override
- public FlowModel submitModel(FlowModel model) {
- FlowModel flowModel = new FlowModel();
- flowModel.setId(model.getId());
- flowModel.setVersion(Func.toInt(model.getVersion(), 0) + 1);
- flowModel.setName(model.getName());
- flowModel.setModelKey(model.getModelKey());
- flowModel.setModelType(FlowModel.MODEL_TYPE_BPMN);
- flowModel.setCreatedBy(TaskUtil.getTaskUser());
- flowModel.setDescription(model.getDescription());
- flowModel.setLastUpdated(Calendar.getInstance().getTime());
- flowModel.setLastUpdatedBy(TaskUtil.getTaskUser());
- flowModel.setTenantId(AuthUtil.getTenantId());
- flowModel.setModelEditorXml(model.getModelEditorXml());
- if (StringUtil.isBlank(model.getId())) {
- flowModel.setCreated(Calendar.getInstance().getTime());
- }
- if (StringUtil.isNotBlank(model.getModelEditorXml())) {
- flowModel.setModelEditorJson(getBpmnJson(model.getModelEditorXml()));
- }
- this.saveOrUpdate(flowModel);
- return flowModel;
- }
-
- @Override
- public Map<String, Object> modelView(String processDefinitionId, String processInstanceId) {
- Map<String, Object> result = new HashMap<>();
- // 鑺傜偣鏍囪
- if (StringUtil.isNotBlank(processInstanceId)) {
- result.put("flow", this.historyFlowList(processInstanceId, null, null));
- HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(processInstanceId)
- .singleResult();
- processDefinitionId = processInstance.getProcessDefinitionId();
- }
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
- // 娴佺▼鍥惧睍绀�
- result.put("xml", new String(new BpmnXMLConverter().convertToXML(bpmnModel)));
- return result;
- }
-
- @Override
- public void diagramView(String processInstanceId, HttpServletResponse httpServletResponse) {
- // 鑾峰緱褰撳墠娲诲姩鐨勮妭鐐�
- String processDefinitionId;
- // 濡傛灉娴佺▼宸茬粡缁撴潫锛屽垯寰楀埌缁撴潫鑺傜偣
- if (this.isFinished(processInstanceId)) {
- HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- processDefinitionId = pi.getProcessDefinitionId();
- } else {
- // 濡傛灉娴佺▼娌℃湁缁撴潫锛屽垯鍙栧綋鍓嶆椿鍔ㄨ妭鐐�
- // 鏍规嵁娴佺▼瀹炰緥ID鑾峰緱褰撳墠澶勪簬娲诲姩鐘舵�佺殑ActivityId鍚堥泦
- ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- processDefinitionId = pi.getProcessDefinitionId();
- }
- List<String> highLightedActivities = new ArrayList<>();
-
- // 鑾峰緱娲诲姩鐨勮妭鐐�
- List<HistoricActivityInstance> highLightedActivityList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
-
- for (HistoricActivityInstance tempActivity : highLightedActivityList) {
- String activityId = tempActivity.getActivityId();
- highLightedActivities.add(activityId);
- }
-
- List<String> flows = new ArrayList<>();
- // 鑾峰彇娴佺▼鍥�
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
- ProcessEngineConfiguration engConf = processEngine.getProcessEngineConfiguration();
-
- ProcessDiagramGenerator diagramGenerator = engConf.getProcessDiagramGenerator();
- InputStream in = diagramGenerator.generateDiagram(bpmnModel, "bmp", highLightedActivities, flows, engConf.getActivityFontName(),
- engConf.getLabelFontName(), engConf.getAnnotationFontName(), engConf.getClassLoader(), 1.0, true);
- OutputStream out = null;
- byte[] buf = new byte[1024];
- int length;
- try {
- out = httpServletResponse.getOutputStream();
- while ((length = in.read(buf)) != -1) {
- out.write(buf, 0, length);
- }
- } catch (IOException e) {
- log.error("鎿嶄綔寮傚父", e);
- } finally {
- IoUtil.closeSilently(out);
- IoUtil.closeSilently(in);
- }
- }
-
- @Override
- public void AutowiredView(String processDefinitionId, String processInstanceId, String AutowiredType, HttpServletResponse response) {
- if (StringUtil.isAllBlank(processDefinitionId, processInstanceId)) {
- return;
- }
- if (StringUtil.isBlank(processDefinitionId)) {
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- processDefinitionId = processInstance.getProcessDefinitionId();
- }
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
- String AutowiredName = "";
- if (AutowiredType.equals(IMAGE_NAME)) {
- AutowiredName = processDefinition.getDiagramResourceName();
- } else if (AutowiredType.equals(XML_NAME)) {
- AutowiredName = processDefinition.getResourceName();
- }
- try {
- InputStream AutowiredAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), AutowiredName);
- byte[] b = new byte[1024];
- int len;
- while ((len = AutowiredAsStream.read(b, 0, INT_1024)) != -1) {
- response.getOutputStream().write(b, 0, len);
- }
- } catch (Exception exception) {
- exception.printStackTrace();
- }
- }
-
- @Override
- public byte[] getModelEditorXML(FlowModel model) {
- return getBpmnXML(model);
- }
-
- /**
- * 鏄惁宸插畬缁�
- *
- * @param processInstanceId 娴佺▼瀹炰緥id
- * @return bool
- */
- private boolean isFinished(String processInstanceId) {
- return historyService.createHistoricProcessInstanceQuery().finished()
- .processInstanceId(processInstanceId).count() > 0;
- }
-
-
- /**
- * xml杞琤pmn json
- *
- * @param xml xml
- * @return json
- */
- private String getBpmnJson(String xml) {
- return BPMN_JSON_CONVERTER.convertToJson(getBpmnModel(xml)).toString();
- }
-
- /**
- * xml杞琤pmnModel
- *
- * @param xml xml
- * @return bpmnModel
- */
- private BpmnModel getBpmnModel(String xml) {
- return BPMN_XML_CONVERTER.convertToBpmnModel(new StringStreamSource(xml), false, false);
- }
-
- private byte[] getBpmnXML(FlowModel model) {
- BpmnModel bpmnModel = getBpmnModel(model);
- return getBpmnXML(bpmnModel);
- }
-
- private byte[] getBpmnXML(BpmnModel bpmnModel) {
- for (Process process : bpmnModel.getProcesses()) {
- if (StringUtils.isNotEmpty(process.getId())) {
- char firstCharacter = process.getId().charAt(0);
- if (Character.isDigit(firstCharacter)) {
- process.setId("a" + process.getId());
- }
- }
- }
- return BPMN_XML_CONVERTER.convertToXML(bpmnModel);
- }
-
- private BpmnModel getBpmnModel(FlowModel model) {
- BpmnModel bpmnModel;
- try {
- Map<String, FlowModel> formMap = new HashMap<>(16);
- Map<String, FlowModel> decisionTableMap = new HashMap<>(16);
-
- List<FlowModel> referencedModels = baseMapper.findByParentModelId(model.getId());
- for (FlowModel childModel : referencedModels) {
- if (FlowModel.MODEL_TYPE_FORM == childModel.getModelType()) {
- formMap.put(childModel.getId(), childModel);
-
- } else if (FlowModel.MODEL_TYPE_DECISION_TABLE == childModel.getModelType()) {
- decisionTableMap.put(childModel.getId(), childModel);
- }
- }
- bpmnModel = getBpmnModel(model, formMap, decisionTableMap);
- } catch (Exception e) {
- log.error("Could not generate BPMN 2.0 model for {}", model.getId(), e);
- throw new ServiceException("Could not generate BPMN 2.0 model");
- }
- return bpmnModel;
- }
-
- private BpmnModel getBpmnModel(FlowModel model, Map<String, FlowModel> formMap, Map<String, FlowModel> decisionTableMap) {
- try {
- ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(model.getModelEditorJson());
- Map<String, String> formKeyMap = new HashMap<>(16);
- for (FlowModel formModel : formMap.values()) {
- formKeyMap.put(formModel.getId(), formModel.getModelKey());
- }
- Map<String, String> decisionTableKeyMap = new HashMap<>(16);
- for (FlowModel decisionTableModel : decisionTableMap.values()) {
- decisionTableKeyMap.put(decisionTableModel.getId(), decisionTableModel.getModelKey());
- }
- return BPMN_JSON_CONVERTER.convertToBpmnModel(editorJsonNode, formKeyMap, decisionTableKeyMap);
- } catch (Exception e) {
- log.error("Could not generate BPMN 2.0 model for {}", model.getId(), e);
- throw new ServiceException("Could not generate BPMN 2.0 model");
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/utils/FlowCache.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/utils/FlowCache.java
deleted file mode 100644
index a8d0745..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/utils/FlowCache.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.flow.engine.utils;
-
-import org.flowable.engine.RepositoryService;
-import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.flow.engine.entity.FlowProcess;
-import org.springblade.system.cache.DictCache;
-
-import static org.springblade.core.cache.constant.CacheConstant.FLOW_CACHE;
-
-/**
- * 娴佺▼缂撳瓨
- *
- * @author Chill
- */
-public class FlowCache {
-
- private static final String FLOW_DEFINITION_ID = "definition:id:";
- private static RepositoryService repositoryService;
-
- private static RepositoryService getRepositoryService() {
- if (repositoryService == null) {
- repositoryService = SpringUtil.getBean(RepositoryService.class);
- }
- return repositoryService;
- }
-
- /**
- * 鑾峰緱娴佺▼瀹氫箟瀵硅薄
- *
- * @param processDefinitionId 娴佺▼瀵硅薄id
- * @return
- */
- public static FlowProcess getProcessDefinition(String processDefinitionId) {
- return CacheUtil.get(FLOW_CACHE, FLOW_DEFINITION_ID, processDefinitionId, () -> {
- ProcessDefinition processDefinition = getRepositoryService().createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
- ProcessDefinitionEntityImpl processDefinitionEntity = BeanUtil.copy(processDefinition, ProcessDefinitionEntityImpl.class);
- return new FlowProcess(processDefinitionEntity);
- });
- }
-
- /**
- * 鑾峰彇娴佺▼绫诲瀷鍚�
- *
- * @param category 娴佺▼绫诲瀷
- * @return
- */
- public static String getCategoryName(String category) {
- String[] categoryArr = category.split(StringPool.UNDERSCORE);
- if (categoryArr.length <= 1) {
- return StringPool.EMPTY;
- } else {
- return DictCache.getValue(category.split(StringPool.UNDERSCORE)[0], Func.toInt(category.split(StringPool.UNDERSCORE)[1]));
- }
- }
-
-}
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
deleted file mode 100644
index a7af970..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/main/resources/mapper/FlowMapper.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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-ops/blade-flow/src/test/java/org/springblade/flow/test/BladeTest.java b/Source/BladeX/blade-ops/blade-flow/src/test/java/org/springblade/flow/test/BladeTest.java
deleted file mode 100644
index 29fa101..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/test/java/org/springblade/flow/test/BladeTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.springblade.flow.test;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.springblade.core.test.BladeBootTest;
-import org.springblade.core.test.BladeSpringExtension;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.engine.entity.FlowModel;
-import org.springblade.flow.engine.service.FlowEngineService;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.List;
-
-/**
- * Blade鍗曞厓娴嬭瘯
- *
- * @author Chill
- */
-@ExtendWith(BladeSpringExtension.class)
-@BladeBootTest(appName = "blade-flow", enableLoader = true)
-public class BladeTest {
-
- @Autowired
- private FlowEngineService service;
-
- @Test
- public void contextLoads() {
- System.out.println("=====鏁版嵁杩佺Щ鍚姩=====");
-
- // 鑾峰彇 ACT_DE_MODEL 琛ㄩ渶瑕佽浆鎹㈢殑鏁版嵁
- List<FlowModel> list = service.list();
- // 寰幆杞崲
- list.forEach(flowModel -> {
- if (StringUtil.isBlank(flowModel.getModelEditorXml())) {
- service.update(Wrappers.<FlowModel>lambdaUpdate()
- .set(FlowModel::getModelEditorXml, new String(service.getModelEditorXML(flowModel)))
- .ge(FlowModel::getId, flowModel.getId())
- );
- }
- });
-
- System.out.println("=====鏁版嵁杩佺Щ瀹屾瘯=====");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/test/java/org/springblade/flow/test/launch/LauncherTestServiceImpl.java b/Source/BladeX/blade-ops/blade-flow/src/test/java/org/springblade/flow/test/launch/LauncherTestServiceImpl.java
deleted file mode 100644
index ad03eef..0000000
--- a/Source/BladeX/blade-ops/blade-flow/src/test/java/org/springblade/flow/test/launch/LauncherTestServiceImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.flow.test.launch;
-
-import org.springblade.common.constant.LauncherConstant;
-import org.springblade.core.auto.service.AutoService;
-import org.springblade.core.launch.service.LauncherService;
-import org.springblade.core.launch.utils.PropsUtil;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-
-import java.util.Properties;
-
-/**
- * 鍚姩鍙傛暟鎷撳睍
- *
- * @author smallchil
- */
-@AutoService(LauncherService.class)
-public class LauncherTestServiceImpl implements LauncherService {
-
- @Override
- public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
- Properties props = System.getProperties();
- PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
- PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
- PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/pom.xml b/Source/BladeX/blade-ops/blade-log/pom.xml
deleted file mode 100644
index 0f2952c..0000000
--- a/Source/BladeX/blade-ops/blade-log/pom.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-log</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-tenant</artifactId>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/LogApplication.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/LogApplication.java
deleted file mode 100644
index 34080ac..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/LogApplication.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.core.log;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * 鏃ュ織鏈嶅姟
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class LogApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_LOG_NAME, LogApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogApiController.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogApiController.java
deleted file mode 100644
index 6f7ca94..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogApiController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.core.log.controller;
-
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.model.LogApi;
-import org.springblade.core.log.service.ILogApiService;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.Map;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/api")
-public class LogApiController {
-
- private final ILogApiService logService;
-
- /**
- * 鏌ヨ鍗曟潯
- */
- @GetMapping("/detail")
- public R<LogApi> detail(LogApi log) {
- return R.data(logService.getOne(Condition.getQueryWrapper(log)));
- }
-
- /**
- * 鏌ヨ澶氭潯(鍒嗛〉)
- */
- @GetMapping("/list")
- public R<IPage<LogApi>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
- IPage<LogApi> pages = logService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(log, LogApi.class));
- return R.data(pages);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogErrorController.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogErrorController.java
deleted file mode 100644
index 5dd1a29..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogErrorController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.core.log.controller;
-
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.model.LogError;
-import org.springblade.core.log.service.ILogErrorService;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.Map;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/error")
-public class LogErrorController {
-
- private final ILogErrorService errorLogService;
-
- /**
- * 鏌ヨ鍗曟潯
- */
- @GetMapping("/detail")
- public R<LogError> detail(LogError logError) {
- return R.data(errorLogService.getOne(Condition.getQueryWrapper(logError)));
- }
-
- /**
- * 鏌ヨ澶氭潯(鍒嗛〉)
- */
- @GetMapping("/list")
- public R<IPage<LogError>> list(@ApiIgnore @RequestParam Map<String, Object> logError, Query query) {
- IPage<LogError> pages = errorLogService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(logError, LogError.class));
- return R.data(pages);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogUsualController.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogUsualController.java
deleted file mode 100644
index aeaee60..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/controller/LogUsualController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.core.log.controller;
-
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.model.LogUsual;
-import org.springblade.core.log.service.ILogUsualService;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.Map;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/usual")
-public class LogUsualController {
-
- private final ILogUsualService logService;
-
- /**
- * 鏌ヨ鍗曟潯
- */
- @GetMapping("/detail")
- public R<LogUsual> detail(LogUsual log) {
- return R.data(logService.getOne(Condition.getQueryWrapper(log)));
- }
-
- /**
- * 鏌ヨ澶氭潯(鍒嗛〉)
- */
- @GetMapping("/list")
- public R<IPage<LogUsual>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
- IPage<LogUsual> pages = logService.page(Condition.getPage(query), Condition.getQueryWrapper(log, LogUsual.class));
- return R.data(pages);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/feign/LogClient.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/feign/LogClient.java
deleted file mode 100644
index c232c99..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/feign/LogClient.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.core.log.feign;
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.model.LogApi;
-import org.springblade.core.log.model.LogError;
-import org.springblade.core.log.model.LogUsual;
-import org.springblade.core.log.service.ILogApiService;
-import org.springblade.core.log.service.ILogErrorService;
-import org.springblade.core.log.service.ILogUsualService;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 鏃ュ織鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-public class LogClient implements ILogClient {
-
- private final ILogUsualService usualLogService;
-
- private final ILogApiService apiLogService;
-
- private final ILogErrorService errorLogService;
-
- @Override
- @PostMapping(API_PREFIX + "/saveUsualLog")
- public R<Boolean> saveUsualLog(@RequestBody LogUsual log) {
- log.setParams(log.getParams().replace("&", "&"));
- return R.data(usualLogService.save(log));
- }
-
- @Override
- @PostMapping(API_PREFIX + "/saveApiLog")
- public R<Boolean> saveApiLog(@RequestBody LogApi log) {
- log.setParams(log.getParams().replace("&", "&"));
- return R.data(apiLogService.save(log));
- }
-
- @Override
- @PostMapping(API_PREFIX + "/saveErrorLog")
- public R<Boolean> saveErrorLog(@RequestBody LogError log) {
- log.setParams(log.getParams().replace("&", "&"));
- return R.data(errorLogService.save(log));
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.java
deleted file mode 100644
index 15049aa..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.core.log.model.LogApi;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface LogApiMapper extends BaseMapper<LogApi> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.xml b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.xml
deleted file mode 100644
index 6c2aca5..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogApiMapper.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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.core.log.mapper.LogApiMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="logResultMap" type="org.springblade.core.log.model.LogApi">
- <result column="id" property="id"/>
- <result column="create_time" property="createTime"/>
- <result column="service_id" property="serviceId"/>
- <result column="server_host" property="serverHost"/>
- <result column="server_ip" property="serverIp"/>
- <result column="env" property="env"/>
- <result column="type" property="type"/>
- <result column="title" property="title"/>
- <result column="method" property="method"/>
- <result column="request_uri" property="requestUri"/>
- <result column="user_agent" property="userAgent"/>
- <result column="remote_ip" property="remoteIp"/>
- <result column="method_class" property="methodClass"/>
- <result column="method_name" property="methodName"/>
- <result column="params" property="params"/>
- <result column="time" property="time"/>
- <result column="create_by" property="createBy"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.java
deleted file mode 100644
index a38d9b5..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.core.log.model.LogError;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface LogErrorMapper extends BaseMapper<LogError> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.xml b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.xml
deleted file mode 100644
index c3fa1d6..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogErrorMapper.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.core.log.mapper.LogErrorMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="errorLogResultMap" type="org.springblade.core.log.model.LogError">
- <result column="id" property="id"/>
- <result column="create_time" property="createTime"/>
- <result column="service_id" property="serviceId"/>
- <result column="server_host" property="serverHost"/>
- <result column="server_ip" property="serverIp"/>
- <result column="env" property="env"/>
- <result column="method" property="method"/>
- <result column="request_uri" property="requestUri"/>
- <result column="user_agent" property="userAgent"/>
- <result column="stack_trace" property="stackTrace"/>
- <result column="exception_name" property="exceptionName"/>
- <result column="message" property="message"/>
- <result column="line_number" property="lineNumber"/>
- <result column="method_class" property="methodClass"/>
- <result column="file_name" property="fileName"/>
- <result column="method_name" property="methodName"/>
- <result column="params" property="params"/>
- <result column="create_by" property="createBy"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.java
deleted file mode 100644
index 59c136d..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.core.log.model.LogUsual;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface LogUsualMapper extends BaseMapper<LogUsual> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.xml b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.xml
deleted file mode 100644
index a08570d..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/mapper/LogUsualMapper.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.core.log.mapper.LogUsualMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="logResultMap" type="org.springblade.core.log.model.LogUsual">
- <result column="id" property="id"/>
- <result column="create_time" property="createTime"/>
- <result column="service_id" property="serviceId"/>
- <result column="server_host" property="serverHost"/>
- <result column="server_ip" property="serverIp"/>
- <result column="env" property="env"/>
- <result column="log_level" property="logLevel"/>
- <result column="log_data" property="logData"/>
- <result column="method" property="method"/>
- <result column="request_uri" property="requestUri"/>
- <result column="user_agent" property="userAgent"/>
- <result column="params" property="params"/>
- <result column="create_by" property="createBy"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogApiService.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogApiService.java
deleted file mode 100644
index 3699225..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogApiService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.log.model.LogApi;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ILogApiService extends IService<LogApi> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogErrorService.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogErrorService.java
deleted file mode 100644
index 5576fe3..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogErrorService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.log.model.LogError;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ILogErrorService extends IService<LogError> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogUsualService.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogUsualService.java
deleted file mode 100644
index f6f795d..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/ILogUsualService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.core.log.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.log.model.LogUsual;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ILogUsualService extends IService<LogUsual> {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogApiServiceImpl.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogApiServiceImpl.java
deleted file mode 100644
index d4e463b..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogApiServiceImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.core.log.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.mapper.LogApiMapper;
-import org.springblade.core.log.model.LogApi;
-import org.springblade.core.log.service.ILogApiService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApi> implements ILogApiService {
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogErrorServiceImpl.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogErrorServiceImpl.java
deleted file mode 100644
index 837f4c9..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogErrorServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.core.log.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.mapper.LogErrorMapper;
-import org.springblade.core.log.model.LogError;
-import org.springblade.core.log.service.ILogErrorService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class LogErrorServiceImpl extends ServiceImpl<LogErrorMapper, LogError> implements ILogErrorService {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogUsualServiceImpl.java b/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogUsualServiceImpl.java
deleted file mode 100644
index 3d348e7..0000000
--- a/Source/BladeX/blade-ops/blade-log/src/main/java/org/springblade/core/log/service/impl/LogUsualServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.core.log.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.mapper.LogUsualMapper;
-import org.springblade.core.log.model.LogUsual;
-import org.springblade.core.log.service.ILogUsualService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class LogUsualServiceImpl extends ServiceImpl<LogUsualMapper, LogUsual> implements ILogUsualService {
-
-}
diff --git a/Source/BladeX/blade-ops/blade-report/pom.xml b/Source/BladeX/blade-ops/blade-report/pom.xml
deleted file mode 100644
index ed54ad6..0000000
--- a/Source/BladeX/blade-ops/blade-report/pom.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-report</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-tenant</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-report</artifactId>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/ReportApplication.java b/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/ReportApplication.java
deleted file mode 100644
index 3c3e128..0000000
--- a/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/ReportApplication.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.report;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * UReport鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class ReportApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_REPORT_NAME, ReportApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/config/BladeReportConfiguration.java b/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/config/BladeReportConfiguration.java
deleted file mode 100644
index 276e4d5..0000000
--- a/Source/BladeX/blade-ops/blade-report/src/main/java/org/springblade/report/config/BladeReportConfiguration.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.report.config;
-
-import org.springblade.core.report.datasource.ReportDataSource;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.sql.DataSource;
-
-/**
- * 鎶ヨ〃閰嶇疆绫�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@ConditionalOnProperty(value = "report.enabled", havingValue = "true", matchIfMissing = true)
-public class BladeReportConfiguration {
-
- /**
- * 鑷畾涔夋姤琛ㄥ彲閫夋暟鎹簮
- */
- @Bean
- public ReportDataSource reportDataSource(DataSource dataSource) {
- return new ReportDataSource(dataSource);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/Dockerfile b/Source/BladeX/blade-ops/blade-resource/Dockerfile
deleted file mode 100644
index 7ef1948..0000000
--- a/Source/BladeX/blade-ops/blade-resource/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM bladex/alpine-java:openjdk8-openj9_cn_slim
-
-MAINTAINER bladejava@qq.com
-
-RUN mkdir -p /blade/Autowired
-
-WORKDIR /blade/Autowired
-
-EXPOSE 36007
-
-ADD ./target/blade-Autowired.jar ./app.jar
-
-ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
-
-CMD ["--spring.profiles.active=dev"]
diff --git a/Source/BladeX/blade-ops/blade-resource/pom.xml b/Source/BladeX/blade-ops/blade-resource/pom.xml
deleted file mode 100644
index b4e9e74..0000000
--- a/Source/BladeX/blade-ops/blade-resource/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-Autowired</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <!--Oss-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-oss</artifactId>
- </dependency>
- <!--Sms-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-sms</artifactId>
- </dependency>
- <!--MinIO-->
- <dependency>
- <groupId>io.minio</groupId>
- <artifactId>minio</artifactId>
- </dependency>
- <!--Alioss-->
- <dependency>
- <groupId>com.aliyun.oss</groupId>
- <artifactId>aliyun-sdk-oss</artifactId>
- </dependency>
- <!--AliSms-->
- <dependency>
- <groupId>com.aliyun</groupId>
- <artifactId>aliyun-java-sdk-core</artifactId>
- </dependency>
- <!--鑵捐COS-->
- <dependency>
- <groupId>com.qcloud</groupId>
- <artifactId>cos_api</artifactId>
- </dependency>
- <!--鑵捐SMS-->
- <dependency>
- <groupId>com.github.qcloudsms</groupId>
- <artifactId>qcloudsms</artifactId>
- </dependency>
- <!--QiNiu-->
- <dependency>
- <groupId>com.qiniu</groupId>
- <artifactId>qiniu-java-sdk</artifactId>
- </dependency>
- <!--YunPian-->
- <dependency>
- <groupId>com.yunpian.sdk</groupId>
- <artifactId>yunpian-java-sdk</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-Autowired-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-dict-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/ResourceApplication.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/ResourceApplication.java
deleted file mode 100644
index 89db1dd..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/ResourceApplication.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.Autowired;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * 璧勬簮鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class ResourceApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_REPORT_NAME, ResourceApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java
deleted file mode 100644
index 0f4f2be..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AliOssBuilder.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.Autowired.builder.oss;
-
-import com.aliyun.oss.ClientConfiguration;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.common.auth.CredentialsProvider;
-import com.aliyun.oss.common.auth.DefaultCredentialProvider;
-import lombok.SneakyThrows;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.AliossTemplate;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.core.oss.rule.OssRule;
-import org.springblade.Autowired.entity.Oss;
-
-/**
- * 闃块噷浜戝瓨鍌ㄦ瀯寤虹被
- *
- * @author Chill
- */
-public class AliOssBuilder {
-
- @SneakyThrows
- public static OssTemplate template(Oss oss, OssRule ossRule) {
- // 鍒涘缓ClientConfiguration銆侰lientConfiguration鏄疧SSClient鐨勯厤缃被锛屽彲閰嶇疆浠g悊銆佽繛鎺ヨ秴鏃躲�佹渶澶ц繛鎺ユ暟绛夊弬鏁般��
- ClientConfiguration conf = new ClientConfiguration();
- // 璁剧疆OSSClient鍏佽鎵撳紑鐨勬渶澶TTP杩炴帴鏁帮紝榛樿涓�1024涓��
- conf.setMaxConnections(1024);
- // 璁剧疆Socket灞備紶杈撴暟鎹殑瓒呮椂鏃堕棿锛岄粯璁や负50000姣銆�
- conf.setSocketTimeout(50000);
- // 璁剧疆寤虹珛杩炴帴鐨勮秴鏃舵椂闂达紝榛樿涓�50000姣銆�
- conf.setConnectionTimeout(50000);
- // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栬繛鎺ョ殑瓒呮椂鏃堕棿锛堝崟浣嶏細姣锛夛紝榛樿涓嶈秴鏃躲��
- conf.setConnectionRequestTimeout(1000);
- // 璁剧疆杩炴帴绌洪棽瓒呮椂鏃堕棿銆傝秴鏃跺垯鍏抽棴杩炴帴锛岄粯璁や负60000姣銆�
- conf.setIdleConnectionTime(60000);
- // 璁剧疆澶辫触璇锋眰閲嶈瘯娆℃暟锛岄粯璁や负3娆°��
- conf.setMaxErrorRetry(5);
- OssProperties ossProperties = new OssProperties();
- ossProperties.setEndpoint(oss.getEndpoint());
- ossProperties.setAccessKey(oss.getAccessKey());
- ossProperties.setSecretKey(oss.getSecretKey());
- ossProperties.setBucketName(oss.getBucketName());
- CredentialsProvider credentialsProvider = new DefaultCredentialProvider(ossProperties.getAccessKey(), ossProperties.getSecretKey());
- OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), credentialsProvider, conf);
- return new AliossTemplate(ossClient, ossProperties, ossRule);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/MinioOssBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/MinioOssBuilder.java
deleted file mode 100644
index 130ceaa..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/MinioOssBuilder.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.Autowired.builder.oss;
-
-import io.minio.MinioClient;
-import lombok.SneakyThrows;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.MinioTemplate;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.core.oss.rule.OssRule;
-import org.springblade.Autowired.entity.Oss;
-
-/**
- * Minio浜戝瓨鍌ㄦ瀯寤虹被
- *
- * @author Chill
- */
-public class MinioOssBuilder {
-
- @SneakyThrows
- public static OssTemplate template(Oss oss, OssRule ossRule) {
- MinioClient minioClient = MinioClient.builder()
- .endpoint(oss.getEndpoint())
- .credentials(oss.getAccessKey(), oss.getSecretKey())
- .build();
- OssProperties ossProperties = new OssProperties();
- ossProperties.setEndpoint(oss.getEndpoint());
- ossProperties.setAccessKey(oss.getAccessKey());
- ossProperties.setSecretKey(oss.getSecretKey());
- ossProperties.setBucketName(oss.getBucketName());
- return new MinioTemplate(minioClient, ossRule, ossProperties);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java
deleted file mode 100644
index f4a730a..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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.Autowired.builder.oss;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.service.IOssService;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.enums.OssEnum;
-import org.springblade.core.oss.enums.OssStatusEnum;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.core.oss.rule.BladeOssRule;
-import org.springblade.core.oss.rule.OssRule;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.core.tool.utils.WebUtil;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
-
-/**
- * Oss浜戝瓨鍌ㄧ粺涓�鏋勫缓绫�
- *
- * @author Chill
- */
-public class OssBuilder {
-
- public static final String OSS_CODE = "oss:code:";
- public static final String OSS_PARAM_KEY = "code";
-
- private final OssProperties ossProperties;
- private final IOssService ossService;
-
- public OssBuilder(OssProperties ossProperties, IOssService ossService) {
- this.ossProperties = ossProperties;
- this.ossService = ossService;
- }
-
- /**
- * OssTemplate閰嶇疆缂撳瓨姹�
- */
- private final Map<String, OssTemplate> templatePool = new ConcurrentHashMap<>();
-
- /**
- * oss閰嶇疆缂撳瓨姹�
- */
- private final Map<String, Oss> ossPool = new ConcurrentHashMap<>();
-
- /**
- * 鑾峰彇template
- *
- * @return OssTemplate
- */
- public OssTemplate template() {
- return template(StringPool.EMPTY);
- }
-
- /**
- * 鑾峰彇template
- *
- * @param code 璧勬簮缂栧彿
- * @return OssTemplate
- */
- public OssTemplate template(String code) {
- String tenantId = AuthUtil.getTenantId();
- Oss oss = getOss(tenantId, code);
- Oss ossCached = ossPool.get(tenantId);
- OssTemplate template = templatePool.get(tenantId);
- // 鑻ヤ负绌烘垨鑰呬笉涓�鑷达紝鍒欓噸鏂板姞杞�
- if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
- synchronized (OssBuilder.class) {
- template = templatePool.get(tenantId);
- if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
- OssRule ossRule;
- // 鑻ラ噰鐢ㄩ粯璁よ缃垯寮�鍚绉熸埛妯″紡, 鑻ユ槸鐢ㄦ埛鑷畾涔塷ss鍒欎笉寮�鍚�
- if (oss.getEndpoint().equals(ossProperties.getEndpoint()) && oss.getAccessKey().equals(ossProperties.getAccessKey()) && ossProperties.getTenantMode()) {
- ossRule = new BladeOssRule(Boolean.TRUE);
- } else {
- ossRule = new BladeOssRule(Boolean.FALSE);
- }
- if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
- template = org.springblade.Autowired.builder.oss.MinioOssBuilder.template(oss, ossRule);
- } else if (oss.getCategory() == OssEnum.QINIU.getCategory()) {
- template = org.springblade.Autowired.builder.oss.QiniuOssBuilder.template(oss, ossRule);
- } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
- template = org.springblade.Autowired.builder.oss.AliOssBuilder.template(oss, ossRule);
- } else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
- template = org.springblade.Autowired.builder.oss.TencentOssBuilder.template(oss, ossRule);
- }
- templatePool.put(tenantId, template);
- ossPool.put(tenantId, oss);
- }
- }
- }
- return template;
- }
-
- /**
- * 鑾峰彇瀵硅薄瀛樺偍瀹炰綋
- *
- * @param tenantId 绉熸埛ID
- * @return Oss
- */
- public Oss getOss(String tenantId, String code) {
- String key = tenantId;
- LambdaQueryWrapper<Oss> lqw = Wrappers.<Oss>query().lambda().eq(Oss::getTenantId, tenantId);
- // 鑾峰彇浼犲弬鐨勮祫婧愮紪鍙峰苟鏌ヨ锛岃嫢鏈夊垯杩斿洖锛岃嫢娌℃湁鍒欒皟鍚敤鐨勯厤缃�
- String ossCode = StringUtil.isBlank(code) ? WebUtil.getParameter(OSS_PARAM_KEY) : code;
- if (StringUtil.isNotBlank(ossCode)) {
- key = key.concat(StringPool.DASH).concat(ossCode);
- lqw.eq(Oss::getOssCode, ossCode);
- } else {
- lqw.eq(Oss::getStatus, OssStatusEnum.ENABLE.getNum());
- }
- Oss oss = CacheUtil.get(RESOURCE_CACHE, OSS_CODE, key, () -> {
- Oss o = ossService.getOne(lqw);
- // 鑻ヤ负绌哄垯璋冪敤榛樿閰嶇疆
- if ((Func.isEmpty(o))) {
- Oss defaultOss = new Oss();
- defaultOss.setId(0L);
- defaultOss.setCategory(OssEnum.of(ossProperties.getName()).getCategory());
- defaultOss.setEndpoint(ossProperties.getEndpoint());
- defaultOss.setBucketName(ossProperties.getBucketName());
- defaultOss.setAccessKey(ossProperties.getAccessKey());
- defaultOss.setSecretKey(ossProperties.getSecretKey());
- return defaultOss;
- } else {
- return o;
- }
- });
- if (oss == null || oss.getId() == null) {
- throw new ServiceException("鏈幏鍙栧埌瀵瑰簲鐨勫璞″瓨鍌ㄩ厤缃�");
- } else {
- return oss;
- }
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/QiniuOssBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/QiniuOssBuilder.java
deleted file mode 100644
index 1acaad6..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/QiniuOssBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.Autowired.builder.oss;
-
-import com.qiniu.storage.BucketManager;
-import com.qiniu.storage.Configuration;
-import com.qiniu.storage.Region;
-import com.qiniu.storage.UploadManager;
-import com.qiniu.util.Auth;
-import lombok.SneakyThrows;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.QiniuTemplate;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.core.oss.rule.OssRule;
-import org.springblade.Autowired.entity.Oss;
-
-/**
- * 涓冪墰浜戝瓨鍌ㄦ瀯寤虹被
- *
- * @author Chill
- */
-public class QiniuOssBuilder {
-
- @SneakyThrows
- public static OssTemplate template(Oss oss, OssRule ossRule) {
- Configuration cfg = new Configuration(Region.autoRegion());
- Auth auth = Auth.create(oss.getAccessKey(), oss.getSecretKey());
- UploadManager uploadManager = new UploadManager(cfg);
- BucketManager bucketManager = new BucketManager(auth, cfg);
- OssProperties ossProperties = new OssProperties();
- ossProperties.setEndpoint(oss.getEndpoint());
- ossProperties.setAccessKey(oss.getAccessKey());
- ossProperties.setSecretKey(oss.getSecretKey());
- ossProperties.setBucketName(oss.getBucketName());
- return new QiniuTemplate(auth, uploadManager, bucketManager, ossProperties, ossRule);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentOssBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentOssBuilder.java
deleted file mode 100644
index 3ec83b6..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentOssBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.Autowired.builder.oss;
-
-import com.qcloud.cos.COSClient;
-import com.qcloud.cos.ClientConfig;
-import com.qcloud.cos.auth.BasicCOSCredentials;
-import com.qcloud.cos.auth.COSCredentials;
-import com.qcloud.cos.region.Region;
-import lombok.SneakyThrows;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.core.oss.rule.OssRule;
-import org.springblade.core.oss.TencentCosTemplate;
-import org.springblade.Autowired.entity.Oss;
-
-/**
- * 鑵捐浜戝瓨鍌ㄦ瀯寤虹被
- *
- * @author Chill
- */
-public class TencentOssBuilder {
-
- @SneakyThrows
- public static OssTemplate template(Oss oss, OssRule ossRule) {
- // 鍒涘缓閰嶇疆绫�
- OssProperties ossProperties = new OssProperties();
- ossProperties.setEndpoint(oss.getEndpoint());
- ossProperties.setAccessKey(oss.getAccessKey());
- ossProperties.setSecretKey(oss.getSecretKey());
- ossProperties.setBucketName(oss.getBucketName());
- ossProperties.setAppId(oss.getAppId());
- ossProperties.setRegion(oss.getRegion());
- // 鍒濆鍖栫敤鎴疯韩浠戒俊鎭紙secretId, secretKey锛�
- COSCredentials credentials = new BasicCOSCredentials(ossProperties.getAccessKey(), ossProperties.getSecretKey());
- // 璁剧疆 bucket 鐨勫尯鍩�, COS 鍦板煙鐨勭畝绉拌鍙傜収 https://cloud.tencent.com/document/product/436/6224
- Region region = new Region(ossProperties.getRegion());
- // clientConfig 涓寘鍚簡璁剧疆 region, https(榛樿 http), 瓒呮椂, 浠g悊绛� set 鏂规硶, 浣跨敤鍙弬瑙佹簮鐮佹垨鑰呭父瑙侀棶棰� Java SDK 閮ㄥ垎銆�
- ClientConfig clientConfig = new ClientConfig(region);
- // 璁剧疆OSSClient鍏佽鎵撳紑鐨勬渶澶TTP杩炴帴鏁帮紝榛樿涓�1024涓��
- clientConfig.setMaxConnectionsCount(1024);
- // 璁剧疆Socket灞備紶杈撴暟鎹殑瓒呮椂鏃堕棿锛岄粯璁や负50000姣銆�
- clientConfig.setSocketTimeout(50000);
- // 璁剧疆寤虹珛杩炴帴鐨勮秴鏃舵椂闂达紝榛樿涓�50000姣銆�
- clientConfig.setConnectionTimeout(50000);
- // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栬繛鎺ョ殑瓒呮椂鏃堕棿锛堝崟浣嶏細姣锛夛紝榛樿涓嶈秴鏃躲��
- clientConfig.setConnectionRequestTimeout(1000);
- COSClient cosClient = new COSClient(credentials, clientConfig);
- return new TencentCosTemplate(cosClient, ossProperties, ossRule);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/AliSmsBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/AliSmsBuilder.java
deleted file mode 100644
index c6d169a..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/AliSmsBuilder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.Autowired.builder.sms;
-
-import com.aliyuncs.DefaultAcsClient;
-import com.aliyuncs.IAcsClient;
-import com.aliyuncs.profile.DefaultProfile;
-import com.aliyuncs.profile.IClientProfile;
-import lombok.SneakyThrows;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.sms.SmsTemplate;
-import org.springblade.core.sms.AliSmsTemplate;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.Autowired.entity.Sms;
-
-/**
- * 闃块噷浜戠煭淇℃瀯寤虹被
- *
- * @author Chill
- */
-public class AliSmsBuilder {
-
- @SneakyThrows
- public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
- SmsProperties smsProperties = new SmsProperties();
- smsProperties.setTemplateId(sms.getTemplateId());
- smsProperties.setAccessKey(sms.getAccessKey());
- smsProperties.setSecretKey(sms.getSecretKey());
- smsProperties.setRegionId(sms.getRegionId());
- smsProperties.setSignName(sms.getSignName());
- IClientProfile profile = DefaultProfile.getProfile(smsProperties.getRegionId(), smsProperties.getAccessKey(), smsProperties.getSecretKey());
- IAcsClient acsClient = new DefaultAcsClient(profile);
- return new AliSmsTemplate(smsProperties, acsClient, bladeRedis);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/QiniuSmsBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/QiniuSmsBuilder.java
deleted file mode 100644
index 6a9cea4..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/QiniuSmsBuilder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.Autowired.builder.sms;
-
-import com.qiniu.sms.SmsManager;
-import com.qiniu.util.Auth;
-import lombok.SneakyThrows;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.sms.SmsTemplate;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.core.sms.QiniuSmsTemplate;
-import org.springblade.Autowired.entity.Sms;
-
-/**
- * 涓冪墰浜戠煭淇℃瀯寤虹被
- *
- * @author Chill
- */
-public class QiniuSmsBuilder {
-
- @SneakyThrows
- public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
- SmsProperties smsProperties = new SmsProperties();
- smsProperties.setTemplateId(sms.getTemplateId());
- smsProperties.setAccessKey(sms.getAccessKey());
- smsProperties.setSecretKey(sms.getSecretKey());
- smsProperties.setSignName(sms.getSignName());
- Auth auth = Auth.create(smsProperties.getAccessKey(), smsProperties.getSecretKey());
- SmsManager smsManager = new SmsManager(auth);
- return new QiniuSmsTemplate(smsProperties, smsManager, bladeRedis);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/SmsBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/SmsBuilder.java
deleted file mode 100644
index 7dcbd0d..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/SmsBuilder.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * 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.Autowired.builder.sms;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.service.ISmsService;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.sms.SmsTemplate;
-import org.springblade.core.sms.enums.SmsEnum;
-import org.springblade.core.sms.enums.SmsStatusEnum;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.core.tool.utils.WebUtil;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
-
-/**
- * Sms鐭俊鏈嶅姟缁熶竴鏋勫缓绫�
- *
- * @author Chill
- */
-public class SmsBuilder {
-
- public static final String SMS_CODE = "sms:code:";
- public static final String SMS_PARAM_KEY = "code";
-
- private final SmsProperties smsProperties;
- private final ISmsService smsService;
- private final BladeRedis bladeRedis;
-
-
- public SmsBuilder(SmsProperties smsProperties, ISmsService smsService, BladeRedis bladeRedis) {
- this.smsProperties = smsProperties;
- this.smsService = smsService;
- this.bladeRedis = bladeRedis;
- }
-
- /**
- * SmsTemplate閰嶇疆缂撳瓨姹�
- */
- private final Map<String, SmsTemplate> templatePool = new ConcurrentHashMap<>();
-
- /**
- * Sms閰嶇疆缂撳瓨姹�
- */
- private final Map<String, Sms> smsPool = new ConcurrentHashMap<>();
-
-
- /**
- * 鑾峰彇template
- *
- * @return SmsTemplate
- */
- public SmsTemplate template() {
- return template(StringPool.EMPTY);
- }
-
- /**
- * 鑾峰彇template
- *
- * @param code 璧勬簮缂栧彿
- * @return SmsTemplate
- */
- public SmsTemplate template(String code) {
- String tenantId = AuthUtil.getTenantId();
- Sms sms = getSms(tenantId, code);
- Sms smsCached = smsPool.get(tenantId);
- SmsTemplate template = templatePool.get(tenantId);
- // 鑻ヤ负绌烘垨鑰呬笉涓�鑷达紝鍒欓噸鏂板姞杞�
- if (Func.hasEmpty(template, smsCached) || !sms.getTemplateId().equals(smsCached.getTemplateId()) || !sms.getAccessKey().equals(smsCached.getAccessKey())) {
- synchronized (SmsBuilder.class) {
- template = templatePool.get(tenantId);
- if (Func.hasEmpty(template, smsCached) || !sms.getTemplateId().equals(smsCached.getTemplateId()) || !sms.getAccessKey().equals(smsCached.getAccessKey())) {
- if (sms.getCategory() == SmsEnum.YUNPIAN.getCategory()) {
- template = org.springblade.Autowired.builder.sms.YunpianSmsBuilder.template(sms, bladeRedis);
- } else if (sms.getCategory() == SmsEnum.QINIU.getCategory()) {
- template = org.springblade.Autowired.builder.sms.QiniuSmsBuilder.template(sms, bladeRedis);
- } else if (sms.getCategory() == SmsEnum.ALI.getCategory()) {
- template = org.springblade.Autowired.builder.sms.AliSmsBuilder.template(sms, bladeRedis);
- } else if (sms.getCategory() == SmsEnum.TENCENT.getCategory()) {
- template = org.springblade.Autowired.builder.sms.TencentSmsBuilder.template(sms, bladeRedis);
- }
- templatePool.put(tenantId, template);
- smsPool.put(tenantId, sms);
- }
- }
- }
- return template;
- }
-
-
- /**
- * 鑾峰彇鐭俊瀹炰綋
- *
- * @param tenantId 绉熸埛ID
- * @return Sms
- */
- public Sms getSms(String tenantId, String code) {
- String key = tenantId;
- LambdaQueryWrapper<Sms> lqw = Wrappers.<Sms>query().lambda().eq(Sms::getTenantId, tenantId);
- // 鑾峰彇浼犲弬鐨勮祫婧愮紪鍙峰苟鏌ヨ锛岃嫢鏈夊垯杩斿洖锛岃嫢娌℃湁鍒欒皟鍚敤鐨勯厤缃�
- String smsCode = StringUtil.isBlank(code) ? WebUtil.getParameter(SMS_PARAM_KEY) : code;
- if (StringUtil.isNotBlank(smsCode)) {
- key = key.concat(StringPool.DASH).concat(smsCode);
- lqw.eq(Sms::getSmsCode, smsCode);
- } else {
- lqw.eq(Sms::getStatus, SmsStatusEnum.ENABLE.getNum());
- }
- Sms sms = CacheUtil.get(RESOURCE_CACHE, SMS_CODE, key, () -> {
- Sms s = smsService.getOne(lqw);
- // 鑻ヤ负绌哄垯璋冪敤榛樿閰嶇疆
- if ((Func.isEmpty(s))) {
- Sms defaultSms = new Sms();
- defaultSms.setId(0L);
- defaultSms.setTemplateId(smsProperties.getTemplateId());
- defaultSms.setRegionId(smsProperties.getRegionId());
- defaultSms.setCategory(SmsEnum.of(smsProperties.getName()).getCategory());
- defaultSms.setAccessKey(smsProperties.getAccessKey());
- defaultSms.setSecretKey(smsProperties.getSecretKey());
- defaultSms.setSignName(smsProperties.getSignName());
- return defaultSms;
- } else {
- return s;
- }
- });
- if (sms == null || sms.getId() == null) {
- throw new ServiceException("鏈幏鍙栧埌瀵瑰簲鐨勭煭淇¢厤缃�");
- } else {
- return sms;
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/TencentSmsBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/TencentSmsBuilder.java
deleted file mode 100644
index c439979..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/TencentSmsBuilder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.Autowired.builder.sms;
-
-import com.github.qcloudsms.SmsMultiSender;
-import lombok.SneakyThrows;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.sms.SmsTemplate;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.core.sms.TencentSmsTemplate;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.entity.Sms;
-
-/**
- * 鑵捐浜戠煭淇℃瀯寤虹被
- *
- * @author Chill
- */
-public class TencentSmsBuilder {
-
- @SneakyThrows
- public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
- SmsProperties smsProperties = new SmsProperties();
- smsProperties.setTemplateId(sms.getTemplateId());
- smsProperties.setAccessKey(sms.getAccessKey());
- smsProperties.setSecretKey(sms.getSecretKey());
- smsProperties.setSignName(sms.getSignName());
- SmsMultiSender smsSender = new SmsMultiSender(Func.toInt(smsProperties.getAccessKey()), sms.getSecretKey());
- return new TencentSmsTemplate(smsProperties, smsSender, bladeRedis);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/YunpianSmsBuilder.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/YunpianSmsBuilder.java
deleted file mode 100644
index e58726b..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/sms/YunpianSmsBuilder.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.Autowired.builder.sms;
-
-import com.yunpian.sdk.YunpianClient;
-import lombok.SneakyThrows;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.sms.SmsTemplate;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.core.sms.YunpianSmsTemplate;
-import org.springblade.Autowired.entity.Sms;
-
-/**
- * 浜戠墖鐭俊鏋勫缓绫�
- *
- * @author Chill
- */
-public class YunpianSmsBuilder {
-
- @SneakyThrows
- public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
- SmsProperties smsProperties = new SmsProperties();
- smsProperties.setTemplateId(sms.getTemplateId());
- smsProperties.setAccessKey(sms.getAccessKey());
- smsProperties.setSignName(sms.getSignName());
- YunpianClient client = new YunpianClient(smsProperties.getAccessKey()).init();
- return new YunpianSmsTemplate(smsProperties, client, bladeRedis);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeOssConfiguration.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeOssConfiguration.java
deleted file mode 100644
index f8bfb66..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeOssConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.Autowired.config;
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.oss.props.OssProperties;
-import org.springblade.Autowired.builder.oss.OssBuilder;
-import org.springblade.Autowired.service.IOssService;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Oss閰嶇疆绫�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-public class BladeOssConfiguration {
-
- private final OssProperties ossProperties;
-
- private final IOssService ossService;
-
- @Bean
- public OssBuilder ossBuilder() {
- return new OssBuilder(ossProperties, ossService);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeSmsConfiguration.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeSmsConfiguration.java
deleted file mode 100644
index e7e3174..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/config/BladeSmsConfiguration.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.Autowired.config;
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.sms.props.SmsProperties;
-import org.springblade.Autowired.builder.sms.SmsBuilder;
-import org.springblade.Autowired.service.ISmsService;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Sms閰嶇疆绫�
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-public class BladeSmsConfiguration {
-
- private final SmsProperties smsProperties;
-
- private final ISmsService smsService;
-
- private final BladeRedis bladeRedis;
-
- @Bean
- public SmsBuilder smsBuilder() {
- return new SmsBuilder(smsProperties, smsService, bladeRedis);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/AttachController.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/AttachController.java
deleted file mode 100644
index ba2d73c..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/AttachController.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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.Autowired.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.entity.Attach;
-import org.springblade.Autowired.service.IAttachService;
-import org.springblade.Autowired.vo.AttachVO;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-/**
- * 闄勪欢琛� 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/attach")
-@Api(value = "闄勪欢", tags = "闄勪欢")
-public class AttachController extends BladeController {
-
- private final IAttachService attachService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆attach")
- public R<Attach> detail(Attach attach) {
- Attach detail = attachService.getOne(Condition.getQueryWrapper(attach));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 闄勪欢琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆attach")
- public R<IPage<Attach>> list(Attach attach, Query query) {
- IPage<Attach> pages = attachService.page(Condition.getPage(query), Condition.getQueryWrapper(attach));
- return R.data(pages);
- }
-
- /**
- * 鑷畾涔夊垎椤� 闄勪欢琛�
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆attach")
- public R<IPage<AttachVO>> page(AttachVO attach, Query query) {
- IPage<AttachVO> pages = attachService.selectAttachPage(Condition.getPage(query), attach);
- return R.data(pages);
- }
-
- /**
- * 鏂板 闄勪欢琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆attach")
- public R save(@Valid @RequestBody Attach attach) {
- return R.status(attachService.save(attach));
- }
-
- /**
- * 淇敼 闄勪欢琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆attach")
- public R update(@Valid @RequestBody Attach attach) {
- return R.status(attachService.updateById(attach));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 闄勪欢琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆attach")
- public R submit(@Valid @RequestBody Attach attach) {
- return R.status(attachService.saveOrUpdate(attach));
- }
-
-
- /**
- * 鍒犻櫎 闄勪欢琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(attachService.deleteLogic(Func.toLongList(ids)));
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java
deleted file mode 100644
index c44bbce..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.Autowired.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.service.IOssService;
-import org.springblade.Autowired.vo.OssVO;
-import org.springblade.Autowired.wrapper.OssWrapper;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-
-import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author BladeX
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-@RequestMapping("/oss")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-@Api(value = "瀵硅薄瀛樺偍鎺ュ彛", tags = "瀵硅薄瀛樺偍鎺ュ彛")
-public class OssController extends BladeController {
-
- private final IOssService ossService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆oss")
- public R<OssVO> detail(Oss oss) {
- Oss detail = ossService.getOne(Condition.getQueryWrapper(oss));
- return R.data(OssWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆oss")
- public R<IPage<OssVO>> list(Oss oss, Query query) {
- IPage<Oss> pages = ossService.page(Condition.getPage(query), Condition.getQueryWrapper(oss));
- return R.data(OssWrapper.build().pageVO(pages));
- }
-
- /**
- * 鑷畾涔夊垎椤�
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆oss")
- public R<IPage<OssVO>> page(OssVO oss, Query query) {
- IPage<OssVO> pages = ossService.selectOssPage(Condition.getPage(query), oss);
- return R.data(pages);
- }
-
- /**
- * 鏂板
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆oss")
- public R save(@Valid @RequestBody Oss oss) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(ossService.save(oss));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆oss")
- public R update(@Valid @RequestBody Oss oss) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(ossService.updateById(oss));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆oss")
- public R submit(@Valid @RequestBody Oss oss) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(ossService.submit(oss));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(ossService.deleteLogic(Func.toLongList(ids)));
- }
-
-
- /**
- * 鍚敤
- */
- @PostMapping("/enable")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "閰嶇疆鍚敤", notes = "浼犲叆id")
- public R enable(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(ossService.enable(id));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java
deleted file mode 100644
index 279b638..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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.Autowired.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.service.ISmsService;
-import org.springblade.Autowired.vo.SmsVO;
-import org.springblade.Autowired.wrapper.SmsWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-
-import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
-
-/**
- * 鐭俊閰嶇疆琛� 鎺у埗鍣�
- *
- * @author BladeX
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-@RequestMapping("/sms")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-@Api(value = "鐭俊閰嶇疆琛�", tags = "鐭俊閰嶇疆琛ㄦ帴鍙�")
-public class SmsController extends BladeController {
-
- private final ISmsService smsService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆sms")
- public R<SmsVO> detail(Sms sms) {
- Sms detail = smsService.getOne(Condition.getQueryWrapper(sms));
- return R.data(SmsWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒嗛〉 鐭俊閰嶇疆琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆sms")
- public R<IPage<SmsVO>> list(Sms sms, Query query) {
- IPage<Sms> pages = smsService.page(Condition.getPage(query), Condition.getQueryWrapper(sms));
- return R.data(SmsWrapper.build().pageVO(pages));
- }
-
-
- /**
- * 鑷畾涔夊垎椤� 鐭俊閰嶇疆琛�
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆sms")
- public R<IPage<SmsVO>> page(SmsVO sms, Query query) {
- IPage<SmsVO> pages = smsService.selectSmsPage(Condition.getPage(query), sms);
- return R.data(pages);
- }
-
- /**
- * 鏂板 鐭俊閰嶇疆琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆sms")
- public R save(@Valid @RequestBody Sms sms) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(smsService.save(sms));
- }
-
- /**
- * 淇敼 鐭俊閰嶇疆琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆sms")
- public R update(@Valid @RequestBody Sms sms) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(smsService.updateById(sms));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 鐭俊閰嶇疆琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆sms")
- public R submit(@Valid @RequestBody Sms sms) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(smsService.submit(sms));
- }
-
-
- /**
- * 鍒犻櫎 鐭俊閰嶇疆琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(smsService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 鍚敤
- */
- @PostMapping("/enable")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "閰嶇疆鍚敤", notes = "浼犲叆id")
- public R enable(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
- CacheUtil.clear(RESOURCE_CACHE);
- return R.status(smsService.enable(id));
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
deleted file mode 100644
index 6f1368f..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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.Autowired.endpoint;
-
-import io.swagger.annotations.Api;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springblade.core.oss.model.BladeFile;
-import org.springblade.core.oss.model.OssFile;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.utils.FileUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.builder.oss.OssBuilder;
-import org.springblade.Autowired.entity.Attach;
-import org.springblade.Autowired.service.IAttachService;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * 瀵硅薄瀛樺偍绔偣
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/oss/endpoint")
-@Api(value = "瀵硅薄瀛樺偍绔偣", tags = "瀵硅薄瀛樺偍绔偣")
-public class OssEndpoint {
-
- /**
- * 瀵硅薄瀛樺偍鏋勫缓绫�
- */
- private final OssBuilder ossBuilder;
-
- /**
- * 闄勪欢琛ㄦ湇鍔�
- */
- private final IAttachService attachService;
-
- /**
- * 鍒涘缓瀛樺偍妗�
- *
- * @param bucketName 瀛樺偍妗跺悕绉�
- * @return Bucket
- */
- @SneakyThrows
- @PostMapping("/make-bucket")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R makeBucket(@RequestParam String bucketName) {
- ossBuilder.template().makeBucket(bucketName);
- return R.success("鍒涘缓鎴愬姛");
- }
-
- /**
- * 鍒涘缓瀛樺偍妗�
- *
- * @param bucketName 瀛樺偍妗跺悕绉�
- * @return R
- */
- @SneakyThrows
- @PostMapping("/remove-bucket")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R removeBucket(@RequestParam String bucketName) {
- ossBuilder.template().removeBucket(bucketName);
- return R.success("鍒犻櫎鎴愬姛");
- }
-
- /**
- * 鎷疯礉鏂囦欢
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @param destBucketName 鐩爣瀛樺偍妗跺悕绉�
- * @param destFileName 鐩爣瀛樺偍妗跺璞″悕绉�
- * @return R
- */
- @SneakyThrows
- @PostMapping("/copy-file")
- public R copyFile(@RequestParam String fileName, @RequestParam String destBucketName, String destFileName) {
- ossBuilder.template().copyFile(fileName, destBucketName, destFileName);
- return R.success("鎿嶄綔鎴愬姛");
- }
-
- /**
- * 鑾峰彇鏂囦欢淇℃伅
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @return InputStream
- */
- @SneakyThrows
- @GetMapping("/stat-file")
- public R<OssFile> statFile(@RequestParam String fileName) {
- return R.data(ossBuilder.template().statFile(fileName));
- }
-
- /**
- * 鑾峰彇鏂囦欢鐩稿璺緞
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @return String
- */
- @SneakyThrows
- @GetMapping("/file-path")
- public R<String> filePath(@RequestParam String fileName) {
- return R.data(ossBuilder.template().filePath(fileName));
- }
-
-
- /**
- * 鑾峰彇鏂囦欢澶栭摼
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @return String
- */
- @SneakyThrows
- @GetMapping("/file-link")
- public R<String> fileLink(@RequestParam String fileName) {
- return R.data(ossBuilder.template().fileLink(fileName));
- }
-
- /**
- * 涓婁紶鏂囦欢
- *
- * @param file 鏂囦欢
- * @return ObjectStat
- */
- @SneakyThrows
- @PostMapping("/put-file")
- public R<BladeFile> putFile(@RequestParam MultipartFile file) {
- BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
- return R.data(bladeFile);
- }
-
- /**
- * 涓婁紶鏂囦欢
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @param file 鏂囦欢
- * @return ObjectStat
- */
- @SneakyThrows
- @PostMapping("/put-file-by-name")
- public R<BladeFile> putFile(@RequestParam String fileName, @RequestParam MultipartFile file) {
- BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
- return R.data(bladeFile);
- }
-
- /**
- * 涓婁紶鏂囦欢骞朵繚瀛樿嚦闄勪欢琛�
- *
- * @param file 鏂囦欢
- * @return ObjectStat
- */
- @SneakyThrows
- @PostMapping("/put-file-attach")
- public R<BladeFile> putFileAttach(@RequestParam MultipartFile file) {
- String fileName = file.getOriginalFilename();
- BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
- Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
- bladeFile.setAttachId(attachId);
- return R.data(bladeFile);
- }
-
- /**
- * 涓婁紶鏂囦欢骞朵繚瀛樿嚦闄勪欢琛�
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @param file 鏂囦欢
- * @return ObjectStat
- */
- @SneakyThrows
- @PostMapping("/put-file-attach-by-name")
- public R<BladeFile> putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file) {
- BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
- Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
- bladeFile.setAttachId(attachId);
- return R.data(bladeFile);
- }
-
- /**
- * 鏋勫缓闄勪欢琛�
- *
- * @param fileName 鏂囦欢鍚�
- * @param fileSize 鏂囦欢澶у皬
- * @param bladeFile 瀵硅薄瀛樺偍鏂囦欢
- * @return attachId
- */
- private Long buildAttach(String fileName, Long fileSize, BladeFile bladeFile) {
- String fileExtension = FileUtil.getFileExtension(fileName);
- Attach attach = new Attach();
- attach.setDomainUrl(bladeFile.getDomain());
- attach.setLink(bladeFile.getLink());
- attach.setName(bladeFile.getName());
- attach.setOriginalName(bladeFile.getOriginalName());
- attach.setAttachSize(fileSize);
- attach.setExtension(fileExtension);
- attachService.save(attach);
- return attach.getId();
- }
-
- /**
- * 鍒犻櫎鏂囦欢
- *
- * @param fileName 瀛樺偍妗跺璞″悕绉�
- * @return R
- */
- @SneakyThrows
- @PostMapping("/remove-file")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R removeFile(@RequestParam String fileName) {
- ossBuilder.template().removeFile(fileName);
- return R.success("鎿嶄綔鎴愬姛");
- }
-
- /**
- * 鎵归噺鍒犻櫎鏂囦欢
- *
- * @param fileNames 瀛樺偍妗跺璞″悕绉伴泦鍚�
- * @return R
- */
- @SneakyThrows
- @PostMapping("/remove-files")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R removeFiles(@RequestParam String fileNames) {
- ossBuilder.template().removeFiles(Func.toStrList(fileNames));
- return R.success("鎿嶄綔鎴愬姛");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/SmsEndpoint.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/SmsEndpoint.java
deleted file mode 100644
index 71ccf95..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/SmsEndpoint.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * 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.Autowired.endpoint;
-
-import io.swagger.annotations.Api;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springblade.core.sms.model.SmsCode;
-import org.springblade.core.sms.model.SmsData;
-import org.springblade.core.sms.model.SmsResponse;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.builder.sms.SmsBuilder;
-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.HashMap;
-import java.util.Map;
-
-import static org.springblade.Autowired.utils.SmsUtil.*;
-
-/**
- * 鐭俊鏈嶅姟绔偣
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/sms/endpoint")
-@Api(value = "鐭俊鏈嶅姟绔偣", tags = "鐭俊鏈嶅姟绔偣")
-public class SmsEndpoint {
-
- /**
- * 鐭俊鏈嶅姟鏋勫缓绫�
- */
- private final SmsBuilder smsBuilder;
-
- //================================= 鐭俊鏈嶅姟鏍¢獙 =================================
-
- /**
- * 鐭俊楠岃瘉鐮佸彂閫�
- *
- * @param phone 鎵嬫満鍙�
- */
- @SneakyThrows
- @PostMapping("/send-validate")
- public R sendValidate(@RequestParam String phone) {
- Map<String, String> params = getValidateParams();
- SmsCode smsCode = smsBuilder.template().sendValidate(new SmsData(params).setKey(PARAM_KEY), phone);
- return smsCode.isSuccess() ? R.data(smsCode, SEND_SUCCESS) : R.fail(SEND_FAIL);
- }
-
- /**
- * 鏍¢獙鐭俊
- *
- * @param smsCode 鐭俊鏍¢獙淇℃伅
- */
- @SneakyThrows
- @PostMapping("/validate-message")
- public R validateMessage(SmsCode smsCode) {
- boolean validate = smsBuilder.template().validateMessage(smsCode);
- return validate ? R.success(VALIDATE_SUCCESS) : R.fail(VALIDATE_FAIL);
- }
-
- //========== 閫氱敤鐭俊鑷畾涔夊彂閫�(鏀寔鑷畾涔塸arams鍙傛暟浼犻��, 鎺ㄨ崘鐢ㄤ簬娴嬭瘯, 涓嶆帹鑽愮敤浜庣敓浜х幆澧�) ==========
-
- /**
- * 鍙戦�佷俊鎭�
- *
- * @param params 鑷畾涔夌煭淇″弬鏁�
- * @param phones 鎵嬫満鍙烽泦鍚�
- */
- @SneakyThrows
- @PostMapping("/send-message")
- public R sendMessage(@RequestParam String code, @RequestParam String params, @RequestParam String phones) {
- SmsData smsData = new SmsData(JsonUtil.readMap(params, String.class, String.class));
- return send(code, smsData, phones);
- }
-
- //========== 鎸囧畾鐭俊鏈嶅姟鍙戦��(鍙牴鎹悇绉嶅満鏅嚜瀹氭嫇灞曞畾鍒�, 鎹熷け鐏垫椿鎬у鍔犲畨鍏ㄦ��, 鎺ㄨ崘鐢ㄤ簬鐢熶骇鐜) ==========
-
- /**
- * 鐭俊閫氱煡
- *
- * @param phones 鎵嬫満鍙烽泦鍚�
- */
- @SneakyThrows
- @PostMapping("/send-notice")
- public R sendNotice(@RequestParam String phones) {
- Map<String, String> params = new HashMap<>(3);
- params.put("title", "閫氱煡鏍囬");
- params.put("content", "閫氱煡鍐呭");
- params.put("date", "閫氱煡鏃堕棿");
- SmsData smsData = new SmsData(params);
- return send(smsData, phones);
- }
-
- /**
- * 璁㈠崟閫氱煡
- *
- * @param phones 鎵嬫満鍙烽泦鍚�
- */
- @SneakyThrows
- @PostMapping("/send-order")
- public R sendOrder(@RequestParam String phones) {
- Map<String, String> params = new HashMap<>(3);
- params.put("orderNo", "璁㈠崟缂栧彿");
- params.put("packageNo", "蹇�掑崟鍙�");
- params.put("user", "鏀朵欢浜�");
- SmsData smsData = new SmsData(params);
- return send(smsData, phones);
- }
-
- /**
- * 浼氳閫氱煡
- *
- * @param phones 鎵嬫満鍙烽泦鍚�
- */
- @SneakyThrows
- @PostMapping("/send-meeting")
- public R sendMeeting(@RequestParam String phones) {
- Map<String, String> params = new HashMap<>(2);
- params.put("roomId", "浼氳瀹�");
- params.put("topic", "浼氳涓婚");
- params.put("date", "浼氳鏃堕棿");
- SmsData smsData = new SmsData(params);
- return send(smsData, phones);
- }
-
- //================================= 閫氱敤鐭俊鍙戦�佹帴鍙� =================================
-
- /**
- * 閫氱敤鐭俊鍙戦�佹帴鍙�
- *
- * @param smsData 鐭俊鍐呭
- * @param phones 鎵嬫満鍙峰垪琛�
- * @return 鏄惁鍙戦�佹垚鍔�
- */
- private R send(SmsData smsData, String phones) {
- SmsResponse response = smsBuilder.template().sendMessage(smsData, Func.toStrList(phones));
- return response.isSuccess() ? R.success(SEND_SUCCESS) : R.fail(SEND_FAIL);
- }
-
- /**
- * 閫氱敤鐭俊鍙戦�佹帴鍙�
- *
- * @param code 璧勬簮缂栧彿
- * @param smsData 鐭俊鍐呭
- * @param phones 鎵嬫満鍙峰垪琛�
- * @return 鏄惁鍙戦�佹垚鍔�
- */
- private R send(String code, SmsData smsData, String phones) {
- SmsResponse response = smsBuilder.template(code).sendMessage(smsData, Func.toStrList(phones));
- return response.isSuccess() ? R.success(SEND_SUCCESS) : R.fail(SEND_FAIL);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/SmsClient.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/SmsClient.java
deleted file mode 100644
index 28669e4..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/SmsClient.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.Autowired.feign;
-
-import lombok.AllArgsConstructor;
-import org.springblade.Autowired.builder.sms.SmsBuilder;
-import org.springblade.core.sms.model.SmsCode;
-import org.springblade.core.sms.model.SmsData;
-import org.springblade.core.sms.model.SmsResponse;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.resource.feign.ISmsClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Map;
-
-import static org.springblade.Autowired.utils.SmsUtil.*;
-
-/**
- * 鐭俊杩滅▼璋冪敤鏈嶅姟
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-public class SmsClient implements ISmsClient {
-
- private final SmsBuilder smsBuilder;
-
- @Override
- @PostMapping(SEND_MESSAGE)
- public R<SmsResponse> sendMessage(String code, String params, String phones) {
- SmsData smsData = new SmsData(JsonUtil.readMap(params, String.class, String.class));
- SmsResponse response = smsBuilder.template(code).sendMessage(smsData, Func.toStrList(phones));
- return R.data(response);
- }
-
- @Override
- @PostMapping(SEND_VALIDATE)
- public R sendValidate(String code, String phone) {
- Map<String, String> params = getValidateParams();
- SmsCode smsCode = smsBuilder.template(code).sendValidate(new SmsData(params).setKey(PARAM_KEY), phone);
- return smsCode.isSuccess() ? R.data(smsCode, SEND_SUCCESS) : R.fail(SEND_FAIL);
- }
-
- @Override
- @PostMapping(VALIDATE_MESSAGE)
- public R validateMessage(String code, String id, String value, String phone) {
- SmsCode smsCode = new SmsCode().setId(id).setValue(value).setPhone(phone);
- boolean validate = smsBuilder.template(code).validateMessage(smsCode);
- return validate ? R.success(VALIDATE_SUCCESS) : R.fail(VALIDATE_FAIL);
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.java
deleted file mode 100644
index 4f7d162..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.Autowired.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.Autowired.entity.Attach;
-import org.springblade.Autowired.vo.AttachVO;
-
-import java.util.List;
-
-/**
- * 闄勪欢琛� Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface AttachMapper extends BaseMapper<Attach> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param attach
- * @return
- */
- List<AttachVO> selectAttachPage(IPage page, AttachVO attach);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.xml b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.xml
deleted file mode 100644
index 0069551..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/AttachMapper.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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.Autowired.mapper.AttachMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="attachResultMap" type="org.springblade.Autowired.entity.Attach">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="link" property="link"/>
- <result column="domain_url" property="domainUrl"/>
- <result column="name" property="name"/>
- <result column="original_name" property="originalName"/>
- <result column="extension" property="extension"/>
- <result column="attach_size" property="attachSize"/>
- </resultMap>
-
-
- <select id="selectAttachPage" resultMap="attachResultMap">
- select * from blade_attach where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.java
deleted file mode 100644
index bb4e062..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.Autowired.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.vo.OssVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface OssMapper extends BaseMapper<Oss> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param oss
- * @return
- */
- List<OssVO> selectOssPage(IPage page, OssVO oss);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.xml b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.xml
deleted file mode 100644
index 2e59eac..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.Autowired.mapper.OssMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="ossResultMap" type="org.springblade.Autowired.entity.Oss">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="oss_code" property="ossCode"/>
- <result column="category" property="category"/>
- <result column="endpoint" property="endpoint"/>
- <result column="access_key" property="accessKey"/>
- <result column="secret_key" property="secretKey"/>
- <result column="bucket_name" property="bucketName"/>
- <result column="app_id" property="appId"/>
- <result column="region" property="region"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-
- <select id="selectOssPage" resultMap="ossResultMap">
- select * from pl_sys_oss where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.java
deleted file mode 100644
index ca012cf..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.Autowired.mapper;
-
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.vo.SmsVO;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import java.util.List;
-
-/**
- * 鐭俊閰嶇疆琛� Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface SmsMapper extends BaseMapper<Sms> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param sms
- * @return
- */
- List<SmsVO> selectSmsPage(IPage page, SmsVO sms);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.xml b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.xml
deleted file mode 100644
index 1fc3be4..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/SmsMapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.Autowired.mapper.SmsMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="smsResultMap" type="org.springblade.Autowired.entity.Sms">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="sms_code" property="smsCode"/>
- <result column="template_id" property="templateId"/>
- <result column="category" property="category"/>
- <result column="access_key" property="accessKey"/>
- <result column="secret_key" property="secretKey"/>
- <result column="region_id" property="regionId"/>
- <result column="sign_name" property="signName"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-
- <select id="selectSmsPage" resultMap="smsResultMap">
- select * from pl_sys_sms where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IAttachService.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IAttachService.java
deleted file mode 100644
index 99b2ef6..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IAttachService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.Autowired.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.Autowired.entity.Attach;
-import org.springblade.Autowired.vo.AttachVO;
-
-/**
- * 闄勪欢琛� 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IAttachService extends BaseService<Attach> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param attach
- * @return
- */
- IPage<AttachVO> selectAttachPage(IPage<AttachVO> page, AttachVO attach);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IOssService.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IOssService.java
deleted file mode 100644
index b777ea7..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/IOssService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.Autowired.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.vo.OssVO;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface IOssService extends BaseService<Oss> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param oss
- * @return
- */
- IPage<OssVO> selectOssPage(IPage<OssVO> page, OssVO oss);
-
- /**
- * 鎻愪氦oss淇℃伅
- *
- * @param oss
- * @return
- */
- boolean submit(Oss oss);
-
- /**
- * 鍚姩閰嶇疆
- *
- * @param id
- * @return
- */
- boolean enable(Long id);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/ISmsService.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/ISmsService.java
deleted file mode 100644
index 6073f26..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/ISmsService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.Autowired.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.vo.SmsVO;
-
-/**
- * 鐭俊閰嶇疆琛� 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface ISmsService extends BaseService<Sms> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param sms
- * @return
- */
- IPage<SmsVO> selectSmsPage(IPage<SmsVO> page, SmsVO sms);
-
- /**
- * 鎻愪氦oss淇℃伅
- *
- * @param oss
- * @return
- */
- boolean submit(Sms oss);
-
- /**
- * 鍚姩閰嶇疆
- *
- * @param id
- * @return
- */
- boolean enable(Long id);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/AttachServiceImpl.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/AttachServiceImpl.java
deleted file mode 100644
index 4d98e77..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/AttachServiceImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.Autowired.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.Autowired.entity.Attach;
-import org.springblade.Autowired.mapper.AttachMapper;
-import org.springblade.Autowired.service.IAttachService;
-import org.springblade.Autowired.vo.AttachVO;
-import org.springframework.stereotype.Service;
-
-/**
- * 闄勪欢琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class AttachServiceImpl extends BaseServiceImpl<AttachMapper, Attach> implements IAttachService {
-
- @Override
- public IPage<AttachVO> selectAttachPage(IPage<AttachVO> page, AttachVO attach) {
- return page.setRecords(baseMapper.selectAttachPage(page, attach));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/OssServiceImpl.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/OssServiceImpl.java
deleted file mode 100644
index 26ae899..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/OssServiceImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.Autowired.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.vo.OssVO;
-import org.springblade.Autowired.mapper.OssMapper;
-import org.springblade.Autowired.service.IOssService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-public class OssServiceImpl extends BaseServiceImpl<OssMapper, Oss> implements IOssService {
-
- @Override
- public IPage<OssVO> selectOssPage(IPage<OssVO> page, OssVO oss) {
- return page.setRecords(baseMapper.selectOssPage(page, oss));
- }
-
- @Override
- public boolean submit(Oss oss) {
- LambdaQueryWrapper<Oss> lqw = Wrappers.<Oss>query().lambda()
- .eq(Oss::getOssCode, oss.getOssCode()).eq(Oss::getTenantId, AuthUtil.getTenantId());
- Long cnt = baseMapper.selectCount(Func.isEmpty(oss.getId()) ? lqw : lqw.notIn(Oss::getId, oss.getId()));
- if (cnt > 0L) {
- throw new ServiceException("褰撳墠璧勬簮缂栧彿宸插瓨鍦�!");
- }
- return this.saveOrUpdate(oss);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean enable(Long id) {
- // 鍏堢鐢�
- boolean temp1 = this.update(Wrappers.<Oss>update().lambda().set(Oss::getStatus, 1));
- // 鍦ㄥ惎鐢�
- boolean temp2 = this.update(Wrappers.<Oss>update().lambda().set(Oss::getStatus, 2).eq(Oss::getId, id));
- return temp1 && temp2;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/SmsServiceImpl.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/SmsServiceImpl.java
deleted file mode 100644
index 8b58ae7..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/service/impl/SmsServiceImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.Autowired.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.mapper.SmsMapper;
-import org.springblade.Autowired.service.ISmsService;
-import org.springblade.Autowired.vo.SmsVO;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * 鐭俊閰嶇疆琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-public class SmsServiceImpl extends BaseServiceImpl<SmsMapper, Sms> implements ISmsService {
-
- @Override
- public IPage<SmsVO> selectSmsPage(IPage<SmsVO> page, SmsVO sms) {
- return page.setRecords(baseMapper.selectSmsPage(page, sms));
- }
-
- @Override
- public boolean submit(Sms sms) {
- LambdaQueryWrapper<Sms> lqw = Wrappers.<Sms>query().lambda()
- .eq(Sms::getSmsCode, sms.getSmsCode()).eq(Sms::getTenantId, AuthUtil.getTenantId());
- Long cnt = baseMapper.selectCount(Func.isEmpty(sms.getId()) ? lqw : lqw.notIn(Sms::getId, sms.getId()));
- if (cnt > 0L) {
- throw new ServiceException("褰撳墠璧勬簮缂栧彿宸插瓨鍦�!");
- }
- return this.saveOrUpdate(sms);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean enable(Long id) {
- // 鍏堢鐢�
- boolean temp1 = this.update(Wrappers.<Sms>update().lambda().set(Sms::getStatus, 1));
- // 鍦ㄥ惎鐢�
- boolean temp2 = this.update(Wrappers.<Sms>update().lambda().set(Sms::getStatus, 2).eq(Sms::getId, id));
- return temp1 && temp2;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/OssWrapper.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/OssWrapper.java
deleted file mode 100644
index 5288662..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/OssWrapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.Autowired.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.Autowired.entity.Oss;
-import org.springblade.Autowired.vo.OssVO;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.enums.DictEnum;
-
-import java.util.Objects;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author BladeX
- */
-public class OssWrapper extends BaseEntityWrapper<Oss, OssVO> {
-
- public static OssWrapper build() {
- return new OssWrapper();
- }
-
- @Override
- public OssVO entityVO(Oss oss) {
- OssVO ossVO = Objects.requireNonNull(BeanUtil.copy(oss, OssVO.class));
- String categoryName = DictCache.getValue(DictEnum.OSS, oss.getCategory());
- String statusName = DictCache.getValue(DictEnum.YES_NO, oss.getStatus());
- ossVO.setCategoryName(categoryName);
- ossVO.setStatusName(statusName);
- return ossVO;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/SmsWrapper.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/SmsWrapper.java
deleted file mode 100644
index 29bdb76..0000000
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/wrapper/SmsWrapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.Autowired.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.Autowired.entity.Sms;
-import org.springblade.Autowired.vo.SmsVO;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.enums.DictEnum;
-
-import java.util.Objects;
-
-/**
- * 鐭俊閰嶇疆琛ㄥ寘瑁呯被,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author BladeX
- */
-public class SmsWrapper extends BaseEntityWrapper<Sms, SmsVO> {
-
- public static SmsWrapper build() {
- return new SmsWrapper();
- }
-
- @Override
- public SmsVO entityVO(Sms sms) {
- SmsVO smsVO = Objects.requireNonNull(BeanUtil.copy(sms, SmsVO.class));
- String categoryName = DictCache.getValue(DictEnum.SMS, sms.getCategory());
- String statusName = DictCache.getValue(DictEnum.YES_NO, sms.getStatus());
- smsVO.setCategoryName(categoryName);
- smsVO.setStatusName(statusName);
- return smsVO;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-swagger/pom.xml b/Source/BladeX/blade-ops/blade-swagger/pom.xml
deleted file mode 100644
index c8250c7..0000000
--- a/Source/BladeX/blade-ops/blade-swagger/pom.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-swagger</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-cloud</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/java/org/springblade/swagger/SwaggerApplication.java b/Source/BladeX/blade-ops/blade-swagger/src/main/java/org/springblade/swagger/SwaggerApplication.java
deleted file mode 100644
index ac2b78b..0000000
--- a/Source/BladeX/blade-ops/blade-swagger/src/main/java/org/springblade/swagger/SwaggerApplication.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.swagger;
-
-
-import io.swagger.annotations.SwaggerDefinition;
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
-
-/**
- * swagger鑱氬悎鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class SwaggerApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_SWAGGER_NAME, SwaggerApplication.class, args);
- }
-
-}
diff --git "a/Source/BladeX/blade-ops/blade-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" "b/Source/BladeX/blade-ops/blade-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md"
deleted file mode 100644
index 9e9ca87..0000000
--- "a/Source/BladeX/blade-ops/blade-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md"
+++ /dev/null
@@ -1,1740 +0,0 @@
-## 銆婂垎甯冨紡浠诲姟璋冨害骞冲彴XXL-JOB銆�
-
-[](https://github.com/xuxueli/xxl-job/actions)
-[](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/)
-[](https://github.com/xuxueli/xxl-job/releases)
-[](https://github.com/xuxueli/xxl-job/)
-[](https://hub.docker.com/r/xuxueli/xxl-job-admin/)
-[](http://www.gnu.org/licenses/gpl-3.0.html)
-[](https://www.xuxueli.com/page/donate.html)
-
-[TOCM]
-
-[TOC]
-
-## 涓�銆佺畝浠�
-
-### 1.1 姒傝堪
-XXL-JOB鏄竴涓垎甯冨紡浠诲姟璋冨害骞冲彴锛屽叾鏍稿績璁捐鐩爣鏄紑鍙戣繀閫熴�佸涔犵畝鍗曘�佽交閲忕骇銆佹槗鎵╁睍銆傜幇宸插紑鏀炬簮浠g爜骞舵帴鍏ュ瀹跺叕鍙哥嚎涓婁骇鍝佺嚎锛屽紑绠卞嵆鐢ㄣ��
-
-### 1.2 绀惧尯浜ゆ祦
-- [绀惧尯浜ゆ祦](https://www.xuxueli.com/page/community.html)
-
-### 1.3 鐗规��
-- 1銆佺畝鍗曪細鏀寔閫氳繃Web椤甸潰瀵逛换鍔¤繘琛孋RUD鎿嶄綔锛屾搷浣滅畝鍗曪紝涓�鍒嗛挓涓婃墜锛�
-- 2銆佸姩鎬侊細鏀寔鍔ㄦ�佷慨鏀逛换鍔$姸鎬併�佸惎鍔�/鍋滄浠诲姟锛屼互鍙婄粓姝㈣繍琛屼腑浠诲姟锛屽嵆鏃剁敓鏁堬紱
-- 3銆佽皟搴︿腑蹇僅A锛堜腑蹇冨紡锛夛細璋冨害閲囩敤涓績寮忚璁★紝鈥滆皟搴︿腑蹇冣�濊嚜鐮旇皟搴︾粍浠跺苟鏀寔闆嗙兢閮ㄧ讲锛屽彲淇濊瘉璋冨害涓績HA锛�
-- 4銆佹墽琛屽櫒HA锛堝垎甯冨紡锛夛細浠诲姟鍒嗗竷寮忔墽琛岋紝浠诲姟"鎵ц鍣�"鏀寔闆嗙兢閮ㄧ讲锛屽彲淇濊瘉浠诲姟鎵цHA锛�
-- 5銆佹敞鍐屼腑蹇�: 鎵ц鍣ㄤ細鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐屼换鍔�, 璋冨害涓績灏嗕細鑷姩鍙戠幇娉ㄥ唽鐨勪换鍔″苟瑙﹀彂鎵ц銆傚悓鏃讹紝涔熸敮鎸佹墜鍔ㄥ綍鍏ユ墽琛屽櫒鍦板潃锛�
-- 6銆佸脊鎬ф墿瀹圭缉瀹癸細涓�鏃︽湁鏂版墽琛屽櫒鏈哄櫒涓婄嚎鎴栬�呬笅绾匡紝涓嬫璋冨害鏃跺皢浼氶噸鏂板垎閰嶄换鍔★紱
-- 7銆佽矾鐢辩瓥鐣ワ細鎵ц鍣ㄩ泦缇ら儴缃叉椂鎻愪緵涓板瘜鐨勮矾鐢辩瓥鐣ワ紝鍖呮嫭锛氱涓�涓�佹渶鍚庝竴涓�佽疆璇€�侀殢鏈恒�佷竴鑷存�ASH銆佹渶涓嶇粡甯镐娇鐢ㄣ�佹渶杩戞渶涔呮湭浣跨敤銆佹晠闅滆浆绉汇�佸繖纰岃浆绉荤瓑锛�
-- 8銆佹晠闅滆浆绉伙細浠诲姟璺敱绛栫暐閫夋嫨"鏁呴殰杞Щ"鎯呭喌涓嬶紝濡傛灉鎵ц鍣ㄩ泦缇や腑鏌愪竴鍙版満鍣ㄦ晠闅滐紝灏嗕細鑷姩Failover鍒囨崲鍒颁竴鍙版甯哥殑鎵ц鍣ㄥ彂閫佽皟搴﹁姹傘��
-- 9銆侀樆濉炲鐞嗙瓥鐣ワ細璋冨害杩囦簬瀵嗛泦鎵ц鍣ㄦ潵涓嶅強澶勭悊鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細鍗曟満涓茶锛堥粯璁わ級銆佷涪寮冨悗缁皟搴︺�佽鐩栦箣鍓嶈皟搴︼紱
-- 10銆佷换鍔¤秴鏃舵帶鍒讹細鏀寔鑷畾涔変换鍔¤秴鏃舵椂闂达紝浠诲姟杩愯瓒呮椂灏嗕細涓诲姩涓柇浠诲姟锛�
-- 11銆佷换鍔″け璐ラ噸璇曪細鏀寔鑷畾涔変换鍔″け璐ラ噸璇曟鏁帮紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱鍏朵腑鍒嗙墖浠诲姟鏀寔鍒嗙墖绮掑害鐨勫け璐ラ噸璇曪紱
-- 12銆佷换鍔″け璐ュ憡璀︼紱榛樿鎻愪緵閭欢鏂瑰紡澶辫触鍛婅锛屽悓鏃堕鐣欐墿灞曟帴鍙o紝鍙柟渚跨殑鎵╁睍鐭俊銆侀拤閽夌瓑鍛婅鏂瑰紡锛�
-- 13銆佸垎鐗囧箍鎾换鍔★細鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戦泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
-- 14銆佸姩鎬佸垎鐗囷細鍒嗙墖骞挎挱浠诲姟浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
-- 15銆佷簨浠惰Е鍙戯細闄や簡"Cron鏂瑰紡"鍜�"浠诲姟渚濊禆鏂瑰紡"瑙﹀彂浠诲姟鎵ц涔嬪锛屾敮鎸佸熀浜庝簨浠剁殑瑙﹀彂浠诲姟鏂瑰紡銆傝皟搴︿腑蹇冩彁渚涜Е鍙戜换鍔″崟娆℃墽琛岀殑API鏈嶅姟锛屽彲鏍规嵁涓氬姟浜嬩欢鐏垫椿瑙﹀彂銆�
-- 16銆佷换鍔¤繘搴︾洃鎺э細鏀寔瀹炴椂鐩戞帶浠诲姟杩涘害锛�
-- 17銆丷olling瀹炴椂鏃ュ織锛氭敮鎸佸湪绾挎煡鐪嬭皟搴︾粨鏋滐紝骞朵笖鏀寔浠olling鏂瑰紡瀹炴椂鏌ョ湅鎵ц鍣ㄨ緭鍑虹殑瀹屾暣鐨勬墽琛屾棩蹇楋紱
-- 18銆丟LUE锛氭彁渚沇eb IDE锛屾敮鎸佸湪绾垮紑鍙戜换鍔¢�昏緫浠g爜锛屽姩鎬佸彂甯冿紝瀹炴椂缂栬瘧鐢熸晥锛岀渷鐣ラ儴缃蹭笂绾跨殑杩囩▼銆傛敮鎸�30涓増鏈殑鍘嗗彶鐗堟湰鍥炴函銆�
-- 19銆佽剼鏈换鍔★細鏀寔浠LUE妯″紡寮�鍙戝拰杩愯鑴氭湰浠诲姟锛屽寘鎷琒hell銆丳ython銆丯odeJS銆丳HP銆丳owerShell绛夌被鍨嬭剼鏈�;
-- 20銆佸懡浠よ浠诲姟锛氬師鐢熸彁渚涢�氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
-- 21銆佷换鍔′緷璧栵細鏀寔閰嶇疆瀛愪换鍔′緷璧栵紝褰撶埗浠诲姟鎵ц缁撴潫涓旀墽琛屾垚鍔熷悗灏嗕細涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鐨勬墽琛�, 澶氫釜瀛愪换鍔$敤閫楀彿鍒嗛殧锛�
-- 22銆佷竴鑷存�э細鈥滆皟搴︿腑蹇冣�濋�氳繃DB閿佷繚璇侀泦缇ゅ垎甯冨紡璋冨害鐨勪竴鑷存��, 涓�娆′换鍔¤皟搴﹀彧浼氳Е鍙戜竴娆℃墽琛岋紱
-- 23銆佽嚜瀹氫箟浠诲姟鍙傛暟锛氭敮鎸佸湪绾块厤缃皟搴︿换鍔″叆鍙傦紝鍗虫椂鐢熸晥锛�
-- 24銆佽皟搴︾嚎绋嬫睜锛氳皟搴︾郴缁熷绾跨▼瑙﹀彂璋冨害杩愯锛岀‘淇濊皟搴︾簿纭墽琛岋紝涓嶈鍫靛锛�
-- 25銆佹暟鎹姞瀵嗭細璋冨害涓績鍜屾墽琛屽櫒涔嬮棿鐨勯�氳杩涜鏁版嵁鍔犲瘑锛屾彁鍗囪皟搴︿俊鎭畨鍏ㄦ�э紱
-- 26銆侀偖浠舵姤璀︼細浠诲姟澶辫触鏃舵敮鎸侀偖浠舵姤璀︼紝鏀寔閰嶇疆澶氶偖浠跺湴鍧�缇ゅ彂鎶ヨ閭欢锛�
-- 27銆佹帹閫乵aven涓ぎ浠撳簱: 灏嗕細鎶婃渶鏂扮ǔ瀹氱増鎺ㄩ�佸埌maven涓ぎ浠撳簱, 鏂逛究鐢ㄦ埛鎺ュ叆鍜屼娇鐢�;
-- 28銆佽繍琛屾姤琛細鏀寔瀹炴椂鏌ョ湅杩愯鏁版嵁锛屽浠诲姟鏁伴噺銆佽皟搴︽鏁般�佹墽琛屽櫒鏁伴噺绛夛紱浠ュ強璋冨害鎶ヨ〃锛屽璋冨害鏃ユ湡鍒嗗竷鍥撅紝璋冨害鎴愬姛鍒嗗竷鍥剧瓑锛�
-- 29銆佸叏寮傛锛氫换鍔¤皟搴︽祦绋嬪叏寮傛鍖栬璁″疄鐜帮紝濡傚紓姝ヨ皟搴︺�佸紓姝ヨ繍琛屻�佸紓姝ュ洖璋冪瓑锛屾湁鏁堝瀵嗛泦璋冨害杩涜娴侀噺鍓婂嘲锛岀悊璁轰笂鏀寔浠绘剰鏃堕暱浠诲姟鐨勮繍琛岋紱
-- 30銆佽法骞冲彴锛氬師鐢熸彁渚涢�氱敤HTTP浠诲姟Handler锛圔ean浠诲姟锛�"HttpJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
-- 31銆佸浗闄呭寲锛氳皟搴︿腑蹇冩敮鎸佸浗闄呭寲璁剧疆锛屾彁渚涗腑鏂囥�佽嫳鏂囦袱绉嶅彲閫夎瑷�锛岄粯璁や负涓枃锛�
-- 32銆佸鍣ㄥ寲锛氭彁渚涘畼鏂筪ocker闀滃儚锛屽苟瀹炴椂鏇存柊鎺ㄩ�乨ockerhub锛岃繘涓�姝ュ疄鐜颁骇鍝佸紑绠卞嵆鐢紱
-- 33銆佺嚎绋嬫睜闅旂锛氳皟搴︾嚎绋嬫睜杩涜闅旂鎷嗗垎锛屾參浠诲姟鑷姩闄嶇骇杩涘叆"Slow"绾跨▼姹狅紝閬垮厤鑰楀敖璋冨害绾跨▼锛屾彁楂樼郴缁熺ǔ瀹氭�э紱
-- 34銆佺敤鎴风鐞嗭細鏀寔鍦ㄧ嚎绠$悊绯荤粺鐢ㄦ埛锛屽瓨鍦ㄧ鐞嗗憳銆佹櫘閫氱敤鎴蜂袱绉嶈鑹诧紱
-- 35銆佹潈闄愭帶鍒讹細鎵ц鍣ㄧ淮搴﹁繘琛屾潈闄愭帶鍒讹紝绠$悊鍛樻嫢鏈夊叏閲忔潈闄愶紝鏅�氱敤鎴烽渶瑕佸垎閰嶆墽琛屽櫒鏉冮檺鍚庢墠鍏佽鐩稿叧鎿嶄綔锛�
-
-
-### 1.4 鍙戝睍
-浜�2015骞翠腑锛屾垜鍦╣ithub涓婂垱寤篨XL-JOB椤圭洰浠撳簱骞舵彁浜ょ涓�涓猚ommit锛岄殢涔嬭繘琛岀郴缁熺粨鏋勮璁★紝UI閫夊瀷锛屼氦浜掕璁♀�︹��
-
-浜�2015-11鏈堬紝XXL-JOB缁堜簬RELEASE浜嗙涓�涓ぇ鐗堟湰V1.0锛� 闅忓悗鎴戝皢涔嬪彂甯冨埌OSCHINA锛孹XL-JOB鍦∣SCHINA涓婅幏寰椾簡@绾㈣柉鐨勭儹闂ㄦ帹鑽愶紝鍚屾湡鍒嗗埆杈惧埌浜哋SCHINA鐨勨�滅儹闂ㄥ姩寮光�濇帓琛岀涓�鍜実it.oschina鐨勫紑婧愯蒋浠舵湀鐑害鎺掕绗竴锛屽湪姝ょ壒鍒劅璋㈢孩钖紝鎰熻阿澶у鐨勫叧娉ㄥ拰鏀寔銆�
-
-浜�2015-12鏈堬紝鎴戝皢XXL-JOB鍙戣〃鍒版垜鍙稿唴閮ㄧ煡璇嗗簱锛屽苟涓斿緱鍒板唴閮ㄥ悓浜嬭鍙��
-
-浜�2016-01鏈堬紝鎴戝徃灞曞紑XXL-JOB鐨勫唴閮ㄦ帴鍏ュ拰瀹氬埗宸ヤ綔锛屽湪姝ゆ劅璋㈣鏌愬拰灏规煇涓や綅鍚屼簨鐨勮础鐚紝鍚屾椂涔熸劅璋㈠唴閮ㄥ叾浠栫粰涓庡叧娉ㄤ笌鏀寔鐨勫悓浜嬨��
-
-浜�2017-05-13锛屽湪涓婃捣涓惧姙鐨� "[绗�62鏈熷紑婧愪腑鍥芥簮鍒涗細](https://www.oschina.net/event/2236961)" 鐨� "鏀剧爜杩囨潵" 鐜妭锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛屽彴涓嬩簲鐧句綅鍦ㄥ満瑙備紬鍙嶅搷鐑儓锛圼鍥炬枃鍥為【](https://www.oschina.net/question/2686220_2242120) 锛夈��
-
-浜�2017-10-22锛屽張鎷嶄簯 Open Talk 鑱斿悎 Spring Cloud 涓浗绀惧尯涓惧姙鐨� "[杩涘嚮鐨勫井鏈嶅姟瀹炴垬娲句笂娴风珯](https://opentalk.upyun.com/303.html)"锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛岀幇鍦鸿浼楀弽鍝嶇儹鐑堝苟鍦ㄤ細鍚庝笌XXL-JOB鐢ㄦ埛鐑儓璁ㄨ浜ゆ祦銆�
-
-浜�2017-12-11锛孹XL-JOB鏈夊垢鍙備細銆奫InfoQ ArchSummit鍏ㄧ悆鏋舵瀯甯堝嘲浼歖(http://bj2017.archsummit.com/)銆嬶紝骞惰鎷嶆媿璐锋灦鏋勬�荤洃"鏉ㄦ尝鑰佸笀"鍦ㄤ笓棰� "[寰湇鍔″師鐞嗐�佸熀纭�鏋舵瀯鍜屽紑婧愬疄璺礭(http://bj2017.archsummit.com/training/2)" 涓幇鍦轰粙缁嶃��
-
-浜�2017-12-18锛孹XL-JOB鍙備笌"[2017骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(http://www.oschina.net/project/top_cn_2017?sort=1)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑绾︿節鍗冧釜鍥戒骇寮�婧愰」鐩腑瑙掗�愶紝鏈�缁堣繘鍏ヤ簡鍓�30寮恒��
-
-浜�2018-01-15锛孹XL-JOB鍙備笌"[2017鐮佷簯鏈�鐏紑婧愰」鐩甝(https://www.oschina.net/news/92438/2017-mayun-top-50)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑绾﹀叚鍗冧簲鐧句釜鐮佷簯椤圭洰涓閫愶紝鏈�缁堣繘鍘讳簡鍓�20寮恒��
-
-浜�2018-04-14锛宨TechPlus鍦ㄤ笂娴蜂妇鍔炵殑 "[2018浜掕仈缃戝紑鍙戣�呭ぇ浼歖(http://www.itdks.com/eventlist/detail/2065)"锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛岀幇鍦鸿浼楀弽鍝嶇儹鐑堝苟鍦ㄤ細鍚庝笌XXL-JOB鐢ㄦ埛鐑儓璁ㄨ浜ゆ祦銆�
-
-浜�2018-05-27锛屽湪涓婃捣涓惧姙鐨� "[绗�75鏈熷紑婧愪腑鍥芥簮鍒涗細](https://www.oschina.net/event/2278742)" 鐨� "鏋舵瀯" 涓婚涓撳満锛屾垜鐧诲彴杩涜鈥滃熀纭�鏋舵瀯涓庝腑闂翠欢鍥捐氨鈥濅富棰樻紨璁诧紝鍙颁笅涓婂崈浣嶅湪鍦鸿浼楀弽鍝嶇儹鐑堬紙[鍥炬枃鍥為【](https://www.oschina.net/question/3802184_2280606) 锛夈��
-
-浜�2018-12-05锛孹XL-JOB鍙備笌"[2018骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(https://www.oschina.net/project/top_cn_2018?sort=1)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑涓�涓囧涓紑婧愰」鐩腑瑙掗�愶紝鏈�缁堟帓鍚嶇19鍚嶃��
-
-浜�2019-12-10锛孹XL-JOB鍙備笌"[2019骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(https://www.oschina.net/project/top_cn_2019)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑涓�涓囧涓紑婧愰」鐩腑瑙掗�愶紝鏈�缁堟帓鍚�"寮�鍙戞鏋跺拰鍩虹缁勪欢绫�"绗�9鍚嶃��
-
-> 鎴戝徃澶т紬鐐硅瘎鐩墠宸叉帴鍏XL-JOB锛屽唴閮ㄥ埆鍚嶃�奆errari銆嬶紙Ferrari鍩轰簬XXL-JOB鐨刅1.1鐗堟湰瀹氬埗鑰屾垚锛屾柊鎺ュ叆搴旂敤鎺ㄨ崘鍗囩骇鏈�鏂扮増鏈級銆�
-鎹渶鏂扮粺璁�, 鑷�2016-01-21鎺ュ叆鑷�2017-12-01鏈熼棿锛岃绯荤粺宸茶皟搴︾害100涓囨锛岃〃鐜颁紭寮傘�傛柊鎺ュ叆搴旂敤鎺ㄨ崘浣跨敤鏈�鏂扮増鏈紝鍥犱负缁忚繃鏁板崄涓増鏈殑鏇存柊锛岀郴缁熺殑浠诲姟妯″瀷銆乁I浜や簰妯″瀷浠ュ強搴曞眰璋冨害閫氳妯″瀷閮芥湁浜嗚緝澶х殑浼樺寲鍜屾彁鍗囷紝鏍稿績鍔熻兘鏇村姞绋冲畾楂樻晥銆�
-
-鑷充粖锛孹XL-JOB宸叉帴鍏ュ瀹跺叕鍙哥殑绾夸笂浜у搧绾匡紝鎺ュ叆鍦烘櫙濡傜數鍟嗕笟鍔★紝O2O涓氬姟鍜屽ぇ鏁版嵁浣滀笟绛夛紝鎴鏈�鏂扮粺璁℃椂闂翠负姝紝XXL-JOB宸叉帴鍏ョ殑鍏徃鍖呮嫭涓嶉檺浜庯細
-
- - 1銆佸ぇ浼楃偣璇勩�愮編鍥㈢偣璇勩��
- - 2銆佸北涓滃鑰岀綉缁滅鎶�鏈夐檺鍏徃锛�
- - 3銆佸畨寰芥収閫氫簰鑱旂鎶�鏈夐檺鍏徃锛�
- - 4銆佷汉浜鸿仛璐㈤噾鏈嶏紱
- - 5銆佷笂娴锋妫d俊鎭鎶�鑲′唤鏈夐檺鍏徃
- - 6銆佽繍婊℃弧銆愯繍婊℃弧銆�
- - 7銆佺背鍏舵灄 (涓浗鍖�)銆愮背鍏舵灄銆�
- - 8銆佸濡堣仈鐩�
- - 9銆佷節妯卞ぉ涓嬶紙鍖椾含锛変俊鎭妧鏈湁闄愬叕鍙�
- - 10銆佷竾鏅媺鏂鎶�鏈夐檺鍏徃銆愪竴鍔犳墜鏈恒��
- - 11銆佷笂娴蜂嚎淇濆仴搴风鐞嗘湁闄愬叕鍙�
- - 12銆佹捣灏旈Θ鍘ㄣ�愭捣灏斻��
- - 13銆佹渤鍗楀ぇ绾㈠寘鐢靛瓙鍟嗗姟鏈夐檺鍏徃
- - 14銆佹垚閮介『鐐圭鎶�鏈夐檺鍏徃
- - 15銆佹繁鍦冲競鎬′簹閫�
- - 16銆佹繁鍦抽害浜氫俊绉戞妧鑲′唤鏈夐檺鍏徃
- - 17銆佷笂娴峰崥鑾圭鎶�淇℃伅鎶�鏈湁闄愬叕鍙�
- - 18銆佷腑鍥藉钩瀹夌鎶�鏈夐檺鍏徃銆愪腑鍥藉钩瀹夈��
- - 19銆佹澀宸炵煡鏃朵俊鎭鎶�鏈夐檺鍏徃
- - 20銆佸崥鑾圭鎶�锛堜笂娴凤級鏈夐檺鍏徃
- - 21銆佹垚閮戒緷鑳借偂浠芥湁闄愯矗浠诲叕鍙�
- - 22銆佹箹鍗楅珮闃抽�氳仈淇℃伅鎶�鏈湁闄愬叕鍙�
- - 23銆佹繁鍦冲競閭﹀痉鏂囧寲鍙戝睍鏈夐檺鍏徃
- - 24銆佺寤洪樋鎬濆彲缃戠粶鏁欒偛鏈夐檺鍏徃
- - 25銆佷紭淇′簩鎵嬭溅銆愪紭淇°��
- - 26銆佷笂娴锋偁娓稿爞鎶曡祫鍙戝睍鑲′唤鏈夐檺鍏徃銆愭偁娓稿爞銆�
- - 27銆佸寳浜矇绗旇摑澶╃鎶�鏈夐檺鍏徃
- - 28銆佷腑绉�绉戞妧(鏃犻敗)鏈夐檺鍏徃
- - 29銆佹姹夌┖蹇冪鎶�鏈夐檺鍏徃
- - 30銆佸寳浜殏铓侀鏆寸鎶�鏈夐檺鍏徃
- - 31銆佸洓宸濅簰瀹滆揪绉戞妧鏈夐檺鍏徃
- - 32銆侀挶鍖呰浜戯紙鍖椾含锛夌鎶�鏈夐檺鍏徃
- - 33銆侀噸搴嗘鎵嶉泦鍥�
- - 34銆佸挭鍜曚簰鍔ㄥū涔愭湁闄愬叕鍙搞�愪腑鍥界Щ鍔ㄣ��
- - 35銆佸寳浜浜﹁吘绉戞妧鏈夐檺鍏徃
- - 36銆佸闀垮紩鎿�(鍖椾含)淇℃伅鎶�鏈湁闄愬叕鍙�
- - 37銆佸寳浜嫳璐濇�濈鎶�鏈夐檺鍏徃
- - 38銆佸垰娉伴泦鍥�
- - 39銆佹繁鍦虫嘲涔呬俊鎭郴缁熻偂浠芥湁闄愬叕鍙�
- - 40銆侀殢琛屼粯鏀粯鏈夐檺鍏徃
- - 41銆佸箍宸炵�氬啘缃戠粶绉戞妧鏈夐檺鍏徃
- - 42銆佷韩鐐圭鎶�鏈夐檺鍏徃
- - 43銆佹澀宸炴瘮鏅虹鎶�鏈夐檺鍏徃
- - 44銆佸湷涓寸晫绾跨綉缁滅鎶�鏈夐檺鍏徃
- - 45銆佸箍宸炵煡璇嗗湀缃戠粶绉戞妧鏈夐檺鍏徃
- - 46銆佸浗瑾夊晢涓氫笂娴锋湁闄愬叕鍙�
- - 47銆佹捣灏旀秷璐归噾铻嶆湁闄愬叕鍙革紝鍡ㄤ粯銆佸鑺便�愭捣灏斻��
- - 48銆佸箍宸炲反鍥鹃瞾淇℃伅绉戞妧鏈夐檺鍏徃
- - 49銆佹繁鍦冲競楣忔捣杩愮數瀛愭暟鎹氦鎹㈡湁闄愬叕鍙�
- - 50銆佹繁鍦冲競浜氶鐢靛瓙鍟嗗姟鏈夐檺鍏徃
- - 51銆佷笂娴疯叮鍖荤綉缁滄湁闄愬叕鍙�
- - 52銆佽仛閲戣祫鏈�
- - 53銆佸寳浜埗姣嶉偊缃戠粶绉戞妧鏈夐檺鍏徃
- - 54銆佷腑灞卞厓璧蒋浠剁鎶�鏈夐檺鍏徃
- - 55銆佷腑鍟嗘儬姘�(鍖椾含)鐢靛瓙鍟嗗姟鏈夐檺鍏徃
- - 56銆佸嚡浜泦鍥�
- - 57銆佸崕澶忕エ鑱旓紙鍖椾含锛夌鎶�鏈夐檺鍏徃
- - 58銆佹媿鎷嶈捶銆愭媿鎷嶈捶銆�
- - 59銆佸寳浜皻寰锋満鏋勫湪绾挎暀鑲叉湁闄愬叕鍙�
- - 60銆佷换瀛愯鑲′唤鏈夐檺鍏徃
- - 61銆佸寳浜椂鎬佺數瀛愬晢鍔℃湁闄愬叕鍙�
- - 62銆佹繁鍦冲嵎鐨綉缁滅鎶�鏈夐檺鍏徃
- - 63銆佸寳浜畨鍗氶�氱鎶�鑲′唤鏈夐檺鍏徃
- - 64銆佹湭鏉ユ棤绾跨綉
- - 65銆佸帵闂ㄧ摲绂х綉缁滄湁闄愬叕鍙�
- - 66銆佸寳浜�掕摑绉戣蒋浠惰偂浠芥湁闄愬叕鍙�
- - 67銆侀儜宸炲垱娴疯蒋浠剁鎶�鍏徃
- - 68銆佸寳浜浗妲愪俊鎭鎶�鏈夐檺鍏徃
- - 69銆佹氮娼蒋浠堕泦鍥�
- - 70銆佸绔嬫亽(鍖椾含)淇℃伅鎶�鏈湁闄愬叕鍙�
- - 71銆佸箍宸炴瀬杩呭淇℃伅绉戞妧鏈夐檺鍏徃
- - 72銆佽但鍩猴紙涓浗锛夐泦鍥㈣偂浠芥湁闄愬叕鍙�
- - 73銆佹捣鎶曟眹
- - 74銆佷笂娴锋鼎鐩婂垱涓氬鍖栧櫒绠$悊鑲′唤鏈夐檺鍏徃
- - 75銆佹眽绾虫.锛堝帵闂級鏁版嵁鑲′唤鏈夐檺鍏徃
- - 76銆佸畨淇′俊鎵�
- - 77銆佸矚鍎掕储瀵�
- - 78銆佹嵎閬撹蒋浠�
- - 79銆佹箹鍖椾韩涓冪綉缁滅鎶�鏈夐檺鍏徃
- - 80銆佹箹鍗楀垱鍙戠鎶�璐d换鏈夐檺鍏徃
- - 81銆佹繁鍦冲皬瀹夋椂浠d簰鑱旂綉閲戣瀺鏈嶅姟鏈夐檺鍏徃
- - 82銆佹箹鍖椾韩涓冪綉缁滅鎶�鏈夐檺鍏徃
- - 83銆侀挶鍖呰浜�(鍖椾含)绉戞妧鏈夐檺鍏徃
- - 84銆�360閲戣瀺銆�360銆�
- - 85銆佹槗浼佺
- - 86銆佹懇璐濓紙涓婃捣锛夌敓鐗╃鎶�鏈夐檺鍏徃
- - 87銆佸箍涓滆姱鏅烘収绉戞妧鏈夐檺鍏徃
- - 88銆佽仈鎯抽泦鍥€�愯仈鎯炽��
- - 89銆佹�吔鍏呯數
- - 90銆佽鍦嗘苯杞�
- - 91銆佹繁鍦冲簵搴楅�氱鎶�閭鍏徃
- - 92銆佷含涓溿�愪含涓溿��
- - 93銆佺背搴勭悊璐�
- - 94銆佸挅鍟℃槗铻�
- - 95銆佹ⅶ妗愯瘹閫�
- - 96銆佹亽澶у湴浜с�愭亽澶с��
- - 97銆佹槅鏄庨緳鎱�
- - 98銆佷笂娴锋订鐟惰蒋浠�
- - 99銆佹槗淇°�愮綉鏄撱��
- - 100銆侀摐鏉胯
- - 101銆佹澀宸炰簯鑻ョ綉缁滅鎶�鏈夐檺鍏徃
- - 102銆佺壒鐧炬儬锛堜腑鍥斤級鏈夐檺鍏徃
- - 103銆佸父灞变紬鍗¤繍鍔涗緵搴旈摼绠$悊鏈夐檺鍏徃
- - 104銆佹繁鍦崇珛鍒涚數瀛愬晢鍔℃湁闄愬叕鍙�
- - 105銆佹澀宸炴櫤璇虹鎶�鑲′唤鏈夐檺鍏徃
- - 106銆佸寳浜簯婕句俊鎭鎶�鏈夐檺鍏徃
- - 107銆佹繁鍦冲競澶氶摱绉戞妧鏈夐檺鍏徃
- - 108銆佷翰瀹濆疂
- - 109銆佷笂娴峰崥鍗¤蒋浠剁鎶�鏈夐檺鍏徃
- - 110銆佹櫤鎱ф爲鍦ㄧ嚎鏁欒偛骞冲彴
- - 111銆佺背鏃忛噾铻�
- - 112銆佸寳浜景妫笘绾�
- - 113銆佷簯鍗楁粐鍖婚��
- - 114銆佸箍宸炲競鍒嗛缃戠粶绉戞妧鏈夐檺璐d换鍏徃
- - 115銆佹禉姹熷井鑳界鎶�鏈夐檺鍏徃
- - 116銆佷笂娴烽Θ椋炵數瀛愬晢鍔℃湁闄愬叕鍙�
- - 117銆佷笂娴峰疂灏婄數瀛愬晢鍔℃湁闄愬叕鍙�
- - 118銆佺洿瀹㈤�氱鎶�鎶�鏈湁闄愬叕鍙�
- - 119銆佺搴︾鎶�鏈夐檺鍏徃
- - 120銆佷笂娴锋暟鎱х郴缁熸妧鏈湁闄愬叕鍙�
- - 121銆佹垜鐨勫尰鑽綉
- - 122銆佸绮夊钩鍙�
- - 123銆侀搧鐢蹭簩鎵嬫満
- - 124銆佷笂娴锋捣鏂板緱鏁版嵁鎶�鏈湁闄愬叕鍙�
- - 125銆佹繁鍦冲競鐝嶇埍缃戜俊鎭妧鏈湁闄愬叕鍙搞�愮弽鐖辩綉銆�
- - 126銆佸皬铚滆渹
- - 127銆佸悏鑽f暟绉戞妧
- - 128銆佷笂娴锋伜鍩熶俊鎭鎶�鏈夐檺鍏徃
- - 129銆佸箍宸炶崝鏀綉缁滄湁闄愬叕鍙搞�愯崝鏋滷M銆�
- - 130銆佹澀宸為棯瀹濈鎶�鏈夐檺鍏徃
- - 131銆佸寳浜簰鑱旀柊缃戠鎶�鍙戝睍鏈夐檺鍏徃
- - 132銆佽獕閬撶鎶�
- - 133銆佸北瑗垮厗鐩涙埧鍦颁骇寮�鍙戞湁闄愬叕鍙�
- - 134銆佸寳浜摑鐫块�氳揪绉戞妧鏈夐檺鍏徃
- - 135銆佹湀浜皬灞嬶紙涓浗锛夋湁闄愬叕鍙搞�愯摑鏈堜寒銆�
- - 136銆侀潚宀涘浗鐟炰俊鎭妧鏈湁闄愬叕鍙�
- - 137銆佸崥闆呬簯璁$畻锛堝寳浜級鏈夐檺鍏徃
- - 138銆佸崕娉拌瘉鍒搁娓瓙鍏徃
- - 139銆佹澀宸炰笢鏂归�氫俊杞欢鎶�鏈湁闄愬叕鍙�
- - 140銆佹姹夊崥鏅熷畨鍏ㄦ妧鏈偂浠芥湁闄愬叕鍙�
- - 141銆佹繁鍦冲競鍏害浜哄拰绉戞妧鏈夐檺鍏徃
- - 142銆佹澀宸炶叮缁寸鎶�鏈夐檺鍏徃锛堝皬褰憋級
- - 143銆佸畞娉㈠崟杞︿緺涔嬪绉戞妧鏈夐檺鍏徃銆愬崟杞︿緺銆�
- - 144銆佷竵涓佷簯搴蜂俊鎭鎶�锛堝寳浜級鏈夐檺鍏徃
- - 145銆佷簯閽辫
- - 146銆佸崡浜腑鍏村姏缁�
- - 147銆佷笂娴风熃鏄岄�氫俊鎶�鏈湁闄愬叕鍙�
- - 148銆佹繁鍦宠惃绉戠鎶�
- - 149銆佷腑閫氭湇鍒涚珛绉戞妧鏈夐檺璐d换鍏徃
- - 150銆佹繁鍦冲競瀵瑰簞绉戞妧鏈夐檺鍏徃
- - 151銆佷笂璇佹墍淇℃伅缃戠粶鏈夐檺鍏徃
- - 152銆佹澀宸炵伀鐑т簯绉戞妧鏈夐檺鍏徃銆愬绀肩邯銆�
- - 153銆佸ぉ娲ラ潚鑺掓灉绉戞妧鏈夐檺鍏徃銆愯姃鏋滃ご鏉°��
- - 154銆侀暱椋炲厜绾ゅ厜缂嗚偂浠芥湁闄愬叕鍙�
- - 155銆佷笘绾嚡姝岋紙鍖椾含锛夊尰鐤楃鎶�鏈夐檺鍏徃
- - 156銆佹禉姹熼湒姊撴帶鑲℃湁闄愬叕鍙�
- - 157銆佹睙瑗胯吘椋炵綉缁滄妧鏈湁闄愬叕鍙�
- - 158銆佸畨杩呯墿娴佹湁闄愬叕鍙�
- - 159銆佽倝鑱旂綉
- - 160銆佸寳浜寳骞挎褰卞箍鍛婁紶濯掓湁闄愬叕鍙�
- - 161銆佷笂娴锋暟鎱х郴缁熸妧鏈湁闄愬叕鍙�
- - 162銆佸ぇ蹇楀ぉ鎴�
- - 163銆佷笂娴蜂簯楣婂尰
- - 164銆佷笂娴蜂簯楣婂尰
- - 165銆佸ⅷ杩瑰ぉ姘斻�愬ⅷ杩瑰ぉ姘斻��
- - 166銆佷笂娴烽�告淇℃伅绉戞妧鏈夐檺鍏徃
- - 167銆佹矃鏈嬬墿鑱�
- - 168銆佹澀宸炴亽鐢熶簯铻嶇綉缁滅鎶�鏈夐檺鍏徃
- - 169銆佺豢绫宠仈鍒�
- - 170銆侀噸搴嗘槗瀹犵鎶�鏈夐檺鍏徃
- - 171銆佸畨寰藉紩鑸鎶�鏈夐檺鍏徃锛堜箰鑱岀綉锛�
- - 172銆佷笂娴锋暟鑱斿尰淇′紒涓氬彂灞曟湁闄愬叕鍙�
- - 173銆佽壇褰缓鏉�
- - 174銆佹澀宸炴眰鏄悓鍒涚綉缁滅鎶�鏈夐檺鍏徃
- - 175銆佽嵎椹浗闄�
- - 176銆佺偣闆囩綉
- - 177銆佹繁鍦冲競鍗庢槦鍏夌數鎶�鏈湁闄愬叕鍙�
- - 178銆佸帵闂ㄧ宸為拱杞欢绉戞妧鏈夐檺鍏徃
- - 179銆佹繁鍦冲競鎷涘晢淇¤浜哄淇濋櫓鏈夐檺鍏徃
- - 180銆佷笂娴峰ソ灞嬬綉淇℃伅鎶�鏈湁闄愬叕鍙�
- - 181銆佹捣淇¢泦鍥€�愭捣淇°��
- - 182銆佷俊鍑屽彲淇℃伅绉戞妧锛堜笂娴凤級鏈夐檺鍏徃
- - 183銆侀暱鏄ュぉ鎴愮鎶�鍙戝睍鏈夐檺鍏徃
- - 184銆佺敤鍙嬮噾铻嶄俊鎭妧鏈偂浠芥湁闄愬叕鍙搞�愮敤鍙嬨��
- - 185銆佸寳浜挅鍟℃槗铻嶆湁闄愬叕鍙�
- - 186銆佸浗鎶曠憺閾跺熀閲戠鐞嗘湁闄愬叕鍙�
- - 187銆佹檵鏉�(涓婃捣)缃戠粶淇℃伅鎶�鏈湁闄愬叕鍙�
- - 188銆佹繁鍦冲競闅忔墜绉戞妧鏈夐檺鍏徃銆愰殢鎵嬭銆�
- - 189銆佹繁鍦虫按鍔$鎶�鏈夐檺鍏徃
- - 190銆佹槗浼佺銆愭槗浼佺銆�
- - 191銆佸寳浜浜戠鎶�
- - 192銆佸崡浜渹娉颁簰鑱旂綉绉戞妧鏈夐檺鍏徃
- - 193銆佺珷楸肩洿鎾�
- - 194銆佸澶氬绉戞妧
- - 195銆佸ぉ娲ュ競绁炲窞鍟嗛緳绉戞妧鑲′唤鏈夐檺鍏徃
- - 196銆佸博蹇冪鎶�
- - 197銆佽溅鐮佺鎶�锛堝寳浜級鏈夐檺鍏徃
- - 198銆佽吹闃冲競鎶曡祫鎺ц偂闆嗗洟
- - 199銆佸悍鏃楄偂浠�
- - 200銆侀緳鑵惧嚭琛�
- - 201銆佹澀宸炲崕閲忚蒋浠�
- - 202銆佸悎鑲ラ《宀尰鐤楃鎶�鏈夐檺鍏徃
- - 203銆侀噸搴嗚〃杈惧紡绉戞妧鏈夐檺鍏徃
- - 204銆佷笂娴风背閬撲俊鎭鎶�鏈夐檺鍏徃
- - 205銆佸寳浜泭鍙嬩細绉戞妧鏈夐檺鍏徃
- - 206銆佸寳浜瀺璐數瀛愬晢鍔℃湁闄愬叕鍙�
- - 207銆佷腑鍥藉姹囦氦鏄撲腑蹇�
- - 208銆佷腑鍥藉杩愯偂浠芥湁闄愬叕鍙�
- - 209銆佷腑鍥戒笂娴锋檽鍦堟暀鑲茬鎶�鏈夐檺鍏徃
- - 210銆佹櫘鑱旇蒋浠惰偂浠芥湁闄愬叕鍙�
- - 211銆佸寳浜钃濊蒋浠惰偂浠芥湁闄愬叕鍙�
- - 212銆佹睙鑻忔柉璇虹墿鑱旂鎶�鏈夐檺鍏徃
- - 213銆佸寳浜悳鐙�-鐙愬弸銆愭悳鐙愩��
- - 214銆佹柊澶ч檰缃戝晢閲戣瀺
- - 215銆佸北涓滅鐮佷腑绋庝俊鎭鎶�鏈夐檺鍏徃
- - 216銆佹渤鍗楁眹椤虹綉缁滅鎶�鏈夐檺鍏徃
- - 217銆佸寳浜崕澶忔�濇簮绉戞妧鍙戝睍鏈夐檺鍏徃
- - 218銆佷笂娴蜂笢鏅俊鎭鎶�鏈夐檺鍏徃
- - 219銆佷笂娴烽福鍕冪綉缁滅鎶�鏈夐檺鍏徃
- - 220銆佸箍涓滃鑻戞暀鑲插彂灞曟湁闄愬叕鍙�
- - 221銆佹繁鍦冲己鏃剁鎶�鏈夐檺鍏徃
- - 222銆佷笂娴蜂簯鐮轰俊鎭鎶�鏈夐檺鍏徃
- - 223銆侀噸搴嗘剦瀹㈣缃戠粶鏈夐檺鍏徃
- - 224銆佹暟浜�
- - 225銆佸浗瀹剁數缃戣繍妫�閮�
- - 226銆佹澀宸炴壘瓒�
- - 227銆佹旦椴镐簯璁$畻绉戞妧鑲′唤鏈夐檺鍏徃
- - 228銆佺澶ц椋炪�愮澶ц椋炪��
- - 229銆佹澀宸炶瑁呯綉缁滅鎶�鏈夐檺鍏徃
- - 230銆佸嵆鏈夊垎鏈熼噾铻�
- - 231銆佹繁鍦虫硶鍙稿痉淇℃伅绉戞妧鏈夐檺鍏徃
- - 232銆佷笂娴峰崥澶嶄俊鎭鎶�鏈夐檺鍏徃
- - 233銆佹澀宸炰簯鍢変簯璁$畻鏈夐檺鍏徃
- - 234銆佹湁瀹舵皯瀹�(鏈夊缇庡)
- - 235銆佸寳浜耽閿�閫氳蒋浠舵妧鏈湁闄愬叕鍙�
- - 236銆佹禉姹熻仛鏈夎储閲戣瀺鏈嶅姟澶栧寘鏈夐檺鍏徃
- - 237銆佹槗鏃忔櫤姹�(鍖椾含)绉戞妧鏈夐檺鍏徃
- - 238銆佸悎鑲ラ《宀尰鐤楃鎶�寮�鍙戞湁闄愬叕鍙�
- - 239銆佽溅鑸瑰疂(娣卞湷)鏃彥绉戞妧鏈夐檺鍏徃)
- - 240銆佸箍宸炲瘜鍔涘湴浜ф湁闄愬叕鍙�
- - 241銆佹阿璇撅紙涓婃捣锛夋暀鑲茬鎶�鏈夐檺鍏徃
- - 242銆佹姹夋蔼缁嗚優缃戠粶鎶�鏈湁闄愬叕鍙�
- - 243銆佹澀宸炴湁浜戠鎶�鏈夐檺鍏徃
- - 244銆佷笂娴蜂粰璞嗘櫤鑳芥満鍣ㄤ汉鏈夐檺鍏徃
- - 245銆佹媺鍗℃媺鏀粯鑲′唤鏈夐檺鍏徃銆愭媺鍗℃媺銆�
- - 246銆佽檸褰╁嵃鑹鸿偂浠芥湁闄愬叕鍙�
- - 247銆佸寳浜暟寰鎶�鏈夐檺鍏徃
- - 248銆佸箍涓滄櫤鐟炵鎶�鏈夐檺鍏徃
- - 249銆佹壘閽㈢綉
- - 250銆佷節鏈虹綉
- - 251銆佹澀宸炶窇璺戠綉缁滅鎶�鏈夐檺鍏徃
- - 252銆佹繁鍦虫湭鏉ヤ簯闆�
- - 253銆佹澀宸炴瘡鏃ョ粰鍔涚鎶�鏈夐檺鍏徃
- - 254銆佷笂娴烽綈鐘囦俊鎭鎶�鏈夐檺鍏徃
- - 255銆佹淮婊村嚭琛屻�愭淮婊淬��
- - 256銆佸悎鑲ヤ簯璇婁俊鎭鎶�鏈夐檺鍏徃
- - 257銆佷簯鐭ュ0鏅鸿兘绉戞妧鑲′唤鏈夐檺鍏徃
- - 258銆佸崡浜潶閬撶鎶�鏈夐檺鍏徃
- - 259銆佺埍涔愪紭锛堜簩鎵嬪钩鍙帮級
- - 260銆佺尗鐪肩數褰憋紙绉佹湁鍖栭儴缃诧級銆愮尗鐪肩數褰便��
- - 261銆佺編鍥㈠ぇ璞★紙绉佹湁鍖栭儴缃诧級銆愮編鍥㈠ぇ璞°��
- - 262銆佷綔涓氬府鏁欒偛绉戞妧锛堝寳浜級鏈夐檺鍏徃銆愪綔涓氬府銆�
- - 263銆佸寳浜皬骞寸硶浜掕仈缃戞妧鏈湁闄愬叕鍙�
- - 264銆佸北涓滅煩闃佃蒋浠跺伐绋嬭偂浠芥湁闄愬叕鍙�
- - 265銆侀檿瑗垮浗椹胯蒋浠剁鎶�鏈夐檺鍏徃
- - 266銆佸悰寮�淇℃伅绉戞妧
- - 267銆佹潙楦熺綉缁滅鎶�鏈夐檺璐d换鍏徃
- - 268銆佷簯鍗楀浗闄呬俊鎵樻湁闄愬叕鍙�
- - 269銆侀噾鏅烘暀鑲�
- - 270銆佺彔娴峰競绛戝发绉戞妧鏈夐檺鍏徃
- - 271銆佷笂娴风櫨鑳滆蒋浠惰偂浠芥湁闄愬叕鍙�
- - 272銆佹繁鍦冲競绉戠浘绉戞妧鏈夐檺鍏徃
- - 273銆佸搱鍟板嚭琛屻�愬搱鍟般��
- - 274銆侀�旇檸鍏昏溅銆愰�旇檸銆�
- - 275銆佸崱鎬濅紭娲句汉鍔涜祫婧愰泦鍥�
- - 276銆佸崡浜涓烘櫤鎱ц蒋浠剁鎶�鏈夐檺鍏徃
- - 277銆佹澀宸炲煄甯傚ぇ鑴戠鎶�鏈夐檺鍏徃
- - 278銆佺尶杈呭銆愮尶杈呭銆�
- - 279銆佹礇闃冲仴鍒涚綉缁滅鎶�鏈夐檺鍏徃
- - 280銆侀瓟鍔涜�虫湹
- - 281銆佷嚎闃充俊閫�
- - 282銆佷笂娴锋嫑椴ょ鎶�鏈夐檺鍏徃
- - 283銆佸洓宸濆晢鏃呮棤蹇х鎶�鏈嶅姟鏈夐檺鍏徃
- - 284銆乁U璺戣吙
- - 285銆佸寳浜�佽檸璇佸埜銆愯�佽檸璇佸埜銆�
- - 286銆佹偁娲荤渷鍚э紙鍖椾含锛夌綉缁滅鎶�鏈夐檺鍏徃
- - 287銆丗5鏈潵鍟嗗簵
- - 288銆佹繁鍦崇幆闃抽�氫俊鎭妧鏈湁闄愬叕鍙�
- - 289銆侀仩鍌抽浕淇�
- - 鈥︹��
-
-> 鏇村鎺ュ叆鐨勫叕鍙革紝娆㈣繋鍦� [鐧昏鍦板潃](https://github.com/xuxueli/xxl-job/issues/1 ) 鐧昏锛岀櫥璁颁粎浠呬负浜嗕骇鍝佹帹骞裤��
-
-娆㈣繋澶у鐨勫叧娉ㄥ拰浣跨敤锛孹XL-JOB涔熷皢鎷ユ姳鍙樺寲锛屾寔缁彂灞曘��
-
-
-### 1.5 涓嬭浇
-
-#### 鏂囨。鍦板潃
-
-- [涓枃鏂囨。](https://www.xuxueli.com/xxl-job/)
-- [English Documentation](https://www.xuxueli.com/xxl-job/en/)
-
-#### 婧愮爜浠撳簱鍦板潃
-
-婧愮爜浠撳簱鍦板潃 | Release Download
---- | ---
-[https://github.com/xuxueli/xxl-job](https://github.com/xuxueli/xxl-job) | [Download](https://github.com/xuxueli/xxl-job/releases)
-[http://gitee.com/xuxueli0323/xxl-job](http://gitee.com/xuxueli0323/xxl-job) | [Download](http://gitee.com/xuxueli0323/xxl-job/releases)
-
-
-#### 涓ぎ浠撳簱鍦板潃
-
-```
-<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
-<dependency>
- <groupId>com.xuxueli</groupId>
- <artifactId>xxl-job-core</artifactId>
- <version>${鏈�鏂扮ǔ瀹氱増鏈瑌</version>
-</dependency>
-```
-
-
-### 1.6 鐜
-- Maven3+
-- Jdk1.7+
-- Mysql5.7+
-
-
-## 浜屻�佸揩閫熷叆闂�
-
-### 2.1 鍒濆鍖栤�滆皟搴︽暟鎹簱鈥�
-璇蜂笅杞介」鐩簮鐮佸苟瑙e帇锛岃幏鍙� "璋冨害鏁版嵁搴撳垵濮嬪寲SQL鑴氭湰" 骞舵墽琛屽嵆鍙��
-
-"璋冨害鏁版嵁搴撳垵濮嬪寲SQL鑴氭湰" 浣嶇疆涓�:
-
- /xxl-job/doc/db/tables_xxl_job.sql
-
-璋冨害涓績鏀寔闆嗙兢閮ㄧ讲锛岄泦缇ゆ儏鍐典笅鍚勮妭鐐瑰姟蹇呰繛鎺ュ悓涓�涓猰ysql瀹炰緥;
-
-濡傛灉mysql鍋氫富浠�,璋冨害涓績闆嗙兢鑺傜偣鍔″繀寮哄埗璧颁富搴�;
-
-### 2.2 缂栬瘧婧愮爜
-瑙e帇婧愮爜,鎸夌収maven鏍煎紡灏嗘簮鐮佸鍏DE, 浣跨敤maven杩涜缂栬瘧鍗冲彲锛屾簮鐮佺粨鏋勫涓嬶細
-
- xxl-job-admin锛氳皟搴︿腑蹇�
- xxl-job-core锛氬叕鍏变緷璧�
- xxl-job-executor-samples锛氭墽琛屽櫒Sample绀轰緥锛堥�夋嫨鍚堥�傜殑鐗堟湰鎵ц鍣紝鍙洿鎺ヤ娇鐢紝涔熷彲浠ュ弬鑰冨叾骞跺皢鐜版湁椤圭洰鏀归�犳垚鎵ц鍣級
- 锛歺xl-job-executor-sample-springboot锛歋pringboot鐗堟湰锛岄�氳繃Springboot绠$悊鎵ц鍣紝鎺ㄨ崘杩欑鏂瑰紡锛�
- 锛歺xl-job-executor-sample-spring锛歋pring鐗堟湰锛岄�氳繃Spring瀹瑰櫒绠$悊鎵ц鍣紝姣旇緝閫氱敤锛�
- 锛歺xl-job-executor-sample-frameless锛氭棤妗嗘灦鐗堟湰锛�
- 锛歺xl-job-executor-sample-jfinal锛欽Final鐗堟湰锛岄�氳繃JFinal绠$悊鎵ц鍣紱
- 锛歺xl-job-executor-sample-nutz锛歂utz鐗堟湰锛岄�氳繃Nutz绠$悊鎵ц鍣紱
- 锛歺xl-job-executor-sample-jboot锛歫boot鐗堟湰锛岄�氳繃jboot绠$悊鎵ц鍣紱
-
-
-### 2.3 閰嶇疆閮ㄧ讲鈥滆皟搴︿腑蹇冣��
-
- 璋冨害涓績椤圭洰锛歺xl-job-admin
- 浣滅敤锛氱粺涓�绠$悊浠诲姟璋冨害骞冲彴涓婅皟搴︿换鍔★紝璐熻矗瑙﹀彂璋冨害鎵ц锛屽苟涓旀彁渚涗换鍔$鐞嗗钩鍙般��
-
-#### 姝ラ涓�锛氳皟搴︿腑蹇冮厤缃細
-璋冨害涓績閰嶇疆鏂囦欢鍦板潃锛�
-
- /xxl-job/xxl-job-admin/src/main/Autowireds/application.properties
-
-
-璋冨害涓績閰嶇疆鍐呭璇存槑锛�
-
- ### 璋冨害涓績JDBC閾炬帴锛氶摼鎺ュ湴鍧�璇蜂繚鎸佸拰 2.1绔犺妭 鎵�鍒涘缓鐨勮皟搴︽暟鎹簱鐨勫湴鍧�涓�鑷�
- spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
- spring.datasource.username=root
- spring.datasource.password=root_pwd
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
-
- ### 鎶ヨ閭
- spring.mail.host=smtp.qq.com
- spring.mail.port=25
- spring.mail.username=xxx@qq.com
- spring.mail.password=xxx
- spring.mail.properties.mail.smtp.auth=true
- spring.mail.properties.mail.smtp.starttls.enable=true
- spring.mail.properties.mail.smtp.starttls.required=true
- spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
-
- ### 璋冨害涓績閫氳TOKEN [閫夊~]锛氶潪绌烘椂鍚敤锛�
- xxl.job.accessToken=
-
- ### 璋冨害涓績鍥介檯鍖栭厤缃� [閫夊~]锛� 榛樿涓虹┖锛岃〃绀轰腑鏂�; "en" 琛ㄧず鑻辨枃锛�
- xxl.job.i18n=
-
- ## 璋冨害绾跨▼姹犳渶澶х嚎绋嬮厤缃�愬繀濉��
- xxl.job.triggerpool.fast.max=200
- xxl.job.triggerpool.slow.max=100
-
- ### 璋冨害涓績鏃ュ織琛ㄦ暟鎹繚瀛樺ぉ鏁� [蹇呭~]锛氳繃鏈熸棩蹇楄嚜鍔ㄦ竻鐞嗭紱闄愬埗澶т簬绛変簬7鏃剁敓鏁堬紝鍚﹀垯, 濡�-1锛屽叧闂嚜鍔ㄦ竻鐞嗗姛鑳斤紱
- xxl.job.logretentiondays=30
-
-
-
-#### 姝ラ浜岋細閮ㄧ讲椤圭洰锛�
-濡傛灉宸茬粡姝g‘杩涜涓婅堪閰嶇疆锛屽彲灏嗛」鐩紪璇戞墦鍖呴儴缃层��
-
-璋冨害涓績璁块棶鍦板潃锛歨ttp://localhost:8080/xxl-job-admin (璇ュ湴鍧�鎵ц鍣ㄥ皢浼氫娇鐢ㄥ埌锛屼綔涓哄洖璋冨湴鍧�)
-
-榛樿鐧诲綍璐﹀彿 "admin/123456", 鐧诲綍鍚庤繍琛岀晫闈㈠涓嬪浘鎵�绀恒��
-
-
-
-鑷虫鈥滆皟搴︿腑蹇冣�濋」鐩凡缁忛儴缃叉垚鍔熴��
-
-#### 姝ラ涓夛細璋冨害涓績闆嗙兢锛堝彲閫夛級锛�
-璋冨害涓績鏀寔闆嗙兢閮ㄧ讲锛屾彁鍗囪皟搴︾郴缁熷鐏惧拰鍙敤鎬с��
-
-璋冨害涓績闆嗙兢閮ㄧ讲鏃讹紝鍑犵偣瑕佹眰鍜屽缓璁細
-- DB閰嶇疆淇濇寔涓�鑷达紱
-- 闆嗙兢鏈哄櫒鏃堕挓淇濇寔涓�鑷达紙鍗曟満闆嗙兢蹇借锛夛紱
-- 寤鸿锛氭帹鑽愰�氳繃nginx涓鸿皟搴︿腑蹇冮泦缇ゅ仛璐熻浇鍧囪 锛屽垎閰嶅煙鍚嶃�傝皟搴︿腑蹇冭闂�佹墽琛屽櫒鍥炶皟閰嶇疆銆佽皟鐢ˋPI鏈嶅姟绛夋搷浣滃潎閫氳繃璇ュ煙鍚嶈繘琛屻��
-
-
-#### 鍏朵粬锛欴ocker 闀滃儚鏂瑰紡鎼缓璋冨害涓績锛�
-
-- 涓嬭浇闀滃儚
-
-```
-// Docker鍦板潃锛歨ttps://hub.docker.com/r/xuxueli/xxl-job-admin/ (寤鸿鎸囧畾鐗堟湰鍙�)
-docker pull xuxueli/xxl-job-admin
-```
-
-- 鍒涘缓瀹瑰櫒骞惰繍琛�
-
-```
-docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
-
-/**
-* 濡傞渶鑷畾涔� mysql 绛夐厤缃紝鍙�氳繃 "PARAMS" 鎸囧畾锛屽弬鏁版牸寮� RAMS="--key=value --key2=value2" 锛�
-* 閰嶇疆椤瑰弬鑰冩枃浠讹細/xxl-job/xxl-job-admin/src/main/Autowireds/application.properties
-*/
-docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
-```
-
-
-### 2.4 閰嶇疆閮ㄧ讲鈥滄墽琛屽櫒椤圭洰鈥�
-
- 鈥滄墽琛屽櫒鈥濋」鐩細xxl-job-executor-sample-springboot (鎻愪緵澶氱鐗堟湰鎵ц鍣ㄤ緵閫夋嫨锛岀幇浠� springboot 鐗堟湰涓轰緥锛屽彲鐩存帴浣跨敤锛屼篃鍙互鍙傝�冨叾骞跺皢鐜版湁椤圭洰鏀归�犳垚鎵ц鍣�)
- 浣滅敤锛氳礋璐f帴鏀垛�滆皟搴︿腑蹇冣�濈殑璋冨害骞舵墽琛岋紱鍙洿鎺ラ儴缃叉墽琛屽櫒锛屼篃鍙互灏嗘墽琛屽櫒闆嗘垚鍒扮幇鏈変笟鍔¢」鐩腑銆�
-
-#### 姝ラ涓�锛歮aven渚濊禆
-纭pom鏂囦欢涓紩鍏ヤ簡 "xxl-job-core" 鐨刴aven渚濊禆锛�
-
-#### 姝ラ浜岋細鎵ц鍣ㄩ厤缃�
-鎵ц鍣ㄩ厤缃紝閰嶇疆鏂囦欢鍦板潃锛�
-
- /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/Autowireds/application.properties
-
-鎵ц鍣ㄩ厤缃紝閰嶇疆鍐呭璇存槑锛�
-
- ### 璋冨害涓績閮ㄧ讲璺熷湴鍧� [閫夊~]锛氬璋冨害涓績闆嗙兢閮ㄧ讲瀛樺湪澶氫釜鍦板潃鍒欑敤閫楀彿鍒嗛殧銆傛墽琛屽櫒灏嗕細浣跨敤璇ュ湴鍧�杩涜"鎵ц鍣ㄥ績璺虫敞鍐�"鍜�"浠诲姟缁撴灉鍥炶皟"锛涗负绌哄垯鍏抽棴鑷姩娉ㄥ唽锛�
- xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
-
- ### 鎵ц鍣ˋppName [閫夊~]锛氭墽琛屽櫒蹇冭烦娉ㄥ唽鍒嗙粍渚濇嵁锛涗负绌哄垯鍏抽棴鑷姩娉ㄥ唽
- xxl.job.executor.appname=xxl-job-executor-sample
-
- ### 鎵ц鍣↖P [閫夊~]锛氶粯璁や负绌鸿〃绀鸿嚜鍔ㄨ幏鍙朓P锛屽缃戝崱鏃跺彲鎵嬪姩璁剧疆鎸囧畾IP锛岃IP涓嶄細缁戝畾Host浠呬綔涓洪�氳瀹炵敤锛涘湴鍧�淇℃伅鐢ㄤ簬 "鎵ц鍣ㄦ敞鍐�" 鍜� "璋冨害涓績璇锋眰骞惰Е鍙戜换鍔�"锛�
- xxl.job.executor.ip=
-
- ### 鎵ц鍣ㄧ鍙e彿 [閫夊~]锛氬皬浜庣瓑浜�0鍒欒嚜鍔ㄨ幏鍙栵紱榛樿绔彛涓�9999锛屽崟鏈洪儴缃插涓墽琛屽櫒鏃讹紝娉ㄦ剰瑕侀厤缃笉鍚屾墽琛屽櫒绔彛锛�
- xxl.job.executor.port=9999
-
- ### 鎵ц鍣ㄩ�氳TOKEN [閫夊~]锛氶潪绌烘椂鍚敤锛�
- xxl.job.accessToken=
-
- ### 鎵ц鍣ㄨ繍琛屾棩蹇楁枃浠跺瓨鍌ㄧ鐩樿矾寰� [閫夊~] 锛氶渶瑕佸璇ヨ矾寰勬嫢鏈夎鍐欐潈闄愶紱涓虹┖鍒欎娇鐢ㄩ粯璁よ矾寰勶紱
- xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
-
- ### 鎵ц鍣ㄦ棩蹇楁枃浠朵繚瀛樺ぉ鏁� [閫夊~] 锛� 杩囨湡鏃ュ織鑷姩娓呯悊, 闄愬埗鍊煎ぇ浜庣瓑浜�3鏃剁敓鏁�; 鍚﹀垯, 濡�-1, 鍏抽棴鑷姩娓呯悊鍔熻兘锛�
- xxl.job.executor.logretentiondays=30
-
-
-#### 姝ラ涓夛細鎵ц鍣ㄧ粍浠堕厤缃�
-
-鎵ц鍣ㄧ粍浠讹紝閰嶇疆鏂囦欢鍦板潃锛�
-
- /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
-
-鎵ц鍣ㄧ粍浠讹紝閰嶇疆鍐呭璇存槑锛�
-
-```
-@Bean
-public XxlJobSpringExecutor xxlJobExecutor() {
- logger.info(">>>>>>>>>>> xxl-job config init.");
- XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
- xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
- xxlJobSpringExecutor.setAppName(appName);
- xxlJobSpringExecutor.setIp(ip);
- xxlJobSpringExecutor.setPort(port);
- xxlJobSpringExecutor.setAccessToken(accessToken);
- xxlJobSpringExecutor.setLogPath(logPath);
- xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
-
- return xxlJobSpringExecutor;
-}
-```
-
-#### 姝ラ鍥涳細閮ㄧ讲鎵ц鍣ㄩ」鐩細
-濡傛灉宸茬粡姝g‘杩涜涓婅堪閰嶇疆锛屽彲灏嗘墽琛屽櫒椤圭洰缂栬瘧鎵撻儴缃诧紝绯荤粺鎻愪緵澶氱鎵ц鍣⊿ample绀轰緥椤圭洰锛岄�夋嫨鍏朵腑涓�涓嵆鍙紝鍚勮嚜鐨勯儴缃叉柟寮忓涓嬨��
-
- xxl-job-executor-sample-springboot锛氶」鐩紪璇戞墦鍖呮垚springboot绫诲瀷鐨勫彲鎵цJAR鍖咃紝鍛戒护鍚姩鍗冲彲锛�
- xxl-job-executor-sample-spring锛氶」鐩紪璇戞墦鍖呮垚WAR鍖咃紝骞堕儴缃插埌tomcat涓��
- xxl-job-executor-sample-jfinal锛氬悓涓�
- xxl-job-executor-sample-nutz锛氬悓涓�
- xxl-job-executor-sample-jboot锛氬悓涓�
-
-
-鑷虫鈥滄墽琛屽櫒鈥濋」鐩凡缁忛儴缃茬粨鏉熴��
-
-#### 姝ラ浜旓細鎵ц鍣ㄩ泦缇わ紙鍙�夛級锛�
-鎵ц鍣ㄦ敮鎸侀泦缇ら儴缃诧紝鎻愬崌璋冨害绯荤粺鍙敤鎬э紝鍚屾椂鎻愬崌浠诲姟澶勭悊鑳藉姏銆�
-
-鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屽嚑鐐硅姹傚拰寤鸿锛�
-- 鎵ц鍣ㄥ洖璋冨湴鍧�锛坸xl.job.admin.addresses锛夐渶瑕佷繚鎸佷竴鑷达紱鎵ц鍣ㄦ牴鎹閰嶇疆杩涜鎵ц鍣ㄨ嚜鍔ㄦ敞鍐岀瓑鎿嶄綔銆�
-- 鍚屼竴涓墽琛屽櫒闆嗙兢鍐匒ppName锛坸xl.job.executor.appname锛夐渶瑕佷繚鎸佷竴鑷达紱璋冨害涓績鏍规嵁璇ラ厤缃姩鎬佸彂鐜颁笉鍚岄泦缇ょ殑鍦ㄧ嚎鎵ц鍣ㄥ垪琛ㄣ��
-
-
-### 2.5 寮�鍙戠涓�涓换鍔♀�淗ello World鈥�
-鏈ず渚嬩互鏂板缓涓�涓� 鈥淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔′负渚嬨�傛洿澶氭湁鍏充换鍔$殑璇︾粏閰嶇疆锛岃鏌ョ湅鈥滅珷鑺備笁锛氫换鍔¤瑙b�濄��
-锛� 鈥淕LUE妯″紡(Java)鈥濈殑鎵ц浠g爜鎵樼鍒拌皟搴︿腑蹇冨湪绾跨淮鎶わ紝鐩告瘮鈥淏ean妯″紡浠诲姟鈥濋渶瑕佸湪鎵ц鍣ㄩ」鐩紑鍙戦儴缃蹭笂绾匡紝鏇村姞绠�渚胯交閲忥級
-
-> 鍓嶆彁锛氳纭鈥滆皟搴︿腑蹇冣�濆拰鈥滄墽琛屽櫒鈥濋」鐩凡缁忔垚鍔熼儴缃插苟鍚姩锛�
-
-#### 姝ラ涓�锛氭柊寤轰换鍔★細
-鐧诲綍璋冨害涓績锛岀偣鍑讳笅鍥炬墍绀衡�滄柊寤轰换鍔♀�濇寜閽紝鏂板缓绀轰緥浠诲姟銆傜劧鍚庯紝鍙傝�冧笅闈㈡埅鍥句腑浠诲姟鐨勫弬鏁伴厤缃紝鐐瑰嚮淇濆瓨銆�
-
-
-
-
-
-
-#### 姝ラ浜岋細鈥淕LUE妯″紡(Java)鈥� 浠诲姟寮�鍙戯細
-璇风偣鍑讳换鍔″彸渚� 鈥淕LUE鈥� 鎸夐挳锛岃繘鍏� 鈥淕LUE缂栬緫鍣ㄥ紑鍙戠晫闈⑩�� 锛岃涓嬪浘銆傗�淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔¢粯璁ゅ凡缁忓垵濮嬪寲浜嗙ず渚嬩换鍔′唬鐮侊紝鍗虫墦鍗癏ello World銆�
-锛� 鈥淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔″疄闄呬笂鏄竴娈电户鎵胯嚜IJobHandler鐨凧ava绫讳唬鐮侊紝瀹冨湪鎵ц鍣ㄩ」鐩腑杩愯锛屽彲浣跨敤@Autowired/@Autowire娉ㄥ叆鎵ц鍣ㄩ噷涓殑鍏朵粬鏈嶅姟锛岃缁嗕粙缁嶈鏌ョ湅绗笁绔犺妭锛�
-
-
-
-
-
-#### 姝ラ涓夛細瑙﹀彂鎵ц锛�
-璇风偣鍑讳换鍔″彸渚� 鈥滄墽琛屸�� 鎸夐挳锛屽彲鎵嬪姩瑙﹀彂涓�娆′换鍔℃墽琛岋紙閫氬父鎯呭喌涓嬶紝閫氳繃閰嶇疆Cron琛ㄨ揪寮忚繘琛屼换鍔¤皟搴﹀嚭鍙戯級銆�
-
-#### 姝ラ鍥涳細鏌ョ湅鏃ュ織锛�
-璇风偣鍑讳换鍔″彸渚� 鈥滄棩蹇椻�� 鎸夐挳锛屽彲鍓嶅線浠诲姟鏃ュ織鐣岄潰鏌ョ湅浠诲姟鏃ュ織銆�
-鍦ㄤ换鍔℃棩蹇楃晫闈腑锛屽彲鏌ョ湅璇ヤ换鍔$殑鍘嗗彶璋冨害璁板綍浠ュ強姣忎竴娆¤皟搴︾殑浠诲姟璋冨害淇℃伅銆佹墽琛屽弬鏁板拰鎵ц淇℃伅銆傝繍琛屼腑鐨勪换鍔$偣鍑诲彸渚х殑鈥滄墽琛屾棩蹇椻�濇寜閽紝鍙繘鍏ユ棩蹇楁帶鍒跺彴鏌ョ湅瀹炴椂鎵ц鏃ュ織銆�
-
-
-
-鍦ㄦ棩蹇楁帶鍒跺彴锛屽彲浠olling鏂瑰紡瀹炴椂鏌ョ湅浠诲姟鍦ㄦ墽琛屽櫒涓�渚ц繍琛岃緭鍑虹殑鏃ュ織淇℃伅锛屽疄鏃剁洃鎺т换鍔¤繘搴︼紱
-
-
-
-## 涓夈�佷换鍔¤瑙�
-
-### 閰嶇疆灞炴�ц缁嗚鏄庯細
-
- - 鎵ц鍣細浠诲姟鐨勭粦瀹氱殑鎵ц鍣紝浠诲姟瑙﹀彂璋冨害鏃跺皢浼氳嚜鍔ㄥ彂鐜版敞鍐屾垚鍔熺殑鎵ц鍣�, 瀹炵幇浠诲姟鑷姩鍙戠幇鍔熻兘; 鍙︿竴鏂归潰涔熷彲浠ユ柟渚跨殑杩涜浠诲姟鍒嗙粍銆傛瘡涓换鍔″繀椤荤粦瀹氫竴涓墽琛屽櫒, 鍙湪 "鎵ц鍣ㄧ鐞�" 杩涜璁剧疆;
- - 浠诲姟鎻忚堪锛氫换鍔$殑鎻忚堪淇℃伅锛屼究浜庝换鍔$鐞嗭紱
- - 璺敱绛栫暐锛氬綋鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屾彁渚涗赴瀵岀殑璺敱绛栫暐锛屽寘鎷紱
- FIRST锛堢涓�涓級锛氬浐瀹氶�夋嫨绗竴涓満鍣紱
- LAST锛堟渶鍚庝竴涓級锛氬浐瀹氶�夋嫨鏈�鍚庝竴涓満鍣紱
- ROUND锛堣疆璇級锛氾紱
- RANDOM锛堥殢鏈猴級锛氶殢鏈洪�夋嫨鍦ㄧ嚎鐨勬満鍣紱
- CONSISTENT_HASH锛堜竴鑷存�ASH锛夛細姣忎釜浠诲姟鎸夌収Hash绠楁硶鍥哄畾閫夋嫨鏌愪竴鍙版満鍣紝涓旀墍鏈変换鍔″潎鍖�鏁e垪鍦ㄤ笉鍚屾満鍣ㄤ笂銆�
- LEAST_FREQUENTLY_USED锛堟渶涓嶇粡甯镐娇鐢級锛氫娇鐢ㄩ鐜囨渶浣庣殑鏈哄櫒浼樺厛琚�変妇锛�
- LEAST_RECENTLY_USED锛堟渶杩戞渶涔呮湭浣跨敤锛夛細鏈�涔呬负浣跨敤鐨勬満鍣ㄤ紭鍏堣閫変妇锛�
- FAILOVER锛堟晠闅滆浆绉伙級锛氭寜鐓ч『搴忎緷娆¤繘琛屽績璺虫娴嬶紝绗竴涓績璺虫娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
- BUSYOVER锛堝繖纰岃浆绉伙級锛氭寜鐓ч『搴忎緷娆¤繘琛岀┖闂叉娴嬶紝绗竴涓┖闂叉娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
- SHARDING_BROADCAST(鍒嗙墖骞挎挱)锛氬箍鎾Е鍙戝搴旈泦缇や腑鎵�鏈夋満鍣ㄦ墽琛屼竴娆′换鍔★紝鍚屾椂绯荤粺鑷姩浼犻�掑垎鐗囧弬鏁帮紱鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
-
- - Cron锛氳Е鍙戜换鍔℃墽琛岀殑Cron琛ㄨ揪寮忥紱
- - 杩愯妯″紡锛�
- BEAN妯″紡锛氫换鍔′互JobHandler鏂瑰紡缁存姢鍦ㄦ墽琛屽櫒绔紱闇�瑕佺粨鍚� "JobHandler" 灞炴�у尮閰嶆墽琛屽櫒涓换鍔★紱
- GLUE妯″紡(Java)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈电户鎵胯嚜IJobHandler鐨凧ava绫讳唬鐮佸苟 "groovy" 婧愮爜鏂瑰紡缁存姢锛屽畠鍦ㄦ墽琛屽櫒椤圭洰涓繍琛岋紝鍙娇鐢ˊAutowired/@Autowire娉ㄥ叆鎵ц鍣ㄩ噷涓殑鍏朵粬鏈嶅姟锛�
- GLUE妯″紡(Shell)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "shell" 鑴氭湰锛�
- GLUE妯″紡(Python)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "python" 鑴氭湰锛�
- GLUE妯″紡(PHP)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "php" 鑴氭湰锛�
- GLUE妯″紡(NodeJS)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "nodejs" 鑴氭湰锛�
- GLUE妯″紡(PowerShell)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "PowerShell" 鑴氭湰锛�
- - JobHandler锛氳繍琛屾ā寮忎负 "BEAN妯″紡" 鏃剁敓鏁堬紝瀵瑰簲鎵ц鍣ㄤ腑鏂板紑鍙戠殑JobHandler绫烩�淍JobHandler鈥濇敞瑙h嚜瀹氫箟鐨剉alue鍊硷紱
- - 闃诲澶勭悊绛栫暐锛氳皟搴﹁繃浜庡瘑闆嗘墽琛屽櫒鏉ヤ笉鍙婂鐞嗘椂鐨勫鐞嗙瓥鐣ワ紱
- 鍗曟満涓茶锛堥粯璁わ級锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝璋冨害璇锋眰杩涘叆FIFO闃熷垪骞朵互涓茶鏂瑰紡杩愯锛�
- 涓㈠純鍚庣画璋冨害锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝鍙戠幇鎵ц鍣ㄥ瓨鍦ㄨ繍琛岀殑璋冨害浠诲姟锛屾湰娆¤姹傚皢浼氳涓㈠純骞舵爣璁颁负澶辫触锛�
- 瑕嗙洊涔嬪墠璋冨害锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝鍙戠幇鎵ц鍣ㄥ瓨鍦ㄨ繍琛岀殑璋冨害浠诲姟锛屽皢浼氱粓姝㈣繍琛屼腑鐨勮皟搴︿换鍔″苟娓呯┖闃熷垪锛岀劧鍚庤繍琛屾湰鍦拌皟搴︿换鍔★紱
- - 瀛愪换鍔★細姣忎釜浠诲姟閮芥嫢鏈変竴涓敮涓�鐨勪换鍔D(浠诲姟ID鍙互浠庝换鍔″垪琛ㄨ幏鍙�)锛屽綋鏈换鍔℃墽琛岀粨鏉熷苟涓旀墽琛屾垚鍔熸椂锛屽皢浼氳Е鍙戝瓙浠诲姟ID鎵�瀵瑰簲鐨勪换鍔$殑涓�娆′富鍔ㄨ皟搴︺��
- - 浠诲姟瓒呮椂鏃堕棿锛氭敮鎸佽嚜瀹氫箟浠诲姟瓒呮椂鏃堕棿锛屼换鍔¤繍琛岃秴鏃跺皢浼氫富鍔ㄤ腑鏂换鍔★紱
- - 澶辫触閲嶈瘯娆℃暟锛涙敮鎸佽嚜瀹氫箟浠诲姟澶辫触閲嶈瘯娆℃暟锛屽綋浠诲姟澶辫触鏃跺皢浼氭寜鐓ч璁剧殑澶辫触閲嶈瘯娆℃暟涓诲姩杩涜閲嶈瘯锛�
- - 鎶ヨ閭欢锛氫换鍔¤皟搴﹀け璐ユ椂閭欢閫氱煡鐨勯偖绠卞湴鍧�锛屾敮鎸侀厤缃閭鍦板潃锛岄厤缃涓偖绠卞湴鍧�鏃剁敤閫楀彿鍒嗛殧锛�
- - 璐熻矗浜猴細浠诲姟鐨勮礋璐d汉锛�
- - 鎵ц鍙傛暟锛氫换鍔℃墽琛屾墍闇�鐨勫弬鏁帮紱
-
-
-### 3.1 BEAN妯″紡锛堢被褰㈠紡锛�
-
-鍩轰簬绫荤殑Bean妯″紡寮�鍙戞柟寮忥紝杩欐槸姣旇緝鍘熷鐨勪竴绉嶅紑鍙戞柟寮忋��
-
-- 浼樼偣锛氬吋瀹规�уソ銆佷笉闄愬埗椤圭洰鐜锛屽嵆浣挎槸鏃犳鏋堕」鐩紝濡俶ain鏂规硶鐩存帴鍚姩鐨勯」鐩篃鍙互鎻愪緵鏀寔锛屽彲浠ュ弬鑰冪ず渚嬮」鐩� "xxl-job-executor-sample-frameless"锛�
-- 缂虹偣锛氭瘡涓换鍔¢渶瑕佸崰鐢ㄤ竴涓狫ava绫伙紝姣旇緝娴垂璧勬簮锛涜�屼笖锛屼笉鏀寔鑷姩鎵弿浠诲姟娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒锛岄渶瑕佹墜鍔ㄦ敞鍏ャ��
-
-#### 姝ラ涓�锛氭墽琛屽櫒椤圭洰涓紝寮�鍙慗ob绫伙細
-
- - 1銆佸紑鍙戜竴涓户鎵胯嚜"com.xxl.job.core.handler.IJobHandler"鐨凧obHandler绫汇��
- - 2銆佹墜鍔ㄩ�氳繃濡備笅鏂瑰紡娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒銆�
- ```
- XxlJobExecutor.registJobHandler("demoJobHandler", new DemoJobHandler());
- ```
-
-#### 姝ラ浜岋細璋冨害涓績锛屾柊寤鸿皟搴︿换鍔�
-鍚庣画姝ラ鍜� "3.2 BEAN妯″紡锛堟柟娉曞舰寮忥級"涓�鑷达紝鍙互鍓嶅線鍙傝�冦��
-
-
-### 3.2 BEAN妯″紡锛堟柟娉曞舰寮忥級
-
-鍩轰簬鏂规硶鐨凚ean妯″紡寮�鍙戞柟寮忥紝杩欐槸姣旇緝鎺ㄨ崘鐨勫紑鍙戞柟寮忋��
-
-- 浼樼偣锛氭瘡涓换鍔″彧闇�瑕佸紑鍙戜竴涓柟娉曪紝娣诲姞"@XxlJob"娉ㄨВ鍗冲彲銆傛洿鍔犳柟渚裤�佸揩閫熴�備細鑷姩鎵弿浠诲姟娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒銆�
-- 缂虹偣锛氳姹係pring瀹瑰櫒鐜锛�
-
->鍩轰簬鏂规硶寮�鍙戠殑浠诲姟锛屽簳灞備細鐢熸垚JobHandler浠g悊锛屽拰鍩轰簬绫荤殑鏂瑰紡涓�鏍凤紝浠诲姟涔熶細浠obHandler鐨勫舰寮忓瓨鍦ㄤ簬鎵ц鍣ㄤ换鍔″鍣ㄤ腑銆�
-
-#### 姝ラ涓�锛氭墽琛屽櫒椤圭洰涓紝寮�鍙慗ob鏂规硶锛�
-
- - 1銆佸湪Spring Bean瀹炰緥涓紝寮�鍙慗ob鏂规硶锛屾柟寮忔牸寮忚姹備负 "public ReturnT<String> execute(String param)"
- - 2銆佷负Job鏂规硶娣诲姞娉ㄨВ "@XxlJob(value="鑷畾涔塲obhandler鍚嶇О", init = "JobHandler鍒濆鍖栨柟娉�", destroy = "JobHandler閿�姣佹柟娉�")"锛屾敞瑙alue鍊煎搴旂殑鏄皟搴︿腑蹇冩柊寤轰换鍔$殑JobHandler灞炴�х殑鍊笺��
- - 3銆佹墽琛屾棩蹇楋細闇�瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛�
-
-```
-// 鍙弬鑰僑ample绀轰緥鎵ц鍣ㄤ腑鐨� "com.xxl.job.executor.service.jobhandler.SampleXxlJob" 锛屽涓嬶細
-@XxlJob("demoJobHandler")
-public ReturnT<String> execute(String param) {
-
- XxlJobLogger.log("hello world.");
- return ReturnT.SUCCESS;
-}
-```
-
-#### 姝ラ浜岋細璋冨害涓績锛屾柊寤鸿皟搴︿换鍔�
-鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "BEAN妯″紡"锛孞obHandler灞炴�у~鍐欎换鍔℃敞瑙b�淍XxlJob鈥濅腑瀹氫箟鐨勫�硷紱
-
-
-
-#### 鍘熺敓鍐呯疆Bean妯″紡浠诲姟
-涓烘柟渚跨敤鎴峰弬鑰冧笌蹇�熷疄鐢紝绀轰緥鎵ц鍣ㄥ唴鍘熺敓鎻愪緵澶氫釜Bean妯″紡浠诲姟Handler锛屽彲浠ョ洿鎺ラ厤缃疄鐢紝濡備笅锛�
-
-- demoJobHandler锛氱畝鍗曠ず渚嬩换鍔★紝浠诲姟鍐呴儴妯℃嫙鑰楁椂浠诲姟閫昏緫锛岀敤鎴峰彲鍦ㄧ嚎浣撻獙Rolling Log绛夊姛鑳斤紱
-- shardingJobHandler锛氬垎鐗囩ず渚嬩换鍔★紝浠诲姟鍐呴儴妯℃嫙澶勭悊鍒嗙墖鍙傛暟锛屽彲鍙傝�冪啛鎮夊垎鐗囦换鍔★紱
-- httpJobHandler锛氶�氱敤HTTP浠诲姟Handler锛涗笟鍔℃柟鍙渶瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
-- commandJobHandler锛氶�氱敤鍛戒护琛屼换鍔andler锛涗笟鍔℃柟鍙渶瑕佹彁渚涘懡浠よ鍗冲彲锛涘 鈥減wd鈥濆懡浠わ紱
-
-
-### 3.3 GLUE妯″紡(Java)
-浠诲姟浠ユ簮鐮佹柟寮忕淮鎶ゅ湪璋冨害涓績锛屾敮鎸侀�氳繃Web IDE鍦ㄧ嚎鏇存柊锛屽疄鏃剁紪璇戝拰鐢熸晥锛屽洜姝や笉闇�瑕佹寚瀹欽obHandler銆傚紑鍙戞祦绋嬪涓嬶細
-
-#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟锛�
-鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Java)"锛�
-
-
-
-#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
-閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
-
-鐗堟湰鍥炴函鍔熻兘锛堟敮鎸�30涓増鏈殑鐗堟湰鍥炴函锛夛細鍦℅LUE浠诲姟鐨刉eb IDE鐣岄潰锛岄�夋嫨鍙充笂瑙掍笅鎷夋鈥滅増鏈洖婧�濓紝浼氬垪鍑鸿GLUE鐨勬洿鏂板巻鍙诧紝閫夋嫨鐩稿簲鐗堟湰鍗冲彲鏄剧ず璇ョ増鏈唬鐮侊紝淇濆瓨鍚嶨LUE浠g爜鍗冲洖閫�鍒板搴旂殑鍘嗗彶鐗堟湰锛�
-
-
-
-### 3.4 GLUE妯″紡(Shell)
-
-#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
-鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Shell)"锛�
-
-#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
-閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
-
-璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "shell" 鑴氭湰锛�
-
-
-
-### 3.4 GLUE妯″紡(Python)
-
-#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
-鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Python)"锛�
-
-#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
-閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
-
-璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "python" 鑴氭湰锛�
-
-
-
-### 3.5 GLUE妯″紡(NodeJS)
-
-#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
-鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(NodeJS)"锛�
-
-#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
-閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
-
-璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "nodeJS" 鑴氭湰锛�
-
-### 3.6 GLUE妯″紡(PHP)
-鍚屼笂
-
-### 3.7 GLUE妯″紡(PowerShell)
-鍚屼笂
-
-
-
-## 鍥涖�佹搷浣滄寚鍗�
-
-### 4.1 閰嶇疆鎵ц鍣�
-鐐瑰嚮杩涘叆"鎵ц鍣ㄧ鐞�"鐣岄潰, 濡備笅鍥�:
-
-
- 1銆�"璋冨害涓績OnLine:"鍙充晶鏄剧ず鍦ㄧ嚎鐨�"璋冨害涓績"鍒楄〃, 浠诲姟鎵ц缁撴潫鍚�, 灏嗕細浠ailover鐨勬ā寮忚繘琛屽洖璋冭皟搴︿腑蹇冮�氱煡鎵ц缁撴灉, 閬垮厤鍥炶皟鐨勫崟鐐归闄�;
- 2銆�"鎵ц鍣ㄥ垪琛�" 涓樉绀哄湪绾跨殑鎵ц鍣ㄥ垪琛�, 鍙�氳繃"OnLine 鏈哄櫒"鏌ョ湅瀵瑰簲鎵ц鍣ㄧ殑闆嗙兢鏈哄櫒銆�
-
-鐐瑰嚮鎸夐挳 "+鏂板鎵ц鍣�" 寮规濡備笅鍥�, 鍙柊澧炴墽琛屽櫒閰嶇疆:
-
-
-
-鎵ц鍣ㄥ睘鎬ц鏄�
-
- AppName: 鏄瘡涓墽琛屽櫒闆嗙兢鐨勫敮涓�鏍囩ずAppName, 鎵ц鍣ㄤ細鍛ㄦ湡鎬т互AppName涓哄璞¤繘琛岃嚜鍔ㄦ敞鍐屻�傚彲閫氳繃璇ラ厤缃嚜鍔ㄥ彂鐜版敞鍐屾垚鍔熺殑鎵ц鍣�, 渚涗换鍔¤皟搴︽椂浣跨敤;
- 鍚嶇О: 鎵ц鍣ㄧ殑鍚嶇О, 鍥犱负AppName闄愬埗瀛楁瘝鏁板瓧绛夌粍鎴�,鍙鎬т笉寮�, 鍚嶇О涓轰簡鎻愰珮鎵ц鍣ㄧ殑鍙鎬�;
- 鎺掑簭: 鎵ц鍣ㄧ殑鎺掑簭, 绯荤粺涓渶瑕佹墽琛屽櫒鐨勫湴鏂�,濡備换鍔℃柊澧�, 灏嗕細鎸夌収璇ユ帓搴忚鍙栧彲鐢ㄧ殑鎵ц鍣ㄥ垪琛�;
- 娉ㄥ唽鏂瑰紡锛氳皟搴︿腑蹇冭幏鍙栨墽琛屽櫒鍦板潃鐨勬柟寮忥紱
- 鑷姩娉ㄥ唽锛氭墽琛屽櫒鑷姩杩涜鎵ц鍣ㄦ敞鍐岋紝璋冨害涓績閫氳繃搴曞眰娉ㄥ唽琛ㄥ彲浠ュ姩鎬佸彂鐜版墽琛屽櫒鏈哄櫒鍦板潃锛�
- 鎵嬪姩褰曞叆锛氫汉宸ユ墜鍔ㄥ綍鍏ユ墽琛屽櫒鐨勫湴鍧�淇℃伅锛屽鍦板潃閫楀彿鍒嗛殧锛屼緵璋冨害涓績浣跨敤锛�
- 鏈哄櫒鍦板潃锛�"娉ㄥ唽鏂瑰紡"涓�"鎵嬪姩褰曞叆"鏃舵湁鏁堬紝鏀寔浜哄伐缁存姢鎵ц鍣ㄧ殑鍦板潃淇℃伅锛�
-
-### 4.2 鏂板缓浠诲姟
-杩涘叆浠诲姟绠$悊鐣岄潰锛岀偣鍑烩�滄柊澧炰换鍔♀�濇寜閽紝鍦ㄥ脊鍑虹殑鈥滄柊澧炰换鍔♀�濈晫闈㈤厤缃换鍔″睘鎬у悗淇濆瓨鍗冲彲銆傝鎯呴〉鍙傝�冪珷鑺� "涓夈�佷换鍔¤瑙�"銆�
-
-### 4.3 缂栬緫浠诲姟
-杩涘叆浠诲姟绠$悊鐣岄潰锛岄�変腑鎸囧畾浠诲姟銆傜偣鍑昏浠诲姟鍙充晶鈥滅紪杈戔�濇寜閽紝鍦ㄥ脊鍑虹殑鈥滅紪杈戜换鍔♀�濈晫闈㈡洿鏂颁换鍔″睘鎬у悗淇濆瓨鍗冲彲锛屽彲浠ヤ慨鏀硅缃殑浠诲姟灞炴�т俊鎭細
-
-### 4.4 缂栬緫GLUE浠g爜
-
-璇ユ搷浣滀粎閽堝GLUE浠诲姟銆�
-
-閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戙�傚彲鍙傝�冪珷鑺� "3.3 GLUE妯″紡(Java)"銆�
-
-### 4.5 鍚姩/鍋滄浠诲姟
-鍙浠诲姟杩涜鈥滃惎鍔ㄢ�濆拰鈥滃仠姝⑩�濇搷浣溿��
-闇�瑕佹敞鎰忕殑鏄紝姝ゅ鐨勫惎鍔�/鍋滄浠呴拡瀵逛换鍔$殑鍚庣画璋冨害瑙﹀彂琛屼负锛屼笉浼氬奖鍝嶅埌宸茬粡瑙﹀彂鐨勮皟搴︿换鍔★紝濡傞渶缁堟宸茬粡瑙﹀彂鐨勮皟搴︿换鍔★紝鍙煡鐪嬧��4.9 缁堟杩愯涓殑浠诲姟鈥�
-
-
-
-### 4.6 鎵嬪姩瑙﹀彂涓�娆¤皟搴�
-鐐瑰嚮鈥滄墽琛屸�濇寜閽紝鍙墜鍔ㄨЕ鍙戜竴娆′换鍔¤皟搴︼紝涓嶅奖鍝嶅師鏈夎皟搴﹁鍒欍��
-
-
-
-### 4.7 鏌ョ湅璋冨害鏃ュ織
-鐐瑰嚮鈥滄棩蹇椻�濇寜閽紝鍙互鏌ョ湅浠诲姟鍘嗗彶璋冨害鏃ュ織銆傚湪鍘嗗彶璋冨叆鏃ュ織鐣岄潰鍙煡鐪嬫瘡娆′换鍔¤皟搴︾殑璋冨害缁撴灉銆佹墽琛岀粨鏋滅瓑锛岀偣鍑烩�滄墽琛屾棩蹇椻�濇寜閽彲鏌ョ湅鎵ц鍣ㄥ畬鏁存棩蹇椼��
-
-
-
-
-
- 璋冨害鏃堕棿锛�"璋冨害涓績"瑙﹀彂鏈璋冨害骞跺悜"鎵ц鍣�"鍙戦�佷换鍔℃墽琛屼俊鍙风殑鏃堕棿锛�
- 璋冨害缁撴灉锛�"璋冨害涓績"瑙﹀彂鏈璋冨害鐨勭粨鏋滐紝200琛ㄧず鎴愬姛锛�500鎴栧叾浠栬〃绀哄け璐ワ紱
- 璋冨害澶囨敞锛�"璋冨害涓績"瑙﹀彂鏈璋冨害鐨勬棩蹇椾俊鎭紱
- 鎵ц鍣ㄥ湴鍧�锛氭湰娆′换鍔℃墽琛岀殑鏈哄櫒鍦板潃
- 杩愯妯″紡锛氳Е鍙戣皟搴︽椂浠诲姟鐨勮繍琛屾ā寮忥紝杩愯妯″紡鍙弬鑰冪珷鑺� "涓夈�佷换鍔¤瑙�"锛�
- 浠诲姟鍙傛暟锛氭湰鍦颁换鍔℃墽琛岀殑鍏ュ弬
- 鎵ц鏃堕棿锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀粨鏉熷悗鍥炶皟鐨勬椂闂达紱
- 鎵ц缁撴灉锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀殑缁撴灉锛�200琛ㄧず鎴愬姛锛�500鎴栧叾浠栬〃绀哄け璐ワ紱
- 鎵ц澶囨敞锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀殑鏃ュ織淇℃伅锛�
- 鎿嶄綔锛�
- "鎵ц鏃ュ織"鎸夐挳锛氱偣鍑诲彲鏌ョ湅鏈湴浠诲姟鎵ц鐨勮缁嗘棩蹇椾俊鎭紱璇﹁鈥�4.8 鏌ョ湅鎵ц鏃ュ織鈥濓紱
- "缁堟浠诲姟"鎸夐挳锛氱偣鍑诲彲缁堟鏈湴璋冨害瀵瑰簲鎵ц鍣ㄤ笂鏈换鍔$殑鎵ц绾跨▼锛屽寘鎷湭鎵ц鐨勯樆濉炰换鍔′竴骞惰缁堟锛�
-
-### 4.8 鏌ョ湅鎵ц鏃ュ織
-鐐瑰嚮鎵ц鏃ュ織鍙充晶鐨� 鈥滄墽琛屾棩蹇椻�� 鎸夐挳锛屽彲璺宠浆鑷虫墽琛屾棩蹇楃晫闈紝鍙互鏌ョ湅涓氬姟浠g爜涓墦鍗扮殑瀹屾暣鏃ュ織锛屽涓嬪浘锛�
-
-
-
-### 4.9 缁堟杩愯涓殑浠诲姟
-浠呴拡瀵规墽琛屼腑鐨勪换鍔°��
-鍦ㄤ换鍔℃棩蹇楃晫闈紝鐐瑰嚮鍙充晶鐨勨�滅粓姝换鍔♀�濇寜閽紝灏嗕細鍚戞湰娆′换鍔″搴旂殑鎵ц鍣ㄥ彂閫佷换鍔$粓姝㈣姹傦紝灏嗕細缁堟鎺夋湰娆′换鍔★紝鍚屾椂浼氭竻绌烘帀鏁翠釜浠诲姟鎵ц闃熷垪銆�
-
-
-
-浠诲姟缁堟鏃堕�氳繃 "interrupt" 鎵ц绾跨▼鐨勬柟寮忓疄鐜�, 灏嗕細瑙﹀彂 "InterruptedException" 寮傚父銆傚洜姝ゅ鏋淛obHandler鍐呴儴catch鍒颁簡璇ュ紓甯稿苟娑堝寲鎺夌殑璇�, 浠诲姟缁堟鍔熻兘灏嗕笉鍙敤銆�
-
-鍥犳, 濡傛灉閬囧埌涓婅堪浠诲姟缁堟涓嶅彲鐢ㄧ殑鎯呭喌, 闇�瑕佸湪JobHandler涓簲璇ラ拡瀵� "InterruptedException" 寮傚父杩涜鐗规畩澶勭悊 (鍚戜笂鎶涘嚭) , 姝g‘閫昏緫濡備笅:
-```
-try{
- // do something
-} catch (Exception e) {
- if (e instanceof InterruptedException) {
- throw e;
- }
- logger.warn("{}", e);
-}
-```
-
-鑰屼笖锛屽湪JobHandler涓紑鍚瓙绾跨▼鏃讹紝瀛愮嚎绋嬩篃涓嶅彲catch澶勭悊"InterruptedException"锛屽簲璇ヤ富鍔ㄥ悜涓婃姏鍑恒��
-
-浠诲姟缁堟鏃朵細鎵ц瀵瑰簲JobHandler鐨�"destroy()"鏂规硶锛屽彲浠ュ�熷姪璇ユ柟娉曞鐞嗕竴浜涜祫婧愬洖鏀剁殑閫昏緫銆�
-
-
-### 4.10 鍒犻櫎鎵ц鏃ュ織
-鍦ㄤ换鍔℃棩蹇楃晫闈紝閫変腑鎵ц鍣ㄥ拰浠诲姟涔嬪悗锛岀偣鍑诲彸渚х殑"鍒犻櫎"鎸夐挳灏嗕細鍑虹幇"鏃ュ織娓呯悊"寮规锛屽脊妗嗕腑鏀寔閫夋嫨涓嶅悓绫诲瀷鐨勬棩蹇楁竻鐞嗙瓥鐣ワ紝閫変腑鍚庣偣鍑�"纭畾"鎸夐挳鍗冲彲杩涜鏃ュ織娓呯悊鎿嶄綔锛�
-
-
-
-
-### 4.11 鍒犻櫎浠诲姟
-鐐瑰嚮鍒犻櫎鎸夐挳锛屽彲浠ュ垹闄ゅ搴斾换鍔°��
-
-
-
-### 4.12 鐢ㄦ埛绠$悊
-杩涘叆 "鐢ㄦ埛绠$悊" 鐣岄潰锛屽彲鏌ョ湅鍜岀鐞嗙敤鎴蜂俊鎭紱
-
-鐩墠鐢ㄦ埛鍒嗕负涓ょ瑙掕壊锛�
-- 绠$悊鍛橈細鎷ユ湁鍏ㄩ噺鏉冮檺锛屾敮鎸佸湪绾跨鐞嗙敤鎴蜂俊鎭紝涓虹敤鎴峰垎閰嶆潈闄愶紝鏉冮檺鍒嗛厤绮掑害涓烘墽琛屽櫒锛�
-- 鏅�氱敤鎴凤細浠呮嫢鏈夎鍒嗛厤鏉冮檺鐨勬墽琛屽櫒锛屽強鐩稿叧浠诲姟鐨勬搷浣滄潈闄愶紱
-
-
-
-
-
-
-## 浜斻�佹�讳綋璁捐
-### 5.1 婧愮爜鐩綍浠嬬粛
- - /doc :鏂囨。璧勬枡
- - /db :鈥滆皟搴︽暟鎹簱鈥濆缓琛ㄨ剼鏈�
- - /xxl-job-admin :璋冨害涓績锛岄」鐩簮鐮�
- - /xxl-job-core :鍏叡Jar渚濊禆
- - /xxl-job-executor-samples :鎵ц鍣紝Sample绀轰緥椤圭洰锛堝ぇ瀹跺彲浠ュ湪璇ラ」鐩笂杩涜寮�鍙戯紝涔熷彲浠ュ皢鐜版湁椤圭洰鏀归�犵敓鎴愭墽琛屽櫒椤圭洰锛�
-
-### 5.2 鈥滆皟搴︽暟鎹簱鈥濋厤缃�
-XXL-JOB璋冨害妯″潡鍩轰簬鑷爺璋冨害缁勪欢骞舵敮鎸侀泦缇ら儴缃诧紝璋冨害鏁版嵁搴撹〃璇存槑濡備笅锛�
-
- - xxl_job_lock锛氫换鍔¤皟搴﹂攣琛紱
- - xxl_job_group锛氭墽琛屽櫒淇℃伅琛紝缁存姢浠诲姟鎵ц鍣ㄤ俊鎭紱
- - xxl_job_info锛氳皟搴︽墿灞曚俊鎭〃锛� 鐢ㄤ簬淇濆瓨XXL-JOB璋冨害浠诲姟鐨勬墿灞曚俊鎭紝濡備换鍔″垎缁勩�佷换鍔″悕銆佹満鍣ㄥ湴鍧�銆佹墽琛屽櫒銆佹墽琛屽叆鍙傚拰鎶ヨ閭欢绛夌瓑锛�
- - xxl_job_log锛氳皟搴︽棩蹇楄〃锛� 鐢ㄤ簬淇濆瓨XXL-JOB浠诲姟璋冨害鐨勫巻鍙蹭俊鎭紝濡傝皟搴︾粨鏋溿�佹墽琛岀粨鏋溿�佽皟搴﹀叆鍙傘�佽皟搴︽満鍣ㄥ拰鎵ц鍣ㄧ瓑绛夛紱
- - xxl_job_log_report锛氳皟搴︽棩蹇楁姤琛細鐢ㄦ埛瀛樺偍XXL-JOB浠诲姟璋冨害鏃ュ織鐨勬姤琛紝璋冨害涓績鎶ヨ〃鍔熻兘椤甸潰浼氱敤鍒帮紱
- - xxl_job_logglue锛氫换鍔LUE鏃ュ織锛氱敤浜庝繚瀛楪LUE鏇存柊鍘嗗彶锛岀敤浜庢敮鎸丟LUE鐨勭増鏈洖婧姛鑳斤紱
- - xxl_job_registry锛氭墽琛屽櫒娉ㄥ唽琛紝缁存姢鍦ㄧ嚎鐨勬墽琛屽櫒鍜岃皟搴︿腑蹇冩満鍣ㄥ湴鍧�淇℃伅锛�
- - xxl_job_user锛氱郴缁熺敤鎴疯〃锛�
-
-
-### 5.3 鏋舵瀯璁捐
-#### 5.3.1 璁捐鎬濇兂
-灏嗚皟搴﹁涓烘娊璞″舰鎴愨�滆皟搴︿腑蹇冣�濆叕鍏卞钩鍙帮紝鑰屽钩鍙拌嚜韬苟涓嶆壙鎷呬笟鍔¢�昏緫锛屸�滆皟搴︿腑蹇冣�濊礋璐e彂璧疯皟搴﹁姹傘��
-
-灏嗕换鍔℃娊璞℃垚鍒嗘暎鐨凧obHandler锛屼氦鐢扁�滄墽琛屽櫒鈥濈粺涓�绠$悊锛屸�滄墽琛屽櫒鈥濊礋璐f帴鏀惰皟搴﹁姹傚苟鎵ц瀵瑰簲鐨凧obHandler涓笟鍔¢�昏緫銆�
-
-鍥犳锛屸�滆皟搴︹�濆拰鈥滀换鍔♀�濅袱閮ㄥ垎鍙互鐩镐簰瑙h�︼紝鎻愰珮绯荤粺鏁翠綋绋冲畾鎬у拰鎵╁睍鎬э紱
-
-#### 5.3.2 绯荤粺缁勬垚
-- **璋冨害妯″潡锛堣皟搴︿腑蹇冿級**锛�
- 璐熻矗绠$悊璋冨害淇℃伅锛屾寜鐓ц皟搴﹂厤缃彂鍑鸿皟搴﹁姹傦紝鑷韩涓嶆壙鎷呬笟鍔′唬鐮併�傝皟搴︾郴缁熶笌浠诲姟瑙h�︼紝鎻愰珮浜嗙郴缁熷彲鐢ㄦ�у拰绋冲畾鎬э紝鍚屾椂璋冨害绯荤粺鎬ц兘涓嶅啀鍙楅檺浜庝换鍔℃ā鍧楋紱
- 鏀寔鍙鍖栥�佺畝鍗曚笖鍔ㄦ�佺殑绠$悊璋冨害淇℃伅锛屽寘鎷换鍔℃柊寤猴紝鏇存柊锛屽垹闄わ紝GLUE寮�鍙戝拰浠诲姟鎶ヨ绛夛紝鎵�鏈変笂杩版搷浣滈兘浼氬疄鏃剁敓鏁堬紝鍚屾椂鏀寔鐩戞帶璋冨害缁撴灉浠ュ強鎵ц鏃ュ織锛屾敮鎸佹墽琛屽櫒Failover銆�
-- **鎵ц妯″潡锛堟墽琛屽櫒锛�**锛�
- 璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫銆備换鍔℃ā鍧椾笓娉ㄤ簬浠诲姟鐨勬墽琛岀瓑鎿嶄綔锛屽紑鍙戝拰缁存姢鏇村姞绠�鍗曞拰楂樻晥锛�
- 鎺ユ敹鈥滆皟搴︿腑蹇冣�濈殑鎵ц璇锋眰銆佺粓姝㈣姹傚拰鏃ュ織璇锋眰绛夈��
-
-#### 5.3.3 鏋舵瀯鍥�
-
-
-
-### 5.4 璋冨害妯″潡鍓栨瀽
-#### 5.4.1 quartz鐨勪笉瓒�
-Quartz浣滀负寮�婧愪綔涓氳皟搴︿腑鐨勪郊浣艰�咃紝鏄綔涓氳皟搴︾殑棣栭�夈�備絾鏄泦缇ょ幆澧冧腑Quartz閲囩敤API鐨勬柟寮忓浠诲姟杩涜绠$悊锛屼粠鑰屽彲浠ラ伩鍏嶄笂杩伴棶棰橈紝浣嗘槸鍚屾牱瀛樺湪浠ヤ笅闂锛�
-
-- 闂涓�锛氳皟鐢ˋPI鐨勭殑鏂瑰紡鎿嶄綔浠诲姟锛屼笉浜烘�у寲锛�
-- 闂浜岋細闇�瑕佹寔涔呭寲涓氬姟QuartzJobBean鍒板簳灞傛暟鎹〃涓紝绯荤粺渚靛叆鎬х浉褰撲弗閲嶃��
-- 闂涓夛細璋冨害閫昏緫鍜孮uartzJobBean鑰﹀悎鍦ㄥ悓涓�涓」鐩腑锛岃繖灏嗗鑷翠竴涓棶棰橈紝鍦ㄨ皟搴︿换鍔℃暟閲忛�愭笎澧炲锛屽悓鏃惰皟搴︿换鍔¢�昏緫閫愭笎鍔犻噸鐨勬儏鍐典笅锛屾鏃惰皟搴︾郴缁熺殑鎬ц兘灏嗗ぇ澶у彈闄愪簬涓氬姟锛�
-- 闂鍥涳細quartz搴曞眰浠モ�滄姠鍗犲紡鈥濊幏鍙朌B閿佸苟鐢辨姠鍗犳垚鍔熻妭鐐硅礋璐h繍琛屼换鍔★紝浼氬鑷磋妭鐐硅礋杞芥偓娈婇潪甯稿ぇ锛涜�孹XL-JOB閫氳繃鎵ц鍣ㄥ疄鐜扳�滃崗鍚屽垎閰嶅紡鈥濊繍琛屼换鍔★紝鍏呭垎鍙戞尌闆嗙兢浼樺娍锛岃礋杞藉悇鑺傜偣鍧囪 銆�
-
-XXL-JOB寮ヨˉ浜唓uartz鐨勪笂杩颁笉瓒充箣澶勩��
-
-#### 5.4.2 鑷爺璋冨害妯″潡
-XXL-JOB鏈�缁堥�夋嫨鑷爺璋冨害缁勪欢锛堟棭鏈熻皟搴︾粍浠跺熀浜嶲uartz锛夛紱涓�鏂归潰鏄负浜嗙簿绠�绯荤粺闄嶄綆鍐椾綑渚濊禆锛屽彟涓�鏂归潰鏄负浜嗘彁渚涚郴缁熺殑鍙帶搴︿笌绋冲畾鎬э紱
-
-XXL-JOB涓�滆皟搴︽ā鍧椻�濆拰鈥滀换鍔℃ā鍧椻�濆畬鍏ㄨВ鑰︼紝璋冨害妯″潡杩涜浠诲姟璋冨害鏃讹紝灏嗕細瑙f瀽涓嶅悓鐨勪换鍔″弬鏁板彂璧疯繙绋嬭皟鐢紝璋冪敤鍚勮嚜鐨勮繙绋嬫墽琛屽櫒鏈嶅姟銆傝繖绉嶈皟鐢ㄦā鍨嬬被浼糝PC璋冪敤锛岃皟搴︿腑蹇冩彁渚涜皟鐢ㄤ唬鐞嗙殑鍔熻兘锛岃�屾墽琛屽櫒鎻愪緵杩滅▼鏈嶅姟鐨勫姛鑳姐��
-
-#### 5.4.3 璋冨害涓績HA锛堥泦缇わ級
-鍩轰簬鏁版嵁搴撶殑闆嗙兢鏂规锛屾暟鎹簱閫夌敤Mysql锛涢泦缇ゅ垎甯冨紡骞跺彂鐜涓繘琛屽畾鏃朵换鍔¤皟搴︽椂锛屼細鍦ㄥ悇涓妭鐐逛細涓婃姤浠诲姟锛屽瓨鍒版暟鎹簱涓紝鎵ц鏃朵細浠庢暟鎹簱涓彇鍑鸿Е鍙戝櫒鏉ユ墽琛岋紝濡傛灉瑙﹀彂鍣ㄧ殑鍚嶇О鍜屾墽琛屾椂闂寸浉鍚岋紝鍒欏彧鏈変竴涓妭鐐瑰幓鎵ц姝や换鍔°��
-
-#### 5.4.4 璋冨害绾跨▼姹�
-璋冨害閲囩敤绾跨▼姹犳柟寮忓疄鐜帮紝閬垮厤鍗曠嚎绋嬪洜闃诲鑰屽紩璧蜂换鍔¤皟搴﹀欢杩熴��
-
-
-#### 5.4.5 骞惰璋冨害
-XXL-JOB璋冨害妯″潡榛樿閲囩敤骞惰鏈哄埗锛屽湪澶氱嚎绋嬭皟搴︾殑鎯呭喌涓嬶紝璋冨害妯″潡琚樆濉炵殑鍑犵巼寰堜綆锛屽ぇ澶ф彁楂樹簡璋冨害绯荤粺鐨勬壙杞介噺銆�
-
-XXL-JOB鐨勬瘡涓皟搴︿换鍔¤櫧鐒跺湪璋冨害妯″潡鏄苟琛岃皟搴︽墽琛岀殑锛屼絾鏄换鍔¤皟搴︿紶閫掑埌浠诲姟妯″潡鐨勨�滄墽琛屽櫒鈥濈‘瀹炰覆琛屾墽琛岀殑锛屽悓鏃舵敮鎸佷换鍔$粓姝€��
-
-#### 5.4.6 杩囨湡澶勭悊绛栫暐
-浠诲姟璋冨害閿欒繃瑙﹀彂鏃堕棿鏃剁殑澶勭悊绛栫暐锛�
-- 鍙兘鍘熷洜锛氭湇鍔¢噸鍚紱璋冨害绾跨▼琚樆濉烇紝绾跨▼琚�楀敖锛涗笂娆¤皟搴︽寔缁樆濉烇紝涓嬫璋冨害琚敊杩囷紱
-- 澶勭悊绛栫暐锛�
- - 杩囨湡瓒�5s锛氭湰娆″拷鐣ワ紝褰撳墠鏃堕棿寮�濮嬭绠椾笅娆¤Е鍙戞椂闂�
- - 杩囨湡5s鍐咃細绔嬪嵆瑙﹀彂涓�娆★紝褰撳墠鏃堕棿寮�濮嬭绠椾笅娆¤Е鍙戞椂闂�
-
-
-#### 5.4.7 鏃ュ織鍥炶皟鏈嶅姟
-璋冨害妯″潡鐨勨�滆皟搴︿腑蹇冣�濅綔涓篧eb鏈嶅姟閮ㄧ讲鏃讹紝涓�鏂归潰鎵挎媴璋冨害涓績鍔熻兘锛屽彟涓�鏂归潰涔熶负鎵ц鍣ㄦ彁渚汚PI鏈嶅姟銆�
-
-璋冨害涓績鎻愪緵鐨�"鏃ュ織鍥炶皟鏈嶅姟API鏈嶅姟"浠g爜浣嶇疆濡備笅锛�
-```
-xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
-```
-
-鈥滄墽琛屽櫒鈥濆湪鎺ユ敹鍒颁换鍔℃墽琛岃姹傚悗锛屾墽琛屼换鍔★紝鍦ㄦ墽琛岀粨鏉熶箣鍚庝細灏嗘墽琛岀粨鏋滃洖璋冮�氱煡鈥滆皟搴︿腑蹇冣�濓細
-
-#### 5.4.8 浠诲姟HA锛團ailover锛�
-鎵ц鍣ㄥ鑻ラ泦缇ら儴缃诧紝璋冨害涓績灏嗕細鎰熺煡鍒板湪绾跨殑鎵�鏈夋墽琛屽櫒锛屽鈥�127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999鈥濄��
-
-褰撲换鍔�"璺敱绛栫暐"閫夋嫨"鏁呴殰杞Щ(FAILOVER)"鏃讹紝褰撹皟搴︿腑蹇冩瘡娆″彂璧疯皟搴﹁姹傛椂锛屼細鎸夌収椤哄簭瀵规墽琛屽櫒鍙戝嚭蹇冭烦妫�娴嬭姹傦紝绗竴涓娴嬩负瀛樻椿鐘舵�佺殑鎵ц鍣ㄥ皢浼氳閫夊畾骞跺彂閫佽皟搴﹁姹傘��
-
-璋冨害鎴愬姛鍚庯紝鍙湪鏃ュ織鐩戞帶鐣岄潰鏌ョ湅鈥滆皟搴﹀娉ㄢ�濓紝濡備笅锛�
-
-
-鈥滆皟搴﹀娉ㄢ�濆彲浠ョ湅鍑烘湰鍦拌皟搴﹁繍琛岃建杩癸紝鎵ц鍣ㄧ殑"娉ㄥ唽鏂瑰紡"銆�"鍦板潃鍒楄〃"鍜屼换鍔$殑"璺敱绛栫暐"銆�"鏁呴殰杞Щ(FAILOVER)"璺敱绛栫暐涓嬶紝璋冨害涓績棣栧厛瀵圭涓�涓湴鍧�杩涜蹇冭烦妫�娴嬶紝蹇冭烦澶辫触鍥犳鑷姩璺宠繃锛岀浜屼釜渚濈劧蹇冭烦妫�娴嬪け璐モ�︹��
-鐩磋嚦蹇冭烦妫�娴嬬涓変釜鍦板潃鈥�127.0.0.1:9999鈥濇垚鍔燂紝閫夊畾涓衡�滅洰鏍囨墽琛屽櫒鈥濓紱鐒跺悗瀵光�滅洰鏍囨墽琛屽櫒鈥濆彂閫佽皟搴﹁姹傦紝璋冨害娴佺▼缁撴潫锛岀瓑寰呮墽琛屽櫒鍥炶皟鎵ц缁撴灉銆�
-
-#### 5.4.9 璋冨害鏃ュ織
-璋冨害涓績姣忔杩涜浠诲姟璋冨害锛岄兘浼氳褰曚竴鏉′换鍔℃棩蹇楋紝浠诲姟鏃ュ織涓昏鍖呮嫭浠ヤ笅涓夐儴鍒嗗唴瀹癸細
-
-- 浠诲姟淇℃伅锛氬寘鎷�滄墽琛屽櫒鍦板潃鈥濄�佲�淛obHandler鈥濆拰鈥滄墽琛屽弬鏁扳�濈瓑灞炴�э紝鐐瑰嚮浠诲姟ID鎸夐挳鍙煡鐪嬶紝鏍规嵁杩欎簺鍙傛暟锛屽彲浠ョ簿纭殑瀹氫綅浠诲姟鎵ц鐨勫叿浣撴満鍣ㄥ拰浠诲姟浠g爜锛�
-- 璋冨害淇℃伅锛氬寘鎷�滆皟搴︽椂闂粹�濄�佲�滆皟搴︾粨鏋溾�濆拰鈥滆皟搴︽棩蹇椻�濈瓑锛屾牴鎹繖浜涘弬鏁帮紝鍙互浜嗚В鈥滆皟搴︿腑蹇冣�濆彂璧疯皟搴﹁姹傛椂鍏蜂綋鎯呭喌銆�
-- 鎵ц淇℃伅锛氬寘鎷�滄墽琛屾椂闂粹�濄�佲�滄墽琛岀粨鏋溾�濆拰鈥滄墽琛屾棩蹇椻�濈瓑锛屾牴鎹繖浜涘弬鏁帮紝鍙互浜嗚В鍦ㄢ�滄墽琛屽櫒鈥濈浠诲姟鎵ц鐨勫叿浣撴儏鍐碉紱
-
-璋冨害鏃ュ織锛岄拡瀵瑰崟娆¤皟搴︼紝灞炴�ц鏄庡涓嬶細
-- 鎵ц鍣ㄥ湴鍧�锛氫换鍔℃墽琛岀殑鏈哄櫒鍦板潃锛�
-- JobHandler锛欱ean妯″紡琛ㄧず浠诲姟鎵ц鐨凧obHandler鍚嶇О锛�
-- 浠诲姟鍙傛暟锛氫换鍔℃墽琛岀殑鍏ュ弬锛�
-- 璋冨害鏃堕棿锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勬椂闂达紱
-- 璋冨害缁撴灉锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勭粨鏋滐紝SUCCESS鎴朏AIL锛�
-- 璋冨害澶囨敞锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勫娉ㄤ俊鎭紝濡傚湴鍧�蹇冭烦妫�娴嬫棩蹇楃瓑锛�
-- 鎵ц鏃堕棿锛氭墽琛屽櫒锛屼换鍔℃墽琛岀粨鏉熷悗鍥炶皟鐨勬椂闂达紱
-- 鎵ц缁撴灉锛氭墽琛屽櫒锛屼换鍔℃墽琛岀殑缁撴灉锛孲UCCESS鎴朏AIL锛�
-- 鎵ц澶囨敞锛氭墽琛屽櫒锛屼换鍔℃墽琛岀殑澶囨敞淇℃伅锛屽寮傚父鏃ュ織绛夛紱
-- 鎵ц鏃ュ織锛氫换鍔℃墽琛岃繃绋嬩腑锛屼笟鍔′唬鐮佷腑鎵撳嵃鐨勫畬鏁存墽琛屾棩蹇楋紝瑙佲��4.8 鏌ョ湅鎵ц鏃ュ織鈥濓紱
-
-#### 5.4.10 浠诲姟渚濊禆
-鍘熺悊锛歑XL-JOB涓瘡涓换鍔¢兘瀵瑰簲鏈変竴涓换鍔D锛屽悓鏃讹紝姣忎釜浠诲姟鏀寔璁剧疆灞炴�р�滃瓙浠诲姟ID鈥濓紝鍥犳锛岄�氳繃鈥滀换鍔D鈥濆彲浠ュ尮閰嶄换鍔′緷璧栧叧绯汇��
-
-褰撶埗浠诲姟鎵ц缁撴潫骞朵笖鎵ц鎴愬姛鏃讹紝灏嗕細鏍规嵁鈥滃瓙浠诲姟ID鈥濆尮閰嶅瓙浠诲姟渚濊禆锛屽鏋滃尮閰嶅埌瀛愪换鍔★紝灏嗕細涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鐨勬墽琛屻��
-
-鍦ㄤ换鍔℃棩蹇楃晫闈紝鐐瑰嚮浠诲姟鐨勨�滄墽琛屽娉ㄢ�濈殑鈥滄煡鐪嬧�濇寜閽紝鍙互鐪嬪埌鍖归厤瀛愪换鍔′互鍙婅Е鍙戝瓙浠诲姟鎵ц鐨勬棩蹇椾俊鎭紝濡傛棤淇℃伅鍒欒〃绀烘湭瑙﹀彂瀛愪换鍔℃墽琛岋紝鍙弬鑰冧笅鍥俱��
-
-
-
-
-
-#### 5.4.11 鍏ㄥ紓姝ュ寲 & 杞婚噺绾�
-
-- 鍏ㄥ紓姝ュ寲璁捐锛歑XL-JOB绯荤粺涓笟鍔¢�昏緫鍦ㄨ繙绋嬫墽琛屽櫒鎵ц锛岃Е鍙戞祦绋嬪叏寮傛鍖栬璁°�傜浉姣旂洿鎺ュ湪璋冨害涓績鍐呴儴鎵ц涓氬姟閫昏緫锛屾瀬澶х殑闄嶄綆浜嗚皟搴︾嚎绋嬪崰鐢ㄦ椂闂达紱
- - 寮傛璋冨害锛氳皟搴︿腑蹇冩瘡娆′换鍔¤Е鍙戞椂浠呭彂閫佷竴娆¤皟搴﹁姹傦紝璇ヨ皟搴﹁姹傞鍏堟帹閫佲�滃紓姝ヨ皟搴﹂槦鍒椻�濓紝鐒跺悗寮傛鎺ㄩ�佺粰杩滅▼鎵ц鍣�
- - 寮傛鎵ц锛氭墽琛屽櫒浼氬皢璇锋眰瀛樺叆鈥滃紓姝ユ墽琛岄槦鍒椻�濆苟涓旂珛鍗冲搷搴旇皟搴︿腑蹇冿紝寮傛杩愯銆�
-- 杞婚噺绾ц璁★細XXL-JOB璋冨害涓績涓瘡涓狫OB閫昏緫闈炲父 鈥滆交鈥濓紝鍦ㄥ叏寮傛鍖栫殑鍩虹涓婏紝鍗曚釜JOB涓�娆¤繍琛屽钩鍧囪�楁椂鍩烘湰鍦� "10ms" 涔嬪唴锛堝熀鏈负涓�娆¤姹傜殑缃戠粶寮�閿�锛夛紱鍥犳锛屽彲浠ヤ繚璇佷娇鐢ㄦ湁闄愮殑绾跨▼鏀拺澶ч噺鐨凧OB骞跺彂杩愯锛�
-
-寰楃泭浜庝笂杩颁袱鐐逛紭鍖栵紝鐞嗚涓婇粯璁ら厤缃笅鐨勮皟搴︿腑蹇冿紝鍗曟満鑳藉鏀拺 5000 浠诲姟骞跺彂杩愯绋冲畾杩愯锛�
-
-瀹為檯鍦烘櫙涓紝鐢变簬璋冨害涓績涓庢墽琛屽櫒缃戠粶ping寤惰繜涓嶅悓銆丏B璇诲啓鑰楁椂涓嶅悓銆佷换鍔¤皟搴﹀瘑闆嗙▼搴︿笉鍚岋紝浼氬鑷翠换鍔¢噺涓婇檺浼氫笂涓嬫尝鍔ㄣ��
-
-濡傝嫢闇�瑕佹敮鎾戞洿澶氱殑浠诲姟閲忥紝鍙互閫氳繃 "璋冨ぇ璋冨害绾跨▼鏁�" 銆�"闄嶄綆璋冨害涓績涓庢墽琛屽櫒ping寤惰繜" 鍜� "鎻愬崌鏈哄櫒閰嶇疆" 鍑犵鏂瑰紡浼樺寲銆�
-
-#### 5.4.12 鍧囪 璋冨害
-
-璋冨害涓績鍦ㄩ泦缇ら儴缃叉椂浼氳嚜鍔ㄨ繘琛屼换鍔″钩鍧囧垎閰嶏紝瑙﹀彂缁勪欢姣忔鑾峰彇涓庣嚎绋嬫睜鏁伴噺锛堣皟搴︿腑蹇冩敮鎸佽嚜瀹氫箟璋冨害绾跨▼姹犲ぇ灏忥級鐩稿叧鏁伴噺鐨勪换鍔★紝閬垮厤澶ч噺浠诲姟闆嗕腑鍦ㄥ崟涓皟搴︿腑蹇冮泦缇よ妭鐐癸紱
-
-
-### 5.5 浠诲姟 "杩愯妯″紡" 鍓栨瀽
-#### 5.5.1 "Bean妯″紡" 浠诲姟
-寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
-鍘熺悊锛氭瘡涓狟ean妯″紡浠诲姟閮芥槸涓�涓猄pring鐨凚ean绫诲疄渚嬶紝瀹冭缁存姢鍦ㄢ�滄墽琛屽櫒鈥濋」鐩殑Spring瀹瑰櫒涓�備换鍔$被闇�瑕佸姞鈥淍JobHandler(value="鍚嶇О")鈥濇敞瑙o紝鍥犱负鈥滄墽琛屽櫒鈥濅細鏍规嵁璇ユ敞瑙h瘑鍒玈pring瀹瑰櫒涓殑浠诲姟銆備换鍔$被闇�瑕佺户鎵跨粺涓�鎺ュ彛鈥淚JobHandler鈥濓紝浠诲姟閫昏緫鍦╡xecute鏂规硶涓紑鍙戯紝鍥犱负鈥滄墽琛屽櫒鈥濆湪鎺ユ敹鍒拌皟搴︿腑蹇冪殑璋冨害璇锋眰鏃讹紝灏嗕細璋冪敤鈥淚JobHandler鈥濈殑execute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
-
-#### 5.5.2 "GLUE妯″紡(Java)" 浠诲姟
-寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
-鍘熺悊锛氭瘡涓� "GLUE妯″紡(Java)" 浠诲姟鐨勪唬鐮侊紝瀹為檯涓婃槸鈥滀竴涓户鎵胯嚜鈥淚JobHandler鈥濈殑瀹炵幇绫荤殑绫讳唬鐮佲�濓紝鈥滄墽琛屽櫒鈥濇帴鏀跺埌鈥滆皟搴︿腑蹇冣�濈殑璋冨害璇锋眰鏃讹紝浼氶�氳繃Groovy绫诲姞杞藉櫒鍔犺浇姝や唬鐮侊紝瀹炰緥鍖栨垚Java瀵硅薄锛屽悓鏃舵敞鍏ユ浠g爜涓0鏄庣殑Spring鏈嶅姟锛堣纭繚Glue浠g爜涓殑鏈嶅姟鍜岀被寮曠敤鍦ㄢ�滄墽琛屽櫒鈥濋」鐩腑瀛樺湪锛夛紝鐒跺悗璋冪敤璇ュ璞$殑execute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
-
-#### 5.5.3 GLUE妯″紡(Shell) + GLUE妯″紡(Python) + GLUE妯″紡(NodeJS)
-寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
-鍘熺悊锛氳剼鏈换鍔$殑婧愮爜鎵樼鍦ㄨ皟搴︿腑蹇冿紝鑴氭湰閫昏緫鍦ㄦ墽琛屽櫒杩愯銆傚綋瑙﹀彂鑴氭湰浠诲姟鏃讹紝鎵ц鍣ㄤ細鍔犺浇鑴氭湰婧愮爜鍦ㄦ墽琛屽櫒鏈哄櫒涓婄敓鎴愪竴浠借剼鏈枃浠讹紝鐒跺悗閫氳繃Java浠g爜璋冪敤璇ヨ剼鏈紱骞朵笖瀹炴椂灏嗚剼鏈緭鍑烘棩蹇楀啓鍒颁换鍔℃棩蹇楁枃浠朵腑锛屼粠鑰屽湪璋冨害涓績鍙互瀹炴椂鐩戞帶鑴氭湰杩愯鎯呭喌锛�
-
-鐩墠鏀寔鐨勮剼鏈被鍨嬪涓嬶細
-
- - shell鑴氭湰锛氫换鍔¤繍琛屾ā寮忛�夋嫨涓� "GLUE妯″紡(Shell)"鏃舵敮鎸� "shell" 鑴氭湰浠诲姟锛�
- - python鑴氭湰锛氫换鍔¤繍琛屾ā寮忛�夋嫨涓� "GLUE妯″紡(Python)"鏃舵敮鎸� "python" 鑴氭湰浠诲姟锛�
- - nodejs鑴氭湰锛氬姟杩愯妯″紡閫夋嫨涓� "GLUE妯″紡(NodeJS)"鏃舵敮鎸� "nodejs" 鑴氭湰浠诲姟锛�
-
-鑴氭湰浠诲姟閫氳繃 Exit Code 鍒ゆ柇浠诲姟鎵ц缁撴灉锛岀姸鎬佺爜鍙弬鑰冪珷鑺� "5.15 浠诲姟鎵ц缁撴灉璇存槑"锛�
-
-#### 5.5.4 鎵ц鍣�
-鎵ц鍣ㄥ疄闄呬笂鏄竴涓唴宓岀殑Server锛岄粯璁ょ鍙�9999锛堥厤缃」锛歺xl.job.executor.port锛夈��
-
-鍦ㄩ」鐩惎鍔ㄦ椂锛屾墽琛屽櫒浼氶�氳繃鈥淍JobHandler鈥濊瘑鍒玈pring瀹瑰櫒涓�淏ean妯″紡浠诲姟鈥濓紝浠ユ敞瑙g殑value灞炴�т负key绠$悊璧锋潵銆�
-
-鈥滄墽琛屽櫒鈥濇帴鏀跺埌鈥滆皟搴︿腑蹇冣�濈殑璋冨害璇锋眰鏃讹紝濡傛灉浠诲姟绫诲瀷涓衡�淏ean妯″紡鈥濓紝灏嗕細鍖归厤Spring瀹瑰櫒涓殑鈥淏ean妯″紡浠诲姟鈥濓紝鐒跺悗璋冪敤鍏秂xecute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆傚鏋滀换鍔$被鍨嬩负鈥淕LUE妯″紡鈥濓紝灏嗕細鍔犺浇GLue浠g爜锛屽疄渚嬪寲Java瀵硅薄锛屾敞鍏ヤ緷璧栫殑Spring鏈嶅姟锛堟敞鎰忥細Glue浠g爜涓敞鍏ョ殑Spring鏈嶅姟锛屽繀椤诲瓨鍦ㄤ笌璇モ�滄墽琛屽櫒鈥濋」鐩殑Spring瀹瑰櫒涓級锛岀劧鍚庤皟鐢╡xecute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
-
-#### 5.5.5 浠诲姟鏃ュ織
-XXL-JOB浼氫负姣忔璋冨害璇锋眰鐢熸垚涓�涓崟鐙殑鏃ュ織鏂囦欢锛岄渶瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛屸�滆皟搴︿腑蹇冣�濇煡鐪嬫墽琛屾棩蹇楁椂灏嗕細鍔犺浇瀵瑰簲鐨勬棩蹇楁枃浠躲��
-
-(鍘嗗彶鐗堟湰閫氳繃閲嶅啓LOG4J鐨凙ppender瀹炵幇锛屽瓨鍦ㄤ緷璧栭檺鍒讹紝璇ユ柟寮忓湪鏂扮増鏈凡缁忚鎶涘純)
-
-鏃ュ織鏂囦欢瀛樻斁鐨勪綅缃彲鍦ㄢ�滄墽琛屽櫒鈥濋厤缃枃浠惰繘琛岃嚜瀹氫箟锛岄粯璁ょ洰褰曟牸寮忎负锛�/data/applogs/xxl-job/jobhandler/鈥滄牸寮忓寲鏃ユ湡鈥�/鈥滄暟鎹簱璋冨害鏃ュ織璁板綍鐨勪富閿甀D.log鈥濄��
-
-鍦↗obHandler涓紑鍚瓙绾跨▼鏃讹紝瀛愮嚎绋嬪皢浼氬皢浼氭妸鏃ュ織鎵撳嵃鍦ㄧ埗绾跨▼鍗矹obHandler鐨勬墽琛屾棩蹇椾腑锛屾柟渚挎棩蹇楄拷韪��
-
-### 5.6 閫氳妯″潡鍓栨瀽
-
-#### 5.6.1 涓�娆″畬鏁寸殑浠诲姟璋冨害閫氳娴佺▼
- - 1銆佲�滆皟搴︿腑蹇冣�濆悜鈥滄墽琛屽櫒鈥濆彂閫乭ttp璋冨害璇锋眰: 鈥滄墽琛屽櫒鈥濅腑鎺ユ敹璇锋眰鐨勬湇鍔★紝瀹為檯涓婃槸涓�鍙板唴宓孲erver锛岄粯璁ょ鍙�9999;
- - 2銆佲�滄墽琛屽櫒鈥濇墽琛屼换鍔¢�昏緫锛�
- - 3銆佲�滄墽琛屽櫒鈥漢ttp鍥炶皟鈥滆皟搴︿腑蹇冣�濊皟搴︾粨鏋�: 鈥滆皟搴︿腑蹇冣�濅腑鎺ユ敹鍥炶皟鐨勬湇鍔★紝鏄拡瀵规墽琛屽櫒寮�鏀句竴濂桝PI鏈嶅姟;
-
-#### 5.6.2 閫氳鏁版嵁鍔犲瘑
-璋冨害涓績鍚戞墽琛屽櫒鍙戦�佺殑璋冨害璇锋眰鏃朵娇鐢≧equestModel鍜孯esponseModel涓や釜瀵硅薄灏佽璋冨害璇锋眰鍙傛暟鍜屽搷搴旀暟鎹�, 鍦ㄨ繘琛岄�氳涔嬪墠搴曞眰浼氬皢涓婅堪涓や釜瀵硅薄瀵硅薄搴忓垪鍖栵紝骞惰繘琛屾暟鎹崗璁互鍙婃椂闂存埑妫�楠�,浠庤�岃揪鍒版暟鎹姞瀵嗙殑鍔熻兘;
-
-### 5.7 浠诲姟娉ㄥ唽, 浠诲姟鑷姩鍙戠幇
-鑷獀1.5鐗堟湰涔嬪悗, 浠诲姟鍙栨秷浜�"浠诲姟鎵ц鏈哄櫒"灞炴��, 鏀逛负閫氳繃浠诲姟娉ㄥ唽鍜岃嚜鍔ㄥ彂鐜扮殑鏂瑰紡, 鍔ㄦ�佽幏鍙栬繙绋嬫墽琛屽櫒鍦板潃骞舵墽琛屻��
-
- AppName: 姣忎釜鎵ц鍣ㄦ満鍣ㄩ泦缇ょ殑鍞竴鏍囩ず, 浠诲姟娉ㄥ唽浠� "鎵ц鍣�" 涓烘渶灏忕矑搴﹁繘琛屾敞鍐�; 姣忎釜浠诲姟閫氳繃鍏剁粦瀹氱殑鎵ц鍣ㄥ彲鎰熺煡瀵瑰簲鐨勬墽琛屽櫒鏈哄櫒鍒楄〃;
- 娉ㄥ唽琛�: 瑙�"xxl_job_registry"琛�, "鎵ц鍣�" 鍦ㄨ繘琛屼换鍔℃敞鍐屾椂灏嗕細鍛ㄦ湡鎬х淮鎶や竴鏉℃敞鍐岃褰曪紝鍗虫満鍣ㄥ湴鍧�鍜孉ppName鐨勭粦瀹氬叧绯�; "璋冨害涓績" 浠庤�屽彲浠ュ姩鎬佹劅鐭ユ瘡涓狝ppName鍦ㄧ嚎鐨勬満鍣ㄥ垪琛�;
- 鎵ц鍣ㄦ敞鍐�: 浠诲姟娉ㄥ唽Beat鍛ㄦ湡榛樿30s; 鎵ц鍣ㄤ互涓�鍊岯eat杩涜鎵ц鍣ㄦ敞鍐�, 璋冨害涓績浠ヤ竴鍊岯eat杩涜鍔ㄦ�佷换鍔″彂鐜�; 娉ㄥ唽淇℃伅鐨勫け鏁堟椂闂翠负涓夊�岯eat;
- 鎵ц鍣ㄦ敞鍐屾憳闄わ細鎵ц鍣ㄩ攢姣佹椂锛屽皢浼氫富鍔ㄤ笂鎶ヨ皟搴︿腑蹇冨苟鎽橀櫎瀵瑰簲鐨勬墽琛屽櫒鏈哄櫒淇℃伅锛屾彁楂樺績璺虫敞鍐岀殑瀹炴椂鎬э紱
-
-
-涓轰繚璇佺郴缁�"杞婚噺绾�"骞朵笖闄嶄綆瀛︿範閮ㄧ讲鎴愭湰锛屾病鏈夐噰鐢╖ookeeper浣滀负娉ㄥ唽涓績锛岄噰鐢―B鏂瑰紡杩涜浠诲姟娉ㄥ唽鍙戠幇锛�
-
-### 5.8 浠诲姟鎵ц缁撴灉
-鑷獀1.6.2涔嬪悗锛屼换鍔℃墽琛岀粨鏋滈�氳繃 "IJobHandler" 鐨勮繑鍥炲�� "ReturnT" 杩涜鍒ゆ柇锛�
-褰撹繑鍥炲�肩鍚� "ReturnT.code == ReturnT.SUCCESS_CODE" 鏃惰〃绀轰换鍔℃墽琛屾垚鍔燂紝鍚﹀垯琛ㄧず浠诲姟鎵ц澶辫触锛岃�屼笖鍙互閫氳繃 "ReturnT.msg" 鍥炶皟閿欒淇℃伅缁欒皟搴︿腑蹇冿紱
-浠庤�岋紝鍦ㄤ换鍔¢�昏緫涓彲浠ユ柟渚跨殑鎺у埗浠诲姟鎵ц缁撴灉锛�
-
-### 5.9 鍒嗙墖骞挎挱 & 鍔ㄦ�佸垎鐗�
-鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戝搴旈泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍚屾椂绯荤粺鑷姩浼犻�掑垎鐗囧弬鏁帮紱鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
-
-"鍒嗙墖骞挎挱" 浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
-
-"鍒嗙墖骞挎挱" 鍜屾櫘閫氫换鍔″紑鍙戞祦绋嬩竴鑷达紝涓嶅悓涔嬪鍦ㄤ簬鍙互鍙互鑾峰彇鍒嗙墖鍙傛暟锛岃幏鍙栧垎鐗囧弬鏁拌繘琛屽垎鐗囦笟鍔″鐞嗐��
-
-- Java璇█浠诲姟鑾峰彇鍒嗙墖鍙傛暟鏂瑰紡锛欱EAN銆丟LUE妯″紡(Java)
-```
-// 鍙弬鑰僑ample绀轰緥鎵ц鍣ㄤ腑鐨勭ず渚嬩换鍔�"ShardingJobHandler"浜嗚В璇曠敤
-ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
-```
-- 鑴氭湰璇█浠诲姟鑾峰彇鍒嗙墖鍙傛暟鏂瑰紡锛欸LUE妯″紡(Shell)銆丟LUE妯″紡(Python)銆丟LUE妯″紡(Nodejs)
-```
-// 鑴氭湰浠诲姟鍏ュ弬鍥哄畾涓轰笁涓紝渚濇涓猴細浠诲姟浼犲弬銆佸垎鐗囧簭鍙枫�佸垎鐗囨�绘暟銆備互Shell妯″紡浠诲姟涓轰緥锛岃幏鍙栧垎鐗囧弬鏁颁唬鐮佸涓�
-echo "鍒嗙墖搴忓彿 index = $2"
-echo "鍒嗙墖鎬绘暟 total = $3"
-```
-
-鍒嗙墖鍙傛暟灞炴�ц鏄庯細
-
- index锛氬綋鍓嶅垎鐗囧簭鍙�(浠�0寮�濮�)锛屾墽琛屽櫒闆嗙兢鍒楄〃涓綋鍓嶆墽琛屽櫒鐨勫簭鍙凤紱
- total锛氭�诲垎鐗囨暟锛屾墽琛屽櫒闆嗙兢鐨勬�绘満鍣ㄦ暟閲忥紱
-
-璇ョ壒鎬ч�傜敤鍦烘櫙濡傦細
-- 1銆佸垎鐗囦换鍔″満鏅細10涓墽琛屽櫒鐨勯泦缇ゆ潵澶勭悊10w鏉℃暟鎹紝姣忓彴鏈哄櫒鍙渶瑕佸鐞�1w鏉℃暟鎹紝鑰楁椂闄嶄綆10鍊嶏紱
-- 2銆佸箍鎾换鍔″満鏅細骞挎挱鎵ц鍣ㄦ満鍣ㄨ繍琛宻hell鑴氭湰銆佸箍鎾泦缇よ妭鐐硅繘琛岀紦瀛樻洿鏂扮瓑
-
-### 5.10 璁块棶浠ょ墝锛圓ccessToken锛�
-涓烘彁鍗囩郴缁熷畨鍏ㄦ�э紝璋冨害涓績鍜屾墽琛屽櫒杩涜瀹夊叏鎬ф牎楠岋紝鍙屾柟AccessToken鍖归厤鎵嶅厑璁搁�氳锛�
-
-璋冨害涓績鍜屾墽琛屽櫒锛屽彲閫氳繃閰嶇疆椤� "xxl.job.accessToken" 杩涜AccessToken鐨勮缃��
-
-璋冨害涓績鍜屾墽琛屽櫒锛屽鏋滈渶瑕佹甯搁�氳锛屽彧鏈変袱绉嶈缃紱
-
-- 璁剧疆涓�锛氳皟搴︿腑蹇冨拰鎵ц鍣紝鍧囦笉璁剧疆AccessToken锛涘叧闂畨鍏ㄦ�ф牎楠岋紱
-- 璁剧疆浜岋細璋冨害涓績鍜屾墽琛屽櫒锛岃缃簡鐩稿悓鐨凙ccessToken锛�
-
-### 5.11 璋冨害涓績API鏈嶅姟
-
-璋冨害涓績鎻愪緵浜咥PI鏈嶅姟锛屼富瑕佸垎涓轰袱绉嶇被鍨嬶細
-#### 5.11.1 鎻愪緵缁欐墽琛屽櫒鐨凙PI鏈嶅姟锛�
- 1銆佷换鍔$粨鏋滃洖璋冩湇鍔★紱
- 2銆佹墽琛屽櫒娉ㄥ唽鏈嶅姟锛�
- 3銆佹墽琛屽櫒娉ㄥ唽鎽橀櫎鏈嶅姟锛�
- 4銆佽Е鍙戜换鍔″崟娆℃墽琛屾湇鍔★紝鏀寔浠诲姟鏍规嵁涓氬姟浜嬩欢瑙﹀彂锛�
-
-API鏈嶅姟浣嶇疆锛歝om.xxl.job.core.biz.AdminBiz.java
-API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細com.xxl.job.adminbiz.AdminBizTest.java
-
-#### 5.11.2 鎻愪緵缁欎笟鍔$殑API鏈嶅姟锛�
- 1銆佷换鍔″垪琛ㄦ煡璇紱
- 2銆佷换鍔℃柊澧烇紱
- 3銆佷换鍔℃洿鏂帮紱
- 4銆佷换鍔″垹闄わ紱
- 5銆佷换鍔″惎鍔紱
- 6銆佷换鍔″仠姝紱
- 7銆佷换鍔¤Е鍙戯紱
-
-API鏈嶅姟浣嶇疆锛歝om.xxl.job.admin.controller.JobInfoController.java
-API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細鍙弬鑰冧换鍔$晫闈㈡搷浣滅殑ajax璇锋眰銆備换浣昦jax鎺ュ彛鍧囧彲閰嶇疆鎴愪负API鏈嶅姟锛屽彧闇�鍦ㄥ緟鍚敤鐨凙PI鏈嶅姟涓婃坊鍔� 鈥淍PermissionLimit(limit = false)鈥� 娉ㄨВ鍙栨秷鐧婚檰鎬佹嫤鎴嵆鍙紱
-
-### 5.12 鎵ц鍣ˋPI鏈嶅姟
-鎵ц鍣ㄦ彁渚涗簡API鏈嶅姟锛屼緵璋冨害涓績閫夋嫨浣跨敤锛岀洰鍓嶆彁渚涚殑API鏈嶅姟鏈夛細
-
- 1銆佸績璺虫娴嬶細璋冨害涓績浣跨敤
- 2銆佸繖纰屾娴嬶細璋冨害涓績浣跨敤
- 3銆佽Е鍙戜换鍔℃墽琛岋細璋冨害涓績浣跨敤锛涙湰鍦拌繘琛屼换鍔″紑鍙戞椂锛屽彲浣跨敤璇PI鏈嶅姟妯℃嫙瑙﹀彂浠诲姟锛�
- 4銆佽幏鍙朢olling Log锛氳皟搴︿腑蹇冧娇鐢�
- 5銆佺粓姝换鍔★細璋冨害涓績浣跨敤
-
-API鏈嶅姟浣嶇疆锛歝om.xxl.job.core.biz.ExecutorBiz
-API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細com.xxl.job.executor.ExecutorBizTest
-
-### 5.13 鏁呴殰杞Щ & 澶辫触閲嶈瘯
-涓�娆″畬鏁翠换鍔℃祦绋嬪寘鎷�"璋冨害锛堣皟搴︿腑蹇冿級 + 鎵ц锛堟墽琛屽櫒锛�"涓や釜闃舵銆�
-
-- "鏁呴殰杞Щ"鍙戠敓鍦ㄨ皟搴﹂樁娈碉紝鍦ㄦ墽琛屽櫒闆嗙兢閮ㄧ讲鏃讹紝濡傛灉鏌愪竴鍙版墽琛屽櫒鍙戠敓鏁呴殰锛岃绛栫暐鏀寔鑷姩杩涜Failover鍒囨崲鍒颁竴鍙版甯哥殑鎵ц鍣ㄦ満鍣ㄥ苟涓斿畬鎴愯皟搴﹁姹傛祦绋嬨��
-- "澶辫触閲嶈瘯"鍙戠敓鍦�"璋冨害 + 鎵ц"涓や釜闃舵锛屾敮鎸侀�氳繃鑷畾涔変换鍔″け璐ラ噸璇曟鏁帮紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱
-
-### 5.14 鎵ц鍣ㄧ伆搴︿笂绾�
-璋冨害涓績涓庝笟鍔¤В鑰︼紝鍙渶閮ㄧ讲涓�娆″悗甯稿勾涓嶉渶瑕佺淮鎶ゃ�備絾鏄紝鎵ц鍣ㄤ腑鎵樼杩愯鐫�涓氬姟浣滀笟锛屼綔涓氫笂绾垮拰鍙樻洿闇�瑕侀噸鍚墽琛屽櫒锛屽挨鍏舵槸Bean妯″紡浠诲姟銆�
-鎵ц鍣ㄩ噸鍚彲鑳戒細涓柇杩愯涓殑浠诲姟銆備絾鏄紝XXL-JOB寰楃泭浜庤嚜寤烘墽琛屽櫒涓庤嚜寤烘敞鍐屼腑蹇冿紝鍙互閫氳繃鐏板害涓婄嚎鐨勬柟寮忥紝閬垮厤鍥犻噸鍚鑷寸殑浠诲姟涓柇鐨勯棶棰樸��
-
-姝ラ濡備笅锛�
-- 1銆佹墽琛屽櫒鏀逛负鎵嬪姩娉ㄥ唽锛屼笅绾夸竴鍗婃満鍣ㄥ垪琛紙A缁勶級锛岀嚎涓婅繍琛屽彟涓�鍗婃満鍣ㄥ垪琛紙B缁勶級锛�
-- 2銆佺瓑寰匒缁勬満鍣ㄤ换鍔¤繍琛岀粨鏉熷苟缂栬瘧涓婄嚎锛涙墽琛屽櫒娉ㄥ唽鍦板潃鏇挎崲涓篈缁勶紱
-- 3銆佺瓑寰匓缁勬満鍣ㄤ换鍔¤繍琛岀粨鏉熷苟缂栬瘧涓婄嚎锛涙墽琛屽櫒娉ㄥ唽鍦板潃鏇挎崲涓篈缁�+B缁勶紱
-鎿嶄綔缁撴潫锛�
-
-### 5.15 浠诲姟鎵ц缁撴灉璇存槑
-绯荤粺鏍规嵁浠ヤ笅鏍囧噯鍒ゆ柇浠诲姟鎵ц缁撴灉锛屽彲鍙傝�冧箣銆�
-
--- | Bean/Glue(Java) | Glue(Shell) 绛夎剼鏈换鍔�
---- | --- | ---
-鎴愬姛 | IJobHandler.SUCCESS | 0
-澶辫触 | IJobHandler.FAIL | -1锛堥潪0鐘舵�佺爜锛�
-
-### 5.16 浠诲姟瓒呮椂鎺у埗
-鏀寔璁剧疆浠诲姟瓒呮椂鏃堕棿锛屼换鍔¤繍琛岃秴鏃剁殑鎯呭喌涓嬶紝灏嗕細涓诲姩涓柇浠诲姟锛�
-
-闇�瑕佹敞鎰忕殑鏄紝浠诲姟瓒呮椂涓柇鏃朵笌浠诲姟缁堟鏈哄埗锛堝彲鏌ョ湅鈥�4.9 缁堟杩愯涓殑浠诲姟鈥濓級绫讳技锛屼篃鏄�氳繃 "interrupt" 涓柇浠诲姟锛屽洜姝や笟鍔′唬鐮侀渶瑕佸皢 "InterruptedException" 澶栨姏锛屽惁鍒欏姛鑳戒笉鍙敤銆�
-
-### 5.17 璺ㄥ钩鍙� & 璺ㄨ瑷�
-璺ㄥ钩鍙般�佽法璇█涓昏浣撶幇鍦ㄤ互涓嬩袱涓柟闈細
-- 1銆佹彁渚汮ava銆丳ython銆丳HP鈥︹�︾瓑鍗佹潵绉嶄换鍔℃ā寮忥紝鍙弬鑰冪珷鑺� 鈥�5.5 浠诲姟 "杩愯妯″紡" 鈥濓紱鐞嗚涓婂彲鎵╁睍浠绘剰璇█浠诲姟妯″紡锛�
-- 2銆佹彁渚涘熀浜嶩TTP鐨勪换鍔andler锛圔ean浠诲姟锛孞obHandler="HttpJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
-
-### 5.18 浠诲姟澶辫触鍛婅
-榛樿鎻愪緵閭欢澶辫触鍛婅锛屽彲鎵╁睍鐭俊銆侀拤閽夌瓑鏂瑰紡锛屾墿灞曚唬鐮佷綅缃负 "JobFailMonitorHelper.failAlarm"锛�
-
-### 5.19 璋冨害涓績Docker闀滃儚鏋勫缓
-鍙互閫氳繃浠ヤ笅鍛戒护蹇�熸瀯寤鸿皟搴︿腑蹇冿紝骞跺惎鍔ㄨ繍琛岋紱
-```
-mvn clean package
-docker build -t xuxueli/xxl-job-admin ./xxl-job-admin
-docker run --name xxl-job-admin -p 8080:8080 -d xuxueli/xxl-job-admin
-```
-
-### 5.20 閬垮厤浠诲姟閲嶅鎵ц
-璋冨害瀵嗛泦鎴栬�呰�楁椂浠诲姟鍙兘浼氬鑷翠换鍔¢樆濉烇紝闆嗙兢鎯呭喌涓嬭皟搴︾粍浠跺皬姒傜巼鎯呭喌涓嬩細閲嶅瑙﹀彂锛�
-閽堝涓婅堪鎯呭喌锛屽彲浠ラ�氳繃缁撳悎 "鍗曟満璺敱绛栫暐锛堝锛氱涓�鍙般�佷竴鑷存�у搱甯岋級" + "闃诲绛栫暐锛堝锛氬崟鏈轰覆琛屻�佷涪寮冨悗缁皟搴︼級" 鏉ヨ閬匡紝鏈�缁堥伩鍏嶄换鍔¢噸澶嶆墽琛屻��
-
-### 5.21 鍛戒护琛屼换鍔�
-鍘熺敓鎻愪緵閫氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
-濡備换鍔″弬鏁� "pwd" 灏嗕細鎵ц鍛戒护骞惰緭鍑烘暟鎹紱
-
-### 5.22 鏃ュ織鑷姩娓呯悊
-XXL-JOB鏃ュ織涓昏鍖呭惈濡備笅涓ら儴鍒嗭紝鍧囨敮鎸佹棩蹇楄嚜鍔ㄦ竻鐞嗭紝璇存槑濡備笅锛�
-- 璋冨害涓績鏃ュ織琛ㄦ暟鎹細鍙�熷姪閰嶇疆椤� "xxl.job.logretentiondays" 璁剧疆鏃ュ織琛ㄦ暟鎹繚瀛樺ぉ鏁帮紝杩囨湡鏃ュ織鑷姩娓呯悊锛涜鎯呭彲鏌ョ湅涓婃枃閰嶇疆璇存槑锛�
-- 鎵ц鍣ㄦ棩蹇楁枃浠舵暟鎹細鍙�熷姪閰嶇疆椤� "xxl.job.executor.logretentiondays" 璁剧疆鏃ュ織鏂囦欢鏁版嵁淇濆瓨澶╂暟锛岃繃鏈熸棩蹇楄嚜鍔ㄦ竻鐞嗭紱璇︽儏鍙煡鐪嬩笂鏂囬厤缃鏄庯紱
-
-
-## 鍏�佺増鏈洿鏂版棩蹇�
-### 6.1 鐗堟湰 V1.1.x锛屾柊鐗规�2015-12-05]
-**銆愪簬V1.1.x鐗堟湰锛孹XL-JOB姝e紡搴旂敤浜庢垜鍙革紝鍐呴儴瀹氬埗鍒悕涓� 鈥淔errari鈥濓紝鏂版帴鍏ュ簲鐢ㄦ帹鑽愪娇鐢ㄦ渶鏂扮増鏈��**
-- 1銆佺畝鍗曪細鏀寔閫氳繃Web椤甸潰瀵逛换鍔¤繘琛孋RUD鎿嶄綔锛屾搷浣滅畝鍗曪紝涓�鍒嗛挓涓婃墜锛�
-- 2銆佸姩鎬侊細鏀寔鍔ㄦ�佷慨鏀逛换鍔$姸鎬侊紝鍔ㄦ�佹殏鍋�/鎭㈠浠诲姟锛屽嵆鏃剁敓鏁堬紱
-- 3銆佹湇鍔A锛氫换鍔′俊鎭寔涔呭寲鍒癿ysql涓紝Job鏈嶅姟澶╃劧鏀寔闆嗙兢锛屼繚璇佹湇鍔A锛�
-- 4銆佷换鍔A锛氭煇鍙癑ob鏈嶅姟鎸傛帀锛屼换鍔′細骞虫粦鍒嗛厤缁欏叾浠栫殑鏌愪竴鍙板瓨娲绘湇鍔★紝鍗充娇鎵�鏈夋湇鍔℃寕鎺夛紝閲嶅惎鏃舵垨琛ュ伩鎵ц涓㈠け浠诲姟锛�
-- 5銆佷竴涓换鍔″彧浼氬湪鍏朵腑涓�鍙版湇鍔″櫒涓婃墽琛岋紱
-- 6銆佷换鍔′覆琛屾墽琛岋紱
-- 7銆佹敮鎸佽嚜瀹氫箟鍙傛暟锛�
-- 8銆佹敮鎸佽繙绋嬩换鍔℃墽琛岀粓姝紱
-
-### 6.2 鐗堟湰 V1.2.x锛屾柊鐗规�2016-01-17]
-- 1銆佹敮鎸佷换鍔″垎缁勶紱
-- 2銆佹敮鎸佲�滄湰鍦颁换鍔♀�濄�佲�滆繙绋嬩换鍔♀�濓紱
-- 3銆佸簳灞傞�氳鏀寔涓ょ鏂瑰紡锛孲ervlet鏂瑰紡 + JETTY鏂瑰紡锛�
-- 4銆佹敮鎸佲�滀换鍔℃棩蹇椻�濓紱
-- 5銆佹敮鎸佲�滀覆琛屾墽琛屸�濓紝骞惰鎵ц锛�
-
- 璇存槑锛歏1.2鐗堟湰灏嗙郴缁熸灦鏋勬寜鍔熻兘鎷嗗垎涓猴細
-
- - 璋冨害妯″潡锛堣皟搴︿腑蹇冿級锛氳礋璐g鐞嗚皟搴︿俊鎭紝鎸夌収璋冨害閰嶇疆鍙戝嚭璋冨害璇锋眰锛�
- - 鎵ц妯″潡锛堟墽琛屽櫒锛夛細璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫锛�
- - 閫氳妯″潡锛氳礋璐h皟搴︽ā鍧楀拰浠诲姟妯″潡涔嬮棿鐨勪俊鎭�氳锛�
- 浼樼偣锛�
-
- - 瑙h�︼細浠诲姟妯″潡鎻愪緵浠诲姟鎺ュ彛锛岃皟搴︽ā鍧楃淮鎶よ皟搴︿俊鎭紝涓氬姟鐩镐簰鐙珛锛�
- - 楂樻墿灞曟�э紱
- - 绋冲畾鎬э紱
-
-### 6.3 鐗堟湰 V1.3.0锛屾柊鐗规�2016-05-19]
-- 1銆侀仐寮冣�滄湰鍦颁换鍔♀�濇ā寮忥紝鎺ㄨ崘浣跨敤鈥滆繙绋嬩换鍔♀�濓紝鏄撲簬绯荤粺瑙h�︼紝浠诲姟瀵瑰簲鐨凧obHandler缁熺О涓衡�滄墽琛屽櫒鈥濓紱
-- 2銆侀仐寮冣�渟ervlet鈥濇柟寮忓簳灞傜郴缁熼�氳锛屾帹鑽愪娇鐢↗ETTY鏂瑰紡锛岃皟搴�+鍥炶皟鍙屽悜閫氳锛岄噸鏋勯�氳閫昏緫锛�
-- 3銆乁I浜や簰浼樺寲锛氬乏渚ц彍鍗曞睍寮�鐘舵�佷紭鍖栵紝鑿滃崟椤归�変腑鐘舵�佷紭鍖栵紝浠诲姟鍒楄〃鎵撳紑琛ㄦ牸鏈夊帇缂╀紭鍖栵紱
-- 4銆併�愰噸瑕併�戔�滄墽琛屽櫒鈥濈粏鍒嗕负锛欱EAN銆丟LUE涓ょ寮�鍙戞ā寮忥紝绠�浠嬭涓嬫枃锛�
-
- 鈥滄墽琛屽櫒鈥� 妯″紡绠�浠嬶細
- - BEAN妯″紡鎵ц鍣細姣忎釜鎵ц鍣ㄩ兘鏄疭pring鐨勪竴涓狟ean瀹炰緥锛孹XL-JOB閫氳繃娉ㄨВ@JobHandler璇嗗埆鍜岃皟搴︽墽琛屽櫒锛�
- -GLUE妯″紡鎵ц鍣細姣忎釜鎵ц鍣ㄥ搴斾竴娈典唬鐮侊紝鍦ㄧ嚎Web缂栬緫鍜岀淮鎶わ紝鍔ㄦ�佺紪璇戠敓鏁堬紝鎵ц鍣ㄨ礋璐e姞杞紾LUE浠g爜鍜屾墽琛岋紱
-
-### 6.4 鐗堟湰 V1.3.1锛屾柊鐗规�2016-05-23]
-- 1銆佹洿鏂伴」鐩洰褰曠粨鏋勶細
- - /xxl-job-admin -------------------- 銆愯皟搴︿腑蹇冦�戯細璐熻矗绠$悊璋冨害淇℃伅锛屾寜鐓ц皟搴﹂厤缃彂鍑鸿皟搴﹁姹傦紱
- - /xxl-job-core ----------------------- 鍏叡渚濊禆
- - /xxl-job-executor-example ------ 銆愭墽琛屽櫒銆戯細璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫锛�
- - /db ---------------------------------- 寤鸿〃鑴氭湰
- - /doc --------------------------------- 鐢ㄦ埛鎵嬪唽
-- 2銆佸湪鏂扮殑鐩綍缁撴瀯涓婏紝鍗囩骇浜嗙敤鎴锋墜鍐岋紱
-- 3銆佷紭鍖栦簡涓�浜涗氦浜掑拰UI锛�
-
-### 6.5 鐗堟湰 V1.3.2锛屾柊鐗规�2016-05-28]
-- 1銆佽皟搴﹂�昏緫杩涜浜嬪姟鍖呰9锛�
-- 2銆佹墽琛屽櫒寮傛鍥炶皟鎵ц鏃ュ織锛�
-- 3銆併�愰噸瑕併�戝湪 鈥滆皟搴︿腑蹇冣�� 鏀寔HA鐨勫熀纭�涓婏紝鎵╁睍鎵ц鍣ㄧ殑Failover鏀寔锛屾敮鎸侀厤缃鎵ц鏈熷湴鍧�锛�
-
-### 6.6 鐗堟湰 V1.4.0 鏂扮壒鎬2016-07-24]
-- 1銆佷换鍔′緷璧�: 閫氳繃浜嬩欢瑙﹀彂鏂瑰紡瀹炵幇, 浠诲姟鎵ц鎴愬姛骞跺洖璋冩椂浼氫富鍔ㄨЕ鍙戜竴娆″瓙浠诲姟鐨勮皟搴�, 澶氫釜瀛愪换鍔$敤閫楀彿鍒嗛殧;
-- 2銆佹墽琛屽櫒搴曞眰瀹炵幇浠g爜杩涜閲嶅害閲嶆瀯, 浼樺寲搴曞眰寤鸿〃鑴氭湰;
-- 3銆佹墽琛屽櫒涓换鍔$嚎绋嬪垎缁勯�昏緫浼樺寲: 涔嬪墠鏍规嵁鎵ц鍣↗obHandler杩涜绾跨▼鍒嗙粍,褰撳涓换鍔″鐢↗obhanlder浼氬鑷寸浉浜掗樆濉炪�傜幇鏀逛负鏍规嵁璋冨害涓績浠诲姟杩涜浠诲姟绾跨▼鍒嗙粍,浠诲姟涓庝换鍔℃墽琛岀浉浜掗殧绂�;
-- 4銆佹墽琛屽櫒璋冨害閫氳鏂规浼樺寲, 閫氳繃Hex + HC瀹炵幇寤鸿RPC閫氳鍗忚, 浼樺寲浜嗛�氳鍙傛暟鐨勭淮鎶ゅ拰瑙f瀽娴佺▼;
-- 5銆佽皟搴︿腑蹇�, 鏂板缓/缂栬緫浠诲姟, 鐣岄潰灞炴�ц皟鏁�:
- - 5.1銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "浠诲姟鍚岼obName"灞炴�� ,璇ュ睘鎬ф敼涓虹郴缁熻嚜鍔ㄧ敓鎴�: 璇ュ瓧娈典箣鍓嶄富瑕佺敤浜庡湪 "璋冨害涓績" 鍞竴鏍囩ず涓�涓换鍔�, 鐜板疄鎰忎箟涓嶅ぇ, 鍥犳璁″垝娣″寲鎺夎瀛楁,鏀逛负绯荤粺鐢熸垚UUID,浠庤�岀畝鍖栦换鍔℃柊寤虹殑鎿嶄綔;
- - 5.2銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "GLUE妯″紡" 澶嶉�夋浣嶇疆璋冩暣, 鏀逛负璐磋繎"JobHandler"杈撳叆妗嗗彸渚�;
- - 5.3銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "鎶ヨ闃堝��" 灞炴��;
- - 5.4銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "瀛愪换鍔ey" 灞炴��, 姣忎釜浠诲姟鍏ㄥ眬浠诲姟Key鍙互浠庝换鍔″垪琛ㄨ幏鍙�, 褰撴湰浠诲姟鎵ц缁撴潫涓旀垚鍔熷悗, 灏嗕細鏍规嵁瀛愪换鍔ey鍖归厤瀛愪换鍔″苟涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鎵ц;
-- 6銆侀棶棰樹慨澶�:
- - 6.1銆佹墽琛屽櫒jetty鍏抽棴浼樺寲,瑙e喅涓�澶勫彲鑳藉鑷磈etty鏃犳硶鍏抽棴鐨勯棶棰�;
- - 6.2銆佹墽琛屽櫒浠诲姟缁堟鏃�,鎵ц闃熷垪鍥炶皟浼樺寲,瑙e喅涓�澶勫鑷翠换鍔℃棤娉曞洖璋冪殑闂锛�
- - 6.3銆佽皟搴︿腑蹇冧腑鍒楄〃鍒嗛〉鍙傛暟浼樺寲,瑙e喅涓�澶勫洜鏈嶅姟鍣ㄩ檺鍒秔ost闀垮害鑰屽紩璧风殑闂;
- - 6.4銆佹墽琛屽櫒Jobhandler娉ㄨВ浼樺寲,瑙e喅涓�澶勫洜浜嬪姟浠g悊瀵艰嚧鐨勫鍣ㄦ棤娉曞姞杞絁obHandler鐨勯棶棰�;
- - 6.5銆佽繙绋嬭皟搴︿紭鍖�,绂佺敤retry绛栫暐,瑙e喅涓�澶勫彲鑳藉鑷撮噸澶嶈皟鐢ㄧ殑闂;
-
-Tips: 鍘嗗彶鐗堟湰(V1.3.x)鐩墠宸茬粡Release鑷崇ǔ瀹氱増鏈�, 杩涘叆缁存姢闃舵, 鍦板潃瑙佸垎鏀� [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 銆傛柊鐗规�у皢浼氬湪master鍒嗘敮鎸佺画鏇存柊銆�
-
-### 6.7 鐗堟湰 V1.4.1 鏂扮壒鎬2016-09-06]
-- 1銆侀」鐩垚鍔熸帹閫乵aven涓ぎ浠撳簱, 涓ぎ浠撳簱鍦板潃浠ュ強渚濊禆濡備笅:
- ```
- <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
- <dependency>
- <groupId>com.xuxueli</groupId>
- <artifactId>xxl-job-core</artifactId>
- <version>${鏈�鏂扮ǔ瀹氱増}</version>
- </dependency>
- ```
-- 2銆佷负閫傞厤涓ぎ浠撳簱瑙勫垯, 椤圭洰groupId浠巆om.xxl鏀逛负com.xuxueli銆�
-- 3銆佺郴缁熺増鏈笉鍦ㄧ淮鎶ゅ湪椤圭洰璺焢om涓�,鍚勪釜瀛愭ā鍧楀崟鐙厤缃増鏈厤缃�,瑙e喅瀛愭ā鍧楁棤娉曞崟鐙紪璇戠殑闂;
-- 4銆佸簳灞俁PC閫氳,浼犺緭鏁版嵁鐨勫瓧鑺傞暱搴︾粺璁¤鍒欎紭鍖�,鍙妭鐪�50%鏁版嵁浼犺緭閲�;
-- 5銆両JobHandler鍙栨秷浠诲姟杩斿洖鍊�,鍘熼�氳繃杩斿洖鍊煎垽鏂墽琛岀姸鎬�,閫昏緫鏀逛负:榛樿浠诲姟鎵ц鎴愬姛,浠呭湪鎹曡幏寮傚父鏃惰瀹氫换鍔℃墽琛屽け璐ャ��
-- 6銆佺郴缁熷叕鍏卞脊妗嗗姛鑳�,鎻掍欢鍖�;
-- 7銆佸簳灞傝〃缁撴瀯,琛ㄦ槑缁熶竴澶у啓;
-- 8銆佽皟搴︿腑蹇�,寮傚父澶勭悊鍣↗SON鍝嶅簲鐨凜ontentType淇敼,淇娴忚鍣ㄤ笉璇嗗埆鐨勯棶棰�;
-
-### 6.8 鐗堟湰 V1.4.2 鏂扮壒鎬2016-09-29]
-- 1銆佹帹閫佹柊鐗堟湰 V1.4.2 鑷充腑澶粨搴�, 澶х増鏈� V1.4 杩涘叆缁存姢闃舵;
-- 2銆佷换鍔℃柊澧炴椂,浠诲姟鍒楄〃鍋忕Щ闂淇;
-- 3銆佷慨澶嶄竴澶勫洜bootstrap涓嶆敮鎸佹ā鎬佹閲嶅彔鑰屽鑷寸殑鏍峰紡閿欎贡鐨勯棶棰�, 鍦ㄤ换鍔$紪杈戞椂浼氬嚭鐜拌闂;
-- 4銆佽皟搴﹁秴鏃跺拰Handler鍖归厤涓嶅埌鏃�,璋冨害鐘舵�佷紭鍖�;
-- 5銆佸洜catch寮傚父,瀵艰嚧浠诲姟涓嶅彲缁堟鐨勯棶棰�,缁欏嚭瑙e喅鏂规, 瑙佹枃妗�;
-
-### 6.9 鐗堟湰 V1.5.0 鐗规�2016-11-13]
-- 1銆佷换鍔℃敞鍐�: 鎵ц鍣ㄤ細鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐屼换鍔�, 璋冨害涓績灏嗕細鑷姩鍙戠幇娉ㄥ唽鐨勪换鍔″苟瑙﹀彂鎵ц銆�
-- 2銆�"鎵ц鍣�" 鏂板鍙傛暟 "AppName" : 鏄瘡涓墽琛屽櫒闆嗙兢鐨勫敮涓�鏍囩ずAppName, 骞跺懆鏈熸�т互AppName涓哄璞¤繘琛岃嚜鍔ㄦ敞鍐屻��
-- 3銆佽皟搴︿腑蹇冩柊澧炴爮鐩� "鎵ц鍣ㄧ鐞�" : 绠$悊鍦ㄧ嚎鐨勬墽琛屽櫒, 閫氳繃灞炴�ppName鑷姩鍙戠幇娉ㄥ唽鐨勬墽琛屽櫒銆傚彧鏈夎绠$悊鐨勬墽琛屽櫒鎵嶅厑璁歌浣跨敤;
-- 4銆�"浠诲姟缁�"灞炴�ф敼涓�"鎵ц鍣�": 姣忎釜浠诲姟闇�瑕佺粦瀹氭寚瀹氱殑鎵ц鍣�, 璋冨害鍦板潃閫氳繃缁戝畾鐨勬墽琛屽櫒鑾峰彇;
-- 5銆佹姏寮�"浠诲姟鏈哄櫒"灞炴��: 閫氳繃浠诲姟缁戝畾鐨勬墽琛屽櫒, 鑷姩鍙戠幇娉ㄥ唽鐨勮繙绋嬫墽琛屽櫒鍦板潃骞惰Е鍙戣皟搴﹁姹傘��
-- 6銆�"鍏叡渚濊禆"涓柊澧濪BGlueLoader,鍩轰簬鍘熺敓jdbc瀹炵幇GLUE婧愮爜鐨勫姞杞藉櫒,鍑忓皯绗笁鏂逛緷璧�(mybatis,spring-orm绛�);绮剧畝鍜屼紭鍖栨墽琛屽櫒娴嬮厤缃�(閽堝GLUE浠诲姟),闄嶄綆涓婃墜闅惧害;
-- 7銆佽〃缁撴瀯璋冩暣,搴曞眰閲嶆瀯浼樺寲;
-- 8銆�"璋冨害涓績"鑷姩娉ㄥ唽鍜屽彂鐜�,failover: 璋冨害涓績鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐�, 浠诲姟鍥炶皟鏃跺彲浠ユ劅鐭ュ湪绾跨殑鎵�鏈夎皟搴︿腑蹇冨湴鍧�, 閫氳繃failover鐨勬柟寮忚繘琛屼换鍔″洖璋�,閬垮厤鍥炶皟鍗曠偣椋庨櫓銆�
-
-### 6.10 鐗堟湰 V1.5.1 鐗规�2016-11-13]
-- 1銆佸簳灞備唬鐮侀噸鏋勫拰閫昏緫浼樺寲锛孭OM娓呯悊浠ュ強CleanCode锛�
-- 2銆丼ervlet/JSP Spec璁惧畾涓�3.0/2.2
-- 3銆丼pring鍗囩骇鑷�3.2.17.RELEASE鐗堟湰锛�
-- 4銆丣etty鍗囩骇鐗堟湰鑷�8.2.0.v20160908锛�
-- 5銆佸凡鎺ㄩ�乂1.5.0鍜孷1.5.1鑷矼aven涓ぎ浠撳簱锛�
-
-### 6.10 鐗堟湰 V1.5.2 鐗规�2017-02-28]
-- 1銆両P宸ュ叿绫昏幏鍙朓P閫昏緫浼樺寲锛孖P闈欐�佺紦瀛橈紱
-- 2銆佹墽琛屽櫒銆佽皟搴︿腑蹇冿紝鍧囨敮鎸佽嚜瀹氫箟娉ㄥ唽IP鍦板潃锛涜В鍐虫満鍣ㄥ缃戝崱鏃堕敊璇綉鍗℃敞鍐岀殑鎯呭喌锛�
-- 3銆佷换鍔¤法澶╂墽琛屾椂鐢熸垚澶氫唤鏃ュ織鏂囦欢鐨勯棶棰樹慨澶嶏紱
-- 4銆佸簳灞傛棩蹇楀簳灞傛棩蹇楄皟鏁达紝闈炴晱鎰熸棩蹇條evel璋冩暣涓篸ebug锛�
-- 5銆佸崌绾ф暟鎹簱杩炴帴姹燾3p0鐗堟湰锛�
-- 6銆佹墽琛屽櫒log4j閰嶇疆浼樺寲锛屽幓闄ゆ棤鏁堝睘鎬э紱
-- 7銆佸簳灞備唬鐮侀噸鏋勫拰閫昏緫浼樺寲浠ュ強CleanCode锛�
-- 8銆丟LUE渚濊禆娉ㄥ叆閫昏緫浼樺寲锛屾敮鎸佸埆鍚嶆敞鍏ワ紱
-
-### 6.11 鐗堟湰 V1.6.0 鐗规�2017-03-13]
-- 1銆侀�氳鏂规鍗囩骇锛屽師鍩轰簬HEX鐨勯�氳妯″瀷璋冩暣涓哄熀浜嶩TTP鐨凚-RPC鐨勯�氳妯″瀷锛�
-- 2銆佹墽琛屽櫒鏀寔鎵嬪姩璁剧疆鎵ц鍦板潃鍒楄〃锛屾彁渚涘紑鍏冲垏鎹娇鐢ㄦ敞鍐屽湴鍧�杩樻槸鎵嬪姩璁剧疆鐨勫湴鍧�锛�
-- 3銆佹墽琛屽櫒璺敱瑙勫垯锛氱涓�涓�佹渶鍚庝竴涓�佽疆璇€�侀殢鏈恒�佷竴鑷存�ASH銆佹渶涓嶇粡甯镐娇鐢ㄣ�佹渶杩戞渶涔呮湭浣跨敤銆佹晠闅滆浆绉伙紱
-- 4銆佽鑼冪嚎绋嬫ā鍨嬬粺涓�锛岀粺涓�绾跨▼閿�姣佹柟妗�(閫氳繃listener鎴杝top鏂规硶锛屽鍣ㄩ攢姣佹椂閿�姣佺嚎绋嬶紱Daemon鏂瑰紡鏈夋椂涓嶅お鐞嗘兂)锛�
-- 5銆佽鑼冪郴缁熼厤缃暟鎹紝閫氳繃閰嶇疆鏂囦欢缁熶竴绠$悊锛�
-- 6銆丆leanCode锛屾竻鐞嗘棤鏁堢殑鍘嗗彶鍙傛暟锛�
-- 7銆佸簳灞傛墿灞曟暟鎹粨鏋勪互鍙婄浉鍏宠〃缁撴瀯璋冩暣锛�
-- 8銆佹柊寤轰换鍔¢粯璁や负闈炶繍琛岀姸鎬侊紱
-- 9銆丟LUE妯″紡浠诲姟瀹炰緥鏇存柊閫昏緫浼樺寲锛屽師鏍规嵁瓒呮椂鏃堕棿鏇存柊鏀逛负鏍规嵁鐗堟湰鍙锋洿鏂帮紝婧愮爜鍙樺姩鐗堟湰鍙峰姞涓�锛�
-
-### 6.12 鐗堟湰 V1.6.1 鐗规�2017-03-25]
-- 1銆丷olling鏃ュ織锛�
-- 2銆乄ebIDE浜や簰閲嶆瀯锛�
-- 3銆侀�氳澧炲己鏍¢獙锛屾湁鏁堣繃婊ら潪姝e父璇锋眰锛�
-- 4銆佹潈闄愬寮烘牎楠岋紝閲囩敤鍔ㄦ�佺櫥褰昑OKEN锛堟帹鑽愭帴鍏ュ唴閮⊿SO锛夛紱
-- 5銆佹暟鎹簱閰嶇疆浼樺寲锛岃В鍐充贡鐮侀棶棰橈紱
-
-### 6.13 鐗堟湰 V1.6.2 鐗规�2017-04-25]
-- 1銆佽繍琛屾姤琛細鏀寔瀹炴椂鏌ョ湅杩愯鏁版嵁锛屽浠诲姟鏁伴噺銆佽皟搴︽鏁般�佹墽琛屽櫒鏁伴噺绛夛紱浠ュ強璋冨害鎶ヨ〃锛屽璋冨害鏃ユ湡鍒嗗竷鍥撅紝璋冨害鎴愬姛鍒嗗竷鍥剧瓑锛�
-- 2銆丣obHandler鏀寔璁剧疆浠诲姟杩斿洖鍊硷紝鍦ㄤ换鍔¢�昏緫涓彲浠ユ柟渚跨殑鎺у埗浠诲姟鎵ц缁撴灉锛�
-- 3銆佽祫婧愯矾寰勫寘鍚┖鏍兼垨涓枃鏃惰祫婧愭枃浠舵棤娉曞姞杞芥椂锛屾棤娉曞噯纭煡鐪嬪紓甯镐俊鎭殑闂澶勭悊銆�
-- 4銆佽矾鐢辩瓥瓒婁紭鍖栵細寰幆鍜孡FU璺敱绛栫暐璁℃暟鍣ㄨ嚜澧炴棤涓婇檺闂鍜岄娆¤矾鐢卞帇鍔涢泦涓湪棣栧彴鏈哄櫒鐨勯棶棰樹慨澶嶏紱
-
-### 6.14 鐗堟湰 V1.7.0 鐗规�2017-05-02]
-- 1銆佽剼鏈换鍔★細鏀寔浠LUE妯″紡寮�鍙戝拰杩愯鑴氭湰浠诲姟锛屽寘鎷琒hell銆丳ython鍜孏roovy绛夌被鍨嬭剼鏈�;
-- 2銆佹柊澧瀞pring-boot绫诲瀷鎵ц鍣╡xample椤圭洰锛�
-- 3銆佸崌绾etty鐗堟湰鑷�9.2锛�
-- 4銆佷换鍔¤繍琛屾棩蹇楃Щ闄og4j缁勪欢渚濊禆锛屾敼涓哄簳灞傝嚜涓诲疄鐜帮紝浠庤�屽彇娑堜簡瀵规棩蹇楃粍浠剁殑渚濊禆闄愬埗锛�
-- 5銆佹墽琛屽櫒绉婚櫎GlueLoader渚濊禆锛屾敼涓烘帹閫佹柟寮忓疄鐜帮紝浠庤�孏LUE婧愮爜鍔犺浇涓嶅啀渚濊禆JDBC锛�
-- 6銆佺櫥褰曟嫤鎴猂edirect鏃惰幏鍙栭」鐩悕锛岃В鍐抽潪鏍规嵁鐩綍鍙戝竷鏃惰烦杞�404闂锛�
-
-### 6.15 鐗堟湰 V1.7.1 鐗规�2017-05-08]
-- 1銆佽繍琛屾棩蹇楄鍐欑紪鐮佺粺涓�涓篣TF-8锛岃В鍐硍indows鐜涓嬫棩蹇椾贡鐮侀棶棰橈紱
-- 2銆侀�氳瓒呮椂鏃堕棿闄愬畾涓�10s锛岄伩鍏嶅紓甯告儏鍐典笅璋冨害绾跨▼鍗犵敤锛�
-- 3銆佹墽琛屽櫒锛宻erver鍚姩銆侀攢姣佸拰娉ㄥ唽閫昏緫璋冩暣锛�
-- 4銆丣ettyServer鍏抽棴閫昏緫浼樺寲锛屼慨澶嶆墽琛屽櫒鏃犳硶姝e父鍏抽棴瀵艰嚧绔彛鍗犵敤鍜岄绻佹墦鍗癱3p0鏃ュ織鐨勯棶棰橈紱
-- 5銆丣obHandler涓紑鍚瓙绾跨▼鏃讹紝鏀寔瀛愮嚎绋嬭緭鍑烘墽琛屾棩蹇楀苟閫氳繃Rolling鏌ョ湅銆�
-- 6銆佷换鍔℃棩蹇楁竻鐞嗗姛鑳斤紱
-- 7銆佸脊妗嗙粍浠剁粺涓�鏇挎崲涓簂ayer锛�
-- 8銆佸崌绾uartz鐗堟湰鑷�2.3.0锛�
-
-### 6.16 鐗堟湰 V1.7.2 鐗规�2017-05-17]
-- 1銆侀樆濉炲鐞嗙瓥鐣ワ細璋冨害杩囦簬瀵嗛泦鎵ц鍣ㄦ潵涓嶅強澶勭悊鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細鍗曟満涓茶锛堥粯璁わ級銆佷涪寮冨悗缁皟搴︺�佽鐩栦箣鍓嶈皟搴︼紱
-- 2銆佸け璐ュ鐞嗙瓥鐣ワ紱璋冨害澶辫触鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細澶辫触鍛婅锛堥粯璁わ級銆佸け璐ラ噸璇曪紱
-- 3銆侀�氳鏃堕棿鎴宠秴鏃舵椂闂磋皟鏁翠负180s锛�
-- 4銆佹墽琛屽櫒涓庢暟鎹簱褰诲簳瑙h�︼紝浣嗘槸鎵ц鍣ㄩ渶瑕侀厤缃皟搴︿腑蹇冮泦缇ゅ湴鍧�銆傝皟搴︿腑蹇冩彁渚汚PI渚涙墽琛屽櫒鍥炶皟鍜屽績璺虫敞鍐屾湇鍔★紝鍙栨秷璋冨害涓績鍐呴儴jetty锛屽績璺冲懆鏈熻皟鏁翠负30s锛屽績璺冲け鏁堜负涓夊�嶅績璺筹紱
-- 5銆佹墽琛屽弬鏁扮紪杈戞椂涓㈠け闂淇锛�
-- 6銆佹柊澧炰换鍔℃祴璇旸emo锛屾柟渚垮湪寮�鍙戞椂杩涜浠诲姟閫昏緫娴嬭瘯锛�
-
-### 6.17 鐗堟湰 V1.8.0 鐗规�2017-07-17]
-- 1銆佷换鍔ron鏇存柊閫昏緫浼樺寲锛屾敼涓簉escheduleJob锛屽悓鏃堕槻姝ron閲嶅璁剧疆锛�
-- 2銆丄PI鍥炶皟鏈嶅姟澶辫触鐘舵�佺爜浼樺寲锛屾柟渚块棶棰樻帓鏌ワ紱
-- 3銆乆xlJobLogger鐨勬棩蹇楀鍙傛暟鏀寔锛�
-- 4銆佽矾鐢辩瓥鐣ユ柊澧� "蹇欑杞Щ" 妯″紡锛氭寜鐓ч『搴忎緷娆¤繘琛岀┖闂叉娴嬶紝绗竴涓┖闂叉娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
-- 5銆佽矾鐢辩瓥鐣ヤ唬鐮侀噸鏋勶紱
-- 6銆佹墽琛屽櫒閲嶅娉ㄥ唽闂淇锛�
-- 7銆佷换鍔$嚎绋嬭疆绌�30娆″悗鑷姩閿�姣侊紝闄嶄綆浣庨浠诲姟鐨勬棤鏁堢嚎绋嬫秷鑰椼��
-- 8銆佹墽琛屽櫒浠诲姟鎵ц缁撴灉鎵归噺鍥炶皟锛岄檷浣庡洖璋冮鐜囨彁鍗囨墽琛屽櫒鎬ц兘锛�
-- 9銆乻pringboot鐗堟湰鎵ц鍣紝鍙栨秷XML閰嶇疆锛屾敼涓虹被閰嶇疆鏂瑰紡锛�
-- 10銆佹墽琛屾棩蹇楋紝鏀寔鏍规嵁杩愯 "鐘舵��" 绛涢�夋棩蹇楋紱
-- 11銆佽皟搴︿腑蹇冧换鍔℃敞鍐屾娴嬮�昏緫浼樺寲锛�
-
-### 6.18 鐗堟湰 V1.8.1 鐗规�2017-07-30]
-- 1銆佸垎鐗囧箍鎾换鍔★細鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戦泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍙牴鎹垎鐗囧弬鏁板鐞嗗垎鐗囦换鍔★紱
-- 2銆佸姩鎬佸垎鐗囷細鍒嗙墖骞挎挱浠诲姟浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
-- 3銆佹墽琛屽櫒JobHandler绂佹鍛藉悕鍐茬獊锛�
-- 4銆佹墽琛屽櫒闆嗙兢鍦板潃鍒楄〃杩涜鑷劧鎺掑簭锛�
-- 5銆佽皟搴︿腑蹇冿紝DAO灞備唬鐮佺簿绠�浼樺寲骞朵笖鏂板娴嬭瘯鐢ㄤ緥瑕嗙洊锛�
-- 6銆佽皟搴︿腑蹇傾PI鏈嶅姟鏀逛负鑷爺RPC褰㈠紡锛岀粺涓�搴曞眰閫氳妯″瀷锛�
-- 7銆佹柊澧炶皟搴︿腑蹇傾PI鏈嶅姟娴嬭瘯Demo锛屾柟渚垮湪璋冨害涓績API鎵╁睍鍜屾祴璇曪紱
-- 8銆佷换鍔″垪琛ㄩ〉浜や簰浼樺寲锛屾洿鎹㈡墽琛屽櫒鍒嗙粍鏃惰嚜鍔ㄥ埛鏂颁换鍔″垪琛紝鏂板缓浠诲姟鏃堕粯璁ゅ畾浣嶅湪褰撳墠鎵ц鍣ㄤ綅缃紱
-- 9銆佽闂护鐗岋紙accessToken锛夛細涓烘彁鍗囩郴缁熷畨鍏ㄦ�э紝璋冨害涓績鍜屾墽琛屽櫒杩涜瀹夊叏鎬ф牎楠岋紝鍙屾柟AccessToken鍖归厤鎵嶅厑璁搁�氳锛�
-- 10銆乻pringboot鐗堟湰鎵ц鍣紝鍗囩骇鑷�1.5.6.RELEASE鐗堟湰锛�
-- 11銆佺粺涓�maven渚濊禆鐗堟湰绠$悊锛�
-
-### 6.19 鐗堟湰 V1.8.2 鐗规�2017-09-04]
-- 1銆侀」鐩富椤垫惌寤猴細鎻愪緵涓嫳鏂囨枃妗o細https://www.xuxueli.com/xxl-job
-- 2銆丣Final鎵ц鍣⊿ample绀轰緥椤圭洰锛�
-- 3銆佷簨浠惰Е鍙戯細闄や簡"Cron鏂瑰紡"鍜�"浠诲姟渚濊禆鏂瑰紡"瑙﹀彂浠诲姟鎵ц涔嬪锛屾敮鎸佸熀浜庝簨浠剁殑瑙﹀彂浠诲姟鏂瑰紡銆傝皟搴︿腑蹇冩彁渚涜Е鍙戜换鍔″崟娆℃墽琛岀殑API鏈嶅姟锛屽彲鏍规嵁涓氬姟浜嬩欢鐏垫椿瑙﹀彂銆�
-- 4銆佹墽琛屽櫒鎽橀櫎锛氭墽琛屽櫒閿�姣佹椂锛屼富鍔ㄩ�氱煡璋冨害涓績骞舵憳闄ゅ搴旀墽琛屽櫒鑺傜偣锛屾彁楂樻墽琛屽櫒鐘舵�佹劅鐭ョ殑鏃舵晥鎬с��
-- 5銆佹墽琛屽櫒鎵嬪姩璁剧疆IP鏃跺皢浼氱粦瀹欻ost锛�
-- 6銆佽鑼冮」鐩洰褰曪紝鏂逛究鎵╁睍澶氭墽琛屽櫒锛�
-- 7銆佽В鍐虫墽琛屽櫒鍥炶皟URL涓嶆敮鎸侀厤缃瓾TTPS鏃堕棶棰橈紱
-- 8銆佹墽琛屽櫒鍥炶皟绾跨▼閿�姣佸墠, 鎵归噺鍥炶皟闃熷垪涓暟鎹紝闃叉浠诲姟缁撴灉涓㈠け锛�
-- 9銆佽皟搴︿腑蹇冧换鍔$洃鎺х嚎绋嬮攢姣佹椂锛屾壒閲忓澶辫触浠诲姟鍛婅锛岄槻姝㈠憡璀︿俊鎭涪澶憋紱
-- 10銆佷换鍔℃棩蹇楁枃浠惰矾寰勬椂闂存埑鏍煎紡鍖栨椂SimpleDateFormat骞跺彂闂瑙e喅锛�
-
-### 6.20 鐗堟湰 V1.9.0 鐗规�2017-12-29]
-- 1銆佹柊澧濶utz鎵ц鍣⊿ample绀轰緥椤圭洰锛�
-- 2銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(NodeJS) "锛屾敮鎸丯odeJS鑴氭湰浠诲姟锛�
-- 3銆佽剼鏈换鍔hell銆丳ython鍜孨odejs绛夋敮鎸佽幏鍙栧垎鐗囧弬鏁帮紱
-- 4銆佸け璐ラ噸璇曪紝瀹屾暣鏀寔锛氳皟搴︿腑蹇冭皟搴﹀け璐ヤ笖鍚敤"澶辫触閲嶈瘯"绛栫暐鏃讹紝灏嗕細鑷姩閲嶈瘯涓�娆★紱鎵ц鍣ㄦ墽琛屽け璐ヤ笖鍥炶皟澶辫触閲嶈瘯鐘舵�侊紙鏂板澶辫触閲嶈瘯鐘舵�佽繑鍥炲�硷級鏃讹紝涔熷皢浼氳嚜鍔ㄩ噸璇曚竴娆★紱
-- 5銆佸け璐ュ憡璀︾瓥鐣ユ墿灞曪細榛樿鎻愪緵閭欢澶辫触鍛婅锛屽彲鎵╁睍鐭俊绛夛紝鎵╁睍浠g爜浣嶇疆涓� "JobFailMonitorHelper.failAlarm"锛�
-- 6銆佹墽琛屽櫒绔彛鏀寔鑷姩鐢熸垚(灏忎簬绛変簬0鏃�)锛岄伩鍏嶇鍙e畾涔夊啿绐侊紱
-- 7銆佽皟搴︽姤琛ㄤ紭鍖栵紝鏀寔鏃堕棿鍖洪棿绛涢�夛紱
-- 8銆丩og缁勪欢鏀寔杈撳嚭寮傚父鏍堜俊鎭紝搴曞眰瀹炵幇浼樺寲锛�
-- 9銆佸憡璀﹂偖浠舵牱寮忎紭鍖栵紝璋冩暣涓鸿〃鏍煎舰寮忥紝閭欢缁勪欢璋冩暣涓篶ommons-email绠�鍖栭偖浠舵搷浣滐紱
-- 10銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乯ackson绛夌瓑锛�
-- 11銆佷换鍔℃棩蹇楋紝璁板綍鍙戣捣璋冨害鐨勬満鍣ㄤ俊鎭紱
-- 12銆佷氦浜掍紭鍖栵紝濡傜櫥闄嗘敞閿�锛�
-- 13銆佷换鍔ron闀垮害鎵╁睍鏀寔鑷�128浣嶏紝鏀寔璐熻矗绫诲瀷Cron璁剧疆锛�
-- 14銆佹墽琛屽櫒鍦板潃褰曞叆浜や簰浼樺寲锛屽湴鍧�闀垮害鎵╁睍鏀寔鑷�512浣嶏紝鏀寔澶ц妯℃墽琛屽櫒闆嗙兢閰嶇疆锛�
-- 15銆佷换鍔″弬鏁扳�淚JobHandler.execute鈥濆叆鍙傛敼涓衡�淪tring params鈥濓紝澧炲己鍏ュ弬閫氱敤鎬с��
-- 16銆両JobHandler鎻愪緵init/destroy鏂规硶锛屾敮鎸佸湪鐩稿簲浠诲姟绾跨▼鍒濆鍖栧拰閿�姣佹椂杩涜闄勫姞鎿嶄綔锛�
-- 17銆佷换鍔℃敞瑙h皟鏁翠负 鈥淍JobHandler鈥濓紝涓庝换鍔℃娊璞℃帴鍙g粺涓�锛�
-- 18銆佷慨澶嶄换鍔$洃鎺х嚎绋嬭鑰楁椂浠诲姟闃诲鐨勯棶棰橈紱
-- 19銆佷慨澶嶄换鍔$洃鎺х嚎绋嬫棤娉曠洃鎺т换鍔¤Е鍙戝拰鎵ц鐘舵�佸潎鏈�0鐨勯棶棰橈紱
-- 20銆佹墽琛屽櫒鍔ㄦ�佷唬鐞嗗璞★紝鎷︽埅闈炰笟鍔℃柟娉曠殑鎵ц锛�
-- 21銆佷慨澶岼obThread鎹曡幏Error閿欒涓嶆洿鏂癑obLog鐨勯棶棰橈紱
-- 22銆佷慨澶嶄换鍔″垪琛ㄧ晫闈㈠乏渚ц彍鍗曞悎骞舵椂鏍峰紡閿欎贡闂锛�
-- 23銆佽皟搴︿腑蹇冮」鐩棩蹇楅厤缃敼涓簒ml鏂囦欢鏍煎紡锛�
-- 24銆丩og鍦板潃鏍煎紡鍏煎锛屾敮鎸侀潪"/"缁撳熬璺緞閰嶇疆锛�
-- 25銆佸簳灞傜郴缁熸棩蹇楃骇鍒鑼冭皟鏁达紝娓呯悊閬楃暀浠g爜锛�
-- 26銆佸缓琛⊿QL浼樺寲锛屾敮鎸佸悓姝ュ垱寤哄埗瀹氱紪鐮佺殑搴撳拰琛紱
-- 27銆佺郴缁熷畨鍏ㄦ�т紭鍖栵紝鐧婚檰Token鍐機ookie鏃惰繘琛孧D5鍔犲瘑锛屽悓鏃禖ookie鍚敤HttpOnly锛�
-- 28銆佹柊澧�"浠诲姟ID"灞炴�э紝绉婚櫎"JobKey"灞炴�э紝鍓嶈�呮壙鎷呮墍鏈夊姛鑳斤紝鏂逛究鍚庣画澧炲己浠诲姟渚濊禆鍔熻兘銆�
-- 29銆佷换鍔″惊鐜緷璧栭棶棰樹慨澶嶏紝閬垮厤瀛愪换鍔′笌鐖朵换鍔¢噸澶嶅鑷寸殑璋冨害姝诲惊鐜紱
-- 30銆佷换鍔″垪琛ㄦ柊澧炵瓫閫夋潯浠� "浠诲姟鎻忚堪"锛屽揩閫熸绱换鍔★紱
-- 31銆佹墽琛屽櫒Log鏂囦欢瀹氭湡娓呯悊鍔熻兘锛氭墽琛屽櫒鏂板閰嶇疆椤癸紙"xxl.job.executor.logretentiondays"锛夋棩蹇椾繚瀛樺ぉ鏁帮紝鏃ュ織鏂囦欢杩囨湡鑷姩鍒犻櫎銆�
-
-### 6.21 鐗堟湰 V1.9.1 鐗规�2018-02-22]
-- 1銆佸浗闄呭寲锛氳皟搴︿腑蹇冨疄鐜板浗闄呭寲锛屾敮鎸佷腑鏂囥�佽嫳鏂囦袱绉嶈瑷�锛岄粯璁や负涓枃銆�
-- 2銆佽皟搴︽姤琛ㄦ柊澧�"杩愯涓�"涓姸鎬侀」锛�
-- 3銆佽皟搴︽姤琛ㄤ紭鍖栵紝鎶ヨ〃SQL璋冧紭骞朵笖鏂板LocalCache缂撳瓨锛堢紦瀛樻椂闂�60s锛夛紝鎻愰珮澶ф暟鎹噺涓嬫姤琛ㄥ姞杞介�熷害锛�
-- 4銆佷慨澶嶆墦鍖呴儴缃叉椂璧勬簮鏂囦欢涔辩爜闂锛�
-- 5銆佷慨澶嶆柊鐗堟湰chrome婊氬姩鍒伴《閮ㄥけ鏁堥棶棰橈紱
-- 6銆佽皟搴︿腑蹇冮厤缃姞杞戒紭鍖栵紝鍙栨秷瀵归厤缃枃浠跺悕鐨勫己渚濊禆锛屾敮鎸佸姞杞界鐩橀厤缃紱
-- 7銆佷慨澶嶈剼鏈换鍔og鏂囦欢鏈甯竎lose鐨勯棶棰橈紱
-- 8銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乯ackson绛夌瓑锛�
-
-### 6.22 鐗堟湰 V1.9.2 鐗规�2018-10-05]
-- 1銆佷换鍔¤秴鏃舵帶鍒讹細鏂板浠诲姟灞炴�� "浠诲姟瓒呮椂鏃堕棿"锛屽苟鏀寔鑷畾涔夛紝浠诲姟杩愯瓒呮椂灏嗕細涓诲姩涓柇浠诲姟锛�
-- 2銆佷换鍔″け璐ラ噸璇曟鏁帮細鏂板浠诲姟灞炴�� "澶辫触閲嶈瘯娆℃暟"锛屽苟鏀寔鑷畾涔夛紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱鍚屾椂鏀舵暃搴熷純鍏朵粬澶辫触閲嶈瘯绛栫暐锛屽璋冨害澶辫触銆佹墽琛屽け璐ャ�佺姸鎬佺爜澶辫触绛夛紱
-- 3銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(PHP) "锛屾敮鎸乸hp鑴氭湰浠诲姟锛�
-- 4銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(PowerShell) "锛屾敮鎸丳owerShell鑴氭湰浠诲姟锛�
-- 5銆佽皟搴﹀叏寮傛澶勭悊锛氫换鍔¤Е鍙戜箣鍚庯紝鎺ㄩ�佸埌璋冨害闃熷垪锛屽绾跨▼骞跺彂澶勭悊璋冨害璇锋眰锛屾彁楂樹换鍔¤皟搴﹂�熺巼鐨勫悓鏃讹紝閬垮厤鍥犵綉缁滈棶棰樺鑷磓uartz璋冨害绾跨▼闃诲鐨勯棶棰橈紱
-- 6銆佹墽琛屽櫒浠诲姟缁撴灉钀界洏浼樺寲锛氭墽琛屽櫒鍥炶皟澶辫触鏃跺皢浠诲姟缁撴灉鍐欑鐩橈紝寰呴噸鍚垨缃戠粶鎭㈠鏃堕噸璇曞洖璋冧换鍔$粨鏋滐紝闃叉浠诲姟鎵ц缁撴灉涓㈠け锛�
-- 7銆佷换鍔℃棩蹇楁煡璇㈤�熷害澶у箙鎻愬崌锛氱櫨涓囩骇鍒暟鎹噺鎼滅储閫熷害鎻愬崌1000鍊嶏紱
-- 8銆佽皟搴︿腑蹇冩彁渚汚PI鏈嶅姟锛屾敮鎸侀�氳繃API鏈嶅姟瀵逛换鍔¤繘琛屾煡璇€�佹柊澧炪�佹洿鏂般�佸惎鍋滅瓑鎿嶄綔锛�
-- 9銆佸簳灞傝嚜鐮擫og缁勪欢鍙傛暟鍗犱綅绗︽敼涓�"{}"锛屽苟淇鎵撳嵃鏈夊弬鏃ュ織鏃跺弬鏁颁笉鍖归厤瀵艰嚧鎶ラ敊鐨勯棶棰橈紱
-- 10銆佷换鍔″洖璋冪粨鏋滀紭鍖栵紝鏀寔灞曠ず鍦≧olling log涓紝鏂逛究闂鎺掓煡锛�
-- 11銆佸簳灞侺ocalCache缁勪欢鍏煎鎬т紭鍖栵紝鏀寔jdk9銆乯dk10鍙婁互涓婄増鏈紪璇戦儴缃诧紱
-- 12銆佸憡璀﹂偖浠跺浐瀹氫娇鐢� UTF-8 缂栫爜鏍煎紡锛屼慨澶嶇敱鏈哄櫒缂栫爜瀵艰嚧鐨勯偖浠朵贡鐮侀棶棰橈紱
-- 13銆佸憡璀﹂偖浠朵腑灞曠ず澶辫触鍛婅淇℃伅锛�
-- 14銆佸憡璀﹂偖绠辨敮鎸丼SL閰嶇疆锛�
-- 15銆乄indow鏈哄櫒涓婩ile.separator涓嶅吋瀹归棶棰樹慨澶嶏紱
-- 16銆佽剼鏈换鍔″紓甯窵og杈撳嚭浼樺寲锛�
-- 17銆佷换鍔$嚎绋嬪仠姝㈠彉閲忎慨楗扮浼樺寲锛�
-- 18銆佽剼鏈换鍔og鏂囦欢娴佸叧闂紭鍖栵紱
-- 19銆佷换鍔℃姤琛ㄦ垚鍔熴�佸け璐ュ拰杩涜涓粺璁¢棶棰樹慨澶嶏紱
-- 20銆佹牳蹇冧緷璧朇ore鍐呴儴鍥介檯鍖栧鐞嗭紱
-- 21銆侀粯璁uartz绾跨▼鏁拌皟鏁翠负50锛�
-- 22銆佹柊澧炲乏渚ц彍鍗�"杩愯鎶ヨ〃"锛�
-- 23銆佹墽琛屽櫒鎵嬪姩璁剧疆IP鏃跺彇娑堢粦瀹欻ost鐨勬搷浣滐紝璇P浠呬緵鎵ц鍣ㄦ敞鍐屼娇鐢紱淇鎸囧畾澶栫綉IP鏃舵棤娉曠粦瀹氭墽琛屽櫒Host鐨勯棶棰橈紱
-- 24銆佸彇娑堢埗瀛愪换鍔′笉鍙噸澶嶇殑闄愬埗锛屾敮鎸佸惊鐜换鍔¤Е鍙戠瓑鐗规畩鍦烘櫙锛�
-- 25銆佷换鍔¤皟搴﹀娉ㄤ腑鏍囨敞浠诲姟瑙﹀彂绫诲瀷锛屽Cron瑙﹀彂銆佺埗浠诲姟瑙﹀彂銆丄PI瑙﹀彂绛夌瓑锛屾柟渚挎帓鏌ヨ皟搴︽棩蹇楋紱
-- 26銆佸簳灞傛棩蹇楃粍浠禨impleDateFormat绾跨▼瀹夊叏闂淇锛�
-- 27銆佹墽琛屽櫒閫氳绾跨▼浼樺寲锛宑orePoolSize浠�256闄嶄綆鑷�32锛�
-- 28銆佷换鍔℃棩蹇楄〃鐘舵�佸瓧娈电被鍨嬩紭鍖栵紱
-- 29銆丟LUE鑴氭湰鏂囦欢鑷姩娓呯悊鍔熻兘锛屽強鏃舵竻鐞嗚繃鏈熻剼鏈枃浠讹紱
-- 30銆佹墽琛屽櫒娉ㄥ唽鏂瑰紡鍒囨崲浼樺寲锛屽垏鎹㈣嚜鍔ㄦ敞鍐屾椂涓诲姩鍚屾鍦ㄧ嚎鏈哄櫒锛岄伩鍏嶆墽琛屽櫒涓虹┖鐨勯棶棰橈紱
-- 31銆佽法骞冲彴锛氶櫎浜嗘彁渚汮ava銆丳ython銆丳HP绛夊崄鏉ョ浠诲姟妯″紡涔嬪锛屾柊澧炴彁渚涘熀浜嶩TTP鐨勪换鍔℃ā寮忥紱
-- 32銆佸簳灞俁PC搴忓垪鍖栧崗璁皟鏁翠负hessian2锛�
-- 33銆佷慨澶嶈〃瀛楁 鈥渢.order鈥濅笌鏁版嵁搴撳叧閿瓧鍐茬獊鏌ヨ澶辫触鐨勯棶棰橈紝
-- 34銆佷换鍔″睘鎬ф灇涓� "浠诲姟妯″紡銆侀樆濉炵瓥鐣�" 鍥介檯鍖栦紭鍖栵紱
-- 35銆佸垎鐗囦换鍔″け璐ラ噸璇曚紭鍖栵紝浠呴噸璇曞綋鍓嶅け璐ョ殑鍒嗙墖锛�
-- 36銆佷换鍔¤Е鍙戞椂鏀寔鍔ㄦ�佷紶鍙傦紝璋冨害涓績涓嶢PI鏈嶅姟鍧囨彁渚涙彁渚涘姩鎬佸弬鏁板姛鑳斤紱
-- 37銆佷换鍔℃墽琛屾棩蹇椼�佽皟搴︽棩蹇楀瓧娈电被鍨嬭皟鏁达紝鏀逛负text绫诲瀷骞跺彇娑堝瓧鏁伴檺鍒讹紱
-- 38銆丟LUE浠诲姟鑴氭湰瀛楁绫诲瀷璋冩暣锛屾敼涓簃ediumtext绫诲瀷锛屾彁楂楪LUE闀垮害涓婇檺锛�
-- 39銆佷换鍔$洃鎺х嚎绋婰og杈撳嚭浼樺寲锛岃繍琛屼腑浠诲姟鐨勭洃鎺og鏀逛负debug绾у埆锛屽噺灏戦潪鏍稿績鏃ュ織閲忥紱
-- 40銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆丣ackson銆乬roovy绛夌瓑锛�
-- 41銆乨ocker鏀寔锛氳皟搴︿腑蹇冩彁渚� Dockerfile 鏂逛究蹇�熸瀯寤篸ocker闀滃儚锛�
-
-### 6.23 鐗堟湰 V2.0.0 Release Notes[2018-11-04]
-- 1銆佽皟搴︿腑蹇冭縼绉诲埌 springboot锛�
-- 2銆佸簳灞傞�氳缁勪欢杩佺Щ鑷� xxl-rpc锛�
-- 3銆佸鍣ㄥ寲锛氭彁渚涘畼鏂筪ocker闀滃儚锛屽苟瀹炴椂鏇存柊鎺ㄩ�乨ockerhub锛坉ocker pull xuxueli/xxl-job-admin锛夛紝杩涗竴姝ュ疄鐜颁骇鍝佸紑绠卞嵆鐢紱
-- 4銆佹柊澧炴棤妗嗘灦鎵ц鍣⊿ample绀轰緥椤圭洰 "xxl-job-executor-sample-frameless"銆備笉渚濊禆绗笁鏂规鏋讹紝鍙渶main鏂规硶鍗冲彲鍚姩杩愯鎵ц鍣紱
-- 5銆佸懡浠よ浠诲姟锛氬師鐢熸彁渚涢�氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
-- 6銆佷换鍔$姸鎬佷紭鍖栵紝浠呰繍琛岀姸鎬�"NORMAL"浠诲姟鍏宠仈鑷硄uartz锛岄檷浣巕uartz搴曞眰鏁版嵁瀛樺偍涓庤皟搴﹀帇鍔涳紱
-- 7銆佷换鍔$姸鎬佽鑼冿細鏂板浠诲姟榛樿鍋滄鐘舵�侊紝浠诲姟鏇存柊鏃朵繚鎸佷换鍔$姸鎬佷笉鍙橈紱
-- 8銆両P鑾峰彇閫昏緫浼樺寲锛屼紭鍏堥亶鍘嗙綉鍗℃潵鑾峰彇鍙敤IP锛�
-- 9銆佷换鍔℃柊澧炵殑API鏈嶅姟鎺ュ彛杩斿洖浠诲姟ID锛屾柟渚胯皟鐢ㄦ柟瀹炵敤锛�
-- 10銆佺粍浠跺寲浼樺寲锛岀Щ闄ゅ spring 鐨勪緷璧栵細闈瀞pring搴旂敤閫夌敤 "XxlJobExecutor" 銆乻pring搴旂敤閫夌敤 "XxlJobSpringExecutor" 浣滀负鎵ц鍣ㄧ粍浠讹紱
-- 11銆佷换鍔ollingLog灞曠ず閫昏緫浼樺寲锛屼慨澶嶈秴鏃朵换鍔℃棤娉曟煡鐪嬬殑闂锛�
-- 12銆佸椤筓I缁勪欢鍗囩骇鍒版渶鏂扮増鏈紝濡傦細CodeMirror銆丒charts銆丣query 绛夛紱
-- 13銆侀」鐩緷璧栧崌绾� groovy 鑷宠緝鏂扮ǔ瀹氱増鏈紱pom娓呯悊锛�
-- 14銆佸瓙浠诲姟澶辫触閲嶈瘯閲嶈瘯閫昏緫浼樺寲锛屽瓙浠诲姟澶辫触鏃跺皢浼氭寜鐓у叾棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇�
-
-### 6.23 鐗堟湰 v2.0.1 Release Notes[2018-11-09]
-- 1銆佸乏渚ц彍鍗曟姌鍙犲姩鐢婚棶棰樹慨澶嶏紱
-- 2銆佽皟搴︽姤琛ㄦ棩鏈熷垎甯冨浘榛樿鍊肩粺涓�锛�
-- 3銆乫reemarker瀵规暟瀛楅粯璁ゅ姞鍗冨垎浣嶉棶棰樹慨澶嶏紝瑙e喅鏃ュ織ID琚垎闅斿鑷存煡鐪嬫棩蹇楀け璐ラ棶棰橈紱
-- 4銆佸簳灞傞�氳缁勪欢鍗囩骇锛屼慨澶嶉�氳寮傚父鏃舵棤鏁堢瓑寰呯殑闂锛�
-- 5銆佹墽琛屽櫒鍚姩涔嬪悗jetty鍋滄鐨勯棶棰樹慨澶嶏紱
-
-### 6.24 鐗堟湰 v2.0.2 Release Notes[2019-04-20]
-- 1銆佸簳灞傞�氳鏂规浼樺寲锛氬崌绾ц緝鏂扮増鏈瑇xl-rpc锛岀敱"JETTY"鏂规璋冩暣涓�"NETTY_HTTP"鏂规锛屾墽琛屽櫒鍐呭祵netty-http-server鎻愪緵鏈嶅姟锛岃皟搴︿腑蹇冨鐢ㄥ鍣ㄧ鍙f彁渚涙湇鍔★紱
-- 2銆佷换鍔″憡璀﹂�昏緫璋冩暣锛屾敼涓洪�氳繃鎵弿澶辫触鏃ュ織鏂瑰紡瑙﹀彂銆備竴鏂归潰绮剧‘鎵弿澶辫触浠诲姟锛岄檷浣庢壂鎻忚寖鍥达紱鍙︿竴鏂归潰鍙栨秷鍐呭瓨闃熷垪锛岄檷浣庣嚎绋嬪唴瀛樻秷鑰楋紱
-- 3銆丵uartz瑙﹀彂绾跨▼姹犲簾寮冨苟鏇挎崲涓� "XxlJobThreadPool"锛岄檷浣庣嚎绋嬪垏鎹€�佸唴瀛樺崰鐢ㄥ甫鏉ョ殑娑堣�楋紝鎻愰珮璋冨害鎬ц兘锛�
-- 4銆佽皟搴︾嚎绋嬫睜闅旂锛屾媶鍒嗕负"Fast"鍜�"Slow"涓や釜绾跨▼姹狅紝1鍒嗛挓绐楀彛鏈熷唴浠诲姟鑰楁椂杈�500ms瓒呰繃10娆★紝璇ョ獥鍙f湡鍐呭垽瀹氫负鎱换鍔★紝鎱换鍔¤嚜鍔ㄩ檷绾ц繘鍏�"Slow"绾跨▼姹狅紝閬垮厤鑰楀敖璋冨害绾跨▼锛屾彁楂樼郴缁熺ǔ瀹氭�э紱
-- 5銆佹墽琛屽櫒鐑儴缃叉椂JobHandler閲嶆柊鍒濆鍖栵紝淇鐢辨瀵艰嚧鐨� "jobhandler naming conflicts." 闂锛�
-- 6銆佹柊澧濩lass鐨勫姞杞界紦瀛橈紝瑙e喅棰戠箒鍔犺浇Class浼氫娇jvm鐨勬柟娉曞尯绌洪棿涓嶈冻瀵艰嚧OOM鐨勯棶棰橈紱
-- 7銆佷换鍔℃敮鎸佹洿鎹㈢粦瀹氭墽琛屽櫒锛屾柟渚夸换鍔″垎缁勮浆绉诲拰绠$悊锛�
-- 8銆佽皟搴︿腑蹇冨憡璀﹂偖浠跺彂閫佺粍浠舵敼涓� 鈥渟pring-boot-starter-mail鈥濓紱
-- 9銆佽浣忓瘑鐮佸姛鑳戒紭鍖栵紝閫変腑鏃舵案涔呰浣忥紱闈為�変腑鏃跺叧闂祻瑙堝櫒鍗崇櫥鍑猴紱
-- 10銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽quartz銆乻pring銆乯ackson銆乬roovy銆亁xl-rpc绛夌瓑锛�
-- 11銆佺簿绠�椤圭洰锛屽彇娑堢涓夋柟渚濊禆锛屽 commons-collections4銆乧ommons-lang3 ;
-- 12銆佹墽琛屽櫒鍥炶皟鏃ュ織钀界洏鏂规澶嶇敤RPC搴忓垪鍖栨柟妗堬紝骞剁Щ闄ackson渚濊禆锛�
-- 13銆佸簳灞侺og璋冧紭锛屽簲鐢ㄦ甯哥粓姝㈠彇娑堝紓甯告爤淇℃伅鎵撳嵃锛�
-- 14銆佷氦浜掍紭鍖栵紝灏介噺閬垮厤鏂板紑椤甸潰绐楀彛锛涗粎WebIDE鏀寔鏂板紑椤碉紝骞舵彁渚涚獥鍙e揩閫熷叧闂寜閽紱浠诲姟鍚�佸仠銆佸垹闄ゃ�佽Е鍙戠瓑杞绘搷浣滄彁绀烘敼涓簍oast鏂瑰紡锛�
-- 15銆佷换鍔℃殏鍋溿�佸垹闄や紭鍖栵紝閬垮厤quartz delete涓嶅畬鏁村鑷翠换鍔¤剰鏁版嵁锛�
-- 16銆佷换鍔″洖璋冦�佸績璺虫敞鍐屾垚鍔熸棩蹇椾紭鍖栵紝闈炴牳蹇冨父瑙勬棩蹇楄皟鏁翠负debug绾у埆锛岄檷浣庡啑浣欐棩蹇楄緭鍑猴紱
-- 17銆佽皟鏁撮椤垫姤琛ㄩ粯璁ゅ尯闂翠负鏈懆锛岄伩鍏嶆棩蹇楅噺澶ぇ鏌ヨ缂撴參锛�
-- 18銆丩RU璺敱鏇存柊涓嶅強鏃堕棶棰樹慨澶嶏紱
-- 19銆佷换鍔″け璐ュ憡璀﹂偖浠跺彂閫侀�昏緫浼樺寲锛�
-- 20銆佽皟搴︽棩蹇楁帓搴忛�昏緫璋冩暣涓烘寜鐓ц皟搴︽椂闂村�掑簭锛屽吋瀹筎IDB绛変富閿笉杩炵画鏃ュ織瀛樺偍缁勪欢锛�
-- 21銆佹墽琛屽櫒浼橀泤鍋滄満浼樺寲锛�
-- 22銆佽繛鎺ユ睜閰嶇疆浼樺寲锛屽寮鸿繛鎺ユ湁鏁堟�ч獙璇侊紱
-- 23銆丣obHandler#msg闀垮害闄愬埗锛屼慨澶嶅紓甯告儏鍐典笅鏃ュ織瓒呴暱瀵艰嚧鍐呭瓨婧㈠嚭鐨勯棶棰橈紱
-- 24銆佸崌绾xl-rpc鑷宠緝鏂扮増鏈紝淇springboot 2.x鐗堟湰鍏煎鎬ч棶棰橈紱
-
-### 6.25 鐗堟湰 v2.1.0 Release Notes[2019-07-07]
-- 1銆佽嚜鐮旇皟搴︾粍浠讹紝绉婚櫎quartz渚濊禆锛氫竴鏂归潰鏄负浜嗙簿绠�绯荤粺闄嶄綆鍐椾綑渚濊禆锛屽彟涓�鏂归潰鏄负浜嗘彁渚涚郴缁熺殑鍙帶搴︿笌绋冲畾鎬э紱
- - 瑙﹀彂锛氬崟鑺傜偣鍛ㄦ湡鎬цЕ鍙戯紝杩愯浜嬩欢濡俤elayqueue锛�
- - 璋冨害锛氶泦缇ょ珵浜夛紝璐熻浇鏂瑰紡鍗忓悓澶勭悊锛岄攣绔炰簤-鏇存柊瑙﹀彂淇℃伅-鎺ㄩ�佹椂闂磋疆-閿侀噴鏀�-閿佺珵浜夛紱
-- 2銆佸簳灞傝〃缁撴瀯閲嶆瀯锛氱Щ闄�11寮爍uartz鐩稿叧琛紝骞跺鐜版湁琛ㄧ粨鏋勪紭鍖栨⒊鐞嗭紱
-- 3銆佷换鍔℃棩蹇椾富閿皟鏁翠负long鏁版嵁绫诲瀷锛岄槻姝㈡捣閲忔棩蹇楁儏鍐典笅鏁版嵁婧㈠嚭锛�
-- 4銆佸簳灞傜嚎绋嬫ā鍨嬮噸鏋勶細绉婚櫎Quartz绾跨▼姹狅紝闄嶄綆绯荤粺绾跨▼涓庡唴瀛樺紑閿�锛�
-- 5銆佺敤鎴风鐞嗭細鏀寔鍦ㄧ嚎绠$悊绯荤粺鐢ㄦ埛锛屽瓨鍦ㄧ鐞嗗憳銆佹櫘閫氱敤鎴蜂袱绉嶈鑹诧紱
-- 6銆佹潈闄愮鐞嗭細鎵ц鍣ㄧ淮搴﹁繘琛屾潈闄愭帶鍒讹紝绠$悊鍛樻嫢鏈夊叏閲忔潈闄愶紝鏅�氱敤鎴烽渶瑕佸垎閰嶆墽琛屽櫒鏉冮檺鍚庢墠鍏佽鐩稿叧鎿嶄綔锛�
-- 7銆佽皟搴︾嚎绋嬫睜鍙傛暟璋冧紭锛�
-- 8銆佹敞鍐岃〃绱㈠紩浼樺寲锛岀紦瑙i攣琛ㄩ棶棰橈紱
-- 9銆佹柊澧濲boot鎵ц鍣⊿ample绀轰緥椤圭洰锛�
-- 10銆佷换鍔″垪琛ㄤ紭鍖栵紝鏀寔鏍规嵁 "浠诲姟鐘舵��"銆�"璐熻矗浜�" 灞炴�х瓫閫変换鍔★紱
-- 11銆佷换鍔℃棩蹇楀垪琛ㄤ氦浜掍紭鍖栵紝鎿嶄綔鎸夐挳鍚堝苟涓哄垎鍓叉寜閽紱
-- 12銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乻pringboot銆乬roovy銆亁xl-rpc绛夌瓑锛涘苟娓呯悊鍐椾綑POM锛�
-- 13銆佸崌绾xl-rpc鑷宠緝鏂扮増鏈紝淇浠g悊鏈嶅姟鍒濆鍖栨椂杩滅▼鏈嶅姟涓嶅彲鐢ㄥ鑷撮暱杩炲啑浣欏垱寤虹殑闂;
-- 14銆侀椤佃皟搴︽姤琛ㄧ殑鏃ユ湡鎺掑簭鍦═IDB涓嬩贡搴忛棶棰樹慨澶嶏紱
-- 15銆佽皟搴︿腑蹇冧笌鎵ц鍣ㄥ弻鍚戦�氳瓒呮椂鏃堕棿璋冩暣涓�3s锛�
-- 16銆佽皟搴︾粍浠堕攢姣佹祦绋嬩紭鍖栵紝鍏堝仠姝㈣皟搴︾嚎绋嬶紝鐒跺悗绛夊緟鏃堕棿杞唴瀛橀噺浠诲姟澶勭悊瀹屾垚锛屾渶缁堥攢姣佹椂闂磋疆绾跨▼锛�
-- 17銆佹墽琛屽櫒鍥炶皟绾跨▼浼樺寲锛屽洖璋冨湴鍧�涓虹┖鏃堕攢姣侀棶棰樹慨澶嶏紱
-- 18銆丠ttpJobHandler浼樺寲锛屽搷搴旀暟鎹寚瀹歎TF-8鏍煎紡锛岄伩鍏嶄腑鏂囦贡鐮侊紱
-- 19銆佷唬鐮佷紭鍖栵紝ConcurrentHashMap鍙橀噺绫诲瀷鏀逛负ConcurrentMap锛岄伩鍏嶅洜涓嶅悓鐗堟湰瀹炵幇涓嶅悓瀵艰嚧鐨勫吋瀹规�ч棶棰橈紱
-
-
-### 6.26 鐗堟湰 v2.1.1 Release Notes[2019-11-24]
-- 1銆� 璋冨害涓績鏃ュ織鑷姩娓呯悊鍔熻兘锛堣嚦姝わ紝璋冨害涓績/鎵ц鍣ㄥ潎鏀寔鏃ュ織鑷姩娓呯悊锛岃繃鏈熷ぉ鏁板潎榛樿璁剧疆涓�30澶╋級锛氳皟搴︿腑蹇冩柊澧為厤缃」锛�"xxl.job.logretentiondays"锛夋棩蹇椾繚瀛樺ぉ鏁帮紝杩囨湡鏃ュ織鑷姩娓呯悊锛涜В鍐虫捣閲忔棩蹇楁儏鍐典笅鏃ュ織琛ㄦ參SQL闂锛涢檺鍒跺ぇ浜庣瓑浜�7鏃剁敓鏁堬紝鍚﹀垯鍏抽棴娓呯悊鍔熻兘锛岄粯璁や负30锛�
-- 2銆� 璋冨害鎶ヨ〃浼樺寲锛氭柊澧炴棩蹇楁姤琛ㄧ殑瀛樺偍琛紝涓夊ぉ鍐呯殑浠诲姟鏃ュ織浼氫互姣忓垎閽熶竴娆$殑棰戠巼寮傛鍚屾鑷虫姤琛ㄤ腑锛涗换鍔℃姤琛ㄤ粎璇诲彇鎶ヨ〃鏁版嵁锛屾瀬澶ф彁鍗囧姞杞介�熷害锛�
-- 3銆� Cron鍦ㄧ嚎鐢熸垚宸ュ叿锛氫换鍔℃柊澧炪�佺紪杈戞閫氳繃缁勪欢鍦ㄧ嚎鐢熸垚Cron琛ㄨ揪寮忥紱
-- 4銆� Cron涓嬫鎵ц鏃堕棿鏌ヨ锛氭敮鎸侀�氳繃鐣岄潰鍦ㄧ嚎鏌ョ湅鍚庣画杩炵画5娆℃墽琛屾椂闂达紱
-- 5銆� 璋冨害涓績鏂板搴旂敤鍋ュ悍妫�鏌ュ姛鑳斤紝鍊熷姪鈥渟pring-boot-starter-actuator鈥濓紝鐩稿鍦板潃 鈥�/actuator/health鈥濓紱
-- 6銆� DB鑴氭湰榛樿缂栫爜鏀逛负utf8mb4锛屼慨澶嶅瓧绗︿贡鐮侀棶棰�(寤鸿Mysql鐗堟湰5.7+)锛�
-- 7銆� 璋冨害涓績浠诲姟骞冲潎鍒嗛厤锛岃Е鍙戠粍浠舵瘡娆¤幏鍙栦笌绾跨▼姹犳暟閲忕浉鍏虫暟閲忕殑浠诲姟锛岄伩鍏嶅ぇ閲忎换鍔¢泦涓湪鍗曚釜璋冨害涓績闆嗙兢鑺傜偣锛�
-- 8銆� 浠诲姟瑙﹀彂缁勪欢浼樺寲锛岄鍔犺浇棰戠巼姝e父1s涓�娆★紝褰撻鍔犺浇杞┖鏃朵富鍔ㄤ紤鐪犱竴涓姞杞藉懆鏈燂紝鍔ㄦ�侀檷浣庡姞杞介鐜囦粠鑰岄檷浣嶥B鍘嬪姏锛�
-- 9銆� 璋冨害缁勪欢浼樺寲锛氶拡瀵规案杩滀笉浼氳Е鍙戠殑Cron绂佹閰嶇疆鍜屽惎鍔紱浠诲姟Cron鏈�鍚庝竴娆¤Е鍙戝悗鍐嶄篃涓嶄細瑙﹀彂鏃讹紝姣斿涓�娆℃�т换鍔★紝涓诲姩鍋滄鐩稿叧浠诲姟锛�
-- 10銆丏B閲嶈繛浼樺寲锛屼慨澶岲B瀹曟満閲嶈繛鍚庝换鍔¤皟搴﹀仠姝㈢殑闂锛岄噸杩炲悗鑷姩鍔犲叆璋冨害闆嗙兢瑙﹀彂浠诲姟璋冨害锛�
-- 11銆佹敞鍐岀洃鎺х嚎绋嬩紭鍖栵紝闄嶄綆姝婚攣鍑犵巼锛�
-- 12銆佽皟搴︿腑蹇冩棩蹇楀垹闄や紭鍖栵紝鏀逛负鍒嗛〉鑾峰彇ID骞舵牴鎹甀D鍒犻櫎鐨勬柟寮忥紝閬垮厤鎵归噺鍒犻櫎娴烽噺鏃ュ織瀵艰嚧姝婚攣闂锛�
-- 13銆佷换鍔¢噸璇曟椂鍙傛暟涓㈠け鐨勯棶棰樹慨澶嶏紱
-- 14銆佽皟搴︿腑蹇冪Щ闄QL涓殑 "now()" 鍑芥暟锛涢泦缇ら儴缃叉椂涓嶅啀渚濊禆DB鏃堕挓锛屼粎闇�瑕佷繚璇佽皟搴︿腑蹇冨簲鐢ㄨ妭鐐规椂閽熶竴鑷村嵆鍙紱
-- 15銆佷换鍔¤Е鍙戠粍浠跺姞杞介『搴忚皟鏁达紝閬垮厤灏忔鐜囨儏鍐典笅缁勪欢闅忔満鍔犺浇椤哄簭瀵艰嚧鐨処18N鐨凬PE闂;
-- 16銆丣obThread鑷攢姣佷紭鍖栵紝閬垮厤骞跺彂瑙﹀彂瀵艰嚧triggerQueue涓换鍔′涪澶遍棶棰橈紱
-- 17銆佽皟搴︿腑蹇冨瘑鐮侀檺鍒�18浣嶏紝淇淇敼瀵嗙爜瓒呰繃18浣嶆棤娉曠櫥闄嗙殑闂锛�
-- 18銆佷换鍔″憡璀︾粍浠跺垎椤靛弬鏁版棤鏁堥棶棰樹慨澶嶏紱
-- 19銆佸崌绾xl-rpc鐗堟湰锛氭湇鍔$绾跨▼浼樺寲锛岄檷浣庣嚎绋嬪唴瀛樺紑閿�锛汭pUtil浼樺寲锛氬鍔犺繛閫氭�ф牎锛岃繃婊ゆ槑纭潪娉曠殑缃戝崱锛�
-- 20銆佽皟搴︿腑蹇冨洖璋傾PI鏈嶅姟鏀逛负restful鏂瑰紡锛�
-- 21銆乁I浼樺寲锛屼换鍔″垪琛ㄥ拰鏃ュ織鍒楄〃鏁版嵁琛ㄦ牸瀹藉害姣斾緥璋冩暣锛岄伩鍏嶆暟鎹崲琛屾彁鍗囦綋楠岋紱
-- 22銆佺櫥褰曠晫闈㈠彇娑堥粯璁ゅ~鍐欑殑鐧诲綍璐﹀彿瀵嗙爜锛�
-- 23銆佹墽琛屽櫒琛ㄥ睘鎬ц皟鏁达紝"椤哄簭" 灞炴�ц皟鏁翠负鏁村瀷锛岃В鍐虫墽琛屽櫒鏁版嵁杈冨鏃舵棤娉曟纭帓搴忕殑闂锛�
-- 24銆佷换鍔″垪琛ㄤ氦浜掍紭鍖栵紝鏀寔鏌ョ湅浠诲姟鎵�灞炴墽琛屽櫒鐨勬敞鍐岃妭鐐癸紱
-- 25銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乻pring-boot銆乵ybatis銆乻lf4j銆乬roovy绛夌瓑锛�
-
-### 6.27 鐗堟湰 v2.1.2 Release Notes[2019-12-12]
-- 1銆佹柟娉曚换鍔℃敮鎸侊細鐢卞師鏉ュ熀浜嶫obHandler绫讳换鍔″紑鍙戞柟寮忥紝浼樺寲涓烘敮鎸佸熀浜庢柟娉曠殑浠诲姟寮�鍙戞柟寮忥紱鍥犳锛屽彲浠ユ敮鎸佸崟涓被涓紑鍙戝涓换鍔℃柟娉曪紝杩涜绫诲鐢�
-```
-@XxlJob("demoJobHandler")
-public ReturnT<String> execute(String param) {
- XxlJobLogger.log("hello world");
- return ReturnT.SUCCESS;
-}
-```
-- 2銆佺Щ闄ommons-exec锛岄噰鐢ㄥ師鐢熸柟寮忓疄鐜帮紝闄嶄綆绗笁鏂逛緷璧栵紱
-- 3銆佹墽琛屽櫒鍥炶皟涔辩爜闂淇锛�
-- 4銆佽皟搴︿腑蹇僤ispatcher servlet鍔犺浇椤哄簭浼樺寲锛�
-- 5銆佹墽琛屽櫒鍥炶皟鍦板潃https鍏煎鏀寔锛�
-- 6銆佸涓」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛�
-- 娉ㄦ剰锛氭渶鏂扮増鏈� "XxlJobSpringExecutor" 閫昏緫鏈夎皟鏁达紝鍘嗗彶椤圭洰涓缁勪欢鐨勯厤缃柟寮忚鍙傝�僑ample绀轰緥椤圭洰杩涜璋冩暣锛屽挨鍏舵敞鎰忛渶瑕佺Щ闄ょ粍浠剁殑init鍜宒estroy鏂规硶锛�
-
-
-### TODO LIST
-- 1銆佷换鍔″垎鐗囪矾鐢憋細鍒嗙墖閲囩敤涓�鑷存�ash绠楁硶璁$畻鍑哄敖閲忕ǔ瀹氱殑鍒嗙墖椤哄簭锛屽嵆浣挎敞鍐屾満鍣ㄥ瓨鍦ㄦ尝鍔ㄤ篃涓嶄細寮曡捣鍒嗘壒鍒嗙墖椤哄簭澶х殑娉㈠姩锛涚洰鍓嶉噰鐢↖P鑷劧鎺掑簭锛屽彲浠ユ弧瓒抽渶姹傦紝寰呭畾锛�
-- 2銆佷换鍔″崟鏈哄绾跨▼锛氭彁鍗囦换鍔″崟鏈哄苟琛屽鐞嗚兘鍔涳紱
-- 3銆佽皟搴︿换鍔′紭鍏堢骇锛�
-- 4銆佸鏁版嵁搴撴敮鎸侊紝鍦ㄩ噸鍐欏苟绉婚櫎Quartz鐨勫熀纭�涓婏紝DAO灞傞�氳繃JPA瀹炵幇锛屼笉闄愬埗鏁版嵁搴撶被鍨嬶紱
-- 5銆佹墽琛屽櫒Log娓呯悊鍔熻兘锛氳皟搴︿腑蹇僉og鍒犻櫎鏃跺悓姝ュ垹闄ゆ墽琛屽櫒涓殑Log鏂囦欢锛�
-- 6銆佷换鍔¤嚜鍔ㄦ敞鍐岋細Bean妯″紡浠诲姟锛孞obHandler鑷姩浠庢墽琛屽櫒涓煡璇㈠睍绀轰负涓嬫媺妗嗭紝閫夋嫨鍚庤嚜鍔ㄥ~鍏呬换鍔″悕绉扮瓑灞炴�э紱寰呰�冭檻锛屽洜涓轰换鍔¤嚜鍔ㄦ敞鍐屽皢浼氬鑷翠换鍔¢毦浠ョ鐞嗘帶鍒讹紱
-- 7銆丄PI浜嬩欢瑙﹀彂绫诲瀷浠诲姟锛堟洿绫讳技MQ娑堟伅锛夋敮鎸�"鍔ㄦ�佷紶鍙傘�佸欢鏃舵秷璐�"锛涜绫诲瀷浠诲姟涓嶈蛋璋冨害缁勪欢锛屽崟鐙缓绔婱Q娑堟伅琛紝璋冨害涓績绔炰簤瑙﹀彂锛涘緟瀹氾紝璇ュ姛鑳戒笌 XXL-MQ 鍐茬獊锛岃鍦烘櫙寤鸿鐢ㄥ悗鑰咃紱
-- 8銆佽皟搴︾嚎绋嬫睜鏀逛负鍗忕▼鏂瑰紡瀹炵幇锛屽ぇ骞呴檷浣庣郴缁熷唴瀛樻秷鑰楋紱
-- 9銆佷换鍔°�佹墽琛屽櫒鏁版嵁鍏ㄩ噺鏈湴缂撳瓨锛涙柊澧炴秷鎭〃骞挎挱閫氱煡锛�
-- 10銆佸繖纰岃浆绉讳紭鍖栵紝鍏ㄩ儴鏈哄櫒蹇欑鏃朵笉鍐嶇洿鎺ュけ璐ワ紱
-- 11銆佸け璐ラ噸璇曢棿闅旓紱
-- 12銆丼impleTrigger锛氶櫎Cron澶栵紝鏀寔璁剧疆鍥哄畾鏃堕棿闂撮殧瑙﹀彂锛�
-- 13銆佽皟搴︽棩蹇楀垪琛ㄥ姞涓婃墽琛屾椂闀垮垪锛屽苟鏀寔鎺掑簭锛�
-- 14銆丏AG娴佺▼浠诲姟锛氭浛鎹㈠瓙浠诲姟锛屾敮鎸佸弬鏁颁紶閫掞細閰嶇疆骞跺垪鐨�"a-b銆乥-c"璺緞鍒楄〃锛屾瀯鎴愪覆琛屻�佸苟琛屻�乨ag浠诲姟娴佺▼锛�"dagre-d3"缁樺浘锛涗换鍔′緷璧栵紝娴佺▼鍥撅紝瀛愪换鍔�+浼氱浠诲姟锛屽悇鑺傜偣鏃ュ織锛涙敮鎸佹牴鎹垚鍔熴�佸け璐ラ�夋嫨鍒嗘敮锛�
-- 15銆佹棩鏈熻繃婊わ細鏀寔澶氫釜鏃堕棿娈垫帓闄わ紱
-- 16銆佸憡璀﹂偖浠跺唴瀹癸紝鏀寔鑷畾涔夋ā鏉块厤缃紱
-- 17銆佹殏鍋滅姸鎬侊紝鏀寔Cron 涓虹┖锛�
-- 18銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(GO) "锛屾敮鎸丟O浠诲姟锛�
-- 19銆佹敞鍐屼腑蹇冧紭鍖栵紝瀹炴椂鎬ф敞鍐屽彂鐜帮細蹇冭烦娉ㄥ唽闂撮殧10s锛宺efresh澶辫触鍒欓娆℃敞鍐屽苟绔嬪嵆鏇存柊娉ㄥ唽淇℃伅锛屽績璺崇被浼硷紱30s杩囨湡閿�姣侊紱
-- 20銆佹彁渚涙墽琛屽櫒Docker闀滃儚锛�
-- 21銆佽剼鏈换鍔★紝鏀寔鏁版嵁鍙傛暟锛屾柊鐗堟湰浠呮敮鎸佸崟鍙傛暟涓嶆敮鎸侀渶瑕佸吋瀹癸紱
-- 22銆丟LUE 妯″紡 Web Ide 鐗堟湰瀵规瘮鍔熻兘锛�
-- 23銆佹壒閲忚皟搴︼細璋冨害璇锋眰鍏ueue锛岃皟搴︾嚎绋嬫壒閲忚幏鍙栬皟搴﹁姹傚苟鍙戣捣杩滅▼璋冨害锛涙彁楂樼嚎绋嬫晥鐜囷紱
-- 24銆佸璇█鎵ц鍣細绾﹀畾璺ㄨ瑷�閫氳鏂规锛屼互鍙婇�氳鎺ュ彛锛�
-- 25銆佺Щ闄ommons-exec锛岄噰鐢ㄥ師鐢熷疄鐜帮紱
-- 26銆佽皟搴︿腑蹇僇DK鐗堟湰璋冩暣涓篔DK8锛屼粠鑰屽崌绾ц嚦鏈�鏂扮増鏈琒pringBoot锛�
-- 27銆佹墽琛屽櫒鏈嶅姟绔彛涓庢敞鍐岀鍙e垎绂伙紝鏀寔docker鍔ㄦ�侀殢鏈虹鍙o紱
-- 28銆佹墽琛屽櫒绔彛澶嶇敤锛屽鐢ㄥ鍣ㄧ鍙f彁渚涢�氳鏈嶅姟锛�
-- 29銆佽嚜瀹氫箟澶辫触閲嶈瘯鏃堕棿闂撮殧锛�
-- 30銆佸垎鐗囦换鍔″叏閮ㄦ垚鍔熷悗瑙﹀彂瀛愪换鍔★紱
-- 31銆佷换鍔″鍒跺姛鑳斤紱鐐瑰嚮澶嶅埗鏄脊鍑烘柊寤轰换鍔″脊妗嗭紝骞跺垵濮嬪寲琚鍒朵换鍔′俊鎭紱
-- 32銆丄ccessToken鎸夌収鎵ц鍣ㄧ淮搴﹁缃紱鎺у埗璋冨害銆佸洖璋冿紱
-- 33銆佷换鍔℃墽琛屼竴娆$殑鏃跺�欐寚瀹欼P锛�
-- 34銆侀�氳璋冩暣锛涘弻鍚慔TTP锛屽洖璋冨拰鍏朵粬API鑷畾涔堿ccessToken锛孯estful锛屾墽琛屽櫒澶嶇敤瀹瑰櫒绔彛锛�
-- 35銆佺埗瀛愪换鍔″弬鏁颁紶閫掞紱娴佺▼浠诲姟绛夛紝閫忎紶鍔ㄦ�佸弬鏁帮紱
-- 36銆佹柊澧炴墽琛屽櫒鎻忚堪銆佷换鍔℃弿杩板睘鎬э紱
-
-
-## 涓冦�佸叾浠�
-
-### 7.1 椤圭洰璐$尞
-娆㈣繋鍙備笌椤圭洰璐$尞锛佹瘮濡傛彁浜R淇涓�涓猙ug锛屾垨鑰呮柊寤� [Issue](https://github.com/xuxueli/xxl-job/issues/) 璁ㄨ鏂扮壒鎬ф垨鑰呭彉鏇淬��
-
-### 7.2 鐢ㄦ埛鎺ュ叆鐧昏
-鏇村鎺ュ叆鐨勫叕鍙革紝娆㈣繋鍦� [鐧昏鍦板潃](https://github.com/xuxueli/xxl-job/issues/1 ) 鐧昏锛岀櫥璁颁粎浠呬负浜嗕骇鍝佹帹骞裤��
-
-### 7.3 寮�婧愬崗璁拰鐗堟潈
-浜у搧寮�婧愬厤璐癸紝骞朵笖灏嗘寔缁彁渚涘厤璐圭殑绀惧尯鎶�鏈敮鎸併�備釜浜烘垨浼佷笟鍐呴儴鍙嚜鐢辩殑鎺ュ叆鍜屼娇鐢ㄣ��
-
-- Licensed under the GNU General Public License (GPL) v3.
-- Copyright (c) 2015-present, xuxueli.
-
----
-### 鎹愯禒
-鏃犺鎹愯禒閲戦澶氬皯閮借冻澶熻〃杈炬偍杩欎唤蹇冩剰锛岄潪甯告劅璋� 锛氾級 [鍓嶅線鎹愯禒](https://www.xuxueli.com/page/donate.html )
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/pom.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/pom.xml
deleted file mode 100644
index 46cb5d8..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/pom.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-xxljob-admin</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <maven.test.skip>true</maven.test.skip>
-
- <xxl-rpc.version>1.5.0</xxl-rpc.version>
-
- <spring.version>4.3.25.RELEASE</spring.version>
- <spring-boot.version>1.5.22.RELEASE</spring-boot.version>
- <mybatis-spring-boot-starter.version>1.3.5</mybatis-spring-boot-starter.version>
- <mysql-connector-java.version>5.1.48</mysql-connector-java.version>
-
- <slf4j-api.version>1.7.29</slf4j-api.version>
- <junit.version>4.12</junit.version>
-
- <groovy.version>2.5.8</groovy.version>
-
- <maven-source-plugin.version>3.2.0</maven-source-plugin.version>
- <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
- <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
- <maven-war-plugin.version>3.2.3</maven-war-plugin.version>
- </properties>
-
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-cloud</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- </dependency>
- <!-- freemarker-starter -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-freemarker</artifactId>
- </dependency>
-
- <!-- mail-starter -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
- <!-- starter-actuator -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <!-- mybatis-starter锛歮ybatis + mybatis-spring + tomcat-jdbc锛坉efault锛� -->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>${mybatis-spring-boot-starter.version}</version>
- </dependency>
- <!-- mysql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <!-- xxl-job-core -->
- <dependency>
- <groupId>com.xuxueli</groupId>
- <artifactId>xxl-job-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java
deleted file mode 100644
index 6e683eb..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.xxl.job.admin;
-
-import org.springblade.common.constant.LauncherConstant;
-import org.springblade.core.launch.BladeApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * @author xuxueli 2018-10-28 00:38:13
- */
-@SpringBootApplication
-public class JobAdminApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(LauncherConstant.APPLICATION_XXLJOB_ADMIN_NAME, JobAdminApplication.class, args);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
deleted file mode 100644
index 6c57af9..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.springframework.beans.propertyeditors.CustomDateEditor;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.InitBinder;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-public class IndexController {
-
- @Resource
- private XxlJobService xxlJobService;
- @Resource
- private LoginService loginService;
-
-
- @RequestMapping("/")
- public String index(Model model) {
-
- Map<String, Object> dashboardMap = xxlJobService.dashboardInfo();
- model.addAllAttributes(dashboardMap);
-
- return "index";
- }
-
- @RequestMapping("/chartInfo")
- @ResponseBody
- public ReturnT<Map<String, Object>> chartInfo(Date startDate, Date endDate) {
- ReturnT<Map<String, Object>> chartInfo = xxlJobService.chartInfo(startDate, endDate);
- return chartInfo;
- }
-
- @RequestMapping("/toLogin")
- @PermissionLimit(limit=false)
- public String toLogin(HttpServletRequest request, HttpServletResponse response) {
- if (loginService.ifLogin(request, response) != null) {
- return "redirect:/";
- }
- return "login";
- }
-
- @RequestMapping(value="login", method=RequestMethod.POST)
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT<String> loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
- boolean ifRem = (ifRemember!=null && ifRemember.trim().length()>0 && "on".equals(ifRemember))?true:false;
- return loginService.login(request, response, userName, password, ifRem);
- }
-
- @RequestMapping(value="logout", method=RequestMethod.POST)
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
- return loginService.logout(request, response);
- }
-
- @RequestMapping("/help")
- public String help() {
-
- /*if (!PermissionInterceptor.ifLogin(request)) {
- return "redirect:/toLogin";
- }*/
-
- return "help";
- }
-
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- dateFormat.setLenient(false);
- binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
deleted file mode 100644
index ad1244a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.util.JacksonUtil;
-import com.xxl.job.core.biz.AdminBiz;
-import com.xxl.job.core.biz.model.HandleCallbackParam;
-import com.xxl.job.core.biz.model.RegistryParam;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.util.XxlJobRemotingUtil;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/5/10.
- */
-@Controller
-@RequestMapping("/api")
-public class JobApiController {
-
- @Resource
- private AdminBiz adminBiz;
-
-
- // ---------------------- base ----------------------
-
- /**
- * valid access token
- */
- private void validAccessToken(HttpServletRequest request){
- if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null
- && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0
- && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_RPC_ACCESS_TOKEN))) {
- throw new XxlJobException("The access token is wrong.");
- }
- }
-
- /**
- * parse Param
- */
- private Object parseParam(String data, Class<?> parametrized, Class<?>... parameterClasses){
- Object param = null;
- try {
- if (parameterClasses != null) {
- param = JacksonUtil.readValue(data, parametrized, parameterClasses);
- } else {
- param = JacksonUtil.readValue(data, parametrized);
- }
- } catch (Exception e) { }
- if (param==null) {
- throw new XxlJobException("The request data invalid.");
- }
- return param;
- }
-
- // ---------------------- admin biz ----------------------
-
- /**
- * callback
- *
- * @param data
- * @return
- */
- @RequestMapping("/callback")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT<String> callback(HttpServletRequest request, @RequestBody(required = false) String data) {
- // valid
- validAccessToken(request);
-
- // param
- List<HandleCallbackParam> callbackParamList = (List<HandleCallbackParam>) parseParam(data, List.class, HandleCallbackParam.class);
-
- // invoke
- return adminBiz.callback(callbackParamList);
- }
-
-
-
- /**
- * registry
- *
- * @param data
- * @return
- */
- @RequestMapping("/registry")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT<String> registry(HttpServletRequest request, @RequestBody(required = false) String data) {
- // valid
- validAccessToken(request);
-
- // param
- RegistryParam registryParam = (RegistryParam) parseParam(data, RegistryParam.class);
-
- // invoke
- return adminBiz.registry(registryParam);
- }
-
- /**
- * registry remove
- *
- * @param data
- * @return
- */
- @RequestMapping("/registryRemove")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT<String> registryRemove(HttpServletRequest request, @RequestBody(required = false) String data) {
- // valid
- validAccessToken(request);
-
- // param
- RegistryParam registryParam = (RegistryParam) parseParam(data, RegistryParam.class);
-
- // invoke
- return adminBiz.registryRemove(registryParam);
- }
-
- // ---------------------- job biz ----------------------
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
deleted file mode 100644
index 559d965..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogGlueDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.List;
-
-/**
- * job code controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/jobcode")
-public class JobCodeController {
-
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobLogGlueDao xxlJobLogGlueDao;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, int jobId) {
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
- List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.findByJobId(jobId);
-
- if (jobInfo == null) {
- throw new RuntimeException(I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
- if (GlueTypeEnum.BEAN == GlueTypeEnum.match(jobInfo.getGlueType())) {
- throw new RuntimeException(I18nUtil.getString("jobinfo_glue_gluetype_unvalid"));
- }
-
- // valid permission
- JobInfoController.validPermission(request, jobInfo.getJobGroup());
-
- // Glue绫诲瀷-瀛楀吀
- model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());
-
- model.addAttribute("jobInfo", jobInfo);
- model.addAttribute("jobLogGlues", jobLogGlues);
- return "jobcode/jobcode.index";
- }
-
- @RequestMapping("/save")
- @ResponseBody
- public ReturnT<String> save(Model model, int id, String glueSource, String glueRemark) {
- // valid
- if (glueRemark==null) {
- return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_glue_remark")) );
- }
- if (glueRemark.length()<4 || glueRemark.length()>100) {
- return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_remark_limit"));
- }
- XxlJobInfo exists_jobInfo = xxlJobInfoDao.loadById(id);
- if (exists_jobInfo == null) {
- return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
-
- // update new code
- exists_jobInfo.setGlueSource(glueSource);
- exists_jobInfo.setGlueRemark(glueRemark);
- exists_jobInfo.setGlueUpdatetime(new Date());
-
- exists_jobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(exists_jobInfo);
-
- // log old code
- XxlJobLogGlue xxlJobLogGlue = new XxlJobLogGlue();
- xxlJobLogGlue.setJobId(exists_jobInfo.getId());
- xxlJobLogGlue.setGlueType(exists_jobInfo.getGlueType());
- xxlJobLogGlue.setGlueSource(glueSource);
- xxlJobLogGlue.setGlueRemark(glueRemark);
-
- xxlJobLogGlue.setAddTime(new Date());
- xxlJobLogGlue.setUpdateTime(new Date());
- xxlJobLogGlueDao.save(xxlJobLogGlue);
-
- // remove code backup more than 30
- xxlJobLogGlueDao.removeOld(exists_jobInfo.getId(), 30);
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
deleted file mode 100644
index 9376eb7..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobRegistryDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.RegistryConfig;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import java.util.*;
-
-/**
- * job group controller
- * @author xuxueli 2016-10-02 20:52:56
- */
-@Controller
-@RequestMapping("/jobgroup")
-public class JobGroupController {
-
- @Resource
- public XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
-
- @RequestMapping
- public String index(Model model) {
-
- // job group (executor)
- List<XxlJobGroup> list = xxlJobGroupDao.findAll();
-
- model.addAttribute("list", list);
- return "jobgroup/jobgroup.index";
- }
-
- @RequestMapping("/save")
- @ResponseBody
- public ReturnT<String> save(XxlJobGroup xxlJobGroup){
-
- // valid
- if (xxlJobGroup.getAppName()==null || xxlJobGroup.getAppName().trim().length()==0) {
- return new ReturnT<String>(500, (I18nUtil.getString("system_please_input")+"AppName") );
- }
- if (xxlJobGroup.getAppName().length()<4 || xxlJobGroup.getAppName().length()>64) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_appName_length") );
- }
- if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
- return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobgroup_field_title")) );
- }
- if (xxlJobGroup.getAddressType()!=0) {
- if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
- }
- String[] addresss = xxlJobGroup.getAddressList().split(",");
- for (String item: addresss) {
- if (item==null || item.trim().length()==0) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid") );
- }
- }
- }
-
- int ret = xxlJobGroupDao.save(xxlJobGroup);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- @RequestMapping("/update")
- @ResponseBody
- public ReturnT<String> update(XxlJobGroup xxlJobGroup){
- // valid
- if (xxlJobGroup.getAppName()==null || xxlJobGroup.getAppName().trim().length()==0) {
- return new ReturnT<String>(500, (I18nUtil.getString("system_please_input")+"AppName") );
- }
- if (xxlJobGroup.getAppName().length()<4 || xxlJobGroup.getAppName().length()>64) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_appName_length") );
- }
- if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
- return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobgroup_field_title")) );
- }
- if (xxlJobGroup.getAddressType() == 0) {
- // 0=鑷姩娉ㄥ唽
- List<String> registryList = findRegistryByAppName(xxlJobGroup.getAppName());
- String addressListStr = null;
- if (registryList!=null && !registryList.isEmpty()) {
- Collections.sort(registryList);
- addressListStr = "";
- for (String item:registryList) {
- addressListStr += item + ",";
- }
- addressListStr = addressListStr.substring(0, addressListStr.length()-1);
- }
- xxlJobGroup.setAddressList(addressListStr);
- } else {
- // 1=鎵嬪姩褰曞叆
- if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
- }
- String[] addresss = xxlJobGroup.getAddressList().split(",");
- for (String item: addresss) {
- if (item==null || item.trim().length()==0) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid") );
- }
- }
- }
-
- int ret = xxlJobGroupDao.update(xxlJobGroup);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- private List<String> findRegistryByAppName(String appNameParam){
- HashMap<String, List<String>> appAddressMap = new HashMap<String, List<String>>();
- List<XxlJobRegistry> list = xxlJobRegistryDao.findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (list != null) {
- for (XxlJobRegistry item: list) {
- if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
- String appName = item.getRegistryKey();
- List<String> registryList = appAddressMap.get(appName);
- if (registryList == null) {
- registryList = new ArrayList<String>();
- }
-
- if (!registryList.contains(item.getRegistryValue())) {
- registryList.add(item.getRegistryValue());
- }
- appAddressMap.put(appName, registryList);
- }
- }
- }
- return appAddressMap.get(appNameParam);
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- public ReturnT<String> remove(int id){
-
- // valid
- int count = xxlJobInfoDao.pageListCount(0, 10, id, -1, null, null, null);
- if (count > 0) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_del_limit_0") );
- }
-
- List<XxlJobGroup> allList = xxlJobGroupDao.findAll();
- if (allList.size() == 1) {
- return new ReturnT<String>(500, I18nUtil.getString("jobgroup_del_limit_1") );
- }
-
- int ret = xxlJobGroupDao.remove(id);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- @RequestMapping("/loadById")
- @ResponseBody
- public ReturnT<XxlJobGroup> loadById(int id){
- XxlJobGroup jobGroup = xxlJobGroupDao.load(id);
- return jobGroup!=null?new ReturnT<XxlJobGroup>(jobGroup):new ReturnT<XxlJobGroup>(ReturnT.FAIL_CODE, null);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
deleted file mode 100644
index ec9f37d..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import com.xxl.job.core.util.DateUtil;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.text.ParseException;
-import java.util.*;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/jobinfo")
-public class JobInfoController {
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobService xxlJobService;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) {
-
- // 鏋氫妇-瀛楀吀
- model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 璺敱绛栫暐-鍒楄〃
- model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); // Glue绫诲瀷-瀛楀吀
- model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); // 闃诲澶勭悊绛栫暐-瀛楀吀
-
- // 鎵ц鍣ㄥ垪琛�
- List<XxlJobGroup> jobGroupList_all = xxlJobGroupDao.findAll();
-
- // filter group
- List<XxlJobGroup> jobGroupList = filterJobGroupByRole(request, jobGroupList_all);
- if (jobGroupList==null || jobGroupList.size()==0) {
- throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
- }
-
- model.addAttribute("JobGroupList", jobGroupList);
- model.addAttribute("jobGroup", jobGroup);
-
- return "jobinfo/jobinfo.index";
- }
-
- public static List<XxlJobGroup> filterJobGroupByRole(HttpServletRequest request, List<XxlJobGroup> jobGroupList_all){
- List<XxlJobGroup> jobGroupList = new ArrayList<>();
- if (jobGroupList_all!=null && jobGroupList_all.size()>0) {
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getRole() == 1) {
- jobGroupList = jobGroupList_all;
- } else {
- List<String> groupIdStrs = new ArrayList<>();
- if (loginUser.getPermission()!=null && loginUser.getPermission().trim().length()>0) {
- groupIdStrs = Arrays.asList(loginUser.getPermission().trim().split(","));
- }
- for (XxlJobGroup groupItem:jobGroupList_all) {
- if (groupIdStrs.contains(String.valueOf(groupItem.getId()))) {
- jobGroupList.add(groupItem);
- }
- }
- }
- }
- return jobGroupList;
- }
- public static void validPermission(HttpServletRequest request, int jobGroup) {
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (!loginUser.validPermission(jobGroup)) {
- throw new RuntimeException(I18nUtil.getString("system_permission_limit") + "[username="+ loginUser.getUsername() +"]");
- }
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
-
- return xxlJobService.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
- }
-
- @RequestMapping("/add")
- @ResponseBody
- public ReturnT<String> add(XxlJobInfo jobInfo) {
- return xxlJobService.add(jobInfo);
- }
-
- @RequestMapping("/update")
- @ResponseBody
- public ReturnT<String> update(XxlJobInfo jobInfo) {
- return xxlJobService.update(jobInfo);
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- public ReturnT<String> remove(int id) {
- return xxlJobService.remove(id);
- }
-
- @RequestMapping("/stop")
- @ResponseBody
- public ReturnT<String> pause(int id) {
- return xxlJobService.stop(id);
- }
-
- @RequestMapping("/start")
- @ResponseBody
- public ReturnT<String> start(int id) {
- return xxlJobService.start(id);
- }
-
- @RequestMapping("/trigger")
- @ResponseBody
- //@PermissionLimit(limit = false)
- public ReturnT<String> triggerJob(int id, String executorParam) {
- // force cover job param
- if (executorParam == null) {
- executorParam = "";
- }
-
- JobTriggerPoolHelper.trigger(id, TriggerTypeEnum.MANUAL, -1, null, executorParam);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/nextTriggerTime")
- @ResponseBody
- public ReturnT<List<String>> nextTriggerTime(String cron) {
- List<String> result = new ArrayList<>();
- try {
- CronExpression cronExpression = new CronExpression(cron);
- Date lastTime = new Date();
- for (int i = 0; i < 5; i++) {
- lastTime = cronExpression.getNextValidTimeAfter(lastTime);
- if (lastTime != null) {
- result.add(DateUtil.formatDateTime(lastTime));
- } else {
- break;
- }
- }
- } catch (ParseException e) {
- return new ReturnT<List<String>>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid"));
- }
- return new ReturnT<List<String>>(result);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
deleted file mode 100644
index 309769c..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogDao;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.LogResult;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/joblog")
-public class JobLogController {
- private static Logger logger = LoggerFactory.getLogger(JobLogController.class);
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- public XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobLogDao xxlJobLogDao;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) {
-
- // 鎵ц鍣ㄥ垪琛�
- List<XxlJobGroup> jobGroupList_all = xxlJobGroupDao.findAll();
-
- // filter group
- List<XxlJobGroup> jobGroupList = JobInfoController.filterJobGroupByRole(request, jobGroupList_all);
- if (jobGroupList==null || jobGroupList.size()==0) {
- throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
- }
-
- model.addAttribute("JobGroupList", jobGroupList);
-
- // 浠诲姟
- if (jobId > 0) {
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
- if (jobInfo == null) {
- throw new RuntimeException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid"));
- }
-
- model.addAttribute("jobInfo", jobInfo);
-
- // valid permission
- JobInfoController.validPermission(request, jobInfo.getJobGroup());
- }
-
- return "joblog/joblog.index";
- }
-
- @RequestMapping("/getJobsByGroup")
- @ResponseBody
- public ReturnT<List<XxlJobInfo>> getJobsByGroup(int jobGroup){
- List<XxlJobInfo> list = xxlJobInfoDao.getJobsByGroup(jobGroup);
- return new ReturnT<List<XxlJobInfo>>(list);
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map<String, Object> pageList(HttpServletRequest request,
- @RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- int jobGroup, int jobId, int logStatus, String filterTime) {
-
- // valid permission
- JobInfoController.validPermission(request, jobGroup); // 浠呯鐞嗗憳鏀寔鏌ヨ鍏ㄩ儴锛涙櫘閫氱敤鎴蜂粎鏀寔鏌ヨ鏈夋潈闄愮殑 jobGroup
-
- // parse param
- Date triggerTimeStart = null;
- Date triggerTimeEnd = null;
- if (filterTime!=null && filterTime.trim().length()>0) {
- String[] temp = filterTime.split(" - ");
- if (temp.length == 2) {
- triggerTimeStart = DateUtil.parseDateTime(temp[0]);
- triggerTimeEnd = DateUtil.parseDateTime(temp[1]);
- }
- }
-
- // page query
- List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
- int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
-
- // package result
- Map<String, Object> maps = new HashMap<String, Object>();
- maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
- maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
- maps.put("data", list); // 鍒嗛〉鍒楄〃
- return maps;
- }
-
- @RequestMapping("/logDetailPage")
- public String logDetailPage(int id, Model model){
-
- // base check
- ReturnT<String> logStatue = ReturnT.SUCCESS;
- XxlJobLog jobLog = xxlJobLogDao.load(id);
- if (jobLog == null) {
- throw new RuntimeException(I18nUtil.getString("joblog_logid_unvalid"));
- }
-
- model.addAttribute("triggerCode", jobLog.getTriggerCode());
- model.addAttribute("handleCode", jobLog.getHandleCode());
- model.addAttribute("executorAddress", jobLog.getExecutorAddress());
- model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime());
- model.addAttribute("logId", jobLog.getId());
- return "joblog/joblog.detail";
- }
-
- @RequestMapping("/logDetailCat")
- @ResponseBody
- public ReturnT<LogResult> logDetailCat(String executorAddress, long triggerTime, long logId, int fromLineNum){
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(executorAddress);
- ReturnT<LogResult> logResult = executorBiz.log(triggerTime, logId, fromLineNum);
-
- // is end
- if (logResult.getContent()!=null && logResult.getContent().getFromLineNum() > logResult.getContent().getToLineNum()) {
- XxlJobLog jobLog = xxlJobLogDao.load(logId);
- if (jobLog.getHandleCode() > 0) {
- logResult.getContent().setEnd(true);
- }
- }
-
- return logResult;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<LogResult>(ReturnT.FAIL_CODE, e.getMessage());
- }
- }
-
- @RequestMapping("/logKill")
- @ResponseBody
- public ReturnT<String> logKill(int id){
- // base check
- XxlJobLog log = xxlJobLogDao.load(id);
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId());
- if (jobInfo==null) {
- return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
- if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
- return new ReturnT<String>(500, I18nUtil.getString("joblog_kill_log_limit"));
- }
-
- // request of kill
- ReturnT<String> runResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(log.getExecutorAddress());
- runResult = executorBiz.kill(jobInfo.getId());
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- runResult = new ReturnT<String>(500, e.getMessage());
- }
-
- if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
- log.setHandleCode(ReturnT.FAIL_CODE);
- log.setHandleMsg( I18nUtil.getString("joblog_kill_log_byman")+":" + (runResult.getMsg()!=null?runResult.getMsg():""));
- log.setHandleTime(new Date());
- xxlJobLogDao.updateHandleInfo(log);
- return new ReturnT<String>(runResult.getMsg());
- } else {
- return new ReturnT<String>(500, runResult.getMsg());
- }
- }
-
- @RequestMapping("/clearLog")
- @ResponseBody
- public ReturnT<String> clearLog(int jobGroup, int jobId, int type){
-
- Date clearBeforeTime = null;
- int clearBeforeNum = 0;
- if (type == 1) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -1); // 娓呯悊涓�涓湀涔嬪墠鏃ュ織鏁版嵁
- } else if (type == 2) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -3); // 娓呯悊涓変釜鏈堜箣鍓嶆棩蹇楁暟鎹�
- } else if (type == 3) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -6); // 娓呯悊鍏釜鏈堜箣鍓嶆棩蹇楁暟鎹�
- } else if (type == 4) {
- clearBeforeTime = DateUtil.addYears(new Date(), -1); // 娓呯悊涓�骞翠箣鍓嶆棩蹇楁暟鎹�
- } else if (type == 5) {
- clearBeforeNum = 1000; // 娓呯悊涓�鍗冩潯浠ュ墠鏃ュ織鏁版嵁
- } else if (type == 6) {
- clearBeforeNum = 10000; // 娓呯悊涓�涓囨潯浠ュ墠鏃ュ織鏁版嵁
- } else if (type == 7) {
- clearBeforeNum = 30000; // 娓呯悊涓変竾鏉′互鍓嶆棩蹇楁暟鎹�
- } else if (type == 8) {
- clearBeforeNum = 100000; // 娓呯悊鍗佷竾鏉′互鍓嶆棩蹇楁暟鎹�
- } else if (type == 9) {
- clearBeforeNum = 0; // 娓呯悊鎵�鏈夋棩蹇楁暟鎹�
- } else {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_clean_type_unvalid"));
- }
-
- List<Long> logIds = null;
- do {
- logIds = xxlJobLogDao.findClearLogIds(jobGroup, jobId, clearBeforeTime, clearBeforeNum, 1000);
- if (logIds!=null && logIds.size()>0) {
- xxlJobLogDao.clearLog(logIds);
- }
- } while (logIds!=null && logIds.size()>0);
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/UserController.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
deleted file mode 100644
index 573ffcc..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobUserDao;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.util.DigestUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author xuxueli 2019-05-04 16:39:50
- */
-@Controller
-@RequestMapping("/user")
-public class UserController {
-
- @Resource
- private XxlJobUserDao xxlJobUserDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
-
- @RequestMapping
- @PermissionLimit(adminuser = true)
- public String index(Model model) {
-
- // 鎵ц鍣ㄥ垪琛�
- List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
- model.addAttribute("groupList", groupList);
-
- return "user/user.index";
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- String username, int role) {
-
- // page list
- List<XxlJobUser> list = xxlJobUserDao.pageList(start, length, username, role);
- int list_count = xxlJobUserDao.pageListCount(start, length, username, role);
-
- // package result
- Map<String, Object> maps = new HashMap<String, Object>();
- maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
- maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
- maps.put("data", list); // 鍒嗛〉鍒楄〃
- return maps;
- }
-
- @RequestMapping("/add")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT<String> add(XxlJobUser xxlJobUser) {
-
- // valid username
- if (!StringUtils.hasText(xxlJobUser.getUsername())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") );
- }
- xxlJobUser.setUsername(xxlJobUser.getUsername().trim());
- if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
- }
- // valid password
- if (!StringUtils.hasText(xxlJobUser.getPassword())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") );
- }
- xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
- if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
- }
- // md5 password
- xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
-
- // check repeat
- XxlJobUser existUser = xxlJobUserDao.loadByUserName(xxlJobUser.getUsername());
- if (existUser != null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("user_username_repeat") );
- }
-
- // write
- xxlJobUserDao.save(xxlJobUser);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/update")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT<String> update(HttpServletRequest request, XxlJobUser xxlJobUser) {
-
- // avoid opt login seft
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getUsername().equals(xxlJobUser.getUsername())) {
- return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
- }
-
- // valid password
- if (StringUtils.hasText(xxlJobUser.getPassword())) {
- xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
- if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
- }
- // md5 password
- xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
- } else {
- xxlJobUser.setPassword(null);
- }
-
- // write
- xxlJobUserDao.update(xxlJobUser);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT<String> remove(HttpServletRequest request, int id) {
-
- // avoid opt login seft
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getId() == id) {
- return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
- }
-
- xxlJobUserDao.delete(id);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/updatePwd")
- @ResponseBody
- public ReturnT<String> updatePwd(HttpServletRequest request, String password){
-
- // valid password
- if (password==null || password.trim().length()==0){
- return new ReturnT<String>(ReturnT.FAIL.getCode(), "瀵嗙爜涓嶅彲涓虹┖");
- }
- password = password.trim();
- if (!(password.length()>=4 && password.length()<=20)) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
- }
-
- // md5 password
- String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());
-
- // update pwd
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
-
- // do write
- XxlJobUser existUser = xxlJobUserDao.loadByUserName(loginUser.getUsername());
- existUser.setPassword(md5Password);
- xxlJobUserDao.update(existUser);
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
deleted file mode 100644
index 379efd4..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.xxl.job.admin.controller.annotation;
-
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 鏉冮檺闄愬埗
- * @author xuxueli 2015-12-12 18:29:02
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface PermissionLimit {
-
- /**
- * 鐧诲綍鎷︽埅 (榛樿鎷︽埅)
- */
- boolean limit() default true;
-
- /**
- * 瑕佹眰绠$悊鍛樻潈闄�
- *
- * @return
- */
- boolean adminuser() default false;
-
-}
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
deleted file mode 100644
index 57c1c08..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import com.xxl.job.admin.core.util.FtlUtil;
-import com.xxl.job.admin.core.util.I18nUtil;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-
-/**
- * push cookies to model as cookieMap
- *
- * @author xuxueli 2015-12-12 18:09:04
- */
-@Component
-public class CookieInterceptor extends HandlerInterceptorAdapter {
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
-
- // cookie
- if (modelAndView!=null && request.getCookies()!=null && request.getCookies().length>0) {
- HashMap<String, Cookie> cookieMap = new HashMap<String, Cookie>();
- for (Cookie ck : request.getCookies()) {
- cookieMap.put(ck.getName(), ck);
- }
- modelAndView.addObject("cookieMap", cookieMap);
- }
-
- // static method
- if (modelAndView != null) {
- modelAndView.addObject("I18nUtil", FtlUtil.generateStaticModel(I18nUtil.class.getName()));
- }
-
- super.postHandle(request, response, handler, modelAndView);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
deleted file mode 100644
index 12d0517..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.service.LoginService;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * 鏉冮檺鎷︽埅
- *
- * @author xuxueli 2015-12-12 18:09:04
- */
-@Component
-public class PermissionInterceptor extends HandlerInterceptorAdapter {
-
- @Resource
- private LoginService loginService;
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-
- if (!(handler instanceof HandlerMethod)) {
- return super.preHandle(request, response, handler);
- }
-
- // if need login
- boolean needLogin = true;
- boolean needAdminuser = false;
- HandlerMethod method = (HandlerMethod)handler;
- PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
- if (permission!=null) {
- needLogin = permission.limit();
- needAdminuser = permission.adminuser();
- }
-
- if (needLogin) {
- XxlJobUser loginUser = loginService.ifLogin(request, response);
- if (loginUser == null) {
- response.sendRedirect(request.getContextPath() + "/toLogin");
- //request.getRequestDispatcher("/toLogin").forward(request, response);
- return false;
- }
- if (needAdminuser && loginUser.getRole()!=1) {
- throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
- }
- request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
- }
-
- return super.preHandle(request, response, handler);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
deleted file mode 100644
index a9dd7b5..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-/**
- * web mvc config
- *
- * @author xuxueli 2018-04-02 20:48:20
- */
-@Configuration(proxyBeanMethods = false)
-public class WebMvcConfig extends WebMvcConfigurerAdapter {
-
- @Autowired
- private PermissionInterceptor permissionInterceptor;
- @Autowired
- private CookieInterceptor cookieInterceptor;
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(permissionInterceptor).addPathPatterns("/**");
- registry.addInterceptor(cookieInterceptor).addPathPatterns("/**");
- super.addInterceptors(registry);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
deleted file mode 100644
index 5b14353..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.xxl.job.admin.controller.resolver;
-
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.admin.core.util.JacksonUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.HandlerExceptionResolver;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * common exception resolver
- *
- * @author xuxueli 2016-1-6 19:22:18
- */
-@Component
-public class WebExceptionResolver implements HandlerExceptionResolver {
- private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class);
-
- @Override
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex) {
-
- if (!(ex instanceof XxlJobException)) {
- logger.error("WebExceptionResolver:{}", ex);
- }
-
- // if json
- boolean isJson = false;
- HandlerMethod method = (HandlerMethod)handler;
- ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class);
- if (responseBody != null) {
- isJson = true;
- }
-
- // error result
- ReturnT<String> errorResult = new ReturnT<String>(ReturnT.FAIL_CODE, ex.toString().replaceAll("\n", "<br/>"));
-
- // response
- ModelAndView mv = new ModelAndView();
- if (isJson) {
- try {
- response.setContentType("application/json;charset=utf-8");
- response.getWriter().print(JacksonUtil.writeValueAsString(errorResult));
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return mv;
- } else {
-
- mv.addObject("exceptionMsg", errorResult.getMsg());
- mv.setViewName("/common/common.exception");
- return mv;
- }
- }
-
-}
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
deleted file mode 100644
index 7fc2644..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.xxl.job.admin.core.conf;
-
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.dao.*;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import javax.sql.DataSource;
-
-/**
- * xxl-job config
- *
- * @author xuxueli 2017-04-28
- */
-
-@Component
-public class XxlJobAdminConfig implements InitializingBean, DisposableBean {
-
- private static XxlJobAdminConfig adminConfig = null;
- public static XxlJobAdminConfig getAdminConfig() {
- return adminConfig;
- }
-
-
- // ---------------------- XxlJobScheduler ----------------------
-
- private XxlJobScheduler xxlJobScheduler;
-
- @Override
- public void afterPropertiesSet() throws Exception {
- adminConfig = this;
-
- xxlJobScheduler = new XxlJobScheduler();
- xxlJobScheduler.init();
- }
-
- @Override
- public void destroy() throws Exception {
- xxlJobScheduler.destroy();
- }
-
-
- // ---------------------- XxlJobScheduler ----------------------
-
- // conf
- @Value("${xxl.job.i18n}")
- private String i18n;
-
- @Value("${xxl.job.accessToken}")
- private String accessToken;
-
- @Value("${spring.mail.username}")
- private String emailUserName;
-
- @Value("${xxl.job.triggerpool.fast.max}")
- private int triggerPoolFastMax;
-
- @Value("${xxl.job.triggerpool.slow.max}")
- private int triggerPoolSlowMax;
-
- @Value("${xxl.job.logretentiondays}")
- private int logretentiondays;
-
- // dao, service
-
- @Resource
- private XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobLogReportDao xxlJobLogReportDao;
- @Resource
- private JavaMailSender mailSender;
- @Resource
- private DataSource dataSource;
-
-
- public String getI18n() {
- return i18n;
- }
-
- public String getAccessToken() {
- return accessToken;
- }
-
- public String getEmailUserName() {
- return emailUserName;
- }
-
- public int getTriggerPoolFastMax() {
- if (triggerPoolFastMax < 200) {
- return 200;
- }
- return triggerPoolFastMax;
- }
-
- public int getTriggerPoolSlowMax() {
- if (triggerPoolSlowMax < 100) {
- return 100;
- }
- return triggerPoolSlowMax;
- }
-
- public int getLogretentiondays() {
- if (logretentiondays < 7) {
- return -1; // Limit greater than or equal to 7, otherwise close
- }
- return logretentiondays;
- }
-
- public XxlJobLogDao getXxlJobLogDao() {
- return xxlJobLogDao;
- }
-
- public XxlJobInfoDao getXxlJobInfoDao() {
- return xxlJobInfoDao;
- }
-
- public XxlJobRegistryDao getXxlJobRegistryDao() {
- return xxlJobRegistryDao;
- }
-
- public XxlJobGroupDao getXxlJobGroupDao() {
- return xxlJobGroupDao;
- }
-
- public XxlJobLogReportDao getXxlJobLogReportDao() {
- return xxlJobLogReportDao;
- }
-
- public JavaMailSender getMailSender() {
- return mailSender;
- }
-
- public DataSource getDataSource() {
- return dataSource;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
deleted file mode 100644
index fce2352..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
+++ /dev/null
@@ -1,1666 +0,0 @@
-/*
- * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package com.xxl.job.admin.core.cron;
-
-import java.io.Serializable;
-import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.StringTokenizer;
-import java.util.TimeZone;
-import java.util.TreeSet;
-
-/**
- * Provides a parser and evaluator for unix-like cron expressions. Cron
- * expressions provide the ability to specify complex time combinations such as
- * "At 8:00am every Monday through Friday" or "At 1:30am every
- * last Friday of the month".
- * <P>
- * Cron expressions are comprised of 6 required fields and one optional field
- * separated by white space. The fields respectively are described as follows:
- *
- * <table cellspacing="8">
- * <tr>
- * <th align="left">Field Name</th>
- * <th align="left"> </th>
- * <th align="left">Allowed Values</th>
- * <th align="left"> </th>
- * <th align="left">Allowed Special Characters</th>
- * </tr>
- * <tr>
- * <td align="left"><code>Seconds</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>0-59</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * /</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Minutes</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>0-59</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * /</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Hours</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>0-23</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * /</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Day-of-month</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>1-31</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * ? / L W</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Month</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>0-11 or JAN-DEC</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * /</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Day-of-Week</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>1-7 or SUN-SAT</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * ? / L #</code></td>
- * </tr>
- * <tr>
- * <td align="left"><code>Year (Optional)</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>empty, 1970-2199</code></td>
- * <td align="left"> </th>
- * <td align="left"><code>, - * /</code></td>
- * </tr>
- * </table>
- * <P>
- * The '*' character is used to specify all values. For example, "*"
- * in the minute field means "every minute".
- * <P>
- * The '?' character is allowed for the day-of-month and day-of-week fields. It
- * is used to specify 'no specific value'. This is useful when you need to
- * specify something in one of the two fields, but not the other.
- * <P>
- * The '-' character is used to specify ranges For example "10-12" in
- * the hour field means "the hours 10, 11 and 12".
- * <P>
- * The ',' character is used to specify additional values. For example
- * "MON,WED,FRI" in the day-of-week field means "the days Monday,
- * Wednesday, and Friday".
- * <P>
- * The '/' character is used to specify increments. For example "0/15"
- * in the seconds field means "the seconds 0, 15, 30, and 45". And
- * "5/15" in the seconds field means "the seconds 5, 20, 35, and
- * 50". Specifying '*' before the '/' is equivalent to specifying 0 is
- * the value to start with. Essentially, for each field in the expression, there
- * is a set of numbers that can be turned on or off. For seconds and minutes,
- * the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to
- * 31, and for months 0 to 11 (JAN to DEC). The "/" character simply helps you turn
- * on every "nth" value in the given set. Thus "7/6" in the
- * month field only turns on month "7", it does NOT mean every 6th
- * month, please note that subtlety.
- * <P>
- * The 'L' character is allowed for the day-of-month and day-of-week fields.
- * This character is short-hand for "last", but it has different
- * meaning in each of the two fields. For example, the value "L" in
- * the day-of-month field means "the last day of the month" - day 31
- * for January, day 28 for February on non-leap years. If used in the
- * day-of-week field by itself, it simply means "7" or
- * "SAT". But if used in the day-of-week field after another value, it
- * means "the last xxx day of the month" - for example "6L"
- * means "the last friday of the month". You can also specify an offset
- * from the last day of the month, such as "L-3" which would mean the third-to-last
- * day of the calendar month. <i>When using the 'L' option, it is important not to
- * specify lists, or ranges of values, as you'll get confusing/unexpected results.</i>
- * <P>
- * The 'W' character is allowed for the day-of-month field. This character
- * is used to specify the weekday (Monday-Friday) nearest the given day. As an
- * example, if you were to specify "15W" as the value for the
- * day-of-month field, the meaning is: "the nearest weekday to the 15th of
- * the month". So if the 15th is a Saturday, the trigger will fire on
- * Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the
- * 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th.
- * However if you specify "1W" as the value for day-of-month, and the
- * 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not
- * 'jump' over the boundary of a month's days. The 'W' character can only be
- * specified when the day-of-month is a single day, not a range or list of days.
- * <P>
- * The 'L' and 'W' characters can also be combined for the day-of-month
- * expression to yield 'LW', which translates to "last weekday of the
- * month".
- * <P>
- * The '#' character is allowed for the day-of-week field. This character is
- * used to specify "the nth" XXX day of the month. For example, the
- * value of "6#3" in the day-of-week field means the third Friday of
- * the month (day 6 = Friday and "#3" = the 3rd one in the month).
- * Other examples: "2#1" = the first Monday of the month and
- * "4#5" = the fifth Wednesday of the month. Note that if you specify
- * "#5" and there is not 5 of the given day-of-week in the month, then
- * no firing will occur that month. If the '#' character is used, there can
- * only be one expression in the day-of-week field ("3#1,6#3" is
- * not valid, since there are two expressions).
- * <P>
- * <!--The 'C' character is allowed for the day-of-month and day-of-week fields.
- * This character is short-hand for "calendar". This means values are
- * calculated against the associated calendar, if any. If no calendar is
- * associated, then it is equivalent to having an all-inclusive calendar. A
- * value of "5C" in the day-of-month field means "the first day included by the
- * calendar on or after the 5th". A value of "1C" in the day-of-week field
- * means "the first day included by the calendar on or after Sunday".-->
- * <P>
- * The legal characters and the names of months and days of the week are not
- * case sensitive.
- *
- * <p>
- * <b>NOTES:</b>
- * <ul>
- * <li>Support for specifying both a day-of-week and a day-of-month value is
- * not complete (you'll need to use the '?' character in one of these fields).
- * </li>
- * <li>Overflowing ranges is supported - that is, having a larger number on
- * the left hand side than the right. You might do 22-2 to catch 10 o'clock
- * at night until 2 o'clock in the morning, or you might have NOV-FEB. It is
- * very important to note that overuse of overflowing ranges creates ranges
- * that don't make sense and no effort has been made to determine which
- * interpretation CronExpression chooses. An example would be
- * "0 0 14-6 ? * FRI-MON". </li>
- * </ul>
- * </p>
- *
- *
- * @author Sharada Jambula, James House
- * @author Contributions from Mads Henderson
- * @author Refactoring from CronTrigger to CronExpression by Aaron Craven
- *
- * Borrowed from quartz v2.3.1
- *
- */
-public final class CronExpression implements Serializable, Cloneable {
-
- private static final long serialVersionUID = 12423409423L;
-
- protected static final int SECOND = 0;
- protected static final int MINUTE = 1;
- protected static final int HOUR = 2;
- protected static final int DAY_OF_MONTH = 3;
- protected static final int MONTH = 4;
- protected static final int DAY_OF_WEEK = 5;
- protected static final int YEAR = 6;
- protected static final int ALL_SPEC_INT = 99; // '*'
- protected static final int NO_SPEC_INT = 98; // '?'
- protected static final Integer ALL_SPEC = ALL_SPEC_INT;
- protected static final Integer NO_SPEC = NO_SPEC_INT;
-
- protected static final Map<String, Integer> monthMap = new HashMap<String, Integer>(20);
- protected static final Map<String, Integer> dayMap = new HashMap<String, Integer>(60);
- static {
- monthMap.put("JAN", 0);
- monthMap.put("FEB", 1);
- monthMap.put("MAR", 2);
- monthMap.put("APR", 3);
- monthMap.put("MAY", 4);
- monthMap.put("JUN", 5);
- monthMap.put("JUL", 6);
- monthMap.put("AUG", 7);
- monthMap.put("SEP", 8);
- monthMap.put("OCT", 9);
- monthMap.put("NOV", 10);
- monthMap.put("DEC", 11);
-
- dayMap.put("SUN", 1);
- dayMap.put("MON", 2);
- dayMap.put("TUE", 3);
- dayMap.put("WED", 4);
- dayMap.put("THU", 5);
- dayMap.put("FRI", 6);
- dayMap.put("SAT", 7);
- }
-
- private final String cronExpression;
- private TimeZone timeZone = null;
- protected transient TreeSet<Integer> seconds;
- protected transient TreeSet<Integer> minutes;
- protected transient TreeSet<Integer> hours;
- protected transient TreeSet<Integer> daysOfMonth;
- protected transient TreeSet<Integer> months;
- protected transient TreeSet<Integer> daysOfWeek;
- protected transient TreeSet<Integer> years;
-
- protected transient boolean lastdayOfWeek = false;
- protected transient int nthdayOfWeek = 0;
- protected transient boolean lastdayOfMonth = false;
- protected transient boolean nearestWeekday = false;
- protected transient int lastdayOffset = 0;
- protected transient boolean expressionParsed = false;
-
- public static final int MAX_YEAR = Calendar.getInstance().get(Calendar.YEAR) + 100;
-
- /**
- * Constructs a new <CODE>CronExpression</CODE> based on the specified
- * parameter.
- *
- * @param cronExpression String representation of the cron expression the
- * new object should represent
- * @throws java.text.ParseException
- * if the string expression cannot be parsed into a valid
- * <CODE>CronExpression</CODE>
- */
- public CronExpression(String cronExpression) throws ParseException {
- if (cronExpression == null) {
- throw new IllegalArgumentException("cronExpression cannot be null");
- }
-
- this.cronExpression = cronExpression.toUpperCase(Locale.US);
-
- buildExpression(this.cronExpression);
- }
-
- /**
- * Constructs a new {@code CronExpression} as a copy of an existing
- * instance.
- *
- * @param expression
- * The existing cron expression to be copied
- */
- public CronExpression(CronExpression expression) {
- /*
- * We don't call the other constructor here since we need to swallow the
- * ParseException. We also elide some of the sanity checking as it is
- * not logically trippable.
- */
- this.cronExpression = expression.getCronExpression();
- try {
- buildExpression(cronExpression);
- } catch (ParseException ex) {
- throw new AssertionError();
- }
- if (expression.getTimeZone() != null) {
- setTimeZone((TimeZone) expression.getTimeZone().clone());
- }
- }
-
- /**
- * Indicates whether the given date satisfies the cron expression. Note that
- * milliseconds are ignored, so two Dates falling on different milliseconds
- * of the same second will always have the same result here.
- *
- * @param date the date to evaluate
- * @return a boolean indicating whether the given date satisfies the cron
- * expression
- */
- public boolean isSatisfiedBy(Date date) {
- Calendar testDateCal = Calendar.getInstance(getTimeZone());
- testDateCal.setTime(date);
- testDateCal.set(Calendar.MILLISECOND, 0);
- Date originalDate = testDateCal.getTime();
-
- testDateCal.add(Calendar.SECOND, -1);
-
- Date timeAfter = getTimeAfter(testDateCal.getTime());
-
- return ((timeAfter != null) && (timeAfter.equals(originalDate)));
- }
-
- /**
- * Returns the next date/time <I>after</I> the given date/time which
- * satisfies the cron expression.
- *
- * @param date the date/time at which to begin the search for the next valid
- * date/time
- * @return the next valid date/time
- */
- public Date getNextValidTimeAfter(Date date) {
- return getTimeAfter(date);
- }
-
- /**
- * Returns the next date/time <I>after</I> the given date/time which does
- * <I>not</I> satisfy the expression
- *
- * @param date the date/time at which to begin the search for the next
- * invalid date/time
- * @return the next valid date/time
- */
- public Date getNextInvalidTimeAfter(Date date) {
- long difference = 1000;
-
- //move back to the nearest second so differences will be accurate
- Calendar adjustCal = Calendar.getInstance(getTimeZone());
- adjustCal.setTime(date);
- adjustCal.set(Calendar.MILLISECOND, 0);
- Date lastDate = adjustCal.getTime();
-
- Date newDate;
-
- //FUTURE_TODO: (QUARTZ-481) IMPROVE THIS! The following is a BAD solution to this problem. Performance will be very bad here, depending on the cron expression. It is, however A solution.
-
- //keep getting the next included time until it's farther than one second
- // apart. At that point, lastDate is the last valid fire time. We return
- // the second immediately following it.
- while (difference == 1000) {
- newDate = getTimeAfter(lastDate);
- if(newDate == null)
- break;
-
- difference = newDate.getTime() - lastDate.getTime();
-
- if (difference == 1000) {
- lastDate = newDate;
- }
- }
-
- return new Date(lastDate.getTime() + 1000);
- }
-
- /**
- * Returns the time zone for which this <code>CronExpression</code>
- * will be resolved.
- */
- public TimeZone getTimeZone() {
- if (timeZone == null) {
- timeZone = TimeZone.getDefault();
- }
-
- return timeZone;
- }
-
- /**
- * Sets the time zone for which this <code>CronExpression</code>
- * will be resolved.
- */
- public void setTimeZone(TimeZone timeZone) {
- this.timeZone = timeZone;
- }
-
- /**
- * Returns the string representation of the <CODE>CronExpression</CODE>
- *
- * @return a string representation of the <CODE>CronExpression</CODE>
- */
- @Override
- public String toString() {
- return cronExpression;
- }
-
- /**
- * Indicates whether the specified cron expression can be parsed into a
- * valid cron expression
- *
- * @param cronExpression the expression to evaluate
- * @return a boolean indicating whether the given expression is a valid cron
- * expression
- */
- public static boolean isValidExpression(String cronExpression) {
-
- try {
- new CronExpression(cronExpression);
- } catch (ParseException pe) {
- return false;
- }
-
- return true;
- }
-
- public static void validateExpression(String cronExpression) throws ParseException {
-
- new CronExpression(cronExpression);
- }
-
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Expression Parsing Functions
- //
- ////////////////////////////////////////////////////////////////////////////
-
- protected void buildExpression(String expression) throws ParseException {
- expressionParsed = true;
-
- try {
-
- if (seconds == null) {
- seconds = new TreeSet<Integer>();
- }
- if (minutes == null) {
- minutes = new TreeSet<Integer>();
- }
- if (hours == null) {
- hours = new TreeSet<Integer>();
- }
- if (daysOfMonth == null) {
- daysOfMonth = new TreeSet<Integer>();
- }
- if (months == null) {
- months = new TreeSet<Integer>();
- }
- if (daysOfWeek == null) {
- daysOfWeek = new TreeSet<Integer>();
- }
- if (years == null) {
- years = new TreeSet<Integer>();
- }
-
- int exprOn = SECOND;
-
- StringTokenizer exprsTok = new StringTokenizer(expression, " \t",
- false);
-
- while (exprsTok.hasMoreTokens() && exprOn <= YEAR) {
- String expr = exprsTok.nextToken().trim();
-
- // throw an exception if L is used with other days of the month
- if(exprOn == DAY_OF_MONTH && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
- throw new ParseException("Support for specifying 'L' and 'LW' with other days of the month is not implemented", -1);
- }
- // throw an exception if L is used with other days of the week
- if(exprOn == DAY_OF_WEEK && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
- throw new ParseException("Support for specifying 'L' with other days of the week is not implemented", -1);
- }
- if(exprOn == DAY_OF_WEEK && expr.indexOf('#') != -1 && expr.indexOf('#', expr.indexOf('#') +1) != -1) {
- throw new ParseException("Support for specifying multiple \"nth\" days is not implemented.", -1);
- }
-
- StringTokenizer vTok = new StringTokenizer(expr, ",");
- while (vTok.hasMoreTokens()) {
- String v = vTok.nextToken();
- storeExpressionVals(0, v, exprOn);
- }
-
- exprOn++;
- }
-
- if (exprOn <= DAY_OF_WEEK) {
- throw new ParseException("Unexpected end of expression.",
- expression.length());
- }
-
- if (exprOn <= YEAR) {
- storeExpressionVals(0, "*", YEAR);
- }
-
- TreeSet<Integer> dow = getSet(DAY_OF_WEEK);
- TreeSet<Integer> dom = getSet(DAY_OF_MONTH);
-
- // Copying the logic from the UnsupportedOperationException below
- boolean dayOfMSpec = !dom.contains(NO_SPEC);
- boolean dayOfWSpec = !dow.contains(NO_SPEC);
-
- if (!dayOfMSpec || dayOfWSpec) {
- if (!dayOfWSpec || dayOfMSpec) {
- throw new ParseException(
- "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.", 0);
- }
- }
- } catch (ParseException pe) {
- throw pe;
- } catch (Exception e) {
- throw new ParseException("Illegal cron expression format ("
- + e.toString() + ")", 0);
- }
- }
-
- protected int storeExpressionVals(int pos, String s, int type)
- throws ParseException {
-
- int incr = 0;
- int i = skipWhiteSpace(pos, s);
- if (i >= s.length()) {
- return i;
- }
- char c = s.charAt(i);
- if ((c >= 'A') && (c <= 'Z') && (!s.equals("L")) && (!s.equals("LW")) && (!s.matches("^L-[0-9]*[W]?"))) {
- String sub = s.substring(i, i + 3);
- int sval = -1;
- int eval = -1;
- if (type == MONTH) {
- sval = getMonthNumber(sub) + 1;
- if (sval <= 0) {
- throw new ParseException("Invalid Month value: '" + sub + "'", i);
- }
- if (s.length() > i + 3) {
- c = s.charAt(i + 3);
- if (c == '-') {
- i += 4;
- sub = s.substring(i, i + 3);
- eval = getMonthNumber(sub) + 1;
- if (eval <= 0) {
- throw new ParseException("Invalid Month value: '" + sub + "'", i);
- }
- }
- }
- } else if (type == DAY_OF_WEEK) {
- sval = getDayOfWeekNumber(sub);
- if (sval < 0) {
- throw new ParseException("Invalid Day-of-Week value: '"
- + sub + "'", i);
- }
- if (s.length() > i + 3) {
- c = s.charAt(i + 3);
- if (c == '-') {
- i += 4;
- sub = s.substring(i, i + 3);
- eval = getDayOfWeekNumber(sub);
- if (eval < 0) {
- throw new ParseException(
- "Invalid Day-of-Week value: '" + sub
- + "'", i);
- }
- } else if (c == '#') {
- try {
- i += 4;
- nthdayOfWeek = Integer.parseInt(s.substring(i));
- if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
- throw new Exception();
- }
- } catch (Exception e) {
- throw new ParseException(
- "A numeric value between 1 and 5 must follow the '#' option",
- i);
- }
- } else if (c == 'L') {
- lastdayOfWeek = true;
- i++;
- }
- }
-
- } else {
- throw new ParseException(
- "Illegal characters for this position: '" + sub + "'",
- i);
- }
- if (eval != -1) {
- incr = 1;
- }
- addToSet(sval, eval, incr, type);
- return (i + 3);
- }
-
- if (c == '?') {
- i++;
- if ((i + 1) < s.length()
- && (s.charAt(i) != ' ' && s.charAt(i + 1) != '\t')) {
- throw new ParseException("Illegal character after '?': "
- + s.charAt(i), i);
- }
- if (type != DAY_OF_WEEK && type != DAY_OF_MONTH) {
- throw new ParseException(
- "'?' can only be specified for Day-of-Month or Day-of-Week.",
- i);
- }
- if (type == DAY_OF_WEEK && !lastdayOfMonth) {
- int val = daysOfMonth.last();
- if (val == NO_SPEC_INT) {
- throw new ParseException(
- "'?' can only be specified for Day-of-Month -OR- Day-of-Week.",
- i);
- }
- }
-
- addToSet(NO_SPEC_INT, -1, 0, type);
- return i;
- }
-
- if (c == '*' || c == '/') {
- if (c == '*' && (i + 1) >= s.length()) {
- addToSet(ALL_SPEC_INT, -1, incr, type);
- return i + 1;
- } else if (c == '/'
- && ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s
- .charAt(i + 1) == '\t')) {
- throw new ParseException("'/' must be followed by an integer.", i);
- } else if (c == '*') {
- i++;
- }
- c = s.charAt(i);
- if (c == '/') { // is an increment specified?
- i++;
- if (i >= s.length()) {
- throw new ParseException("Unexpected end of string.", i);
- }
-
- incr = getNumericValue(s, i);
-
- i++;
- if (incr > 10) {
- i++;
- }
- checkIncrementRange(incr, type, i);
- } else {
- incr = 1;
- }
-
- addToSet(ALL_SPEC_INT, -1, incr, type);
- return i;
- } else if (c == 'L') {
- i++;
- if (type == DAY_OF_MONTH) {
- lastdayOfMonth = true;
- }
- if (type == DAY_OF_WEEK) {
- addToSet(7, 7, 0, type);
- }
- if(type == DAY_OF_MONTH && s.length() > i) {
- c = s.charAt(i);
- if(c == '-') {
- ValueSet vs = getValue(0, s, i+1);
- lastdayOffset = vs.value;
- if(lastdayOffset > 30)
- throw new ParseException("Offset from last day must be <= 30", i+1);
- i = vs.pos;
- }
- if(s.length() > i) {
- c = s.charAt(i);
- if(c == 'W') {
- nearestWeekday = true;
- i++;
- }
- }
- }
- return i;
- } else if (c >= '0' && c <= '9') {
- int val = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- addToSet(val, -1, -1, type);
- } else {
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(val, s, i);
- val = vs.value;
- i = vs.pos;
- }
- i = checkNext(i, s, val, type);
- return i;
- }
- } else {
- throw new ParseException("Unexpected character: " + c, i);
- }
-
- return i;
- }
-
- private void checkIncrementRange(int incr, int type, int idxPos) throws ParseException {
- if (incr > 59 && (type == SECOND || type == MINUTE)) {
- throw new ParseException("Increment > 60 : " + incr, idxPos);
- } else if (incr > 23 && (type == HOUR)) {
- throw new ParseException("Increment > 24 : " + incr, idxPos);
- } else if (incr > 31 && (type == DAY_OF_MONTH)) {
- throw new ParseException("Increment > 31 : " + incr, idxPos);
- } else if (incr > 7 && (type == DAY_OF_WEEK)) {
- throw new ParseException("Increment > 7 : " + incr, idxPos);
- } else if (incr > 12 && (type == MONTH)) {
- throw new ParseException("Increment > 12 : " + incr, idxPos);
- }
- }
-
- protected int checkNext(int pos, String s, int val, int type)
- throws ParseException {
-
- int end = -1;
- int i = pos;
-
- if (i >= s.length()) {
- addToSet(val, end, -1, type);
- return i;
- }
-
- char c = s.charAt(pos);
-
- if (c == 'L') {
- if (type == DAY_OF_WEEK) {
- if(val < 1 || val > 7)
- throw new ParseException("Day-of-Week values must be between 1 and 7", -1);
- lastdayOfWeek = true;
- } else {
- throw new ParseException("'L' option is not valid here. (pos=" + i + ")", i);
- }
- TreeSet<Integer> set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- if (c == 'W') {
- if (type == DAY_OF_MONTH) {
- nearestWeekday = true;
- } else {
- throw new ParseException("'W' option is not valid here. (pos=" + i + ")", i);
- }
- if(val > 31)
- throw new ParseException("The 'W' option does not make sense with values larger than 31 (max number of days in a month)", i);
- TreeSet<Integer> set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- if (c == '#') {
- if (type != DAY_OF_WEEK) {
- throw new ParseException("'#' option is not valid here. (pos=" + i + ")", i);
- }
- i++;
- try {
- nthdayOfWeek = Integer.parseInt(s.substring(i));
- if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
- throw new Exception();
- }
- } catch (Exception e) {
- throw new ParseException(
- "A numeric value between 1 and 5 must follow the '#' option",
- i);
- }
-
- TreeSet<Integer> set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- if (c == '-') {
- i++;
- c = s.charAt(i);
- int v = Integer.parseInt(String.valueOf(c));
- end = v;
- i++;
- if (i >= s.length()) {
- addToSet(val, end, 1, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v, s, i);
- end = vs.value;
- i = vs.pos;
- }
- if (i < s.length() && ((c = s.charAt(i)) == '/')) {
- i++;
- c = s.charAt(i);
- int v2 = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- addToSet(val, end, v2, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v2, s, i);
- int v3 = vs.value;
- addToSet(val, end, v3, type);
- i = vs.pos;
- return i;
- } else {
- addToSet(val, end, v2, type);
- return i;
- }
- } else {
- addToSet(val, end, 1, type);
- return i;
- }
- }
-
- if (c == '/') {
- if ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s.charAt(i + 1) == '\t') {
- throw new ParseException("'/' must be followed by an integer.", i);
- }
-
- i++;
- c = s.charAt(i);
- int v2 = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- checkIncrementRange(v2, type, i);
- addToSet(val, end, v2, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v2, s, i);
- int v3 = vs.value;
- checkIncrementRange(v3, type, i);
- addToSet(val, end, v3, type);
- i = vs.pos;
- return i;
- } else {
- throw new ParseException("Unexpected character '" + c + "' after '/'", i);
- }
- }
-
- addToSet(val, end, 0, type);
- i++;
- return i;
- }
-
- public String getCronExpression() {
- return cronExpression;
- }
-
- public String getExpressionSummary() {
- StringBuilder buf = new StringBuilder();
-
- buf.append("seconds: ");
- buf.append(getExpressionSetSummary(seconds));
- buf.append("\n");
- buf.append("minutes: ");
- buf.append(getExpressionSetSummary(minutes));
- buf.append("\n");
- buf.append("hours: ");
- buf.append(getExpressionSetSummary(hours));
- buf.append("\n");
- buf.append("daysOfMonth: ");
- buf.append(getExpressionSetSummary(daysOfMonth));
- buf.append("\n");
- buf.append("months: ");
- buf.append(getExpressionSetSummary(months));
- buf.append("\n");
- buf.append("daysOfWeek: ");
- buf.append(getExpressionSetSummary(daysOfWeek));
- buf.append("\n");
- buf.append("lastdayOfWeek: ");
- buf.append(lastdayOfWeek);
- buf.append("\n");
- buf.append("nearestWeekday: ");
- buf.append(nearestWeekday);
- buf.append("\n");
- buf.append("NthDayOfWeek: ");
- buf.append(nthdayOfWeek);
- buf.append("\n");
- buf.append("lastdayOfMonth: ");
- buf.append(lastdayOfMonth);
- buf.append("\n");
- buf.append("years: ");
- buf.append(getExpressionSetSummary(years));
- buf.append("\n");
-
- return buf.toString();
- }
-
- protected String getExpressionSetSummary(java.util.Set<Integer> set) {
-
- if (set.contains(NO_SPEC)) {
- return "?";
- }
- if (set.contains(ALL_SPEC)) {
- return "*";
- }
-
- StringBuilder buf = new StringBuilder();
-
- Iterator<Integer> itr = set.iterator();
- boolean first = true;
- while (itr.hasNext()) {
- Integer iVal = itr.next();
- String val = iVal.toString();
- if (!first) {
- buf.append(",");
- }
- buf.append(val);
- first = false;
- }
-
- return buf.toString();
- }
-
- protected String getExpressionSetSummary(java.util.ArrayList<Integer> list) {
-
- if (list.contains(NO_SPEC)) {
- return "?";
- }
- if (list.contains(ALL_SPEC)) {
- return "*";
- }
-
- StringBuilder buf = new StringBuilder();
-
- Iterator<Integer> itr = list.iterator();
- boolean first = true;
- while (itr.hasNext()) {
- Integer iVal = itr.next();
- String val = iVal.toString();
- if (!first) {
- buf.append(",");
- }
- buf.append(val);
- first = false;
- }
-
- return buf.toString();
- }
-
- protected int skipWhiteSpace(int i, String s) {
- for (; i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t'); i++) {
- }
-
- return i;
- }
-
- protected int findNextWhiteSpace(int i, String s) {
- for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); i++) {
- }
-
- return i;
- }
-
- protected void addToSet(int val, int end, int incr, int type)
- throws ParseException {
-
- TreeSet<Integer> set = getSet(type);
-
- if (type == SECOND || type == MINUTE) {
- if ((val < 0 || val > 59 || end > 59) && (val != ALL_SPEC_INT)) {
- throw new ParseException(
- "Minute and Second values must be between 0 and 59",
- -1);
- }
- } else if (type == HOUR) {
- if ((val < 0 || val > 23 || end > 23) && (val != ALL_SPEC_INT)) {
- throw new ParseException(
- "Hour values must be between 0 and 23", -1);
- }
- } else if (type == DAY_OF_MONTH) {
- if ((val < 1 || val > 31 || end > 31) && (val != ALL_SPEC_INT)
- && (val != NO_SPEC_INT)) {
- throw new ParseException(
- "Day of month values must be between 1 and 31", -1);
- }
- } else if (type == MONTH) {
- if ((val < 1 || val > 12 || end > 12) && (val != ALL_SPEC_INT)) {
- throw new ParseException(
- "Month values must be between 1 and 12", -1);
- }
- } else if (type == DAY_OF_WEEK) {
- if ((val == 0 || val > 7 || end > 7) && (val != ALL_SPEC_INT)
- && (val != NO_SPEC_INT)) {
- throw new ParseException(
- "Day-of-Week values must be between 1 and 7", -1);
- }
- }
-
- if ((incr == 0 || incr == -1) && val != ALL_SPEC_INT) {
- if (val != -1) {
- set.add(val);
- } else {
- set.add(NO_SPEC);
- }
-
- return;
- }
-
- int startAt = val;
- int stopAt = end;
-
- if (val == ALL_SPEC_INT && incr <= 0) {
- incr = 1;
- set.add(ALL_SPEC); // put in a marker, but also fill values
- }
-
- if (type == SECOND || type == MINUTE) {
- if (stopAt == -1) {
- stopAt = 59;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 0;
- }
- } else if (type == HOUR) {
- if (stopAt == -1) {
- stopAt = 23;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 0;
- }
- } else if (type == DAY_OF_MONTH) {
- if (stopAt == -1) {
- stopAt = 31;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 1;
- }
- } else if (type == MONTH) {
- if (stopAt == -1) {
- stopAt = 12;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 1;
- }
- } else if (type == DAY_OF_WEEK) {
- if (stopAt == -1) {
- stopAt = 7;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 1;
- }
- } else if (type == YEAR) {
- if (stopAt == -1) {
- stopAt = MAX_YEAR;
- }
- if (startAt == -1 || startAt == ALL_SPEC_INT) {
- startAt = 1970;
- }
- }
-
- // if the end of the range is before the start, then we need to overflow into
- // the next day, month etc. This is done by adding the maximum amount for that
- // type, and using modulus max to determine the value being added.
- int max = -1;
- if (stopAt < startAt) {
- switch (type) {
- case SECOND : max = 60; break;
- case MINUTE : max = 60; break;
- case HOUR : max = 24; break;
- case MONTH : max = 12; break;
- case DAY_OF_WEEK : max = 7; break;
- case DAY_OF_MONTH : max = 31; break;
- case YEAR : throw new IllegalArgumentException("Start year must be less than stop year");
- default : throw new IllegalArgumentException("Unexpected type encountered");
- }
- stopAt += max;
- }
-
- for (int i = startAt; i <= stopAt; i += incr) {
- if (max == -1) {
- // ie: there's no max to overflow over
- set.add(i);
- } else {
- // take the modulus to get the real value
- int i2 = i % max;
-
- // 1-indexed ranges should not include 0, and should include their max
- if (i2 == 0 && (type == MONTH || type == DAY_OF_WEEK || type == DAY_OF_MONTH) ) {
- i2 = max;
- }
-
- set.add(i2);
- }
- }
- }
-
- TreeSet<Integer> getSet(int type) {
- switch (type) {
- case SECOND:
- return seconds;
- case MINUTE:
- return minutes;
- case HOUR:
- return hours;
- case DAY_OF_MONTH:
- return daysOfMonth;
- case MONTH:
- return months;
- case DAY_OF_WEEK:
- return daysOfWeek;
- case YEAR:
- return years;
- default:
- return null;
- }
- }
-
- protected ValueSet getValue(int v, String s, int i) {
- char c = s.charAt(i);
- StringBuilder s1 = new StringBuilder(String.valueOf(v));
- while (c >= '0' && c <= '9') {
- s1.append(c);
- i++;
- if (i >= s.length()) {
- break;
- }
- c = s.charAt(i);
- }
- ValueSet val = new ValueSet();
-
- val.pos = (i < s.length()) ? i : i + 1;
- val.value = Integer.parseInt(s1.toString());
- return val;
- }
-
- protected int getNumericValue(String s, int i) {
- int endOfVal = findNextWhiteSpace(i, s);
- String val = s.substring(i, endOfVal);
- return Integer.parseInt(val);
- }
-
- protected int getMonthNumber(String s) {
- Integer integer = monthMap.get(s);
-
- if (integer == null) {
- return -1;
- }
-
- return integer;
- }
-
- protected int getDayOfWeekNumber(String s) {
- Integer integer = dayMap.get(s);
-
- if (integer == null) {
- return -1;
- }
-
- return integer;
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Computation Functions
- //
- ////////////////////////////////////////////////////////////////////////////
-
- public Date getTimeAfter(Date afterTime) {
-
- // Computation is based on Gregorian year only.
- Calendar cl = new java.util.GregorianCalendar(getTimeZone());
-
- // move ahead one second, since we're computing the time *after* the
- // given time
- afterTime = new Date(afterTime.getTime() + 1000);
- // CronTrigger does not deal with milliseconds
- cl.setTime(afterTime);
- cl.set(Calendar.MILLISECOND, 0);
-
- boolean gotOne = false;
- // loop until we've computed the next time, or we've past the endTime
- while (!gotOne) {
-
- //if (endTime != null && cl.getTime().after(endTime)) return null;
- if(cl.get(Calendar.YEAR) > 2999) { // prevent endless loop...
- return null;
- }
-
- SortedSet<Integer> st = null;
- int t = 0;
-
- int sec = cl.get(Calendar.SECOND);
- int min = cl.get(Calendar.MINUTE);
-
- // get second.................................................
- st = seconds.tailSet(sec);
- if (st != null && st.size() != 0) {
- sec = st.first();
- } else {
- sec = seconds.first();
- min++;
- cl.set(Calendar.MINUTE, min);
- }
- cl.set(Calendar.SECOND, sec);
-
- min = cl.get(Calendar.MINUTE);
- int hr = cl.get(Calendar.HOUR_OF_DAY);
- t = -1;
-
- // get minute.................................................
- st = minutes.tailSet(min);
- if (st != null && st.size() != 0) {
- t = min;
- min = st.first();
- } else {
- min = minutes.first();
- hr++;
- }
- if (min != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, min);
- setCalendarHour(cl, hr);
- continue;
- }
- cl.set(Calendar.MINUTE, min);
-
- hr = cl.get(Calendar.HOUR_OF_DAY);
- int day = cl.get(Calendar.DAY_OF_MONTH);
- t = -1;
-
- // get hour...................................................
- st = hours.tailSet(hr);
- if (st != null && st.size() != 0) {
- t = hr;
- hr = st.first();
- } else {
- hr = hours.first();
- day++;
- }
- if (hr != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- setCalendarHour(cl, hr);
- continue;
- }
- cl.set(Calendar.HOUR_OF_DAY, hr);
-
- day = cl.get(Calendar.DAY_OF_MONTH);
- int mon = cl.get(Calendar.MONTH) + 1;
- // '+ 1' because calendar is 0-based for this field, and we are
- // 1-based
- t = -1;
- int tmon = mon;
-
- // get day...................................................
- boolean dayOfMSpec = !daysOfMonth.contains(NO_SPEC);
- boolean dayOfWSpec = !daysOfWeek.contains(NO_SPEC);
- if (dayOfMSpec && !dayOfWSpec) { // get day by day of month rule
- st = daysOfMonth.tailSet(day);
- if (lastdayOfMonth) {
- if(!nearestWeekday) {
- t = day;
- day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- day -= lastdayOffset;
- if(t > day) {
- mon++;
- if(mon > 12) {
- mon = 1;
- tmon = 3333; // ensure test of mon != tmon further below fails
- cl.add(Calendar.YEAR, 1);
- }
- day = 1;
- }
- } else {
- t = day;
- day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- day -= lastdayOffset;
-
- java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
- tcal.set(Calendar.SECOND, 0);
- tcal.set(Calendar.MINUTE, 0);
- tcal.set(Calendar.HOUR_OF_DAY, 0);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
-
- int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- int dow = tcal.get(Calendar.DAY_OF_WEEK);
-
- if(dow == Calendar.SATURDAY && day == 1) {
- day += 2;
- } else if(dow == Calendar.SATURDAY) {
- day -= 1;
- } else if(dow == Calendar.SUNDAY && day == ldom) {
- day -= 2;
- } else if(dow == Calendar.SUNDAY) {
- day += 1;
- }
-
- tcal.set(Calendar.SECOND, sec);
- tcal.set(Calendar.MINUTE, min);
- tcal.set(Calendar.HOUR_OF_DAY, hr);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- Date nTime = tcal.getTime();
- if(nTime.before(afterTime)) {
- day = 1;
- mon++;
- }
- }
- } else if(nearestWeekday) {
- t = day;
- day = daysOfMonth.first();
-
- java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
- tcal.set(Calendar.SECOND, 0);
- tcal.set(Calendar.MINUTE, 0);
- tcal.set(Calendar.HOUR_OF_DAY, 0);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
-
- int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- int dow = tcal.get(Calendar.DAY_OF_WEEK);
-
- if(dow == Calendar.SATURDAY && day == 1) {
- day += 2;
- } else if(dow == Calendar.SATURDAY) {
- day -= 1;
- } else if(dow == Calendar.SUNDAY && day == ldom) {
- day -= 2;
- } else if(dow == Calendar.SUNDAY) {
- day += 1;
- }
-
-
- tcal.set(Calendar.SECOND, sec);
- tcal.set(Calendar.MINUTE, min);
- tcal.set(Calendar.HOUR_OF_DAY, hr);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- Date nTime = tcal.getTime();
- if(nTime.before(afterTime)) {
- day = daysOfMonth.first();
- mon++;
- }
- } else if (st != null && st.size() != 0) {
- t = day;
- day = st.first();
- // make sure we don't over-run a short month, such as february
- int lastDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- if (day > lastDay) {
- day = daysOfMonth.first();
- mon++;
- }
- } else {
- day = daysOfMonth.first();
- mon++;
- }
-
- if (day != t || mon != tmon) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we
- // are 1-based
- continue;
- }
- } else if (dayOfWSpec && !dayOfMSpec) { // get day by day of week rule
- if (lastdayOfWeek) { // are we looking for the last XXX day of
- // the month?
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int daysToAdd = 0;
- if (cDow < dow) {
- daysToAdd = dow - cDow;
- }
- if (cDow > dow) {
- daysToAdd = dow + (7 - cDow);
- }
-
- int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
-
- if (day + daysToAdd > lDay) { // did we already miss the
- // last one?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- continue;
- }
-
- // find date of last occurrence of this day in this month...
- while ((day + daysToAdd + 7) <= lDay) {
- daysToAdd += 7;
- }
-
- day += daysToAdd;
-
- if (daysToAdd > 0) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' here because we are not promoting the month
- continue;
- }
-
- } else if (nthdayOfWeek != 0) {
- // are we looking for the Nth XXX day in the month?
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int daysToAdd = 0;
- if (cDow < dow) {
- daysToAdd = dow - cDow;
- } else if (cDow > dow) {
- daysToAdd = dow + (7 - cDow);
- }
-
- boolean dayShifted = false;
- if (daysToAdd > 0) {
- dayShifted = true;
- }
-
- day += daysToAdd;
- int weekOfMonth = day / 7;
- if (day % 7 > 0) {
- weekOfMonth++;
- }
-
- daysToAdd = (nthdayOfWeek - weekOfMonth) * 7;
- day += daysToAdd;
- if (daysToAdd < 0
- || day > getLastDayOfMonth(mon, cl
- .get(Calendar.YEAR))) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- continue;
- } else if (daysToAdd > 0 || dayShifted) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' here because we are NOT promoting the month
- continue;
- }
- } else {
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- st = daysOfWeek.tailSet(cDow);
- if (st != null && st.size() > 0) {
- dow = st.first();
- }
-
- int daysToAdd = 0;
- if (cDow < dow) {
- daysToAdd = dow - cDow;
- }
- if (cDow > dow) {
- daysToAdd = dow + (7 - cDow);
- }
-
- int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
-
- if (day + daysToAdd > lDay) { // will we pass the end of
- // the month?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- continue;
- } else if (daysToAdd > 0) { // are we swithing days?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day + daysToAdd);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field,
- // and we are 1-based
- continue;
- }
- }
- } else { // dayOfWSpec && !dayOfMSpec
- throw new UnsupportedOperationException(
- "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.");
- }
- cl.set(Calendar.DAY_OF_MONTH, day);
-
- mon = cl.get(Calendar.MONTH) + 1;
- // '+ 1' because calendar is 0-based for this field, and we are
- // 1-based
- int year = cl.get(Calendar.YEAR);
- t = -1;
-
- // test for expressions that never generate a valid fire date,
- // but keep looping...
- if (year > MAX_YEAR) {
- return null;
- }
-
- // get month...................................................
- st = months.tailSet(mon);
- if (st != null && st.size() != 0) {
- t = mon;
- mon = st.first();
- } else {
- mon = months.first();
- year++;
- }
- if (mon != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
- cl.set(Calendar.YEAR, year);
- continue;
- }
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
-
- year = cl.get(Calendar.YEAR);
- t = -1;
-
- // get year...................................................
- st = years.tailSet(year);
- if (st != null && st.size() != 0) {
- t = year;
- year = st.first();
- } else {
- return null; // ran out of years...
- }
-
- if (year != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, 0);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
- cl.set(Calendar.YEAR, year);
- continue;
- }
- cl.set(Calendar.YEAR, year);
-
- gotOne = true;
- } // while( !done )
-
- return cl.getTime();
- }
-
- /**
- * Advance the calendar to the particular hour paying particular attention
- * to daylight saving problems.
- *
- * @param cal the calendar to operate on
- * @param hour the hour to set
- */
- protected void setCalendarHour(Calendar cal, int hour) {
- cal.set(java.util.Calendar.HOUR_OF_DAY, hour);
- if (cal.get(java.util.Calendar.HOUR_OF_DAY) != hour && hour != 24) {
- cal.set(java.util.Calendar.HOUR_OF_DAY, hour + 1);
- }
- }
-
- /**
- * NOT YET IMPLEMENTED: Returns the time before the given time
- * that the <code>CronExpression</code> matches.
- */
- public Date getTimeBefore(Date endTime) {
- // FUTURE_TODO: implement QUARTZ-423
- return null;
- }
-
- /**
- * NOT YET IMPLEMENTED: Returns the final time that the
- * <code>CronExpression</code> will match.
- */
- public Date getFinalFireTime() {
- // FUTURE_TODO: implement QUARTZ-423
- return null;
- }
-
- protected boolean isLeapYear(int year) {
- return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
- }
-
- protected int getLastDayOfMonth(int monthNum, int year) {
-
- switch (monthNum) {
- case 1:
- return 31;
- case 2:
- return (isLeapYear(year)) ? 29 : 28;
- case 3:
- return 31;
- case 4:
- return 30;
- case 5:
- return 31;
- case 6:
- return 30;
- case 7:
- return 31;
- case 8:
- return 31;
- case 9:
- return 30;
- case 10:
- return 31;
- case 11:
- return 30;
- case 12:
- return 31;
- default:
- throw new IllegalArgumentException("Illegal month number: "
- + monthNum);
- }
- }
-
-
- private void readObject(java.io.ObjectInputStream stream)
- throws java.io.IOException, ClassNotFoundException {
-
- stream.defaultReadObject();
- try {
- buildExpression(cronExpression);
- } catch (Exception ignore) {
- } // never happens
- }
-
- @Override
- @Deprecated
- public Object clone() {
- return new CronExpression(this);
- }
-}
-
-class ValueSet {
- public int value;
-
- public int pos;
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
deleted file mode 100644
index faa6063..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.xxl.job.admin.core.exception;
-
-/**
- * @author xuxueli 2019-05-04 23:19:29
- */
-public class XxlJobException extends RuntimeException {
-
- public XxlJobException() {
- }
- public XxlJobException(String message) {
- super(message);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
deleted file mode 100644
index 8af1a63..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-public class XxlJobGroup {
-
- private int id;
- private String appName;
- private String title;
- private int order;
- private int addressType; // 鎵ц鍣ㄥ湴鍧�绫诲瀷锛�0=鑷姩娉ㄥ唽銆�1=鎵嬪姩褰曞叆
- private String addressList; // 鎵ц鍣ㄥ湴鍧�鍒楄〃锛屽鍦板潃閫楀彿鍒嗛殧(鎵嬪姩褰曞叆)
-
- // registry list
- private List<String> registryList; // 鎵ц鍣ㄥ湴鍧�鍒楄〃(绯荤粺娉ㄥ唽)
- public List<String> getRegistryList() {
- if (addressList!=null && addressList.trim().length()>0) {
- registryList = new ArrayList<String>(Arrays.asList(addressList.split(",")));
- }
- return registryList;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getAppName() {
- return appName;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public int getOrder() {
- return order;
- }
-
- public void setOrder(int order) {
- this.order = order;
- }
-
- public int getAddressType() {
- return addressType;
- }
-
- public void setAddressType(int addressType) {
- this.addressType = addressType;
- }
-
- public String getAddressList() {
- return addressList;
- }
-
- public void setAddressList(String addressList) {
- this.addressList = addressList;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
deleted file mode 100644
index 1e4a74b..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job info
- *
- * @author xuxueli 2016-1-12 18:25:49
- */
-public class XxlJobInfo {
-
- private int id; // 涓婚敭ID
-
- private int jobGroup; // 鎵ц鍣ㄤ富閿甀D
- private String jobCron; // 浠诲姟鎵цCRON琛ㄨ揪寮�
- private String jobDesc;
-
- private Date addTime;
- private Date updateTime;
-
- private String author; // 璐熻矗浜�
- private String alarmEmail; // 鎶ヨ閭欢
-
- private String executorRouteStrategy; // 鎵ц鍣ㄨ矾鐢辩瓥鐣�
- private String executorHandler; // 鎵ц鍣紝浠诲姟Handler鍚嶇О
- private String executorParam; // 鎵ц鍣紝浠诲姟鍙傛暟
- private String executorBlockStrategy; // 闃诲澶勭悊绛栫暐
- private int executorTimeout; // 浠诲姟鎵ц瓒呮椂鏃堕棿锛屽崟浣嶇
- private int executorFailRetryCount; // 澶辫触閲嶈瘯娆℃暟
-
- private String glueType; // GLUE绫诲瀷 #com.xxl.job.core.glue.GlueTypeEnum
- private String glueSource; // GLUE婧愪唬鐮�
- private String glueRemark; // GLUE澶囨敞
- private Date glueUpdatetime; // GLUE鏇存柊鏃堕棿
-
- private String childJobId; // 瀛愪换鍔D锛屽涓�楀彿鍒嗛殧
-
- private int triggerStatus; // 璋冨害鐘舵�侊細0-鍋滄锛�1-杩愯
- private long triggerLastTime; // 涓婃璋冨害鏃堕棿
- private long triggerNextTime; // 涓嬫璋冨害鏃堕棿
-
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public int getJobGroup() {
- return jobGroup;
- }
-
- public void setJobGroup(int jobGroup) {
- this.jobGroup = jobGroup;
- }
-
- public String getJobCron() {
- return jobCron;
- }
-
- public void setJobCron(String jobCron) {
- this.jobCron = jobCron;
- }
-
- public String getJobDesc() {
- return jobDesc;
- }
-
- public void setJobDesc(String jobDesc) {
- this.jobDesc = jobDesc;
- }
-
- public Date getAddTime() {
- return addTime;
- }
-
- public void setAddTime(Date addTime) {
- this.addTime = addTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
- public String getAuthor() {
- return author;
- }
-
- public void setAuthor(String author) {
- this.author = author;
- }
-
- public String getAlarmEmail() {
- return alarmEmail;
- }
-
- public void setAlarmEmail(String alarmEmail) {
- this.alarmEmail = alarmEmail;
- }
-
- public String getExecutorRouteStrategy() {
- return executorRouteStrategy;
- }
-
- public void setExecutorRouteStrategy(String executorRouteStrategy) {
- this.executorRouteStrategy = executorRouteStrategy;
- }
-
- public String getExecutorHandler() {
- return executorHandler;
- }
-
- public void setExecutorHandler(String executorHandler) {
- this.executorHandler = executorHandler;
- }
-
- public String getExecutorParam() {
- return executorParam;
- }
-
- public void setExecutorParam(String executorParam) {
- this.executorParam = executorParam;
- }
-
- public String getExecutorBlockStrategy() {
- return executorBlockStrategy;
- }
-
- public void setExecutorBlockStrategy(String executorBlockStrategy) {
- this.executorBlockStrategy = executorBlockStrategy;
- }
-
- public int getExecutorTimeout() {
- return executorTimeout;
- }
-
- public void setExecutorTimeout(int executorTimeout) {
- this.executorTimeout = executorTimeout;
- }
-
- public int getExecutorFailRetryCount() {
- return executorFailRetryCount;
- }
-
- public void setExecutorFailRetryCount(int executorFailRetryCount) {
- this.executorFailRetryCount = executorFailRetryCount;
- }
-
- public String getGlueType() {
- return glueType;
- }
-
- public void setGlueType(String glueType) {
- this.glueType = glueType;
- }
-
- public String getGlueSource() {
- return glueSource;
- }
-
- public void setGlueSource(String glueSource) {
- this.glueSource = glueSource;
- }
-
- public String getGlueRemark() {
- return glueRemark;
- }
-
- public void setGlueRemark(String glueRemark) {
- this.glueRemark = glueRemark;
- }
-
- public Date getGlueUpdatetime() {
- return glueUpdatetime;
- }
-
- public void setGlueUpdatetime(Date glueUpdatetime) {
- this.glueUpdatetime = glueUpdatetime;
- }
-
- public String getChildJobId() {
- return childJobId;
- }
-
- public void setChildJobId(String childJobId) {
- this.childJobId = childJobId;
- }
-
- public int getTriggerStatus() {
- return triggerStatus;
- }
-
- public void setTriggerStatus(int triggerStatus) {
- this.triggerStatus = triggerStatus;
- }
-
- public long getTriggerLastTime() {
- return triggerLastTime;
- }
-
- public void setTriggerLastTime(long triggerLastTime) {
- this.triggerLastTime = triggerLastTime;
- }
-
- public long getTriggerNextTime() {
- return triggerNextTime;
- }
-
- public void setTriggerNextTime(long triggerNextTime) {
- this.triggerNextTime = triggerNextTime;
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
deleted file mode 100644
index 7d3072a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job log, used to track trigger process
- * @author xuxueli 2015-12-19 23:19:09
- */
-public class XxlJobLog {
-
- private long id;
-
- // job info
- private int jobGroup;
- private int jobId;
-
- // execute info
- private String executorAddress;
- private String executorHandler;
- private String executorParam;
- private String executorShardingParam;
- private int executorFailRetryCount;
-
- // trigger info
- private Date triggerTime;
- private int triggerCode;
- private String triggerMsg;
-
- // handle info
- private Date handleTime;
- private int handleCode;
- private String handleMsg;
-
- // alarm info
- private int alarmStatus;
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public int getJobGroup() {
- return jobGroup;
- }
-
- public void setJobGroup(int jobGroup) {
- this.jobGroup = jobGroup;
- }
-
- public int getJobId() {
- return jobId;
- }
-
- public void setJobId(int jobId) {
- this.jobId = jobId;
- }
-
- public String getExecutorAddress() {
- return executorAddress;
- }
-
- public void setExecutorAddress(String executorAddress) {
- this.executorAddress = executorAddress;
- }
-
- public String getExecutorHandler() {
- return executorHandler;
- }
-
- public void setExecutorHandler(String executorHandler) {
- this.executorHandler = executorHandler;
- }
-
- public String getExecutorParam() {
- return executorParam;
- }
-
- public void setExecutorParam(String executorParam) {
- this.executorParam = executorParam;
- }
-
- public String getExecutorShardingParam() {
- return executorShardingParam;
- }
-
- public void setExecutorShardingParam(String executorShardingParam) {
- this.executorShardingParam = executorShardingParam;
- }
-
- public int getExecutorFailRetryCount() {
- return executorFailRetryCount;
- }
-
- public void setExecutorFailRetryCount(int executorFailRetryCount) {
- this.executorFailRetryCount = executorFailRetryCount;
- }
-
- public Date getTriggerTime() {
- return triggerTime;
- }
-
- public void setTriggerTime(Date triggerTime) {
- this.triggerTime = triggerTime;
- }
-
- public int getTriggerCode() {
- return triggerCode;
- }
-
- public void setTriggerCode(int triggerCode) {
- this.triggerCode = triggerCode;
- }
-
- public String getTriggerMsg() {
- return triggerMsg;
- }
-
- public void setTriggerMsg(String triggerMsg) {
- this.triggerMsg = triggerMsg;
- }
-
- public Date getHandleTime() {
- return handleTime;
- }
-
- public void setHandleTime(Date handleTime) {
- this.handleTime = handleTime;
- }
-
- public int getHandleCode() {
- return handleCode;
- }
-
- public void setHandleCode(int handleCode) {
- this.handleCode = handleCode;
- }
-
- public String getHandleMsg() {
- return handleMsg;
- }
-
- public void setHandleMsg(String handleMsg) {
- this.handleMsg = handleMsg;
- }
-
- public int getAlarmStatus() {
- return alarmStatus;
- }
-
- public void setAlarmStatus(int alarmStatus) {
- this.alarmStatus = alarmStatus;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
deleted file mode 100644
index 2f59ffa..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job log for glue, used to track job code process
- * @author xuxueli 2016-5-19 17:57:46
- */
-public class XxlJobLogGlue {
-
- private int id;
- private int jobId; // 浠诲姟涓婚敭ID
- private String glueType; // GLUE绫诲瀷 #com.xxl.job.core.glue.GlueTypeEnum
- private String glueSource;
- private String glueRemark;
- private Date addTime;
- private Date updateTime;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public int getJobId() {
- return jobId;
- }
-
- public void setJobId(int jobId) {
- this.jobId = jobId;
- }
-
- public String getGlueType() {
- return glueType;
- }
-
- public void setGlueType(String glueType) {
- this.glueType = glueType;
- }
-
- public String getGlueSource() {
- return glueSource;
- }
-
- public void setGlueSource(String glueSource) {
- this.glueSource = glueSource;
- }
-
- public String getGlueRemark() {
- return glueRemark;
- }
-
- public void setGlueRemark(String glueRemark) {
- this.glueRemark = glueRemark;
- }
-
- public Date getAddTime() {
- return addTime;
- }
-
- public void setAddTime(Date addTime) {
- this.addTime = addTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
deleted file mode 100644
index e58ff1a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-public class XxlJobLogReport {
-
- private int id;
-
- private Date triggerDay;
-
- private int runningCount;
- private int sucCount;
- private int failCount;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public Date getTriggerDay() {
- return triggerDay;
- }
-
- public void setTriggerDay(Date triggerDay) {
- this.triggerDay = triggerDay;
- }
-
- public int getRunningCount() {
- return runningCount;
- }
-
- public void setRunningCount(int runningCount) {
- this.runningCount = runningCount;
- }
-
- public int getSucCount() {
- return sucCount;
- }
-
- public void setSucCount(int sucCount) {
- this.sucCount = sucCount;
- }
-
- public int getFailCount() {
- return failCount;
- }
-
- public void setFailCount(int failCount) {
- this.failCount = failCount;
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
deleted file mode 100644
index 924d6d3..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-public class XxlJobRegistry {
-
- private int id;
- private String registryGroup;
- private String registryKey;
- private String registryValue;
- private Date updateTime;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getRegistryGroup() {
- return registryGroup;
- }
-
- public void setRegistryGroup(String registryGroup) {
- this.registryGroup = registryGroup;
- }
-
- public String getRegistryKey() {
- return registryKey;
- }
-
- public void setRegistryKey(String registryKey) {
- this.registryKey = registryKey;
- }
-
- public String getRegistryValue() {
- return registryValue;
- }
-
- public void setRegistryValue(String registryValue) {
- this.registryValue = registryValue;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
deleted file mode 100644
index db17327..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import org.springframework.util.StringUtils;
-
-/**
- * @author xuxueli 2019-05-04 16:43:12
- */
-public class XxlJobUser {
-
- private int id;
- private String username; // 璐﹀彿
- private String password; // 瀵嗙爜
- private int role; // 瑙掕壊锛�0-鏅�氱敤鎴枫��1-绠$悊鍛�
- private String permission; // 鏉冮檺锛氭墽琛屽櫒ID鍒楄〃锛屽涓�楀彿鍒嗗壊
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public int getRole() {
- return role;
- }
-
- public void setRole(int role) {
- this.role = role;
- }
-
- public String getPermission() {
- return permission;
- }
-
- public void setPermission(String permission) {
- this.permission = permission;
- }
-
- // plugin
- public boolean validPermission(int jobGroup){
- if (this.role == 1) {
- return true;
- } else {
- if (StringUtils.hasText(this.permission)) {
- for (String permissionItem : this.permission.split(",")) {
- if (String.valueOf(jobGroup).equals(permissionItem)) {
- return true;
- }
- }
- }
- return false;
- }
-
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
deleted file mode 100644
index 7fff93a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.xxl.job.admin.core.route;
-
-import com.xxl.job.admin.core.route.strategy.*;
-import com.xxl.job.admin.core.util.I18nUtil;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public enum ExecutorRouteStrategyEnum {
-
- FIRST(I18nUtil.getString("jobconf_route_first"), new ExecutorRouteFirst()),
- LAST(I18nUtil.getString("jobconf_route_last"), new ExecutorRouteLast()),
- ROUND(I18nUtil.getString("jobconf_route_round"), new ExecutorRouteRound()),
- RANDOM(I18nUtil.getString("jobconf_route_random"), new ExecutorRouteRandom()),
- CONSISTENT_HASH(I18nUtil.getString("jobconf_route_consistenthash"), new ExecutorRouteConsistentHash()),
- LEAST_FREQUENTLY_USED(I18nUtil.getString("jobconf_route_lfu"), new ExecutorRouteLFU()),
- LEAST_RECENTLY_USED(I18nUtil.getString("jobconf_route_lru"), new ExecutorRouteLRU()),
- FAILOVER(I18nUtil.getString("jobconf_route_failover"), new ExecutorRouteFailover()),
- BUSYOVER(I18nUtil.getString("jobconf_route_busyover"), new ExecutorRouteBusyover()),
- SHARDING_BROADCAST(I18nUtil.getString("jobconf_route_shard"), null);
-
- ExecutorRouteStrategyEnum(String title, ExecutorRouter router) {
- this.title = title;
- this.router = router;
- }
-
- private String title;
- private ExecutorRouter router;
-
- public String getTitle() {
- return title;
- }
- public ExecutorRouter getRouter() {
- return router;
- }
-
- public static ExecutorRouteStrategyEnum match(String name, ExecutorRouteStrategyEnum defaultItem){
- if (name != null) {
- for (ExecutorRouteStrategyEnum item: ExecutorRouteStrategyEnum.values()) {
- if (item.name().equals(name)) {
- return item;
- }
- }
- }
- return defaultItem;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
deleted file mode 100644
index 5de9a1d..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xxl.job.admin.core.route;
-
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public abstract class ExecutorRouter {
- protected static Logger logger = LoggerFactory.getLogger(ExecutorRouter.class);
-
- /**
- * route address
- *
- * @param addressList
- * @return ReturnT.content=address
- */
- public abstract ReturnT<String> route(TriggerParam triggerParam, List<String> addressList);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
deleted file mode 100644
index 2601599..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteBusyover extends ExecutorRouter {
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- StringBuffer idleBeatResultSB = new StringBuffer();
- for (String address : addressList) {
- // beat
- ReturnT<String> idleBeatResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- idleBeatResult = executorBiz.idleBeat(triggerParam.getJobId());
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- idleBeatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
- }
- idleBeatResultSB.append( (idleBeatResultSB.length()>0)?"<br><br>":"")
- .append(I18nUtil.getString("jobconf_idleBeat") + "锛�")
- .append("<br>address锛�").append(address)
- .append("<br>code锛�").append(idleBeatResult.getCode())
- .append("<br>msg锛�").append(idleBeatResult.getMsg());
-
- // beat success
- if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
- idleBeatResult.setMsg(idleBeatResultSB.toString());
- idleBeatResult.setContent(address);
- return idleBeatResult;
- }
- }
-
- return new ReturnT<String>(ReturnT.FAIL_CODE, idleBeatResultSB.toString());
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
deleted file mode 100644
index 72e8118..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.io.UnsupportedEncodingException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * 鍒嗙粍涓嬫満鍣ㄥ湴鍧�鐩稿悓锛屼笉鍚孞OB鍧囧寑鏁e垪鍦ㄤ笉鍚屾満鍣ㄤ笂锛屼繚璇佸垎缁勪笅鏈哄櫒鍒嗛厤JOB骞冲潎锛涗笖姣忎釜JOB鍥哄畾璋冨害鍏朵腑涓�鍙版満鍣紱
- * a銆乿irtual node锛氳В鍐充笉鍧囪 闂
- * b銆乭ash method replace hashCode锛歋tring鐨刪ashCode鍙兘閲嶅锛岄渶瑕佽繘涓�姝ユ墿澶ashCode鐨勫彇鍊艰寖鍥�
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteConsistentHash extends ExecutorRouter {
-
- private static int VIRTUAL_NODE_NUM = 5;
-
- /**
- * get hash code on 2^32 ring (md5鏁e垪鐨勬柟寮忚绠梙ash鍊�)
- * @param key
- * @return
- */
- private static long hash(String key) {
-
- // md5 byte
- MessageDigest md5;
- try {
- md5 = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException("MD5 not supported", e);
- }
- md5.reset();
- byte[] keyBytes = null;
- try {
- keyBytes = key.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("Unknown string :" + key, e);
- }
-
- md5.update(keyBytes);
- byte[] digest = md5.digest();
-
- // hash code, Truncate to 32-bits
- long hashCode = ((long) (digest[3] & 0xFF) << 24)
- | ((long) (digest[2] & 0xFF) << 16)
- | ((long) (digest[1] & 0xFF) << 8)
- | (digest[0] & 0xFF);
-
- long truncateHashCode = hashCode & 0xffffffffL;
- return truncateHashCode;
- }
-
- public String hashJob(int jobId, List<String> addressList) {
-
- // ------A1------A2-------A3------
- // -----------J1------------------
- TreeMap<Long, String> addressRing = new TreeMap<Long, String>();
- for (String address: addressList) {
- for (int i = 0; i < VIRTUAL_NODE_NUM; i++) {
- long addressHash = hash("SHARD-" + address + "-NODE-" + i);
- addressRing.put(addressHash, address);
- }
- }
-
- long jobHash = hash(String.valueOf(jobId));
- SortedMap<Long, String> lastRing = addressRing.tailMap(jobHash);
- if (!lastRing.isEmpty()) {
- return lastRing.get(lastRing.firstKey());
- }
- return addressRing.firstEntry().getValue();
- }
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- String address = hashJob(triggerParam.getJobId(), addressList);
- return new ReturnT<String>(address);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
deleted file mode 100644
index a2e4c90..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteFailover extends ExecutorRouter {
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
-
- StringBuffer beatResultSB = new StringBuffer();
- for (String address : addressList) {
- // beat
- ReturnT<String> beatResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- beatResult = executorBiz.beat();
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- beatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
- }
- beatResultSB.append( (beatResultSB.length()>0)?"<br><br>":"")
- .append(I18nUtil.getString("jobconf_beat") + "锛�")
- .append("<br>address锛�").append(address)
- .append("<br>code锛�").append(beatResult.getCode())
- .append("<br>msg锛�").append(beatResult.getMsg());
-
- // beat success
- if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
-
- beatResult.setMsg(beatResultSB.toString());
- beatResult.setContent(address);
- return beatResult;
- }
- }
- return new ReturnT<String>(ReturnT.FAIL_CODE, beatResultSB.toString());
-
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
deleted file mode 100644
index de4d7af..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteFirst extends ExecutorRouter {
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList){
- return new ReturnT<String>(addressList.get(0));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
deleted file mode 100644
index 9df1972..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 鍗曚釜JOB瀵瑰簲鐨勬瘡涓墽琛屽櫒锛屼娇鐢ㄩ鐜囨渶浣庣殑浼樺厛琚�変妇
- * a(*)銆丩FU(Least Frequently Used)锛氭渶涓嶇粡甯镐娇鐢紝棰戠巼/娆℃暟
- * b銆丩RU(Least Recently Used)锛氭渶杩戞渶涔呮湭浣跨敤锛屾椂闂�
- *
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteLFU extends ExecutorRouter {
-
- private static ConcurrentMap<Integer, HashMap<String, Integer>> jobLfuMap = new ConcurrentHashMap<Integer, HashMap<String, Integer>>();
- private static long CACHE_VALID_TIME = 0;
-
- public String route(int jobId, List<String> addressList) {
-
- // cache clear
- if (System.currentTimeMillis() > CACHE_VALID_TIME) {
- jobLfuMap.clear();
- CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // lfu item init
- HashMap<String, Integer> lfuItemMap = jobLfuMap.get(jobId); // Key鎺掑簭鍙互鐢═reeMap+鏋勯�犲叆鍙侰ompare锛沄alue鎺掑簭鏆傛椂鍙兘閫氳繃ArrayList锛�
- if (lfuItemMap == null) {
- lfuItemMap = new HashMap<String, Integer>();
- jobLfuMap.putIfAbsent(jobId, lfuItemMap); // 閬垮厤閲嶅瑕嗙洊
- }
-
- // put new
- for (String address: addressList) {
- if (!lfuItemMap.containsKey(address) || lfuItemMap.get(address) >1000000 ) {
- lfuItemMap.put(address, new Random().nextInt(addressList.size())); // 鍒濆鍖栨椂涓诲姩Random涓�娆★紝缂撹В棣栨鍘嬪姏
- }
- }
- // remove old
- List<String> delKeys = new ArrayList<>();
- for (String existKey: lfuItemMap.keySet()) {
- if (!addressList.contains(existKey)) {
- delKeys.add(existKey);
- }
- }
- if (delKeys.size() > 0) {
- for (String delKey: delKeys) {
- lfuItemMap.remove(delKey);
- }
- }
-
- // load least userd count address
- List<Map.Entry<String, Integer>> lfuItemList = new ArrayList<Map.Entry<String, Integer>>(lfuItemMap.entrySet());
- Collections.sort(lfuItemList, new Comparator<Map.Entry<String, Integer>>() {
- @Override
- public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
- return o1.getValue().compareTo(o2.getValue());
- }
- });
-
- Map.Entry<String, Integer> addressItem = lfuItemList.get(0);
- String minAddress = addressItem.getKey();
- addressItem.setValue(addressItem.getValue() + 1);
-
- return addressItem.getKey();
- }
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- String address = route(triggerParam.getJobId(), addressList);
- return new ReturnT<String>(address);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
deleted file mode 100644
index 2d54006..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 鍗曚釜JOB瀵瑰簲鐨勬瘡涓墽琛屽櫒锛屾渶涔呬负浣跨敤鐨勪紭鍏堣閫変妇
- * a銆丩FU(Least Frequently Used)锛氭渶涓嶇粡甯镐娇鐢紝棰戠巼/娆℃暟
- * b(*)銆丩RU(Least Recently Used)锛氭渶杩戞渶涔呮湭浣跨敤锛屾椂闂�
- *
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteLRU extends ExecutorRouter {
-
- private static ConcurrentMap<Integer, LinkedHashMap<String, String>> jobLRUMap = new ConcurrentHashMap<Integer, LinkedHashMap<String, String>>();
- private static long CACHE_VALID_TIME = 0;
-
- public String route(int jobId, List<String> addressList) {
-
- // cache clear
- if (System.currentTimeMillis() > CACHE_VALID_TIME) {
- jobLRUMap.clear();
- CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // init lru
- LinkedHashMap<String, String> lruItem = jobLRUMap.get(jobId);
- if (lruItem == null) {
- /**
- * LinkedHashMap
- * a銆乤ccessOrder锛歵rue=璁块棶椤哄簭鎺掑簭锛坓et/put鏃舵帓搴忥級锛沠alse=鎻掑叆椤哄簭鎺掓湡锛�
- * b銆乺emoveEldestEntry锛氭柊澧炲厓绱犳椂灏嗕細璋冪敤锛岃繑鍥瀟rue鏃朵細鍒犻櫎鏈�鑰佸厓绱狅紱鍙皝瑁匧inkedHashMap骞堕噸鍐欒鏂规硶锛屾瘮濡傚畾涔夋渶澶у閲忥紝瓒呭嚭鏄繑鍥瀟rue鍗冲彲瀹炵幇鍥哄畾闀垮害鐨凩RU绠楁硶锛�
- */
- lruItem = new LinkedHashMap<String, String>(16, 0.75f, true);
- jobLRUMap.putIfAbsent(jobId, lruItem);
- }
-
- // put new
- for (String address: addressList) {
- if (!lruItem.containsKey(address)) {
- lruItem.put(address, address);
- }
- }
- // remove old
- List<String> delKeys = new ArrayList<>();
- for (String existKey: lruItem.keySet()) {
- if (!addressList.contains(existKey)) {
- delKeys.add(existKey);
- }
- }
- if (delKeys.size() > 0) {
- for (String delKey: delKeys) {
- lruItem.remove(delKey);
- }
- }
-
- // load
- String eldestKey = lruItem.entrySet().iterator().next().getKey();
- String eldestValue = lruItem.get(eldestKey);
- return eldestValue;
- }
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- String address = route(triggerParam.getJobId(), addressList);
- return new ReturnT<String>(address);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
deleted file mode 100644
index 4ff3cf6..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteLast extends ExecutorRouter {
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- return new ReturnT<String>(addressList.get(addressList.size()-1));
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
deleted file mode 100644
index 5ea4a38..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-import java.util.Random;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteRandom extends ExecutorRouter {
-
- private static Random localRandom = new Random();
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- String address = addressList.get(localRandom.nextInt(addressList.size()));
- return new ReturnT<String>(address);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
deleted file mode 100644
index 936ef0e..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteRound extends ExecutorRouter {
-
- private static ConcurrentMap<Integer, Integer> routeCountEachJob = new ConcurrentHashMap<Integer, Integer>();
- private static long CACHE_VALID_TIME = 0;
- private static int count(int jobId) {
- // cache clear
- if (System.currentTimeMillis() > CACHE_VALID_TIME) {
- routeCountEachJob.clear();
- CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // count++
- Integer count = routeCountEachJob.get(jobId);
- count = (count==null || count>1000000)?(new Random().nextInt(100)):++count; // 鍒濆鍖栨椂涓诲姩Random涓�娆★紝缂撹В棣栨鍘嬪姏
- routeCountEachJob.put(jobId, count);
- return count;
- }
-
- @Override
- public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
- String address = addressList.get(count(triggerParam.getJobId())%addressList.size());
- return new ReturnT<String>(address);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
deleted file mode 100644
index 2b72877..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.xxl.job.admin.core.scheduler;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.thread.*;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.rpc.remoting.invoker.call.CallType;
-import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
-import com.xxl.rpc.remoting.invoker.route.LoadBalance;
-import com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpClient;
-import com.xxl.rpc.serialize.impl.HessianSerializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * @author xuxueli 2018-10-28 00:18:17
- */
-
-public class XxlJobScheduler {
- private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);
-
-
- public void init() throws Exception {
- // init i18n
- initI18n();
-
- // admin registry monitor run
- JobRegistryMonitorHelper.getInstance().start();
-
- // admin monitor run
- JobFailMonitorHelper.getInstance().start();
-
- // admin trigger pool start
- JobTriggerPoolHelper.toStart();
-
- // admin log report start
- JobLogReportHelper.getInstance().start();
-
- // start-schedule
- JobScheduleHelper.getInstance().start();
-
- logger.info(">>>>>>>>> init xxl-job admin success.");
- }
-
-
- public void destroy() throws Exception {
-
- // stop-schedule
- JobScheduleHelper.getInstance().toStop();
-
- // admin log report stop
- JobLogReportHelper.getInstance().toStop();
-
- // admin trigger pool stop
- JobTriggerPoolHelper.toStop();
-
- // admin monitor stop
- JobFailMonitorHelper.getInstance().toStop();
-
- // admin registry stop
- JobRegistryMonitorHelper.getInstance().toStop();
-
- }
-
- // ---------------------- I18n ----------------------
-
- private void initI18n(){
- for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) {
- item.setTitle(I18nUtil.getString("jobconf_block_".concat(item.name())));
- }
- }
-
- // ---------------------- executor-client ----------------------
- private static ConcurrentMap<String, ExecutorBiz> executorBizRepository = new ConcurrentHashMap<String, ExecutorBiz>();
- public static ExecutorBiz getExecutorBiz(String address) throws Exception {
- // valid
- if (address==null || address.trim().length()==0) {
- return null;
- }
-
- // load-cache
- address = address.trim();
- ExecutorBiz executorBiz = executorBizRepository.get(address);
- if (executorBiz != null) {
- return executorBiz;
- }
-
- // set-cache
- XxlRpcReferenceBean referenceBean = new XxlRpcReferenceBean();
- referenceBean.setClient(NettyHttpClient.class);
- referenceBean.setSerializer(HessianSerializer.class);
- referenceBean.setCallType(CallType.SYNC);
- referenceBean.setLoadBalance(LoadBalance.ROUND);
- referenceBean.setIface(ExecutorBiz.class);
- referenceBean.setVersion(null);
- referenceBean.setTimeout(3000);
- referenceBean.setAddress(address);
- referenceBean.setAccessToken(XxlJobAdminConfig.getAdminConfig().getAccessToken());
- referenceBean.setInvokeCallback(null);
- referenceBean.setInvokerFactory(null);
-
- executorBiz = (ExecutorBiz) referenceBean.getObject();
-
- executorBizRepository.put(address, executorBiz);
- return executorBiz;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
deleted file mode 100644
index 67c6b27..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.mail.javamail.MimeMessageHelper;
-
-import javax.mail.internet.MimeMessage;
-import java.text.MessageFormat;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job monitor instance
- *
- * @author xuxueli 2015-9-1 18:05:56
- */
-public class JobFailMonitorHelper {
- private static Logger logger = LoggerFactory.getLogger(JobFailMonitorHelper.class);
-
- private static JobFailMonitorHelper instance = new JobFailMonitorHelper();
- public static JobFailMonitorHelper getInstance(){
- return instance;
- }
-
- // ---------------------- monitor ----------------------
-
- private Thread monitorThread;
- private volatile boolean toStop = false;
- public void start(){
- monitorThread = new Thread(new Runnable() {
-
- @Override
- public void run() {
-
- // monitor
- while (!toStop) {
- try {
-
- List<Long> failLogIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findFailJobLogIds(1000);
- if (failLogIds!=null && !failLogIds.isEmpty()) {
- for (long failLogId: failLogIds) {
-
- // lock log
- int lockRet = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, 0, -1);
- if (lockRet < 1) {
- continue;
- }
- XxlJobLog log = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().load(failLogId);
- XxlJobInfo info = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(log.getJobId());
-
- // 1銆乫ail retry monitor
- if (log.getExecutorFailRetryCount() > 0) {
- JobTriggerPoolHelper.trigger(log.getJobId(), TriggerTypeEnum.RETRY, (log.getExecutorFailRetryCount()-1), log.getExecutorShardingParam(), log.getExecutorParam());
- String retryMsg = "<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_type_retry") +"<<<<<<<<<<< </span><br>";
- log.setTriggerMsg(log.getTriggerMsg() + retryMsg);
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(log);
- }
-
- // 2銆乫ail alarm monitor
- int newAlarmStatus = 0; // 鍛婅鐘舵�侊細0-榛樿銆�-1=閿佸畾鐘舵�併��1-鏃犻渶鍛婅銆�2-鍛婅鎴愬姛銆�3-鍛婅澶辫触
- if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
- boolean alarmResult = true;
- try {
- alarmResult = failAlarm(info, log);
- } catch (Exception e) {
- alarmResult = false;
- logger.error(e.getMessage(), e);
- }
- newAlarmStatus = alarmResult?2:3;
- } else {
- newAlarmStatus = 1;
- }
-
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, -1, newAlarmStatus);
- }
- }
-
- } catch (Exception e) {
- if (!toStop) {
- logger.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e);
- }
- }
-
- try {
- TimeUnit.SECONDS.sleep(10);
- } catch (Exception e) {
- if (!toStop) {
- logger.error(e.getMessage(), e);
- }
- }
-
- }
-
- logger.info(">>>>>>>>>>> xxl-job, job fail monitor thread stop");
-
- }
- });
- monitorThread.setDaemon(true);
- monitorThread.setName("xxl-job, admin JobFailMonitorHelper");
- monitorThread.start();
- }
-
- public void toStop(){
- toStop = true;
- // interrupt and wait
- monitorThread.interrupt();
- try {
- monitorThread.join();
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
-
- // ---------------------- alarm ----------------------
-
- // email alarm template
- private static final String mailBodyTemplate = "<h5>" + I18nUtil.getString("jobconf_monitor_detail") + "锛�</span>" +
- "<table border=\"1\" cellpadding=\"3\" style=\"border-collapse:collapse; width:80%;\" >\n" +
- " <thead style=\"font-weight: bold;color: #ffffff;background-color: #ff8c00;\" >" +
- " <tr>\n" +
- " <td width=\"20%\" >"+ I18nUtil.getString("jobinfo_field_jobgroup") +"</td>\n" +
- " <td width=\"10%\" >"+ I18nUtil.getString("jobinfo_field_id") +"</td>\n" +
- " <td width=\"20%\" >"+ I18nUtil.getString("jobinfo_field_jobdesc") +"</td>\n" +
- " <td width=\"10%\" >"+ I18nUtil.getString("jobconf_monitor_alarm_title") +"</td>\n" +
- " <td width=\"40%\" >"+ I18nUtil.getString("jobconf_monitor_alarm_content") +"</td>\n" +
- " </tr>\n" +
- " </thead>\n" +
- " <tbody>\n" +
- " <tr>\n" +
- " <td>{0}</td>\n" +
- " <td>{1}</td>\n" +
- " <td>{2}</td>\n" +
- " <td>"+ I18nUtil.getString("jobconf_monitor_alarm_type") +"</td>\n" +
- " <td>{3}</td>\n" +
- " </tr>\n" +
- " </tbody>\n" +
- "</table>";
-
- /**
- * fail alarm
- *
- * @param jobLog
- */
- private boolean failAlarm(XxlJobInfo info, XxlJobLog jobLog){
- boolean alarmResult = true;
-
- // send monitor email
- if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
-
- // alarmContent
- String alarmContent = "Alarm Job LogId=" + jobLog.getId();
- if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) {
- alarmContent += "<br>TriggerMsg=<br>" + jobLog.getTriggerMsg();
- }
- if (jobLog.getHandleCode()>0 && jobLog.getHandleCode() != ReturnT.SUCCESS_CODE) {
- alarmContent += "<br>HandleCode=" + jobLog.getHandleMsg();
- }
-
- // email info
- XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(Integer.valueOf(info.getJobGroup()));
- String personal = I18nUtil.getString("admin_name_full");
- String title = I18nUtil.getString("jobconf_monitor");
- String content = MessageFormat.format(mailBodyTemplate,
- group!=null?group.getTitle():"null",
- info.getId(),
- info.getJobDesc(),
- alarmContent);
-
- Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
- for (String email: emailSet) {
-
- // make mail
- try {
- MimeMessage mimeMessage = XxlJobAdminConfig.getAdminConfig().getMailSender().createMimeMessage();
-
- MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
- helper.setFrom(XxlJobAdminConfig.getAdminConfig().getEmailUserName(), personal);
- helper.setTo(email);
- helper.setSubject(title);
- helper.setText(content, true);
-
- XxlJobAdminConfig.getAdminConfig().getMailSender().send(mimeMessage);
- } catch (Exception e) {
- logger.error(">>>>>>>>>>> xxl-job, job fail alarm email send error, JobLogId:{}", jobLog.getId(), e);
-
- alarmResult = false;
- }
-
- }
- }
-
- // do something, custom alarm strategy, such as sms
-
-
- return alarmResult;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
deleted file mode 100644
index 2387a0c..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job log report helper
- *
- * @author xuxueli 2019-11-22
- */
-public class JobLogReportHelper {
- private static Logger logger = LoggerFactory.getLogger(JobLogReportHelper.class);
-
- private static JobLogReportHelper instance = new JobLogReportHelper();
- public static JobLogReportHelper getInstance(){
- return instance;
- }
-
-
- private Thread logrThread;
- private volatile boolean toStop = false;
- public void start(){
- logrThread = new Thread(new Runnable() {
-
- @Override
- public void run() {
-
- // last clean log time
- long lastCleanLogTime = 0;
-
-
- while (!toStop) {
-
- // 1銆乴og-report refresh: refresh log report in 3 days
- try {
-
- for (int i = 0; i < 3; i++) {
-
- // today
- Calendar itemDay = Calendar.getInstance();
- itemDay.add(Calendar.DAY_OF_MONTH, -i);
- itemDay.set(Calendar.HOUR_OF_DAY, 0);
- itemDay.set(Calendar.MINUTE, 0);
- itemDay.set(Calendar.SECOND, 0);
- itemDay.set(Calendar.MILLISECOND, 0);
-
- Date todayFrom = itemDay.getTime();
-
- itemDay.set(Calendar.HOUR_OF_DAY, 23);
- itemDay.set(Calendar.MINUTE, 59);
- itemDay.set(Calendar.SECOND, 59);
- itemDay.set(Calendar.MILLISECOND, 999);
-
- Date todayTo = itemDay.getTime();
-
- // refresh log-report every minute
- XxlJobLogReport xxlJobLogReport = new XxlJobLogReport();
- xxlJobLogReport.setTriggerDay(todayFrom);
- xxlJobLogReport.setRunningCount(0);
- xxlJobLogReport.setSucCount(0);
- xxlJobLogReport.setFailCount(0);
-
- Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo);
- if (triggerCountMap!=null && triggerCountMap.size()>0) {
- int triggerDayCount = triggerCountMap.containsKey("triggerDayCount")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCount"))):0;
- int triggerDayCountRunning = triggerCountMap.containsKey("triggerDayCountRunning")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountRunning"))):0;
- int triggerDayCountSuc = triggerCountMap.containsKey("triggerDayCountSuc")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountSuc"))):0;
- int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
-
- xxlJobLogReport.setRunningCount(triggerDayCountRunning);
- xxlJobLogReport.setSucCount(triggerDayCountSuc);
- xxlJobLogReport.setFailCount(triggerDayCountFail);
- }
-
- // do refresh
- int ret = XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().update(xxlJobLogReport);
- if (ret < 1) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);
- }
- }
-
- } catch (Exception e) {
- if (!toStop) {
- logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);
- }
- }
-
- // 2銆乴og-clean: switch open & once each day
- if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays()>0
- && System.currentTimeMillis() - lastCleanLogTime > 24*60*60*1000) {
-
- // expire-time
- Calendar expiredDay = Calendar.getInstance();
- expiredDay.add(Calendar.DAY_OF_MONTH, -1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays());
- expiredDay.set(Calendar.HOUR_OF_DAY, 0);
- expiredDay.set(Calendar.MINUTE, 0);
- expiredDay.set(Calendar.SECOND, 0);
- expiredDay.set(Calendar.MILLISECOND, 0);
- Date clearBeforeTime = expiredDay.getTime();
-
- // clean expired log
- List<Long> logIds = null;
- do {
- logIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findClearLogIds(0, 0, clearBeforeTime, 0, 1000);
- if (logIds!=null && logIds.size()>0) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);
- }
- } while (logIds!=null && logIds.size()>0);
-
- // update clean time
- lastCleanLogTime = System.currentTimeMillis();
- }
-
- try {
- TimeUnit.MINUTES.sleep(1);
- } catch (Exception e) {
- if (!toStop) {
- logger.error(e.getMessage(), e);
- }
- }
-
- }
-
- logger.info(">>>>>>>>>>> xxl-job, job log report thread stop");
-
- }
- });
- logrThread.setDaemon(true);
- logrThread.setName("xxl-job, admin JobLogReportHelper");
- logrThread.start();
- }
-
- public void toStop(){
- toStop = true;
- // interrupt and wait
- logrThread.interrupt();
- try {
- logrThread.join();
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
deleted file mode 100644
index 1e91014..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import com.xxl.job.core.enums.RegistryConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job registry instance
- * @author xuxueli 2016-10-02 19:10:24
- */
-public class JobRegistryMonitorHelper {
- private static Logger logger = LoggerFactory.getLogger(JobRegistryMonitorHelper.class);
-
- private static JobRegistryMonitorHelper instance = new JobRegistryMonitorHelper();
- public static JobRegistryMonitorHelper getInstance(){
- return instance;
- }
-
- private Thread registryThread;
- private volatile boolean toStop = false;
- public void start(){
- registryThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!toStop) {
- try {
- // auto registry group
- List<XxlJobGroup> groupList = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().findByAddressType(0);
- if (groupList!=null && !groupList.isEmpty()) {
-
- // remove dead address (admin/executor)
- List<Integer> ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDead(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (ids!=null && ids.size()>0) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(ids);
- }
-
- // fresh online address (admin/executor)
- HashMap<String, List<String>> appAddressMap = new HashMap<String, List<String>>();
- List<XxlJobRegistry> list = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (list != null) {
- for (XxlJobRegistry item: list) {
- if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
- String appName = item.getRegistryKey();
- List<String> registryList = appAddressMap.get(appName);
- if (registryList == null) {
- registryList = new ArrayList<String>();
- }
-
- if (!registryList.contains(item.getRegistryValue())) {
- registryList.add(item.getRegistryValue());
- }
- appAddressMap.put(appName, registryList);
- }
- }
- }
-
- // fresh group address
- for (XxlJobGroup group: groupList) {
- List<String> registryList = appAddressMap.get(group.getAppName());
- String addressListStr = null;
- if (registryList!=null && !registryList.isEmpty()) {
- Collections.sort(registryList);
- addressListStr = "";
- for (String item:registryList) {
- addressListStr += item + ",";
- }
- addressListStr = addressListStr.substring(0, addressListStr.length()-1);
- }
- group.setAddressList(addressListStr);
- XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().update(group);
- }
- }
- } catch (Exception e) {
- if (!toStop) {
- logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
- }
- }
- try {
- TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT);
- } catch (InterruptedException e) {
- if (!toStop) {
- logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
- }
- }
- }
- logger.info(">>>>>>>>>>> xxl-job, job registry monitor thread stop");
- }
- });
- registryThread.setDaemon(true);
- registryThread.setName("xxl-job, admin JobRegistryMonitorHelper");
- registryThread.start();
- }
-
- public void toStop(){
- toStop = true;
- // interrupt and wait
- registryThread.interrupt();
- try {
- registryThread.join();
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
deleted file mode 100644
index 765161a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
+++ /dev/null
@@ -1,354 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author xuxueli 2019-05-21
- */
-public class JobScheduleHelper {
- private static Logger logger = LoggerFactory.getLogger(JobScheduleHelper.class);
-
- private static JobScheduleHelper instance = new JobScheduleHelper();
- public static JobScheduleHelper getInstance(){
- return instance;
- }
-
- public static final long PRE_READ_MS = 5000; // pre read
-
- private Thread scheduleThread;
- private Thread ringThread;
- private volatile boolean scheduleThreadToStop = false;
- private volatile boolean ringThreadToStop = false;
- private volatile static Map<Integer, List<Integer>> ringData = new ConcurrentHashMap<>();
-
- public void start(){
-
- // schedule thread
- scheduleThread = new Thread(new Runnable() {
- @Override
- public void run() {
-
- try {
- TimeUnit.MILLISECONDS.sleep(5000 - System.currentTimeMillis()%1000 );
- } catch (InterruptedException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- logger.info(">>>>>>>>> init xxl-job admin scheduler success.");
-
- // pre-read count: treadpool-size * trigger-qps (each trigger cost 50ms, qps = 1000/50 = 20)
- int preReadCount = (XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax() + XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax()) * 20;
-
- while (!scheduleThreadToStop) {
-
- // Scan Job
- long start = System.currentTimeMillis();
-
- Connection conn = null;
- Boolean connAutoCommit = null;
- PreparedStatement preparedStatement = null;
-
- boolean preReadSuc = true;
- try {
-
- conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
- connAutoCommit = conn.getAutoCommit();
- conn.setAutoCommit(false);
-
- preparedStatement = conn.prepareStatement( "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
- preparedStatement.execute();
-
- // tx start
-
- // 1銆乸re read
- long nowTime = System.currentTimeMillis();
- List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(nowTime + PRE_READ_MS, preReadCount);
- if (scheduleList!=null && scheduleList.size()>0) {
- // 2銆乸ush time-ring
- for (XxlJobInfo jobInfo: scheduleList) {
-
- // time-ring jump
- if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
- // 2.1銆乼rigger-expire > 5s锛歱ass && make next-trigger-time
- logger.warn(">>>>>>>>>>> xxl-job, schedule misfire, jobId = " + jobInfo.getId());
-
- // fresh next
- refreshNextValidTime(jobInfo, new Date());
-
- } else if (nowTime > jobInfo.getTriggerNextTime()) {
- // 2.2銆乼rigger-expire < 5s锛歞irect-trigger && make next-trigger-time
-
- // 1銆乼rigger
- JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.CRON, -1, null, null);
- logger.debug(">>>>>>>>>>> xxl-job, schedule push trigger : jobId = " + jobInfo.getId() );
-
- // 2銆乫resh next
- refreshNextValidTime(jobInfo, new Date());
-
- // next-trigger-time in 5s, pre-read again
- if (jobInfo.getTriggerStatus()==1 && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
-
- // 1銆乵ake ring second
- int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
-
- // 2銆乸ush time ring
- pushTimeRing(ringSecond, jobInfo.getId());
-
- // 3銆乫resh next
- refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
-
- }
-
- } else {
- // 2.3銆乼rigger-pre-read锛歵ime-ring trigger && make next-trigger-time
-
- // 1銆乵ake ring second
- int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
-
- // 2銆乸ush time ring
- pushTimeRing(ringSecond, jobInfo.getId());
-
- // 3銆乫resh next
- refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
-
- }
-
- }
-
- // 3銆乽pdate trigger info
- for (XxlJobInfo jobInfo: scheduleList) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleUpdate(jobInfo);
- }
-
- } else {
- preReadSuc = false;
- }
-
- // tx stop
-
-
- } catch (Exception e) {
- if (!scheduleThreadToStop) {
- logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}", e);
- }
- } finally {
-
- // commit
- if (conn != null) {
- try {
- conn.commit();
- } catch (SQLException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- try {
- conn.setAutoCommit(connAutoCommit);
- } catch (SQLException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- try {
- conn.close();
- } catch (SQLException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- }
-
- // close PreparedStatement
- if (null != preparedStatement) {
- try {
- preparedStatement.close();
- } catch (SQLException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- }
- }
- long cost = System.currentTimeMillis()-start;
-
-
- // Wait seconds, align second
- if (cost < 1000) { // scan-overtime, not wait
- try {
- // pre-read period: success > scan each second; fail > skip this period;
- TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:PRE_READ_MS) - System.currentTimeMillis()%1000);
- } catch (InterruptedException e) {
- if (!scheduleThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- }
-
- }
-
- logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop");
- }
- });
- scheduleThread.setDaemon(true);
- scheduleThread.setName("xxl-job, admin JobScheduleHelper#scheduleThread");
- scheduleThread.start();
-
-
- // ring thread
- ringThread = new Thread(new Runnable() {
- @Override
- public void run() {
-
- // align second
- try {
- TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000 );
- } catch (InterruptedException e) {
- if (!ringThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
-
- while (!ringThreadToStop) {
-
- try {
- // second data
- List<Integer> ringItemData = new ArrayList<>();
- int nowSecond = Calendar.getInstance().get(Calendar.SECOND); // 閬垮厤澶勭悊鑰楁椂澶暱锛岃法杩囧埢搴︼紝鍚戝墠鏍¢獙涓�涓埢搴︼紱
- for (int i = 0; i < 2; i++) {
- List<Integer> tmpData = ringData.remove( (nowSecond+60-i)%60 );
- if (tmpData != null) {
- ringItemData.addAll(tmpData);
- }
- }
-
- // ring trigger
- logger.debug(">>>>>>>>>>> xxl-job, time-ring beat : " + nowSecond + " = " + Arrays.asList(ringItemData) );
- if (ringItemData.size() > 0) {
- // do trigger
- for (int jobId: ringItemData) {
- // do trigger
- JobTriggerPoolHelper.trigger(jobId, TriggerTypeEnum.CRON, -1, null, null);
- }
- // clear
- ringItemData.clear();
- }
- } catch (Exception e) {
- if (!ringThreadToStop) {
- logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e);
- }
- }
-
- // next second, align second
- try {
- TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000);
- } catch (InterruptedException e) {
- if (!ringThreadToStop) {
- logger.error(e.getMessage(), e);
- }
- }
- }
- logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop");
- }
- });
- ringThread.setDaemon(true);
- ringThread.setName("xxl-job, admin JobScheduleHelper#ringThread");
- ringThread.start();
- }
-
- private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws ParseException {
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(fromTime);
- if (nextValidTime != null) {
- jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
- jobInfo.setTriggerNextTime(nextValidTime.getTime());
- } else {
- jobInfo.setTriggerStatus(0);
- jobInfo.setTriggerLastTime(0);
- jobInfo.setTriggerNextTime(0);
- }
- }
-
- private void pushTimeRing(int ringSecond, int jobId){
- // push async ring
- List<Integer> ringItemData = ringData.get(ringSecond);
- if (ringItemData == null) {
- ringItemData = new ArrayList<Integer>();
- ringData.put(ringSecond, ringItemData);
- }
- ringItemData.add(jobId);
-
- logger.debug(">>>>>>>>>>> xxl-job, schedule push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData) );
- }
-
- public void toStop(){
-
- // 1銆乻top schedule
- scheduleThreadToStop = true;
- try {
- TimeUnit.SECONDS.sleep(1); // wait
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- if (scheduleThread.getState() != Thread.State.TERMINATED){
- // interrupt and wait
- scheduleThread.interrupt();
- try {
- scheduleThread.join();
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- // if has ring data
- boolean hasRingData = false;
- if (!ringData.isEmpty()) {
- for (int second : ringData.keySet()) {
- List<Integer> tmpData = ringData.get(second);
- if (tmpData!=null && tmpData.size()>0) {
- hasRingData = true;
- break;
- }
- }
- }
- if (hasRingData) {
- try {
- TimeUnit.SECONDS.sleep(8);
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- // stop ring (wait job-in-memory stop)
- ringThreadToStop = true;
- try {
- TimeUnit.SECONDS.sleep(1);
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- if (ringThread.getState() != Thread.State.TERMINATED){
- // interrupt and wait
- ringThread.interrupt();
- try {
- ringThread.join();
- } catch (InterruptedException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper stop");
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
deleted file mode 100644
index d4d4db9..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.trigger.XxlJobTrigger;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * job trigger thread pool helper
- *
- * @author xuxueli 2018-07-03 21:08:07
- */
-public class JobTriggerPoolHelper {
- private static Logger logger = LoggerFactory.getLogger(JobTriggerPoolHelper.class);
-
-
- // ---------------------- trigger pool ----------------------
-
- // fast/slow thread pool
- private ThreadPoolExecutor fastTriggerPool = null;
- private ThreadPoolExecutor slowTriggerPool = null;
-
- public void start(){
- fastTriggerPool = new ThreadPoolExecutor(
- 10,
- XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax(),
- 60L,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>(1000),
- new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-" + r.hashCode());
- }
- });
-
- slowTriggerPool = new ThreadPoolExecutor(
- 10,
- XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax(),
- 60L,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>(2000),
- new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-slowTriggerPool-" + r.hashCode());
- }
- });
- }
-
-
- public void stop() {
- //triggerPool.shutdown();
- fastTriggerPool.shutdownNow();
- slowTriggerPool.shutdownNow();
- logger.info(">>>>>>>>> xxl-job trigger thread pool shutdown success.");
- }
-
-
- // job timeout count
- private volatile long minTim = System.currentTimeMillis()/60000; // ms > min
- private volatile ConcurrentMap<Integer, AtomicInteger> jobTimeoutCountMap = new ConcurrentHashMap<>();
-
-
- /**
- * add trigger
- */
- public void addTrigger(final int jobId, final TriggerTypeEnum triggerType, final int failRetryCount, final String executorShardingParam, final String executorParam) {
-
- // choose thread pool
- ThreadPoolExecutor triggerPool_ = fastTriggerPool;
- AtomicInteger jobTimeoutCount = jobTimeoutCountMap.get(jobId);
- if (jobTimeoutCount!=null && jobTimeoutCount.get() > 10) { // job-timeout 10 times in 1 min
- triggerPool_ = slowTriggerPool;
- }
-
- // trigger
- triggerPool_.execute(new Runnable() {
- @Override
- public void run() {
-
- long start = System.currentTimeMillis();
-
- try {
- // do trigger
- XxlJobTrigger.trigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- } finally {
-
- // check timeout-count-map
- long minTim_now = System.currentTimeMillis()/60000;
- if (minTim != minTim_now) {
- minTim = minTim_now;
- jobTimeoutCountMap.clear();
- }
-
- // incr timeout-count-map
- long cost = System.currentTimeMillis()-start;
- if (cost > 500) { // ob-timeout threshold 500ms
- AtomicInteger timeoutCount = jobTimeoutCountMap.putIfAbsent(jobId, new AtomicInteger(1));
- if (timeoutCount != null) {
- timeoutCount.incrementAndGet();
- }
- }
-
- }
-
- }
- });
- }
-
-
-
- // ---------------------- helper ----------------------
-
- private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
-
- public static void toStart() {
- helper.start();
- }
- public static void toStop() {
- helper.stop();
- }
-
- /**
- * @param jobId
- * @param triggerType
- * @param failRetryCount
- * >=0: use this param
- * <0: use param from job info config
- * @param executorShardingParam
- * @param executorParam
- * null: use job param
- * not null: cover job param
- */
- public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam) {
- helper.addTrigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
deleted file mode 100644
index bfb66d0..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.xxl.job.admin.core.trigger;
-
-import com.xxl.job.admin.core.util.I18nUtil;
-
-/**
- * trigger type enum
- *
- * @author xuxueli 2018-09-16 04:56:41
- */
-public enum TriggerTypeEnum {
-
- MANUAL(I18nUtil.getString("jobconf_trigger_type_manual")),
- CRON(I18nUtil.getString("jobconf_trigger_type_cron")),
- RETRY(I18nUtil.getString("jobconf_trigger_type_retry")),
- PARENT(I18nUtil.getString("jobconf_trigger_type_parent")),
- API(I18nUtil.getString("jobconf_trigger_type_api"));
-
- private TriggerTypeEnum(String title){
- this.title = title;
- }
- private String title;
- public String getTitle() {
- return title;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
deleted file mode 100644
index d2a92b8..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.xxl.job.admin.core.trigger;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.rpc.util.IpUtil;
-import com.xxl.rpc.util.ThrowableUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Date;
-
-/**
- * xxl-job trigger
- * Created by xuxueli on 17/7/13.
- */
-public class XxlJobTrigger {
- private static Logger logger = LoggerFactory.getLogger(XxlJobTrigger.class);
-
- /**
- * trigger job
- *
- * @param jobId
- * @param triggerType
- * @param failRetryCount
- * >=0: use this param
- * <0: use param from job info config
- * @param executorShardingParam
- * @param executorParam
- * null: use job param
- * not null: cover job param
- */
- public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam) {
- // load data
- XxlJobInfo jobInfo = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(jobId);
- if (jobInfo == null) {
- logger.warn(">>>>>>>>>>>> trigger fail, jobId invalid锛宩obId={}", jobId);
- return;
- }
- if (executorParam != null) {
- jobInfo.setExecutorParam(executorParam);
- }
- int finalFailRetryCount = failRetryCount>=0?failRetryCount:jobInfo.getExecutorFailRetryCount();
- XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(jobInfo.getJobGroup());
-
- // sharding param
- int[] shardingParam = null;
- if (executorShardingParam!=null){
- String[] shardingArr = executorShardingParam.split("/");
- if (shardingArr.length==2 && isNumeric(shardingArr[0]) && isNumeric(shardingArr[1])) {
- shardingParam = new int[2];
- shardingParam[0] = Integer.valueOf(shardingArr[0]);
- shardingParam[1] = Integer.valueOf(shardingArr[1]);
- }
- }
- if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null)
- && group.getRegistryList()!=null && !group.getRegistryList().isEmpty()
- && shardingParam==null) {
- for (int i = 0; i < group.getRegistryList().size(); i++) {
- processTrigger(group, jobInfo, finalFailRetryCount, triggerType, i, group.getRegistryList().size());
- }
- } else {
- if (shardingParam == null) {
- shardingParam = new int[]{0, 1};
- }
- processTrigger(group, jobInfo, finalFailRetryCount, triggerType, shardingParam[0], shardingParam[1]);
- }
-
- }
-
- private static boolean isNumeric(String str){
- try {
- int result = Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- /**
- * @param group job group, registry list may be empty
- * @param jobInfo
- * @param finalFailRetryCount
- * @param triggerType
- * @param index sharding index
- * @param total sharding index
- */
- private static void processTrigger(XxlJobGroup group, XxlJobInfo jobInfo, int finalFailRetryCount, TriggerTypeEnum triggerType, int index, int total){
-
- // param
- ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION); // block strategy
- ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); // route strategy
- String shardingParam = (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==executorRouteStrategyEnum)?String.valueOf(index).concat("/").concat(String.valueOf(total)):null;
-
- // 1銆乻ave log-id
- XxlJobLog jobLog = new XxlJobLog();
- jobLog.setJobGroup(jobInfo.getJobGroup());
- jobLog.setJobId(jobInfo.getId());
- jobLog.setTriggerTime(new Date());
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().save(jobLog);
- logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
-
- // 2銆乮nit trigger-param
- TriggerParam triggerParam = new TriggerParam();
- triggerParam.setJobId(jobInfo.getId());
- triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
- triggerParam.setExecutorParams(jobInfo.getExecutorParam());
- triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
- triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout());
- triggerParam.setLogId(jobLog.getId());
- triggerParam.setLogDateTime(jobLog.getTriggerTime().getTime());
- triggerParam.setGlueType(jobInfo.getGlueType());
- triggerParam.setGlueSource(jobInfo.getGlueSource());
- triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
- triggerParam.setBroadcastIndex(index);
- triggerParam.setBroadcastTotal(total);
-
- // 3銆乮nit address
- String address = null;
- ReturnT<String> routeAddressResult = null;
- if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
- if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
- if (index < group.getRegistryList().size()) {
- address = group.getRegistryList().get(index);
- } else {
- address = group.getRegistryList().get(0);
- }
- } else {
- routeAddressResult = executorRouteStrategyEnum.getRouter().route(triggerParam, group.getRegistryList());
- if (routeAddressResult.getCode() == ReturnT.SUCCESS_CODE) {
- address = routeAddressResult.getContent();
- }
- }
- } else {
- routeAddressResult = new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobconf_trigger_address_empty"));
- }
-
- // 4銆乼rigger remote executor
- ReturnT<String> triggerResult = null;
- if (address != null) {
- triggerResult = runExecutor(triggerParam, address);
- } else {
- triggerResult = new ReturnT<String>(ReturnT.FAIL_CODE, null);
- }
-
- // 5銆乧ollection trigger info
- StringBuffer triggerMsgSb = new StringBuffer();
- triggerMsgSb.append(I18nUtil.getString("jobconf_trigger_type")).append("锛�").append(triggerType.getTitle());
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append("锛�").append(IpUtil.getIp());
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regtype")).append("锛�")
- .append( (group.getAddressType() == 0)?I18nUtil.getString("jobgroup_field_addressType_0"):I18nUtil.getString("jobgroup_field_addressType_1") );
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append("锛�").append(group.getRegistryList());
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append("锛�").append(executorRouteStrategyEnum.getTitle());
- if (shardingParam != null) {
- triggerMsgSb.append("("+shardingParam+")");
- }
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append("锛�").append(blockStrategy.getTitle());
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append("锛�").append(jobInfo.getExecutorTimeout());
- triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append("锛�").append(finalFailRetryCount);
-
- triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>")
- .append((routeAddressResult!=null&&routeAddressResult.getMsg()!=null)?routeAddressResult.getMsg()+"<br><br>":"").append(triggerResult.getMsg()!=null?triggerResult.getMsg():"");
-
- // 6銆乻ave log trigger-info
- jobLog.setExecutorAddress(address);
- jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
- jobLog.setExecutorParam(jobInfo.getExecutorParam());
- jobLog.setExecutorShardingParam(shardingParam);
- jobLog.setExecutorFailRetryCount(finalFailRetryCount);
- //jobLog.setTriggerTime();
- jobLog.setTriggerCode(triggerResult.getCode());
- jobLog.setTriggerMsg(triggerMsgSb.toString());
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(jobLog);
-
- logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
- }
-
- /**
- * run executor
- * @param triggerParam
- * @param address
- * @return
- */
- public static ReturnT<String> runExecutor(TriggerParam triggerParam, String address){
- ReturnT<String> runResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- runResult = executorBiz.run(triggerParam);
- } catch (Exception e) {
- logger.error(">>>>>>>>>>> xxl-job trigger error, please check if the executor[{}] is running.", address, e);
- runResult = new ReturnT<String>(ReturnT.FAIL_CODE, ThrowableUtil.toString(e));
- }
-
- StringBuffer runResultSB = new StringBuffer(I18nUtil.getString("jobconf_trigger_run") + "锛�");
- runResultSB.append("<br>address锛�").append(address);
- runResultSB.append("<br>code锛�").append(runResult.getCode());
- runResultSB.append("<br>msg锛�").append(runResult.getMsg());
-
- runResult.setMsg(runResultSB.toString());
- return runResult;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
deleted file mode 100644
index a1523aa..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Cookie.Util
- *
- * @author xuxueli 2015-12-12 18:01:06
- */
-public class CookieUtil {
-
- // 榛樿缂撳瓨鏃堕棿,鍗曚綅/绉�, 2H
- private static final int COOKIE_MAX_AGE = Integer.MAX_VALUE;
- // 淇濆瓨璺緞,鏍硅矾寰�
- private static final String COOKIE_PATH = "/";
-
- /**
- * 淇濆瓨
- *
- * @param response
- * @param key
- * @param value
- * @param ifRemember
- */
- public static void set(HttpServletResponse response, String key, String value, boolean ifRemember) {
- int age = ifRemember?COOKIE_MAX_AGE:-1;
- set(response, key, value, null, COOKIE_PATH, age, true);
- }
-
- /**
- * 淇濆瓨
- *
- * @param response
- * @param key
- * @param value
- * @param maxAge
- */
- private static void set(HttpServletResponse response, String key, String value, String domain, String path, int maxAge, boolean isHttpOnly) {
- Cookie cookie = new Cookie(key, value);
- if (domain != null) {
- cookie.setDomain(domain);
- }
- cookie.setPath(path);
- cookie.setMaxAge(maxAge);
- cookie.setHttpOnly(isHttpOnly);
- response.addCookie(cookie);
- }
-
- /**
- * 鏌ヨvalue
- *
- * @param request
- * @param key
- * @return
- */
- public static String getValue(HttpServletRequest request, String key) {
- Cookie cookie = get(request, key);
- if (cookie != null) {
- return cookie.getValue();
- }
- return null;
- }
-
- /**
- * 鏌ヨCookie
- *
- * @param request
- * @param key
- */
- private static Cookie get(HttpServletRequest request, String key) {
- Cookie[] arr_cookie = request.getCookies();
- if (arr_cookie != null && arr_cookie.length > 0) {
- for (Cookie cookie : arr_cookie) {
- if (cookie.getName().equals(key)) {
- return cookie;
- }
- }
- }
- return null;
- }
-
- /**
- * 鍒犻櫎Cookie
- *
- * @param request
- * @param response
- * @param key
- */
- public static void remove(HttpServletRequest request, HttpServletResponse response, String key) {
- Cookie cookie = get(request, key);
- if (cookie != null) {
- set(response, key, "", null, COOKIE_PATH, 0, true);
- }
- }
-
-}
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
deleted file mode 100644
index e90af43..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.ext.beans.BeansWrapperBuilder;
-import freemarker.template.Configuration;
-import freemarker.template.TemplateHashModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ftl util
- *
- * @author xuxueli 2018-01-17 20:37:48
- */
-public class FtlUtil {
- private static Logger logger = LoggerFactory.getLogger(FtlUtil.class);
-
- private static BeansWrapper wrapper = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS).build(); //BeansWrapper.getDefaultInstance();
-
- public static TemplateHashModel generateStaticModel(String packageName) {
- try {
- TemplateHashModel staticModels = wrapper.getStaticModels();
- TemplateHashModel fileStatics = (TemplateHashModel) staticModels.get(packageName);
- return fileStatics;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
deleted file mode 100644
index 0eb0cb7..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.EncodedResource;
-import org.springframework.core.io.support.PropertiesLoaderUtils;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * i18n util
- *
- * @author xuxueli 2018-01-17 20:39:06
- */
-public class I18nUtil {
- private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
-
- private static Properties prop = null;
- public static Properties loadI18nProp(){
- if (prop != null) {
- return prop;
- }
- try {
- // build i18n prop
- String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
- i18n = (i18n!=null && i18n.trim().length()>0)?("_"+i18n):i18n;
- String i18nFile = MessageFormat.format("i18n/message{0}.properties", i18n);
-
- // load prop
- Resource Resource = new ClassPathResource(i18nFile);
- EncodedResource encodedResource = new EncodedResource(Resource,"UTF-8");
- prop = PropertiesLoaderUtils.loadProperties(encodedResource);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return prop;
- }
-
- /**
- * get val of i18n key
- *
- * @param key
- * @return
- */
- public static String getString(String key) {
- return loadI18nProp().getProperty(key);
- }
-
- /**
- * get mult val of i18n mult key, as json
- *
- * @param keys
- * @return
- */
- public static String getMultString(String... keys) {
- Map<String, String> map = new HashMap<String, String>();
-
- Properties prop = loadI18nProp();
- if (keys!=null && keys.length>0) {
- for (String key: keys) {
- map.put(key, prop.getProperty(key));
- }
- } else {
- for (String key: prop.stringPropertyNames()) {
- map.put(key, prop.getProperty(key));
- }
- }
-
- String json = JacksonUtil.writeValueAsString(map);
- return json;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
deleted file mode 100644
index 4f4ea3c..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-/**
- * Jackson util
- *
- * 1銆乷bj need private and set/get锛�
- * 2銆乨o not support inner class锛�
- *
- * @author xuxueli 2015-9-25 18:02:56
- */
-public class JacksonUtil {
- private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
-
- private final static ObjectMapper objectMapper = new ObjectMapper();
- public static ObjectMapper getInstance() {
- return objectMapper;
- }
-
- /**
- * bean銆乤rray銆丩ist銆丮ap --> json
- *
- * @param obj
- * @return json string
- * @throws Exception
- */
- public static String writeValueAsString(Object obj) {
- try {
- return getInstance().writeValueAsString(obj);
- } catch (JsonGenerationException e) {
- logger.error(e.getMessage(), e);
- } catch (JsonMappingException e) {
- logger.error(e.getMessage(), e);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * string --> bean銆丮ap銆丩ist(array)
- *
- * @param jsonStr
- * @param clazz
- * @return obj
- * @throws Exception
- */
- public static <T> T readValue(String jsonStr, Class<T> clazz) {
- try {
- return getInstance().readValue(jsonStr, clazz);
- } catch (JsonParseException e) {
- logger.error(e.getMessage(), e);
- } catch (JsonMappingException e) {
- logger.error(e.getMessage(), e);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * string --> List<Bean>...
- *
- * @param jsonStr
- * @param parametrized
- * @param parameterClasses
- * @param <T>
- * @return
- */
- public static <T> T readValue(String jsonStr, Class<?> parametrized, Class<?>... parameterClasses) {
- try {
- JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses);
- return getInstance().readValue(jsonStr, javaType);
- } catch (JsonParseException e) {
- logger.error(e.getMessage(), e);
- } catch (JsonMappingException e) {
- logger.error(e.getMessage(), e);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
deleted file mode 100644
index fbab061..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * local cache tool
- *
- * @author xuxueli 2018-01-22 21:37:34
- */
-public class LocalCacheUtil {
-
- private static ConcurrentMap<String, LocalCacheData> cacheRepository = new ConcurrentHashMap<String, LocalCacheData>(); // 绫诲瀷寤鸿鐢ㄦ娊璞$埗绫伙紝鍏煎鎬ф洿濂斤紱
- private static class LocalCacheData{
- private String key;
- private Object val;
- private long timeoutTime;
-
- public LocalCacheData() {
- }
-
- public LocalCacheData(String key, Object val, long timeoutTime) {
- this.key = key;
- this.val = val;
- this.timeoutTime = timeoutTime;
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
- public Object getVal() {
- return val;
- }
-
- public void setVal(Object val) {
- this.val = val;
- }
-
- public long getTimeoutTime() {
- return timeoutTime;
- }
-
- public void setTimeoutTime(long timeoutTime) {
- this.timeoutTime = timeoutTime;
- }
- }
-
-
- /**
- * set cache
- *
- * @param key
- * @param val
- * @param cacheTime
- * @return
- */
- public static boolean set(String key, Object val, long cacheTime){
-
- // clean timeout cache, before set new cache (avoid cache too much)
- cleanTimeoutCache();
-
- // set new cache
- if (key==null || key.trim().length()==0) {
- return false;
- }
- if (val == null) {
- remove(key);
- }
- if (cacheTime <= 0) {
- remove(key);
- }
- long timeoutTime = System.currentTimeMillis() + cacheTime;
- LocalCacheData localCacheData = new LocalCacheData(key, val, timeoutTime);
- cacheRepository.put(localCacheData.getKey(), localCacheData);
- return true;
- }
-
- /**
- * remove cache
- *
- * @param key
- * @return
- */
- public static boolean remove(String key){
- if (key==null || key.trim().length()==0) {
- return false;
- }
- cacheRepository.remove(key);
- return true;
- }
-
- /**
- * get cache
- *
- * @param key
- * @return
- */
- public static Object get(String key){
- if (key==null || key.trim().length()==0) {
- return null;
- }
- LocalCacheData localCacheData = cacheRepository.get(key);
- if (localCacheData!=null && System.currentTimeMillis()<localCacheData.getTimeoutTime()) {
- return localCacheData.getVal();
- } else {
- remove(key);
- return null;
- }
- }
-
- /**
- * clean timeout cache
- *
- * @return
- */
- public static boolean cleanTimeoutCache(){
- if (!cacheRepository.keySet().isEmpty()) {
- for (String key: cacheRepository.keySet()) {
- LocalCacheData localCacheData = cacheRepository.get(key);
- if (localCacheData!=null && System.currentTimeMillis()>=localCacheData.getTimeoutTime()) {
- cacheRepository.remove(key);
- }
- }
- }
- return true;
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
deleted file mode 100644
index 35f3cd3..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-@Mapper
-public interface XxlJobGroupDao {
-
- public List<XxlJobGroup> findAll();
-
- public List<XxlJobGroup> findByAddressType(@Param("addressType") int addressType);
-
- public int save(XxlJobGroup xxlJobGroup);
-
- public int update(XxlJobGroup xxlJobGroup);
-
- public int remove(@Param("id") int id);
-
- public XxlJobGroup load(@Param("id") int id);
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
deleted file mode 100644
index d640eff..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-
-/**
- * job info
- * @author xuxueli 2016-1-12 18:03:45
- */
-@Mapper
-public interface XxlJobInfoDao {
-
- public List<XxlJobInfo> pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("triggerStatus") int triggerStatus,
- @Param("jobDesc") String jobDesc,
- @Param("executorHandler") String executorHandler,
- @Param("author") String author);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("triggerStatus") int triggerStatus,
- @Param("jobDesc") String jobDesc,
- @Param("executorHandler") String executorHandler,
- @Param("author") String author);
-
- public int save(XxlJobInfo info);
-
- public XxlJobInfo loadById(@Param("id") int id);
-
- public int update(XxlJobInfo xxlJobInfo);
-
- public int delete(@Param("id") long id);
-
- public List<XxlJobInfo> getJobsByGroup(@Param("jobGroup") int jobGroup);
-
- public int findAllCount();
-
- public List<XxlJobInfo> scheduleJobQuery(@Param("maxNextTime") long maxNextTime, @Param("pagesize") int pagesize );
-
- public int scheduleUpdate(XxlJobInfo xxlJobInfo);
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
deleted file mode 100644
index e66f926..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLog;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * job log
- * @author xuxueli 2016-1-12 18:03:06
- */
-@Mapper
-public interface XxlJobLogDao {
-
- // exist jobId not use jobGroup, not exist use jobGroup
- public List<XxlJobLog> pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("triggerTimeStart") Date triggerTimeStart,
- @Param("triggerTimeEnd") Date triggerTimeEnd,
- @Param("logStatus") int logStatus);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("triggerTimeStart") Date triggerTimeStart,
- @Param("triggerTimeEnd") Date triggerTimeEnd,
- @Param("logStatus") int logStatus);
-
- public XxlJobLog load(@Param("id") long id);
-
- public long save(XxlJobLog xxlJobLog);
-
- public int updateTriggerInfo(XxlJobLog xxlJobLog);
-
- public int updateHandleInfo(XxlJobLog xxlJobLog);
-
- public int delete(@Param("jobId") int jobId);
-
- public Map<String, Object> findLogReport(@Param("from") Date from,
- @Param("to") Date to);
-
- public List<Long> findClearLogIds(@Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("clearBeforeTime") Date clearBeforeTime,
- @Param("clearBeforeNum") int clearBeforeNum,
- @Param("pagesize") int pagesize);
- public int clearLog(@Param("logIds") List<Long> logIds);
-
- public List<Long> findFailJobLogIds(@Param("pagesize") int pagesize);
-
- public int updateAlarmStatus(@Param("logId") long logId,
- @Param("oldAlarmStatus") int oldAlarmStatus,
- @Param("newAlarmStatus") int newAlarmStatus);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
deleted file mode 100644
index 3028aed..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * job log for glue
- * @author xuxueli 2016-5-19 18:04:56
- */
-@Mapper
-public interface XxlJobLogGlueDao {
-
- public int save(XxlJobLogGlue xxlJobLogGlue);
-
- public List<XxlJobLogGlue> findByJobId(@Param("jobId") int jobId);
-
- public int removeOld(@Param("jobId") int jobId, @Param("limit") int limit);
-
- public int deleteByJobId(@Param("jobId") int jobId);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
deleted file mode 100644
index f4b3dc8..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * job log
- * @author xuxueli 2019-11-22
- */
-@Mapper
-public interface XxlJobLogReportDao {
-
- public int save(XxlJobLogReport xxlJobLogReport);
-
- public int update(XxlJobLogReport xxlJobLogReport);
-
- public List<XxlJobLogReport> queryLogReport(@Param("triggerDayFrom") Date triggerDayFrom,
- @Param("triggerDayTo") Date triggerDayTo);
-
- public XxlJobLogReport queryLogReportTotal();
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
deleted file mode 100644
index 1005c46..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-@Mapper
-public interface XxlJobRegistryDao {
-
- public List<Integer> findDead(@Param("timeout") int timeout,
- @Param("nowTime") Date nowTime);
-
- public int removeDead(@Param("ids") List<Integer> ids);
-
- public List<XxlJobRegistry> findAll(@Param("timeout") int timeout,
- @Param("nowTime") Date nowTime);
-
- public int registryUpdate(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue,
- @Param("updateTime") Date updateTime);
-
- public int registrySave(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue,
- @Param("updateTime") Date updateTime);
-
- public int registryDelete(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
deleted file mode 100644
index e840494..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobUser;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import java.util.List;
-
-/**
- * @author xuxueli 2019-05-04 16:44:59
- */
-@Mapper
-public interface XxlJobUserDao {
-
- public List<XxlJobUser> pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("username") String username,
- @Param("role") int role);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("username") String username,
- @Param("role") int role);
-
- public XxlJobUser loadByUserName(@Param("username") String username);
-
- public int save(XxlJobUser xxlJobUser);
-
- public int update(XxlJobUser xxlJobUser);
-
- public int delete(@Param("id") int id);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/LoginService.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
deleted file mode 100644
index 5ba02ee..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.xxl.job.admin.service;
-
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.CookieUtil;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.core.util.JacksonUtil;
-import com.xxl.job.admin.dao.XxlJobUserDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.DigestUtils;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.math.BigInteger;
-
-/**
- * @author xuxueli 2019-05-04 22:13:264
- */
-@Configuration(proxyBeanMethods = false)
-public class LoginService {
-
- public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
-
- @Resource
- private XxlJobUserDao xxlJobUserDao;
-
-
- private String makeToken(XxlJobUser xxlJobUser){
- String tokenJson = JacksonUtil.writeValueAsString(xxlJobUser);
- String tokenHex = new BigInteger(tokenJson.getBytes()).toString(16);
- return tokenHex;
- }
- private XxlJobUser parseToken(String tokenHex){
- XxlJobUser xxlJobUser = null;
- if (tokenHex != null) {
- String tokenJson = new String(new BigInteger(tokenHex, 16).toByteArray()); // username_password(md5)
- xxlJobUser = JacksonUtil.readValue(tokenJson, XxlJobUser.class);
- }
- return xxlJobUser;
- }
-
-
- public ReturnT<String> login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean ifRemember){
-
- // param
- if (username==null || username.trim().length()==0 || password==null || password.trim().length()==0){
- return new ReturnT<String>(500, I18nUtil.getString("login_param_empty"));
- }
-
- // valid passowrd
- XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
- if (xxlJobUser == null) {
- return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
- }
- String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
- if (!passwordMd5.equals(xxlJobUser.getPassword())) {
- return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
- }
-
- String loginToken = makeToken(xxlJobUser);
-
- // do login
- CookieUtil.set(response, LOGIN_IDENTITY_KEY, loginToken, ifRemember);
- return ReturnT.SUCCESS;
- }
-
- /**
- * logout
- *
- * @param request
- * @param response
- */
- public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
- CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
- return ReturnT.SUCCESS;
- }
-
- /**
- * logout
- *
- * @param request
- * @return
- */
- public XxlJobUser ifLogin(HttpServletRequest request, HttpServletResponse response){
- String cookieToken = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
- if (cookieToken != null) {
- XxlJobUser cookieUser = null;
- try {
- cookieUser = parseToken(cookieToken);
- } catch (Exception e) {
- logout(request, response);
- }
- if (cookieUser != null) {
- XxlJobUser dbUser = xxlJobUserDao.loadByUserName(cookieUser.getUsername());
- if (dbUser != null) {
- if (cookieUser.getPassword().equals(dbUser.getPassword())) {
- return dbUser;
- }
- }
- }
- }
- return null;
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java
deleted file mode 100644
index 61da3a2..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.xxl.job.admin.service;
-
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.core.biz.model.ReturnT;
-
-import java.util.Date;
-import java.util.Map;
-
-/**
- * core job action for xxl-job
- *
- * @author xuxueli 2016-5-28 15:30:33
- */
-public interface XxlJobService {
-
- /**
- * page list
- *
- * @param start
- * @param length
- * @param jobGroup
- * @param jobDesc
- * @param executorHandler
- * @param author
- * @return
- */
- public Map<String, Object> pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author);
-
- /**
- * add job
- *
- * @param jobInfo
- * @return
- */
- public ReturnT<String> add(XxlJobInfo jobInfo);
-
- /**
- * update job
- *
- * @param jobInfo
- * @return
- */
- public ReturnT<String> update(XxlJobInfo jobInfo);
-
- /**
- * remove job
- * *
- * @param id
- * @return
- */
- public ReturnT<String> remove(int id);
-
- /**
- * start job
- *
- * @param id
- * @return
- */
- public ReturnT<String> start(int id);
-
- /**
- * stop job
- *
- * @param id
- * @return
- */
- public ReturnT<String> stop(int id);
-
- /**
- * dashboard info
- *
- * @return
- */
- public Map<String,Object> dashboardInfo();
-
- /**
- * chart info
- *
- * @param startDate
- * @param endDate
- * @return
- */
- public ReturnT<Map<String,Object>> chartInfo(Date startDate, Date endDate);
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
deleted file mode 100644
index 1cdeac8..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.xxl.job.admin.service.impl;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogDao;
-import com.xxl.job.admin.dao.XxlJobRegistryDao;
-import com.xxl.job.core.biz.AdminBiz;
-import com.xxl.job.core.biz.model.HandleCallbackParam;
-import com.xxl.job.core.biz.model.RegistryParam;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.IJobHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.text.MessageFormat;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author xuxueli 2017-07-27 21:54:20
- */
-@Service
-public class AdminBizImpl implements AdminBiz {
- private static Logger logger = LoggerFactory.getLogger(AdminBizImpl.class);
-
- @Resource
- public XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
-
-
- @Override
- public ReturnT<String> callback(List<HandleCallbackParam> callbackParamList) {
- for (HandleCallbackParam handleCallbackParam: callbackParamList) {
- ReturnT<String> callbackResult = callback(handleCallbackParam);
- logger.debug(">>>>>>>>> JobApiController.callback {}, handleCallbackParam={}, callbackResult={}",
- (callbackResult.getCode()==IJobHandler.SUCCESS.getCode()?"success":"fail"), handleCallbackParam, callbackResult);
- }
-
- return ReturnT.SUCCESS;
- }
-
- private ReturnT<String> callback(HandleCallbackParam handleCallbackParam) {
- // valid log item
- XxlJobLog log = xxlJobLogDao.load(handleCallbackParam.getLogId());
- if (log == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, "log item not found.");
- }
- if (log.getHandleCode() > 0) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, "log repeate callback."); // avoid repeat callback, trigger child job etc
- }
-
- // trigger success, to trigger child job
- String callbackMsg = null;
- if (IJobHandler.SUCCESS.getCode() == handleCallbackParam.getExecuteResult().getCode()) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
- if (xxlJobInfo!=null && xxlJobInfo.getChildJobId()!=null && xxlJobInfo.getChildJobId().trim().length()>0) {
- callbackMsg = "<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_child_run") +"<<<<<<<<<<< </span><br>";
-
- String[] childJobIds = xxlJobInfo.getChildJobId().split(",");
- for (int i = 0; i < childJobIds.length; i++) {
- int childJobId = (childJobIds[i]!=null && childJobIds[i].trim().length()>0 && isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
- if (childJobId > 0) {
-
- JobTriggerPoolHelper.trigger(childJobId, TriggerTypeEnum.PARENT, -1, null, null);
- ReturnT<String> triggerChildResult = ReturnT.SUCCESS;
-
- // add msg
- callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg1"),
- (i+1),
- childJobIds.length,
- childJobIds[i],
- (triggerChildResult.getCode()==ReturnT.SUCCESS_CODE?I18nUtil.getString("system_success"):I18nUtil.getString("system_fail")),
- triggerChildResult.getMsg());
- } else {
- callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg2"),
- (i+1),
- childJobIds.length,
- childJobIds[i]);
- }
- }
-
- }
- }
-
- // handle msg
- StringBuffer handleMsg = new StringBuffer();
- if (log.getHandleMsg()!=null) {
- handleMsg.append(log.getHandleMsg()).append("<br>");
- }
- if (handleCallbackParam.getExecuteResult().getMsg() != null) {
- handleMsg.append(handleCallbackParam.getExecuteResult().getMsg());
- }
- if (callbackMsg != null) {
- handleMsg.append(callbackMsg);
- }
-
- // success, save log
- log.setHandleTime(new Date());
- log.setHandleCode(handleCallbackParam.getExecuteResult().getCode());
- log.setHandleMsg(handleMsg.toString());
- xxlJobLogDao.updateHandleInfo(log);
-
- return ReturnT.SUCCESS;
- }
-
- private boolean isNumeric(String str){
- try {
- int result = Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- @Override
- public ReturnT<String> registry(RegistryParam registryParam) {
-
- // valid
- if (!StringUtils.hasText(registryParam.getRegistryGroup())
- || !StringUtils.hasText(registryParam.getRegistryKey())
- || !StringUtils.hasText(registryParam.getRegistryValue())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, "Illegal Argument.");
- }
-
- int ret = xxlJobRegistryDao.registryUpdate(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
- if (ret < 1) {
- xxlJobRegistryDao.registrySave(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
-
- // fresh
- freshGroupRegistryInfo(registryParam);
- }
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT<String> registryRemove(RegistryParam registryParam) {
-
- // valid
- if (!StringUtils.hasText(registryParam.getRegistryGroup())
- || !StringUtils.hasText(registryParam.getRegistryKey())
- || !StringUtils.hasText(registryParam.getRegistryValue())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, "Illegal Argument.");
- }
-
- int ret = xxlJobRegistryDao.registryDelete(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue());
- if (ret > 0) {
-
- // fresh
- freshGroupRegistryInfo(registryParam);
- }
- return ReturnT.SUCCESS;
- }
-
- private void freshGroupRegistryInfo(RegistryParam registryParam){
- // Under consideration, prevent affecting core tables
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
deleted file mode 100644
index 211f351..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+++ /dev/null
@@ -1,372 +0,0 @@
-package com.xxl.job.admin.service.impl;
-
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.thread.JobScheduleHelper;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.*;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import com.xxl.job.core.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.text.MessageFormat;
-import java.text.ParseException;
-import java.util.*;
-
-/**
- * core job action for xxl-job
- * @author xuxueli 2016-5-28 15:30:33
- */
-@Service
-public class XxlJobServiceImpl implements XxlJobService {
- private static Logger logger = LoggerFactory.getLogger(XxlJobServiceImpl.class);
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobLogGlueDao xxlJobLogGlueDao;
- @Resource
- private XxlJobLogReportDao xxlJobLogReportDao;
-
- @Override
- public Map<String, Object> pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
-
- // page list
- List<XxlJobInfo> list = xxlJobInfoDao.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
- int list_count = xxlJobInfoDao.pageListCount(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
-
- // package result
- Map<String, Object> maps = new HashMap<String, Object>();
- maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
- maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
- maps.put("data", list); // 鍒嗛〉鍒楄〃
- return maps;
- }
-
- @Override
- public ReturnT<String> add(XxlJobInfo jobInfo) {
- // valid
- XxlJobGroup group = xxlJobGroupDao.load(jobInfo.getJobGroup());
- if (group == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose")+I18nUtil.getString("jobinfo_field_jobgroup")) );
- }
- if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") );
- }
- if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_jobdesc")) );
- }
- if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_author")) );
- }
- if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString("system_unvalid")) );
- }
- if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
- }
- if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype")+I18nUtil.getString("system_unvalid")) );
- }
- if (GlueTypeEnum.BEAN==GlueTypeEnum.match(jobInfo.getGlueType()) && (jobInfo.getExecutorHandler()==null || jobInfo.getExecutorHandler().trim().length()==0) ) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+"JobHandler") );
- }
-
- // fix "\r" in shell
- if (GlueTypeEnum.GLUE_SHELL==GlueTypeEnum.match(jobInfo.getGlueType()) && jobInfo.getGlueSource()!=null) {
- jobInfo.setGlueSource(jobInfo.getGlueSource().replaceAll("\r", ""));
- }
-
- // ChildJobId valid
- if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
- String[] childJobIds = jobInfo.getChildJobId().split(",");
- for (String childJobIdItem: childJobIds) {
- if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
- XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
- if (childJobInfo==null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_not_found")), childJobIdItem));
- }
- } else {
- return new ReturnT<String>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_unvalid")), childJobIdItem));
- }
- }
-
- // join , avoid "xxx,,"
- String temp = "";
- for (String item:childJobIds) {
- temp += item + ",";
- }
- temp = temp.substring(0, temp.length()-1);
-
- jobInfo.setChildJobId(temp);
- }
-
- // add in db
- jobInfo.setAddTime(new Date());
- jobInfo.setUpdateTime(new Date());
- jobInfo.setGlueUpdatetime(new Date());
- xxlJobInfoDao.save(jobInfo);
- if (jobInfo.getId() < 1) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_add")+I18nUtil.getString("system_fail")) );
- }
-
- return new ReturnT<String>(String.valueOf(jobInfo.getId()));
- }
-
- private boolean isNumeric(String str){
- try {
- int result = Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- @Override
- public ReturnT<String> update(XxlJobInfo jobInfo) {
-
- // valid
- if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") );
- }
- if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_jobdesc")) );
- }
- if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_author")) );
- }
- if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString("system_unvalid")) );
- }
- if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
- }
-
- // ChildJobId valid
- if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
- String[] childJobIds = jobInfo.getChildJobId().split(",");
- for (String childJobIdItem: childJobIds) {
- if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
- XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
- if (childJobInfo==null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_not_found")), childJobIdItem));
- }
- } else {
- return new ReturnT<String>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_unvalid")), childJobIdItem));
- }
- }
-
- // join , avoid "xxx,,"
- String temp = "";
- for (String item:childJobIds) {
- temp += item + ",";
- }
- temp = temp.substring(0, temp.length()-1);
-
- jobInfo.setChildJobId(temp);
- }
-
- // group valid
- XxlJobGroup jobGroup = xxlJobGroupDao.load(jobInfo.getJobGroup());
- if (jobGroup == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_jobgroup")+I18nUtil.getString("system_unvalid")) );
- }
-
- // stage job info
- XxlJobInfo exists_jobInfo = xxlJobInfoDao.loadById(jobInfo.getId());
- if (exists_jobInfo == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString("system_not_found")) );
- }
-
- // next trigger time (5s鍚庣敓鏁堬紝閬垮紑棰勮鍛ㄦ湡)
- long nextTriggerTime = exists_jobInfo.getTriggerNextTime();
- if (exists_jobInfo.getTriggerStatus() == 1 && !jobInfo.getJobCron().equals(exists_jobInfo.getJobCron()) ) {
- try {
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
- if (nextValidTime == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
- }
- nextTriggerTime = nextValidTime.getTime();
- } catch (ParseException e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
- }
- }
-
- exists_jobInfo.setJobGroup(jobInfo.getJobGroup());
- exists_jobInfo.setJobCron(jobInfo.getJobCron());
- exists_jobInfo.setJobDesc(jobInfo.getJobDesc());
- exists_jobInfo.setAuthor(jobInfo.getAuthor());
- exists_jobInfo.setAlarmEmail(jobInfo.getAlarmEmail());
- exists_jobInfo.setExecutorRouteStrategy(jobInfo.getExecutorRouteStrategy());
- exists_jobInfo.setExecutorHandler(jobInfo.getExecutorHandler());
- exists_jobInfo.setExecutorParam(jobInfo.getExecutorParam());
- exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
- exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
- exists_jobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount());
- exists_jobInfo.setChildJobId(jobInfo.getChildJobId());
- exists_jobInfo.setTriggerNextTime(nextTriggerTime);
-
- exists_jobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(exists_jobInfo);
-
-
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT<String> remove(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
- if (xxlJobInfo == null) {
- return ReturnT.SUCCESS;
- }
-
- xxlJobInfoDao.delete(id);
- xxlJobLogDao.delete(id);
- xxlJobLogGlueDao.deleteByJobId(id);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT<String> start(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
-
- // next trigger time (5s鍚庣敓鏁堬紝閬垮紑棰勮鍛ㄦ湡)
- long nextTriggerTime = 0;
- try {
- Date nextValidTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
- if (nextValidTime == null) {
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
- }
- nextTriggerTime = nextValidTime.getTime();
- } catch (ParseException e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
- }
-
- xxlJobInfo.setTriggerStatus(1);
- xxlJobInfo.setTriggerLastTime(0);
- xxlJobInfo.setTriggerNextTime(nextTriggerTime);
-
- xxlJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(xxlJobInfo);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT<String> stop(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
-
- xxlJobInfo.setTriggerStatus(0);
- xxlJobInfo.setTriggerLastTime(0);
- xxlJobInfo.setTriggerNextTime(0);
-
- xxlJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(xxlJobInfo);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public Map<String, Object> dashboardInfo() {
-
- int jobInfoCount = xxlJobInfoDao.findAllCount();
- int jobLogCount = 0;
- int jobLogSuccessCount = 0;
- XxlJobLogReport xxlJobLogReport = xxlJobLogReportDao.queryLogReportTotal();
- if (xxlJobLogReport != null) {
- jobLogCount = xxlJobLogReport.getRunningCount() + xxlJobLogReport.getSucCount() + xxlJobLogReport.getFailCount();
- jobLogSuccessCount = xxlJobLogReport.getSucCount();
- }
-
- // executor count
- Set<String> executorAddressSet = new HashSet<String>();
- List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
-
- if (groupList!=null && !groupList.isEmpty()) {
- for (XxlJobGroup group: groupList) {
- if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
- executorAddressSet.addAll(group.getRegistryList());
- }
- }
- }
-
- int executorCount = executorAddressSet.size();
-
- Map<String, Object> dashboardMap = new HashMap<String, Object>();
- dashboardMap.put("jobInfoCount", jobInfoCount);
- dashboardMap.put("jobLogCount", jobLogCount);
- dashboardMap.put("jobLogSuccessCount", jobLogSuccessCount);
- dashboardMap.put("executorCount", executorCount);
- return dashboardMap;
- }
-
- @Override
- public ReturnT<Map<String, Object>> chartInfo(Date startDate, Date endDate) {
-
- // process
- List<String> triggerDayList = new ArrayList<String>();
- List<Integer> triggerDayCountRunningList = new ArrayList<Integer>();
- List<Integer> triggerDayCountSucList = new ArrayList<Integer>();
- List<Integer> triggerDayCountFailList = new ArrayList<Integer>();
- int triggerCountRunningTotal = 0;
- int triggerCountSucTotal = 0;
- int triggerCountFailTotal = 0;
-
- List<XxlJobLogReport> logReportList = xxlJobLogReportDao.queryLogReport(startDate, endDate);
-
- if (logReportList!=null && logReportList.size()>0) {
- for (XxlJobLogReport item: logReportList) {
- String day = DateUtil.formatDate(item.getTriggerDay());
- int triggerDayCountRunning = item.getRunningCount();
- int triggerDayCountSuc = item.getSucCount();
- int triggerDayCountFail = item.getFailCount();
-
- triggerDayList.add(day);
- triggerDayCountRunningList.add(triggerDayCountRunning);
- triggerDayCountSucList.add(triggerDayCountSuc);
- triggerDayCountFailList.add(triggerDayCountFail);
-
- triggerCountRunningTotal += triggerDayCountRunning;
- triggerCountSucTotal += triggerDayCountSuc;
- triggerCountFailTotal += triggerDayCountFail;
- }
- } else {
- for (int i = -6; i <= 0; i++) {
- triggerDayList.add(DateUtil.formatDate(DateUtil.addDays(new Date(), i)));
- triggerDayCountRunningList.add(0);
- triggerDayCountSucList.add(0);
- triggerDayCountFailList.add(0);
- }
- }
-
- Map<String, Object> result = new HashMap<String, Object>();
- result.put("triggerDayList", triggerDayList);
- result.put("triggerDayCountRunningList", triggerDayCountRunningList);
- result.put("triggerDayCountSucList", triggerDayCountSucList);
- result.put("triggerDayCountFailList", triggerDayCountFailList);
-
- result.put("triggerCountRunningTotal", triggerCountRunningTotal);
- result.put("triggerCountSucTotal", triggerCountSucTotal);
- result.put("triggerCountFailTotal", triggerCountFailTotal);
-
- return new ReturnT<Map<String, Object>>(result);
- }
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application.yml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application.yml
deleted file mode 100644
index 19846ac..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-server:
- port: 36013
- servlet:
- context-path: /xxl-job-admin
-
-spring:
- cloud:
- nacos:
- discovery:
- metadata:
- management:
- context-path: ${server.servlet.context-path}/actuator
- freemarker:
- charset: UTF-8
- request-context-attribute: request
- settings:
- number_format: 0.##########
- suffix: .ftl
- templateLoaderPath: classpath:/templates/
- mail:
- host: smtp.qq.com
- password: xxx
- port: 25
- properties:
- mail:
- smtp:
- auth: true
- socketFactory:
- class: javax.net.ssl.SSLSocketFactory
- starttls:
- enable: true
- required: true
- username: xxx@qq.com
- mvc:
- servlet:
- load-on-startup: 0
- static-path-pattern: /static/**
- Autowireds:
- static-locations: classpath:/static/
-
-management:
- health:
- mail:
- enabled: false
- server:
- servlet:
- context-path: /actuator
-mybatis:
- mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
-
-xxl:
- job:
- accessToken: ''
- i18n: ''
- logretentiondays: 30
- triggerpool:
- fast:
- max: 200
- slow:
- max: 100
-
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/i18n/message_en.properties b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/i18n/message_en.properties
deleted file mode 100644
index 534c2a6..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/i18n/message_en.properties
+++ /dev/null
@@ -1,262 +0,0 @@
-admin_name=Scheduling Center
-admin_name_full=Distributed Task Scheduling Platform XXL-JOB
-admin_version=2.1.2
-admin_i18n=en
-
-## system
-system_tips=System message
-system_ok=Confirm
-system_close=Close
-system_save=Save
-system_cancel=Cancel
-system_search=Search
-system_status=Status
-system_opt=Operate
-system_please_input=please input
-system_please_choose=please choose
-system_success=success
-system_fail=fail
-system_add_suc=add success
-system_add_fail=add fail
-system_update_suc=update success
-system_update_fail=update fail
-system_all=All
-system_api_error=net error
-system_show=Show
-system_empty=Empty
-system_opt_suc=operate success
-system_opt_fail=operate fail
-system_opt_edit=Edit
-system_opt_del=Delete
-system_unvalid=illegal
-system_not_found=not exist
-system_nav=Navigation
-system_digits=digits
-system_lengh_limit=Length limit
-system_permission_limit=Permission limit
-system_welcome=Welcome
-
-## daterangepicker
-daterangepicker_ranges_recent_hour=recent one hour
-daterangepicker_ranges_today=today
-daterangepicker_ranges_yesterday=yesterday
-daterangepicker_ranges_this_month=this month
-daterangepicker_ranges_last_month=last month
-daterangepicker_ranges_recent_week=recent one week
-daterangepicker_ranges_recent_month=recent one month
-daterangepicker_custom_name=custom
-daterangepicker_custom_starttime=start time
-daterangepicker_custom_endtime=end time
-daterangepicker_custom_daysofweek=Sun,Mon,Tue,Wed,Thu,Fri,Sat
-daterangepicker_custom_monthnames=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
-
-## dataTable
-dataTable_sProcessing=processing...
-dataTable_sLengthMenu= _MENU_ records per page
-dataTable_sZeroRecords=No matching results
-dataTable_sInfo=page _PAGE_ ( Total _PAGES_ pages锛宊TOTAL_ records )
-dataTable_sInfoEmpty=No Record
-dataTable_sInfoFiltered=(Filtered by _MAX_ results)
-dataTable_sSearch=Search
-dataTable_sEmptyTable=Table data is empty
-dataTable_sLoadingRecords=Loading...
-dataTable_sFirst=FIRST PAGE
-dataTable_sPrevious=Previous Page
-dataTable_sNext=Next Page
-dataTable_sLast=LAST PAGE
-dataTable_sSortAscending=: Rank this column in ascending order
-dataTable_sSortDescending=: Rank this column in descending order
-
-## login
-login_btn=Login
-login_remember_me=Remember Me
-login_username_placeholder=Please enter username
-login_password_placeholder=Please enter password
-login_username_empty=Please enter username
-login_username_lt_4=Username length should not be less than 4
-login_password_empty=Please enter password
-login_password_lt_4=Password length should not be less than 4
-login_success=Login success
-login_fail=Login fail
-login_param_empty=Username or password is empty
-login_param_unvalid=Username or password error
-
-## logout
-logout_btn=Logout
-logout_confirm=Confirm logout?
-logout_success=Logout success
-logout_fail=Logout fail
-
-## change pwd
-change_pwd=Change password
-change_pwd_suc_to_logout=Change password successful, about to log out login
-change_pwd_field_newpwd=new password
-
-## dashboard
-job_dashboard_name=Run report
-job_dashboard_job_num=Job number
-job_dashboard_job_num_tip=The number of tasks running in the scheduling center
-job_dashboard_trigger_num=trigger number
-job_dashboard_trigger_num_tip=The number of trigger record scheduled by the scheduling center
-job_dashboard_jobgroup_num=Executor number
-job_dashboard_jobgroup_num_tip=The number of online executor machines perceived by the scheduling center
-job_dashboard_report=Scheduling report
-job_dashboard_report_loaddata_fail=Scheduling report load data error
-job_dashboard_date_report=Date distribution
-job_dashboard_rate_report=Percentage distribution
-
-## job info
-jobinfo_name=Job Manage
-jobinfo_job=Job
-jobinfo_field_add=Add Job
-jobinfo_field_update=Edit Job
-jobinfo_field_id=Job ID
-jobinfo_field_jobgroup=Executor
-jobinfo_field_jobdesc=Job description
-jobinfo_field_timeout=Job timeout period
-jobinfo_field_gluetype=GLUE Type
-jobinfo_field_executorparam=Param
-jobinfo_field_cron_unvalid=The Cron is illegal
-jobinfo_field_cron_never_fire=The Cron will never fire
-jobinfo_field_author=Author
-jobinfo_field_alarmemail=Alarm email
-jobinfo_field_alarmemail_placeholder=Please enter alarm mail, if there are more than one comma separated
-jobinfo_field_executorRouteStrategy=Route Strategy
-jobinfo_field_childJobId=Child Job ID
-jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
-jobinfo_field_executorBlockStrategy=Block Strategy
-jobinfo_field_executorFailRetryCount=Fail Retry Count
-jobinfo_field_executorFailRetryCount_placeholder=Fail Retry Count. effect if greater than zero
-jobinfo_script_location=Script location
-jobinfo_shard_index=Shard index
-jobinfo_shard_total=Shard total
-jobinfo_opt_stop=Stop
-jobinfo_opt_start=Start
-jobinfo_opt_log=Query Log
-jobinfo_opt_run=Run Once
-jobinfo_opt_registryinfo=Registry Info
-jobinfo_opt_next_time=Next trigger time
-jobinfo_glue_remark=Autowired Remark
-jobinfo_glue_remark_limit=Autowired Remark length is limited to 4~100
-jobinfo_glue_rollback=Version Backtrack
-jobinfo_glue_jobid_unvalid=Job ID is illegal
-jobinfo_glue_gluetype_unvalid=The job is not GLUE Type
-jobinfo_field_executorTimeout_placeholder=Job Timeout period锛宨n seconds. effect if greater than zero
-
-## job log
-joblog_name=Trigger Log
-joblog_status=Status
-joblog_status_all=All
-joblog_status_suc=Success
-joblog_status_fail=Fail
-joblog_status_running=Running
-joblog_field_triggerTime=Trigger Time
-joblog_field_triggerCode=Trigger Result
-joblog_field_triggerMsg=Trigger Msg
-joblog_field_handleTime=Handle Time
-joblog_field_handleCode=Handle Result
-joblog_field_handleMsg=Trigger Msg
-joblog_field_executorAddress=Executor Address
-joblog_clean=Clean
-joblog_clean_log=Clean Log
-joblog_clean_type=Clean Type
-joblog_clean_type_1=Clean up log data a month ago
-joblog_clean_type_2=Clean up log data three month ago
-joblog_clean_type_3=Clean up log data six month ago
-joblog_clean_type_4=Clean up log data a year ago
-joblog_clean_type_5=Clean up log data a thousand record ago
-joblog_clean_type_6=Clean up log data ten thousand record ago
-joblog_clean_type_7=Clean up log data thirty thousand record ago
-joblog_clean_type_8=Clean up log data hundred thousand record ago
-joblog_clean_type_9=Clean up all log data
-joblog_clean_type_unvalid=Clean type is illegal
-joblog_handleCode_200=Success
-joblog_handleCode_500=Fail
-joblog_handleCode_502=Timeout
-joblog_kill_log=Kill Job
-joblog_kill_log_limit=Trigger Fail, can not kill job
-joblog_kill_log_byman=Manual operation to active kill job
-joblog_rolling_log=Rolling log
-joblog_rolling_log_refresh=Refresh
-joblog_rolling_log_triggerfail=The job trigger fail, can not view the rolling log
-joblog_rolling_log_failoften=The request for the Rolling log is terminated, the number of failed requests exceeds the limit, Reload the log on the refresh page
-joblog_logid_unvalid=Log ID is illegal
-
-## job group
-jobgroup_name=Executor Manage
-jobgroup_list=Executor List
-jobgroup_add=Add Executor
-jobgroup_edit=Edit Executor
-jobgroup_del=Delete Executor
-jobgroup_field_order=Order
-jobgroup_field_title=Title
-jobgroup_field_addressType=Registry Type
-jobgroup_field_addressType_0=Automatic registration
-jobgroup_field_addressType_1=Manual registration
-jobgroup_field_addressType_limit=Manually registration type, the machine address must not be empty
-jobgroup_field_registryList=machine address
-jobgroup_field_registryList_unvalid=registry machine address is illegal
-jobgroup_field_registryList_placeholder=Please enter the machine address, if there are more than one comma separated
-jobgroup_field_appName_limit=Limit the beginning of a lowercase letter, consists of lowercase letters銆乶umber and hyphen.
-jobgroup_field_appName_length=AppName length is limited to 4~64
-jobgroup_field_title_length=Title length is limited to 4~12
-jobgroup_field_order_digits=Please enter a positive integer
-jobgroup_field_orderrange=Order is limited to 1~1000
-jobgroup_del_limit_0=Refuse to delete, the executor is being used
-jobgroup_del_limit_1=Refuses to delete, the system retains at least one executor
-jobgroup_empty=There is no valid executor. Please contact the administrator
-
-## job conf
-jobconf_block_SERIAL_EXECUTION=Serial execution
-jobconf_block_DISCARD_LATER=Discard Later
-jobconf_block_COVER_EARLY=Cover Early
-jobconf_route_first=First
-jobconf_route_last=Last
-jobconf_route_round=Round
-jobconf_route_random=Random
-jobconf_route_consistenthash=Consistent Hash
-jobconf_route_lfu=Least Frequently Used
-jobconf_route_lru=Least Recently Used
-jobconf_route_failover=Failover
-jobconf_route_busyover=Busyover
-jobconf_route_shard=Sharding Broadcast
-jobconf_idleBeat=Idle check
-jobconf_beat=Heartbeats
-jobconf_monitor=Task Scheduling Center monitor alarm
-jobconf_monitor_detail=monitor alarm details
-jobconf_monitor_alarm_title=Alarm Type
-jobconf_monitor_alarm_type=Trigger Fail
-jobconf_monitor_alarm_content=Alarm Content
-jobconf_trigger_admin_adress=Trigger machine address
-jobconf_trigger_exe_regtype=Execotor-Registry Type
-jobconf_trigger_exe_regaddress=Execotor-Registry Address
-jobconf_trigger_address_empty=Trigger Fail锛歳egistry address is empty
-jobconf_trigger_run=Trigger Job
-jobconf_trigger_child_run=Trigger child job
-jobconf_callback_child_msg1={0}/{1} [Job ID={2}], Trigger {3}, Trigger msg: {4} <br>
-jobconf_callback_child_msg2={0}/{1} [Job ID={2}], Trigger Fail, Trigger msg: Job ID is illegal <br>
-jobconf_trigger_type=Job trigger type
-jobconf_trigger_type_cron=Cron trigger
-jobconf_trigger_type_manual=Manual trigger
-jobconf_trigger_type_parent=Parent job trigger
-jobconf_trigger_type_api=Api trigger
-jobconf_trigger_type_retry=Fail retry trigger
-
-## user
-user_manage=User Manage
-user_username=Username
-user_password=Password
-user_role=Role
-user_role_admin=Admin User
-user_role_normal=Normal User
-user_permission=Permission
-user_add=Add User
-user_update=Edit User
-user_username_repeat=Username Repeat
-user_username_valid=Restrictions start with a lowercase letter and consist of lowercase letters and Numbers
-user_password_update_placeholder=Please input password, empty means not update
-user_update_loginuser_limit=Operation of current login account is not allowed
-
-## help
-job_help=Tutorial
-job_help_document=Official Document
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
deleted file mode 100644
index 561c661..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobGroupDao">
-
- <resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
- <result column="id" property="id" />
- <result column="app_name" property="appName" />
- <result column="title" property="title" />
- <result column="order" property="order" />
- <result column="address_type" property="addressType" />
- <result column="address_list" property="addressList" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.app_name,
- t.title,
- t.`order`,
- t.address_type,
- t.address_list
- </sql>
-
- <select id="findAll" resultMap="XxlJobGroup">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_group AS t
- ORDER BY t.order ASC
- </select>
-
- <select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_group AS t
- WHERE t.address_type = #{addressType}
- ORDER BY t.order ASC
- </select>
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_group ( `app_name`, `title`, `order`, `address_type`, `address_list`)
- values ( #{appName}, #{title}, #{order}, #{addressType}, #{addressList});
- </insert>
-
- <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
- UPDATE xxl_job_group
- SET `app_name` = #{appName},
- `title` = #{title},
- `order` = #{order},
- `address_type` = #{addressType},
- `address_list` = #{addressList}
- WHERE id = #{id}
- </update>
-
- <delete id="remove" parameterType="java.lang.Integer" >
- DELETE FROM xxl_job_group
- WHERE id = #{id}
- </delete>
-
- <select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_group AS t
- WHERE t.id = #{id}
- </select>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
deleted file mode 100644
index cb9048d..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobInfoDao">
-
- <resultMap id="XxlJobInfo" type="com.xxl.job.admin.core.model.XxlJobInfo" >
- <result column="id" property="id" />
-
- <result column="job_group" property="jobGroup" />
- <result column="job_cron" property="jobCron" />
- <result column="job_desc" property="jobDesc" />
-
- <result column="add_time" property="addTime" />
- <result column="update_time" property="updateTime" />
-
- <result column="author" property="author" />
- <result column="alarm_email" property="alarmEmail" />
-
- <result column="executor_route_strategy" property="executorRouteStrategy" />
- <result column="executor_handler" property="executorHandler" />
- <result column="executor_param" property="executorParam" />
- <result column="executor_block_strategy" property="executorBlockStrategy" />
- <result column="executor_timeout" property="executorTimeout" />
- <result column="executor_fail_retry_count" property="executorFailRetryCount" />
-
- <result column="glue_type" property="glueType" />
- <result column="glue_source" property="glueSource" />
- <result column="glue_remark" property="glueRemark" />
- <result column="glue_updatetime" property="glueUpdatetime" />
-
- <result column="child_jobid" property="childJobId" />
-
- <result column="trigger_status" property="triggerStatus" />
- <result column="trigger_last_time" property="triggerLastTime" />
- <result column="trigger_next_time" property="triggerNextTime" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.job_group,
- t.job_cron,
- t.job_desc,
- t.add_time,
- t.update_time,
- t.author,
- t.alarm_email,
- t.executor_route_strategy,
- t.executor_handler,
- t.executor_param,
- t.executor_block_strategy,
- t.executor_timeout,
- t.executor_fail_retry_count,
- t.glue_type,
- t.glue_source,
- t.glue_remark,
- t.glue_updatetime,
- t.child_jobid,
- t.trigger_status,
- t.trigger_last_time,
- t.trigger_next_time
- </sql>
-
- <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_info AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobGroup gt 0">
- AND t.job_group = #{jobGroup}
- </if>
- <if test="triggerStatus gte 0">
- AND t.trigger_status = #{triggerStatus}
- </if>
- <if test="jobDesc != null and jobDesc != ''">
- AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
- </if>
- <if test="executorHandler != null and executorHandler != ''">
- AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
- </if>
- <if test="author != null and author != ''">
- AND t.author like CONCAT(CONCAT('%', #{author}), '%')
- </if>
- </trim>
- ORDER BY id DESC
- LIMIT #{offset}, #{pagesize}
- </select>
-
- <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
- SELECT count(1)
- FROM xxl_job_info AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobGroup gt 0">
- AND t.job_group = #{jobGroup}
- </if>
- <if test="triggerStatus gte 0">
- AND t.trigger_status = #{triggerStatus}
- </if>
- <if test="jobDesc != null and jobDesc != ''">
- AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
- </if>
- <if test="executorHandler != null and executorHandler != ''">
- AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
- </if>
- <if test="author != null and author != ''">
- AND t.author like CONCAT(CONCAT('%', #{author}), '%')
- </if>
- </trim>
- </select>
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_info (
- job_group,
- job_cron,
- job_desc,
- add_time,
- update_time,
- author,
- alarm_email,
- executor_route_strategy,
- executor_handler,
- executor_param,
- executor_block_strategy,
- executor_timeout,
- executor_fail_retry_count,
- glue_type,
- glue_source,
- glue_remark,
- glue_updatetime,
- child_jobid,
- trigger_status,
- trigger_last_time,
- trigger_next_time
- ) VALUES (
- #{jobGroup},
- #{jobCron},
- #{jobDesc},
- #{addTime},
- #{updateTime},
- #{author},
- #{alarmEmail},
- #{executorRouteStrategy},
- #{executorHandler},
- #{executorParam},
- #{executorBlockStrategy},
- #{executorTimeout},
- #{executorFailRetryCount},
- #{glueType},
- #{glueSource},
- #{glueRemark},
- #{glueUpdatetime},
- #{childJobId},
- #{triggerStatus},
- #{triggerLastTime},
- #{triggerNextTime}
- );
- <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
- SELECT LAST_INSERT_ID()
- /*SELECT @@IDENTITY AS id*/
- </selectKey>-->
- </insert>
-
- <select id="loadById" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_info AS t
- WHERE t.id = #{id}
- </select>
-
- <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
- UPDATE xxl_job_info
- SET
- job_group = #{jobGroup},
- job_cron = #{jobCron},
- job_desc = #{jobDesc},
- update_time = #{updateTime},
- author = #{author},
- alarm_email = #{alarmEmail},
- executor_route_strategy = #{executorRouteStrategy},
- executor_handler = #{executorHandler},
- executor_param = #{executorParam},
- executor_block_strategy = #{executorBlockStrategy},
- executor_timeout = ${executorTimeout},
- executor_fail_retry_count = ${executorFailRetryCount},
- glue_type = #{glueType},
- glue_source = #{glueSource},
- glue_remark = #{glueRemark},
- glue_updatetime = #{glueUpdatetime},
- child_jobid = #{childJobId},
- trigger_status = #{triggerStatus},
- trigger_last_time = #{triggerLastTime},
- trigger_next_time = #{triggerNextTime}
- WHERE id = #{id}
- </update>
-
- <delete id="delete" parameterType="java.util.HashMap">
- DELETE
- FROM xxl_job_info
- WHERE id = #{id}
- </delete>
-
- <select id="getJobsByGroup" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_info AS t
- WHERE t.job_group = #{jobGroup}
- </select>
-
- <select id="findAllCount" resultType="int">
- SELECT count(1)
- FROM xxl_job_info
- </select>
-
-
- <select id="scheduleJobQuery" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_info AS t
- WHERE t.trigger_status = 1
- and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
- ORDER BY id ASC
- LIMIT #{pagesize}
- </select>
-
- <update id="scheduleUpdate" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
- UPDATE xxl_job_info
- SET
- trigger_last_time = #{triggerLastTime},
- trigger_next_time = #{triggerNextTime},
- trigger_status = #{triggerStatus}
- WHERE id = #{id}
- </update>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
deleted file mode 100644
index 699277c..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobLogGlueDao">
-
- <resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" >
- <result column="id" property="id" />
- <result column="job_id" property="jobId" />
- <result column="glue_type" property="glueType" />
- <result column="glue_source" property="glueSource" />
- <result column="glue_remark" property="glueRemark" />
- <result column="add_time" property="addTime" />
- <result column="update_time" property="updateTime" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.job_id,
- t.glue_type,
- t.glue_source,
- t.glue_remark,
- t.add_time,
- t.update_time
- </sql>
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_logglue (
- `job_id`,
- `glue_type`,
- `glue_source`,
- `glue_remark`,
- `add_time`,
- `update_time`
- ) VALUES (
- #{jobId},
- #{glueType},
- #{glueSource},
- #{glueRemark},
- #{addTime},
- #{updateTime}
- );
- <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
- SELECT LAST_INSERT_ID()
- </selectKey>-->
- </insert>
-
- <select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_logglue AS t
- WHERE t.job_id = #{jobId}
- ORDER BY id DESC
- </select>
-
- <delete id="removeOld" >
- DELETE FROM xxl_job_logglue
- WHERE id NOT in(
- SELECT id FROM(
- SELECT id FROM xxl_job_logglue
- WHERE `job_id` = #{jobId}
- ORDER BY update_time desc
- LIMIT 0, #{limit}
- ) t1
- ) AND `job_id` = #{jobId}
- </delete>
-
- <delete id="deleteByJobId" parameterType="java.lang.Integer" >
- DELETE FROM xxl_job_logglue
- WHERE `job_id` = #{jobId}
- </delete>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
deleted file mode 100644
index e8129e2..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobLogDao">
-
- <resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" >
- <result column="id" property="id" />
-
- <result column="job_group" property="jobGroup" />
- <result column="job_id" property="jobId" />
-
- <result column="executor_address" property="executorAddress" />
- <result column="executor_handler" property="executorHandler" />
- <result column="executor_param" property="executorParam" />
- <result column="executor_sharding_param" property="executorShardingParam" />
- <result column="executor_fail_retry_count" property="executorFailRetryCount" />
-
- <result column="trigger_time" property="triggerTime" />
- <result column="trigger_code" property="triggerCode" />
- <result column="trigger_msg" property="triggerMsg" />
-
- <result column="handle_time" property="handleTime" />
- <result column="handle_code" property="handleCode" />
- <result column="handle_msg" property="handleMsg" />
-
- <result column="alarm_status" property="alarmStatus" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.job_group,
- t.job_id,
- t.executor_address,
- t.executor_handler,
- t.executor_param,
- t.executor_sharding_param,
- t.executor_fail_retry_count,
- t.trigger_time,
- t.trigger_code,
- t.trigger_msg,
- t.handle_time,
- t.handle_code,
- t.handle_msg,
- t.alarm_status
- </sql>
-
- <select id="pageList" resultMap="XxlJobLog">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_log AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobId==0 and jobGroup gt 0">
- AND t.job_group = #{jobGroup}
- </if>
- <if test="jobId gt 0">
- AND t.job_id = #{jobId}
- </if>
- <if test="triggerTimeStart != null">
- AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
- </if>
- <if test="triggerTimeEnd != null">
- AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
- </if>
- <if test="logStatus == 1" >
- AND t.handle_code = 200
- </if>
- <if test="logStatus == 2" >
- AND (
- t.trigger_code NOT IN (0, 200) OR
- t.handle_code NOT IN (0, 200)
- )
- </if>
- <if test="logStatus == 3" >
- AND t.trigger_code = 200
- AND t.handle_code = 0
- </if>
- </trim>
- ORDER BY t.trigger_time DESC
- LIMIT #{offset}, #{pagesize}
- </select>
-
- <select id="pageListCount" resultType="int">
- SELECT count(1)
- FROM xxl_job_log AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobId==0 and jobGroup gt 0">
- AND t.job_group = #{jobGroup}
- </if>
- <if test="jobId gt 0">
- AND t.job_id = #{jobId}
- </if>
- <if test="triggerTimeStart != null">
- AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
- </if>
- <if test="triggerTimeEnd != null">
- AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
- </if>
- <if test="logStatus == 1" >
- AND t.handle_code = 200
- </if>
- <if test="logStatus == 2" >
- AND (
- t.trigger_code NOT IN (0, 200) OR
- t.handle_code NOT IN (0, 200)
- )
- </if>
- <if test="logStatus == 3" >
- AND t.trigger_code = 200
- AND t.handle_code = 0
- </if>
- </trim>
- </select>
-
- <select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_log AS t
- WHERE t.id = #{id}
- </select>
-
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_log (
- `job_group`,
- `job_id`,
- `trigger_time`,
- `trigger_code`,
- `handle_code`
- ) VALUES (
- #{jobGroup},
- #{jobId},
- #{triggerTime},
- #{triggerCode},
- #{handleCode}
- );
- <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
- SELECT LAST_INSERT_ID()
- </selectKey>-->
- </insert>
-
- <update id="updateTriggerInfo" >
- UPDATE xxl_job_log
- SET
- `trigger_time`= #{triggerTime},
- `trigger_code`= #{triggerCode},
- `trigger_msg`= #{triggerMsg},
- `executor_address`= #{executorAddress},
- `executor_handler`=#{executorHandler},
- `executor_param`= #{executorParam},
- `executor_sharding_param`= #{executorShardingParam},
- `executor_fail_retry_count`= #{executorFailRetryCount}
- WHERE `id`= #{id}
- </update>
-
- <update id="updateHandleInfo">
- UPDATE xxl_job_log
- SET
- `handle_time`= #{handleTime},
- `handle_code`= #{handleCode},
- `handle_msg`= #{handleMsg}
- WHERE `id`= #{id}
- </update>
-
- <delete id="delete" >
- delete from xxl_job_log
- WHERE job_id = #{jobId}
- </delete>
-
- <!--<select id="triggerCountByDay" resultType="java.util.Map" >
- SELECT
- DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay,
- COUNT(handle_code) triggerDayCount,
- SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
- SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
- FROM xxl_job_log
- WHERE trigger_time BETWEEN #{from} and #{to}
- GROUP BY triggerDay
- ORDER BY triggerDay
- </select>-->
-
- <select id="findLogReport" resultType="java.util.Map" >
- SELECT
- COUNT(handle_code) triggerDayCount,
- SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
- SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
- FROM xxl_job_log
- WHERE trigger_time BETWEEN #{from} and #{to}
- </select>
-
- <select id="findClearLogIds" resultType="long" >
- SELECT id FROM xxl_job_log
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobGroup gt 0">
- AND job_group = #{jobGroup}
- </if>
- <if test="jobId gt 0">
- AND job_id = #{jobId}
- </if>
- <if test="clearBeforeTime != null">
- AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}
- </if>
- <if test="clearBeforeNum gt 0">
- AND id NOT in(
- SELECT id FROM(
- SELECT id FROM xxl_job_log AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="jobGroup gt 0">
- AND t.job_group = #{jobGroup}
- </if>
- <if test="jobId gt 0">
- AND t.job_id = #{jobId}
- </if>
- </trim>
- ORDER BY t.trigger_time desc
- LIMIT 0, #{clearBeforeNum}
- ) t1
- )
- </if>
- </trim>
- order by id asc
- LIMIT #{pagesize}
- </select>
-
- <delete id="clearLog" >
- delete from xxl_job_log
- WHERE id in
- <foreach collection="logIds" item="item" open="(" close=")" separator="," >
- #{item}
- </foreach>
- </delete>
-
- <select id="findFailJobLogIds" resultType="long" >
- SELECT id FROM `xxl_job_log`
- WHERE !(
- (trigger_code in (0, 200) and handle_code = 0)
- OR
- (handle_code = 200)
- )
- AND `alarm_status` = 0
- ORDER BY id ASC
- LIMIT #{pagesize}
- </select>
-
- <update id="updateAlarmStatus" >
- UPDATE xxl_job_log
- SET
- `alarm_status` = #{newAlarmStatus}
- WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus}
- </update>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
deleted file mode 100644
index 579d5f3..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobLogReportDao">
-
- <resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" >
- <result column="id" property="id" />
- <result column="trigger_day" property="triggerDay" />
- <result column="running_count" property="runningCount" />
- <result column="suc_count" property="sucCount" />
- <result column="fail_count" property="failCount" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.trigger_day,
- t.running_count,
- t.suc_count,
- t.fail_count
- </sql>
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_log_report (
- `trigger_day`,
- `running_count`,
- `suc_count`,
- `fail_count`
- ) VALUES (
- #{triggerDay},
- #{runningCount},
- #{sucCount},
- #{failCount}
- );
- <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
- SELECT LAST_INSERT_ID()
- </selectKey>-->
- </insert>
-
- <update id="update" >
- UPDATE xxl_job_log_report
- SET `running_count` = #{runningCount},
- `suc_count` = #{sucCount},
- `fail_count` = #{failCount}
- WHERE `trigger_day` = #{triggerDay}
- </update>
-
- <select id="queryLogReport" resultMap="XxlJobLogReport">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_log_report AS t
- WHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}
- ORDER BY t.trigger_day ASC
- </select>
-
- <select id="queryLogReportTotal" resultMap="XxlJobLogReport">
- SELECT
- SUM(running_count) running_count,
- SUM(suc_count) suc_count,
- SUM(fail_count) fail_count
- FROM xxl_job_log_report AS t
- </select>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
deleted file mode 100644
index 4393819..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobRegistryDao">
-
- <resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core..XxlJobRegistry" >
- <result column="id" property="id" />
- <result column="registry_group" property="registryGroup" />
- <result column="registry_key" property="registryKey" />
- <result column="registry_value" property="registryValue" />
- <result column="update_time" property="updateTime" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.registry_group,
- t.registry_key,
- t.registry_value,
- t.update_time
- </sql>
-
- <select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
- SELECT t.id
- FROM xxl_job_registry AS t
- WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
- </select>
-
- <delete id="removeDead" parameterType="java.lang.Integer" >
- DELETE FROM xxl_job_registry
- WHERE id in
- <foreach collection="ids" item="item" open="(" close=")" separator="," >
- #{item}
- </foreach>
- </delete>
-
- <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_registry AS t
- WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
- </select>
-
- <update id="registryUpdate" >
- UPDATE xxl_job_registry
- SET `update_time` = #{updateTime}
- WHERE `registry_group` = #{registryGroup}
- AND `registry_key` = #{registryKey}
- AND `registry_value` = #{registryValue}
- </update>
-
- <insert id="registrySave" >
- INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`)
- VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime})
- </insert>
-
- <delete id="registryDelete" >
- DELETE FROM xxl_job_registry
- WHERE registry_group = #{registryGroup}
- AND registry_key = #{registryKey}
- AND registry_value = #{registryValue}
- </delete>
-
-</mapper>
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
deleted file mode 100644
index 9e09b4a..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xxl.job.admin.dao.XxlJobUserDao">
-
- <resultMap id="XxlJobUser" type="com.xxl.job.admin.core.model.XxlJobUser" >
- <result column="id" property="id" />
- <result column="username" property="username" />
- <result column="password" property="password" />
- <result column="role" property="role" />
- <result column="permission" property="permission" />
- </resultMap>
-
- <sql id="Base_Column_List">
- t.id,
- t.username,
- t.password,
- t.role,
- t.permission
- </sql>
-
- <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobUser">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_user AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="username != null and username != ''">
- AND t.username like CONCAT(CONCAT('%', #{username}), '%')
- </if>
- <if test="role gt -1">
- AND t.role = #{role}
- </if>
- </trim>
- ORDER BY username ASC
- LIMIT #{offset}, #{pagesize}
- </select>
-
- <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
- SELECT count(1)
- FROM xxl_job_user AS t
- <trim prefix="WHERE" prefixOverrides="AND | OR" >
- <if test="username != null and username != ''">
- AND t.username like CONCAT(CONCAT('%', #{username}), '%')
- </if>
- <if test="role gt -1">
- AND t.role = #{role}
- </if>
- </trim>
- </select>
-
- <select id="loadByUserName" parameterType="java.util.HashMap" resultMap="XxlJobUser">
- SELECT <include refid="Base_Column_List" />
- FROM xxl_job_user AS t
- WHERE t.username = #{username}
- </select>
-
- <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobUser" useGeneratedKeys="true" keyProperty="id" >
- INSERT INTO xxl_job_user (
- username,
- password,
- role,
- permission
- ) VALUES (
- #{username},
- #{password},
- #{role},
- #{permission}
- );
- </insert>
-
- <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobUser" >
- UPDATE xxl_job_user
- SET
- <if test="password != null and password != ''">
- password = #{password},
- </if>
- role = #{role},
- permission = #{permission}
- WHERE id = #{id}
- </update>
-
- <delete id="delete" parameterType="java.util.HashMap">
- DELETE
- FROM xxl_job_user
- WHERE id = #{id}
- </delete>
-
-</mapper>
\ No newline at end of file
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js b/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js
deleted file mode 100644
index 14231c5..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js
+++ /dev/null
@@ -1,234 +0,0 @@
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: https://codemirror.net/LICENSE
-
-(function(mod) {
- if (typeof exports == "object" && typeof module == "object") // CommonJS
- mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike"));
- else if (typeof define == "function" && define.amd) // AMD
- define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod);
- else // Plain browser env
- mod(CodeMirror);
-})(function(CodeMirror) {
- "use strict";
-
- function keywords(str) {
- var obj = {}, words = str.split(" ");
- for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
- return obj;
- }
-
- // Helper for phpString
- function matchSequence(list, end, escapes) {
- if (list.length == 0) return phpString(end);
- return function (stream, state) {
- var patterns = list[0];
- for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {
- state.tokenize = matchSequence(list.slice(1), end);
- return patterns[i][1];
- }
- state.tokenize = phpString(end, escapes);
- return "string";
- };
- }
- function phpString(closing, escapes) {
- return function(stream, state) { return phpString_(stream, state, closing, escapes); };
- }
- function phpString_(stream, state, closing, escapes) {
- // "Complex" syntax
- if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) {
- state.tokenize = null;
- return "string";
- }
-
- // Simple syntax
- if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) {
- // After the variable name there may appear array or object operator.
- if (stream.match("[", false)) {
- // Match array operator
- state.tokenize = matchSequence([
- [["[", null]],
- [[/\d[\w\.]*/, "number"],
- [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"],
- [/[\w\$]+/, "variable"]],
- [["]", null]]
- ], closing, escapes);
- }
- if (stream.match(/\-\>\w/, false)) {
- // Match object operator
- state.tokenize = matchSequence([
- [["->", null]],
- [[/[\w]+/, "variable"]]
- ], closing, escapes);
- }
- return "variable-2";
- }
-
- var escaped = false;
- // Normal string
- while (!stream.eol() &&
- (escaped || escapes === false ||
- (!stream.match("{$", false) &&
- !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) {
- if (!escaped && stream.match(closing)) {
- state.tokenize = null;
- state.tokStack.pop(); state.tokStack.pop();
- break;
- }
- escaped = stream.next() == "\\" && !escaped;
- }
- return "string";
- }
-
- var phpKeywords = "abstract and array as break case catch class clone const continue declare default " +
- "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " +
- "for foreach function global goto if implements interface instanceof namespace " +
- "new or private protected public static switch throw trait try use var while xor " +
- "die echo empty exit eval include include_once isset list require require_once return " +
- "print unset __halt_compiler self static parent yield insteadof finally";
- var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";
- var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_Autowired is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";
- CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" "));
- CodeMirror.registerHelper("wordChars", "php", /[\w$]/);
-
- var phpConfig = {
- name: "clike",
- helperType: "php",
- keywords: keywords(phpKeywords),
- blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"),
- defKeywords: keywords("class function interface namespace trait"),
- atoms: keywords(phpAtoms),
- builtin: keywords(phpBuiltin),
- multiLineStrings: true,
- hooks: {
- "$": function(stream) {
- stream.eatWhile(/[\w\$_]/);
- return "variable-2";
- },
- "<": function(stream, state) {
- var before;
- if (before = stream.match(/<<\s*/)) {
- var quoted = stream.eat(/['"]/);
- stream.eatWhile(/[\w\.]/);
- var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1));
- if (quoted) stream.eat(quoted);
- if (delim) {
- (state.tokStack || (state.tokStack = [])).push(delim, 0);
- state.tokenize = phpString(delim, quoted != "'");
- return "string";
- }
- }
- return false;
- },
- "#": function(stream) {
- while (!stream.eol() && !stream.match("?>", false)) stream.next();
- return "comment";
- },
- "/": function(stream) {
- if (stream.eat("/")) {
- while (!stream.eol() && !stream.match("?>", false)) stream.next();
- return "comment";
- }
- return false;
- },
- '"': function(_stream, state) {
- (state.tokStack || (state.tokStack = [])).push('"', 0);
- state.tokenize = phpString('"');
- return "string";
- },
- "{": function(_stream, state) {
- if (state.tokStack && state.tokStack.length)
- state.tokStack[state.tokStack.length - 1]++;
- return false;
- },
- "}": function(_stream, state) {
- if (state.tokStack && state.tokStack.length > 0 &&
- !--state.tokStack[state.tokStack.length - 1]) {
- state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]);
- }
- return false;
- }
- }
- };
-
- CodeMirror.defineMode("php", function(config, parserConfig) {
- var htmlMode = CodeMirror.getMode(config, (parserConfig && parserConfig.htmlMode) || "text/html");
- var phpMode = CodeMirror.getMode(config, phpConfig);
-
- function dispatch(stream, state) {
- var isPHP = state.curMode == phpMode;
- if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null;
- if (!isPHP) {
- if (stream.match(/^<\?\w*/)) {
- state.curMode = phpMode;
- if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, ""))
- state.curState = state.php;
- return "meta";
- }
- if (state.pending == '"' || state.pending == "'") {
- while (!stream.eol() && stream.next() != state.pending) {}
- var style = "string";
- } else if (state.pending && stream.pos < state.pending.end) {
- stream.pos = state.pending.end;
- var style = state.pending.style;
- } else {
- var style = htmlMode.token(stream, state.curState);
- }
- if (state.pending) state.pending = null;
- var cur = stream.current(), openPHP = cur.search(/<\?/), m;
- if (openPHP != -1) {
- if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0];
- else state.pending = {end: stream.pos, style: style};
- stream.backUp(cur.length - openPHP);
- }
- return style;
- } else if (isPHP && state.php.tokenize == null && stream.match("?>")) {
- state.curMode = htmlMode;
- state.curState = state.html;
- if (!state.php.context.prev) state.php = null;
- return "meta";
- } else {
- return phpMode.token(stream, state.curState);
- }
- }
-
- return {
- startState: function() {
- var html = CodeMirror.startState(htmlMode)
- var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null
- return {html: html,
- php: php,
- curMode: parserConfig.startOpen ? phpMode : htmlMode,
- curState: parserConfig.startOpen ? php : html,
- pending: null};
- },
-
- copyState: function(state) {
- var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),
- php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur;
- if (state.curMode == htmlMode) cur = htmlNew;
- else cur = phpNew;
- return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,
- pending: state.pending};
- },
-
- token: dispatch,
-
- indent: function(state, textAfter) {
- if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) ||
- (state.curMode == phpMode && /^\?>/.test(textAfter)))
- return htmlMode.indent(state.html, textAfter);
- return state.curMode.indent(state.curState, textAfter);
- },
-
- blockCommentStart: "/*",
- blockCommentEnd: "*/",
- lineComment: "//",
-
- innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }
- };
- }, "htmlmixed", "clike");
-
- CodeMirror.defineMIME("application/x-httpd-php", "php");
- CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true});
- CodeMirror.defineMIME("text/x-php", phpConfig);
-});
diff --git a/Source/BladeX/blade-ops/blade-xxljob/pom.xml b/Source/BladeX/blade-ops/blade-xxljob/pom.xml
deleted file mode 100644
index d256a8c..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob/pom.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-ops</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>blade-xxljob</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <!--Blade-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-cloud</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-launch</artifactId>
- </dependency>
- <!--Job-->
- <dependency>
- <groupId>com.xuxueli</groupId>
- <artifactId>xxl-job-core</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-
-</project>
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/JobApplication.java b/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/JobApplication.java
deleted file mode 100644
index b59cebb..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/JobApplication.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.job.executor;
-
-import org.springblade.common.constant.LauncherConstant;
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-
-/**
- * Job鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class JobApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(LauncherConstant.APPLICATION_XXLJOB_NAME, JobApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/config/XxlJobConfig.java b/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/config/XxlJobConfig.java
deleted file mode 100644
index 41697ae..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/config/XxlJobConfig.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.springblade.job.executor.config;
-
-import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * xxl-job config
- *
- * @author xuxueli 2017-04-28
- */
-@Configuration(proxyBeanMethods = false)
-public class XxlJobConfig {
- private final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
-
- @Value("${xxl.job.admin.addresses}")
- private String adminAddresses;
-
- @Value("${xxl.job.executor.appname}")
- private String appName;
-
- @Value("${xxl.job.executor.ip}")
- private String ip;
-
- @Value("${xxl.job.executor.port}")
- private int port;
-
- @Value("${xxl.job.accessToken}")
- private String accessToken;
-
- @Value("${xxl.job.executor.logpath}")
- private String logPath;
-
- @Value("${xxl.job.executor.logretentiondays}")
- private int logRetentionDays;
-
-
- @Bean
- public XxlJobSpringExecutor xxlJobExecutor() {
- logger.info(">>>>>>>>>>> xxl-job config init.");
- XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
- xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
- xxlJobSpringExecutor.setAppName(appName);
- xxlJobSpringExecutor.setIp(ip);
- xxlJobSpringExecutor.setPort(port);
- xxlJobSpringExecutor.setAccessToken(accessToken);
- xxlJobSpringExecutor.setLogPath(logPath);
- xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
-
- return xxlJobSpringExecutor;
- }
-
- /**
- * 閽堝澶氱綉鍗°�佸鍣ㄥ唴閮ㄧ讲绛夋儏鍐碉紝鍙�熷姪 "spring-cloud-commons" 鎻愪緵鐨� "InetUtils" 缁勪欢鐏垫椿瀹氬埗娉ㄥ唽IP锛�
- *
- * 1銆佸紩鍏ヤ緷璧栵細
- * <dependency>
- * <groupId>org.springframework.cloud</groupId>
- * <artifactId>spring-cloud-commons</artifactId>
- * <version>${version}</version>
- * </dependency>
- *
- * 2銆侀厤缃枃浠讹紝鎴栬�呭鍣ㄥ惎鍔ㄥ彉閲�
- * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
- *
- * 3銆佽幏鍙朓P
- * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
- */
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/controller/TestController.java b/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/controller/TestController.java
deleted file mode 100644
index 9a8dd10..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/controller/TestController.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.springblade.job.executor.controller;
-
-import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 娴嬭瘯瀹氭椂璇锋眰
- *
- * @author job
- */
-@RestController
-@RequestMapping("/test")
-public class TestController {
-
- @GetMapping("testRequest")
- public R testRequest(String name) {
- return R.data("鎴戞槸娴嬭瘯璇锋眰" + name);
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/jobhandler/SampleXxlJob.java b/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/jobhandler/SampleXxlJob.java
deleted file mode 100644
index bb089e7..0000000
--- a/Source/BladeX/blade-ops/blade-xxljob/src/main/java/org/springblade/job/executor/jobhandler/SampleXxlJob.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.springblade.job.executor.jobhandler;
-
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.IJobHandler;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
-import com.xxl.job.core.util.ShardingUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.concurrent.TimeUnit;
-
-/**
- * XxlJob寮�鍙戠ず渚嬶紙Bean妯″紡锛�
- * <p>
- * 寮�鍙戞楠わ細
- * 1銆佸湪Spring Bean瀹炰緥涓紝寮�鍙慗ob鏂规硶锛屾柟寮忔牸寮忚姹備负 "public ReturnT<String> execute(String param)"
- * 2銆佷负Job鏂规硶娣诲姞娉ㄨВ "@XxlJob(value="鑷畾涔塲obhandler鍚嶇О", init = "JobHandler鍒濆鍖栨柟娉�", destroy = "JobHandler閿�姣佹柟娉�")"锛屾敞瑙alue鍊煎搴旂殑鏄皟搴︿腑蹇冩柊寤轰换鍔$殑JobHandler灞炴�х殑鍊笺��
- * 3銆佹墽琛屾棩蹇楋細闇�瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛�
- *
- * @author xuxueli
- */
-@Component
-public class SampleXxlJob {
- private static final Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
-
-
- /**
- * 1銆佺畝鍗曚换鍔$ず渚嬶紙Bean妯″紡锛�
- */
- @XxlJob("demoJobHandler")
- public ReturnT<String> demoJobHandler(String param) throws Exception {
- XxlJobLogger.log("XXL-JOB, Hello World.");
-
- for (int i = 0; i < 5; i++) {
- XxlJobLogger.log("beat at:" + i);
- TimeUnit.SECONDS.sleep(2);
- }
- return ReturnT.SUCCESS;
- }
-
-
- /**
- * 2銆佸垎鐗囧箍鎾换鍔�
- */
- @XxlJob("shardingJobHandler")
- public ReturnT<String> shardingJobHandler(String param) throws Exception {
-
- // 鍒嗙墖鍙傛暟
- ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
- XxlJobLogger.log("鍒嗙墖鍙傛暟锛氬綋鍓嶅垎鐗囧簭鍙� = {}, 鎬诲垎鐗囨暟 = {}", shardingVO.getIndex(), shardingVO.getTotal());
-
- // 涓氬姟閫昏緫
- for (int i = 0; i < shardingVO.getTotal(); i++) {
- if (i == shardingVO.getIndex()) {
- XxlJobLogger.log("绗� {} 鐗�, 鍛戒腑鍒嗙墖寮�濮嬪鐞�", i);
- } else {
- XxlJobLogger.log("绗� {} 鐗�, 蹇界暐", i);
- }
- }
-
- return ReturnT.SUCCESS;
- }
-
-
- /**
- * 3銆佸懡浠よ浠诲姟
- */
- @XxlJob("commandJobHandler")
- public ReturnT<String> commandJobHandler(String param) throws Exception {
- String command = param;
- int exitValue = -1;
-
- BufferedReader bufferedReader = null;
- try {
- // command process
- Process process = Runtime.getRuntime().exec(command);
- BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());
- bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
-
- // command log
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- XxlJobLogger.log(line);
- }
-
- // command exit
- process.waitFor();
- exitValue = process.exitValue();
- } catch (Exception e) {
- XxlJobLogger.log(e);
- } finally {
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- }
-
- if (exitValue == 0) {
- return IJobHandler.SUCCESS;
- } else {
- return new ReturnT<String>(IJobHandler.FAIL.getCode(), "command exit value(" + exitValue + ") is failed");
- }
- }
-
-
- /**
- * 4銆佽法骞冲彴Http浠诲姟
- */
- @XxlJob("httpJobHandler")
- public ReturnT<String> httpJobHandler(String param) throws Exception {
-
- // request
- HttpURLConnection connection = null;
- BufferedReader bufferedReader = null;
- try {
- // connection
- URL realUrl = new URL(param);
- connection = (HttpURLConnection) realUrl.openConnection();
-
- // connection setting
- connection.setRequestMethod("GET");
- connection.setDoOutput(true);
- connection.setDoInput(true);
- connection.setUseCaches(false);
- connection.setReadTimeout(5 * 1000);
- connection.setConnectTimeout(3 * 1000);
- connection.setRequestProperty("connection", "Keep-Alive");
- connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");
-
- // do connection
- connection.connect();
-
- //Map<String, List<String>> map = connection.getHeaderFields();
-
- // valid StatusCode
- int statusCode = connection.getResponseCode();
- if (statusCode != 200) {
- throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid.");
- }
-
- // result
- bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
- StringBuilder result = new StringBuilder();
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- result.append(line);
- }
- String responseMsg = result.toString();
-
- XxlJobLogger.log(responseMsg);
- return ReturnT.SUCCESS;
- } catch (Exception e) {
- XxlJobLogger.log(e);
- return ReturnT.FAIL;
- } finally {
- try {
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- if (connection != null) {
- connection.disconnect();
- }
- } catch (Exception e2) {
- XxlJobLogger.log(e2);
- }
- }
-
- }
-
- /**
- * 5銆佺敓鍛藉懆鏈熶换鍔$ず渚嬶細浠诲姟鍒濆鍖栦笌閿�姣佹椂锛屾敮鎸佽嚜瀹氫箟鐩稿叧閫昏緫锛�
- */
- @XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy")
- public ReturnT<String> demoJobHandler2(String param) throws Exception {
- XxlJobLogger.log("XXL-JOB, Hello World.");
- return ReturnT.SUCCESS;
- }
-
- public void init() {
- logger.info("init");
- }
-
- public void destroy() {
- logger.info("destory");
- }
-
-
-}
diff --git a/Source/BladeX/blade-ops/pom.xml b/Source/BladeX/blade-ops/pom.xml
deleted file mode 100644
index f6d94c9..0000000
--- a/Source/BladeX/blade-ops/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-ops</artifactId>
- <name>${project.artifactId}</name>
- <version>3.0.1.RELEASE</version>
- <packaging>pom</packaging>
-
- <modules>
- <module>blade-admin</module>
- <module>blade-develop</module>
- <module>blade-flow</module>
- <module>blade-log</module>
- <module>blade-report</module>
- <module>blade-resource</module>
- <module>blade-swagger</module>
- <module>blade-xxljob</module>
- <module>blade-xxljob-admin</module>
- </modules>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-metrics</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-code-api/pom.xml b/Source/BladeX/blade-service-api/blade-code-api/pom.xml
deleted file mode 100644
index 40bedd7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/pom.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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
deleted file mode 100644
index 8f20b14..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeClassifyFullInfoBO.java
+++ /dev/null
@@ -1,66 +0,0 @@
-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
deleted file mode 100644
index 5c26424..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/bo/CodeTemplateAttrSqlBO.java
+++ /dev/null
@@ -1,132 +0,0 @@
-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
deleted file mode 100644
index d968aca..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeBasicSecDTO.java
+++ /dev/null
@@ -1,669 +0,0 @@
-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
deleted file mode 100644
index cc173b7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeButtonDTO.java
+++ /dev/null
@@ -1,85 +0,0 @@
-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
deleted file mode 100644
index 86dc156..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyDTO.java
+++ /dev/null
@@ -1,226 +0,0 @@
-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
deleted file mode 100644
index d3ffbbd..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyProcessTempDTO.java
+++ /dev/null
@@ -1,152 +0,0 @@
-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
deleted file mode 100644
index 416dc6d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTempMapItemDTO.java
+++ /dev/null
@@ -1,184 +0,0 @@
-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
deleted file mode 100644
index 90f908e..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateAttrDTO.java
+++ /dev/null
@@ -1,1053 +0,0 @@
-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
deleted file mode 100644
index 37269b4..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateButtonDTO.java
+++ /dev/null
@@ -1,155 +0,0 @@
-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
deleted file mode 100644
index 883a256..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateDTO.java
+++ /dev/null
@@ -1,104 +0,0 @@
-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
deleted file mode 100644
index 24e1c6c..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyTemplateMapDTO.java
+++ /dev/null
@@ -1,96 +0,0 @@
-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
deleted file mode 100644
index e94f6f2..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeClassifyValueDTO.java
+++ /dev/null
@@ -1,104 +0,0 @@
-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
deleted file mode 100644
index 111c4c5..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeCompPreviewDTO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index c6f43ec..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeDeleteBatchDTO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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
deleted file mode 100644
index 148bab2..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeExportAttrDTO.java
+++ /dev/null
@@ -1,134 +0,0 @@
-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
deleted file mode 100644
index 4d897fb..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeFixedValueDTO.java
+++ /dev/null
@@ -1,84 +0,0 @@
-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
deleted file mode 100644
index 70c090f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeImprotDataDTO.java
+++ /dev/null
@@ -1,66 +0,0 @@
-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
deleted file mode 100644
index 01cc36a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeKeyAttrRepeatRuleDTO.java
+++ /dev/null
@@ -1,99 +0,0 @@
-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
deleted file mode 100644
index 95a90f5..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderDTO.java
+++ /dev/null
@@ -1,92 +0,0 @@
-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
deleted file mode 100644
index fdafd21..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeOrderSecDTO.java
+++ /dev/null
@@ -1,44 +0,0 @@
-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
deleted file mode 100644
index 8757fd7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodePhaseAttrDTO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-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
deleted file mode 100644
index 5ee214b..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeResembleRuleDTO.java
+++ /dev/null
@@ -1,118 +0,0 @@
-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
deleted file mode 100644
index 3dd7f99..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeRuleDTO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-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
deleted file mode 100644
index e313bff..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeSynonymDTO.java
+++ /dev/null
@@ -1,104 +0,0 @@
-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
deleted file mode 100644
index 8c89f38..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/CodeTemplatePhaseDTO.java
+++ /dev/null
@@ -1,80 +0,0 @@
-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
deleted file mode 100644
index a229780..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingDataDTO.java
+++ /dev/null
@@ -1,120 +0,0 @@
-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
deleted file mode 100644
index 0b6f872..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingLogeDTO.java
+++ /dev/null
@@ -1,179 +0,0 @@
-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
deleted file mode 100644
index b7809c8..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataDTO.java
+++ /dev/null
@@ -1,244 +0,0 @@
-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
deleted file mode 100644
index e9714d3..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreApplyDataInfoDTO.java
+++ /dev/null
@@ -1,126 +0,0 @@
-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
deleted file mode 100644
index 354f713..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrMappingDTO.java
+++ /dev/null
@@ -1,200 +0,0 @@
-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
deleted file mode 100644
index 9cf54ff..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingPreAttrRangeDTO.java
+++ /dev/null
@@ -1,82 +0,0 @@
-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
deleted file mode 100644
index e9a05ff..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/DockingTaskDTO.java
+++ /dev/null
@@ -1,197 +0,0 @@
-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
deleted file mode 100644
index 9ea3fdf..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/PreApplyCodeOrderDTO.java
+++ /dev/null
@@ -1,106 +0,0 @@
-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
deleted file mode 100644
index b363829..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntAuthorityDTO.java
+++ /dev/null
@@ -1,124 +0,0 @@
-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
deleted file mode 100644
index 3cd36f9..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntBaseDTO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index af10f11..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntHeaderDTO.java
+++ /dev/null
@@ -1,80 +0,0 @@
-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
deleted file mode 100644
index 1aeeb6b..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoBseDTO.java
+++ /dev/null
@@ -1,46 +0,0 @@
-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
deleted file mode 100644
index 6c4b3e0..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntInfoDTO.java
+++ /dev/null
@@ -1,664 +0,0 @@
-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
deleted file mode 100644
index 9b13e88..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/SysIntParamDTO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-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
deleted file mode 100644
index 30c677a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/UpdateSysInfoStatusDTO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-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
deleted file mode 100644
index 612eafc..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/JsonRootDataDTO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index a43f55f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeClassifyDTO.java
+++ /dev/null
@@ -1,112 +0,0 @@
-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
deleted file mode 100644
index f715422..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeDataDTO.java
+++ /dev/null
@@ -1,24 +0,0 @@
-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
deleted file mode 100644
index c227328..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/NodeLibraryDTO.java
+++ /dev/null
@@ -1,50 +0,0 @@
-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/data/NodeJosnDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java
deleted file mode 100644
index 658aaf3..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeJosnDTO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index c486a78..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeObjectDTO.java
+++ /dev/null
@@ -1,71 +0,0 @@
-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
deleted file mode 100644
index 412313b..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodeProDTO.java
+++ /dev/null
@@ -1,47 +0,0 @@
-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
deleted file mode 100644
index df4149d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/NodedataDTO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-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/result/ResultJsonDTO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java
deleted file mode 100644
index 908b470..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultJsonDTO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index 896a094..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeDataDTO.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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
deleted file mode 100644
index 279d642..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/result/ResultNodeObjectDTO.java
+++ /dev/null
@@ -1,70 +0,0 @@
-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
deleted file mode 100644
index bdd0018..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/po/CodeClassifyPO.java
+++ /dev/null
@@ -1,169 +0,0 @@
-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
deleted file mode 100644
index 8a938e9..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeBasicSecVO.java
+++ /dev/null
@@ -1,651 +0,0 @@
-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
deleted file mode 100644
index 2aefd38..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeButtonVO.java
+++ /dev/null
@@ -1,98 +0,0 @@
-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
deleted file mode 100644
index 499cdfb..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyAttributeVO.java
+++ /dev/null
@@ -1,63 +0,0 @@
-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
deleted file mode 100644
index c7df7c5..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyProcessTempVO.java
+++ /dev/null
@@ -1,167 +0,0 @@
-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
deleted file mode 100644
index 1ffc7b4..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTempMapItemVO.java
+++ /dev/null
@@ -1,210 +0,0 @@
-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
deleted file mode 100644
index 3e81f47..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
+++ /dev/null
@@ -1,1071 +0,0 @@
-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
deleted file mode 100644
index 13fe415..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
+++ /dev/null
@@ -1,170 +0,0 @@
-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
deleted file mode 100644
index 893fd17..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateMapVO.java
+++ /dev/null
@@ -1,96 +0,0 @@
-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
deleted file mode 100644
index 84e5c05..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyTemplateVO.java
+++ /dev/null
@@ -1,105 +0,0 @@
-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
deleted file mode 100644
index 7679381..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyVO.java
+++ /dev/null
@@ -1,263 +0,0 @@
-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
deleted file mode 100644
index 19cfe39..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeClassifyValueVO.java
+++ /dev/null
@@ -1,133 +0,0 @@
-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
deleted file mode 100644
index e68aefc..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeFixedValueVO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-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
deleted file mode 100644
index 9681415..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImProtRusultVO.java
+++ /dev/null
@@ -1,41 +0,0 @@
-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
deleted file mode 100644
index a2d227d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportResultVO.java
+++ /dev/null
@@ -1,123 +0,0 @@
-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
deleted file mode 100644
index 8194569..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImportTemplateVO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index d669ea6..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotDataVO.java
+++ /dev/null
@@ -1,132 +0,0 @@
-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
deleted file mode 100644
index 8b9e211..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotParmaDatVO.java
+++ /dev/null
@@ -1,41 +0,0 @@
-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
deleted file mode 100644
index e3b1d6a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotResembleVO.java
+++ /dev/null
@@ -1,66 +0,0 @@
-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
deleted file mode 100644
index 06350a2..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeImprotSaveDatVO.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import org.springblade.code.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
deleted file mode 100644
index 809a32e..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java
+++ /dev/null
@@ -1,98 +0,0 @@
-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
deleted file mode 100644
index 52b6e9e..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodePhaseAttrVO.java
+++ /dev/null
@@ -1,77 +0,0 @@
-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
deleted file mode 100644
index 2b96e90..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeResembleRuleVO.java
+++ /dev/null
@@ -1,119 +0,0 @@
-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
deleted file mode 100644
index 40bfe4f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeRuleVO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-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
deleted file mode 100644
index e9b90c4..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSerialAlgorithmVO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-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
deleted file mode 100644
index 7adc609..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeSynonymVO.java
+++ /dev/null
@@ -1,103 +0,0 @@
-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
deleted file mode 100644
index c8efa6f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/CodeTemplatePhaseVO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-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/pagemodel/ColumnVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/ColumnVO.java
deleted file mode 100644
index dbe6cf7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/ColumnVO.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-public class ColumnVO {
-
- private String field;
- private String title;
- private int width=260;
- private boolean sort;
-
- public String getField() {
- return field;
- }
-
- public void setField(String field) {
- this.field = field;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public int getWidth() {
- return width;
- }
-
- public void setWidth(int width) {
- this.width = width;
- }
-
- public boolean isSort() {
- return sort;
- }
-
- public void setSort(boolean sort) {
- this.sort = sort;
- }
-
- @Override
- public String toString() {
- return "ColumnVO{" +
- "field='" + field + '\'' +
- ", title='" + title + '\'' +
- ", width=" + width +
- ", sort=" + sort +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/ConfigAttrMappingVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/ConfigAttrMappingVO.java
deleted file mode 100644
index b7ae130..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/ConfigAttrMappingVO.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-public class ConfigAttrMappingVO {
- private String systemId;
- private String ll;
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DataResembleVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DataResembleVO.java
deleted file mode 100644
index 4ca37e5..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DataResembleVO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public class DataResembleVO {
- private String oid;
- private List<Map<String,String>> dataList=new ArrayList<>();
-
-
- public List<Map<String, String>> getDataList() {
- return dataList;
- }
-
- public void setDataList(List<Map<String, String>> dataList) {
- this.dataList = dataList;
- }
-
- public String getOid() {
- return oid;
- }
-
- public void setOid(String oid) {
- this.oid = oid;
- }
-
- @Override
- public String toString() {
- return "DataResembleVO{" +
- "oid='" + oid + '\'' +
- ", dataList=" + dataList +
- '}';
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingDataVO.java
deleted file mode 100644
index 9738f37..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingDataVO.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.model.BaseModel;
-
-/**
- * 瑕佹帹閫佸緱鏁版嵁
- * @author wangyi
- * @date 2022-10-7
- */
-public class DockingDataVO 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/vo/pagemodel/DockingLogeVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingLogeVO.java
deleted file mode 100644
index 4794b78..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingLogeVO.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁樉绀哄璞�
- *
- * @author weidy
- * @date 2022-03-28
- */
-public class DockingLogeVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707121064918548L;
-
- /**
- * 鎺ュ彛鐘舵��
- */
- 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 "DockingLogeVO{" +
- "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/vo/pagemodel/DockingPreApplyDataInfoVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreApplyDataInfoVO.java
deleted file mode 100644
index a4fcf53..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreApplyDataInfoVO.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- *
- * @author weidy
- * @date 2022-04-05
- */
-public class DockingPreApplyDataInfoVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707120361431431L;
-
- /**
- * 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 "DockingPreApplyDataInfoVO{" +
- "dataoid='" + dataoid + '\'' +
- ", uniquecode='" + uniquecode + '\'' +
- ", key='" + key + '\'' +
- ", mean='" + mean + '\'' +
- ", value='" + value + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreApplyDataVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreApplyDataVO.java
deleted file mode 100644
index 883d4b9..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreApplyDataVO.java
+++ /dev/null
@@ -1,256 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-import java.util.List;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- *
- * @author weidy
- * @date 2022-04-05
- */
-public class DockingPreApplyDataVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707118846979001L;
-
- /**
- * 鐢宠oid
- */
- private String preapplyoid;
-
- /**
- * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
- */
- private String uniquecode;
-
- /**
- * 涓婚搴撶紪鍙�
- */
- private String type;
-
- /**
- * 绯荤粺缂栧彿
- */
- private String systemid;
-
- /**
- * 姝e湪浣跨敤鏍囧織
- */
- private String useddflag;
-
- /**
- * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被oid
- */
- private String classifyoid;
-
- /**
- * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被鍚嶇О
- */
- private String classifyname;
-
- /**
- * 鐢宠鎴愬姛鍚庣殑缂栫爜锛岀紪杈戜腑銆佹湭鍙戝竷銆佸仠鐢ㄧ殑缂栫爜涓嶆樉绀猴紝鍙湁姝e紡鐨勭紪鐮佹墠鏄剧ず
- */
- 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;
-
- private List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOs;
-
- 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;
- }
-
- public List<DockingPreApplyDataInfoVO> getDockingPreApplyDataInfoVOs() {
- return dockingPreApplyDataInfoVOs;
- }
-
- public void setDockingPreApplyDataInfoVOs(List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOs) {
- this.dockingPreApplyDataInfoVOs = dockingPreApplyDataInfoVOs;
- }
-
- @Override
- public String toString() {
- return "DockingPreApplyDataVO{" +
- "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 + '\'' +
- ", dockingPreApplyDataInfoVOs=" + dockingPreApplyDataInfoVOs +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrMappingVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrMappingVO.java
deleted file mode 100644
index fb29711..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrMappingVO.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-import java.util.List;
-
-/**
- * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
- * @author xiejun
- * @date 2023-01-06
- */
-public class DockingPreAttrMappingVO 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<DockingPreAttrRangeVO> dockingPreAttrRangeVOS;
-
-
- 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<DockingPreAttrRangeVO> getDockingPreAttrRangeVOS() {
- return dockingPreAttrRangeVOS;
- }
-
- public void setDockingPreAttrRangeVOS(List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS) {
- this.dockingPreAttrRangeVOS = dockingPreAttrRangeVOS;
- }
-
- @Override
- public String toString() {
- return "DockingPreAttrMappingVO{" +
- "jdefaultValue='" + jdefaultValue + '\'' +
- ", jmetaListId='" + jmetaListId + '\'' +
- ", jsourceClsfId='" + jsourceClsfId + '\'' +
- ", jsourceClsfName='" + jsourceClsfName + '\'' +
- ", jtargetAttrId='" + jtargetAttrId + '\'' +
- ", jtargetClsfId='" + jtargetClsfId + '\'' +
- ", jviewModeId='" + jviewModeId + '\'' +
- ", jviewModeName='" + jviewModeName + '\'' +
- ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
- ", jtargetAttrName='" + jtargetAttrName + '\'' +
- ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
- ", jsourceAttrName='" + jsourceAttrName + '\'' +
- ", dockingPreAttrRangeVOS=" + dockingPreAttrRangeVOS +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrRangeVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrRangeVO.java
deleted file mode 100644
index 18a6d95..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingPreAttrRangeVO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-public class DockingPreAttrRangeVO 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 getJmetaListId() {
- return jmetaListId;
- }
-
- public void setJmetaListId(String jmetaListId) {
- this.jmetaListId = jmetaListId;
- }
-
- 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;
- }
-
- @Override
- public String toString() {
- return "DockingPreAttrRangeVO{" +
- "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/vo/pagemodel/DockingTaskVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingTaskVO.java
deleted file mode 100644
index 6e40dbc..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/DockingTaskVO.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃樉绀哄璞�
- *
- * @author weidy
- * @date 2022-03-28
- */
-public class DockingTaskVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707119707777641L;
-
- /**
- * 绯荤粺鎺ュ彛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;
-
- /**
- * 涓氬姟绫诲瀷鏁版嵁id
- */
- private String btmid;
-
- /**
- * uniquecode
- */
- private String uniquecode;
-
-
- /**
- * 鏄惁鍙戦�佹垚鍔�
- */
- private String sendflag;
-
- /**
- * 鍙戦�佺被鍨�,lcstatus
- */
- 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.btmoid = 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 "DockingTaskVO{" +
- "sysinfooid='" + sysinfooid + '\'' +
- ", systemoid='" + systemoid + '\'' +
- ", systemcode='" + systemcode + '\'' +
- ", systemname='" + systemname + '\'' +
- ", classifyoid='" + classifyoid + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- ", btmoid='" + btmoid + '\'' +
- ", btmid='" + 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/vo/pagemodel/MdmUIInfoVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/MdmUIInfoVO.java
deleted file mode 100644
index e6b8f98..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/MdmUIInfoVO.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.web.pageModel.SmOperationVO;
-import com.vci.web.pageModel.UIFormDefineVO;
-import com.vci.web.pageModel.UITableDefineVO;
-
-import java.util.List;
-
-/**
- * 涓绘暟鎹殑UI淇℃伅
- * @author weidy
- * @date 2022-2-21
- */
-public class MdmUIInfoVO implements java.io.Serializable {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 4192521596336111375L;
- /**
- * 妯℃澘鐨勪俊鎭�
- */
- private CodeClassifyTemplateVO templateVO;
-
- /**
- * 琛ㄦ牸鐨勪俊鎭�
- */
- private UITableDefineVO tableDefineVO;
-
- /**
- * 琛ㄥ崟鐨勪俊鎭�
- */
- private UIFormDefineVO formDefineVO;
-
- /**
- * 鏌ラ噸灞炴�х殑鐩稿叧琛ㄦ牸鐨勪俊鎭�
- */
- private UITableDefineVO resembleTableVO;
-
- /**
- * 鎸夐挳鐨勫唴瀹�
- */
- private List<SmOperationVO> buttons;
-
- /**
- * 褰撳墠鍒嗙被鏄惁涓哄彾瀛愯妭鐐�
- */
- private boolean leaf;
-
- public List<SmOperationVO> getButtons() {
- return buttons;
- }
-
- public void setButtons(List<SmOperationVO> buttons) {
- this.buttons = buttons;
- }
-
- public CodeClassifyTemplateVO getTemplateVO() {
- return templateVO;
- }
-
- public void setTemplateVO(CodeClassifyTemplateVO templateVO) {
- this.templateVO = templateVO;
- }
-
- public UITableDefineVO getTableDefineVO() {
- return tableDefineVO;
- }
-
- public void setTableDefineVO(UITableDefineVO tableDefineVO) {
- this.tableDefineVO = tableDefineVO;
- }
-
- public UIFormDefineVO getFormDefineVO() {
- return formDefineVO;
- }
-
- public void setFormDefineVO(UIFormDefineVO formDefineVO) {
- this.formDefineVO = formDefineVO;
- }
-
- public boolean isLeaf() {
- return leaf;
- }
-
- public void setLeaf(boolean leaf) {
- this.leaf = leaf;
- }
-
- public UITableDefineVO getResembleTableVO() {
- return resembleTableVO;
- }
-
- public void setResembleTableVO(UITableDefineVO resembleTableVO) {
- this.resembleTableVO = resembleTableVO;
- }
-
- @Override
- public String toString() {
- return "MdmUIInfoVO{" +
- "templateVO=" + templateVO +
- ", tableDefineVO=" + tableDefineVO +
- ", formDefineVO=" + formDefineVO +
- ", resembleTableVO=" + resembleTableVO +
- ", buttons=" + buttons +
- ", leaf=" + leaf +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntAuthorityVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntAuthorityVO.java
deleted file mode 100644
index 68b8e5a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntAuthorityVO.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- *
- * @author lihang
- * @date 2022-03-07
- */
-public class SysIntAuthorityVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707119460615952L;
-
- /**
- * 楠岃瘉浠ょ墝
- */
- 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 "SysIntAuthorityVO{" +
- "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/vo/pagemodel/SysIntBaseVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntBaseVO.java
deleted file mode 100644
index b7db254..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntBaseVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
- *
- * @author lihang
- * @date 2022-03-07
- */
-public class SysIntBaseVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707117504109912L;
-
-
-
- @Override
- public String toString() {
- return "SysIntBaseVO{" +
- "}" + super.toString();
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntHeaderVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntHeaderVO.java
deleted file mode 100644
index a8fcb3a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntHeaderVO.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- *
- * @author weidy
- * @date 2022-04-11
- */
-public class SysIntHeaderVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707117938037102L;
-
- /**
- * 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/vo/pagemodel/SysIntInfoVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntInfoVO.java
deleted file mode 100644
index 774e657..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntInfoVO.java
+++ /dev/null
@@ -1,746 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-import java.util.List;
-
-/**
- * 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
- *
- * @author lihang
- * @date 2022-03-07
- */
-public class SysIntInfoVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707117716142069L;
-
- /**
- * 璁よ瘉鏂瑰紡
- */
- private String authorityoid;
-
- /**
- * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
- */
- private String authorityoidName;
-
- /**
- * 璁よ瘉鏂瑰紡
- */
- private String authorityType;
-
- /**
- * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
- */
- private String authorityTypeText;
-
- /**
- * 楠岃瘉鐢ㄦ埛
- */
- private String userAccount;
-
- /**
- * 楠岃瘉瀵嗙爜
- */
- private String userCode;
-
- /**
- * 楠岃瘉浠ょ墝
- */
- private String token;
-
- /**
- * 鎺ュ彛鍑芥暟
- */
- private String interfaceFunction;
-
- /**
- * 鎺ュ彛鎻忚堪
- */
- private String description;
-
-
- /**
- * 鎺ュ彛绫诲瀷
- */
- private String interfacetype;
-
-
- /**
- * 鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
- */
- private String interfacetypeText;
- /**
- * 鍙傛暟绫诲瀷
- */
- private String paramtype;
-
-
- /**
- * 鍙傛暟绫诲瀷鏄剧ず鏂囨湰
- */
- private String paramtypeText;
- /**
- * 璇锋眰鏂瑰紡
- */
- private String requestmethod;
-
-
- /**
- * 璇锋眰鏂瑰紡鏄剧ず鏂囨湰
- */
- private String requestmethodText;
- /**
- * 鍒嗙被oid
- */
- private String classifyoid;
-
- /**
- * 鍚敤銆佸仠鐢╰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 sourceSysName;
-
- /**
- * 鏉ユ簮绯荤粺鏍囪瘑
- */
- private String sourceSysId;
-
- /**
- * 鏉ユ簮绯荤粺涓婚敭鏄剧ず鏂囨湰
- */
- private String sourcesystemoidName;
-
- /**
- * 鐩爣绯荤粺涓婚敭
- */
- private String targetsystemoid;
-
- /**
- * 鐩爣绯荤粺鍚嶇О
- */
- private String targetSysName;
-
- /**
- * 鐩爣绯荤粺鏍囪瘑
- */
- private String targetSysId;
-
- /**
- * 鐩爣绯荤粺涓婚敭鏄剧ず鏂囨湰
- */
- private String targetsystemoidName;
-
- /**
- * 绫昏矾寰�
- */
- private String classPath;
-
- /**
- * 鏁版嵁娴佸悜鏂瑰紡
- */
- private String dataFlowType;
-
- /**
- * 鏁版嵁娴佸悜鏂瑰紡鐨勬樉绀哄瓧娈�
- */
- private String dataFlowTypeText;
-
- /**
- * 瀛樺偍鐨勪笟鍔$被鍨�
- */
- private String btmTypeId;
-
- /**
- * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
- */
- private String btmTypeName;
-
- /**
- * 鍛藉悕绌洪棿
- */
- private String namespace;
-
- /**
- * soapAction
- */
- private String soapaction;
-
- /**
- * cxfaxis
- */
- private String cxfaxis;
-
- /**
- * 鍙傛暟鍚嶇О
- */
- private String targName;
-
- /***
- * 鎺ㄩ�佺被鍨� 1:鏁版嵁鎺ㄩ��/2鍒嗙被鎺ㄩ�侊紝榛樿鏁版嵁鎺ㄩ��
- */
- private String pushType;
- /***
- * 鎺ㄩ�佺被鍨嬫樉绀哄��
- */
- private String pushTypeText;
-
- /**
- * 鍒嗙被id
- */
- private String classifyid;
-
- /**
- * 鍒嗙被鍚嶇О
- */
- private String classifyname;
-
- /***
- * 鍙傛暟淇℃伅瀵硅薄
- */
- private List<SysIntParamVO> sysIntParamVOs;
- /***
- * header淇℃伅瀵硅薄
- */
- private List<SysIntHeaderVO> sysIntHeaderVOs;
-
- public String 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 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 getClassPath() {
- return classPath;
- }
-
- public void setClassPath(String classPath) {
- this.classPath = classPath;
- }
-
- /**
- * 鑾峰彇 璁よ瘉鏂瑰紡
- */
- 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 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;
- }
-
- 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;
- }
-
- public String getAuthorityType() {
- return authorityType;
- }
-
- public void setAuthorityType(String authorityType) {
- this.authorityType = authorityType;
- }
-
- public String getUserAccount() {
- return userAccount;
- }
-
- public void setUserAccount(String userAccount) {
- this.userAccount = userAccount;
- }
-
- public String getUserCode() {
- return userCode;
- }
-
- public void setUserCode(String userCode) {
- this.userCode = userCode;
- }
-
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
-
- public String getInterfaceFunction() {
- return interfaceFunction;
- }
-
- public void setInterfaceFunction(String interfaceFunction) {
- this.interfaceFunction = interfaceFunction;
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getAuthorityTypeText() {
- return authorityTypeText;
- }
-
- public void setAuthorityTypeText(String authorityTypeText) {
- this.authorityTypeText = authorityTypeText;
- }
-
- 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 getSysbaseid() {
- return sysbaseid;
- }
-
- public void setSysbaseid(String sysbaseid) {
- this.sysbaseid = sysbaseid;
- }
-
- public String getPushType() {
- return pushType;
- }
-
- public void setPushType(String pushType) {
- this.pushType = pushType;
- }
-
- public String getPushTypeText() {
- return pushTypeText;
- }
-
- public void setPushTypeText(String pushTypeText) {
- this.pushTypeText = pushTypeText;
- }
-
- public List<SysIntParamVO> getSysIntParamVOs() {
- return sysIntParamVOs;
- }
-
- public void setSysIntParamVOs(List<SysIntParamVO> sysIntParamVOs) {
- this.sysIntParamVOs = sysIntParamVOs;
- }
-
- public List<SysIntHeaderVO> getSysIntHeaderVOs() {
- return sysIntHeaderVOs;
- }
-
- public void setSysIntHeaderVOs(List<SysIntHeaderVO> sysIntHeaderVOs) {
- this.sysIntHeaderVOs = sysIntHeaderVOs;
- }
-
- @Override
- public String toString() {
- return "SysIntInfoVO{" +
- "authorityoid='" + authorityoid + '\'' +
- ", authorityoidName='" + authorityoidName + '\'' +
- ", authorityType='" + authorityType + '\'' +
- ", authorityTypeText='" + authorityTypeText + '\'' +
- ", userAccount='" + userAccount + '\'' +
- ", userCode='" + userCode + '\'' +
- ", token='" + token + '\'' +
- ", interfaceFunction='" + interfaceFunction + '\'' +
- ", description='" + description + '\'' +
- ", interfacetype='" + interfacetype + '\'' +
- ", interfacetypeText='" + interfacetypeText + '\'' +
- ", paramtype='" + paramtype + '\'' +
- ", paramtypeText='" + paramtypeText + '\'' +
- ", requestmethod='" + requestmethod + '\'' +
- ", requestmethodText='" + requestmethodText + '\'' +
- ", classifyoid='" + classifyoid + '\'' +
- ", usedflag='" + usedflag + '\'' +
- ", sysbaseoid='" + sysbaseoid + '\'' +
- ", sysbaseid='" + sysbaseid + '\'' +
- ", sysbasename='" + sysbasename + '\'' +
- ", requesturl='" + requesturl + '\'' +
- ", returntype='" + returntype + '\'' +
- ", returntypeText='" + returntypeText + '\'' +
- ", sourceSystemOid='" + sourceSystemOid + '\'' +
- ", sourceSysName='" + sourceSysName + '\'' +
- ", sourceSysId='" + sourceSysId + '\'' +
- ", sourcesystemoidName='" + sourcesystemoidName + '\'' +
- ", targetsystemoid='" + targetsystemoid + '\'' +
- ", targetSysName='" + targetSysName + '\'' +
- ", targetSysId='" + targetSysId + '\'' +
- ", targetsystemoidName='" + targetsystemoidName + '\'' +
- ", classPath='" + classPath + '\'' +
- ", dataFlowType='" + dataFlowType + '\'' +
- ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
- ", btmTypeId='" + btmTypeId + '\'' +
- ", btmTypeName='" + btmTypeName + '\'' +
- ", namespace='" + namespace + '\'' +
- ", soapaction='" + soapaction + '\'' +
- ", cxfaxis='" + cxfaxis + '\'' +
- ", targName='" + targName + '\'' +
- ", pushType='" + pushType + '\'' +
- ", pushTypeText='" + pushTypeText + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- ", sysIntParamVOs=" + sysIntParamVOs +
- ", sysIntHeaderVOs=" + sysIntHeaderVOs +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntParamVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntParamVO.java
deleted file mode 100644
index 1715eb8..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/pagemodel/SysIntParamVO.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.springblade.code.vo.pagemodel;
-
-import com.vci.starter.web.pagemodel.BaseModelVO;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- *
- * @author weidy
- * @date 2022-04-11
- */
-public class SysIntParamVO extends BaseModelVO {
-
- /**
- * 绂佹淇敼杩欎釜鍊�
- */
- private static final long serialVersionUID = 4615707118871819648L;
-
- /**
- * 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/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
deleted file mode 100644
index 2be451f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDataVO.java
+++ /dev/null
@@ -1,119 +0,0 @@
-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
deleted file mode 100644
index 69eed5e..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ApplyDatasVO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-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
deleted file mode 100644
index 8126bbf..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfyVO.java
+++ /dev/null
@@ -1,83 +0,0 @@
-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
deleted file mode 100644
index 628fb7c..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ClassfysVO.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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
deleted file mode 100644
index 57b8390..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/InterParameterVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index 3fe730a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/ProppertyVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-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
deleted file mode 100644
index ce185fd..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/RootDataVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-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
deleted file mode 100644
index 02abdef..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionVO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index 21e537c..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/SectionsVO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 17a5bef..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/apply/UserVO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-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
deleted file mode 100644
index b0fb889..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java
+++ /dev/null
@@ -1,73 +0,0 @@
-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
deleted file mode 100644
index b8b746b..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataAttributeVO.java
+++ /dev/null
@@ -1,112 +0,0 @@
-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
deleted file mode 100644
index 6ae4a41..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/DataObjectVO.java
+++ /dev/null
@@ -1,24 +0,0 @@
-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
deleted file mode 100644
index 8d82fc7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/GeneralMappingUtil.java
+++ /dev/null
@@ -1,30 +0,0 @@
-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
deleted file mode 100644
index 83e594c..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryClsfDO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index 9649f7f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/LibraryDO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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
deleted file mode 100644
index bcaeb27..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/RowDatas.java
+++ /dev/null
@@ -1,125 +0,0 @@
-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/classify/ClassifyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java
deleted file mode 100644
index 289a3e8..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ClassifyVO.java
+++ /dev/null
@@ -1,112 +0,0 @@
-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
deleted file mode 100644
index 2451bb3..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/LibraryVO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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
deleted file mode 100644
index 5e86abb..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryClassifyVO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-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
deleted file mode 100644
index e6f4c9a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryData.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.springblade.code.vo.universalInter.classify;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import org.springblade.code.vo.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
deleted file mode 100644
index 8852d6d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/QueryLibraryVO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-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
deleted file mode 100644
index 550cbe1..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultClassifyVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index 3970c1d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/ResultData.java
+++ /dev/null
@@ -1,45 +0,0 @@
-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/data/CondtionVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java
deleted file mode 100644
index f05a681..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionVO.java
+++ /dev/null
@@ -1,60 +0,0 @@
-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
deleted file mode 100644
index 2cc3505..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/CondtionsVO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.springblade.code.vo.universalInter.data;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import org.springblade.code.vo.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
deleted file mode 100644
index 4a4795d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataCondtionsVO.java
+++ /dev/null
@@ -1,20 +0,0 @@
-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
deleted file mode 100644
index 8e36472..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/DataObjectVO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-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
deleted file mode 100644
index 08c096a..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/PropertyVO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-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
deleted file mode 100644
index b6a91f7..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultDataVO.java
+++ /dev/null
@@ -1,47 +0,0 @@
-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
deleted file mode 100644
index afd9528..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/ResultVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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/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
deleted file mode 100644
index 0dc0365..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfyVO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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
deleted file mode 100644
index da0269f..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultClassfysVO.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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
deleted file mode 100644
index 336fa55..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index af09a28..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java
+++ /dev/null
@@ -1,62 +0,0 @@
-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
deleted file mode 100644
index dd2584d..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultDataVO.java
+++ /dev/null
@@ -1,19 +0,0 @@
-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
deleted file mode 100644
index 489f0bb..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/JSONResultSystemVO.java
+++ /dev/null
@@ -1,52 +0,0 @@
-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/xml/XMLResultClassfyVO.java b/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
deleted file mode 100644
index 93bd32b..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
+++ /dev/null
@@ -1,60 +0,0 @@
-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
deleted file mode 100644
index ccc44fc..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java
+++ /dev/null
@@ -1,62 +0,0 @@
-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
deleted file mode 100644
index 0bc8b18..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultDataVO.java
+++ /dev/null
@@ -1,19 +0,0 @@
-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
deleted file mode 100644
index a8129bb..0000000
--- a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/xml/XMLResultSystemVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-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/blade-desk-api/pom.xml b/Source/BladeX/blade-service-api/blade-desk-api/pom.xml
deleted file mode 100644
index fdca91c..0000000
--- a/Source/BladeX/blade-service-api/blade-desk-api/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-desk-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java b/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java
deleted file mode 100644
index c008791..0000000
--- a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/entity/Notice.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.desk.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-import java.util.Date;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_notice")
-@EqualsAndHashCode(callSuper = true)
-public class Notice extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鏍囬
- */
- @ApiModelProperty(value = "鏍囬")
- private String title;
-
- /**
- * 閫氱煡绫诲瀷
- */
- @ApiModelProperty(value = "閫氱煡绫诲瀷")
- private Integer category;
-
- /**
- * 鍙戝竷鏃ユ湡
- */
- @ApiModelProperty(value = "鍙戝竷鏃ユ湡")
- private Date releaseTime;
-
- /**
- * 鍐呭
- */
- @ApiModelProperty(value = "鍐呭")
- private String content;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/feign/INoticeClient.java b/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/feign/INoticeClient.java
deleted file mode 100644
index c189eb4..0000000
--- a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/feign/INoticeClient.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.desk.feign;
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.mp.support.BladePage;
-import org.springblade.desk.entity.Notice;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-/**
- * Notice Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_DESK_NAME
-)
-public interface INoticeClient {
-
- String API_PREFIX = "/client";
- String TOP = API_PREFIX + "/top";
-
- /**
- * 鑾峰彇notice鍒楄〃
- *
- * @param current
- * @param size
- * @return
- */
- @GetMapping(TOP)
- BladePage<Notice> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/vo/NoticeVO.java b/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/vo/NoticeVO.java
deleted file mode 100644
index 5b09e17..0000000
--- a/Source/BladeX/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/vo/NoticeVO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.springblade.desk.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.desk.entity.Notice;
-
-/**
- * 閫氱煡鍏憡瑙嗗浘绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class NoticeVO extends Notice {
-
- @ApiModelProperty(value = "閫氱煡绫诲瀷鍚�")
- private String categoryName;
-
- @ApiModelProperty(value = "绉熸埛缂栧彿")
- private String tenantId;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/pom.xml b/Source/BladeX/blade-service-api/blade-dict-api/pom.xml
deleted file mode 100644
index 4cca987..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/pom.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-dict-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-cache</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictBizCache.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictBizCache.java
deleted file mode 100644
index 9e1051a..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictBizCache.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.enums.DictBizEnum;
-import org.springblade.system.feign.IDictBizClient;
-
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 涓氬姟瀛楀吀缂撳瓨宸ュ叿绫�
- *
- * @author Chill
- */
-public class DictBizCache {
-
- private static final String DICT_ID = "dictBiz:id";
- private static final String DICT_VALUE = "dictBiz:value";
- private static final String DICT_LIST = "dictBiz:list";
-
- private static IDictBizClient dictClient;
-
- private static IDictBizClient getDictClient() {
- if (dictClient == null) {
- dictClient = SpringUtil.getBean(IDictBizClient.class);
- }
- return dictClient;
- }
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return DictBiz
- */
- public static DictBiz getById(Long id) {
- String keyPrefix = DICT_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix, id, () -> {
- R<DictBiz> result = getDictClient().getById(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictBizEnum code, Integer dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, Integer dictKey) {
- String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, String.valueOf(dictKey), () -> {
- R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictBizEnum code, String dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, String dictKey) {
- String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, dictKey, () -> {
- R<String> result = getDictClient().getValue(code, dictKey);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀闆嗗悎
- *
- * @param code 瀛楀吀缂栧彿
- * @return List<DictBiz>
- */
- public static List<DictBiz> getList(String code) {
- String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> {
- R<List<DictBiz>> result = getDictClient().getList(code);
- return result.getData();
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictCache.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictCache.java
deleted file mode 100644
index 15a8367..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/cache/DictCache.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.feign.IDictClient;
-
-import java.util.List;
-import java.util.Optional;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 瀛楀吀缂撳瓨宸ュ叿绫�
- *
- * @author Chill
- */
-public class DictCache {
-
- private static final String DICT_ID = "dict:id:";
- private static final String DICT_KEY = "dict:key:";
- private static final String DICT_VALUE = "dict:value:";
- private static final String DICT_LIST = "dict:list:";
-
- private static final Boolean TENANT_MODE = Boolean.FALSE;
-
- private static IDictClient dictClient;
-
- private static IDictClient getDictClient() {
- if (dictClient == null) {
- dictClient = SpringUtil.getBean(IDictClient.class);
- }
- return dictClient;
- }
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return Dict
- */
- public static Dict getById(Long id) {
- return CacheUtil.get(DICT_CACHE, DICT_ID, id, () -> {
- R<Dict> result = getDictClient().getById(id);
- return result.getData();
- }, TENANT_MODE);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictValue 瀛楀吀鍊�
- * @return String
- */
- public static String getKey(DictEnum code, String dictValue) {
- return getKey(code.getName(), dictValue);
- }
-
- /**
- * 鑾峰彇瀛楀吀閿�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictValue 瀛楀吀鍊�
- * @return String
- */
- public static String getKey(String code, String dictValue) {
- return CacheUtil.get(DICT_CACHE, DICT_KEY + code + StringPool.COLON, dictValue, () -> {
- List<Dict> list = getList(code);
- Optional<String> key = list.stream().filter(
- dict -> dict.getDictValue().equalsIgnoreCase(dictValue)
- ).map(Dict::getDictKey).findFirst();
- return key.orElse(StringPool.EMPTY);
- }, TENANT_MODE);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictEnum code, Integer dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, Integer dictKey) {
- return CacheUtil.get(DICT_CACHE, DICT_VALUE + code + StringPool.COLON, String.valueOf(dictKey), () -> {
- R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
- return result.getData();
- }, TENANT_MODE);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictEnum code, String dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, String dictKey) {
- return CacheUtil.get(DICT_CACHE, DICT_VALUE + code + StringPool.COLON, dictKey, () -> {
- R<String> result = getDictClient().getValue(code, dictKey);
- return result.getData();
- }, TENANT_MODE);
- }
-
- /**
- * 鑾峰彇瀛楀吀闆嗗悎
- *
- * @param code 瀛楀吀缂栧彿
- * @return List<Dict>
- */
- public static List<Dict> getList(String code) {
- return CacheUtil.get(DICT_CACHE, DICT_LIST, code, () -> {
- R<List<Dict>> result = getDictClient().getList(code);
- return result.getData();
- }, TENANT_MODE);
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/constant/DictConstant.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/constant/DictConstant.java
deleted file mode 100644
index aabc187..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/constant/DictConstant.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.system.constant;
-
-/**
- * 瀛楀吀甯搁噺.
- *
- * @author zhuangqian
- */
-public interface DictConstant {
-
- String SEX_CODE = "sex";
-
- String NOTICE_CODE = "notice";
-
- String MENU_CATEGORY_CODE = "menu_category";
-
- String BUTTON_FUNC_CODE = "button_func";
-
- String YES_NO_CODE = "yes_no";
-
- String FLOW_CATEGORY_CODE = "flow_category";
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/dto/DictDTO.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/dto/DictDTO.java
deleted file mode 100644
index c2597e5..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/dto/DictDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Dict;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class DictDTO extends Dict {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/Dict.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/Dict.java
deleted file mode 100644
index 13903bb..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/Dict.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_dict")
-@ApiModel(value = "Dict瀵硅薄", description = "Dict瀵硅薄")
-public class Dict implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐖朵富閿�")
- private Long parentId;
-
- /**
- * 瀛楀吀鐮�
- */
- @ApiModelProperty(value = "瀛楀吀鐮�")
- private String code;
-
- /**
- * 瀛楀吀鍊�
- */
- @ApiModelProperty(value = "瀛楀吀鍊�")
- private String dictKey;
-
- /**
- * 瀛楀吀鍚嶇О
- */
- @ApiModelProperty(value = "瀛楀吀鍚嶇О")
- private String dictValue;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 瀛楀吀澶囨敞
- */
- @ApiModelProperty(value = "瀛楀吀澶囨敞")
- private String remark;
-
- /**
- * 鏄惁宸插皝瀛�
- */
- @ApiModelProperty(value = "鏄惁宸插皝瀛�")
- private Integer isSealed;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/DictBiz.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/DictBiz.java
deleted file mode 100644
index 46bea61..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/entity/DictBiz.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_dict_biz")
-@ApiModel(value = "DictBiz瀵硅薄", description = "DictBiz瀵硅薄")
-public class DictBiz implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绉熸埛ID
- */
- @ApiModelProperty(value = "绉熸埛ID")
- private String tenantId;
-
- /**
- * 鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐖朵富閿�")
- private Long parentId;
-
- /**
- * 瀛楀吀鐮�
- */
- @ApiModelProperty(value = "瀛楀吀鐮�")
- private String code;
-
- /**
- * 瀛楀吀鍊�
- */
- @ApiModelProperty(value = "瀛楀吀鍊�")
- private String dictKey;
-
- /**
- * 瀛楀吀鍚嶇О
- */
- @ApiModelProperty(value = "瀛楀吀鍚嶇О")
- private String dictValue;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 瀛楀吀澶囨敞
- */
- @ApiModelProperty(value = "瀛楀吀澶囨敞")
- private String remark;
-
- /**
- * 鏄惁宸插皝瀛�
- */
- @ApiModelProperty(value = "鏄惁宸插皝瀛�")
- private Integer isSealed;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java
deleted file mode 100644
index 999201a..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.system.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 涓氬姟瀛楀吀鏋氫妇绫�
- *
- * @author Chill
- */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
- /**
- * 娴嬭瘯
- */
- TEST("test"),
- ;
-
- final String name;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java
deleted file mode 100644
index 609b7cc..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/enums/DictEnum.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.system.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 绯荤粺瀛楀吀鏋氫妇绫�
- *
- * @author Chill
- */
-@Getter
-@AllArgsConstructor
-public enum DictEnum {
-
- /**
- * 鎬у埆
- */
- SEX("sex"),
- /**
- * 閫氱煡绫诲瀷
- */
- NOTICE("notice"),
- /**
- * 鑿滃崟绫诲瀷
- */
- MENU_CATEGORY("menu_category"),
- /**
- * 鎸夐挳鍔熻兘
- */
- BUTTON_FUNC("button_func"),
- /**
- * 鏄惁
- */
- YES_NO("yes_no"),
- /**
- * 娴佺▼绫诲瀷
- */
- FLOW("flow"),
- /**
- * 鏈烘瀯绫诲瀷
- */
- ORG_CATEGORY("org_category"),
- /**
- * 鏁版嵁鏉冮檺
- */
- DATA_SCOPE_TYPE("data_scope_type"),
- /**
- * 鎺ュ彛鏉冮檺
- */
- API_SCOPE_TYPE("api_scope_type"),
- /**
- * 鏉冮檺绫诲瀷
- */
- SCOPE_CATEGORY("scope_category"),
- /**
- * 瀵硅薄瀛樺偍绫诲瀷
- */
- OSS("oss"),
- /**
- * 鐭俊鏈嶅姟绫诲瀷
- */
- SMS("sms"),
- /**
- * 宀椾綅绫诲瀷
- */
- POST_CATEGORY("post_category"),
- /**
- * 琛屾斂鍖哄垝
- */
- REGION("region"),
- /**
- * 鐢ㄦ埛骞冲彴
- */
- USER_TYPE("user_type"),
- ;
-
- final String name;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClient.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClient.java
deleted file mode 100644
index 0944f39..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClient.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.system.feign;
-
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.DictBiz;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_SYSTEM_NAME,
- fallback = IDictBizClientFallback.class
-)
-public interface IDictBizClient {
-
- String API_PREFIX = "/client";
- String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
- String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
- String GET_LIST = API_PREFIX + "/dict-biz/get-list";
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return
- */
- @GetMapping(GET_BY_ID)
- R<DictBiz> getById(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斿��
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- @GetMapping(GET_VALUE)
- R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- @GetMapping(GET_LIST)
- R<List<DictBiz>> getList(@RequestParam("code") String code);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClientFallback.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClientFallback.java
deleted file mode 100644
index cde9af7..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictBizClientFallback.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.DictBiz;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * Feign澶辫触閰嶇疆
- *
- * @author Chill
- */
-@Component
-public class IDictBizClientFallback implements IDictBizClient {
- @Override
- public R<DictBiz> getById(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getValue(String code, String dictKey) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<DictBiz>> getList(String code) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClient.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClient.java
deleted file mode 100644
index 52c3c43..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClient.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.system.feign;
-
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Dict;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_SYSTEM_NAME,
- fallback = IDictClientFallback.class
-)
-public interface IDictClient {
-
- String API_PREFIX = "/client";
- String GET_BY_ID = API_PREFIX + "/dict/get-by-id";
- String GET_VALUE = API_PREFIX + "/dict/get-value";
- String GET_LIST = API_PREFIX + "/dict/get-list";
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return
- */
- @GetMapping(GET_BY_ID)
- R<Dict> getById(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斿��
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- @GetMapping(GET_VALUE)
- R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- @GetMapping(GET_LIST)
- R<List<Dict>> getList(@RequestParam("code") String code);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java
deleted file mode 100644
index d1b0c99..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/feign/IDictClientFallback.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Dict;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * Feign澶辫触閰嶇疆
- *
- * @author Chill
- */
-@Component
-public class IDictClientFallback implements IDictClient {
- @Override
- public R<Dict> getById(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getValue(String code, String dictKey) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<Dict>> getList(String code) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictBizVO.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictBizVO.java
deleted file mode 100644
index 177bb24..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictBizVO.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.system.entity.DictBiz;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DictBizVO瀵硅薄", description = "DictBizVO瀵硅薄")
-public class DictBizVO extends DictBiz implements INode<DictBizVO> {
- private static final long serialVersionUID = 1L;
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<DictBizVO> children;
-
- @Override
- public List<DictBizVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇瀛楀吀
- */
- private String parentName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictVO.java b/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictVO.java
deleted file mode 100644
index cebf74c..0000000
--- a/Source/BladeX/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/vo/DictVO.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.system.entity.Dict;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DictVO瀵硅薄", description = "DictVO瀵硅薄")
-public class DictVO extends Dict implements INode<DictVO> {
- private static final long serialVersionUID = 1L;
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<DictVO> children;
-
- @Override
- public List<DictVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇瀛楀吀
- */
- private String parentName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/pom.xml b/Source/BladeX/blade-service-api/blade-omd-api/pom.xml
deleted file mode 100644
index 922d846..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-omd-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/cache/DictBizCache.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/cache/DictBizCache.java
deleted file mode 100644
index 3846a05..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/cache/DictBizCache.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.omd.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.enums.DictBizEnum;
-import org.springblade.omd.feign.IDictBizClient;
-
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 涓氬姟瀛楀吀缂撳瓨宸ュ叿绫�
- *
- * @author Chill
- */
-public class DictBizCache {
-
- private static final String DICT_ID = "dictBiz:id";
- private static final String DICT_VALUE = "dictBiz:value";
- private static final String DICT_LIST = "dictBiz:list";
-
- private static IDictBizClient dictClient;
-
- private static IDictBizClient getDictClient() {
- if (dictClient == null) {
- dictClient = SpringUtil.getBean(IDictBizClient.class);
- }
- return dictClient;
- }
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return DictBiz
- */
- public static DictBizM getById(Long id) {
- String keyPrefix = DICT_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix, id, () -> {
- R<DictBizM> result = getDictClient().getById(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictBizEnum code, Integer dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey Integer鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, Integer dictKey) {
- String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, String.valueOf(dictKey), () -> {
- R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿鏋氫妇
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(DictBizEnum code, String dictKey) {
- return getValue(code.getName(), dictKey);
- }
-
- /**
- * 鑾峰彇瀛楀吀鍊�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey String鍨嬪瓧鍏搁敭
- * @return String
- */
- public static String getValue(String code, String dictKey) {
- String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, dictKey, () -> {
- R<String> result = getDictClient().getValue(code, dictKey);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛楀吀闆嗗悎
- *
- * @param code 瀛楀吀缂栧彿
- * @return List<DictBiz>
- */
- public static List<DictBizM> getList(String code) {
- String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> {
- R<List<DictBizM>> result = getDictClient().getList(code);
- return result.getData();
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/entity/DictBizM.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/entity/DictBizM.java
deleted file mode 100644
index f6fec5d..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/entity/DictBizM.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.omd.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_dict_biz")
-@ApiModel(value = "DictBiz瀵硅薄", description = "DictBiz瀵硅薄")
-public class DictBizM implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绉熸埛ID
- */
- @ApiModelProperty(value = "绉熸埛ID")
- private String tenantId;
-
- /**
- * 鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐖朵富閿�")
- private Long parentId;
-
- /**
- * 瀛楀吀鐮�
- */
- @ApiModelProperty(value = "瀛楀吀鐮�")
- private String code;
-
- /**
- * 瀛楀吀鍊�
- */
- @ApiModelProperty(value = "瀛楀吀鍊�")
- private String dictKey;
-
- /**
- * 瀛楀吀鍚嶇О
- */
- @ApiModelProperty(value = "瀛楀吀鍚嶇О")
- private String dictValue;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 瀛楀吀澶囨敞
- */
- @ApiModelProperty(value = "瀛楀吀澶囨敞")
- private String remark;
-
- /**
- * 鏄惁宸插皝瀛�
- */
- @ApiModelProperty(value = "鏄惁宸插皝瀛�")
- private Integer isSealed;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/enums/DictBizEnum.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/enums/DictBizEnum.java
deleted file mode 100644
index 1bec1e8..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/enums/DictBizEnum.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.omd.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 涓氬姟瀛楀吀鏋氫妇绫�
- *
- * @author Chill
- */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
- /**
- * 娴嬭瘯
- */
- TEST("test"),
- ;
-
- final String name;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClient.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClient.java
deleted file mode 100644
index 4add47b..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClient.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.omd.feign;
-
-
-import org.springblade.core.tool.api.R;
-import org.springblade.omd.entity.DictBizM;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = "blade-omd",
- fallback = IDictBizClientFallback.class
-)
-public interface IDictBizClient {
-
- String API_PREFIX = "/client";
- String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
- String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
- String GET_LIST = API_PREFIX + "/dict-biz/get-list";
- String CHECK_VALUE = API_PREFIX + "/dict-biz/check-value";
-
- /**
- * 鑾峰彇瀛楀吀瀹炰綋
- *
- * @param id 涓婚敭
- * @return
- */
- @GetMapping(GET_BY_ID)
- R<DictBizM> getById(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斿��
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- @GetMapping(GET_VALUE)
- R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- @GetMapping(GET_LIST)
- R<List<DictBizM>> getList(@RequestParam("code") String code);
-
- /**
- * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
- *
- * @param dict 瀛楀吀鏁版嵁
- * @return
- */
- @GetMapping(CHECK_VALUE)
- R getCheck(@Valid @RequestBody DictBizM dict);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClientFallback.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClientFallback.java
deleted file mode 100644
index 59b2e31..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/feign/IDictBizClientFallback.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.omd.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springblade.omd.entity.DictBizM;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * Feign澶辫触閰嶇疆
- *
- * @author Chill
- */
-@Component
-public class IDictBizClientFallback implements IDictBizClient {
- @Override
- public R<DictBizM> getById(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getValue(String code, String dictKey) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<DictBizM>> getList(String code) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R getCheck(DictBizM dict) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/vo/DictBizMVO.java b/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/vo/DictBizMVO.java
deleted file mode 100644
index aafd6ba..0000000
--- a/Source/BladeX/blade-service-api/blade-omd-api/src/main/java/org/springblade/omd/vo/DictBizMVO.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.omd.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.omd.entity.DictBizM;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DictBizVO瀵硅薄", description = "DictBizVO瀵硅薄")
-public class DictBizMVO extends DictBizM implements INode<DictBizM> {
- private static final long serialVersionUID = 1L;
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<DictBizM> children;
-
- @Override
- public List<DictBizM> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇瀛楀吀
- */
- private String parentName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/pom.xml b/Source/BladeX/blade-service-api/blade-scope-api/pom.xml
deleted file mode 100644
index 74f801c..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-scope-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-secure</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-cache</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-datascope</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/ApiScopeCache.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/ApiScopeCache.java
deleted file mode 100644
index c0be7e0..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/ApiScopeCache.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.feign.IApiScopeClient;
-
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鎺ュ彛鏉冮檺缂撳瓨
- *
- * @author Chill
- */
-public class ApiScopeCache {
-
- private static final String SCOPE_CACHE_CODE = "apiScope:code:";
-
- private static IApiScopeClient apiScopeClient;
-
- private static IApiScopeClient getApiScopeClient() {
- if (apiScopeClient == null) {
- apiScopeClient = SpringUtil.getBean(IApiScopeClient.class);
- }
- return apiScopeClient;
- }
-
- /**
- * 鑾峰彇鎺ュ彛鏉冮檺鍦板潃
- *
- * @param roleId 瑙掕壊id
- * @return permissions
- */
- public static List<String> permissionPath(String roleId) {
- List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, roleId, List.class, Boolean.FALSE);
- if (permissions == null) {
- permissions = getApiScopeClient().permissionPath(roleId);
- CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, roleId, permissions);
- }
- return permissions;
- }
-
- /**
- * 鑾峰彇鎺ュ彛鏉冮檺淇℃伅
- *
- * @param permission 鏉冮檺缂栧彿
- * @param roleId 瑙掕壊id
- * @return permissions
- */
- public static List<String> permissionCode(String permission, String roleId) {
- List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, List.class, Boolean.FALSE);
- if (permissions == null) {
- permissions = getApiScopeClient().permissionCode(permission, roleId);
- CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, permissions);
- }
- return permissions;
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/DataScopeCache.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/DataScopeCache.java
deleted file mode 100644
index 666c6f2..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/cache/DataScopeCache.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.datascope.model.DataScopeModel;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.feign.IDataScopeClient;
-
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鏁版嵁鏉冮檺缂撳瓨
- *
- * @author Chill
- */
-public class DataScopeCache {
-
- private static final String SCOPE_CACHE_CODE = "dataScope:code:";
- private static final String SCOPE_CACHE_CLASS = "dataScope:class:";
- private static final String DEPT_CACHE_ANCESTORS = "dept:ancestors:";
-
- private static IDataScopeClient dataScopeClient;
-
- private static IDataScopeClient getDataScopeClient() {
- if (dataScopeClient == null) {
- dataScopeClient = SpringUtil.getBean(IDataScopeClient.class);
- }
- return dataScopeClient;
- }
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param mapperId 鏁版嵁鏉冮檺mapperId
- * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
- * @return DataScopeModel
- */
- public static DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
- DataScopeModel dataScope = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CLASS, mapperId + StringPool.COLON + roleId, DataScopeModel.class, Boolean.FALSE);
- if (dataScope == null || !dataScope.getSearched()) {
- dataScope = getDataScopeClient().getDataScopeByMapper(mapperId, roleId);
- CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CLASS, mapperId + StringPool.COLON + roleId, dataScope);
- }
- return StringUtil.isNotBlank(dataScope.getResourceCode()) ? dataScope : null;
- }
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
- * @return DataScopeModel
- */
- public static DataScopeModel getDataScopeByCode(String code) {
- DataScopeModel dataScope = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, code, DataScopeModel.class, Boolean.FALSE);
- if (dataScope == null || !dataScope.getSearched()) {
- dataScope = getDataScopeClient().getDataScopeByCode(code);
- CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, code, dataScope);
- }
- return StringUtil.isNotBlank(dataScope.getResourceCode()) ? dataScope : null;
- }
-
- /**
- * 鑾峰彇閮ㄩ棬瀛愮骇
- *
- * @param deptId 閮ㄩ棬id
- * @return deptIds
- */
- public static List<Long> getDeptAncestors(Long deptId) {
- List ancestors = CacheUtil.get(SYS_CACHE, DEPT_CACHE_ANCESTORS, deptId, List.class);
- if (CollectionUtil.isEmpty(ancestors)) {
- ancestors = getDataScopeClient().getDeptAncestors(deptId);
- CacheUtil.put(SYS_CACHE, DEPT_CACHE_ANCESTORS, deptId, ancestors);
- }
- return ancestors;
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/config/ScopeConfiguration.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/config/ScopeConfiguration.java
deleted file mode 100644
index e1f6d83..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/config/ScopeConfiguration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.system.config;
-
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.datascope.handler.ScopeModelHandler;
-import org.springblade.core.secure.config.RegistryConfiguration;
-import org.springblade.core.secure.handler.IPermissionHandler;
-import org.springblade.system.handler.ApiScopePermissionHandler;
-import org.springblade.system.handler.DataScopeModelHandler;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 鍏叡灏佽鍖呴厤缃被
- *
- * @author Chill
- */
-@Configuration(proxyBeanMethods = false)
-@AllArgsConstructor
-@AutoConfigureBefore(RegistryConfiguration.class)
-public class ScopeConfiguration {
-
- @Bean
- public ScopeModelHandler scopeModelHandler() {
- return new DataScopeModelHandler();
- }
-
- @Bean
- public IPermissionHandler permissionHandler() {
- return new ApiScopePermissionHandler();
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClient.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClient.java
deleted file mode 100644
index d812e64..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClient.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * 鎺ュ彛鏉冮檺Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_SYSTEM_NAME,
- fallback = IApiScopeClientFallback.class
-)
-public interface IApiScopeClient {
-
- String API_PREFIX = "/client/api-scope";
- String PERMISSION_PATH = API_PREFIX + "/permission-path";
- String PERMISSION_CODE = API_PREFIX + "/permission-code";
-
- /**
- * 鑾峰彇鎺ュ彛鏉冮檺鍦板潃
- *
- * @param roleId 瑙掕壊id
- * @return permissions
- */
- @GetMapping(PERMISSION_PATH)
- List<String> permissionPath(@RequestParam("roleId") String roleId);
-
- /**
- * 鑾峰彇鎺ュ彛鏉冮檺淇℃伅
- *
- * @param permission 鏉冮檺缂栧彿
- * @param roleId 瑙掕壊id
- * @return permissions
- */
- @GetMapping(PERMISSION_CODE)
- List<String> permissionCode(@RequestParam("permission") String permission, @RequestParam("roleId") String roleId);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClientFallback.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClientFallback.java
deleted file mode 100644
index de7eea4..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IApiScopeClientFallback.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * IApiScopeClientFallback
- *
- * @author Chill
- */
-@Component
-public class IApiScopeClientFallback implements IApiScopeClient {
- @Override
- public List<String> permissionPath(String roleId) {
- return null;
- }
-
- @Override
- public List<String> permissionCode(String permission, String roleId) {
- return null;
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClient.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClient.java
deleted file mode 100644
index cf82a7f..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClient.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.datascope.model.DataScopeModel;
-import org.springblade.core.launch.constant.AppConstant;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * 鏁版嵁鏉冮檺Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_SYSTEM_NAME,
- fallback = IDataScopeClientFallback.class
-)
-public interface IDataScopeClient {
-
- String API_PREFIX = "/client/data-scope";
- String GET_DATA_SCOPE_BY_MAPPER = API_PREFIX + "/by-mapper";
- String GET_DATA_SCOPE_BY_CODE = API_PREFIX + "/by-code";
- String GET_DEPT_ANCESTORS = API_PREFIX + "/dept-ancestors";
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param mapperId 鏁版嵁鏉冮檺mapperId
- * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
- * @return DataScopeModel
- */
- @GetMapping(GET_DATA_SCOPE_BY_MAPPER)
- DataScopeModel getDataScopeByMapper(@RequestParam("mapperId") String mapperId, @RequestParam("roleId") String roleId);
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
- * @return DataScopeModel
- */
- @GetMapping(GET_DATA_SCOPE_BY_CODE)
- DataScopeModel getDataScopeByCode(@RequestParam("code") String code);
-
- /**
- * 鑾峰彇閮ㄩ棬瀛愮骇
- *
- * @param deptId 閮ㄩ棬id
- * @return deptIds
- */
- @GetMapping(GET_DEPT_ANCESTORS)
- List<Long> getDeptAncestors(@RequestParam("deptId") Long deptId);
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClientFallback.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClientFallback.java
deleted file mode 100644
index 33a65ef..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/feign/IDataScopeClientFallback.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.datascope.model.DataScopeModel;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * IDataScopeClientFallback
- *
- * @author Chill
- */
-@Component
-public class IDataScopeClientFallback implements IDataScopeClient {
- @Override
- public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
- return null;
- }
-
- @Override
- public DataScopeModel getDataScopeByCode(String code) {
- return null;
- }
-
- @Override
- public List<Long> getDeptAncestors(Long deptId) {
- return null;
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/ApiScopePermissionHandler.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/ApiScopePermissionHandler.java
deleted file mode 100644
index 8af507d..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/ApiScopePermissionHandler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.handler;
-
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.handler.IPermissionHandler;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.WebUtil;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-import static org.springblade.system.cache.ApiScopeCache.permissionCode;
-import static org.springblade.system.cache.ApiScopeCache.permissionPath;
-
-/**
- * 鎺ュ彛鏉冮檺鏍¢獙绫�
- *
- * @author Chill
- */
-public class ApiScopePermissionHandler implements IPermissionHandler {
-
- @Override
- public boolean permissionAll() {
- HttpServletRequest request = WebUtil.getRequest();
- BladeUser user = AuthUtil.getUser();
- if (request == null || user == null) {
- return false;
- }
- String uri = request.getRequestURI();
- List<String> paths = permissionPath(user.getRoleId());
- if (paths == null || paths.size() == 0) {
- return false;
- }
- return paths.stream().anyMatch(uri::contains);
- }
-
- @Override
- public boolean hasPermission(String permission) {
- HttpServletRequest request = WebUtil.getRequest();
- BladeUser user = AuthUtil.getUser();
- if (request == null || user == null) {
- return false;
- }
- List<String> codes = permissionCode(permission, user.getRoleId());
- return codes != null && codes.size() != 0;
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/DataScopeModelHandler.java b/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/DataScopeModelHandler.java
deleted file mode 100644
index c7f7ce1..0000000
--- a/Source/BladeX/blade-service-api/blade-scope-api/src/main/java/org/springblade/system/handler/DataScopeModelHandler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.system.handler;
-
-import org.springblade.core.datascope.handler.ScopeModelHandler;
-import org.springblade.core.datascope.model.DataScopeModel;
-import org.springblade.system.cache.DataScopeCache;
-
-import java.util.List;
-
-/**
- * 閫氱敤鏁版嵁鏉冮檺瑙勫垯
- *
- * @author Chill
- */
-public class DataScopeModelHandler implements ScopeModelHandler {
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param mapperId 鏁版嵁鏉冮檺mapperId
- * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
- * @return DataScopeModel
- */
- @Override
- public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
- return DataScopeCache.getDataScopeByMapper(mapperId, roleId);
- }
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
- * @return DataScopeModel
- */
- @Override
- public DataScopeModel getDataScopeByCode(String code) {
- return DataScopeCache.getDataScopeByCode(code);
- }
-
- /**
- * 鑾峰彇閮ㄩ棬瀛愮骇
- *
- * @param deptId 閮ㄩ棬id
- * @return deptIds
- */
- @Override
- public List<Long> getDeptAncestors(Long deptId) {
- return DataScopeCache.getDeptAncestors(deptId);
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/pom.xml b/Source/BladeX/blade-service-api/blade-system-api/pom.xml
deleted file mode 100644
index b49f61b..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/pom.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-system-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-cache</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/ParamCache.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/ParamCache.java
deleted file mode 100644
index 5806c01..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/ParamCache.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.system.entity.Param;
-import org.springblade.system.feign.ISysClient;
-
-import static org.springblade.core.cache.constant.CacheConstant.PARAM_CACHE;
-
-/**
- * 鍙傛暟缂撳瓨宸ュ叿绫�
- *
- * @author Chill
- */
-public class ParamCache {
-
- private static final String PARAM_ID = "param:id:";
- private static final String PARAM_VALUE = "param:value:";
-
- private static ISysClient sysClient;
-
- private static ISysClient getSysClient() {
- if (sysClient == null) {
- sysClient = SpringUtil.getBean(ISysClient.class);
- }
- return sysClient;
- }
-
- /**
- * 鑾峰彇鍙傛暟瀹炰綋
- *
- * @param id 涓婚敭
- * @return Param
- */
- public static Param getById(Long id) {
- return CacheUtil.get(PARAM_CACHE, PARAM_ID, id, () -> {
- R<Param> result = getSysClient().getParam(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇鍙傛暟閰嶇疆
- *
- * @param paramKey 鍙傛暟鍊�
- * @return String
- */
- public static String getValue(String paramKey) {
- return CacheUtil.get(PARAM_CACHE, PARAM_VALUE, paramKey, () -> {
- R<String> result = getSysClient().getParamValue(paramKey);
- return result.getData();
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/RegionCache.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/RegionCache.java
deleted file mode 100644
index 5f0990f..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/RegionCache.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.system.entity.Region;
-import org.springblade.system.feign.ISysClient;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 琛屾斂鍖哄垝缂撳瓨宸ュ叿绫�
- *
- * @author Chill
- */
-public class RegionCache {
- public static final int PROVINCE_LEVEL = 1;
- public static final int CITY_LEVEL = 2;
- public static final int DISTRICT_LEVEL = 3;
- public static final int TOWN_LEVEL = 4;
- public static final int VILLAGE_LEVEL = 5;
-
- private static final String REGION_CODE = "region:code:";
-
- private static ISysClient sysClient;
-
- private static ISysClient getSysClient() {
- if (sysClient == null) {
- sysClient = SpringUtil.getBean(ISysClient.class);
- }
- return sysClient;
- }
-
- /**
- * 鑾峰彇琛屾斂鍖哄垝瀹炰綋
- *
- * @param code 鍖哄垝缂栧彿
- * @return Param
- */
- public static Region getByCode(String code) {
- return CacheUtil.get(SYS_CACHE, REGION_CODE, code, () -> {
- R<Region> result = getSysClient().getRegion(code);
- return result.getData();
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java
deleted file mode 100644
index bf5b87a..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/cache/SysCache.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * 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.system.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.*;
-import org.springblade.system.feign.ISysClient;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 绯荤粺缂撳瓨
- *
- * @author Chill
- */
-public class SysCache {
- private static final String MENU_ID = "menu:id:";
- private static final String DEPT_ID = "dept:id:";
- private static final String DEPT_NAME = "dept:name:";
- private static final String DEPT_NAME_FUZZY = "dept:nameFuzzy:";
- private static final String DEPT_NAME_ID = "deptName:id:";
- private static final String DEPT_NAMES_ID = "deptNames:id:";
- private static final String DEPT_CHILD_ID = "deptChild:id:";
- private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:";
- private static final String POST_ID = "post:id:";
- private static final String POST_NAME = "post:name:";
- private static final String POST_NAME_FUZZY = "post:nameFuzzy:";
- private static final String POST_NAME_ID = "postName:id:";
- private static final String POST_NAMES_ID = "postNames:id:";
- private static final String ROLE_ID = "role:id:";
- private static final String ROLE_NAME = "role:name:";
- private static final String ROLE_NAME_ID = "roleName:id:";
- private static final String ROLE_NAMES_ID = "roleNames:id:";
- private static final String ROLE_ALIAS_ID = "roleAlias:id:";
- private static final String ROLE_ALIASES_ID = "roleAliases:id:";
- public static final String TENANT_ID = "tenant:id:";
- public static final String TENANT_TENANT_ID = "tenant:tenantId:";
- public static final String TENANT_PACKAGE_ID = "tenant:packageId:";
-
- private static ISysClient sysClient;
-
- private static ISysClient getSysClient() {
- if (sysClient == null) {
- sysClient = SpringUtil.getBean(ISysClient.class);
- }
- return sysClient;
- }
-
- /**
- * 鑾峰彇鑿滃崟
- *
- * @param id 涓婚敭
- * @return 鑿滃崟
- */
- public static Menu getMenu(Long id) {
- return CacheUtil.get(SYS_CACHE, MENU_ID, id, () -> {
- R<Menu> result = getSysClient().getMenu(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇閮ㄩ棬
- *
- * @param id 涓婚敭
- * @return 閮ㄩ棬
- */
- public static Dept getDept(Long id) {
- return CacheUtil.get(SYS_CACHE, DEPT_ID, id, () -> {
- R<Dept> result = getSysClient().getDept(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇閮ㄩ棬id
- *
- * @param tenantId 绉熸埛id
- * @param deptNames 閮ㄩ棬鍚�
- * @return 閮ㄩ棬id
- */
- public static String getDeptIds(String tenantId, String deptNames) {
- return CacheUtil.get(SYS_CACHE, DEPT_NAME, tenantId + StringPool.DASH + deptNames, () -> {
- R<String> result = getSysClient().getDeptIds(tenantId, deptNames);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇閮ㄩ棬id
- *
- * @param tenantId 绉熸埛id
- * @param deptNames 閮ㄩ棬鍚嶆ā绯婃煡璇�
- * @return 閮ㄩ棬id
- */
- public static String getDeptIdsByFuzzy(String tenantId, String deptNames) {
- return CacheUtil.get(SYS_CACHE, DEPT_NAME_FUZZY, tenantId + StringPool.DASH + deptNames, () -> {
- R<String> result = getSysClient().getDeptIdsByFuzzy(tenantId, deptNames);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇閮ㄩ棬鍚�
- *
- * @param id 涓婚敭
- * @return 閮ㄩ棬鍚�
- */
- public static String getDeptName(Long id) {
- return CacheUtil.get(SYS_CACHE, DEPT_NAME_ID, id, () -> {
- R<String> result = getSysClient().getDeptName(id);
- return result.getData();
- });
- }
-
-
- /**
- * 鑾峰彇閮ㄩ棬鍚嶉泦鍚�
- *
- * @param deptIds 涓婚敭闆嗗悎
- * @return 閮ㄩ棬鍚�
- */
- public static List<String> getDeptNames(String deptIds) {
- return CacheUtil.get(SYS_CACHE, DEPT_NAMES_ID, deptIds, () -> {
- R<List<String>> result = getSysClient().getDeptNames(deptIds);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛愰儴闂ㄩ泦鍚�
- *
- * @param deptId 涓婚敭
- * @return 瀛愰儴闂�
- */
- public static List<Dept> getDeptChild(Long deptId) {
- return CacheUtil.get(SYS_CACHE, DEPT_CHILD_ID, deptId, () -> {
- R<List<Dept>> result = getSysClient().getDeptChild(deptId);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瀛愰儴闂↖D闆嗗悎
- *
- * @param deptId 涓婚敭
- * @return 瀛愰儴闂↖D
- */
- public static List<Long> getDeptChildIds(Long deptId) {
- if (deptId == null) {
- return null;
- }
- List<Long> deptIdList = CacheUtil.get(SYS_CACHE, DEPT_CHILDIDS_ID, deptId, List.class);
- if (deptIdList == null) {
- deptIdList = new ArrayList<>();
- List<Dept> deptChild = getDeptChild(deptId);
- if (deptChild != null) {
- List<Long> collect = deptChild.stream().map(Dept::getId).collect(Collectors.toList());
- deptIdList.addAll(collect);
- }
- deptIdList.add(deptId);
- CacheUtil.put(SYS_CACHE, DEPT_CHILDIDS_ID, deptId, deptIdList);
- }
- return deptIdList;
- }
-
- /**
- * 鑾峰彇宀椾綅
- *
- * @param id 涓婚敭
- * @return
- */
- public static Post getPost(Long id) {
- return CacheUtil.get(SYS_CACHE, POST_ID, id, () -> {
- R<Post> result = getSysClient().getPost(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇宀椾綅id
- *
- * @param tenantId 绉熸埛id
- * @param postNames 宀椾綅鍚�
- * @return
- */
- public static String getPostIds(String tenantId, String postNames) {
- return CacheUtil.get(SYS_CACHE, POST_NAME, tenantId + StringPool.DASH + postNames, () -> {
- R<String> result = getSysClient().getPostIds(tenantId, postNames);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇宀椾綅id
- *
- * @param tenantId 绉熸埛id
- * @param postNames 宀椾綅鍚嶆ā绯婃煡璇�
- * @return
- */
- public static String getPostIdsByFuzzy(String tenantId, String postNames) {
- return CacheUtil.get(SYS_CACHE, POST_NAME_FUZZY, tenantId + StringPool.DASH + postNames, () -> {
- R<String> result = getSysClient().getPostIdsByFuzzy(tenantId, postNames);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇宀椾綅鍚�
- *
- * @param id 涓婚敭
- * @return 宀椾綅鍚�
- */
- public static String getPostName(Long id) {
- return CacheUtil.get(SYS_CACHE, POST_NAME_ID, id, () -> {
- R<String> result = getSysClient().getPostName(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇宀椾綅鍚嶉泦鍚�
- *
- * @param postIds 涓婚敭闆嗗悎
- * @return 宀椾綅鍚�
- */
- public static List<String> getPostNames(String postIds) {
- return CacheUtil.get(SYS_CACHE, POST_NAMES_ID, postIds, () -> {
- R<List<String>> result = getSysClient().getPostNames(postIds);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊
- *
- * @param id 涓婚敭
- * @return Role
- */
- public static Role getRole(Long id) {
- return CacheUtil.get(SYS_CACHE, ROLE_ID, id, () -> {
- R<Role> result = getSysClient().getRole(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊id
- *
- * @param tenantId 绉熸埛id
- * @param roleNames 瑙掕壊鍚�
- * @return
- */
- public static String getRoleIds(String tenantId, String roleNames) {
- return CacheUtil.get(SYS_CACHE, ROLE_NAME, tenantId + StringPool.DASH + roleNames, () -> {
- R<String> result = getSysClient().getRoleIds(tenantId, roleNames);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param id 涓婚敭
- * @return 瑙掕壊鍚�
- */
- public static String getRoleName(Long id) {
- return CacheUtil.get(SYS_CACHE, ROLE_NAME_ID, id, () -> {
- R<String> result = getSysClient().getRoleName(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊鍒悕
- *
- * @param id 涓婚敭
- * @return 瑙掕壊鍒悕
- */
- public static String getRoleAlias(Long id) {
- return CacheUtil.get(SYS_CACHE, ROLE_ALIAS_ID, id, () -> {
- R<String> result = getSysClient().getRoleAlias(id);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊鍚嶉泦鍚�
- *
- * @param roleIds 涓婚敭闆嗗悎
- * @return 瑙掕壊鍚�
- */
- public static List<String> getRoleNames(String roleIds) {
- return CacheUtil.get(SYS_CACHE, ROLE_NAMES_ID, roleIds, () -> {
- R<List<String>> result = getSysClient().getRoleNames(roleIds);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇瑙掕壊鍒悕闆嗗悎
- *
- * @param roleIds 涓婚敭闆嗗悎
- * @return 瑙掕壊鍒悕
- */
- public static List<String> getRoleAliases(String roleIds) {
- return CacheUtil.get(SYS_CACHE, ROLE_ALIASES_ID, roleIds, () -> {
- R<List<String>> result = getSysClient().getRoleAliases(roleIds);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇绉熸埛
- *
- * @param id 涓婚敭
- * @return Tenant
- */
- public static Tenant getTenant(Long id) {
- return CacheUtil.get(SYS_CACHE, TENANT_ID, id, () -> {
- R<Tenant> result = getSysClient().getTenant(id);
- return result.getData();
- }, Boolean.FALSE);
- }
-
- /**
- * 鑾峰彇绉熸埛
- *
- * @param tenantId 绉熸埛id
- * @return Tenant
- */
- public static Tenant getTenant(String tenantId) {
- return CacheUtil.get(SYS_CACHE, TENANT_TENANT_ID, tenantId, () -> {
- R<Tenant> result = getSysClient().getTenant(tenantId);
- return result.getData();
- }, Boolean.FALSE);
- }
-
- /**
- * 鑾峰彇绉熸埛浜у搧鍖�
- *
- * @param tenantId 绉熸埛id
- * @return Tenant
- */
- public static TenantPackage getTenantPackage(String tenantId) {
- return CacheUtil.get(SYS_CACHE, TENANT_PACKAGE_ID, tenantId, () -> {
- R<TenantPackage> result = getSysClient().getTenantPackage(tenantId);
- return result.getData();
- }, Boolean.FALSE);
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java
deleted file mode 100644
index 4b9009b..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/DeptDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Dept;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class DeptDTO extends Dept {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java
deleted file mode 100644
index 64d17eb..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/MenuDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-public class MenuDTO implements Serializable {
- private static final long serialVersionUID = 1L;
- private String alias;
- private String path;
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java
deleted file mode 100644
index aa7e9ff..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/ParamDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Param;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ParamDTO extends Param {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/PostDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/PostDTO.java
deleted file mode 100644
index 637900f..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/PostDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Post;
-
-/**
- * 宀椾綅琛ㄦ暟鎹紶杈撳璞″疄浣撶被
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class PostDTO extends Post {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java
deleted file mode 100644
index fdfbaa6..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Role;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class RoleDTO extends Role {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java
deleted file mode 100644
index ba2b219..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/dto/RoleMenuDTO.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.dto;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.RoleMenu;
-
-/**
- * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class RoleMenuDTO extends RoleMenu {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ApiScope.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ApiScope.java
deleted file mode 100644
index e996f5f..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ApiScope.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_auth_scope_api")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "ApiScope瀵硅薄", description = "ApiScope瀵硅薄")
-public class ApiScope extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鑿滃崟涓婚敭
- */
- @ApiModelProperty(value = "鑿滃崟涓婚敭")
- private Long menuId;
- /**
- * 璧勬簮缂栧彿
- */
- @ApiModelProperty(value = "璧勬簮缂栧彿")
- private String AutowiredCode;
- /**
- * 鎺ュ彛鏉冮檺鍚嶇О
- */
- @ApiModelProperty(value = "鎺ュ彛鏉冮檺鍚嶇О")
- private String scopeName;
- /**
- * 鎺ュ彛鏉冮檺瀛楁
- */
- @ApiModelProperty(value = "鎺ュ彛鏉冮檺瀛楁")
- private String scopePath;
- /**
- * 鎺ュ彛鏉冮檺绫诲瀷
- */
- @ApiModelProperty(value = "鎺ュ彛鏉冮檺绫诲瀷")
- private Integer scopeType;
- /**
- * 鎺ュ彛鏉冮檺澶囨敞
- */
- @ApiModelProperty(value = "鎺ュ彛鏉冮檺澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/AuthClient.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/AuthClient.java
deleted file mode 100644
index 1b6fa8f..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/AuthClient.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_sys_client")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Client瀵硅薄", description = "Client瀵硅薄")
-public class AuthClient extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 瀹㈡埛绔痠d
- */
- @ApiModelProperty(value = "瀹㈡埛绔痠d")
- private String clientId;
- /**
- * 瀹㈡埛绔瘑閽�
- */
- @ApiModelProperty(value = "瀹㈡埛绔瘑閽�")
- private String clientSecret;
- /**
- * 璧勬簮闆嗗悎
- */
- @ApiModelProperty(value = "璧勬簮闆嗗悎")
- private String AutowiredIds;
- /**
- * 鎺堟潈鑼冨洿
- */
- @ApiModelProperty(value = "鎺堟潈鑼冨洿")
- private String scope;
- /**
- * 鎺堟潈绫诲瀷
- */
- @ApiModelProperty(value = "鎺堟潈绫诲瀷")
- private String authorizedGrantTypes;
- /**
- * 鍥炶皟鍦板潃
- */
- @ApiModelProperty(value = "鍥炶皟鍦板潃")
- private String webServerRedirectUri;
- /**
- * 鏉冮檺
- */
- @ApiModelProperty(value = "鏉冮檺")
- private String authorities;
- /**
- * 浠ょ墝杩囨湡绉掓暟
- */
- @ApiModelProperty(value = "浠ょ墝杩囨湡绉掓暟")
- private Integer accessTokenValidity;
- /**
- * 鍒锋柊浠ょ墝杩囨湡绉掓暟
- */
- @ApiModelProperty(value = "鍒锋柊浠ょ墝杩囨湡绉掓暟")
- private Integer refreshTokenValidity;
- /**
- * 闄勫姞璇存槑
- */
- @JsonIgnore
- @ApiModelProperty(value = "闄勫姞璇存槑")
- private String additionalInformation;
- /**
- * 鑷姩鎺堟潈
- */
- @ApiModelProperty(value = "鑷姩鎺堟潈")
- private String autoapprove;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java
deleted file mode 100644
index 84a8acc..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.springblade.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Objects;
-
-/**
- * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)瀹炰綋绫�
- *
- * @author ldc
- * @since 2023-03-20 14:56:26
- */
-@Data
-@TableName("pl_sys_combination")
-@ApiModel(value = "Combination瀵硅薄", description = "Combination瀵硅薄")
-public class Combination implements Serializable {
- private static final long serialVersionUID = 905936175743821305L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 缁勫悎鍚嶇О
- */
- @ApiModelProperty(value = "缁勫悎鍚嶇О")
- private String name;
-
- /**
- * 鎻忚堪
- */
- @TableField("\"DESC\"")
- @ApiModelProperty(value = "鎻忚堪")
- private String desc;
-
- /**
- * 鍒涘缓鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "鍒涘缓鏃堕棿")
- private Date createTime;
-
- /**
- * 鍒涘缓浜�
- */
- @ApiModelProperty(value = "鍒涘缓浜�")
- private String createUser;
-
- /**
- * 淇敼鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "淇敼鏃堕棿")
- private Date updateTime;
-
- /**
- * 淇敼浜�
- */
- @ApiModelProperty(value = "淇敼浜�")
- private String updateUser;
-
- /**
- * 鎺堟潈浜�
- */
- @ApiModelProperty(value = "鎺堟潈浜�")
- private String licensors;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- Combination that = (Combination) o;
- return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(desc, that.desc) && Objects.equals(createTime, that.createTime) && Objects.equals(createUser, that.createUser) && Objects.equals(updateTime, that.updateTime) && Objects.equals(updateUser, that.updateUser) && Objects.equals(licensors, that.licensors);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, name, desc, createTime, createUser, updateTime, updateUser, licensors);
- }
-
-}
-
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/DataScope.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/DataScope.java
deleted file mode 100644
index c345f3a..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/DataScope.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_auth_scope_data")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DataScope瀵硅薄", description = "DataScope瀵硅薄")
-public class DataScope extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鑿滃崟涓婚敭
- */
- @ApiModelProperty(value = "鑿滃崟涓婚敭")
- private Long menuId;
- /**
- * 璧勬簮缂栧彿
- */
- @ApiModelProperty(value = "璧勬簮缂栧彿")
- private String AutowiredCode;
- /**
- * 鏁版嵁鏉冮檺鍚嶇О
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺鍚嶇О")
- private String scopeName;
- /**
- * 鏁版嵁鏉冮檺鍙瀛楁
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺鍙瀛楁")
- private String scopeField;
- /**
- * 鏁版嵁鏉冮檺绫诲悕
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺绫诲悕")
- private String scopeClass;
- /**
- * 鏁版嵁鏉冮檺瀛楁
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺瀛楁")
- private String scopeColumn;
- /**
- * 鏁版嵁鏉冮檺绫诲瀷
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺绫诲瀷")
- private Integer scopeType;
- /**
- * 鏁版嵁鏉冮檺鍊煎煙
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺鍊煎煙")
- private String scopeValue;
- /**
- * 鏁版嵁鏉冮檺澶囨敞
- */
- @ApiModelProperty(value = "鏁版嵁鏉冮檺澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
deleted file mode 100644
index 62d728b..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_dept")
-@ApiModel(value = "Dept瀵硅薄", description = "Dept瀵硅薄")
-public class Dept implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绉熸埛ID
- */
- @ApiModelProperty(value = "绉熸埛ID")
- private String tenantId;
-
- /**
- * 鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐖朵富閿�")
- private Long parentId;
-
- /**
- * 鏈烘瀯鍚�
- */
- @ApiModelProperty(value = "鏈烘瀯鍚�")
- private String deptName;
-
- /**
- * 鏈烘瀯鍏ㄧО
- */
- @ApiModelProperty(value = "閮ㄩ棬鍏ㄧО")
- private String fullName;
-
- /**
- * 绁栫骇鏈烘瀯涓婚敭
- */
- @ApiModelProperty(value = "绁栫骇鏈烘瀯涓婚敭")
- private String ancestors;
-
- /**
- * 鏈烘瀯绫诲瀷
- */
- @ApiModelProperty(value = "鏈烘瀯绫诲瀷")
- private Integer deptCategory;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java
deleted file mode 100644
index b0565f5..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Menu.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springblade.core.tool.utils.Func;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_menu")
-@ApiModel(value = "Menu瀵硅薄", description = "Menu瀵硅薄")
-public class Menu implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鑿滃崟鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鑿滃崟鐖朵富閿�")
- private Long parentId;
-
- /**
- * 鑿滃崟缂栧彿
- */
- @ApiModelProperty(value = "鑿滃崟缂栧彿")
- private String code;
-
- /**
- * 鑿滃崟鍚嶇О
- */
- @ApiModelProperty(value = "鑿滃崟鍚嶇О")
- private String name;
-
- /**
- * 鑿滃崟鍒悕
- */
- @ApiModelProperty(value = "鑿滃崟鍒悕")
- private String alias;
-
- /**
- * 璇锋眰鍦板潃
- */
- @ApiModelProperty(value = "璇锋眰鍦板潃")
- private String path;
-
- /**
- * 鑿滃崟璧勬簮
- */
- @ApiModelProperty(value = "鑿滃崟璧勬簮")
- private String source;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 鑿滃崟绫诲瀷
- */
- @ApiModelProperty(value = "鑿滃崟绫诲瀷")
- private Integer category;
-
- /**
- * 鎿嶄綔鎸夐挳绫诲瀷
- */
- @ApiModelProperty(value = "鎿嶄綔鎸夐挳绫诲瀷")
- private Integer action;
-
- /**
- * 鏄惁鎵撳紑鏂伴〉闈�
- */
- @ApiModelProperty(value = "鏄惁鎵撳紑鏂伴〉闈�")
- private Integer isOpen;
-
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- Menu other = (Menu) obj;
- if (Func.equals(this.getId(), other.getId())) {
- return true;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, parentId, code);
- }
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java
deleted file mode 100644
index c3474ea..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Param.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_oq_param")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Param瀵硅薄", description = "Param瀵硅薄")
-public class Param extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鍙傛暟鍚�
- */
- @ApiModelProperty(value = "鍙傛暟鍚�")
- private String paramName;
-
- /**
- * 鍙傛暟閿�
- */
- @ApiModelProperty(value = "鍙傛暟閿�")
- private String paramKey;
-
- /**
- * 鍙傛暟鍊�
- */
- @ApiModelProperty(value = "鍙傛暟鍊�")
- private String paramValue;
-
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Post.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Post.java
deleted file mode 100644
index f7910f5..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Post.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-/**
- * 宀椾綅琛ㄥ疄浣撶被
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_post")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Post瀵硅薄", description = "宀椾綅琛�")
-public class Post extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 绫诲瀷
- */
- @ApiModelProperty(value = "绫诲瀷")
- private Integer category;
- /**
- * 宀椾綅缂栧彿
- */
- @ApiModelProperty(value = "宀椾綅缂栧彿")
- private String postCode;
- /**
- * 宀椾綅鍚嶇О
- */
- @ApiModelProperty(value = "宀椾綅鍚嶇О")
- private String postName;
- /**
- * 宀椾綅鎺掑簭
- */
- @ApiModelProperty(value = "宀椾綅鎺掑簭")
- private Integer sort;
- /**
- * 宀椾綅鎻忚堪
- */
- @ApiModelProperty(value = "宀椾綅鎻忚堪")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Region.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Region.java
deleted file mode 100644
index 3ea3891..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Region.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 琛屾斂鍖哄垝琛ㄥ疄浣撶被
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_region")
-@ApiModel(value = "Region瀵硅薄", description = "琛屾斂鍖哄垝琛�")
-public class Region implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鍖哄垝缂栧彿
- */
- @TableId(value = "code", type = IdType.INPUT)
- @ApiModelProperty(value = "鍖哄垝缂栧彿")
- private String code;
- /**
- * 鐖跺尯鍒掔紪鍙�
- */
- @ApiModelProperty(value = "鐖跺尯鍒掔紪鍙�")
- private String parentCode;
- /**
- * 绁栧尯鍒掔紪鍙�
- */
- @ApiModelProperty(value = "绁栧尯鍒掔紪鍙�")
- private String ancestors;
- /**
- * 鍖哄垝鍚嶇О
- */
- @ApiModelProperty(value = "鍖哄垝鍚嶇О")
- private String name;
- /**
- * 鐪佺骇鍖哄垝缂栧彿
- */
- @ApiModelProperty(value = "鐪佺骇鍖哄垝缂栧彿")
- private String provinceCode;
- /**
- * 鐪佺骇鍚嶇О
- */
- @ApiModelProperty(value = "鐪佺骇鍚嶇О")
- private String provinceName;
- /**
- * 甯傜骇鍖哄垝缂栧彿
- */
- @ApiModelProperty(value = "甯傜骇鍖哄垝缂栧彿")
- private String cityCode;
- /**
- * 甯傜骇鍚嶇О
- */
- @ApiModelProperty(value = "甯傜骇鍚嶇О")
- private String cityName;
- /**
- * 鍖虹骇鍖哄垝缂栧彿
- */
- @ApiModelProperty(value = "鍖虹骇鍖哄垝缂栧彿")
- private String districtCode;
- /**
- * 鍖虹骇鍚嶇О
- */
- @ApiModelProperty(value = "鍖虹骇鍚嶇О")
- private String districtName;
- /**
- * 闀囩骇鍖哄垝缂栧彿
- */
- @ApiModelProperty(value = "闀囩骇鍖哄垝缂栧彿")
- private String townCode;
- /**
- * 闀囩骇鍚嶇О
- */
- @ApiModelProperty(value = "闀囩骇鍚嶇О")
- private String townName;
- /**
- * 鏉戠骇鍖哄垝缂栧彿
- */
- @ApiModelProperty(value = "鏉戠骇鍖哄垝缂栧彿")
- private String villageCode;
- /**
- * 鏉戠骇鍚嶇О
- */
- @ApiModelProperty(value = "鏉戠骇鍚嶇О")
- private String villageName;
- /**
- * 灞傜骇
- */
- @ApiModelProperty(value = "灞傜骇")
- private Integer regionLevel;
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java
deleted file mode 100644
index 7e49879..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-@TableName("pl_org_role")
-@ApiModel(value = "Role瀵硅薄", description = "Role瀵硅薄")
-public class Role implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绉熸埛ID
- */
- @ApiModelProperty(value = "绉熸埛ID")
- private String tenantId;
-
- /**
- * 鐖朵富閿�
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐖朵富閿�")
- private Long parentId;
-
- /**
- * 瑙掕壊鍚�
- */
- @ApiModelProperty(value = "瑙掕壊鍚�")
- private String roleName;
-
- /**
- * 鎺掑簭
- */
- @ApiModelProperty(value = "鎺掑簭")
- private Integer sort;
-
- /**
- * 瑙掕壊鍒悕
- */
- @ApiModelProperty(value = "瑙掕壊鍒悕")
- private String roleAlias;
-
- /**
- * 鏄惁宸插垹闄�
- */
- @TableLogic
- @ApiModelProperty(value = "鏄惁宸插垹闄�")
- private Integer isDeleted;
-
- public Role(String tenantId, Long parentId, String roleName, Integer sort, String roleAlias, Integer isDeleted) {
- this.tenantId = tenantId;
- this.parentId = parentId;
- this.roleName = roleName;
- this.sort = sort;
- this.roleAlias = roleAlias;
- this.isDeleted = isDeleted;
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java
deleted file mode 100644
index c985322..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleMenu.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@NoArgsConstructor
-@TableName("pl_org_role_menu")
-@ApiModel(value = "RoleMenu瀵硅薄", description = "RoleMenu瀵硅薄")
-public class RoleMenu implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鑿滃崟id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鑿滃崟id")
- private Long menuId;
-
- /**
- * 瑙掕壊id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "瑙掕壊id")
- private Long roleId;
-
- public RoleMenu(Long menuId, Long roleId) {
- this.menuId = menuId;
- this.roleId = roleId;
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleScope.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleScope.java
deleted file mode 100644
index 9ff3f50..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/RoleScope.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_auth_role_scope")
-@ApiModel(value = "RoleScope瀵硅薄", description = "RoleScope瀵硅薄")
-public class RoleScope implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鏉冮檺绫诲瀷
- */
- @ApiModelProperty(value = "鏉冮檺绫诲瀷")
- private Integer scopeCategory;
-
- /**
- * 鏉冮檺id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鏉冮檺id")
- private Long scopeId;
-
- /**
- * 瑙掕壊id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "瑙掕壊id")
- private Long roleId;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java
deleted file mode 100644
index 63aecd3..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package org.springblade.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Objects;
-
-/**
- * 瀵嗙爜绛栫暐(PlSysStrategy)瀹炰綋绫�
- *
- * @author ldc
- * @since 2023-03-20 15:00:22
- */
-@Data
-@TableName("pl_sys_strategy")
-@ApiModel(value = "Strategy瀵硅薄", description = "Strategy瀵硅薄")
-public class Strategy implements Serializable {
- private static final long serialVersionUID = 420195522547332354L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绛栫暐鍚嶇О
- */
- @ApiModelProperty(value = "绛栫暐鍚嶇О")
- private String strategyName;
-
- /**
- * 瀵嗙爜鏈�灏忛暱搴�
- */
- @ApiModelProperty(value = "瀵嗙爜鏈�灏忛暱搴�")
- private Long minPwdLen;
-
- /**
- * 瀵嗙爜鏈�澶ч暱搴�
- */
- @ApiModelProperty(value = "瀵嗙爜鏈�澶ч暱搴�")
- private Long maxPwdLen;
-
- /**
- * 瀵嗙爜缁勫悎鏂瑰紡
- */
- @ApiModelProperty(value = "瀵嗙爜缁勫悎鏂瑰紡")
- private String combinationIds;
-
- /**
- * 蹇呭~绉嶇被
- */
- @ApiModelProperty(value = "蹇呭~绉嶇被")
- private Long requiredType;
-
- /**
- * 杩囨湡鏃堕棿
- */
- @ApiModelProperty(value = "杩囨湡鏃堕棿")
- private Long expirationTime;
-
- /**
- * 鎻愰啋鏃堕棿
- */
- @ApiModelProperty(value = "鎻愰啋鏃堕棿")
- private Long reminderTime;
-
- /**
- * 閿佸畾娆℃暟
- */
- @ApiModelProperty(value = "閿佸畾娆℃暟")
- private Long lockingNum;
-
- /**
- * 閿佸畾鏃堕棿
- */
- @ApiModelProperty(value = "閿佸畾鏃堕棿")
- private Long lockingTime;
-
- /**
- * 鎻忚堪
- */
- @ApiModelProperty(value = "鎻忚堪")
- @TableField("\"DESC\"")
- private String desc;
-
- /**
- * 鏄惁涓洪粯璁ょ瓥鐣�
- */
- @ApiModelProperty(value = "鏄惁涓洪粯璁ょ瓥鐣�,鏄惁涓洪粯璁わ紝1浠h〃榛樿锛�0浠h〃闈為粯璁�")
- private Long isDefault;
-
- /**
- * 鍒涘缓鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "鍒涘缓鏃堕棿")
- private Date createTime;
-
- /**
- * 鍒涘缓浜�
- */
- @ApiModelProperty(value = "鍒涘缓浜�")
- private String createUser;
-
- /**
- * 淇敼鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "淇敼鏃堕棿")
- private Date updateTime;
-
- /**
- * 淇敼浜�
- */
- @ApiModelProperty(value = "淇敼浜�")
- private String updateUser;
-
- /**
- * 鎺堟潈浜�
- */
- @ApiModelProperty(value = "鎺堟潈浜�")
- private String licensors;
-
- /**
- * 缁勫悎鍚嶇О
- */
- @ApiModelProperty(value = "缁勫悎鍚嶇О")
- @TableField(exist = false)
- private String combinationNames;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- if (!super.equals(o)) {
- return false;
- }
- Strategy strategy = (Strategy) o;
- return Objects.equals(id, strategy.id) && Objects.equals(strategyName, strategy.strategyName) && Objects.equals(minPwdLen, strategy.minPwdLen) && Objects.equals(maxPwdLen, strategy.maxPwdLen) && Objects.equals(combinationIds, strategy.combinationIds) && Objects.equals(requiredType, strategy.requiredType) && Objects.equals(expirationTime, strategy.expirationTime) && Objects.equals(reminderTime, strategy.reminderTime) && Objects.equals(lockingNum, strategy.lockingNum) && Objects.equals(lockingTime, strategy.lockingTime) && Objects.equals(desc, strategy.desc) && Objects.equals(isDefault, strategy.isDefault);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(super.hashCode(), id, strategyName, minPwdLen, maxPwdLen, combinationIds, requiredType, expirationTime, reminderTime, lockingNum, lockingTime, desc, isDefault);
- }
-}
-
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
deleted file mode 100644
index 2822469..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.NullSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_tenant")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "Tenant瀵硅薄", description = "Tenant瀵硅薄")
-public class Tenant extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 绉熸埛ID
- */
- @ApiModelProperty(value = "绉熸埛ID")
- private String tenantId;
-
- /**
- * 绉熸埛鍏ㄧО
- */
- @ApiModelProperty(value = "绉熸埛鍏ㄧО")
- private String fullName;
-
- /**
- * 绉熸埛鍚嶇О
- */
- @ApiModelProperty(value = "绉熸埛鍚嶇О")
- private String tenantName;
- /**
- * 鍩熷悕鍦板潃
- */
- @ApiModelProperty(value = "鍩熷悕鍦板潃")
- private String domainUrl;
- /**
- * 绯荤粺鑳屾櫙
- */
- @ApiModelProperty(value = "绯荤粺鑳屾櫙")
- private String backgroundUrl;
- /**
- * 鑱旂郴浜�
- */
- @ApiModelProperty(value = "鑱旂郴浜�")
- private String linkman;
- /**
- * 鑱旂郴鐢佃瘽
- */
- @ApiModelProperty(value = "鑱旂郴鐢佃瘽")
- private String contactNumber;
- /**
- * 鑱旂郴鍦板潃
- */
- @ApiModelProperty(value = "鑱旂郴鍦板潃")
- private String address;
-
- /**
- * 浜у搧鍖匢D
- */
- @JsonSerialize(nullsUsing = NullSerializer.class)
- @ApiModelProperty(value = "浜у搧鍖匢D")
- private Long packageId;
- /**
- * 鏁版嵁婧怚D
- */
- @JsonSerialize(nullsUsing = NullSerializer.class)
- @ApiModelProperty(value = "鏁版嵁婧怚D")
- private Long datasourceId;
- /**
- * 鎺堟潈鐮�
- */
- @ApiModelProperty(value = "鎺堟潈鐮�")
- private String licenseKey;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TenantPackage.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TenantPackage.java
deleted file mode 100644
index 1164d5f..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TenantPackage.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.mp.base.BaseEntity;
-
-/**
- * 绉熸埛浜у搧琛ㄥ疄浣撶被
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_org_tenant_package")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "TenantPackage瀵硅薄", description = "绉熸埛浜у搧琛�")
-public class TenantPackage extends BaseEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 浜у搧鍖呭悕绉�
- */
- @ApiModelProperty(value = "浜у搧鍖呭悕绉�")
- private String packageName;
- /**
- * 鑿滃崟ID
- */
- @ApiModelProperty(value = "鑿滃崟ID")
- private String menuId;
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenu.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenu.java
deleted file mode 100644
index 069ee45..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenu.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.system.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-/**
- * 椤堕儴鑿滃崟琛ㄥ疄浣撶被
- *
- * @author BladeX
- */
-@Data
-@TableName("pl_sys_top_menu")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "TopMenu瀵硅薄", description = "椤堕儴鑿滃崟琛�")
-public class TopMenu extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 椤堕儴鑿滃崟缂栧彿
- */
- @ApiModelProperty(value = "椤堕儴鑿滃崟缂栧彿")
- private String code;
- /**
- * 椤堕儴鑿滃崟鍚�
- */
- @ApiModelProperty(value = "椤堕儴鑿滃崟鍚�")
- private String name;
- /**
- * 椤堕儴鑿滃崟璧勬簮
- */
- @ApiModelProperty(value = "椤堕儴鑿滃崟璧勬簮")
- private String source;
- /**
- * 椤堕儴鑿滃崟鎺掑簭
- */
- @ApiModelProperty(value = "椤堕儴鑿滃崟鎺掑簭")
- private Integer sort;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenuSetting.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenuSetting.java
deleted file mode 100644
index c8601d4..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/TopMenuSetting.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.springblade.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import lombok.Data;
-
-/**
- * TopMenuSetting
- *
- * @author Chill
- */
-@Data
-@TableName("pl_sys_top_menu_setting")
-public class TopMenuSetting {
-
- /**
- * 涓婚敭id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 椤堕儴鑿滃崟id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long topMenuId;
-
- /**
- * 鑿滃崟id
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long menuId;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java
deleted file mode 100644
index aefd34e..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.springblade.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-/**
- * (UserPwdStrtategy)瀹炰綋绫�
- *
- * @author makejava
- * @since 2023-03-20 14:59:29
- */
-
-@Data
-@NoArgsConstructor
-@TableName("pl_sys_user_pwdstrategy")
-@ApiModel(value = "UserPwdStrtategy", description = "UserPwdStrtategy")
-public class UserPwdstrategy implements Serializable {
-
- private static final long serialVersionUid = -556926788101426521L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "ID", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐢ㄦ埛id
- */
- @ApiModelProperty(value = "鐢ㄦ埛id")
- private Long userId;
-
- /**
- * 瀵嗙爜绛栫暐id
- */
- @ApiModelProperty(value = "瀵嗙爜绛栫暐id")
- @TableField(value = "PWDSTRATEGY_ID")
- private Long pwdstrategyId;
-
- public UserPwdstrategy(Long userId, Long pwdStrategyId) {
- this.userId = userId;
- this.pwdstrategyId = pwdStrategyId;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- UserPwdstrategy that = (UserPwdstrategy) o;
- return Objects.equals(id, that.id) && Objects.equals(userId, that.userId) && Objects.equals(pwdstrategyId, that.pwdstrategyId);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, userId, pwdstrategyId);
- }
-
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java
deleted file mode 100644
index 5a9a3e9..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.springblade.system.entity;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Objects;
-
-/**
- * (ValueRange)瀹炰綋绫�
- *
- * @author makejava
- * @since 2023-03-20 14:59:29
- */
-@Data
-@TableName("pl_sys_value_range")
-@ApiModel(value = "ValueRange", description = "ValueRange")
-public class ValueRange implements Serializable {
- private static final long serialVersionUID = -62275902377620042L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鍊�
- */
- @ApiModelProperty(value = "鍊�")
- private String value;
-
- /**
- * 缁勫悎鏂瑰紡ID
- */
- @ApiModelProperty(value = "缁勫悎鏂瑰紡ID")
- private Long combinationId;
-
- /**
- * 鍒涘缓鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "鍒涘缓鏃堕棿")
- private Date createTime;
-
- /**
- * 鍒涘缓浜�
- */
- @ApiModelProperty(value = "鍒涘缓浜�")
- private String createUser;
-
- /**
- * 淇敼鏃堕棿
- */
- @DateTimeFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @JsonFormat(
- pattern = "yyyy-MM-dd HH:mm:ss"
- )
- @ApiModelProperty(value = "淇敼鏃堕棿")
- private Date updateTime;
-
- /**
- * 淇敼浜�
- */
- @ApiModelProperty(value = "淇敼浜�")
- private String updateUser;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- if (!super.equals(o)) {
- return false;
- }
- ValueRange that = (ValueRange) o;
- return Objects.equals(id, that.id) && Objects.equals(value, that.value) && Objects.equals(combinationId, that.combinationId);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(super.hashCode(), id, value, combinationId);
- }
-}
-
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
deleted file mode 100644
index ce9daa5..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_SYSTEM_NAME,
- fallback = ISysClientFallback.class
-)
-public interface ISysClient {
-
- String API_PREFIX = "/client";
- String MENU = API_PREFIX + "/menu";
- String DEPT = API_PREFIX + "/dept";
- String DEPT_IDS = API_PREFIX + "/dept-ids";
- String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
- String DEPT_NAME = API_PREFIX + "/dept-name";
- String DEPT_NAMES = API_PREFIX + "/dept-names";
- String DEPT_CHILD = API_PREFIX + "/dept-child";
- String POST = API_PREFIX + "/post";
- String POST_IDS = API_PREFIX + "/post-ids";
- String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
- String POST_NAME = API_PREFIX + "/post-name";
- String POST_NAMES = API_PREFIX + "/post-names";
- String ROLE = API_PREFIX + "/role";
- String ROLE_IDS = API_PREFIX + "/role-ids";
- String ROLE_NAME = API_PREFIX + "/role-name";
- String ROLE_NAMES = API_PREFIX + "/role-names";
- String ROLE_ALIAS = API_PREFIX + "/role-alias";
- String ROLE_ALIASES = API_PREFIX + "/role-aliases";
- String TENANT = API_PREFIX + "/tenant";
- String TENANT_ID = API_PREFIX + "/tenant-id";
- //鏌ヨ瓒呯骇绠$悊鍛�
- String TENANT_MGR_ID = API_PREFIX + "/tenant-mgr-id";
- String TENANT_PACKAGE = API_PREFIX + "/tenant-package";
- String PARAM = API_PREFIX + "/param";
- String PARAM_VALUE = API_PREFIX + "/param-value";
- String REGION = API_PREFIX + "/region";
- String STRATEGY = API_PREFIX + "/query-tenantid-name";
- String STRATEGYBYID = API_PREFIX + "/query-userid";
- String REGEX = API_PREFIX + "/combination-regex";
- String REGEXONE = API_PREFIX + "/combination-regex-one";
- /**
- * 鑾峰彇鑿滃崟
- *
- * @param id 涓婚敭
- * @return Menu
- */
- @GetMapping(MENU)
- R<Menu> getMenu(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇閮ㄩ棬
- *
- * @param id 涓婚敭
- * @return Dept
- */
- @GetMapping(DEPT)
- R<Dept> getDept(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇閮ㄩ棬id
- *
- * @param tenantId 绉熸埛id
- * @param deptNames 閮ㄩ棬鍚�
- * @return 閮ㄩ棬id
- */
- @GetMapping(DEPT_IDS)
- R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
-
- /**
- * 鑾峰彇閮ㄩ棬id
- *
- * @param tenantId 绉熸埛id
- * @param deptNames 閮ㄩ棬鍚�
- * @return 閮ㄩ棬id
- */
- @GetMapping(DEPT_IDS_FUZZY)
- R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
-
- /**
- * 鑾峰彇閮ㄩ棬鍚�
- *
- * @param id 涓婚敭
- * @return 閮ㄩ棬鍚�
- */
- @GetMapping(DEPT_NAME)
- R<String> getDeptName(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇閮ㄩ棬鍚�
- *
- * @param deptIds 涓婚敭
- * @return
- */
- @GetMapping(DEPT_NAMES)
- R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
-
- /**
- * 鑾峰彇瀛愰儴闂↖D
- *
- * @param deptId
- * @return
- */
- @GetMapping(DEPT_CHILD)
- R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId);
-
- /**
- * 鑾峰彇宀椾綅
- *
- * @param id 涓婚敭
- * @return Post
- */
- @GetMapping(POST)
- R<Post> getPost(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇宀椾綅id
- *
- * @param tenantId 绉熸埛id
- * @param postNames 宀椾綅鍚�
- * @return 宀椾綅id
- */
- @GetMapping(POST_IDS)
- R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
-
- /**
- * 鑾峰彇宀椾綅id
- *
- * @param tenantId 绉熸埛id
- * @param postNames 宀椾綅鍚�
- * @return 宀椾綅id
- */
- @GetMapping(POST_IDS_FUZZY)
- R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
-
- /**
- * 鑾峰彇宀椾綅鍚�
- *
- * @param id 涓婚敭
- * @return 宀椾綅鍚�
- */
- @GetMapping(POST_NAME)
- R<String> getPostName(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇宀椾綅鍚�
- *
- * @param postIds 涓婚敭
- * @return
- */
- @GetMapping(POST_NAMES)
- R<List<String>> getPostNames(@RequestParam("postIds") String postIds);
-
- /**
- * 鑾峰彇瑙掕壊
- *
- * @param id 涓婚敭
- * @return Role
- */
- @GetMapping(ROLE)
- R<Role> getRole(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瑙掕壊id
- *
- * @param tenantId 绉熸埛id
- * @param roleNames 瑙掕壊鍚�
- * @return 瑙掕壊id
- */
- @GetMapping(ROLE_IDS)
- R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param id 涓婚敭
- * @return 瑙掕壊鍚�
- */
- @GetMapping(ROLE_NAME)
- R<String> getRoleName(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瑙掕壊鍒悕
- *
- * @param id 涓婚敭
- * @return 瑙掕壊鍒悕
- */
- @GetMapping(ROLE_ALIAS)
- R<String> getRoleAlias(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param roleIds 涓婚敭
- * @return
- */
- @GetMapping(ROLE_NAMES)
- R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
-
- /**
- * 鑾峰彇瑙掕壊鍒悕
- *
- * @param roleIds 涓婚敭
- * @return 瑙掕壊鍒悕
- */
- @GetMapping(ROLE_ALIASES)
- R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
-
- /**
- * 鑾峰彇绉熸埛
- *
- * @param id 涓婚敭
- * @return Tenant
- */
- @GetMapping(TENANT)
- R<Tenant> getTenant(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇绉熸埛
- *
- * @param tenantId 绉熸埛id
- * @return Tenant
- */
- @GetMapping(TENANT_ID)
- R<Tenant> getTenant(@RequestParam("tenantId") String tenantId);
-
- /**
- * 鑾峰彇绉熸埛浜у搧鍖�
- *
- * @param tenantId 绉熸埛id
- * @return Tenant
- */
- @GetMapping(TENANT_PACKAGE)
- R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId);
-
- /**
- * 鑾峰彇鍙傛暟
- *
- * @param id 涓婚敭
- * @return Param
- */
- @GetMapping(PARAM)
- R<Param> getParam(@RequestParam("id") Long id);
-
- /**
- * 鑾峰彇鍙傛暟閰嶇疆
- *
- * @param paramKey 鍙傛暟key
- * @return String
- */
- @GetMapping(PARAM_VALUE)
- R<String> getParamValue(@RequestParam("paramKey") String paramKey);
-
- /**
- * 鑾峰彇琛屾斂鍖哄垝
- *
- * @param code 涓婚敭
- * @return Region
- */
- @GetMapping(REGION)
- R<Region> getRegion(@RequestParam("code") String code);
-
- /**
- * 鏍规嵁绉熸埛id浠ュ強鐢ㄦ埛鍚嶈幏鍙栧瘑鐮佺瓥鐣�
- * @param tenantId
- * @param name
- * @return
- */
- @PostMapping(STRATEGY)
- R<Strategy> getByTenantIdAndName(@RequestParam("tenantId") String tenantId, @RequestParam("name") String name);
-
- /**
- * 鏍规嵁鐢ㄦ埛id鑾峰彇瀵嗙爜绛栫暐
- * @param userId
- * @return
- */
- @PostMapping(STRATEGYBYID)
- R<Strategy> getByUserId(@RequestParam("id") Long userId);
-
- /**
- * 鏍规嵁缁勫悎鏂瑰紡id鑾峰彇鍊�
- * @return
- */
- @PostMapping(REGEX)
- R<String> getRegex(@RequestBody List<String> combinationIds);
-
- /**
- * 鏍规嵁缁勫悎鏂瑰紡id鑾峰彇鍊�
- * @return
- */
- @PostMapping(REGEXONE)
- R<List<String>> getRegexByList(@RequestBody List<String> combinationIds);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
deleted file mode 100644
index 1b84a20..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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.system.feign;
-
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * Feign澶辫触閰嶇疆
- *
- * @author Chill
- */
-@Component
-public class ISysClientFallback implements ISysClient {
-
- @Override
- public R<Menu> getMenu(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Dept> getDept(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getDeptIds(String tenantId, String deptNames) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getDeptName(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<String>> getDeptNames(String deptIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<Dept>> getDeptChild(Long deptId) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Post> getPost(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getPostIds(String tenantId, String postNames) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getPostName(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<String>> getPostNames(String postIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Role> getRole(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getRoleIds(String tenantId, String roleNames) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getRoleName(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getRoleAlias(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<String>> getRoleNames(String roleIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<String>> getRoleAliases(String roleIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Tenant> getTenant(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Tenant> getTenant(String tenantId) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<TenantPackage> getTenantPackage(String tenantId) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Param> getParam(Long id) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getParamValue(String paramKey) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Region> getRegion(String code) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Strategy> getByTenantIdAndName(String tenantId, String name) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<Strategy> getByUserId(Long userId) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<String> getRegex(List<String> combinationIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
- @Override
- public R<List<String>> getRegexByList(List<String> combinationIds) {
- return R.fail("鑾峰彇鏁版嵁澶辫触");
- }
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ApiScopeVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ApiScopeVO.java
deleted file mode 100644
index c4ed3c1..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ApiScopeVO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.ApiScope;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "ApiScopeVO瀵硅薄", description = "ApiScopeVO瀵硅薄")
-public class ApiScopeVO extends ApiScope {
- private static final long serialVersionUID = 1L;
-
- /**
- * 瑙勫垯绫诲瀷鍚�
- */
- private String scopeTypeName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/CheckedTreeVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/CheckedTreeVO.java
deleted file mode 100644
index f9f199c..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/CheckedTreeVO.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.system.vo;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * CheckedTreeVO
- *
- * @author Chill
- */
-@Data
-public class CheckedTreeVO {
-
- private List<String> menu;
-
- private List<String> dataScope;
-
- private List<String> apiScope;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DataScopeVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DataScopeVO.java
deleted file mode 100644
index 6b3bf24..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DataScopeVO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.DataScope;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DataScopeVO瀵硅薄", description = "DataScopeVO瀵硅薄")
-public class DataScopeVO extends DataScope {
- private static final long serialVersionUID = 1L;
-
- /**
- * 瑙勫垯绫诲瀷鍚�
- */
- private String scopeTypeName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
deleted file mode 100644
index 04f5a5e..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.system.entity.Dept;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DeptVO瀵硅薄", description = "DeptVO瀵硅薄")
-public class DeptVO extends Dept implements INode<DeptVO> {
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<DeptVO> children;
-
- /**
- * 鏄惁鏈夊瓙瀛欒妭鐐�
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private Boolean hasChildren;
-
- @Override
- public List<DeptVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇鏈烘瀯
- */
- private String parentName;
-
- /**
- * 鏈烘瀯绫诲瀷鍚嶇О
- */
- private String deptCategoryName;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantTreeVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantTreeVO.java
deleted file mode 100644
index d36c98e..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantTreeVO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.vo;
-
-import lombok.Data;
-import org.springblade.core.tool.node.TreeNode;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * GrantTreeVO
- *
- * @author Chill
- */
-@Data
-public class GrantTreeVO implements Serializable {
- private static final long serialVersionUID = 1L;
-
- private List<TreeNode> menu;
-
- private List<TreeNode> dataScope;
-
- private List<TreeNode> apiScope;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantVO.java
deleted file mode 100644
index 4627b2d..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/GrantVO.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * GrantVO
- *
- * @author Chill
- */
-@Data
-public class GrantVO implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @ApiModelProperty(value = "roleIds闆嗗悎")
- private List<Long> roleIds;
-
- @ApiModelProperty(value = "menuIds闆嗗悎")
- private List<Long> menuIds;
-
- @ApiModelProperty(value = "topMenuIds闆嗗悎")
- private List<Long> topMenuIds;
-
- @ApiModelProperty(value = "dataScopeIds闆嗗悎")
- private List<Long> dataScopeIds;
-
- @ApiModelProperty(value = "apiScopeIds闆嗗悎")
- private List<Long> apiScopeIds;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java
deleted file mode 100644
index 6a1f717..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/MenuVO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.system.entity.Menu;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "MenuVO瀵硅薄", description = "MenuVO瀵硅薄")
-public class MenuVO extends Menu implements INode<MenuVO> {
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<MenuVO> children;
-
- /**
- * 鏄惁鏈夊瓙瀛欒妭鐐�
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private Boolean hasChildren;
-
- @Override
- public List<MenuVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇鑿滃崟
- */
- private String parentName;
-
- /**
- * 鑿滃崟绫诲瀷
- */
- private String categoryName;
-
- /**
- * 鎸夐挳鍔熻兘
- */
- private String actionName;
-
- /**
- * 鏄惁鏂扮獥鍙f墦寮�
- */
- private String isOpenName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java
deleted file mode 100644
index 0e8ff1a..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/ParamVO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Param;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "ParamVO瀵硅薄", description = "ParamVO瀵硅薄")
-public class ParamVO extends Param {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/PostVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/PostVO.java
deleted file mode 100644
index c39c335..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/PostVO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Post;
-
-/**
- * 宀椾綅琛ㄨ鍥惧疄浣撶被
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "PostVO瀵硅薄", description = "宀椾綅琛�")
-public class PostVO extends Post {
- private static final long serialVersionUID = 1L;
-
- /**
- * 宀椾綅鍒嗙被鍚�
- */
- private String categoryName;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RegionVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RegionVO.java
deleted file mode 100644
index af7047e..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RegionVO.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Region;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 琛屾斂鍖哄垝琛ㄨ鍥惧疄浣撶被
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "RegionVO瀵硅薄", description = "琛屾斂鍖哄垝琛�")
-public class RegionVO extends Region implements INode<RegionVO> {
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 鐖惰妭鐐瑰悕绉�
- */
- private String parentName;
-
- /**
- * 鏄惁鏈夊瓙瀛欒妭鐐�
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private Boolean hasChildren;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<RegionVO> children;
-
- @Override
- public Long getId() {
- return Func.toLong(this.getCode());
- }
-
- @Override
- public Long getParentId() {
- return Func.toLong(this.getParentCode());
- }
-
- @Override
- public List<RegionVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java
deleted file mode 100644
index 1d17232..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleMenuVO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.RoleMenu;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "RoleMenuVO瀵硅薄", description = "RoleMenuVO瀵硅薄")
-public class RoleMenuVO extends RoleMenu {
- private static final long serialVersionUID = 1L;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java
deleted file mode 100644
index b8040db..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/RoleVO.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.system.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tool.node.INode;
-import org.springblade.system.entity.Role;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "RoleVO瀵硅薄", description = "RoleVO瀵硅薄")
-public class RoleVO extends Role implements INode<RoleVO> {
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 鐖惰妭鐐笽D
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long parentId;
-
- /**
- * 瀛愬瓩鑺傜偣
- */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- private List<RoleVO> children;
-
- @Override
- public List<RoleVO> getChildren() {
- if (this.children == null) {
- this.children = new ArrayList<>();
- }
- return this.children;
- }
-
- /**
- * 涓婄骇瑙掕壊
- */
- private String parentName;
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java
deleted file mode 100644
index 313ecdb..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.Tenant;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "TenantVO瀵硅薄", description = "TenantVO瀵硅薄")
-public class TenantVO extends Tenant {
- private static final long serialVersionUID = 1L;
-
- /**
- * 鏄惁寮�鍚笁鍛�
- */
- private Integer ssaEnable;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java
deleted file mode 100644
index ba40eb1..0000000
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.springblade.system.vo;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.UserPwdstrategy;
-
-import java.util.List;
-
-/**
- * (UserPwdStrtategy)瀹炰綋绫�
- *
- * @author makejava
- * @since 2023-03-20 14:59:29
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "TenantVO瀵硅薄", description = "TenantVO瀵硅薄")
-public class UserPwdstrategyVO extends UserPwdstrategy {
-
- private static final long serialVersionUID = 336389756425054417L;
-
- @ApiModelProperty(value = "闇�瑕佷慨鏀规垨鑰呮柊澧炲瘑鐮佺瓥鐣ョ殑鐢ㄦ埛id")
- private List<Long> userIds;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/pom.xml b/Source/BladeX/blade-service-api/blade-user-api/pom.xml
deleted file mode 100644
index 9a13678..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/pom.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service-api</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-user-api</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-cache</artifactId>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/cache/UserCache.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/cache/UserCache.java
deleted file mode 100644
index 0504eb1..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/cache/UserCache.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.system.user.cache;
-
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.SpringUtil;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
-
-import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
-import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
-
-/**
- * 绯荤粺缂撳瓨
- *
- * @author Chill
- */
-public class UserCache {
- private static final String USER_CACHE_ID = "user:id:";
- private static final String USER_CACHE_ACCOUNT = "user:account:";
-
- private static IUserClient userClient;
-
- private static IUserClient getUserClient() {
- if (userClient == null) {
- userClient = SpringUtil.getBean(IUserClient.class);
- }
- return userClient;
- }
-
- /**
- * 鏍规嵁浠诲姟鐢ㄦ埛id鑾峰彇鐢ㄦ埛淇℃伅
- *
- * @param taskUserId 浠诲姟鐢ㄦ埛id
- * @return
- */
- public static User getUserByTaskUser(String taskUserId) {
- Long userId = Func.toLong(StringUtil.removePrefix(taskUserId, TASK_USR_PREFIX));
- return getUser(userId);
- }
-
- /**
- * 鑾峰彇鐢ㄦ埛
- *
- * @param userId 鐢ㄦ埛id
- * @return
- */
- public static User getUser(Long userId) {
- return CacheUtil.get(USER_CACHE, USER_CACHE_ID, userId, () -> {
- R<User> result = getUserClient().userInfoById(userId);
- return result.getData();
- });
- }
-
- /**
- * 鑾峰彇鐢ㄦ埛
- *
- * @param tenantId 绉熸埛id
- * @param account 璐﹀彿鍚�
- * @return
- */
- public static User getUser(String tenantId, String account) {
- return CacheUtil.get(USER_CACHE, USER_CACHE_ACCOUNT, tenantId + StringPool.DASH + account, () -> {
- R<User> result = getUserClient().userByAccount(tenantId, account);
- return result.getData();
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java
deleted file mode 100644
index b04494c..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.core.tenant.mp.TenantEntity;
-
-import java.util.Date;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user")
-@EqualsAndHashCode(callSuper = true)
-public class User extends TenantEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 鐢ㄦ埛缂栧彿
- */
- private String code;
- /**
- * 鐢ㄦ埛骞冲彴
- */
- private Integer userType;
- /**
- * 璐﹀彿
- */
- private String account;
- /**
- * 瀵嗙爜
- */
- private String password;
- /**
- * 鏄电О
- */
- private String name;
- /**
- * 鐪熷悕
- */
- private String realName;
- /**
- * 澶村儚
- */
- private String avatar;
- /**
- * 閭
- */
- private String email;
- /**
- * 鎵嬫満
- */
- private String phone;
- /**
- * 鐢熸棩
- */
- private Date birthday;
- /**
- * 鎬у埆
- */
- private Integer sex;
- /**
- * 瑙掕壊id
- */
- private String roleId;
- /**
- * 閮ㄩ棬id
- */
- private String deptId;
- /**
- * 瀵嗙爜绛栫暐
- */
- @TableField(exist = false)
- private String pwdStrategy;
- /**
- * 宀椾綅id
- */
- private String postId;
- /**
- * 瀵嗙爜淇敼鏃堕棿
- */
- private Date pwdUpdateTime;
- /**
- * 鐢ㄦ埛瀵嗙骇
- */
- private String secretgrade;
- /**
- * 瀵嗙爜绛栫暐淇敼鐘舵��
- */
- private Long strategyUpdateStatus;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserApp.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserApp.java
deleted file mode 100644
index 1f3cd56..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserApp.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user_app")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "UserApp瀵硅薄", description = "UserApp瀵硅薄")
-public class UserApp extends Model<UserApp> {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐢ㄦ埛ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐢ㄦ埛ID")
- private Long userId;
-
- /**
- * 鐢ㄦ埛鎷撳睍淇℃伅
- */
- @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
- private String userExt;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserDept.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserDept.java
deleted file mode 100644
index ec77cc8..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserDept.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user_dept")
-@ApiModel(value = "UserDept瀵硅薄", description = "UserDept瀵硅薄")
-public class UserDept implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐢ㄦ埛ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐢ㄦ埛ID")
- private Long userId;
-
- /**
- * 閮ㄩ棬ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "閮ㄩ棬ID")
- private Long deptId;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java
deleted file mode 100644
index 98063fa..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserInfo.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springblade.core.tool.support.Kv;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 鐢ㄦ埛淇℃伅
- *
- * @author Chill
- */
-@Data
-@ApiModel(description = "鐢ㄦ埛淇℃伅")
-public class UserInfo implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 绗笁鏂规巿鏉僫d
- */
- @ApiModelProperty(value = "绗笁鏂规巿鏉僫d")
- private String oauthId;
-
- /**
- * 鐢ㄦ埛鍩虹淇℃伅
- */
- @ApiModelProperty(value = "鐢ㄦ埛")
- private User user;
-
- /**
- * 鎷撳睍淇℃伅
- */
- @ApiModelProperty(value = "鎷撳睍淇℃伅")
- private Kv detail;
-
- /**
- * 鏉冮檺鏍囪瘑闆嗗悎
- */
- @ApiModelProperty(value = "鏉冮檺闆嗗悎")
- private List<String> permissions;
-
- /**
- * 瑙掕壊闆嗗悎
- */
- @ApiModelProperty(value = "瑙掕壊闆嗗悎")
- private List<String> roles;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOauth.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOauth.java
deleted file mode 100644
index 533ae6e..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOauth.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user_oauth")
-public class UserOauth implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 绉熸埛ID
- */
- private String tenantId;
-
- /**
- * 绗笁鏂圭郴缁熺敤鎴稩D
- */
- private String uuid;
-
- /**
- * 鐢ㄦ埛ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
- private Long userId;
-
- /**
- * 鐢ㄦ埛鍚�
- */
- private String username;
- /**
- * 鐢ㄦ埛鏄电О
- */
- private String nickname;
- /**
- * 鐢ㄦ埛澶村儚
- */
- private String avatar;
- /**
- * 鐢ㄦ埛缃戝潃
- */
- private String blog;
- /**
- * 鎵�鍦ㄥ叕鍙�
- */
- private String company;
- /**
- * 浣嶇疆
- */
- private String location;
- /**
- * 鐢ㄦ埛閭
- */
- private String email;
- /**
- * 鐢ㄦ埛澶囨敞锛堝悇骞冲彴涓殑鐢ㄦ埛涓汉浠嬬粛锛�
- */
- private String remark;
- /**
- * 鎬у埆
- */
- private String gender;
- /**
- * 鐢ㄦ埛鏉ユ簮
- */
- private String source;
-
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOther.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOther.java
deleted file mode 100644
index c64d4e2..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserOther.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user_other")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "UserOther瀵硅薄", description = "UserOther瀵硅薄")
-public class UserOther extends Model<UserOther> {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐢ㄦ埛ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐢ㄦ埛ID")
- private Long userId;
-
- /**
- * 鐢ㄦ埛鎷撳睍淇℃伅
- */
- @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
- private String userExt;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserWeb.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserWeb.java
deleted file mode 100644
index bb91a71..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/UserWeb.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.user.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_org_user_web")
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "UserWeb瀵硅薄", description = "UserWeb瀵硅薄")
-public class UserWeb extends Model<UserWeb> {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "涓婚敭")
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
-
- /**
- * 鐢ㄦ埛ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- @ApiModelProperty(value = "鐢ㄦ埛ID")
- private Long userId;
-
- /**
- * 鐢ㄦ埛鎷撳睍淇℃伅
- */
- @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
- private String userExt;
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java
deleted file mode 100644
index 3626e4b..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/enums/UserEnum.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.system.user.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 鐢ㄦ埛绫诲瀷鏋氫妇
- *
- * @author Chill
- */
-@Getter
-@AllArgsConstructor
-public enum UserEnum {
-
- /**
- * web
- */
- WEB("web", 1),
-
- /**
- * app
- */
- APP("app", 2),
-
- /**
- * other
- */
- OTHER("other", 3),
- ;
-
- final String name;
- final int category;
-
- /**
- * 鍖归厤鏋氫妇鍊�
- *
- * @param name 鍚嶇О
- * @return BladeUserEnum
- */
- public static UserEnum of(String name) {
- if (name == null) {
- return null;
- }
- UserEnum[] values = UserEnum.values();
- for (UserEnum smsEnum : values) {
- if (smsEnum.name.equals(name)) {
- return smsEnum;
- }
- }
- return null;
- }
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
deleted file mode 100644
index 8a412cc..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * 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.system.user.feign;
-
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.entity.UserInfo;
-import org.springblade.system.user.entity.UserOauth;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * User Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_USER_NAME
-)
-public interface IUserClient {
-
- String API_PREFIX = "/client";
- String USER_INFO = API_PREFIX + "/user-info";
- String USER_INFO_BY_TYPE = API_PREFIX + "/user-info-by-type";
- String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id";
- String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account";
- String USER_AUTH_INFO = API_PREFIX + "/user-auth-info";
- String SAVE_USER = API_PREFIX + "/save-user";
- String SAVE_USER_LIST = API_PREFIX + "/save-user-list";
- String REMOVE_USER = API_PREFIX + "/remove-user";
- String UPDATE_USER = API_PREFIX+"/update-user";
-
- /**
- * 鑾峰彇鐢ㄦ埛淇℃伅
- *
- * @param userId 鐢ㄦ埛id
- * @return
- */
- @GetMapping(USER_INFO_BY_ID)
- R<User> userInfoById(@RequestParam("userId") Long userId);
-
- /**
- * 鏍规嵁璐﹀彿鑾峰彇鐢ㄦ埛淇℃伅
- *
- * @param tenantId 绉熸埛id
- * @param account 璐﹀彿
- * @return
- */
- @GetMapping(USER_INFO_BY_ACCOUNT)
- R<User> userByAccount(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account);
-
- /**
- * 鑾峰彇鐢ㄦ埛淇℃伅
- *
- * @param tenantId 绉熸埛ID
- * @param account 璐﹀彿
- * @return
- */
- @GetMapping(USER_INFO)
- R<UserInfo> userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account);
-
- /**
- * 鑾峰彇鐢ㄦ埛淇℃伅
- *
- * @param tenantId 绉熸埛ID
- * @param account 璐﹀彿
- * @param userType 鐢ㄦ埛骞冲彴
- * @return
- */
- @GetMapping(USER_INFO_BY_TYPE)
- R<UserInfo> userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account, @RequestParam("userType") String userType);
-
- /**
- * 鑾峰彇绗笁鏂瑰钩鍙颁俊鎭�
- *
- * @param userOauth 绗笁鏂规巿鏉冪敤鎴蜂俊鎭�
- * @return UserInfo
- */
- @PostMapping(USER_AUTH_INFO)
- R<UserInfo> userAuthInfo(@RequestBody UserOauth userOauth);
-
- /**
- * 鏂板缓鐢ㄦ埛
- *
- * @param user 鐢ㄦ埛瀹炰綋
- * @return
- */
- @PostMapping(SAVE_USER)
- R<Boolean> saveUser(@RequestBody User user);
-
- /**
- * 鏂板缓澶氫釜鐢ㄦ埛
- * @param users
- * @return
- */
- @PostMapping(SAVE_USER_LIST)
- R<Boolean> saveUserList(@RequestBody List<User> users);
-
- /**
- * 鍒犻櫎鐢ㄦ埛
- *
- * @param tenantIds 绉熸埛id闆嗗悎
- * @return
- */
- @PostMapping(REMOVE_USER)
- R<Boolean> removeUser(@RequestParam("tenantIds") String tenantIds);
-
- /**
- * 淇敼鐢ㄦ埛鍩虹淇℃伅
- * @param user
- * @return
- */
- @PostMapping(UPDATE_USER)
- R<Boolean> updateUser(@RequestBody User user);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserSearchClient.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserSearchClient.java
deleted file mode 100644
index 52aa418..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserSearchClient.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.system.user.feign;
-
-
-import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.user.entity.User;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * User Search Feign鎺ュ彛绫�
- *
- * @author Chill
- */
-@FeignClient(
- value = AppConstant.APPLICATION_USER_NAME
-)
-public interface IUserSearchClient {
-
- String API_PREFIX = "/client";
- String LIST_BY_USER = API_PREFIX + "/user/list-by-user";
- String LIST_BY_DEPT = API_PREFIX + "/user/list-by-dept";
- String LIST_BY_POST = API_PREFIX + "/user/list-by-post";
- String LIST_BY_ROLE = API_PREFIX + "/user/list-by-role";
-
- /**
- * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param userId 鐢ㄦ埛ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- @GetMapping(LIST_BY_USER)
- R<List<User>> listByUser(@RequestParam("userId") String userId);
-
- /**
- * 鏍规嵁閮ㄩ棬ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param deptId 閮ㄩ棬ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- @GetMapping(LIST_BY_DEPT)
- R<List<User>> listByDept(@RequestParam("deptId") String deptId);
-
- /**
- * 鏍规嵁宀椾綅ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param postId 宀椾綅ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- @GetMapping(LIST_BY_POST)
- R<List<User>> listByPost(@RequestParam("postId") String postId);
-
- /**
- * 鏍规嵁瑙掕壊ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param roleId 瑙掕壊ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- @GetMapping(LIST_BY_ROLE)
- R<List<User>> listByRole(@RequestParam("roleId") String roleId);
-
-}
diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java
deleted file mode 100644
index 37d46b2..0000000
--- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/UserVO.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.system.user.vo;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.system.user.entity.User;
-
-/**
- * 瑙嗗浘瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "UserVO瀵硅薄", description = "UserVO瀵硅薄")
-public class UserVO extends User {
- private static final long serialVersionUID = 1L;
-
- /**
- * 涓婚敭ID
- */
- @JsonSerialize(using = ToStringSerializer.class)
- private Long id;
-
- /**
- * 瀵嗙爜
- */
- @JsonIgnore
- private String password;
-
- /**
- * 瀵嗙爜绛栫暐
- */
- private String pwdStrategy;
-
- /**
- * 绉熸埛鍚�
- */
- private String tenantName;
-
- /**
- * 鐢ㄦ埛骞冲彴鍚�
- */
- private String userTypeName;
-
- /**
- * 瑙掕壊鍚�
- */
- private String roleName;
-
- /**
- * 閮ㄩ棬鍚�
- */
- private String deptName;
-
- /**
- * 宀椾綅鍚�
- */
- private String postName;
-
- /**
- * 鎬у埆
- */
- private String sexName;
-
- /**
- * 鎷撳睍淇℃伅
- */
- private String userExt;
-
-}
diff --git a/Source/BladeX/blade-service-api/pom.xml b/Source/BladeX/blade-service-api/pom.xml
deleted file mode 100644
index effd0cb..0000000
--- a/Source/BladeX/blade-service-api/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>UBCS</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-service-api</artifactId>
- <name>${project.artifactId}</name>
- <version>3.0.1.RELEASE</version>
- <packaging>pom</packaging>
- <description>BladeX 寰湇鍔PI闆嗗悎</description>
-
- <modules>
- <module>blade-desk-api</module>
- <module>blade-dict-api</module>
- <module>blade-scope-api</module>
- <module>blade-system-api</module>
- <module>blade-user-api</module>
- <module>blade-code-api</module>
- <module>blade-omd-api</module>
- </modules>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-mybatis</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-tenant</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-openfeign</artifactId>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <exclusions>
- <exclusion>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-models</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-models</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-auto</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- <finalName>${project.name}</finalName>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-service/blade-code/pom.xml b/Source/BladeX/blade-service/blade-code/pom.xml
deleted file mode 100644
index 3e1fab2..0000000
--- a/Source/BladeX/blade-service/blade-code/pom.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?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>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </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
deleted file mode 100644
index 8b4151e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/CodeApplication.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.common.constant.CommonConstant;
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-/**
- * Code鍚姩鍣�
- *
- * @author ludc
- */
-@BladeCloudApplication
-@ComponentScan({"com.vci.*"})
-@EnableScheduling
-@EnableCaching
-public class CodeApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_NAME_PREFIX+ CommonConstant.CODE_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
deleted file mode 100644
index ca8619c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingClassSyncScheduling.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.springblade.code.Scheduling;
-
-
-import com.vci.starter.web.enumpck.BooleanEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.service.CodeDuckingSyncServiceI;
-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
deleted file mode 100644
index 01c6d4b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingDataSyncScheduling.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.springblade.code.Scheduling;
-
-import com.vci.starter.web.enumpck.BooleanEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.service.CodeDuckingSyncServiceI;
-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
deleted file mode 100644
index 6529118..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/Scheduling/DockingScheduling.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.springblade.code.Scheduling;
-
-
-import com.vci.starter.web.enumpck.BooleanEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.service.CodeDuckingServiceI;
-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
deleted file mode 100644
index 10aeb67..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/algorithm/CustomSerialAlgorithmExample.java
+++ /dev/null
@@ -1,20 +0,0 @@
-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
deleted file mode 100644
index b0dc7bd..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMap.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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
deleted file mode 100644
index a8d54f9..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmIntegrationMapMethod.java
+++ /dev/null
@@ -1,24 +0,0 @@
-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
deleted file mode 100644
index 138a7d3..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithm.java
+++ /dev/null
@@ -1,37 +0,0 @@
-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
deleted file mode 100644
index 1603394..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/annotation/MdmSerialAlgorithmMethod.java
+++ /dev/null
@@ -1,23 +0,0 @@
-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
deleted file mode 100644
index df3ad1a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmBtmTypeConstant.java
+++ /dev/null
@@ -1,169 +0,0 @@
-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
deleted file mode 100644
index a2f8716..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmDuckingConstant.java
+++ /dev/null
@@ -1,146 +0,0 @@
-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
deleted file mode 100644
index 5c9e830..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEngineConstant.java
+++ /dev/null
@@ -1,105 +0,0 @@
-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
deleted file mode 100644
index 5e35fbb..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmEnumIdConstant.java
+++ /dev/null
@@ -1,78 +0,0 @@
-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
deleted file mode 100644
index 4d6b216..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLifeCycleConstant.java
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 1209f4a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/constant/MdmLinkTypeConstant.java
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index bb6c769..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeApplySyncController.java
+++ /dev/null
@@ -1,169 +0,0 @@
-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.starter.web.annotation.controller.VciUnCheckRight;
-import com.vci.starter.web.annotation.controller.VciUnUseResponseAdvice;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.dto.datapush.result.ResultJsonDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeDataDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeObjectDTO;
-import org.springblade.code.service.UniversalInterfaceI;
-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
deleted file mode 100644
index acd9f74..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeBasicSecController.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.springblade.code.controller;
-
-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.springblade.code.dto.CodeBasicSecDTO;
-import org.springblade.code.service.CodeBasicSecServiceI;
-import org.springblade.code.vo.pagemodel.CodeBasicSecVO;
-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
deleted file mode 100644
index d3b6f49..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeButtonController.java
+++ /dev/null
@@ -1,136 +0,0 @@
-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.CodeButtonDTO;
-import org.springblade.code.service.CodeButtonServiceI;
-import org.springblade.code.vo.pagemodel.CodeButtonVO;
-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
deleted file mode 100644
index 233f74a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyController.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package org.springblade.code.controller;
-
-
-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.lang.StringUtils;
-import org.springblade.code.dto.CodeClassifyDTO;
-import org.springblade.code.service.CodeClassifyServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-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
deleted file mode 100644
index c56f24a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyProcessTempController.java
+++ /dev/null
@@ -1,129 +0,0 @@
-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.CodeClassifyProcessTempDTO;
-import org.springblade.code.service.CodeClassifyProcessTempServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyProcessTempVO;
-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
deleted file mode 100644
index 6aa3cbc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTempMapItemController.java
+++ /dev/null
@@ -1,116 +0,0 @@
-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.CodeClassifyTempMapItemDTO;
-import org.springblade.code.service.CodeClassifyTempMapItemServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTempMapItemVO;
-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
deleted file mode 100644
index 4a450af..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateAttrController.java
+++ /dev/null
@@ -1,165 +0,0 @@
-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 com.vci.web.pageModel.OsBtmTypeAttributeVO;
-import org.springblade.code.dto.CodeClassifyTemplateAttrDTO;
-import org.springblade.code.service.CodeClassifyTemplateAttrServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-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
deleted file mode 100644
index dbb63b0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateButtonController.java
+++ /dev/null
@@ -1,114 +0,0 @@
-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.CodeClassifyTemplateButtonDTO;
-import org.springblade.code.service.CodeClassifyTemplateButtonServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
-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
deleted file mode 100644
index f36d86d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateController.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.springblade.code.controller;
-
-import com.vci.starter.web.pagemodel.*;
-import com.vci.starter.web.util.VciBaseUtil;
-import org.springblade.code.dto.CodeClassifyTemplateDTO;
-import org.springblade.code.lifecycle.CodeClassifyTemplateLC;
-import org.springblade.code.service.CodeClassifyTemplateServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-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
deleted file mode 100644
index 3a24513..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyTemplateMapController.java
+++ /dev/null
@@ -1,116 +0,0 @@
-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.CodeClassifyTemplateMapDTO;
-import org.springblade.code.service.CodeClassifyTemplateMapServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateMapVO;
-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
deleted file mode 100644
index 1fbb15b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeClassifyValueController.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.springblade.code.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-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.springblade.code.dto.CodeClassifyValueDTO;
-import org.springblade.code.service.CodeClassifyValueServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyValueVO;
-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
deleted file mode 100644
index 03343df..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeDuckingController.java
+++ /dev/null
@@ -1,294 +0,0 @@
-package org.springblade.code.controller;
-
-
-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.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.dto.DockingPreApplyDataDTO;
-import org.springblade.code.dto.DockingPreAttrMappingDTO;
-import org.springblade.code.dto.PreApplyCodeOrderDTO;
-import org.springblade.code.model.DockingDataDO;
-import org.springblade.code.model.DockingLogeDO;
-import org.springblade.code.model.DockingTaskDO;
-import org.springblade.code.model.SysIntHeaderDO;
-import org.springblade.code.service.CodeDuckingServiceI;
-import org.springblade.code.service.CodeDuckingSyncServiceI;
-import org.springblade.code.service.DockingPreApplyDataServiceI;
-import org.springblade.code.service.DockingPreAttrMappingSeviceI;
-import org.springblade.code.vo.pagemodel.DockingPreApplyDataVO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrMappingVO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrRangeVO;
-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 org.springblade.code.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
deleted file mode 100644
index 1dfa8ae..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeFixedValueController.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.springblade.code.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-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.CodeFixedValueDTO;
-import org.springblade.code.service.CodeFixedValueServiceI;
-import org.springblade.code.vo.pagemodel.CodeFixedValueVO;
-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
deleted file mode 100644
index 3e07fee..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeKeyAttrRepeatRuleController.java
+++ /dev/null
@@ -1,115 +0,0 @@
-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.service.CodeKeyAttrRepeatRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
-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
deleted file mode 100644
index ab3efc0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodePhaseAttrController.java
+++ /dev/null
@@ -1,115 +0,0 @@
-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.CodePhaseAttrDTO;
-import org.springblade.code.service.CodePhaseAttrServiceI;
-import org.springblade.code.vo.pagemodel.CodePhaseAttrVO;
-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
deleted file mode 100644
index 4365759..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeResembleRuleController.java
+++ /dev/null
@@ -1,115 +0,0 @@
-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.CodeResembleRuleDTO;
-import org.springblade.code.service.CodeResembleRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeResembleRuleVO;
-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
deleted file mode 100644
index f009539..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeRuleController.java
+++ /dev/null
@@ -1,167 +0,0 @@
-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.CodeRuleDTO;
-import org.springblade.code.service.CodeRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-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
deleted file mode 100644
index ff58b66..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSerialAlgorithmController.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.springblade.code.controller;
-
-
-import com.vci.starter.web.pagemodel.DataGrid;
-import org.springblade.code.service.CodeSerialAlgorithmServiceI;
-import org.springblade.code.vo.pagemodel.CodeSerialAlgorithmVO;
-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
deleted file mode 100644
index bb59f9c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeSynonymController.java
+++ /dev/null
@@ -1,116 +0,0 @@
-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.CodeSynonymDTO;
-import org.springblade.code.service.CodeSynonymServiceI;
-import org.springblade.code.vo.pagemodel.CodeSynonymVO;
-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
deleted file mode 100644
index 0a937f5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/controller/CodeTemplatePhaseController.java
+++ /dev/null
@@ -1,138 +0,0 @@
-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.CodeTemplatePhaseDTO;
-import org.springblade.code.service.CodeTemplatePhaseServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeTemplatePhaseVO;
-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
deleted file mode 100644
index baeadd4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeAllCodeDaoI.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.CodeAllCodeDO;
-
-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
deleted file mode 100644
index 3c60430..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeBasicSecDaoI.java
+++ /dev/null
@@ -1,148 +0,0 @@
-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.CodeBasicSecDO;
-
-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
deleted file mode 100644
index c943971..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeButtonDaoI.java
+++ /dev/null
@@ -1,142 +0,0 @@
-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.CodeButtonDO;
-
-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
deleted file mode 100644
index 1b89f08..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyDaoI.java
+++ /dev/null
@@ -1,232 +0,0 @@
-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.CodeClassifyDO;
-
-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
deleted file mode 100644
index 41b4169..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyProcessTempDaoI.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.CodeClassifyProcessTempDO;
-
-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
deleted file mode 100644
index b310840..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTempMapItemDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.CodeClassifyTempMapItemDO;
-
-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
deleted file mode 100644
index 0b3b07c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateAttrDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.CodeClassifyTemplateAttrDO;
-
-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
deleted file mode 100644
index 2061b54..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateButtonDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.CodeClassifyTemplateButtonDO;
-
-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
deleted file mode 100644
index 7631fc2..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateDaoI.java
+++ /dev/null
@@ -1,170 +0,0 @@
-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.CodeClassifyTemplateDO;
-
-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
deleted file mode 100644
index 6c9b9f9..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyTemplateMapDaoI.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.CodeClassifyTemplateMapDO;
-
-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
deleted file mode 100644
index c493bb4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeClassifyValueDaoI.java
+++ /dev/null
@@ -1,147 +0,0 @@
-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.CodeClassifyValueDO;
-
-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
deleted file mode 100644
index 9a62c19..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeFixedValueDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.CodeFixedValueDO;
-
-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
deleted file mode 100644
index f6286f1..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeKeyAttrRepeatRuleDaoI.java
+++ /dev/null
@@ -1,148 +0,0 @@
-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
deleted file mode 100644
index 4321057..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodePhaseAttrDaoI.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.CodePhaseAttrDO;
-
-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
deleted file mode 100644
index 1cd39bf..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeResembleRuleDaoI.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.CodeResembleRuleDO;
-
-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
deleted file mode 100644
index c95c33b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeRuleDaoI.java
+++ /dev/null
@@ -1,155 +0,0 @@
-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.CodeRuleDO;
-
-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
deleted file mode 100644
index 9541cc0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSerialValueDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.CodeSerialValueDO;
-
-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
deleted file mode 100644
index b6968d5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeSynonymDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.CodeSynonymDO;
-
-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
deleted file mode 100644
index 90c9d4d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/CodeTemplatePhaseDaoI.java
+++ /dev/null
@@ -1,142 +0,0 @@
-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.CodeTemplatePhaseDO;
-
-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/DockingDataDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingDataDaoI.java
deleted file mode 100644
index 9232c94..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingDataDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.DockingDataDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
- *
- * @author weidy
- * @date 2022-03-28
- */
-public interface DockingDataDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingDataDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingDataDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingDataDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingDataDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingDataDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingDataDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingDataDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingDataDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingDataDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingDataDO> 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/DockingLogeDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingLogeDaoI.java
deleted file mode 100644
index e53ff61..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingLogeDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.DockingLogeDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹搷浣滃眰
- *
- * @author weidy
- * @date 2022-03-28
- */
-public interface DockingLogeDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingLogeDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingLogeDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingLogeDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingLogeDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingLogeDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingLogeDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingLogeDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingLogeDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingLogeDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingLogeDO> 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/DockingPreApplyDataDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreApplyDataDaoI.java
deleted file mode 100644
index 171b997..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreApplyDataDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.DockingPreApplyDataDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞�
- *
- * @author weidy
- * @date 2022-04-05
- */
-public interface DockingPreApplyDataDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingPreApplyDataDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingPreApplyDataDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingPreApplyDataDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingPreApplyDataDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingPreApplyDataDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingPreApplyDataDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingPreApplyDataDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataDO> 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/DockingPreApplyDataInfoDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreApplyDataInfoDaoI.java
deleted file mode 100644
index b639407..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreApplyDataInfoDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.DockingPreApplyDataInfoDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞�
- *
- * @author weidy
- * @date 2022-04-05
- */
-public interface DockingPreApplyDataInfoDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingPreApplyDataInfoDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingPreApplyDataInfoDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingPreApplyDataInfoDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataInfoDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingPreApplyDataInfoDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingPreApplyDataInfoDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingPreApplyDataInfoDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingPreApplyDataInfoDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataInfoDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreApplyDataInfoDO> 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/DockingPreAttrMappingDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreAttrMappingDaoI.java
deleted file mode 100644
index f1d0502..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreAttrMappingDaoI.java
+++ /dev/null
@@ -1,133 +0,0 @@
-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.DockingPreAttrMappingDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 灞炴�ф槧灏勯厤缃暟鎹俊鎭暟鎹搷浣滃眰
- *
- * @author xiejun
- * @date 2023-01-06
- */
-public interface DockingPreAttrMappingDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingPreAttrMappingDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingPreAttrMappingDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingPreAttrMappingDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrMappingDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingPreAttrMappingDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingPreAttrMappingDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingPreAttrMappingDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingPreAttrMappingDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrMappingDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrMappingDO> 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);
-
- /**
- * 鏍规嵁oid鏌ヨ鏁版嵁
- * @param oids 瀵硅薄鐨勪富閿泦鍚�
- * @return 鍙楀奖鍝嶇殑琛屾暟
- */
- public List<DockingPreAttrMappingDO> selectByOid(String oids);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreAttrRangeDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreAttrRangeDaoI.java
deleted file mode 100644
index bf5c989..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingPreAttrRangeDaoI.java
+++ /dev/null
@@ -1,126 +0,0 @@
-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.DockingPreAttrRangeDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-public interface DockingPreAttrRangeDaoI {
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingPreAttrRangeDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingPreAttrRangeDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingPreAttrRangeDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrRangeDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingPreAttrRangeDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingPreAttrRangeDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingPreAttrRangeDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingPreAttrRangeDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrRangeDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrRangeDO> 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);
-
- /**
- * 鏍规嵁灞炴�т富閿壒閲忚幏鍙栧璞�
- * @param attrOid 涓婚敭
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingPreAttrRangeDO> selectByAttrOid(String attrOid);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingTaskDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingTaskDaoI.java
deleted file mode 100644
index 15678d8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/DockingTaskDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.DockingTaskDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
- *
- * @author weidy
- * @date 2022-03-28
- */
-public interface DockingTaskDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(DockingTaskDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<DockingTaskDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- DockingTaskDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingTaskDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<DockingTaskDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<DockingTaskDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(DockingTaskDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<DockingTaskDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingTaskDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<DockingTaskDO> 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/SysIntAuthorityDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntAuthorityDaoI.java
deleted file mode 100644
index 82c573b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntAuthorityDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.SysIntAuthorityDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntAuthorityDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(SysIntAuthorityDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<SysIntAuthorityDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- SysIntAuthorityDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntAuthorityDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<SysIntAuthorityDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<SysIntAuthorityDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(SysIntAuthorityDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<SysIntAuthorityDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntAuthorityDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntAuthorityDO> 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/SysIntBaseDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntBaseDaoI.java
deleted file mode 100644
index d12e1f7..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntBaseDaoI.java
+++ /dev/null
@@ -1,128 +0,0 @@
-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.SysIntBaseDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹搷浣滃眰
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntBaseDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(SysIntBaseDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<SysIntBaseDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- SysIntBaseDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntBaseDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<SysIntBaseDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<SysIntBaseDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(SysIntBaseDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<SysIntBaseDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntBaseDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntBaseDO> 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/SysIntHeaderDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntHeaderDaoI.java
deleted file mode 100644
index 961f3da..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntHeaderDaoI.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.springblade.code.dao;
-
-
-import com.vci.starter.web.pagemodel.BaseResult;
-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.SysIntHeaderDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
- *
- * @author weidy
- * @date 2022-04-11
- */
-public interface SysIntHeaderDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(SysIntHeaderDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<SysIntHeaderDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- SysIntHeaderDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntHeaderDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<SysIntHeaderDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<SysIntHeaderDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(SysIntHeaderDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<SysIntHeaderDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntHeaderDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntHeaderDO> 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);
-
- //==
-
- /**
- * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param sysinfoOid 涓婚敭
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntHeaderDO> selectBySysinfoOid(String sysinfoOid);
-
- /**
- * 鎵归噺淇敼杩欎釜sysinfo鐨刪eader锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
- * @param records
- */
- BaseResult updateSysinfoHeader(List<SysIntHeaderDO> records);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntInfoDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntInfoDaoI.java
deleted file mode 100644
index ea2528c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntInfoDaoI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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.SysIntInfoDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁鎿嶄綔灞�
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntInfoDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(SysIntInfoDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<SysIntInfoDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- SysIntInfoDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntInfoDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<SysIntInfoDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<SysIntInfoDO> selectAll(Map conditonMap);
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(SysIntInfoDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<SysIntInfoDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntInfoDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntInfoDO> 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/SysIntParamDaoI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntParamDaoI.java
deleted file mode 100644
index 47282da..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/SysIntParamDaoI.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.springblade.code.dao;
-
-
-import com.vci.starter.web.pagemodel.BaseResult;
-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.SysIntParamDO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
- *
- * @author weidy
- * @date 2022-04-11
- */
-public interface SysIntParamDaoI {
-
- /**
- * 浣跨敤涓婚敭鍒犻櫎
- * @param oid 鏁版嵁涓婚敭
- * @return 鎵ц缁撴灉
- */
- BatchCBO deleteByPrimaryKey(String oid);
-
- /**
- * 娣诲姞鏁版嵁
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO insert(SysIntParamDO record);
-
- /**
- * 鎵归噺娣诲姞鏁版嵁
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉鏁�
- */
- BatchCBO batchInsert(List<SysIntParamDO> records);
-
- /**
- * 鏍规嵁涓婚敭鏌ヨ
- * @param oid 鏁版嵁涓婚敭
- * @return 鏁版嵁瀵硅薄
- */
- SysIntParamDO selectByPrimaryKey(String oid);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntParamDO> selectByPrimaryKeys(String oids);
-
- /**
- * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
- * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
- * @return 涓氬姟瀵硅薄
- */
- List<SysIntParamDO> selectByPrimaryKeyCollection(Collection<String> oids);
-
- /**
- * 鏌ヨ鎵�鏈夊垎绫�
- * @return 鏌ヨ缁撴灉
- */
- List<SysIntParamDO> selectAll();
-
- /**
- * 鏇存柊瀵硅薄
- * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
- * @return 鎵ц缁撴灉
- */
- BatchCBO updateByPrimaryKey(SysIntParamDO record);
-
- /**
- * 鎵归噺鏇存柊
- * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
- * @return 鎵ц缁撴灉琛屾暟
- */
- BatchCBO batchUpdate(List<SysIntParamDO> records);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
- * @param conditionMap 鏌ヨ鏉′欢锛�
- * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntParamDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
- * @param conditionMap 鏌ヨ鏉′欢
- * @return 鎬绘暟
- */
- Long countByCondition(Map<String,String> conditionMap);
-
- /**
- * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
- * @param queryWrapper 鏌ヨ灏佽鍣�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntParamDO> 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);
-
- //==
-
- /**
- * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
- * @param sysinfoOid 涓婚敭
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- List<SysIntParamDO> selectBySysinfoOid(String sysinfoOid);
-
- /**
- * 鎵归噺淇敼杩欎釜sysinfo鐨刾aram锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
- * @param records
- */
- BaseResult updateSysinfoParam(List<SysIntParamDO> records);
-
-}
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
deleted file mode 100644
index 3fc6343..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeAllCodeDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeAllCodeDaoI;
-import org.springblade.code.model.CodeAllCodeDO;
-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
deleted file mode 100644
index 8e93f0d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeBasicSecDaoImpl.java
+++ /dev/null
@@ -1,269 +0,0 @@
-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 com.vci.web.util.WebUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.code.dao.CodeBasicSecDaoI;
-import org.springblade.code.model.CodeBasicSecDO;
-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
deleted file mode 100644
index 4610198..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeButtonDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeButtonDaoI;
-import org.springblade.code.model.CodeButtonDO;
-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
deleted file mode 100644
index fbc6b81..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyDaoImpl.java
+++ /dev/null
@@ -1,518 +0,0 @@
-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 com.vci.web.util.PlatformClientUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodeClassifyDaoI;
-import org.springblade.code.model.CodeClassifyDO;
-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
deleted file mode 100644
index a59cbbc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyProcessTempDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeClassifyProcessTempDaoI;
-import org.springblade.code.model.CodeClassifyProcessTempDO;
-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
deleted file mode 100644
index 6e8a771..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.CodeClassifyTempMapItemDaoI;
-import org.springblade.code.model.CodeClassifyTempMapItemDO;
-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
deleted file mode 100644
index 72e7176..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-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.CodeClassifyTemplateAttrDaoI;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-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
deleted file mode 100644
index 1fb87ee..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.CodeClassifyTemplateButtonDaoI;
-import org.springblade.code.model.CodeClassifyTemplateButtonDO;
-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
deleted file mode 100644
index 96d384b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateDaoImpl.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package org.springblade.code.dao.impl;
-
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-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.lang.StringUtils;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodeClassifyTemplateDaoI;
-import org.springblade.code.lifecycle.CodeClassifyTemplateLC;
-import org.springblade.code.model.CodeClassifyTemplateDO;
-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
deleted file mode 100644
index edc8d07..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeClassifyTemplateMapDaoI;
-import org.springblade.code.model.CodeClassifyTemplateMapDO;
-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
deleted file mode 100644
index 0e24617..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeClassifyValueDaoImpl.java
+++ /dev/null
@@ -1,255 +0,0 @@
-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.CodeClassifyValueDaoI;
-import org.springblade.code.model.CodeClassifyValueDO;
-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
deleted file mode 100644
index e41a21b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeFixedValueDaoImpl.java
+++ /dev/null
@@ -1,220 +0,0 @@
-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.CodeFixedValueDaoI;
-import org.springblade.code.model.CodeFixedValueDO;
-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
deleted file mode 100644
index 75f5a13..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package org.springblade.code.dao.impl;
-
-
-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.springblade.code.dao.CodeKeyAttrRepeatRuleDaoI;
-import org.springblade.code.model.CodeKeyAttrRepeatRuleDO;
-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
deleted file mode 100644
index 6c9def1..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodePhaseAttrDaoImpl.java
+++ /dev/null
@@ -1,244 +0,0 @@
-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.CodePhaseAttrDaoI;
-import org.springblade.code.model.CodePhaseAttrDO;
-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
deleted file mode 100644
index 2e23d14..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeResembleRuleDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeResembleRuleDaoI;
-import org.springblade.code.model.CodeResembleRuleDO;
-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
deleted file mode 100644
index 725522c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeRuleDaoImpl.java
+++ /dev/null
@@ -1,274 +0,0 @@
-package org.springblade.code.dao.impl;
-
-
-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.springblade.code.dao.CodeRuleDaoI;
-import org.springblade.code.model.CodeRuleDO;
-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
deleted file mode 100644
index a67841e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSerialValueDaoImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-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.CodeSerialValueDaoI;
-import org.springblade.code.model.CodeSerialValueDO;
-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
deleted file mode 100644
index b7f9101..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeSynonymDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.CodeSynonymDaoI;
-import org.springblade.code.model.CodeSynonymDO;
-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
deleted file mode 100644
index fa61557..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/CodeTemplatePhaseDaoImpl.java
+++ /dev/null
@@ -1,245 +0,0 @@
-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.CodeTemplatePhaseDaoI;
-import org.springblade.code.model.CodeTemplatePhaseDO;
-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
deleted file mode 100644
index 311f157..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingDataDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.DockingDataDaoI;
-import org.springblade.code.model.DockingDataDO;
-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
deleted file mode 100644
index 2481ba4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingLogeDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.DockingLogeDaoI;
-import org.springblade.code.model.DockingLogeDO;
-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
deleted file mode 100644
index 1a10965..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataDaoImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-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.lang.StringUtils;
-import org.springblade.code.dao.DockingPreApplyDataDaoI;
-import org.springblade.code.model.DockingPreApplyDataDO;
-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
deleted file mode 100644
index 9234eee..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.DockingPreApplyDataInfoDaoI;
-import org.springblade.code.model.DockingPreApplyDataInfoDO;
-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
deleted file mode 100644
index b8efb09..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrMappingDaoImpl.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package org.springblade.code.dao.impl;
-
-
-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.springblade.code.dao.DockingPreAttrMappingDaoI;
-import org.springblade.code.model.DockingPreAttrMappingDO;
-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
deleted file mode 100644
index 740b916..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingPreAttrRangeDaoImpl.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package org.springblade.code.dao.impl;
-
-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.springblade.code.dao.DockingPreAttrRangeDaoI;
-import org.springblade.code.model.DockingPreAttrRangeDO;
-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
deleted file mode 100644
index 2d7c71b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/DockingTaskDaoImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-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.DockingTaskDaoI;
-import org.springblade.code.model.DockingTaskDO;
-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
deleted file mode 100644
index 4aeef3a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntAuthorityDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.SysIntAuthorityDaoI;
-import org.springblade.code.model.SysIntAuthorityDO;
-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
deleted file mode 100644
index 6b53749..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntBaseDaoImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-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.SysIntBaseDaoI;
-import org.springblade.code.model.SysIntBaseDO;
-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
deleted file mode 100644
index 9f3a946..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntHeaderDaoImpl.java
+++ /dev/null
@@ -1,260 +0,0 @@
-package org.springblade.code.dao.impl;
-
-
-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.springblade.code.dao.SysIntHeaderDaoI;
-import org.springblade.code.model.SysIntHeaderDO;
-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 org.springblade.code.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 鏁版嵁瀵硅薄鍒楄〃
- */
- @Override
- 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
- */
- @Override
- 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
deleted file mode 100644
index 199cae4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntInfoDaoImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-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
deleted file mode 100644
index e2f7ef5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/dao/impl/SysIntParamDaoImpl.java
+++ /dev/null
@@ -1,256 +0,0 @@
-package org.springblade.code.dao.impl;
-
-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.springblade.code.dao.SysIntParamDaoI;
-import org.springblade.code.model.SysIntParamDO;
-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 org.springblade.code.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
deleted file mode 100644
index b840bba..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeButtonUseEnum.java
+++ /dev/null
@@ -1,140 +0,0 @@
-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-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
deleted file mode 100644
index b063833..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeClassifyProcessUseEnum.java
+++ /dev/null
@@ -1,150 +0,0 @@
-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-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
deleted file mode 100644
index 292f3d7..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeCutTypeEnum.java
+++ /dev/null
@@ -1,135 +0,0 @@
-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-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
deleted file mode 100644
index 5f56418..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeGetValueTypeEnum.java
+++ /dev/null
@@ -1,130 +0,0 @@
-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-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
deleted file mode 100644
index 7ae00fa..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeLevelTypeEnum.java
+++ /dev/null
@@ -1,135 +0,0 @@
-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-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
deleted file mode 100644
index 49c9d32..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeMapRuleTypeEnum.java
+++ /dev/null
@@ -1,145 +0,0 @@
-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-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
deleted file mode 100644
index 16ee86a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecLengthTypeEnum.java
+++ /dev/null
@@ -1,130 +0,0 @@
-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-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
deleted file mode 100644
index f03d7ee..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeSecTypeEnum.java
+++ /dev/null
@@ -1,157 +0,0 @@
-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
deleted file mode 100644
index 5bb54a8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/CodeUseButtonPositionTypeEnum.java
+++ /dev/null
@@ -1,130 +0,0 @@
-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-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/enumpack/SysIntegrationAuthorityTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationAuthorityTypeEnum.java
deleted file mode 100644
index 80a05db..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationAuthorityTypeEnum.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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;
-
-/**
- * Description: 绯荤粺闆嗘垚楠岃瘉鏂瑰紡
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,text = "绯荤粺闆嗘垚楠岃瘉鏂瑰紡",description = "")
-public enum SysIntegrationAuthorityTypeEnum implements BaseEnum {
- /**
- * 鐢ㄦ埛鏂瑰紡
- */
- LOGIN("login","鐢ㄦ埛鐧诲綍"),
- /**
- * 浠ょ墝鏂瑰紡
- */
- TOKEN("token","浠ょ墝");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 SysIntegrationAuthorityTypeEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static SysIntegrationAuthorityTypeEnum forValue(String value) {
- for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.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/SysIntegrationDataFlowTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationDataFlowTypeEnum.java
deleted file mode 100644
index cb2deaf..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationDataFlowTypeEnum.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.springblade.code.enumpack;
-
-import com.vci.starter.web.enumpck.BaseEnum;
-
-/**
- * Description:鏁版嵁娴佸悜鏂瑰紡
- *
- * @author LiHang
- * @date Created on 2022/3/14
- */
-public enum SysIntegrationDataFlowTypeEnum implements BaseEnum {
- /**
- * 鎺ㄩ��
- */
- PUSH("push","鎺ㄩ��"),
- /**
- * 閫氱煡鍜屾煡璇�
- */
- NOTICE_AND_QUERY("noticeAndQuery","閫氱煡鍜屾煡璇�");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 SysIntegrationDataFlowTypeEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static SysIntegrationDataFlowTypeEnum forValue(String value) {
- for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.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/SysIntegrationParamAndReturnTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java
deleted file mode 100644
index 845df6e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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;
-
-/**
- * Description: 绯荤粺闆嗘垚鎺ュ彛鍙傛暟涓庤繑鍥炲�肩被鍨�
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛鍙傛暟涓庤繑鍥炲�肩被鍨�",description = "")
-public enum SysIntegrationParamAndReturnTypeEnum implements BaseEnum {
- /**
- * Json鏍煎紡
- */
- JSON("json","Json"),
- /**
- * Xml鏍煎紡
- */
- XML("xml","xml");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 SysIntegrationParamAndReturnTypeEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static SysIntegrationParamAndReturnTypeEnum forValue(String value) {
- for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.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/SysIntegrationRequestMethodEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationRequestMethodEnum.java
deleted file mode 100644
index 532f635..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationRequestMethodEnum.java
+++ /dev/null
@@ -1,136 +0,0 @@
-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;
-
-/**
- * Description:绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_METHOD_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷",description = "")
-public enum SysIntegrationRequestMethodEnum implements BaseEnum {
- /**
- * post璇锋眰
- */
- POST("post","post"),
- /**
- * get璇锋眰
- */
- GET("get","get"),
- /**
- * put璇锋眰
- */
- PUT("put","put"),
- /**
- * delete璇锋眰
- */
- DELETE("delete","delete");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 SysIntegrationRequestMethodEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static SysIntegrationRequestMethodEnum forValue(String value) {
- for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.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/SysIntegrationRequestTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationRequestTypeEnum.java
deleted file mode 100644
index ef81be4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/SysIntegrationRequestTypeEnum.java
+++ /dev/null
@@ -1,135 +0,0 @@
-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;
-
-/**
- * Description:绯荤粺闆嗘垚鎺ュ彛鐨勭被鍨�
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛鐨勭被鍨�",description = "")
-public enum SysIntegrationRequestTypeEnum implements BaseEnum {
- /**
- * HTTP鏂瑰紡
- */
- HTTP("http","Http"),
- /**
- * WebService鏂瑰紡
- */
- WEB_SERVICE("webService","webService"),
- WEB_SERVICE_ERP("webService","webService"),
- WEB_SERVICE_CXF("webService","webService"),
- WEB_SERVICE_AXIS("webService","webService"),
- /**
- * 绫昏矾寰�
- */
- CLASSPATH("classPath","绫昏矾寰�");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 SysIntegrationRequestTypeEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static SysIntegrationRequestTypeEnum forValue(String value) {
- for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.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/sysIntegrationPushTypeEnum.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/sysIntegrationPushTypeEnum.java
deleted file mode 100644
index 58fa7b9..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/enumpack/sysIntegrationPushTypeEnum.java
+++ /dev/null
@@ -1,122 +0,0 @@
-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;
-
-@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,text = "绯荤粺鎺ュ彛鎺ㄩ�佹柟寮�",description = "")
-public enum sysIntegrationPushTypeEnum implements BaseEnum {
- /**
- * 鍒嗙被鎺ㄩ�佹柟寮�
- */
- JSON("1","鏁版嵁鎺ㄩ��"),
- /**
- * Xml鏍煎紡
- */
- XML("2","鍒嗙被鎺ㄩ��");
-
- /**
- * 鏋氫妇鐨勫��
- */
- 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 sysIntegrationPushTypeEnum(String value, String text) {
- this.value = value;
- this.text = text;
- }
-
- /**
- * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
- *
- * @param text 鍚嶇О
- * @return 鏋氫妇鍊�
- */
- public static String getValueByText(String text) {
- for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.values()) {
- if (wenum.getText().equalsIgnoreCase(text)) {
- return wenum.getValue();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
- *
- * @param value 鏋氫妇鍊�
- * @return 鍚嶇О
- */
- public static String getTextByValue(String value) {
- for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.values()) {
- if (wenum.getValue().equalsIgnoreCase(value)) {
- return wenum.getText();
- }
- }
- return "";
- }
-
- /**
- * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
- *
- * @param value 鏋氫妇鍊�
- * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
- */
- public static sysIntegrationPushTypeEnum forValue(String value) {
- for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.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
deleted file mode 100644
index 8d9b3b8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeAllCodeLC.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.springblade.code.lifecycle;
-
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.starter.web.annotation.VciLifeCycle;
-import com.vci.starter.web.annotation.VciLifeCycleTrans;
-import com.vci.starter.web.enumpck.BaseEnum;
-import org.springblade.code.constant.MdmLifeCycleConstant;
-
-/**
- * 鍏ㄩ儴鐨勭爜鍊肩殑鐢熷懡鍛ㄦ湡
- * @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
deleted file mode 100644
index 6c18f8a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeClassifyTemplateLC.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.springblade.code.lifecycle;
-
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.starter.web.annotation.VciLifeCycle;
-import com.vci.starter.web.annotation.VciLifeCycleTrans;
-import com.vci.starter.web.enumpck.BaseEnum;
-import org.springblade.code.constant.MdmLifeCycleConstant;
-
-/**
- * 鍒嗙被妯℃澘鐨勭敓鍛藉懆鏈�
- * @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
deleted file mode 100644
index d50a188..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeDefaultLC.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.springblade.code.lifecycle;
-
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.starter.web.annotation.VciLifeCycle;
-import com.vci.starter.web.annotation.VciLifeCycleTrans;
-import com.vci.starter.web.enumpck.BaseEnum;
-import org.springblade.code.constant.MdmLifeCycleConstant;
-
-/**
- * 涓婚搴撴暟鎹殑榛樿鐢熷懡鍛ㄦ湡
- * @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
deleted file mode 100644
index 2b74f4b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/lifecycle/CodeRuleLC.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.springblade.code.lifecycle;
-
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.starter.web.annotation.VciLifeCycle;
-import com.vci.starter.web.annotation.VciLifeCycleTrans;
-import com.vci.starter.web.enumpck.BaseEnum;
-import org.springblade.code.constant.MdmLifeCycleConstant;
-
-/**
- * 缂栫爜瑙勫垯鐨勭敓鍛藉懆鏈�
- * @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
deleted file mode 100644
index 15c17e4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeAllCodeDO.java
+++ /dev/null
@@ -1,168 +0,0 @@
-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
deleted file mode 100644
index 1f6aba1..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeBasicSecDO.java
+++ /dev/null
@@ -1,728 +0,0 @@
-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
deleted file mode 100644
index 3a9ccbb..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeButtonDO.java
+++ /dev/null
@@ -1,125 +0,0 @@
-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
deleted file mode 100644
index 4fa8402..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyDO.java
+++ /dev/null
@@ -1,276 +0,0 @@
-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
deleted file mode 100644
index d4d3641..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessPhaseDO.java
+++ /dev/null
@@ -1,127 +0,0 @@
-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
deleted file mode 100644
index 33cc2a7..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyProcessTempDO.java
+++ /dev/null
@@ -1,169 +0,0 @@
-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
deleted file mode 100644
index 55cddae..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTempMapItemDO.java
+++ /dev/null
@@ -1,181 +0,0 @@
-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
deleted file mode 100644
index bff5a47..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateAttrDO.java
+++ /dev/null
@@ -1,858 +0,0 @@
-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
deleted file mode 100644
index 6f6c619..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateButtonDO.java
+++ /dev/null
@@ -1,135 +0,0 @@
-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
deleted file mode 100644
index c4ee7f8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateDO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-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
deleted file mode 100644
index 41fb962..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyTemplateMapDO.java
+++ /dev/null
@@ -1,114 +0,0 @@
-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
deleted file mode 100644
index fc809c9..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeClassifyValueDO.java
+++ /dev/null
@@ -1,108 +0,0 @@
-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
deleted file mode 100644
index 8416111..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeFixedValueDO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-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
deleted file mode 100644
index 180fc33..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeImprotDataGridVO.java
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644
index abe740f..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeKeyAttrRepeatRuleDO.java
+++ /dev/null
@@ -1,120 +0,0 @@
-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
deleted file mode 100644
index e37c25f..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodePhaseAttrDO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-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
deleted file mode 100644
index db85fdd..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeResembleRuleDO.java
+++ /dev/null
@@ -1,137 +0,0 @@
-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
deleted file mode 100644
index 26f31e2..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeRuleDO.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.springblade.code.model;
-
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.starter.web.annotation.Column;
-import com.vci.starter.web.annotation.VciBtmType;
-import com.vci.starter.web.model.BaseModel;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.constant.MdmLifeCycleConstant;
-
-/**
- * 缂栫爜瑙勫垯
- * @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
deleted file mode 100644
index 3d1c7a5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSerialValueDO.java
+++ /dev/null
@@ -1,88 +0,0 @@
-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
deleted file mode 100644
index 3b7b468..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeSynonymDO.java
+++ /dev/null
@@ -1,121 +0,0 @@
-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
deleted file mode 100644
index 7aa35cf..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/CodeTemplatePhaseDO.java
+++ /dev/null
@@ -1,81 +0,0 @@
-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/model/DockingDataDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingDataDO.java
deleted file mode 100644
index 56653bc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingDataDO.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * 瑕佹帹閫佸緱鏁版嵁
- * @author wangyi
- * @date 2022-10-7
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_DATA,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingDataDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 5020487634341415429L;
-
- /**
- * uniquecode
- */
- @Column(columnDefinition = "uniquecode")
- private String uniquecode;
-
- /**
- * 绯荤粺鎺ュ彛oid
- */
- @Column(columnDefinition = "鍒嗙被oid")
- private String classifyoid;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "涓氬姟绫诲瀷oid")
- private String btmoid;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "涓氬姟绫诲瀷id")
- private String btmid;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "鎺ㄩ�佺被鍨�")
- private String sendtype;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "鏄惁鍒嗚В浠诲姟")
- private String sendflag;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "鍒嗙被id")
- private String classifyid;
-
- /**
- * 绯荤粺id
- */
- @Column(columnDefinition = "鍒嗙被鍚嶇О")
- private String classifyname;
-
- public String getUniquecode() {
- return uniquecode;
- }
-
- public void setUniquecode(String uniquecode) {
- this.uniquecode = uniquecode;
- }
-
- 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 + '\'' +
- ", uniquecode='" + uniquecode + '\'' +
- ", btmoid='" + btmoid + '\'' +
- ", btmid='" + btmid + '\'' +
- ", sendtype='" + sendtype + '\'' +
- ", sendflag='" + sendflag + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingLogeDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingLogeDO.java
deleted file mode 100644
index 0ad2461..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingLogeDO.java
+++ /dev/null
@@ -1,228 +0,0 @@
-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.VciFieldType;
-import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
-import com.vci.starter.web.model.BaseModel;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-import static com.vci.starter.web.enumpck.VciFieldTypeEnum.VTClob;
-
-/**
- * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇�
- * @author wangyi
- * @date 2022-3-7
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_LOGE,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingLogeDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 5020487634341415429L;
- /**
- * 绯荤粺id
- */
- @Column(nullable = false,columnDefinition = "绯荤粺id")
- private String systemoid;
-
- /**
- * 绯荤粺缂栧彿
- */
- @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
- private String systemcode;
-
- /**
- * 绯荤粺鍚嶇О
- */
- @Column(nullable = false,columnDefinition = "绯荤粺鍚嶇О")
- private String systemname;
-
- /**
- * 鍒嗙被oid
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被oid")
- private String classifyoid;
-
- /**
- * 鍒嗙被id
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被id")
- private String classifyid;
-
- /**
- * 鍒嗙被name
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被name")
- private String classifyname;
-
- /**
- * 鍞竴鏍囪瘑
- */
- @Column(columnDefinition = "鍞竴鏍囪瘑")
- private String uniquecode;
-
- /**
- * 鎺ュ彛绫诲瀷锛氭帹閫佹帴鍙�/鏌ヨ鎺ュ彛,鏆傛椂涓嶇敤
- */
- @Column(columnDefinition = "鎺ュ彛绫诲瀷")
- private String type;
-
- /**
- * 杩旇繕鎻愮ず
- */
- @Column(columnDefinition = "杩旇繕鎻愮ず")
- private String msg;
-
- /**
- * 鍙傛暟锛氶�氱煡鎺ュ彛鏄垜浠紶鍑虹殑鍙傛暟/鏌ヨ鎺ュ彛鏄埆浜轰紶鍏ョ殑鍙傛暟
- */
- @VciFieldType(VTClob)
- @Column(columnDefinition = "鍙傛暟")
- private String paramstring;
-
- /**
- * 浼犻�抶ml
- */
- @Column(columnDefinition = "浼犻�抶ml",length = 4000)
- private String sendXml;
-
- /**
- * 杩斿洖锛氶�氱煡鎺ュ彛鏄垜浠敹鍒扮殑鍙嶉锛屾煡璇㈡帴鍙f槸鍒汉鏀跺埌鐨勫弽棣�
- */
- @VciFieldType(VTClob)
- @Column(columnDefinition = "杩斿洖")
- private String returnstring;
-
- /**
- * 鎺ュ彛鐘舵�侊細鎴愬姛/澶辫触
- */
- @Column(nullable = false,columnDefinition = "鎺ュ彛鐘舵��")
- private String interfacestatus;
- private Object MdmBtmTypeConstant;
-
- public String getUniquecode() {
- return uniquecode;
- }
-
- public void setUniquecode(String uniquecode) {
- this.uniquecode = uniquecode;
- }
-
- public String getSendXml() {
- return sendXml;
- }
-
- public void setSendXml(String sendXml) {
- this.sendXml = sendXml;
- }
-
- public String getMsg() {
- return msg;
- }
-
- public void setMsg(String msg) {
- this.msg = msg;
- }
-
- 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 getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- 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 getInterfacestatus() {
- return interfacestatus;
- }
-
- public void setInterfacestatus(String interfacestatus) {
- this.interfacestatus = interfacestatus;
- }
-
- 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;
- }
-
- @Override
- public String toString() {
- return "DockingLogeDO{" +
- "systemoid='" + systemoid + '\'' +
- ", uniquecode='" + uniquecode + '\'' +
- ", systemcode='" + systemcode + '\'' +
- ", systemname='" + systemname + '\'' +
- ", classifyoid='" + classifyoid + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- ", type='" + type + '\'' +
- ", msg='" + msg + '\'' +
- ", paramstring='" + paramstring + '\'' +
- ", sendXml='" + sendXml + '\'' +
- ", returnstring='" + returnstring + '\'' +
- ", interfacestatus='" + interfacestatus + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataDO.java
deleted file mode 100644
index 0f97469..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataDO.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅锛屽拰DockingPSMDataInfoDO涓�瀵瑰鐨勫叧绯�
- * @author wangyi
- * @date 2022-3-7
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_APPLY_DATA,text = "璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingPreApplyDataDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 5020487634341415429L;
-
- /**
- * 鐢宠oid
- */
- @Column(nullable = false,columnDefinition = "鐢宠oid")
- private String preapplyoid;
-
- /**
- * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
- */
- @Column(nullable = false,columnDefinition = "鍞竴鏍囪瘑")
- private String uniquecode;
-
- /**
- * 涓婚搴撶紪鍙�
- */
- @Column(nullable = false,columnDefinition = "涓婚搴撶紪鍙�")
- private String type;
-
- /**
- * 绯荤粺缂栧彿
- */
- @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
- private String systemid;
-
- /**
- * 姝e湪浣跨敤鏍囧織
- */
- @Column(nullable = true,columnDefinition = "姝e湪浣跨敤鏍囧織")
- private String useddflag;
-
- /**
- * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被oid
- */
- @Column(columnDefinition = "鍏宠仈鍒嗙被oid")
- private String classifyoid;
-
- /**
- * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被鍚嶇О
- */
- @Column(columnDefinition = "鍏宠仈鍒嗙被鍚嶇О")
- private String classifyname;
-
- /**
- * 鐢宠鎴愬姛鍚庣殑缂栫爜,鎴栬�呭凡缁忓瓨鍦ㄧ殑缂栫爜
- */
- @Column(columnDefinition = "鏄惁瀹屾垚鐢宠缂栫爜")
- private String num;
- /**
- * 瑙勬牸鍨嬪彿
- */
- @Column(columnDefinition = "瑙勬牸鍨嬪彿")
- private String model;
- /**
- * 闆朵欢绫诲瀷
- */
- @Column(columnDefinition = "闆朵欢绫诲瀷")
- private String parttype;
- /**
- * 璁¢噺鍗曚綅
- */
- @Column(columnDefinition = "璁¢噺鍗曚綅")
- private String unit;
-
- /**
- * 鍗曢噸
- */
- @Column(columnDefinition = "鍗曢噸")
- private String weight;
-
- /**
- * 鏄惁閲嶈浠�
- */
- @Column(columnDefinition = "鏄惁閲嶈浠�")
- private String importantPart;
-
- /**
- * 鏄惁鍏抽敭浠�
- */
- @Column(columnDefinition = "鏄惁鍏抽敭浠�")
- private String keyPart;
- /**
- * 鏁版嵁澶勭悊杩斿洖鐘舵�佺爜
- */
- @Column(columnDefinition = "鏁版嵁澶勭悊杩斿洖鐘舵�佺爜")
- private String datacode;
-
- /**
- * 鏁版嵁澶勭悊杩斿洖淇℃伅
- */
- @Column(columnDefinition = "鏁版嵁澶勭悊杩斿洖淇℃伅")
- private String datamsg;
- private Object MdmBtmTypeConstant;
-
- public String getUniquecode() {
- return uniquecode;
- }
-
- public void setUniquecode(String unique) {
- this.uniquecode = unique;
- }
-
- public String getClassifyoid() {
- return classifyoid;
- }
-
- public void setClassifyoid(String classifyoid) {
- this.classifyoid = classifyoid;
- }
-
- public String getUseddflag() {
- return useddflag;
- }
-
- public void setUseddflag(String useddflag) {
- this.useddflag = useddflag;
- }
-
- 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 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 getPreapplyoid() {
- return preapplyoid;
- }
-
- public void setPreapplyoid(String preapplyoid) {
- this.preapplyoid = preapplyoid;
- }
-
- 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 "DockingPreApplyDataDO{" +
- "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/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataInfoDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataInfoDO.java
deleted file mode 100644
index 3bfac1d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreApplyDataInfoDO.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @author wangyi
- * @date 2022-3-7
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_APPLY_DATA_INFO,text = "璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingPreApplyDataInfoDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 5020487634341415429L;
-
- /**
- * data鐨刼id
- */
- @Column(nullable = false,columnDefinition = "data鐨刼id")
- private String dataoid;
-
- /**
- * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
- */
- @Column(nullable = false,columnDefinition = "鍞竴鏍囪瘑")
- private String uniquecode;
-
- /**
- * 灞炴�ey
- */
- @Column(nullable = true,columnDefinition = "灞炴�ey")
- private String key;
-
- /**
- * 灞炴�ey鍚箟
- */
- @Column(nullable = true,columnDefinition = "灞炴�ey鍚箟")
- private String mean;
-
- /**
- * 灞炴�alue
- */
- @Column(nullable = true,columnDefinition = "灞炴�alue",length = 4000)
- private String value;
-
- public String getDataoid() {
- return dataoid;
- }
-
- public void setDataoid(String dataoid) {
- this.dataoid = dataoid;
- }
-
- public String getUniquecode() {
- return uniquecode;
- }
-
- public void setUniquecode(String uniquecode) {
- this.uniquecode = uniquecode;
- }
-
- 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 "DockingPSMDataInfoDO{" +
- "dataoid='" + dataoid + '\'' +
- ", uniquecode='" + uniquecode + '\'' +
- ", key='" + key + '\'' +
- ", mean='" + mean + '\'' +
- ", value='" + value + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrMappingDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrMappingDO.java
deleted file mode 100644
index 4b27d1d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrMappingDO.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
- * @author xiejun
- * @date 2023-01-06
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_JINTEGMAPCONFIG,text = "闆嗘垚灞炴�ф槧灏勫叧绯诲璞�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingPreAttrMappingDO extends BaseModel {
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 6020487634341415429L;
-
- /***
- * 榛樿鍊�
- */
- @Column(nullable = true,columnDefinition = "榛樿鍊�")
- private String jdefaultValue;
-
- /***
- * 榛樿鍊�
- */
- /**
- * 姝e湪浣跨敤鏍囧織
- */
- @Column(nullable = true,columnDefinition = "婧愮郴缁熺殑灞炴�id")
- private String jmetaListId;
- /**
- * 婧愬垎绫籭d
- */
- @Column(nullable = false,columnDefinition = "婧愮郴缁熺殑鍒嗙被oid")
- private String jsourceClsfId;
- /**
- * 婧愬垎绫诲悕绉�
- */
- @Column(nullable = true,columnDefinition = "婧愮郴缁熺殑鍒嗙被鍚嶇О")
- private String jsourceClsfName;
- /**
- * 婧愬睘鎬id
- */
- @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�х郴id")
- private String jtargetAttrId;
-
- /**
- * 鐩爣灞炴�id
- */
- @Column(nullable = true,columnDefinition = "鐩爣绯荤粺鍒嗙被oid")
- private String jtargetClsfId;
-
- /***
- * 妯℃澘Id
- */
- @Column(nullable = true,columnDefinition = "妯℃澘瑙嗗浘鐨刼id")
- private String jviewModeId;
- /***
- * 妯℃澘鍚嶇О
- */
- @Column(nullable = true,columnDefinition = "妯℃澘鍚嶇О")
- private String jviewModeName;
-
- /***
- * 鐩爣灞炴�у唴閮ㄥ悕绉�
- */
- @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�у唴閮ㄥ��")
- private String jtargetAttrKey;
-
- /***
- * 鐩爣灞炴�у悕绉�
- */
- @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�у悕绉�")
- private String jtargetAttrName;
-
- /***
- * 鐩爣灞炴�у唴閮ㄥ悕绉�
- */
- @Column(nullable = false,columnDefinition = "婧愮郴缁熷睘鎬у唴閮ㄥ悕绉�")
- private String jsourceAttrKey;
-
- /***
- * 鐩爣灞炴�у悕绉�
- */
- @Column(nullable = false,columnDefinition = "婧愮郴缁熷睘鎬у悕绉�")
- private String jsourceAttrName;
-
-
- 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;
- }
-
- @Override
- public String toString() {
- return "DockingPreAttrMappingDO{" +
- "jdefaultValue='" + jdefaultValue + '\'' +
- ", jmetaListId='" + jmetaListId + '\'' +
- ", jsourceClsfId='" + jsourceClsfId + '\'' +
- ", jsourceClsfName='" + jsourceClsfName + '\'' +
- ", jtargetAttrId='" + jtargetAttrId + '\'' +
- ", jtargetClsfId='" + jtargetClsfId + '\'' +
- ", jviewModeId='" + jviewModeId + '\'' +
- ", jviewModeName='" + jviewModeName + '\'' +
- ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
- ", jtargetAttrName='" + jtargetAttrName + '\'' +
- ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
- ", jsourceAttrName='" + jsourceAttrName + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrRangeDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrRangeDO.java
deleted file mode 100644
index 87a04e5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingPreAttrRangeDO.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_JRANGE,text = "闆嗘垚灞炴�у彇鍊艰寖鍥村璞�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingPreAttrRangeDO extends BaseModel {
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 6020487634341415410L;
- /***
- *灞炴�d
- */
- @Column(nullable = false,columnDefinition = "灞炴�id")
- private String jmetaListId;
-
- /**
- * 灞炴�ф灇涓炬樉绀哄悕绉�
- */
- @Column(nullable = false,columnDefinition = "婧愬睘鎬ф灇涓炬樉绀哄悕绉�")
- private String jnumText;
- /**
- * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
- */
- @Column(nullable = false,columnDefinition = "婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�")
- private String jnumTextValue;
-
- /**
- * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
- */
- @Column(nullable = true,columnDefinition = "灞炴�ф灇涓炬樉绀哄悕绉�")
- private String jtargeNumText;
- /**
- * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
- */
- @Column(nullable = false,columnDefinition = "灞炴�ф灇涓惧唴閮ㄥ悕绉�")
- private String jtargeNumTextValue;
-
- public String getJmetaListId() {
- return jmetaListId;
- }
-
- public void setJmetaListId(String jmetaListId) {
- this.jmetaListId = jmetaListId;
- }
-
- 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;
- }
-
- @Override
- public String toString() {
- return "DockingPreAttrRangeDO{" +
- "jmetaListId='" + jmetaListId + '\'' +
- ", jnumText='" + jnumText + '\'' +
- ", jnumTextValue='" + jnumTextValue + '\'' +
- ", jtargeNumText='" + jtargeNumText + '\'' +
- ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingTaskDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingTaskDO.java
deleted file mode 100644
index 2d718b4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/DockingTaskDO.java
+++ /dev/null
@@ -1,224 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * 鏁版嵁鍙戝竷銆佷慨鏀瑰悗锛岃褰曚笅闇�瑕侀�氱煡鐨勭郴缁�
- * 姣斿锛歄A绯荤粺鐢宠浜嗕汉鍛樿繖涓垎绫荤殑鏁版嵁锛屼汉鍛樿繖涓垎绫讳笅鍙戝竷浜嗕竴鏉℃柊鏁版嵁锛岄渶瑕佹妸鏉℃暟鎹帹閫佺粰OA绯荤粺锛屼細鍦ㄨ繖涓笟鍔$被鍨嬩笅浜х敓涓�鏉℃暟鎹�傜劧鍚庡畾鏃跺櫒鎸夋椂鍙戦�佷换鍔°��
- * 濡傛灉鏈変袱涓郴缁熺敵璇蜂簡浜哄憳鏁版嵁锛屽氨浼氫骇鐢熶袱鏉℃暟鎹�
- * @author wangyi
- * @date 2022-3-7
- */
-@VciBtmType(name = MdmBtmTypeConstant.DOCKING_TASK,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class DockingTaskDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 5020487634341415429L;
-
- /**
- * 绯荤粺鎺ュ彛oid
- */
- @Column(nullable = false,columnDefinition = "绯荤粺鎺ュ彛oid")
- private String sysinfooid;
-
- /**
- * 绯荤粺id
- */
- @Column(nullable = false,columnDefinition = "绯荤粺oid")
- private String systemoid;
-
- /**
- * 绯荤粺缂栧彿
- */
- @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
- private String systemcode;
-
- /**
- * 绯荤粺鍚嶇О
- */
- @Column(nullable = false,columnDefinition = "绯荤粺鍚嶇О")
- private String systemname;
-
- /**
- * 鍒嗙被oid
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被oid")
- private String classifyoid;
-
- /**
- * 鍒嗙被id
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被id")
- private String classifyid;
-
- /**
- * 鍒嗙被鍚嶇О
- */
- @Column(nullable = false,columnDefinition = "鍒嗙被鍚嶇О")
- private String classifyname;
-
- /**
- * 涓氬姟绫诲瀷鏁版嵁oid
- */
- @Column(nullable = false,columnDefinition = "涓氬姟绫诲瀷鏁版嵁oid")
- private String btmoid;
-
- /**
- * 涓氬姟绫诲瀷鏁版嵁id
- */
- @Column(nullable = false,columnDefinition = "涓氬姟绫诲瀷鏁版嵁id")
- private String btmid;
-
- /**
- * 鍞竴鏍囪瘑
- */
- @Column(columnDefinition = "鍞竴鏍囪瘑")
- private String uniquecode;
-
- /**
- * 鍙戦�佺被鍨�
- */
- @Column(nullable = false,columnDefinition = "鍙戦�佺被鍨�")
- private String sendtype;
-
- /**
- * 鏄惁鍙戦�佹垚鍔�
- */
- @Column(nullable = false,columnDefinition = "鏄惁鍙戦�佹垚鍔�")
- private String sendflag;
-
- /**
- * dockingdata鐨刼id
- */
- @Column(nullable = false,columnDefinition = "dockingdata鐨刼id")
- private String dataoid;
-
- public String getSendtype() {
- return sendtype;
- }
-
- public void setSendtype(String sendtype) {
- this.sendtype = sendtype;
- }
-
- 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 getSysinfooid() {
- return sysinfooid;
- }
-
- public void setSysinfooid(String sysinfooid) {
- this.sysinfooid = sysinfooid;
- }
-
- public String getUniquecode() {
- return uniquecode;
- }
-
- public void setUniquecode(String uniquecode) {
- this.uniquecode = uniquecode;
- }
- public String getDataoid() {
- return dataoid;
- }
-
- public void setDataoid(String dataoid) {
- this.dataoid = dataoid;
- }
-
-
- @Override
- public String toString() {
- return "DockingTaskDO{" +
- "sysinfooid='" + sysinfooid + '\'' +
- ", systemoid='" + systemoid + '\'' +
- ", systemcode='" + systemcode + '\'' +
- ", systemname='" + systemname + '\'' +
- ", classifyoid='" + classifyoid + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- ", btmoid='" + btmoid + '\'' +
- ", btmid='" + btmid + '\'' +
- ", sendflag='" + sendflag + '\'' +
- ", uniquecode='" + uniquecode + '\'' +
- ", sendtype='" + sendtype + '\'' +
- ", dataoid='" + dataoid + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntAuthorityDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntAuthorityDO.java
deleted file mode 100644
index e9bd2c4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntAuthorityDO.java
+++ /dev/null
@@ -1,159 +0,0 @@
-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;
-
-/**
- * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_AUTHORITY,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class SysIntAuthorityDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 1144067849291882385L;
-
- /**
- * 璁よ瘉缂栧彿
- */
- @Column(columnDefinition = "璁よ瘉缂栧彿")
- private String id;
-
- /**
- * 璁よ瘉鍚嶇О
- */
- @Column(columnDefinition = "璁よ瘉鍚嶇О")
- private String name;
-
- /**
- * 绯荤粺鎻忚堪
- */
- @Column(columnDefinition = "璁よ瘉鎻忚堪")
- private String description;
-
- /**
- * 璁よ瘉鏂瑰紡
- */
- @Column(columnDefinition = "璁よ瘉鏂瑰紡",nullable = false)
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,showTextField = "typeText")
- private String type;
-
- /**
- * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
- */
- @Transient()
- private String typeText;
-
- /**
- * 楠岃瘉鐢ㄦ埛
- */
- @Column(columnDefinition = "楠岃瘉鐢ㄦ埛")
- private String userAccount;
-
- /**
- * 楠岃瘉瀵嗙爜
- */
- @Column(columnDefinition = "楠岃瘉瀵嗙爜")
- private String userCode;
-
- /**
- * 楠岃瘉浠ょ墝
- */
- @Column(columnDefinition = "楠岃瘉浠ょ墝")
- private String token;
-
- @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;
- }
-
- 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;
- }
-
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
-
- @Override
- public String toString() {
- return "SysIntegrationAuthorityDO{" +
- "id='" + id + '\'' +
- ", name='" + name + '\'' +
- ", description='" + description + '\'' +
- ", type='" + type + '\'' +
- ", typeText='" + typeText + '\'' +
- ", userAccount='" + userAccount + '\'' +
- ", userCode='" + userCode + '\'' +
- ", token='" + token + '\'' +
- '}' + super.toString();
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntBaseDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntBaseDO.java
deleted file mode 100644
index 5333ac6..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntBaseDO.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * Description:绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- *
- * @author: LiHang
- * @date: Created on 2022/3/7
- */
-@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_BASE,text = "绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class SysIntBaseDO extends BaseModel {
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = -5910713918419137900L;
- /**
- * 绯荤粺缂栧彿
- */
- @Column(columnDefinition = "绯荤粺缂栧彿",nullable = false)
- private String id;
-
- /**
- * 绯荤粺鍚嶇О
- */
- @Column(columnDefinition = "绯荤粺鍚嶇О",nullable = false)
- 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 "SysIntegrationBaseDO{" +
- "id='" + id + '\'' +
- ", name='" + name + '\'' +
- ", description='" + description + '\'' +
- '}' + super.toString();
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntHeaderDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntHeaderDO.java
deleted file mode 100644
index 54e1298..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntHeaderDO.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- *
- * @author: wangyi
- * @date: Created on 2022/3/7
- */
-@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_HEADER,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class SysIntHeaderDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 1144067849291882385L;
-
- /**
- * SysIntInfoDO 鐨刼id
- */
- @Column(columnDefinition = "鎺ュ彛oid")
- private String infoOid;
-
- /**
- * 鍙傛暟key
- */
- @Column(columnDefinition = "鍙傛暟key")
- private String headerkey;
-
- /**
- * 鍙傛暟value
- */
- @Column(columnDefinition = "鍙傛暟value")
- private String headeralue;
-
- /**
- * 鏄惁浣跨敤
- */
- @Column(columnDefinition = "鏄惁浣跨敤")
- 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/blade-code/src/main/java/org/springblade/code/model/SysIntInfoDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntInfoDO.java
deleted file mode 100644
index 3b7e93d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntInfoDO.java
+++ /dev/null
@@ -1,656 +0,0 @@
-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;
-
-/**requesturl
- * Description: 绯荤粺闆嗘垚鎺ュ彛鍩虹淇℃伅
- *
- * @author LiHang
- * @date Created on 2022/3/7
- */
-@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_INFO,text = "绯荤粺闆嗘垚鍩虹淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class SysIntInfoDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = -6867365039736279037L;
-
- /**
- * 鍚敤銆佸仠鐢╰rue/false锛屼笉鐢ㄥ钩鍙扮殑鏋氫妇锛屽噺灏戝骞冲彴鐨勮�﹀悎
- */
- @Column(columnDefinition = "鍚敤鍋滅敤")
- private String usedflag;
-
- /**
- * 鍒嗙被oid
- */
- @Column(columnDefinition = "鍒嗙被oid")
- private String classifyoid;
-
- /**
- * 鍒嗙被id
- */
- @Column(columnDefinition = "鍒嗙被id")
- private String classifyid;
-
- /**
- * 鍒嗙被鍚嶇О
- */
- @Column(columnDefinition = "鍒嗙被鍚嶇О")
- private String classifyname;
-
- /**
- * 鎺ㄩ�佺郴缁無id
- */
- @Column(columnDefinition = "鎺ㄩ�佺郴缁無id")
- private String sysbaseoid;
-
- /**
- * 鎺ㄩ�佺郴缁熺紪鍙�
- */
- @Column(columnDefinition = "鎺ㄩ�佺郴缁熺紪鍙�")
- private String sysbaseid;
-
- /**
- * 鎺ㄩ�佺郴缁熷悕绉�
- */
- @Column(columnDefinition = "鎺ㄩ�佺郴缁熷悕绉�")
- private String sysbasename;
-
- /**
- * 鎺ュ彛鍑芥暟
- */
- @Column(columnDefinition = "鎺ュ彛鍑芥暟")
- private String interfaceFunction;
-
- /**
- * 鍛藉悕绌洪棿
- */
- @Column(columnDefinition = "鍛藉悕绌洪棿")
- private String namespace;
-
- /**
- * soapAction
- */
- @Column(columnDefinition = "soapAction")
- private String soapaction;
-
- /**
- * 鍙傛暟鍚嶇О
- */
- @Column(columnDefinition = "鍙傛暟鍚嶇О")
- private String targName;
-
- /**
- * cxfaxis
- */
- @Column(columnDefinition = "cxfaxis")
- private String cxfaxis;
-
- /**
- * 璇锋眰鍦板潃
- */
- @Column(columnDefinition = "璇锋眰鍦板潃")
- private String requestUrl;
-
- /**
- * 鎺ュ彛绫诲瀷
- */
- @Column(columnDefinition = "鎺ュ彛绫诲瀷")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_TYPE,showTextField = "interfaceTypeText")
- private String interfaceType;
-
- /**
- * 鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
- */
- @Transient()
- private String interfaceTypeText;
-
- /**
- * 鍙傛暟绫诲瀷
- */
- @Column(columnDefinition = "鍙傛暟绫诲瀷")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,showTextField = "paramTypeText")
- private String paramType;
-
- /**
- * 鍙傛暟绫诲瀷鏄剧ず鏂囨湰
- */
- @Transient()
- private String paramTypeText;
-
- /**
- * 杩斿洖鍊肩被鍨�
- */
- @Column(columnDefinition = "杩斿洖鍊肩被鍨�")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,showTextField = "returnTypeText")
- private String returnType;
-
- /**
- * 杩斿洖鍊肩被鍨嬫樉绀烘枃鏈�
- */
- @Transient()
- private String returnTypeText;
-
- //===================================浠ヤ笅鏆傛椂涓嶇敤
-
- /**
- * 瀛樺偍鐨勪笟鍔$被鍨�
- */
- @Column(columnDefinition = "涓氬姟绫诲瀷鐨勭紪鍙�")
- private String btmTypeId;
-
- /**
- * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
- */
- @Column(columnDefinition = "涓氬姟绫诲瀷鐨勫悕绉�")
- private String btmTypeName;
-
- /**
- * 鏉ユ簮绯荤粺涓婚敭
- */
- @Column(columnDefinition = "鏉ユ簮绯荤粺涓婚敭")
- @VciUseRefer(MdmBtmTypeConstant.SYS_INT_BASE)
- private String sourceSystemOid;
-
- /**
- * 婧愮郴缁熷悕绉�
- */
- //@Transient(referColumn = "sourceSystemOid.name")
- private String sourceSysName;
-
- /**
- * 婧愮郴缁熸爣璇�
- */
- //@Transient(referColumn = "sourceSystemOid.id")
- private String sourceSysId;
-
- /**
- * 鐩爣绯荤粺涓婚敭
- */
- @Column(columnDefinition = "鐩爣绯荤粺涓婚敭")
- @VciUseRefer(MdmBtmTypeConstant.SYS_INT_BASE)
- private String targetSystemOid;
-
- /**
- * 鐩爣绯荤粺鍚嶇О
- */
- //@Transient(referColumn = "targetSystemOid.name")
- private String targetSysName;
-
- /**
- * 鐩爣绯荤粺鏍囪瘑
- */
- //@Transient(referColumn = "targetSystemOid.id")
- private String targetSysId;
-
- /**
- * 璇锋眰鏂瑰紡
- */
- @Column(columnDefinition = "璇锋眰鏂瑰紡")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_METHOD_TYPE,showTextField = "requestMethodText")
- private String requestMethod;
-
- /**
- * 璇锋眰鏂瑰紡鏄剧ず鏂囨湰
- */
- @Transient()
- private String requestMethodText;
-
- /**
- * 璁よ瘉鏂瑰紡涓婚敭
- */
- @Column(columnDefinition = "璁よ瘉鏂瑰紡涓婚敭")
- @VciUseRefer(MdmBtmTypeConstant.SYS_INT_AUTHORITY)
- private String authorityOid;
-
- /**
- * 璁よ瘉鏂瑰紡
- */
- @Transient(referColumn = "authorityOid.type")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,showTextField = "authorityTypeText")
- private String authorityType;
-
- /**
- * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
- */
- @Transient()
- private String authorityTypeText;
-
- /**
- * 楠岃瘉鐢ㄦ埛
- */
- @Transient(referColumn = "authorityOid.userAccount")
- private String userAccount;
-
- /**
- * 楠岃瘉瀵嗙爜
- */
- @Transient(referColumn = "authorityOid.userCode")
- private String userCode;
-
- /**
- * 楠岃瘉浠ょ墝
- */
- @Transient(referColumn = "authorityOid.token")
- private String token;
-
- /**
- * 鎺ュ彛鎻忚堪
- */
- @Column(columnDefinition = "鎺ュ彛鎻忚堪")
- private String description;
-
- /**
- * 绫昏矾寰�
- */
- @Column(columnDefinition = "绫昏矾寰�")
- private String classPath;
-
- /**
- * 鏁版嵁娴佸悜鏂瑰紡
- */
- @Column(columnDefinition = "鏁版嵁娴佸悜鏂瑰紡")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_DATA_FLOW_TYPE,showTextField = "dataFlowTypeText")
- private String dataFlowType;
-
- /**
- * 鏁版嵁娴佸悜鏂瑰紡鐨勬樉绀哄瓧娈�
- */
- @Transient()
- private String dataFlowTypeText;
-
- /***
- * 鎺ㄩ�佺被鍨� 1:鏁版嵁鎺ㄩ��/2鍒嗙被鎺ㄩ�侊紝榛樿鏁版嵁鎺ㄩ��
- */
- @Column(columnDefinition = "鎺ㄩ�佺被鍨�")
- @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,showTextField = "pushTypeText")
- private String pushType;
- /***
- * 鎺ㄩ�佺被鍨嬫樉绀哄��
- */
- @Transient()
- private String pushTypeText;
-
- public String getClassifyid() {
- return classifyid;
- }
-
- public void setClassifyid(String classifyid) {
- this.classifyid = classifyid;
- }
-
- public String getClassifyname() {
- return classifyname;
- }
-
- public void setClassifyname(String classifyname) {
- this.classifyname = classifyname;
- }
-
- public 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 getClassPath() {
- return classPath;
- }
-
- public void setClassPath(String classPath) {
- this.classPath = classPath;
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getSourceSystemOid() {
- return sourceSystemOid;
- }
-
- public void setSourceSystemOid(String sourceSystemOid) {
- this.sourceSystemOid = sourceSystemOid;
- }
-
- public String getSourceSysName() {
- return sourceSysName;
- }
-
- public void setSourceSysName(String sourceSysName) {
- this.sourceSysName = sourceSysName;
- }
-
- public String getSourceSysId() {
- return sourceSysId;
- }
-
- public void setSourceSysId(String sourceSysId) {
- this.sourceSysId = sourceSysId;
- }
-
- public String getTargetSystemOid() {
- return targetSystemOid;
- }
-
- public void setTargetSystemOid(String targetSystemOid) {
- this.targetSystemOid = targetSystemOid;
- }
-
- public String getTargetSysName() {
- return targetSysName;
- }
-
- public void setTargetSysName(String targetSysName) {
- this.targetSysName = targetSysName;
- }
-
- public String getTargetSysId() {
- return targetSysId;
- }
-
- public void setTargetSysId(String targetSysId) {
- this.targetSysId = targetSysId;
- }
-
- public String 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 getRequestUrl() {
- return requestUrl;
- }
-
- public void setRequestUrl(String requestUrl) {
- this.requestUrl = requestUrl;
- }
-
- 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 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 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 getAuthorityOid() {
- return authorityOid;
- }
-
- public void setAuthorityOid(String authorityOid) {
- this.authorityOid = authorityOid;
- }
-
- public String getUserAccount() {
- return userAccount;
- }
-
- public void setUserAccount(String userAccount) {
- this.userAccount = userAccount;
- }
-
- public String getUserCode() {
- return userCode;
- }
-
- public void setUserCode(String userCode) {
- this.userCode = userCode;
- }
-
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
-
- public String getInterfaceFunction() {
- return interfaceFunction;
- }
-
- public void setInterfaceFunction(String interfaceFunction) {
- this.interfaceFunction = interfaceFunction;
- }
-
- public String getAuthorityType() {
- return authorityType;
- }
-
- public void setAuthorityType(String authorityType) {
- this.authorityType = authorityType;
- }
-
- public String getAuthorityTypeText() {
- return authorityTypeText;
- }
-
- public void setAuthorityTypeText(String authorityTypeText) {
- this.authorityTypeText = authorityTypeText;
- }
-
- public String 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 String getPushType() {
- return pushType;
- }
-
- public void setPushType(String pushType) {
- this.pushType = pushType;
- }
-
- public String getPushTypeText() {
- return pushTypeText;
- }
-
- public void setPushTypeText(String pushTypeText) {
- this.pushTypeText = pushTypeText;
- }
-
- @Override
- public String toString() {
- return "SysIntInfoDO{" +
- "usedflag='" + usedflag + '\'' +
- ", classifyoid='" + classifyoid + '\'' +
- ", classifyid='" + classifyid + '\'' +
- ", classifyname='" + classifyname + '\'' +
- ", sysbaseoid='" + sysbaseoid + '\'' +
- ", sysbaseid='" + sysbaseid + '\'' +
- ", sysbasename='" + sysbasename + '\'' +
- ", interfaceFunction='" + interfaceFunction + '\'' +
- ", namespace='" + namespace + '\'' +
- ", soapaction='" + soapaction + '\'' +
- ", targName='" + targName + '\'' +
- ", cxfaxis='" + cxfaxis + '\'' +
- ", requestUrl='" + requestUrl + '\'' +
- ", interfaceType='" + interfaceType + '\'' +
- ", interfaceTypeText='" + interfaceTypeText + '\'' +
- ", paramType='" + paramType + '\'' +
- ", paramTypeText='" + paramTypeText + '\'' +
- ", returnType='" + returnType + '\'' +
- ", returnTypeText='" + returnTypeText + '\'' +
- ", btmTypeId='" + btmTypeId + '\'' +
- ", btmTypeName='" + btmTypeName + '\'' +
- ", sourceSystemOid='" + sourceSystemOid + '\'' +
- ", sourceSysName='" + sourceSysName + '\'' +
- ", sourceSysId='" + sourceSysId + '\'' +
- ", targetSystemOid='" + targetSystemOid + '\'' +
- ", targetSysName='" + targetSysName + '\'' +
- ", targetSysId='" + targetSysId + '\'' +
- ", requestMethod='" + requestMethod + '\'' +
- ", requestMethodText='" + requestMethodText + '\'' +
- ", authorityOid='" + authorityOid + '\'' +
- ", authorityType='" + authorityType + '\'' +
- ", authorityTypeText='" + authorityTypeText + '\'' +
- ", userAccount='" + userAccount + '\'' +
- ", userCode='" + userCode + '\'' +
- ", token='" + token + '\'' +
- ", description='" + description + '\'' +
- ", classPath='" + classPath + '\'' +
- ", dataFlowType='" + dataFlowType + '\'' +
- ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
- ", pushType='" + pushType + '\'' +
- ", pushTypeText='" + pushTypeText + '\'' +
- '}';
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntParamDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntParamDO.java
deleted file mode 100644
index 55703c1..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/SysIntParamDO.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.springblade.code.model;
-
-
-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;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-
-/**
- * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- *
- * @author: wangyi
- * @date: Created on 2022/3/7
- */
-@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_PARAMTERY,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
-public class SysIntParamDO extends BaseModel {
-
- /**
- * 搴忓垪鍖�
- */
- private static final long serialVersionUID = 1144067849291882385L;
-
- /**
- * SysIntInfoDO 鐨刼id
- */
- @Column(columnDefinition = "鎺ュ彛oid")
- private String infoOid;
-
- /**
- * 鍙傛暟key
- */
- @Column(columnDefinition = "鍙傛暟key")
- private String paramkey;
-
- /**
- * 鍙傛暟value
- */
- @Column(columnDefinition = "鍙傛暟value")
- private String paramvalue;
-
- /**
- * 鏄惁浣跨敤
- */
- @Column(columnDefinition = "鏄惁浣跨敤")
- 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/blade-code/src/main/java/org/springblade/code/model/TaskDuckingDO.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/TaskDuckingDO.java
deleted file mode 100644
index bcb3abc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/model/TaskDuckingDO.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.springblade.code.model;
-
-/**
- * V5鍙戦�佹秷鎭璞�
- * @author wangyi
- * @date 2022-03-14
- */
-public class TaskDuckingDO {
-
- /**
- * 娉ㄥ唽绯荤粺缂栫爜
- */
- public String registerCode;
-
- /**
- * 绗笁鏂圭郴缁熷緟鍔炰富閿�
- */
- public String taskId;
-
- /**
- * 寰呭姙鏍囬
- */
- public String title;
-
- /**
- * 寰呭姙鍙戣捣浜哄鍚�
- */
- public String senderName;
-
- /**
- * 绫诲埆
- */
- public String classify;
-
- /**
- * 鍐呭绫诲瀷
- */
- public String contentType;
-
- /**
- * 鐘舵��0寰呭姙锛�1宸插姙
- */
- public String state;
-
- /**
- * H5绌块�忓湴鍧�
- */
- public String h5url;
- /**
- * PC绌块�忓湴鍧�
- */
- public String url;
- /**
- * 鐧诲綍鍚嶇О/浜哄憳缂栫爜/鎵嬫満鍙�/鐢靛瓙閭欢
- */
- public String noneBindingSender;
- /**
- * 鐧诲綍鍚嶇О/浜哄憳缂栫爜/鎵嬫満鍙�/鐢靛瓙閭欢
- */
- public String noneBindingReceiver;
-
- /**
- * 绗笁鏂圭郴缁熷彂閫佽�呬富閿�
- */
- public String thirdSenderId;
-
- /**
- * 绗笁鏂圭郴缁熸帴鏀朵汉涓婚敭
- */
- public String thirdReceiverId;
-
- /**
- * 寰呭姙鍙戣捣鏃ユ湡锛屾牸寮弝yyy-MM-dd HH:mm
- */
- public String creationDate;
-
- /**
- * 鍘熺敓app鐨勪笅杞藉湴鍧�
- */
- public String content;
-
- /**
- * 澶勭悊鍚庣姸鎬侊細0/1/2/3鍚屾剰宸插姙/涓嶅悓鎰忓凡鍔�/鍙栨秷/椹冲洖
- */
- public String subState;
-
- public String getRegisterCode() {
- return registerCode;
- }
-
- public void setRegisterCode(String registerCode) {
- this.registerCode = registerCode;
- }
-
- public String getTaskId() {
- return taskId;
- }
-
- public void setTaskId(String taskId) {
- this.taskId = taskId;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getSenderName() {
- return senderName;
- }
-
- public void setSenderName(String senderName) {
- this.senderName = senderName;
- }
-
- public String getClassify() {
- return classify;
- }
-
- public void setClassify(String classify) {
- this.classify = classify;
- }
-
- public String getContentType() {
- return contentType;
- }
-
- public void setContentType(String contentType) {
- this.contentType = contentType;
- }
-
- public String getState() {
- return state;
- }
-
- public void setState(String state) {
- this.state = state;
- }
-
- public String getH5url() {
- return h5url;
- }
-
- public void setH5url(String h5url) {
- this.h5url = h5url;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getNoneBindingSender() {
- return noneBindingSender;
- }
-
- public void setNoneBindingSender(String noneBindingSender) {
- this.noneBindingSender = noneBindingSender;
- }
-
- public String getNoneBindingReceiver() {
- return noneBindingReceiver;
- }
-
- public void setNoneBindingReceiver(String noneBindingReceiver) {
- this.noneBindingReceiver = noneBindingReceiver;
- }
-
- public String getThirdSenderId() {
- return thirdSenderId;
- }
-
- public void setThirdSenderId(String thirdSenderId) {
- this.thirdSenderId = thirdSenderId;
- }
-
- public String getThirdReceiverId() {
- return thirdReceiverId;
- }
-
- public void setThirdReceiverId(String thirdReceiverId) {
- this.thirdReceiverId = thirdReceiverId;
- }
-
- public String getCreationDate() {
- return creationDate;
- }
-
- public void setCreationDate(String creationDate) {
- this.creationDate = creationDate;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-
- public String getSubState() {
- return subState;
- }
-
- public void setSubState(String subState) {
- this.subState = subState;
- }
-
- @Override
- public String toString() {
- return "{" +
- "registerCode='" + registerCode + '\'' +
- ", taskId='" + taskId + '\'' +
- ", title='" + title + '\'' +
- ", senderName='" + senderName + '\'' +
- ", classify='" + classify + '\'' +
- ", contentType='" + contentType + '\'' +
- ", state='" + state + '\'' +
- ", h5url='" + h5url + '\'' +
- ", url='" + url + '\'' +
- ", noneBindingSender='" + noneBindingSender + '\'' +
- ", noneBindingReceiver='" + noneBindingReceiver + '\'' +
- ", thirdSenderId='" + thirdSenderId + '\'' +
- ", thirdReceiverId='" + thirdReceiverId + '\'' +
- ", creationDate='" + creationDate + '\'' +
- ", content='" + content + '\'' +
- ", subState='" + subState + '\'' +
- '}';
- }
-}
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
deleted file mode 100644
index 75db4ce..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeBasicSecServiceI.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package org.springblade.code.service;
-
-
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.*;
-import com.vci.web.pageModel.BatchCBO;
-import org.springblade.code.dto.CodeBasicSecDTO;
-import org.springblade.code.model.CodeBasicSecDO;
-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
deleted file mode 100644
index 7e538a8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeButtonServiceI.java
+++ /dev/null
@@ -1,115 +0,0 @@
-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.dto.CodeButtonDTO;
-import org.springblade.code.model.CodeButtonDO;
-import org.springblade.code.vo.pagemodel.CodeButtonVO;
-
-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
deleted file mode 100644
index aa38a9a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyProcessTempServiceI.java
+++ /dev/null
@@ -1,124 +0,0 @@
-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 com.vci.web.pageModel.BatchCBO;
-import org.springblade.code.dto.CodeClassifyProcessTempDTO;
-import org.springblade.code.model.CodeClassifyProcessTempDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyProcessTempVO;
-
-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
deleted file mode 100644
index 3ac7dd0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyServiceI.java
+++ /dev/null
@@ -1,240 +0,0 @@
-package org.springblade.code.service;
-
-
-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 org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.dto.CodeClassifyDTO;
-import org.springblade.code.model.CodeClassifyDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-
-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
deleted file mode 100644
index d854dd6..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTempMapItemServiceI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-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.dto.CodeClassifyTempMapItemDTO;
-import org.springblade.code.model.CodeClassifyTempMapItemDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTempMapItemVO;
-
-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
deleted file mode 100644
index cf1dcfa..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateAttrServiceI.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package org.springblade.code.service;
-
-
-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 org.springblade.code.dto.CodeClassifyTemplateAttrDTO;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-
-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
deleted file mode 100644
index 700e08c..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateButtonServiceI.java
+++ /dev/null
@@ -1,133 +0,0 @@
-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 com.vci.web.pageModel.BatchCBO;
-import org.springblade.code.dto.CodeClassifyTemplateButtonDTO;
-import org.springblade.code.model.CodeClassifyTemplateButtonDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
-
-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
deleted file mode 100644
index c327e9e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateMapServiceI.java
+++ /dev/null
@@ -1,100 +0,0 @@
-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.dto.CodeClassifyTemplateMapDTO;
-import org.springblade.code.model.CodeClassifyTemplateMapDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateMapVO;
-
-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
deleted file mode 100644
index d14eed2..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyTemplateServiceI.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.springblade.code.service;
-
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.*;
-import org.springblade.code.dto.CodeClassifyTemplateDTO;
-import org.springblade.code.model.CodeClassifyTemplateDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-
-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
deleted file mode 100644
index 830eaed..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeClassifyValueServiceI.java
+++ /dev/null
@@ -1,152 +0,0 @@
-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.Tree;
-import com.vci.starter.web.pagemodel.TreeQueryObject;
-import org.springblade.code.dto.CodeClassifyValueDTO;
-import org.springblade.code.model.CodeClassifyValueDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyValueVO;
-
-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
deleted file mode 100644
index f895be7..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingServiceI.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.springblade.code.service;
-
-
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.PageHelper;
-import org.springblade.code.model.DockingDataDO;
-import org.springblade.code.model.DockingLogeDO;
-import org.springblade.code.model.DockingTaskDO;
-import org.springblade.code.model.SysIntHeaderDO;
-
-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
deleted file mode 100644
index a18196e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeDuckingSyncServiceI.java
+++ /dev/null
@@ -1,48 +0,0 @@
-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
deleted file mode 100644
index ef3ebc6..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeFixedValueServiceI.java
+++ /dev/null
@@ -1,124 +0,0 @@
-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.dto.CodeFixedValueDTO;
-import org.springblade.code.model.CodeFixedValueDO;
-import org.springblade.code.vo.pagemodel.CodeFixedValueVO;
-
-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
deleted file mode 100644
index 895cc68..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeKeyAttrRepeatRuleServiceI.java
+++ /dev/null
@@ -1,115 +0,0 @@
-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
deleted file mode 100644
index d18a60f..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodePhaseAttrServiceI.java
+++ /dev/null
@@ -1,107 +0,0 @@
-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.dto.CodePhaseAttrDTO;
-import org.springblade.code.model.CodePhaseAttrDO;
-import org.springblade.code.vo.pagemodel.CodePhaseAttrVO;
-
-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
deleted file mode 100644
index bf061ec..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeResembleRuleServiceI.java
+++ /dev/null
@@ -1,100 +0,0 @@
-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.dto.CodeResembleRuleDTO;
-import org.springblade.code.model.CodeResembleRuleDO;
-import org.springblade.code.vo.pagemodel.CodeResembleRuleVO;
-
-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
deleted file mode 100644
index c822141..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeRuleServiceI.java
+++ /dev/null
@@ -1,175 +0,0 @@
-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.dto.CodeRuleDTO;
-import org.springblade.code.model.CodeRuleDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-
-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
deleted file mode 100644
index fad2385..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSerialAlgorithmServiceI.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.springblade.code.service;
-
-import com.vci.starter.web.pagemodel.DataGrid;
-import org.springblade.code.vo.pagemodel.CodeSerialAlgorithmVO;
-
-/**
- * 娴佹按绠楁硶绫�
- * @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
deleted file mode 100644
index 9120d9b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeSynonymServiceI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-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.dto.CodeSynonymDTO;
-import org.springblade.code.model.CodeSynonymDO;
-import org.springblade.code.vo.pagemodel.CodeSynonymVO;
-
-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
deleted file mode 100644
index cb88e8d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/CodeTemplatePhaseServiceI.java
+++ /dev/null
@@ -1,137 +0,0 @@
-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 com.vci.web.pageModel.BatchCBO;
-import org.springblade.code.dto.CodeTemplatePhaseDTO;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-import org.springblade.code.model.CodeTemplatePhaseDO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeTemplatePhaseVO;
-
-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/DockingPreApplyDataInfoServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreApplyDataInfoServiceI.java
deleted file mode 100644
index b8bbd54..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreApplyDataInfoServiceI.java
+++ /dev/null
@@ -1,100 +0,0 @@
-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.dto.DockingPreApplyDataInfoDTO;
-import org.springblade.code.model.DockingPreApplyDataInfoDO;
-import org.springblade.code.vo.pagemodel.DockingPreApplyDataInfoVO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟鎺ュ彛
- *
- * @author weidy
- * @date 2022-04-05
- */
-public interface DockingPreApplyDataInfoServiceI {
- /**
- * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<DockingPreApplyDataInfoVO> gridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataInfoDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoDO2VOs(Collection<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOs) throws VciBaseException;
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataInfoDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DockingPreApplyDataInfoVO dockingPreApplyDataInfoDO2VO(DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) throws VciBaseException;
-
- /**
- * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- DockingPreApplyDataInfoVO addSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
-
- /**
- * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- DockingPreApplyDataInfoVO editSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
-
-
- /**
- * 鍒犻櫎璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- BaseResult deleteDockingPreApplyDataInfo(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
-
- /**
- * 涓婚敭鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oid 涓婚敭
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- DockingPreApplyDataInfoVO getObjectByOid(String oid) throws VciBaseException;
-
- /**
- * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- Collection<DockingPreApplyDataInfoVO> listDockingPreApplyDataInfoByOids(Collection<String> oidCollections) throws VciBaseException;
-
-
-
- /**
- * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<DockingPreApplyDataInfoVO> refDataGridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreApplyDataServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreApplyDataServiceI.java
deleted file mode 100644
index d9969b6..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreApplyDataServiceI.java
+++ /dev/null
@@ -1,152 +0,0 @@
-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.dto.CodeOrderDTO;
-import org.springblade.code.dto.DockingPreApplyDataDTO;
-import org.springblade.code.dto.DockingPreApplyDataInfoDTO;
-import org.springblade.code.dto.PreApplyCodeOrderDTO;
-import org.springblade.code.model.DockingPreApplyDataDO;
-import org.springblade.code.vo.pagemodel.DockingPreApplyDataVO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟鎺ュ彛
- *
- * @author weidy
- * @date 2022-04-05
- */
-public interface DockingPreApplyDataServiceI {
-
-
- /***
- * 鎵归噺缁存姢鍒嗙被璁剧疆
- * @param dockingPreApplyDataDTO
- * @return
- * @throws VciBaseException
- */
- List<DockingPreApplyDataVO> batchSetDataClassId(DockingPreApplyDataDTO dockingPreApplyDataDTO)throws VciBaseException;
-
- /***
- * 鏍规嵁閫夋嫨棰濋鐢宠鐨勬暟鎹嬀閫夋暟鎹�
- * @param codeClassifyOid
- * @param templateOid
- * @param btmType
- * @param dataOids
- * @return
- * @throws VciBaseException
- */
- DataGrid<Map<String,String>> gridApplyData(String codeClassifyOid,String templateOid,String btmType,String dataOids)throws VciBaseException;
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs) throws VciBaseException;
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO) throws VciBaseException;
-
- /**
- * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- DockingPreApplyDataVO addSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
-
- /**
- * 鍒犻櫎璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- BaseResult deleteDockingPreApplyData(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
-
- /**
- * 涓婚敭鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oid 涓婚敭
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- DockingPreApplyDataVO getObjectByOid(String oid) throws VciBaseException;
-
- /**
- * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- Collection<DockingPreApplyDataVO> listDockingPreApplyDataByOids(Collection<String> oidCollections) throws VciBaseException;
-
- /**
- * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<DockingPreApplyDataVO> refDataGridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
- //==================
- /**
- * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<DockingPreApplyDataVO> gridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
- /**
- * 鎻掑叆data鍜宒atainfo,浼氳嚜鍔ㄦ妸data閲岀殑oid,unique璧嬪�煎埌datainfo閲岃竟鍘�
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @param dockingPreApplyDataInfoDTOList 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁璇︾粏淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- void addSaveDataAndInfo(DockingPreApplyDataDTO dockingPreApplyDataDTO, List<DockingPreApplyDataInfoDTO> dockingPreApplyDataInfoDTOList) throws VciBaseException;
-
- /**
- * 淇敼 datas
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- BaseResult editSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
-
- /**
- * 鏍规嵁data鐨刼id鏌ヨdata淇℃伅鍜宒atainfo淇℃伅锛屽苟涓旀嫾鎺atainfo涓簃ap
- * @param dockingPreApplyDataDTO
- * @return
- * @throws VciBaseException
- */
- BaseResult<Map<String,String>> getDataInfoMap(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
-
- /**
- * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
- * 1銆佽皟鐢╡ngineService.addSaveCode(orderDTO)鍏堟彃鍏ラ鐢宠鏁版嵁鍒板搴斾富棰樺簱闈欐�佹暟鎹�
- * 2銆佷慨鏀筪ockingPreApplyData鐨勫垎绫籵id鍜屽垎绫诲悕绉�
- */
- BaseResult applyData(List<PreApplyCodeOrderDTO> preApplyCodeOrderDTOList);
-
- /**
- * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
- * 1銆佽皟鐢╡ngineService.addSaveCode(orderDTO)鍏堟彃鍏ラ鐢宠鏁版嵁鍒板搴斾富棰樺簱闈欐�佹暟鎹�
- * 2銆佷慨鏀筪ockingPreApplyData鐨勫垎绫籵id鍜屽垎绫诲悕绉�
- */
- BaseResult batchApplyDatas(List<CodeOrderDTO> CodeOrderDTOs);
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreAttrMappingSeviceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreAttrMappingSeviceI.java
deleted file mode 100644
index f6182bf..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/DockingPreAttrMappingSeviceI.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.springblade.code.service;
-
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.PageHelper;
-import org.springblade.code.dto.DockingPreAttrMappingDTO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrMappingVO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrRangeVO;
-
-import java.util.List;
-import java.util.Map;
-
-public interface DockingPreAttrMappingSeviceI {
- /***
- * 灞炴�ф槧灏勯厤缃垪琛�
- * @param clsfId
- * @param type
- * @param conditionMap
- * @param pageHelper
- * @return
- * @throws VciBaseException
- */
- DataGrid<DockingPreAttrMappingVO> gridAttrMappings(String clsfId,int type,Map<String, String> conditionMap, PageHelper pageHelper)throws VciBaseException;
- /***
- * 鏋氫妇鏄犲皠閰嶇疆鍒楄〃
- * @param attrkey
- * @param type
- * @param conditionMap
- * @param pageHelper
- * @return
- * @throws VciBaseException
- */
- DataGrid<DockingPreAttrRangeVO> gridAttrRanges(String attrkey, int type, Map<String, String> conditionMap, PageHelper pageHelper)throws VciBaseException;
- /**
- * 淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
- * @param dockingPreAttrMappingDTOS 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
- */
- public List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingDTO> dockingPreAttrMappingDTOS)throws VciBaseException;
-
- /***
- * 鏍规嵁鏉′欢鏌ヨ灞炴�ф槧灏勯厤缃俊鎭�
- * @param conditionMap
- * @return
- * @throws VciBaseException
- */
- List<DockingPreAttrMappingVO> selectAttrMappings(Map<String, String> conditionMap)throws VciBaseException;
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmEngineServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmEngineServiceI.java
deleted file mode 100644
index a471b09..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmEngineServiceI.java
+++ /dev/null
@@ -1,361 +0,0 @@
-package org.springblade.code.service;
-
-import com.vci.starter.web.pagemodel.*;
-import com.vci.web.dto.BaseModelDTO;
-import com.vci.web.pageModel.KeyValue;
-import com.vci.web.pageModel.UIFormItemVO;
-import com.vci.web.pageModel.UITableFieldVO;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.bo.CodeTemplateAttrSqlBO;
-import org.springblade.code.dto.CodeDeleteBatchDTO;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.vo.pagemodel.*;
-import plm.bs.bom.clientobject.ClientBusinessObject;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 涓绘暟鎹紩鎿庢湇鍔�
- * @author weidy
- * @date 2022-2-21
- */
-public interface MdmEngineServiceI {
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳
- * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
- * @param functionId 鍔熻兘鐨勭紪鍙�
- * @return UI鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
-
- /**
- * 浣跨敤涓婚搴撳垎绫昏幏鍙杣i鐩稿叧鐨勫唴瀹癸紙涓嶅寘鍚寜閽級
- * @param codeClassifyOid 涓婚搴撶殑鍒嗙被鐨勪富閿�
- * @return UI鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getTableDefineByClassifyOid(String codeClassifyOid);
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟
- * @param codeClassifyOid 鍒嗙被涓婚敭
- * @param phase 闃舵鐨勫悕绉�
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
- */
- MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String phase);
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 妯℃澘鐨勬樉绀哄璞�
- */
- CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid);
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param hasAttr 鍖呭惈灞炴��
- * @return 妯℃澘鐨勬樉绀哄璞�
- */
- CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr);
-
- /**
- * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
- * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid);
-
- /**
- * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
- * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
- * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫荤殑涓婚敭
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid,String codeClassifyOid);
-
- /**
- * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid);
-
- /**
- * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹�
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- MdmUIInfoVO getTableDefineByTemplateOid(String templateOid);
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
- */
- List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid);
-
- /**
- * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
- */
- List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid);
-
- /**
- * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param templateOid 妯℃澘鐨勪富閿�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鐨勫璞�
- * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級
- */
- DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
- * @param btmType 涓氬姟绫诲瀷
- * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴��
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉瀵硅薄
- * @return 鏁版嵁鍒楄〃
- */
- DataGrid<Map<String,String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper);
-
- /**
- * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅
- * @param btmType 涓氬姟绫诲瀷
- * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞�
- * @return sql鐨勭浉鍏充俊鎭�
- */
- CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper);
-
- /**
- * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭
- * @param dataMap 鏁版嵁鐨勫唴瀹�
- * @param templateVO 妯℃澘鐨勬樉绀�
- */
- void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO);
-
- /**
- * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
- * @param dataMap 鏁版嵁鐨勬槧灏�
- * @param templateVO 妯℃澘鐨勫睘鎬�
- * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
- * @param form 鏄惁涓鸿〃鍗曪紝琛ㄥ崟涓嶄細杞崲鏃堕棿鏍煎紡
- */
- void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
- Collection<String> onlySelectAttrIdList,boolean form);
-
- /**
- * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
- * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
- * @return 涓嬫媺閫夐」
- */
- List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO);
-
- /**
- * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭�
- * @param oid 涓婚敭
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return 鏁版嵁鐨勫唴瀹�
- */
- BaseResult<Map<String, String>> getDataByOid(String oid, String templateOid);
-
- /**
- * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 缂栫爜瑙勫垯鐨勫唴瀹�
- */
- CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid);
-
- /**
- * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
- * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @return 瑙勫垯鐨勫唴瀹�
- */
- CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO);
-
- /**
- * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
- * @param classifySecOid 鐮佹鐨勪富閿�
- * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
- * @return 鍒嗙被鐮佸�肩殑鍐呭
- */
- List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid);
-
- /**
- * 鐢宠鍗曚竴缂栫爜
- * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
- * @return 杩斿洖缂栫爜鐨勫唴瀹�
- */
- String addSaveCode(CodeOrderDTO orderDTO);
-
- /**
- * 淇敼涓婚搴撴暟鎹�
- * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
- */
- void editSaveCode(CodeOrderDTO orderDTO);
-
- /**
- * 鍗囩増鐨勪富棰樺簱鏁版嵁
- * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭
- */
- void upSaveCode(CodeOrderDTO orderDTO);
-
- /**
- * 淇濆瓨鍙緭鍙�夌殑淇℃伅
- * @param templateVO 妯℃澘鐨勫璞�
- * @param cboList 鏁版嵁鐨勫唴瀹�
- */
- void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList);
-
- /**
- * 鍒犻櫎涓婚搴撴暟鎹�
- * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿�
- */
- void deleteCode(CodeDeleteBatchDTO deleteBatchDTO);
-
- /**
- * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
- * @param value 褰撳墠鐨勫��
- * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
- * @param attrId 灞炴�х殑缂栧彿
- * @param trim 鏄惁鍘婚櫎绌烘牸
- * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓
- * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙�
- * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸
- * @param conditionMap 鏌ヨ鏉′欢
- */
- void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatRuleVO keyRuleVO, String attrId,
- boolean trim, boolean ignoreCase, boolean ignoreWidth,
- boolean trimAll, Map<String, String> conditionMap);
-
- /**
- * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
- * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
- * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
- */
- void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO);
-
- /**
- * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴��
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param phase 闃舵鐨勫悕绉�
- * @return 灞炴�х殑鑻辨枃鍚嶇О
- */
- List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase);
-
- /**
- * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 鍒嗙被鏍�
- */
- List<Tree> hasSelfClassifyTree(String codeClassifyOid);
-
- /**
- * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param codeTemplateOid 妯℃澘鐨勪富閿�
- * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫��
- */
- Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid);
-
- /**
- * 棰勮缁勫悎瑙勫垯
- * @param orderDTO 鐢宠缂栫爜鐨勪俊鎭�
- * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖
- */
- Map<String,String> previewCompRule(CodeOrderDTO orderDTO);
-
- /**
- * 淇敼鐘舵��
- * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
- */
- void changeStatus(BaseModelDTO baseModelDTO);
-
- /**
- * 鐩镐技椤规煡璇�
- * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
- * @return 鏁版嵁鍒楄〃
- */
- DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO);
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
- * @param codeClassifyOid 鍒嗙被涓婚敭
- * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
- */
- CodeResembleRuleVO getUseResembleRuleByClassifyOid(String codeClassifyOid);
- /**
- * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒�
- * @param fullInfoBO 绫诲叏閮ㄤ俊鎭�
- * @param currentClassifyVO 褰撳墠鐨勫垎绫�
- * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull
- */
- CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO);
-
- /**
- * 浣跨敤娴佺▼妯℃澘鑾峰彇鍦ㄩ〉闈笂鏄剧ず鐨勫睘鎬�
- * @param templateOid 妯℃澘鐨勪富閿�
- * @param executionId 娴佺▼鎵цid
- * @param processUse 妯℃澘娴佺▼鐢ㄩ��
- * @return 鐩稿叧灞炴��
- */
- List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse);
-
- /**
- * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃
- * @param oid 涓氬姟鏁版嵁涓婚敭
- * @param btmName 涓氬姟绫诲瀷
- * @param pass 鏄惁閫氳繃
- * @return 鎵ц缁撴灉
- */
- BaseResult markDataPassing(String oid, String btmName, Boolean pass);
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹�
- * @param btmType 涓氬姟绫诲瀷
- * @param queryObject 鏌ヨ瀵硅薄
- * @return 琛ㄦ牸鐨勬樉绀哄璞″��
- */
- DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject);
-
- /**
- * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹�
- * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
- * @return 鎵ц缁撴灉
- */
- BaseResult batchUpdateCode(List<CodeOrderDTO> orderDTOList);
-
- /**
- * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔�
- * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮�
- * @param functionId 鍔熻兘鐨勭紪鍙�
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�)
- */
- MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId);
-
- /**
- * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔�
- * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
- */
- MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath);
-
- /**
- * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
- *
- * @param attrVO 妯℃澘灞炴��
- * @param btmType 涓氬姟绫诲瀷
- * @return 琛ㄥ崟鐨勫瓧娈�
- */
- UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) ;
-
- UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit);
- void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmIOServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmIOServiceI.java
deleted file mode 100644
index b147458..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmIOServiceI.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.springblade.code.service;
-
-
-import com.vci.starter.poi.bo.SheetDataSet;
-import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.pagemodel.DataGrid;
-import org.springblade.code.dto.CodeExportAttrDTO;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.vo.pagemodel.*;
-import org.springblade.code.vo.universalInter.attrmap.DataObjectVO;
-import org.springblade.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
-
-import java.io.File;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 涓绘暟鎹鍏ュ鍑烘湇鍔�
- * @author weidy
- * @date 2022-3-6
- */
-public interface MdmIOServiceI {
-
- /**
- * 瀵煎嚭涓婚搴撶殑鏁版嵁
- * @param exportAttrDTO 瀵煎嚭鐩稿叧鐨勯厤缃紝蹇呴』瑕佹湁涓婚搴撳垎绫荤殑涓婚敭
- * @return 瀵煎嚭鐨別xcel鐨勬枃浠�
- */
- String exportCode(CodeExportAttrDTO exportAttrDTO);
-
- /**
- * 鐢熸垚瀵煎叆鐨勬枃浠�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
- * @return excel鐨勬枃浠跺湴鍧�
- */
- String createImportExcel(String codeClassifyOid,boolean isHistory);
-
-
- /**
- * 鐢熸垚瀵煎叆鐨勬枃浠�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return excel鐨勬枃浠跺湴鍧�
- */
- String downloadTopImportExcel(String codeClassifyOid);
-
-
- /**
- * 鎵归噺鐢宠缂栫爜鏁版嵁
- * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return 鏈夐敊璇俊鎭殑excel
- */
- CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file);
-
- /***
- *鎵归噺鐢宠缂栫爜鏁版嵁
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return 鏈夐敊璇俊鎭殑excel
- */
- CodeImProtRusultVO batchTopImportCode(String codeClassifyOid,String classifyAttr, File file);
- /***
- * 鎵归噺鐢宠缂栫爜鏁版嵁
- * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
- * @param templateVO//妯℃澘瀵硅薄
- * @param dataSet//鏁版嵁瀵硅薄
- * @param isNumType 鏄惁妫�楠屾灇涓�/鍙傜収
- * @return
- */
- List<String> batchImportCode(CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, SheetDataSet dataSet, Map<String,String> errorMap, boolean isNumType);
-
- /**
- * 瀵煎叆鍘嗗彶鏁版嵁
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return 鏈夐敊璇俊鎭殑excel
- */
- CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid,String classifyAttr, File file);
- /**
- * 闆嗘垚鎵归噺鐢宠鏁版嵁
- * @param orderDTO 鍒嗙被鐨勪富閿�
- * @param dataObjectVO 鏁版嵁淇℃伅
- * @param resultDataObjectDetailDOs 閿欒淇℃伅
- * @return 鏈夐敊璇俊鎭殑excel
- */
- void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs);
- /**
- * 闆嗘垚鎵归噺鏇存敼鏁版嵁
- * @param codeClassifyVO;
- * @param dataObjectVO 鏁版嵁淇℃伅
- * @param resultDataObjectDetailDOs 閿欒淇℃伅
- * @return 鏈夐敊璇俊鎭殑excel
- */
- void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs);
- /***
- * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆鐨勬暟鎹�
- * @param oid
- * @param redisOid
- * @return
- */
- public DataGrid<Map<String,String>> gridRowResemble(String oid, String redisOid);
- /***
- * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆鐨勬暟鎹�
- * @param codeClssifyOid
- * @param redisOid
- * @return
- */
- DataGrid<Map<String,String>> gridDatas(String codeClssifyOid,String redisOid);
- /***
- * 鏍规嵁瀵煎叆缂撳瓨id鑾峰彇鍒嗙被
- * @param redisOid
- * @return
- */
- public List<CodeImportTemplateVO> gridclassifys(String redisOid);
-
- /**
- * 鎵归噺鐢宠
- * @param codeImprotSaveDatVOList
- * @param isImprot
- * @return
- */
- public BaseResult batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmProductCodeServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmProductCodeServiceI.java
deleted file mode 100644
index ab7dd2a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/MdmProductCodeServiceI.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.springblade.code.service;
-
-import com.vci.web.pageModel.BatchCBO;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.dto.CodeOrderSecDTO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-import plm.bs.bom.clientobject.ClientBusinessObject;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 缂栫爜瑙勫垯鐢熸垚鐨勬湇鍔�
- * @author weidy
- * @date 2022-3-6
- */
-public interface MdmProductCodeServiceI {
-
- /**
- * 鐢熸垚缂栫爜--骞朵笖淇濆瓨鏁版嵁-鏂规硶鍔犻攣锛屽洜姝や笉鑳借繑鍥瀊atchCBO
- * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param ruleVO 缂栫爜瑙勫垯鐨勬樉绀哄璞�
- * @param secDTOList 鍚勪釜鐮佹鐨勫��
- * @param dataCBOList 涓氬姟鏁版嵁
- */
- List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
- CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<ClientBusinessObject> dataCBOList);
-
- /**
- * 鍥炴敹鐮佸��
- * @param btmId 涓氬姟鏁版嵁鐨勪笟鍔$被鍨�
- * @param businessOidCollection 涓氬姟鏁版嵁鐨勪富閿�
- * @return 鍙楀奖鍝嶇殑鏁版嵁鍐呭
- */
- BatchCBO recycleCode(String btmId, Collection<String> businessOidCollection);
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntAuthorityServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntAuthorityServiceI.java
deleted file mode 100644
index b941206..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntAuthorityServiceI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-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.dto.SysIntAuthorityDTO;
-import org.springblade.code.model.SysIntAuthorityDO;
-import org.springblade.code.vo.pagemodel.SysIntAuthorityVO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹湇鍔℃帴鍙�
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntAuthorityServiceI {
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntAuthorityVO> gridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntAuthorityDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- List<SysIntAuthorityVO> sysIntAuthorityDO2VOs(Collection<SysIntAuthorityDO> sysIntAuthorityDOs) throws VciBaseException;
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntAuthorityDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- SysIntAuthorityVO sysIntAuthorityDO2VO(SysIntAuthorityDO sysIntAuthorityDO) throws VciBaseException;
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntAuthorityVO addSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
-
- /**
- * 淇敼绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntAuthorityVO editSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
-
-
- /**
- * 鍒犻櫎绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- BaseResult deleteSysIntAuthority(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
-
- /**
- * 涓婚敭鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param oid 涓婚敭
- * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- SysIntAuthorityVO getObjectByOid(String oid) throws VciBaseException;
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- Collection<SysIntAuthorityVO> listSysIntAuthorityByOids(Collection<String> oidCollections) throws VciBaseException;
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鎺ュ彛鐨勮璇佸垪琛�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntAuthorityVO> refDataGridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntBaseServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntBaseServiceI.java
deleted file mode 100644
index 8226f62..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntBaseServiceI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-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.dto.SysIntBaseDTO;
-import org.springblade.code.model.SysIntBaseDO;
-import org.springblade.code.vo.pagemodel.SysIntBaseVO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭湇鍔℃帴鍙�
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntBaseServiceI {
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntBaseVO> gridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntBaseDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- List<SysIntBaseVO> sysIntBaseDO2VOs(Collection<SysIntBaseDO> sysIntBaseDOs) throws VciBaseException;
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntBaseDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- SysIntBaseVO sysIntBaseDO2VO(SysIntBaseDO sysIntBaseDO) throws VciBaseException;
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntBaseVO addSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
-
- /**
- * 淇敼绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntBaseVO editSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
-
-
- /**
- * 鍒犻櫎绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- BaseResult deleteSysIntBase(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
-
- /**
- * 涓婚敭鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param oid 涓婚敭
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- SysIntBaseVO getObjectByOid(String oid) throws VciBaseException;
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- Collection<SysIntBaseVO> listSysIntBaseByOids(Collection<String> oidCollections) throws VciBaseException;
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鐨勭郴缁熶俊鎭垪琛�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntBaseVO> refDataGridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntInfoServiceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntInfoServiceI.java
deleted file mode 100644
index e4b384a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/SysIntInfoServiceI.java
+++ /dev/null
@@ -1,159 +0,0 @@
-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.dto.SysIntInfoDTO;
-import org.springblade.code.dto.UpdateSysInfoStatusDTO;
-import org.springblade.code.model.SysIntHeaderDO;
-import org.springblade.code.model.SysIntInfoDO;
-import org.springblade.code.model.SysIntParamDO;
-import org.springblade.code.vo.pagemodel.SysIntInfoVO;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绯荤粺闆嗘垚鍩虹淇℃伅鏈嶅姟鎺ュ彛
- *
- * @author lihang
- * @date 2022-03-07
- */
-public interface SysIntInfoServiceI {
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鍩虹淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntInfoVO> gridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
- List<SysIntInfoDO> selectAll(Map conditonMap);
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntInfoDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- List<SysIntInfoVO> sysIntInfoDO2VOs(Collection<SysIntInfoDO> sysIntInfoDOs) throws VciBaseException;
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntInfoDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO) throws VciBaseException;
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鍩虹淇℃伅
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntInfoVO addSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
-
- /**
- * 淇敼绯荤粺闆嗘垚鍩虹淇℃伅
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- SysIntInfoVO editSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
-
-
- /**
- * 鍒犻櫎绯荤粺闆嗘垚鍩虹淇℃伅
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- BaseResult deleteSysIntInfo(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
-
- /**
- * 涓婚敭鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
- * @param oid 涓婚敭
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- SysIntInfoVO getObjectByOid(String oid) throws VciBaseException;
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- Collection<SysIntInfoVO> listSysIntInfoByOids(Collection<String> oidCollections) throws VciBaseException;
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鍩虹淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- DataGrid<SysIntInfoVO> refDataGridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
-
- /**
- * 褰撳墠鎺ュ彛淇℃伅鏄惁鏈変娇鐢ㄧ洰鏍囦俊鎭�
- * @param sysOid 绯荤粺Oid
- * @param authorityOid 璁よ瘉鏂瑰紡Oid
- * @return true = 鍦ㄤ娇鐢� 锛沠alse = 鏈娇鐢�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- boolean isAlreadyUse (String sysOid,String authorityOid) throws VciBaseException;
-
- //=========浠ヤ笅绯荤粺鍙傛暟鍜岄獙璇佷俊鎭�
-
- /**
- * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛鎵�鏈塸aram
- * @param sysInfoOid
- * @return
- */
- List<SysIntParamDO> getParamsBySystemInfoOid(String sysInfoOid);
-
- /**
- * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塸aram
- * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塸aram
- * @return
- */
- BaseResult updateParams(String sysInfoOid,List<SysIntParamDO> params);
-
- /**
- * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛鎵�鏈塰eader
- * @param sysInfoOid
- * @return
- */
- List<SysIntHeaderDO> getHeadersBySystemInfoOid(String sysInfoOid);
-
- /**
- * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塰eader
- * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塰eader
- * @return
- */
- BaseResult updateHeaders(String sysInfoOid,List<SysIntHeaderDO> params);
-
- /**
- * 鏍规嵁鍒嗙被oid鏌ヨ鎵�鏈夎鎺ㄩ�佽繖涓垎绫绘暟鎹殑鎺ュ彛淇℃伅
- * @param classifyOids
- * @return
- */
- List<SysIntInfoDO> getSysInfoByClassifyOid(String[] classifyOids);
-
- /***
- * 鏇存柊鎺ュ彛閰嶇疆淇℃伅鐘舵��
- * @param sysInfoStatusDTO
- * @return
- */
- public BaseResult updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO);
- BaseResult pushData(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/UniversalInterfaceI.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/UniversalInterfaceI.java
deleted file mode 100644
index e9ff043..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/UniversalInterfaceI.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.springblade.code.service;
-
-import javax.jws.WebService;
-
-/**
- * 缁熶竴鎺ュ彛
- *
- * @author xiejun
- * @date 2022-11-27
- */
-@WebService(targetNamespace = "http://code.web.vci.com/",name = "universalInterface")
-public interface UniversalInterfaceI {
- /**
- *缁熶竴鐢宠缂栫爜鎺ュ彛
- * @param data 浼犻�掔殑鏁版嵁鍙傛暟
- * @param dataType 鏍囪瘑data鏄痻ml鏍煎紡杩樻槸json鏍煎紡锛屾帴鍙h繑鍥炴暟鎹篃鏄寜鐓ц繖涓牸寮忥紝浠ヤ笅鎺ュ彛绫诲悓
- * @return xml鏍煎紡/json鏍煎紡
- * @throws Throwable
- */
- public String applyCode(String data,String dataType)throws Throwable;
-
- /***
- * 缁熶竴鏇存柊鎺ュ彛
- * @param data
- * @param dataType
- * @return
- * @throws Throwable
- */
- public String syncEditData(String data,String dataType)throws Throwable;
-
- /***
- * 鏌ヨ鍒嗙被鍙�
- * @param data
- * @param dataType
- * @throws Throwable
- */
- public String queryClassify(String data,String dataType)throws Throwable;
-
- /***
- * 鏌ヨ鏁版嵁
- * @param data
- * @param dataType
- * @throws Throwable
- */
- public String queryData(String data,String dataType)throws Throwable;
-
-}
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
deleted file mode 100644
index 777d11a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeBasicSecServiceImpl.java
+++ /dev/null
@@ -1,834 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-import com.alibaba.fastjson.JSONObject;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-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.UIFormReferVO;
-import com.vci.web.service.BdSelectInputCharServiceI;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodeBasicSecDaoI;
-import org.springblade.code.dao.CodeClassifyValueDaoI;
-import org.springblade.code.dao.CodeFixedValueDaoI;
-import org.springblade.code.dto.CodeBasicSecDTO;
-import org.springblade.code.enumpack.CodeSecTypeEnum;
-import org.springblade.code.lifecycle.CodeRuleLC;
-import org.springblade.code.model.CodeBasicSecDO;
-import org.springblade.code.model.CodeClassifyValueDO;
-import org.springblade.code.model.CodeFixedValueDO;
-import org.springblade.code.service.CodeBasicSecServiceI;
-import org.springblade.code.service.CodeClassifyValueServiceI;
-import org.springblade.code.service.CodeFixedValueServiceI;
-import org.springblade.code.service.CodeRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeBasicSecVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyValueVO;
-import org.springblade.code.vo.pagemodel.CodeFixedValueVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-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
deleted file mode 100644
index a6b7620..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeButtonServiceImpl.java
+++ /dev/null
@@ -1,322 +0,0 @@
-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.dao.CodeButtonDaoI;
-import org.springblade.code.dto.CodeButtonDTO;
-import org.springblade.code.model.CodeButtonDO;
-import org.springblade.code.service.CodeButtonServiceI;
-import org.springblade.code.vo.pagemodel.CodeButtonVO;
-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
deleted file mode 100644
index b9aeebb..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyProcessTempServiceImpl.java
+++ /dev/null
@@ -1,357 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.dao.CodeClassifyProcessTempDaoI;
-import org.springblade.code.dto.CodeClassifyProcessTempDTO;
-import org.springblade.code.model.CodeClassifyProcessTempDO;
-import org.springblade.code.service.CodeClassifyProcessTempServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyProcessTempVO;
-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.*;
-
-/**
- * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎湇鍔�
- * @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
deleted file mode 100644
index 326d0a0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyServiceImpl.java
+++ /dev/null
@@ -1,1022 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-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.lang.StringUtils;
-import org.apache.poi.hssf.util.HSSFColor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.dao.CodeClassifyDaoI;
-import org.springblade.code.dao.CodeClassifyTemplateDaoI;
-import org.springblade.code.dto.CodeClassifyDTO;
-import org.springblade.code.model.CodeClassifyDO;
-import org.springblade.code.model.CodeClassifyTemplateDO;
-import org.springblade.code.po.CodeClassifyPO;
-import org.springblade.code.service.CodeClassifyServiceI;
-import org.springblade.code.service.CodeDuckingServiceI;
-import org.springblade.code.service.CodeKeyAttrRepeatRuleServiceI;
-import org.springblade.code.service.CodeRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-import org.springblade.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-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.FrameWorkBusLangCodeConstant.*;
-import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
-
-/**
- * 涓婚搴撳垎绫绘湇鍔�
- * @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 codeClassifyId
- * @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
deleted file mode 100644
index 35e9895..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTempMapItemServiceImpl.java
+++ /dev/null
@@ -1,295 +0,0 @@
-package org.springblade.code.service.impl;
-
-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.springblade.code.dao.CodeClassifyTempMapItemDaoI;
-import org.springblade.code.dto.CodeClassifyTempMapItemDTO;
-import org.springblade.code.model.CodeClassifyTempMapItemDO;
-import org.springblade.code.service.CodeClassifyTempMapItemServiceI;
-import org.springblade.code.service.CodeClassifyTemplateAttrServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTempMapItemVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-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
deleted file mode 100644
index 983d2ee..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
+++ /dev/null
@@ -1,726 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-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.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodeClassifyTemplateAttrDaoI;
-import org.springblade.code.dao.CodeClassifyTemplateDaoI;
-import org.springblade.code.dto.CodeClassifyTemplateAttrDTO;
-import org.springblade.code.enumpack.CodeLevelTypeEnum;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-import org.springblade.code.model.CodeClassifyTemplateDO;
-import org.springblade.code.service.CodeClassifyTemplateAttrServiceI;
-import org.springblade.code.service.CodeTemplatePhaseServiceI;
-import org.springblade.code.utils.PatternUtil;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-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
deleted file mode 100644
index a6c74f8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java
+++ /dev/null
@@ -1,380 +0,0 @@
-package org.springblade.code.service.impl;
-
-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.dao.CodeClassifyTemplateButtonDaoI;
-import org.springblade.code.dto.CodeClassifyTemplateButtonDTO;
-import org.springblade.code.model.CodeClassifyTemplateButtonDO;
-import org.springblade.code.service.CodeButtonServiceI;
-import org.springblade.code.service.CodeClassifyTemplateButtonServiceI;
-import org.springblade.code.vo.pagemodel.CodeButtonVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
-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
deleted file mode 100644
index 4d1918d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateMapServiceImpl.java
+++ /dev/null
@@ -1,276 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.dao.CodeClassifyTemplateMapDaoI;
-import org.springblade.code.dto.CodeClassifyTemplateMapDTO;
-import org.springblade.code.model.CodeClassifyTemplateMapDO;
-import org.springblade.code.service.CodeClassifyTemplateMapServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateMapVO;
-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.FrameWorkBusLangCodeConstant.*;
-
-/**
- * 涓婚搴撴ā鏉挎槧灏勮鍒欐湇鍔�
- * @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
deleted file mode 100644
index 643a696..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyTemplateServiceImpl.java
+++ /dev/null
@@ -1,1084 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.vci.corba.common.VCIError;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-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.springblade.code.dao.*;
-import org.springblade.code.dto.CodeClassifyTemplateDTO;
-import org.springblade.code.lifecycle.CodeClassifyTemplateLC;
-import org.springblade.code.model.*;
-import org.springblade.code.service.*;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-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
deleted file mode 100644
index 17b09b4..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeClassifyValueServiceImpl.java
+++ /dev/null
@@ -1,479 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-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.springblade.code.dao.CodeBasicSecDaoI;
-import org.springblade.code.dao.CodeClassifyValueDaoI;
-import org.springblade.code.dto.CodeClassifyValueDTO;
-import org.springblade.code.model.CodeBasicSecDO;
-import org.springblade.code.model.CodeClassifyValueDO;
-import org.springblade.code.service.CodeClassifyValueServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyValueVO;
-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
deleted file mode 100644
index 96c720e..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingServiceImpl.java
+++ /dev/null
@@ -1,1103 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-import cn.hutool.json.XML;
-import com.alibaba.fastjson.JSONObject;
-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.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.constant.MdmDuckingConstant;
-import org.springblade.code.dao.*;
-import org.springblade.code.dto.DockingPreApplyDataDTO;
-import org.springblade.code.dto.DockingPreApplyDataInfoDTO;
-import org.springblade.code.model.*;
-import org.springblade.code.service.*;
-import org.springblade.code.utils.*;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-import org.springblade.code.vo.pagemodel.SysIntInfoVO;
-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 org.springblade.code.constant.MdmDuckingConstant.*;
-import static org.springblade.code.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
deleted file mode 100644
index b1f3a19..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeDuckingSyncServiceImpl.java
+++ /dev/null
@@ -1,636 +0,0 @@
-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.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.springblade.code.constant.MdmDuckingConstant;
-import org.springblade.code.dao.CodeClassifyDaoI;
-import org.springblade.code.dao.DockingDataDaoI;
-import org.springblade.code.dao.DockingLogeDaoI;
-import org.springblade.code.dao.DockingTaskDaoI;
-import org.springblade.code.dto.datapush.classify.JsonRootDataDTO;
-import org.springblade.code.dto.datapush.classify.NodeClassifyDTO;
-import org.springblade.code.dto.datapush.classify.NodeDataDTO;
-import org.springblade.code.dto.datapush.classify.NodeLibraryDTO;
-import org.springblade.code.dto.datapush.data.NodeJosnDTO;
-import org.springblade.code.dto.datapush.data.NodeObjectDTO;
-import org.springblade.code.dto.datapush.data.NodeProDTO;
-import org.springblade.code.dto.datapush.data.NodedataDTO;
-import org.springblade.code.dto.datapush.result.ResultJsonDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeDataDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeObjectDTO;
-import org.springblade.code.model.*;
-import org.springblade.code.service.CodeDuckingSyncServiceI;
-import org.springblade.code.service.MdmEngineServiceI;
-import org.springblade.code.service.SysIntInfoServiceI;
-import org.springblade.code.utils.HttpUtils;
-import org.springblade.code.utils.WsErpClientUtil;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-import org.springblade.code.vo.pagemodel.SysIntInfoVO;
-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 org.springblade.code.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
deleted file mode 100644
index d2bb07b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeFixedValueServiceImpl.java
+++ /dev/null
@@ -1,375 +0,0 @@
-package org.springblade.code.service.impl;
-
-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.springblade.code.dao.CodeFixedValueDaoI;
-import org.springblade.code.dto.CodeFixedValueDTO;
-import org.springblade.code.model.CodeFixedValueDO;
-import org.springblade.code.service.CodeFixedValueServiceI;
-import org.springblade.code.vo.pagemodel.CodeFixedValueVO;
-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
deleted file mode 100644
index 0cad475..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java
+++ /dev/null
@@ -1,342 +0,0 @@
-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
deleted file mode 100644
index a3524ad..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodePhaseAttrServiceImpl.java
+++ /dev/null
@@ -1,299 +0,0 @@
-package org.springblade.code.service.impl;
-
-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.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodePhaseAttrDaoI;
-import org.springblade.code.dto.CodePhaseAttrDTO;
-import org.springblade.code.model.CodePhaseAttrDO;
-import org.springblade.code.service.CodePhaseAttrServiceI;
-import org.springblade.code.vo.pagemodel.CodePhaseAttrVO;
-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
deleted file mode 100644
index d5d1042..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeResembleRuleServiceImpl.java
+++ /dev/null
@@ -1,277 +0,0 @@
-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.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.dao.CodeResembleRuleDaoI;
-import org.springblade.code.dto.CodeResembleRuleDTO;
-import org.springblade.code.model.CodeResembleRuleDO;
-import org.springblade.code.service.CodeResembleRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeResembleRuleVO;
-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
deleted file mode 100644
index 443dd6a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeRuleServiceImpl.java
+++ /dev/null
@@ -1,683 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-import com.vci.corba.common.VCIError;
-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.KeyValue;
-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.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodeBasicSecDaoI;
-import org.springblade.code.dao.CodeRuleDaoI;
-import org.springblade.code.dto.CodeBasicSecDTO;
-import org.springblade.code.dto.CodeRuleDTO;
-import org.springblade.code.lifecycle.CodeRuleLC;
-import org.springblade.code.model.CodeAllCodeDO;
-import org.springblade.code.model.CodeBasicSecDO;
-import org.springblade.code.model.CodeClassifyDO;
-import org.springblade.code.model.CodeRuleDO;
-import org.springblade.code.service.CodeBasicSecServiceI;
-import org.springblade.code.service.CodeClassifyServiceI;
-import org.springblade.code.service.CodeRuleServiceI;
-import org.springblade.code.vo.pagemodel.CodeBasicSecVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-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.FrameWorkBusLangCodeConstant.*;
-
-/**
- * 涓绘暟鎹紪鐮佽鍒欐湇鍔�
- *
- * @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
deleted file mode 100644
index 20ce987..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSerialAlgorithmServiceImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.util.ApplicationContextProvider;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.code.annotation.MdmSerialAlgorithm;
-import org.springblade.code.service.CodeSerialAlgorithmServiceI;
-import org.springblade.code.vo.pagemodel.CodeSerialAlgorithmVO;
-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
deleted file mode 100644
index 6cd157b..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeSynonymServiceImpl.java
+++ /dev/null
@@ -1,276 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.dao.CodeSynonymDaoI;
-import org.springblade.code.dto.CodeSynonymDTO;
-import org.springblade.code.model.CodeSynonymDO;
-import org.springblade.code.service.CodeSynonymServiceI;
-import org.springblade.code.vo.pagemodel.CodeSynonymVO;
-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.FrameWorkBusLangCodeConstant.*;
-
-/**
- * 鍚屼箟璇嶉厤缃湇鍔�
- * @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
deleted file mode 100644
index a4129b5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/CodeTemplatePhaseServiceImpl.java
+++ /dev/null
@@ -1,507 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.CodePhaseAttrDaoI;
-import org.springblade.code.dao.CodeTemplatePhaseDaoI;
-import org.springblade.code.dto.CodeTemplatePhaseDTO;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-import org.springblade.code.model.CodePhaseAttrDO;
-import org.springblade.code.model.CodeTemplatePhaseDO;
-import org.springblade.code.service.CodeClassifyTemplateAttrServiceI;
-import org.springblade.code.service.CodePhaseAttrServiceI;
-import org.springblade.code.service.CodeTemplatePhaseServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeTemplatePhaseVO;
-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/DockingPreApplyDataInfoServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreApplyDataInfoServiceImpl.java
deleted file mode 100644
index ca63ecc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreApplyDataInfoServiceImpl.java
+++ /dev/null
@@ -1,275 +0,0 @@
-package org.springblade.code.service.impl;
-
-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.springblade.code.dao.DockingPreApplyDataInfoDaoI;
-import org.springblade.code.dto.DockingPreApplyDataInfoDTO;
-import org.springblade.code.model.DockingPreApplyDataInfoDO;
-import org.springblade.code.service.DockingPreApplyDataInfoServiceI;
-import org.springblade.code.vo.pagemodel.DockingPreApplyDataInfoVO;
-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-05
- */
-@Service
-public class DockingPreApplyDataInfoServiceImpl implements DockingPreApplyDataInfoServiceI {
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private DockingPreApplyDataInfoDaoI dockingPreApplyDataInfoMapper;
-
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
-
- /**
- * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<DockingPreApplyDataInfoVO> gridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- pageHelper.addDefaultDesc("createTime");
- List<DockingPreApplyDataInfoDO> doList = dockingPreApplyDataInfoMapper.selectByCondition(conditionMap,pageHelper);
- DataGrid<DockingPreApplyDataInfoVO> dataGrid=new DataGrid<DockingPreApplyDataInfoVO>();
- if (!CollectionUtils.isEmpty(doList)) {
- dataGrid.setData(dockingPreApplyDataInfoDO2VOs(doList));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreApplyDataInfoMapper.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataInfoDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- @Override
- public List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoDO2VOs(Collection<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOs) throws VciBaseException{
- List<DockingPreApplyDataInfoVO> voList = new ArrayList<DockingPreApplyDataInfoVO>();
- if(!CollectionUtils.isEmpty(dockingPreApplyDataInfoDOs)){
- for(DockingPreApplyDataInfoDO s: dockingPreApplyDataInfoDOs){
- DockingPreApplyDataInfoVO vo = dockingPreApplyDataInfoDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataInfoDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DockingPreApplyDataInfoVO dockingPreApplyDataInfoDO2VO(DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) throws VciBaseException{
- DockingPreApplyDataInfoVO vo = new DockingPreApplyDataInfoVO();
- if(dockingPreApplyDataInfoDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
-
- }
- return vo;
- }
-
- /**
- * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public DockingPreApplyDataInfoVO addSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
- //灏咲TO杞崲涓篋O
- DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = new DockingPreApplyDataInfoDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
- dockingPreApplyDataInfoMapper.insert(dockingPreApplyDataInfoDO);
- return dockingPreApplyDataInfoDO2VO(dockingPreApplyDataInfoDO);
- }
-
- /**
- * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public DockingPreApplyDataInfoVO editSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataInfoDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
- //灏咲TO杞崲涓篋O
- DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = selectByOid(dockingPreApplyDataInfoDTO.getOid());
- revisionModelUtil.copyFromDTOIgnore(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
- dockingPreApplyDataInfoMapper.updateByPrimaryKey(dockingPreApplyDataInfoDO);
- return dockingPreApplyDataInfoDO2VO(dockingPreApplyDataInfoDO);
- }
-
-
- /**
- * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
- * @param dockingPreApplyDataInfoDTO 鏁版嵁浼犺緭瀵硅薄
- * @param dockingPreApplyDataInfoDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
- * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
- */
- private BaseResult checkIsCanDeleteForDO(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO, DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) {
- DockingPreApplyDataInfoDO tsDO = new DockingPreApplyDataInfoDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO,tsDO);
- boService.checkTs(tsDO);
- if(!checkIsLinked(dockingPreApplyDataInfoDO.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 dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- @Override
- public BaseResult deleteDockingPreApplyDataInfo(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄",dockingPreApplyDataInfoDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鐨勪富閿�");
- DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = selectByOid(dockingPreApplyDataInfoDTO.getOid());
- BaseResult baseResult = checkIsCanDeleteForDO(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
- if(baseResult.isSuccess()) {
- }else{
- return baseResult;
- }
- //鎵ц鍒犻櫎鎿嶄綔
- BatchCBO batchCBO = dockingPreApplyDataInfoMapper.deleteByPrimaryKey(dockingPreApplyDataInfoDO.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 DockingPreApplyDataInfoVO getObjectByOid(String oid) throws VciBaseException{
- return dockingPreApplyDataInfoDO2VO(selectByOid(oid));
- }
-
- /**
- * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
- * @param oid 涓婚敭
- * @return 鏁版嵁瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- private DockingPreApplyDataInfoDO selectByOid(String oid) throws VciBaseException{
- VciBaseUtil.alertNotNull(oid,"涓婚敭");
- DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = dockingPreApplyDataInfoMapper.selectByPrimaryKey(oid.trim());
- if(dockingPreApplyDataInfoDO == null || StringUtils.isBlank(dockingPreApplyDataInfoDO.getOid())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- return dockingPreApplyDataInfoDO;
- }
-
- /**
- * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- @Override
- public Collection<DockingPreApplyDataInfoVO> listDockingPreApplyDataInfoByOids(Collection<String> oidCollections) throws VciBaseException{
- VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
- List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = listDockingPreApplyDataInfoDOByOidCollections(oidCollections);
- return dockingPreApplyDataInfoDO2VOs(dockingPreApplyDataInfoDOList);
- }
-
- /**
- * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
- * @param oidCollections 涓婚敭鐨勯泦鍚�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- private List<DockingPreApplyDataInfoDO> listDockingPreApplyDataInfoDOByOidCollections(Collection<String> oidCollections){
- List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = new ArrayList<DockingPreApplyDataInfoDO>();
- if(!CollectionUtils.isEmpty(oidCollections)){
- Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
- for(Collection<String> oids: oidCollectionsList){
- List<DockingPreApplyDataInfoDO> tempDOList = dockingPreApplyDataInfoMapper.selectByPrimaryKeyCollection(oids);
- if(!CollectionUtils.isEmpty(tempDOList)){
- dockingPreApplyDataInfoDOList.addAll(tempDOList);
- }
- }
- }
- return dockingPreApplyDataInfoDOList;
- }
-
-
-
- /**
- * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<DockingPreApplyDataInfoVO> refDataGridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if(conditionMap == null){
- conditionMap = new HashMap<String, String>();
- }
- return gridDockingPreApplyDataInfo(conditionMap,pageHelper);
- }
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreApplyDataServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreApplyDataServiceImpl.java
deleted file mode 100644
index ccd0a87..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreApplyDataServiceImpl.java
+++ /dev/null
@@ -1,1116 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.alibaba.cloud.commons.io.FileUtils;
-import com.vci.starter.poi.bo.SheetDataSet;
-import com.vci.starter.poi.bo.SheetRowData;
-import com.vci.starter.poi.bo.WriteExcelData;
-import com.vci.starter.poi.bo.WriteExcelOption;
-import com.vci.starter.poi.util.ExcelUtil;
-import com.vci.starter.revision.service.RevisionModelUtil;
-import com.vci.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.enumpck.ResultCodeEnum;
-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.*;
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.pageModel.BatchCBO;
-import com.vci.web.pageModel.KeyValue;
-import com.vci.web.pageModel.UITableFieldVO;
-import com.vci.web.redis.RedisService;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.collections.map.HashedMap;
-import org.apache.commons.lang.StringUtils;
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.constant.MdmDuckingConstant;
-import org.springblade.code.dao.DockingPreApplyDataDaoI;
-import org.springblade.code.dao.DockingPreApplyDataInfoDaoI;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.dto.DockingPreApplyDataDTO;
-import org.springblade.code.dto.DockingPreApplyDataInfoDTO;
-import org.springblade.code.dto.PreApplyCodeOrderDTO;
-import org.springblade.code.lifecycle.CodeDefaultLC;
-import org.springblade.code.model.DockingPreApplyDataDO;
-import org.springblade.code.model.DockingPreApplyDataInfoDO;
-import org.springblade.code.service.*;
-import org.springblade.code.utils.AttributeMapConfig;
-import org.springblade.code.utils.EnumVO;
-import org.springblade.code.vo.pagemodel.*;
-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 plm.bs.bom.clientobject.ClientBusinessObject;
-
-import javax.annotation.Resource;
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*;
-import static org.springblade.code.constant.MdmDuckingConstant.*;
-import static org.springblade.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
-
-/**
- * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟
- * @author weidy
- * @date 2022-04-05
- */
-@Service
-public class DockingPreApplyDataServiceImpl implements DockingPreApplyDataServiceI {
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private DockingPreApplyDataDaoI dockingPreApplyDataMapper;
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private DockingPreApplyDataInfoDaoI dockingPreApplyDataInfoMapper;
-
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private DockingPreApplyDataInfoServiceI dockingPreApplyDataInfoServiceI;
-
- /**
- * 妯℃澘鐨勬湇鍔�
- */
- @Autowired
- private CodeClassifyTemplateServiceI templateService;
- /**
- * 鍒嗙被鎿嶄綔鏈嶅姟
- */
- @Autowired
- private CodeClassifyServiceImpl codeClassifyService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private CodeClassifyServiceI codeClassifyServiceI;
-
- /**
- * 棰勭敵璇锋暟鎹紝灞炴�ф槧灏勬ā鏉垮瓨鏀捐矾寰�
- */
- @Value("${docking.templateDir:D:\\desktop}")
- public String preApplyTemplate;
-
- @Value("${docking.tuhao:tuhao}")
- public String tuhao;
- /**
- * 涓绘暟鎹紩鎿庢湇鍔�
- */
- @Autowired(required = false)
- @Lazy
- private MdmEngineServiceI engineService;
-
- /**
- * 涓绘暟鎹紩鎿庢湇鍔�
- */
- @Autowired(required = false)
- @Lazy
- private MdmIOServiceI mdmIOService;
-
- @Autowired
- private RedisService redisService;
-
- @Autowired
- private DockingPreAttrMappingSeviceI dockingPreAttrMappingSeviceI;
-
- /***
- * 鑾峰彇MAP鏋氫妇鍊�
- */
-
- @Autowired
- private AttributeMapConfig attributeMapConfig;
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- public List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs, boolean iscontainAttr) throws VciBaseException {
- List<DockingPreApplyDataVO> voList = new ArrayList<DockingPreApplyDataVO>();
- if(!CollectionUtils.isEmpty(dockingPreApplyDataDOs)){
- for(DockingPreApplyDataDO s: dockingPreApplyDataDOs){
- DockingPreApplyDataVO vo = dockingPreApplyDataDO2VO(s,iscontainAttr);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- private DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO,boolean iscontainAttr) throws VciBaseException{
- DockingPreApplyDataVO vo = new DockingPreApplyDataVO();
- if(dockingPreApplyDataDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- if(iscontainAttr) {
- List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOS = redisService.getCacheList(vo.getOid() + "_attr");
- if (CollectionUtils.isEmpty(dockingPreApplyDataInfoDOS)) {
- //鏌ヨ鏁版嵁鐨勫睘鎬у搴斿�间俊鎭�
- VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreApplyDataInfoDO.class);
- queryWrapperForDO.addQueryMap("dataoid",dockingPreApplyDataDO.getOid());
- dockingPreApplyDataInfoDOS= boService.selectByQueryWrapper(queryWrapperForDO,DockingPreApplyDataInfoDO.class);
- }
- List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOS = dockingPreApplyDataInfoServiceI.dockingPreApplyDataInfoDO2VOs(dockingPreApplyDataInfoDOS);
- vo.setDockingPreApplyDataInfoVOs(dockingPreApplyDataInfoVOS);
- }
- }
- return vo;
- }
-
-
- @Override
- public List<DockingPreApplyDataVO> batchSetDataClassId(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException {
- VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
- List<String> oidList= VciBaseUtil.str2List(dockingPreApplyDataDTO.getOid());
- String classOid=dockingPreApplyDataDTO.getClassifyoid();
- List<DockingPreApplyDataDO> dockingPreApplyDataDOS=dockingPreApplyDataMapper.selectByPrimaryKeyCollection(oidList);
- dockingPreApplyDataDOS.stream().forEach(dockingPreApplyDataDO -> {
- dockingPreApplyDataDO.setClassifyoid(classOid);
- });
- dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOS);
- List<DockingPreApplyDataVO> dockingPreApplyDataVOS= dockingPreApplyDataDO2VOs(dockingPreApplyDataDOS);
- return dockingPreApplyDataVOS;
- }
-
- /***
- * 杩斿洖淇℃伅
- * @param codeClassifyOid
- * @param templateOid
- * @param btmType
- * @param dataOids
- * @return
- * @throws VciBaseException
- */
- @Override
- public DataGrid<Map<String, String>> gridApplyData(String codeClassifyOid, String templateOid, String btmType, String dataOids) throws VciBaseException {
- VciBaseUtil.alertNotNull(codeClassifyOid,"鏁版嵁瀵硅薄",codeClassifyOid,"鍒嗙被涓婚敭");
- VciBaseUtil.alertNotNull(templateOid,"鏁版嵁瀵硅薄",templateOid,"鍒嗙被妯℃澘");
- VciBaseUtil.alertNotNull(dataOids,"鏁版嵁瀵硅薄",dataOids,"鏁版嵁涓婚敭");
- CodeClassifyVO topClassifyVO = codeClassifyService.getTopClassifyVO(codeClassifyOid);
- String btmTypeId = topClassifyVO.getBtmtypeid();
- if (StringUtils.isBlank(btmTypeId)) {
- return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
- }
- boolean iccheckHasChild=codeClassifyService.checkHasChild(codeClassifyOid);
- if(iccheckHasChild){
- throw new VciBaseException("璇烽�夋嫨鍙跺瓙鍒嗙被鑺傜偣鐢宠鏁版嵁锛�");
- }
- CodeClassifyTemplateVO templateVO= engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
- Map<String, String> classifyDevlevMap= engineService.previewClassify(codeClassifyOid,templateOid);
- List<CodeClassifyTemplateAttrVO> templateAttrVOS=templateVO.getAttributes();
- Map<String,CodeClassifyTemplateAttrVO> attrTemplateAttrMap=templateAttrVOS.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
- Map<String,String> condtionMappingMap=new HashMap<>();
- condtionMappingMap.put("jviewModeId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(VciBaseUtil.str2List(templateOid).toArray(new String[]{})) + ")");
- //condtionMappingMap.put("jSourceClsfId",codeClassifyOid);
- //鑾峰彇灞炴�ф槧灏勫叧绯�
- List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingSeviceI.selectAttrMappings(condtionMappingMap);
- if(CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){
- return new DataGrid<>("鏈幏鍙栧埌鐩稿叧灞炴�ф槧灏勯厤缃�");
- }
- List<DockingPreApplyDataDO> dockingPreApplyDataDOS=this.dockingPreApplyDataMapper.selectByPrimaryKeyCollection(VciBaseUtil.str2List(dataOids));
- List<DockingPreApplyDataVO> dockingPreApplyDataVOS= dockingPreApplyDataDO2VOs(dockingPreApplyDataDOS,true);
- List<Map> maps=new ArrayList<>();
-
- dockingPreApplyDataVOS.stream().forEach(dockingPreApplyDataVO -> {
- List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOS= dockingPreApplyDataVO.getDockingPreApplyDataInfoVOs();
- Map<String/**oid**/, DockingPreApplyDataInfoVO/**瀵硅薄**/> attrMappingMap=new HashMap<>();
- if(!CollectionUtils.isEmpty(dockingPreApplyDataInfoVOS)) {
- attrMappingMap = dockingPreApplyDataInfoVOS.stream().collect(Collectors.toMap(s -> s.getKey(), t -> t, (o1, o2) -> o2));
- }
- Map<String,String> attributMap=new HashMap<>();
- Map<String, DockingPreApplyDataInfoVO> finalAttrMappingMap = attrMappingMap;
- dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> {
- String innerName=dockingPreAttrMappingVO.getJsourceAttrKey();
- String jtargetAttrKey=dockingPreAttrMappingVO.getJtargetAttrKey().toLowerCase(Locale.ROOT);
- final String[] defaulValue = {dockingPreAttrMappingVO.getJdefaultValue()};
- CodeClassifyTemplateAttrVO templateAttr= attrTemplateAttrMap.get(innerName);
-
- if(innerName.equalsIgnoreCase(tuhao.toLowerCase(Locale.ROOT))){//灞炴�ф槧灏勪腑鏄浘鍙风殑搴斿綋鍗曠嫭鍔�
- attributMap.put(tuhao,dockingPreApplyDataVO.getUniquecode());
- }else{
- if (StringUtils.isNotBlank(jtargetAttrKey) && finalAttrMappingMap.containsKey(jtargetAttrKey)) {
- DockingPreApplyDataInfoVO dataInfoVO = finalAttrMappingMap.get(jtargetAttrKey);
- String value = dataInfoVO.getValue();
- List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList = dockingPreAttrMappingVO.getDockingPreAttrRangeVOS();
- //Map<String/**闆嗘垚灞炴�у彇鍊艰寖鍥寸殑鍐呴儴鍊�**/, String/**涓绘暟鎹睘鎬у彇鍊艰寖鍥村唴閮ㄥ��**/> attrNameIdMap=new HashMap<>();
- if (StringUtils.isNotBlank(value)) {
- defaulValue[0] = value;
- }
- if (!CollectionUtils.isEmpty(dockingPreAttrRangeVOList)) {
- // attrNameIdMap = dockingPreAttrRangeVOList.stream().collect(Collectors.toMap(s -> s.getJtargeNumTextValue(), t -> t.getJnumTextValue().toLowerCase(Locale.ROOT),(o1, o2)->o2));
- dockingPreAttrRangeVOList.stream().forEach(dockingPreAttrRangeVO -> {
- String jtargeNumTextValue = dockingPreAttrRangeVO.getJtargeNumTextValue();
- List<String> valueList = VciBaseUtil.str2List(jtargeNumTextValue);
- if (valueList.contains(value)) {
- defaulValue[0] = dockingPreAttrRangeVO.getJnumTextValue();
- }
- });
- }
- }
- //鍒ゆ柇妯℃澘灞炴�ц缃鍒欓粯璁ゅ��
- if (StringUtils.isBlank(defaulValue[0]) && templateAttr != null && StringUtils.isNotBlank(templateAttr.getClassifyinvokelevel())) {
- defaulValue[0] = classifyDevlevMap.get(innerName);
- }
-
- //鍒ゆ柇妯℃澘灞炴�ч粯璁ゅ��
- if (StringUtils.isBlank(defaulValue[0]) && templateAttr != null && StringUtils.isNotBlank(templateAttr.getDefaultvalue())) {
- defaulValue[0] = templateAttr.getDefaultvalue();
- }
- if (((StringUtils.isNotBlank(templateAttr.getEnumString())
- && !"[]".equalsIgnoreCase(templateAttr.getEnumString())) ||
- StringUtils.isNotBlank(templateAttr.getEnumid()))) {
- UITableFieldVO fieldVO = engineService.templateAttr2TableField(templateAttr, false);
- List<KeyValue> keyValueList = fieldVO.getData();
- String text = "";
- if (!CollectionUtils.isEmpty(keyValueList)) {
- Map<String, String> enumMap = keyValueList.stream().collect(Collectors.toMap(s -> s.getKey(), t -> t.getValue().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
- if (enumMap.containsKey(defaulValue[0])) {
- text = enumMap.get(defaulValue[0]);
- }
- }
- attributMap.put(fieldVO.getField(), text);
- }
- attributMap.put(innerName, defaulValue[0]);
- }
- });
- maps.add(attributMap);
- });
- DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
- List<Map<String, String>> dataList = new ArrayList<>();
- if (!CollectionUtils.isEmpty(maps)) {
- maps.stream().forEach(map -> {
- Map<String, String> data = new HashMap<>();
- map.forEach((key, value) -> {
- data.put((String) key, (String) value);
- });
- dataList.add(data);
- });
- }
- dataGrid.setData(dataList);
- return dataGrid;
- }
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- @Override
- public List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs) throws VciBaseException{
- List<DockingPreApplyDataVO> voList = new ArrayList<DockingPreApplyDataVO>();
- if(!CollectionUtils.isEmpty(dockingPreApplyDataDOs)){
- for(DockingPreApplyDataDO s: dockingPreApplyDataDOs){
- DockingPreApplyDataVO vo = dockingPreApplyDataDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param dockingPreApplyDataDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO) throws VciBaseException{
- DockingPreApplyDataVO vo = new DockingPreApplyDataVO();
- if(dockingPreApplyDataDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
-
- }
- return vo;
- }
-
- /**
- * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public DockingPreApplyDataVO addSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
- //灏咲TO杞崲涓篋O
- DockingPreApplyDataDO dockingPreApplyDataDO = new DockingPreApplyDataDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,dockingPreApplyDataDO);
- dockingPreApplyDataMapper.insert(dockingPreApplyDataDO);
- return dockingPreApplyDataDO2VO(dockingPreApplyDataDO);
- }
-
- /**
- * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
- * @param dockingPreApplyDataDTO 鏁版嵁浼犺緭瀵硅薄
- * @param dockingPreApplyDataDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
- * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
- */
- private BaseResult checkIsCanDeleteForDO(DockingPreApplyDataDTO dockingPreApplyDataDTO, DockingPreApplyDataDO dockingPreApplyDataDO) {
- DockingPreApplyDataDO tsDO = new DockingPreApplyDataDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,tsDO);
- boService.checkTs(tsDO);
- if(!checkIsLinked(dockingPreApplyDataDO.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 dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- @Override
- public BaseResult deleteDockingPreApplyData(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鐨勪富閿�");
- DockingPreApplyDataDO dockingPreApplyDataDO = selectByOid(dockingPreApplyDataDTO.getOid());
- BaseResult baseResult = checkIsCanDeleteForDO(dockingPreApplyDataDTO,dockingPreApplyDataDO);
- if(baseResult.isSuccess()) {
- }else{
- return baseResult;
- }
- //鎵ц鍒犻櫎鎿嶄綔
- BatchCBO batchCBO = dockingPreApplyDataMapper.deleteByPrimaryKey(dockingPreApplyDataDO.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 DockingPreApplyDataVO getObjectByOid(String oid) throws VciBaseException{
- return dockingPreApplyDataDO2VO(selectByOid(oid));
- }
-
- /**
- * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
- * @param oid 涓婚敭
- * @return 鏁版嵁瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- private DockingPreApplyDataDO selectByOid(String oid) throws VciBaseException{
- VciBaseUtil.alertNotNull(oid,"涓婚敭");
- DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(oid.trim());
- if(dockingPreApplyDataDO == null || StringUtils.isBlank(dockingPreApplyDataDO.getOid())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- return dockingPreApplyDataDO;
- }
-
- /**
- * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- @Override
- public Collection<DockingPreApplyDataVO> listDockingPreApplyDataByOids(Collection<String> oidCollections) throws VciBaseException{
- VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
- List<DockingPreApplyDataDO> dockingPreApplyDataDOList = listDockingPreApplyDataDOByOidCollections(oidCollections);
- return dockingPreApplyDataDO2VOs(dockingPreApplyDataDOList);
- }
-
- /**
- * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
- * @param oidCollections 涓婚敭鐨勯泦鍚�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- private List<DockingPreApplyDataDO> listDockingPreApplyDataDOByOidCollections(Collection<String> oidCollections){
- List<DockingPreApplyDataDO> dockingPreApplyDataDOList = new ArrayList<DockingPreApplyDataDO>();
- if(!CollectionUtils.isEmpty(oidCollections)){
- Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
- for(Collection<String> oids: oidCollectionsList){
- List<DockingPreApplyDataDO> tempDOList = dockingPreApplyDataMapper.selectByPrimaryKeyCollection(oids);
- if(!CollectionUtils.isEmpty(tempDOList)){
- dockingPreApplyDataDOList.addAll(tempDOList);
- }
- }
- }
- return dockingPreApplyDataDOList;
- }
-
-
-
- /**
- * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<DockingPreApplyDataVO> refDataGridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if(conditionMap == null){
- conditionMap = new HashMap<String, String>();
- }
- return gridDockingPreApplyData(conditionMap,pageHelper);
- }
-
- //==================
-
- /**
- * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<DockingPreApplyDataVO> gridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- pageHelper.addDefaultDesc("createTime");
-
- //鍙煡璇㈠惎鐢ㄧ殑data锛岃繖鏍峰氨涓嶇敤鍘绘壘鏈�澶х増鏈彿浜嗗啀鏌ヨ
- conditionMap.put("useddflag","true");
- List<DockingPreApplyDataDO> doList = dockingPreApplyDataMapper.selectByCondition(conditionMap,pageHelper);
- Map<String,List<EnumVO>> mpmEnumMap= this.attributeMapConfig.getMpmEnumMap();
- Map<String,List<String>> typeCodemap =new HashedMap();
- doList.stream().forEach(dockingPreApplyDataDO -> {
- String enumValue= dockingPreApplyDataDO.getParttype();
- String type=dockingPreApplyDataDO.getType();
- String code=dockingPreApplyDataDO.getNum();
- if(!CollectionUtils.isEmpty(mpmEnumMap)){
- if(mpmEnumMap.containsKey("partType")){
- List<EnumVO> partTypeEnumMapList= mpmEnumMap.get("partType");
- Map<String, String> enumFieldValueMap = partTypeEnumMapList.stream().collect(Collectors.toMap(EnumVO::getEnumValue, EnumVO::getEnumText, (key1, key2) -> key2));
- if(enumFieldValueMap.containsKey(enumValue)){
- String enumText= enumFieldValueMap.get(enumValue);
- dockingPreApplyDataDO.setParttype(enumText);
- }
- }
- }
- if(StringUtils.isNotBlank(code)) {
- List<String> codeList = new ArrayList<>();
- codeList.add(code);
- if (typeCodemap.containsKey(type)) {
- List<String> oldCodeList = typeCodemap.get(type);
- codeList.addAll(oldCodeList);
- }
- typeCodemap.put(type, codeList);
- }
- });
- List<ClientBusinessObject> cbos=new ArrayList<>();
- if(!CollectionUtils.isEmpty(typeCodemap)) {
- typeCodemap.forEach((type,codes)->{
- Map<String,String> contionMap=new HashedMap();
- contionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codes.toArray(new String[]{})) + ")");
- List<ClientBusinessObject> newcbos=boService.queryCBO(type,contionMap);
- cbos.addAll(newcbos);
- });
- }
- Map<String, ClientBusinessObject> codeCbosMap = cbos.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
- doList.stream().forEach(s->{
- String code =s.getNum();
- if(codeCbosMap.containsKey(code)){
- ClientBusinessObject cbo= codeCbosMap.get(code);
- if(!cbo.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())){//濡傛灉涓嶆槸鍙戝竷鐘舵�佸垯闅愯棌缂栫爜
- s.setNum("******");
- s.setId("******");
- s.setPreapplyoid("******");
- }
- }else{
-
- }
- });
-
- DataGrid<DockingPreApplyDataVO> dataGrid=new DataGrid<DockingPreApplyDataVO>();
- if (!CollectionUtils.isEmpty(doList)) {
- dataGrid.setData(dockingPreApplyDataDO2VOs(doList,false));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreApplyDataMapper.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /**
- * 鎻掑叆data鍜宒atainfo,浼氳嚜鍔ㄦ妸data閲岀殑oid,unique璧嬪�煎埌datainfo閲岃竟鍘�
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public void addSaveDataAndInfo(DockingPreApplyDataDTO dockingPreApplyDataDTO, List<DockingPreApplyDataInfoDTO> dockingPreApplyDataInfoDTOList) throws VciBaseException{
- String unique = "";
- //灏咲TO杞崲涓篋O
- DockingPreApplyDataDO dockingPreApplyDataDO = new DockingPreApplyDataDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,dockingPreApplyDataDO);
-
- String dataoid = dockingPreApplyDataDO.getOid();
- if(StringUtils.isEmpty(dockingPreApplyDataDO.getOid())) {
- dataoid = redisService.getUUIDEveryDay();
- dockingPreApplyDataDO.setOid(dataoid);
- }
-
- //鏌ヨ浠ュ墠鐨勬暟鎹紝鍑嗗淇敼usedflasg
- VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreApplyDataDO.class);
- queryWrapperForDO.addQueryMap("uniquecode",dockingPreApplyDataDO.getUniquecode());
- List<DockingPreApplyDataDO> dockingPreApplyDataDOList = boService.selectByQueryWrapper(queryWrapperForDO,DockingPreApplyDataDO.class);
-
- //鎵ц鏁版嵁淇濆瓨鎿嶄綔
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
-
- BatchCBO batchUpdateData = new BatchCBO();
- //淇敼浠ュ墠鐨勬暟鎹畊seddflag=false
- if (dockingPreApplyDataDOList.size() != 0) {
- for (DockingPreApplyDataDO dockingPreApplyDataDOi : dockingPreApplyDataDOList) {
- dockingPreApplyDataDOi.setUseddflag(PRE_APPLY_DATA_USER_FALSE);
- }
- batchUpdateData = dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOList);
- }
-
- //鏂板鐜板湪鐨刣ata
- dockingPreApplyDataDO.setUseddflag(MdmDuckingConstant.PRE_APPLY_DATA_USER_TRUE);//鏄渶鏂扮殑
- BatchCBO batchInsertData = dockingPreApplyDataMapper.insert(dockingPreApplyDataDO);
- batchUpdateData.copyFromOther(batchInsertData);
-
- //鏂板dataInfo
- List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = new ArrayList<DockingPreApplyDataInfoDO>();
- for (DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO : dockingPreApplyDataInfoDTOList) {
- DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = new DockingPreApplyDataInfoDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO, dockingPreApplyDataInfoDO);
- dockingPreApplyDataInfoDO.setDataoid(dataoid);
-
- if (StringUtils.isNotEmpty(dockingPreApplyDataDO.getUniquecode())) {
- dockingPreApplyDataInfoDO.setUniquecode(dockingPreApplyDataDO.getUniquecode());
- }
- if (StringUtils.isEmpty(dockingPreApplyDataInfoDO.getOid())) {
- String datainfooid = redisService.getUUIDEveryDay();
- dockingPreApplyDataInfoDO.setOid(datainfooid);
- }
-
- dockingPreApplyDataInfoDOList.add(dockingPreApplyDataInfoDO);
- }
-
- if(dockingPreApplyDataInfoDOList.size()!=0) {
- BatchCBO batchInsertDataInfo = dockingPreApplyDataInfoMapper.batchInsert(dockingPreApplyDataInfoDOList);
- batchUpdateData.copyFromOther(batchInsertDataInfo);
- redisService.setCacheList(dockingPreApplyDataDO.getOid(),dockingPreApplyDataInfoDOList);
- }
- WebUtil.setPersistence(true);//鎵ц淇濆瓨
- boService.persistenceBatch(batchUpdateData);//涓�璧锋墽琛屼繚瀛�
- }
-
- /**
- * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
- * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public BaseResult editSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
- //灏咲TO杞崲涓篋O
- DockingPreApplyDataDO dockingPreApplyDataDO = selectByOid(dockingPreApplyDataDTO.getOid());
- revisionModelUtil.copyFromDTOIgnore(dockingPreApplyDataDTO,dockingPreApplyDataDO);
- dockingPreApplyDataMapper.updateByPrimaryKey(dockingPreApplyDataDO);
- return BaseResult.success(dockingPreApplyDataDO2VO(dockingPreApplyDataDO));
- }
-
- /**
- * 鏍规嵁data鐨刼id鏌ヨdata淇℃伅鍜宒atainfo淇℃伅锛屽苟涓旀嫾鎺atainfo涓簃ap
- * @param dockingPreApplyDataDTO
- * @return
- * @throws VciBaseException
- */
- @Override
- public BaseResult<Map<String,String>> getDataInfoMap(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
-
- String dataoid = dockingPreApplyDataDTO.getOid();
-
- //鏌ヨdata鐨則ype
- DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(dataoid);
-
- if(dockingPreApplyDataDO == null){
- String msg = "棰勭敵璇风紪鐮侊紝閫氳繃oid鏌ヨDockingPreApplyDataDO鏈壘鍒版暟鎹�!";
- logger.error(msg);
- return BaseResult.fail(msg,null);
- }
-
- String type = dockingPreApplyDataDO.getType();
-
- //鏌ヨdatainfo涓簃ap
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingPreApplyDataInfoDO.class);
- queryWrapper.addQueryMap("dataoid",dataoid);
- List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = dockingPreApplyDataInfoMapper.selectByWrapper(queryWrapper);
- Map<String,String> dataInfoMap = new HashMap<String,String>();//鎵�鏈夌殑鍊�
- for (DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO :dockingPreApplyDataInfoDOList){
- dataInfoMap.put(dockingPreApplyDataInfoDO.getKey(),dockingPreApplyDataInfoDO.getValue());
- }
-//鎶奷atainfomap鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲涓烘渶缁堝瓨鍏ョ殑鏁版嵁map
-// String systemid = dockingPreApplyDataDO.getSystemid();//绯荤粺缂栧彿
-//
-// PreApplyDataTrans preApplyDataTrans = getPreApplyDataTransBySystemIdAndType(systemid,type);
-// if(preApplyDataTrans == null){
-// String msg = "璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉挎垚鍔�,浣嗘槸娌℃湁鍖归厤鐨勬ā鏉垮睘鎬�,systemid: "+systemid+",type: "+type;
-// logger.error(msg);
-// preApplyDataTrans = new PreApplyDataTrans(systemid,type,new HashMap<String,String>());
-// }
-//
-// Map<String, String> attrMap = preApplyDataTrans.getAttrMap();
-//
-// Map<String, String> outMap = getShowMap(attrMap,dataInfoMap);
-
- return BaseResult.success(dataInfoMap,"鏌ヨ鎴愬姛");
- }
-
- /**
- * 鏍规嵁systemid鏌ヨ閰嶇疆鐨勫睘鎬фā鏉�
- * @param systemid 绯荤粺id
- * @param type 鍒嗙被
- * @return
- */
- public PreApplyDataTrans getPreApplyDataTransBySystemIdAndType(String systemid,String type){
- String templateXml = null;
- String fileUrl = "";
- try {
- String templatename = systemid;
- fileUrl = preApplyTemplate+ File.separator+templatename+".xml";
- templateXml = FileUtils.readFileToString(new File(fileUrl),"utf-8");
- }catch (Exception e){
- e.printStackTrace();
- logger.error("璇诲彇棰勭敵璇峰睘鎬ф槧灏勬ā鏉垮け璐�,fileUrl: "+fileUrl);
- return null;
- }
-
- /**
- * 閫氳繃閰嶇疆鐨勬ā鏉挎枃浠讹紝杞崲涓哄墠绔鎳傚拰mdmEngineController/getDataByOid鎺ュ彛绫讳技鐨勬暟鎹�
- */
- List<PreApplyDataTrans> preApplyDataTransList = null;
- try {
- preApplyDataTransList = readAttrTransfTemplate(templateXml);
- }catch (Exception e){
- logger.error("璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉垮け璐�,");
- return null;
- }
-
- PreApplyDataTrans preApplyDataTrans = null;
- for(PreApplyDataTrans preApplyDataTransi:preApplyDataTransList){
- String preApplyDataTrans_type = preApplyDataTransi.getType();
- if(type.equals(preApplyDataTrans_type)){
- preApplyDataTrans = preApplyDataTransi;
- break;
- }
- }
- return preApplyDataTrans;
- }
-
- /**
- * 鎶婇鐢宠鐨勫睘鎬ф牴鎹ā鏉縳ml杞寲涓烘渶缁堢殑灞炴�ap
- * @param attrMap
- * @param dataInfoMap
- * @return
- */
- public Map<String, String> getShowMap(Map<String, String> attrMap,Map<String, String> dataInfoMap){
- Map<String, String> outMap = new HashMap<String, String>();//杞崲鐨刱ey鍚庣殑map
- for (String systemkey:attrMap.keySet()){
- String mdmKey = attrMap.getOrDefault(systemkey,"");
- String value = dataInfoMap.getOrDefault(mdmKey,"");
- if(StringUtils.isNotEmpty(value)){
- outMap.put(systemkey,value);
- }
- }
- return outMap;
- }
- /**
- * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
- * 蹇呴』瑕佹湁鍒嗙被oid鍜宒ata
- */
- @Override
- public BaseResult applyData(List<PreApplyCodeOrderDTO> preApplyCodeOrderDTOList) {
-
- List<Map> retMapList = new ArrayList<Map>();//淇濆瓨杩斿洖鐨勯敊璇痮id鍜屼俊鎭�
- for (PreApplyCodeOrderDTO preApplyCodeOrderDTO : preApplyCodeOrderDTOList) {
-
- CodeOrderDTO codeOrderDTO = new CodeOrderDTO();
- try {
- //鏍规嵁鍒嗙被oid鏌ヨ妯℃澘oid锛岀紪鐮佽鍒檕id
- String codeClassfyOid = preApplyCodeOrderDTO.getCodeClassifyOid();
-
- //鏌ヨdata鐨則ype
- String dataoid = preApplyCodeOrderDTO.getDataoid();
- DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(dataoid);
-
- //鏌ヨ缂栫爜瑙勫垯oid
- String ruleOid = null;
- try {
- CodeRuleVO codeRuleVO = engineService.getCodeRuleByClassifyOid(codeClassfyOid);
- ruleOid = codeRuleVO.getOid();
- }catch (Exception e){
- Map retMap = new HashMap<String,String>();
- retMap.put("oid",codeOrderDTO.getOid());
- retMap.put("msg","閫夋嫨鐨勫垎绫讳互鍙婁笂绾у垎绫绘病鏈夐厤缃紪鐮佽鍒�");
- retMapList.add(retMap);
- logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁鍒嗙被oid鏌ヨ缂栫爜瑙勫垯澶辫触,鍒嗙被oid: "+codeClassfyOid);
- continue;
- }
-
- //鏌ヨ浣跨敤鐨勬ā鏉縪id
- String templateOid = null;
- try {
- CodeClassifyTemplateVO codeClassifyTemplateVO = engineService.getUsedTemplateByClassifyOid(codeClassfyOid);
- templateOid = codeClassifyTemplateVO.getOid();
- }catch (Exception e){
- Map retMap = new HashMap<String,String>();
- retMap.put("oid",codeOrderDTO.getOid());
- retMap.put("msg","閫夋嫨鐨勫垎绫讳互鍙婁笂绾у垎绫绘病鏈夐厤缃厤缃ā鏉�");
- retMapList.add(retMap);
- logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁鍒嗙被oid鏌ヨ浣跨敤鐨勬ā鏉垮け璐�,鍒嗙被oid: "+codeClassfyOid);
- continue;
- }
-
- //鏍规嵁dataoid鏌ヨdataInfoMap
- Map dataInfoMap = null;
-
- DockingPreApplyDataDTO dockingPreApplyDataDTO = new DockingPreApplyDataDTO();
- dockingPreApplyDataDTO.setOid(preApplyCodeOrderDTO.getDataoid());
- BaseResult baseResult_dataMap = getDataInfoMap(dockingPreApplyDataDTO);
- if(ResultCodeEnum.SUCCESS.code==baseResult_dataMap.getCode()){
- Object datao = baseResult_dataMap.getObj();
- if(datao!=null){
- dataInfoMap = (Map<String, String>)datao;
- }
- }
- if(dataInfoMap==null){
- Map retMap = new HashMap<String,String>();
- retMap.put("oid",codeOrderDTO.getOid());
- retMap.put("msg","鏌ヨ鍒版帴鏀剁殑棰勭敵璇锋暟鎹负绌�");
- retMapList.add(retMap);
- logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁DockingPreApplyData_oid鏌ヨ鏁版嵁鎺ユ敹鐨勯鐢宠鏁版嵁澶辫触,DockingPreApplyData_oid: "+preApplyCodeOrderDTO.getDataoid());
- continue;
- }
-
- //鎶奷atainfomap鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲涓烘渶缁堝瓨鍏ョ殑鏁版嵁map
- String systemid = dockingPreApplyDataDO.getSystemid();//绯荤粺缂栧彿
- String type = dockingPreApplyDataDO.getType();//type
-
- PreApplyDataTrans preApplyDataTrans = getPreApplyDataTransBySystemIdAndType(systemid,type);
- if(preApplyDataTrans == null){
- String msg = "璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉挎垚鍔�,浣嗘槸娌℃湁鍖归厤鐨勬ā鏉垮睘鎬�,systemid: "+systemid+",type: "+type;
- logger.error(msg);
- preApplyDataTrans = new PreApplyDataTrans(systemid,type,new HashMap<String,String>());
- }
-
- Map<String, String> attrMap = preApplyDataTrans.getAttrMap();
-
- Map<String, String> data = getShowMap(attrMap,dataInfoMap);
- if(data.size()==0){
- Map retMap = new HashMap<String,String>();
- retMap.put("oid",codeOrderDTO.getOid());
- retMap.put("msg","鎺ユ敹鐨勯鐢宠鏁版嵁鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲灞炴�уけ璐�");
- retMapList.add(retMap);
- logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鎺ユ敹鐨勯鐢宠鏁版嵁鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲灞炴�уけ璐�!");
- continue;
- }
-
- String name = data.getOrDefault("name","");
-
- //鎵ц鏁版嵁淇濆瓨
- codeOrderDTO.setCodeClassifyOid(codeClassfyOid);
- codeOrderDTO.setTemplateOid(templateOid);
- codeOrderDTO.setCodeRuleOid(ruleOid);
- codeOrderDTO.setSecDTOList(preApplyCodeOrderDTO.getSecDTOList());//鐮佹
- codeOrderDTO.setEditInProcess(preApplyCodeOrderDTO.isEditInProcess());
- codeOrderDTO.setUpVersion(preApplyCodeOrderDTO.isUpVersion());
- codeOrderDTO.setName(name);
- codeOrderDTO.setData(data);
- engineService.addSaveCode(codeOrderDTO);
-
- //鍐嶄慨鏀筪ata閲岃竟鐨刢lassifyoid鍜宑lassifuname
- String classifyoid = preApplyCodeOrderDTO.getCodeClassifyOid();
- //鏌ヨ鍒嗙被
- CodeClassifyVO codeClassifyVO = codeClassifyServiceI.getObjectByOid(classifyoid);
- //璁剧疆鍒嗙被oid,name,flag
- dockingPreApplyDataDO.setClassifyoid(codeClassifyVO.getOid());
- dockingPreApplyDataDO.setClassifyname(codeClassifyVO.getName());
- dockingPreApplyDataMapper.updateByPrimaryKey(dockingPreApplyDataDO);
- } catch (Exception e) {
- Map retMap = new HashMap<String,String>();
- retMap.put("oid",preApplyCodeOrderDTO.getDataoid());
- retMap.put("msg","澶勭悊澶辫触!");
- retMapList.add(retMap);
- logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: "+e.getMessage());
- }
- }
- BaseResult result = BaseResult.success(retMapList);
- return result;
- }
-
- @Override
- public BaseResult batchApplyDatas(List<CodeOrderDTO> codeOrderDTOs) {
- if(!CollectionUtils.isEmpty(codeOrderDTOs)){
- CodeOrderDTO orderDTO=codeOrderDTOs.get(0);
- Map<String,String> rowsOidMap=new HashMap<>();
- SheetDataSet dataSet=new SheetDataSet();
- List<SheetRowData> sheetRowDatas=new ArrayList<>();
- CodeClassifyTemplateVO codeClassifyTemplateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
- List<String> colName=new ArrayList<>();
- List<CodeClassifyTemplateAttrVO> templateAttrVOS=codeClassifyTemplateVO.getAttributes();
- List<CodeClassifyTemplateAttrVO> attrVOS = templateAttrVOS.stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<String/**鑻辨枃鍚嶇О**/, String/**涓枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(),(o1, o2)->o2));
- for (int i=0;i<codeOrderDTOs.size();i++) {
- CodeOrderDTO codeOrderDTO=codeOrderDTOs.get(i);
- String dataoid = codeOrderDTO.getOid();
- rowsOidMap.put(i+"",dataoid);//瀛樺偍鏁版嵁oid锛屼竴閬嶈缃�
-
- SheetRowData sheetRowData=new SheetRowData();
- Map<String, String> dataMap= codeOrderDTO.getData();
- sheetRowData.setRowIndex(i+"");
- Map<Integer,String> indexValueMap=new HashMap<>();
- int index=0;
- colName=new ArrayList<>();
- for (String field: attrNameIdMap.keySet()) {
- String outAttrName=attrNameIdMap.get(field);
- colName.add(outAttrName);
- String value="";
- if(dataMap.containsKey(field)){
- value=StringUtils.isBlank(dataMap.get(field))?"":dataMap.get(field);
- }else{
- value="";
- }
- indexValueMap.put(index++,value);
- }
- sheetRowData.setData(indexValueMap);
- sheetRowDatas.add(sheetRowData);
- }
- dataSet.setRowData(sheetRowDatas);
- dataSet.setColName(colName);
- Map<String,String> errorMap=new HashMap<>();
- List<String> codeList=mdmIOService.batchImportCode(orderDTO,codeClassifyTemplateVO,dataSet,errorMap,false);
- List<SheetRowData> needSaveCboList = dataSet.getRowData().stream().filter(cbo -> {
- String rowIndex =cbo.getRowIndex();
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- LinkedList<String> needOIdList=new LinkedList<>();
- Map<String,String> codeIdMap=new HashMap<>();
- for(int i=0;i<needSaveCboList.size();i++) {
- SheetRowData cbo = needSaveCboList.get(i);
- String rouIndex = cbo.getRowIndex();
- if (rowsOidMap.containsKey(rouIndex)) {
- String dataOid = rowsOidMap.get(rouIndex);
- needOIdList.add(dataOid);
- codeIdMap.put(dataOid,codeList.get(i));
- }
- }
- if(!CollectionUtils.isEmpty(needOIdList)) {
- CodeClassifyVO codeClassifyVO = codeClassifyServiceI.getObjectByOid(orderDTO.getCodeClassifyOid());
- List<DockingPreApplyDataDO> dockingPreApplyDataDOS = dockingPreApplyDataMapper.selectByPrimaryKeys(VciBaseUtil.array2String(needOIdList.toArray(new String[]{})));
- dockingPreApplyDataDOS.stream().forEach(dockingPreApplyDataDO -> {
- //璁剧疆鍒嗙被oid,name,flag
- String dataOid=dockingPreApplyDataDO.getOid();
- dockingPreApplyDataDO.setClassifyoid(codeClassifyVO.getOid());
- dockingPreApplyDataDO.setClassifyname(codeClassifyVO.getName());
- if(codeIdMap.containsKey(dataOid)) {//瀛樺叆鏁版嵁缂栫爜
- String code= codeIdMap.get(dataOid);
- dockingPreApplyDataDO.setId(code);
- dockingPreApplyDataDO.setPreapplyoid(code);
- dockingPreApplyDataDO.setNum(code);
- }
-
- dockingPreApplyDataDO.setDatamsg("璧嬬爜鎴愬姛");
- dockingPreApplyDataDO.setUseddflag("true");
- });
- dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOS);
- }
- //濡傛灉鏈夐敊璇垯瀵煎嚭execl
- if(errorMap.size()>0){
- List<String> needRowIndexList = new ArrayList<>();
- String errorFile=returnErrorToExcel(dataSet.getRowData(),errorMap, needRowIndexList,dataSet.getColName());
- if(StringUtils.isNotBlank(errorFile)){
- //鏀惧埌map閲�
- BaseResult result = BaseResult.fail("鏈夐儴鍒嗘暟鎹敵璇峰け璐ワ紝璇锋牳瀵�");
- result.setObj(ControllerUtil.putErrorFile(errorFile));
- return result;
- }else {
- return BaseResult.success("鐢宠鎴愬姛!");
- }
-
- }
-
- }
-
- return BaseResult.success("鐢宠鎴愬姛!");
- }
-
- /**
- * 閿欒淇℃伅杩斿洖excel
- * @param rowDataList 鎵�鏈夌殑瀵煎叆鏁版嵁
- * @param errorMap 閿欒鐨勪俊鎭�
- * @param needRowIndexList 闇�瑕佸啓鍏ョ殑鏁版嵁鐨勮鍙�
- * @param titleRowData 鏍囬琛�
- *
- * @return 閿欒鐨別xcel鏂囦欢锛屾病鏈夐敊璇細杩斿洖绌�
- */
- private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
- Map<String,String> errorMap,
- List<String> needRowIndexList,List<String> titleRowData){
- if(CollectionUtils.isEmpty(errorMap)){
- return "";
- }
- Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
- LinkedList<WriteExcelData> errorDataList = new LinkedList<>();
- errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
- for (int i = 0; i < titleRowData.size(); i++) {
- //閿欒淇℃伅鍦ㄦ渶鍚�
- errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
- }
- Integer[] newRowIndex = new Integer[]{1};
- errorMap.forEach((index,error)->{
- //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
- SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
- if(rowData!=null){
- errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
- rowData.getData().forEach((colIndex,value)->{
- errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
- });
- newRowIndex[0]++;
- }
- });
- String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
- WriteExcelOption eo = new WriteExcelOption(errorDataList);
- try {
- new File(excelFileName).createNewFile();
- } catch (IOException e) {
- throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
- }
- ExcelUtil.writeDataToFile(excelFileName,eo);
- return excelFileName;
- }
-
- /**
- * 瑙f瀽棰勭敵璇锋暟鎹拰鍒嗙被鐨勫睘鎬ц浆鎹㈡ā鏉縮s
- */
- public List<PreApplyDataTrans> readAttrTransfTemplate(String templateXml) throws Exception{
- templateXml = StringUtils.isEmpty(templateXml)?"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
- "<datas systemid=\"oa0001\">\n" +
- "\t<data type=\"wupin\">\n" +
- "\t\t<attr systemkey=\"code01\" mdmkey=\"key01\"/>\n" +
- "\t\t<attr systemkey=\"code02\" mdmkey=\"key02\"/>\n" +
- "\t</data>\n" +
- "</datas>":templateXml;
-
- List<PreApplyDataTrans> preApplyDataTransList = new ArrayList<PreApplyDataTrans>();
- Document document = DocumentHelper.parseText(templateXml);
- Element datas_element = document.getRootElement();
- List<Element> data_elements = datas_element.elements(XML_DATA);
- for (Element data_element:data_elements){
- Attribute systemid_attr = data_element.attribute(XML_SYSTEMID);
- String systemid = systemid_attr==null?"":systemid_attr.getValue();//systemid
-
- Attribute type_attr = data_element.attribute(XML_TYPE);
- String type = type_attr==null?"":type_attr.getValue();//type
-
- List<Element> attr_elements = data_element.elements(XML_ATTR);
- Map<String,String> attrMap = new HashMap<String,String>();
- for (Element attr_element:attr_elements){
- Map<String,Object> dataMap = new HashMap<String,Object>();
-
- Attribute systemkey_attr = attr_element.attribute(XML_SYSTEMKEY);
- String systemkey = systemkey_attr==null?"":systemkey_attr.getValue();//systemkey
-
- Attribute mdmkey_attr = attr_element.attribute(XML_MDMKEY);
- String mdmkey = mdmkey_attr==null?"":mdmkey_attr.getValue();//mdmkey
-
- attrMap.put(systemkey,mdmkey);
- PreApplyDataTrans p = new PreApplyDataTrans(systemid,type,attrMap);
- preApplyDataTransList.add(p);
- }
- }
- return preApplyDataTransList;
- }
-
-
- class PreApplyDataTrans{
- private String systemid;
- private String type;
- private Map<String,String> attrMap;
-
- public PreApplyDataTrans(String systemid, String type, Map<String, String> attrMap) {
- this.systemid = systemid;
- this.type = type;
- this.attrMap = attrMap;
- }
-
- public String getSystemid() {
- return systemid;
- }
-
- public void setSystemid(String systemid) {
- this.systemid = systemid;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Map<String, String> getAttrMap() {
- return attrMap;
- }
-
- public void setAttrMap(Map<String, String> attrMap) {
- this.attrMap = attrMap;
- }
- }
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreAttrMappingSeviceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreAttrMappingSeviceImpl.java
deleted file mode 100644
index 99e4da7..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/DockingPreAttrMappingSeviceImpl.java
+++ /dev/null
@@ -1,529 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-import com.vci.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.exception.VciBaseException;
-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.OsEnumItemVO;
-import com.vci.web.redis.RedisService;
-import com.vci.web.service.OsEnumServiceI;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.DockingPreAttrMappingDaoI;
-import org.springblade.code.dao.DockingPreAttrRangeDaoI;
-import org.springblade.code.dto.DockingPreAttrMappingDTO;
-import org.springblade.code.dto.DockingPreAttrRangeDTO;
-import org.springblade.code.model.DockingPreAttrMappingDO;
-import org.springblade.code.model.DockingPreAttrRangeDO;
-import org.springblade.code.service.CodeClassifyTemplateAttrServiceI;
-import org.springblade.code.service.DockingPreAttrMappingSeviceI;
-import org.springblade.code.service.MdmEngineServiceI;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrMappingVO;
-import org.springblade.code.vo.pagemodel.DockingPreAttrRangeVO;
-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.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Service
-public class DockingPreAttrMappingSeviceImpl implements DockingPreAttrMappingSeviceI {
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 闆嗘垚灞炴�ф槧灏勯厤缃湇鍔�
- */
- @Resource
- private DockingPreAttrMappingDaoI dockingPreAttrMappingDaoI;
- /**
- * 闆嗘垚灞炴�у彇鍊艰寖鍥撮厤缃湇鍔�
- */
- @Resource
- private DockingPreAttrRangeDaoI dockingPreAttrRangeDODaoI;
- /**
- * 鍒嗙被鎿嶄綔鏈嶅姟
- */
- @Autowired
- private CodeClassifyServiceImpl codeClassifyService;
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 缂撳瓨鏈嶅姟
- */
- @Autowired
- private RedisService redisService;
-
- /**
- * 涓绘暟鎹紩鎿庣殑鏈嶅姟
- */
- @Autowired
- private MdmEngineServiceI engineService;
- /**
- *鏋氫妇鏈嶅姟
- */
- @Autowired
- private OsEnumServiceI osEnumService;
- @Autowired
- private CodeClassifyTemplateAttrServiceI codeClassifyTemplateAttrServiceI;
-
- /***
- * 灞炴�ф槧灏勫垪琛�
- * @param conditionMap
- * @param pageHelper
- * @param type
- * @return
- * @throws VciBaseException
- */
- @Override
- public DataGrid<DockingPreAttrMappingVO> gridAttrMappings(String clsfId, int type, Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
-
- }
- VciBaseUtil.alertNotNull(clsfId,"鍒嗙被涓婚敭");
- VciBaseUtil.alertNotNull(type,"鎿嶄綔绫诲瀷");
- //VciBaseUtil.alertNotNull(templateOid,"妯℃澘涓婚敭");
- if(conditionMap==null){
- conditionMap=new HashMap<>();
- }
-
- /***
- * 1.棣栧厛鍘绘ā鏉块噷鏌ヨ鏄惁鏈夊鍒犲睘鎬�
- * 2.濡傛灉鏈夌殑璇濋渶瑕佹牎楠屽睘鎬х殑鍚嶇О鏄惁鏈夊彉鏇�
- */
- List<ClientBusinessObject> tempCBO=new ArrayList<>();
- ClientBusinessObject clssCBO=new ClientBusinessObject();
- // List<String> templateIds = VciBaseUtil.str2List(templateOid);
- Map<String,String> cboOidMap=new HashMap<>();
- String btmName= MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR;
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(clsfId);
-
- if(StringUtils.isBlank(templateVO.getOid())){
- return new DataGrid<>();
- }
- String templateOid=templateVO.getOid();
- String clsfBtmName=MdmBtmTypeConstant.CODE_CLASSIFY;
- String orderbyFiled="";
- if(type==1) {//浠h〃鐨勬槸wrj
- orderbyFiled="ordernum";
- cboOidMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateVO.getOid()) + ")");
- btmName=MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR;
- clsfBtmName=MdmBtmTypeConstant.CODE_CLASSIFY;
- }else{
- orderbyFiled="codeattrseq";
- cboOidMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOid) + ")");
- btmName=MdmBtmTypeConstant.DOCKING_PRE_JMETAATRR;
- clsfBtmName=MdmBtmTypeConstant.DOCKING_PRE_JCLASS;
- }
- //鎸夋ā鏉块『搴忓睍绀哄睘鎬�
- PageHelper tempPageHelper=new PageHelper();
- tempPageHelper = new PageHelper(-1);
- tempPageHelper.addDefaultAsc(orderbyFiled);
- tempCBO = boService.queryCBO(btmName,cboOidMap,tempPageHelper);
- if(CollectionUtils.isEmpty(tempCBO)){
- throw new VciBaseException("鏍规嵁妯℃澘涓婚敭鏈煡璇㈠埌鐩稿簲鐨勫睘鎬т俊鎭�");
- }
- clssCBO= boService.selectCBOByOid(clsfId,clsfBtmName);
- if(clssCBO==null||StringUtils.isBlank(clssCBO.getOid())){
- throw new VciBaseException("鏍规嵁鍒嗙被涓婚敭鏈煡璇㈠埌鍒嗙被淇℃伅");
- }
- pageHelper.addDefaultDesc("createTime");
- //鏍规嵁婧愬垎绫籭d鍜屾ā鏉縤d鏌ヨ妯℃澘鏄犲皠鏁版嵁
- // conditionMap.put("jsourceClsfId",clsfId);
- conditionMap.put("jviewModeId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOid) + ")");
-
- List<DockingPreAttrMappingDO> doList = dockingPreAttrMappingDaoI.selectByCondition(conditionMap,pageHelper);
- Map<String/**涓枃鍚嶇О**/, DockingPreAttrMappingDO/**鏁版嵁瀵硅薄**/> dockingAttrmappingOidToMap = doList.stream().collect(Collectors.toMap(s -> s.getJmetaListId(), t -> t,(o1, o2)->o2));
- List<DockingPreAttrMappingDO> newDockingPreAttrMappingDOS=new ArrayList<>();
- ClientBusinessObject finalClssCBO = clssCBO;
- tempCBO.stream().forEach(cbo ->{
- DockingPreAttrMappingDO dockingPreAttrMappingDO=new DockingPreAttrMappingDO();
- String oid=cbo.getOid();//灞炴�id
- if(dockingAttrmappingOidToMap.containsKey(oid)){
- dockingPreAttrMappingDO=dockingAttrmappingOidToMap.get(oid);
- }else{
- dockingPreAttrMappingDO.setOid(redisService.getUUIDEveryDay());
- dockingPreAttrMappingDO.setJmetaListId(oid);//婧愮郴缁熺殑灞炴�id
- dockingPreAttrMappingDO.setJdefaultValue("");//榛樿鍊�
- dockingPreAttrMappingDO.setJsourceAttrKey(cbo.getId());//婧愮郴缁熷睘鎬у唴閮ㄥ悕绉�
- dockingPreAttrMappingDO.setJsourceAttrName(cbo.getName());//婧愮郴缁熷睘鎬у悕绉�
- dockingPreAttrMappingDO.setJsourceClsfId(clsfId);//婧愮郴缁熺殑鍒嗙被oid
- dockingPreAttrMappingDO.setJsourceClsfName(finalClssCBO.getName());//婧愮郴缁熺殑鍒嗙被鍚嶇О
- dockingPreAttrMappingDO.setJviewModeId(templateOid);//鏆傛椂涓嶅瓨,妯℃澘瑙嗗浘鐨刼id
- dockingPreAttrMappingDO.setJviewModeName(templateVO.getName());//鏆傛椂涓嶅瓨锛屾ā鏉垮悕绉�
- dockingPreAttrMappingDO.setJtargetAttrId("");//鐩爣绯荤粺灞炴�х郴id
- dockingPreAttrMappingDO.setJtargetAttrName("");//鐩爣绯荤粺灞炴�у悕绉�
- dockingPreAttrMappingDO.setJtargetAttrKey("");//鐩爣绯荤粺灞炴�у唴閮ㄥ��
- dockingPreAttrMappingDO.setJtargetClsfId("");//鐩爣绯荤粺鍒嗙被oid
- }
- newDockingPreAttrMappingDOS.add(dockingPreAttrMappingDO);
- } );
-
- DataGrid<DockingPreAttrMappingVO> dataGrid=new DataGrid<DockingPreAttrMappingVO>();
- if (!CollectionUtils.isEmpty(newDockingPreAttrMappingDOS)) {
- dataGrid.setData(dockingPreAttrMappingDO2VOs(newDockingPreAttrMappingDOS));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreAttrMappingDaoI.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /***
- * 鑾峰彇灞炴�ф灇涓�
- * @param conditionMap
- * @param pageHelper
- * @return
- * @throws VciBaseException
- */
- @Override
- public DataGrid<DockingPreAttrRangeVO> gridAttrRanges(String attrOid, int type, Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
- VciBaseUtil.alertNotNull(attrOid,"灞炴�т富閿�");
- VciBaseUtil.alertNotNull(type,"鎿嶄綔绫诲瀷");
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- if(conditionMap==null){
- conditionMap=new HashMap<>();
- }
- pageHelper.addDefaultDesc("createTime");
- conditionMap.put("jmetaListId",attrOid);
- List<DockingPreAttrRangeDO> doList =dockingPreAttrRangeDODaoI.selectByCondition(conditionMap,pageHelper);
- Map<String/**鏋氫妇鍐呴儴鍚嶇О**/, DockingPreAttrRangeDO/**鏁版嵁瀵硅薄**/> dockingPreAttrRangeValueMap = doList.stream().collect(Collectors.toMap(s -> s.getJnumTextValue(), t -> t,(o1, o2)->o2));
- CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO= codeClassifyTemplateAttrServiceI.getObjectByOid(attrOid);
- String attrkey= codeClassifyTemplateAttrVO.getId();
- Map<String,String> cboOidMap=new HashMap<>();
- List<DockingPreAttrRangeDO> newDockingPreAttrRangeDO=new ArrayList<>();
- if(type==1){
- List<OsEnumItemVO> osEnumItemVOList= osEnumService.listEnumByAttriteKey(attrkey);
- if(!CollectionUtils.isEmpty(osEnumItemVOList)) {
- osEnumItemVOList.stream().forEach(osEnumItemVO -> {
- DockingPreAttrRangeDO dockingPreAttrRangeDO = dockingPreAttrRangeValueMap.get(osEnumItemVO.getId());
- if (!dockingPreAttrRangeValueMap.containsKey(osEnumItemVO.getId())) {
- dockingPreAttrRangeDO = new DockingPreAttrRangeDO();
- dockingPreAttrRangeDO.setOid(redisService.getUUIDEveryDay());
- dockingPreAttrRangeDO.setJmetaListId(attrOid);//灞炴�id
- dockingPreAttrRangeDO.setJnumText(osEnumItemVO.getName());//灞炴�ф灇涓炬樉绀哄��
- dockingPreAttrRangeDO.setJnumTextValue(osEnumItemVO.getId());//鏋氫妇鍐呴儴鍊�
- dockingPreAttrRangeDO.setJtargeNumText("");//閰嶇疆鐨勬樉绀哄��
- dockingPreAttrRangeDO.setJtargeNumTextValue("");//閰嶇疆鐨勫唴閮ㄥ��
- }
- newDockingPreAttrRangeDO.add(dockingPreAttrRangeDO);
- });
- }
- }
- DataGrid<DockingPreAttrRangeVO> dataGrid=new DataGrid<>();
- if (!CollectionUtils.isEmpty(newDockingPreAttrRangeDO)) {
- dataGrid.setData(dockingPreAttrRangeDO2VOs(newDockingPreAttrRangeDO));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreAttrRangeDODaoI.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /***
- *淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
- * @param dockingPreAttrMappingDTOS 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
- * @return
- * @throws VciBaseException
- */
- @Override
- public List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingDTO> dockingPreAttrMappingDTOS) throws VciBaseException {
- List<DockingPreAttrMappingVO> dockingPreAttrMappingVOS=new ArrayList<>();
- if(CollectionUtils.isEmpty(dockingPreAttrMappingDTOS)){
- return new ArrayList<>();
- }
- /**
- * 1.浼犻�掕繃鏉ョ殑鏈夊彲鑳戒富鏁版嵁妯℃澘鏂板灞炴�э紝杩欐牱鐨勯渶瑕佹坊鍔狅紝涔熸湁鍙兘鍒犻櫎鐨勫睘鎬э紝杩欐牱鐨勬槧灏勯渶瑕佸垹闄�
- * 涔熸湁鏇存柊鐨勮繖鏍峰垯鏇存柊
- */
- List<DockingPreAttrMappingDO> newDockingPreAttrMappingDOS=new ArrayList<>();
- List<String>oidList=new ArrayList<>();
- List<String>attrIdList=new ArrayList<>();
- List<String> attributeOidList=new ArrayList<>();
- List<DockingPreAttrRangeDO> newDockingPreAttrRangeDTOList=new ArrayList<>();
- dockingPreAttrMappingDTOS.stream().forEach(dockingPreAttrMappingDTO -> {
- List<DockingPreAttrRangeDTO>dockingPreAttrRangeDTOList=dockingPreAttrMappingDTO.getDockingPreAttrRangeDTOS();
- DockingPreAttrMappingDO dockingPreAttrMappingDO=new DockingPreAttrMappingDO();
- oidList.add(dockingPreAttrMappingDTO.getOid());
- if(!CollectionUtils.isEmpty(dockingPreAttrRangeDTOList)) {
- attrIdList.add(dockingPreAttrMappingDTO.getJmetaListId());
- List<DockingPreAttrRangeDO> dockingPreAttrRangeDOList = dockingPreAttrRangeDTO2DOs(dockingPreAttrRangeDTOList);
- newDockingPreAttrRangeDTOList.addAll(dockingPreAttrRangeDOList);
- }
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrMappingDTO, dockingPreAttrMappingDO);
- newDockingPreAttrMappingDOS.add(dockingPreAttrMappingDO);
- });
- List<DockingPreAttrRangeDO> dockingPreAttrRangeDOList=new ArrayList<>();
- if(!CollectionUtils.isEmpty(attrIdList)) {
- //鑾峰彇瀛樺湪鐨勫睘鎬у彇鍊艰寖鍥�.
- dockingPreAttrRangeDOList = dockingPreAttrRangeDODaoI.selectByAttrOid(StringUtils.join(attrIdList, ","));
- }
- //鑾峰彇瀛樺湪鐨勫睘鎬ф槧灏�.
- List<DockingPreAttrMappingDO> dataAttrMapping = dockingPreAttrMappingDaoI.selectByOid(StringUtils.join(oidList, ","));
- Map<String/**oid**/,DockingPreAttrMappingDO/**灞炴�у璞�**/> allSaveAttrMappingMap = newDockingPreAttrMappingDOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
- Map<String/**oid**/,DockingPreAttrMappingDO/**瀵硅薄**/> oldAttrMappingMap =dataAttrMapping.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
-
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
- BatchCBO batchCbos = new BatchCBO();
- //闇�瑕佹柊澧炵殑灞炴�ф槧灏�
- List<DockingPreAttrMappingDO> needSaveCboList = newDockingPreAttrMappingDOS.stream().filter(cbo -> {
- String oid =cbo.getOid();
- return !oldAttrMappingMap.containsKey(oid);
- }).collect(Collectors.toList());
- if(needSaveCboList.size()>0) {
- BatchCBO addCOB = dockingPreAttrMappingDaoI.batchInsert(needSaveCboList);
- batchCbos.copyFromOther(addCOB);
- }
- Map<String/**oid**/,DockingPreAttrMappingDO/**瀵硅薄**/> saveAttrMappingMap = needSaveCboList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛岄渶瑕佹洿鏂扮殑灞炴�ф槧灏�
- List<DockingPreAttrMappingDO> needEditCboList = newDockingPreAttrMappingDOS.stream().filter(cbo -> {
- String oid =cbo.getOid();
- return !saveAttrMappingMap.containsKey(oid);
- }).collect(Collectors.toList());
- if(needEditCboList.size()>0) {
- List<DockingPreAttrMappingDO> editCboList=new ArrayList<>();
- needEditCboList.stream().forEach(cbo->{
- String oid=cbo.getOid();
- if(oldAttrMappingMap.containsKey(oid)){
- DockingPreAttrMappingDO dockingPreAttrMappingDO= oldAttrMappingMap.get(oid);
- dockingPreAttrMappingDO.setJtargetAttrKey(cbo.getJtargetAttrKey());
- dockingPreAttrMappingDO.setJtargetAttrName(cbo.getJtargetAttrName());
- dockingPreAttrMappingDO.setJtargetAttrId(cbo.getJtargetAttrId());
- dockingPreAttrMappingDO.setJtargetClsfId(cbo.getJtargetClsfId());
- dockingPreAttrMappingDO.setJdefaultValue(cbo.getJdefaultValue());
- editCboList.add(dockingPreAttrMappingDO);
- }
- });
- BatchCBO editCOB = dockingPreAttrMappingDaoI.batchUpdate(editCboList);
- batchCbos.copyFromOther(editCOB);
- }
- //闇�瑕佸垹闄ょ殑灞炴�ф槧灏�
- List<String> deleteIdList=new ArrayList<>();
- dataAttrMapping.stream().forEach(cbo -> {
- String oid =cbo.getOid();
- if(!allSaveAttrMappingMap.containsKey(oid)){
- deleteIdList.add(oid);
- }
- });
- if(deleteIdList.size()>0) {
- BatchCBO deleteCBO = dockingPreAttrMappingDaoI.batchDeleteByOids(deleteIdList);
- batchCbos.copyFromOther(deleteCBO);
- }
- //鍙栧�艰寖鍥村鐞�
- if(!CollectionUtils.isEmpty(newDockingPreAttrRangeDTOList)) {
- Map<String/**oid**/, DockingPreAttrRangeDO/**灞炴�у璞�**/> allSaveAttrAttrRangeDOMap =newDockingPreAttrRangeDTOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
- Map<String/**oid**/, DockingPreAttrRangeDO/**瀵硅薄**/> oldSaveAttrAttrRangeDOMap = dockingPreAttrRangeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
- //闇�瑕佹柊澧炵殑灞炴�у彇鍊艰寖鍥�
- List<DockingPreAttrRangeDO> needSaveRangeCboList = newDockingPreAttrRangeDTOList.stream().filter(cbo -> {
- String oid = cbo.getOid();
- return !oldSaveAttrAttrRangeDOMap.containsKey(oid);
- }).collect(Collectors.toList());
- if(needSaveRangeCboList.size()>0) {
- BatchCBO addRangeCOB = dockingPreAttrRangeDODaoI.batchInsert(needSaveRangeCboList);
- batchCbos.copyFromOther(addRangeCOB);
- }
- //闇�瑕佹洿鏂扮殑灞炴�у彇鍊艰寖鍥�
- Map<String/**oid**/, DockingPreAttrRangeDO/**瀵硅薄**/> saveRangeMap = needSaveRangeCboList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
- List<DockingPreAttrRangeDO> needEditRangeCboList = newDockingPreAttrRangeDTOList.stream().filter(cbo -> {
- String oid = cbo.getOid();
- return !saveRangeMap.containsKey(oid);
- }).collect(Collectors.toList());
-
- if(needEditRangeCboList.size()>0) {
- List<DockingPreAttrRangeDO> editCboList=new ArrayList<>();
- needEditRangeCboList.stream().forEach(cbo->{
- String oid=cbo.getOid();
- if(oldSaveAttrAttrRangeDOMap.containsKey(oid)){
- DockingPreAttrRangeDO dockingPreAttrRangeDO= oldSaveAttrAttrRangeDOMap.get(oid);
- dockingPreAttrRangeDO.setJtargeNumText(cbo.getJtargeNumText());
- dockingPreAttrRangeDO.setJtargeNumTextValue(cbo.getJtargeNumTextValue());
- editCboList.add(dockingPreAttrRangeDO);
- }
- });
- BatchCBO editRangeCOB = dockingPreAttrRangeDODaoI.batchUpdate(editCboList);
- batchCbos.copyFromOther(editRangeCOB);
- }
- //闇�瑕佸垹闄ょ殑灞炴�у彇鍊艰寖鍥�
- List<String> deleteRangeIdList = new ArrayList<>();
- dockingPreAttrRangeDOList.stream().forEach(cbo -> {
- String oid = cbo.getOid();
- if (!allSaveAttrAttrRangeDOMap.containsKey(oid)) {
- deleteRangeIdList.add(oid);
- }
- });
- if(deleteIdList.size()>0) {
- BatchCBO deleteRangeCBO = dockingPreAttrRangeDODaoI.batchDeleteByOids(deleteIdList);
- batchCbos.copyFromOther(deleteRangeCBO);
- }
- }
-
- WebUtil.setPersistence(true);
- this.boService.persistenceBatch(batchCbos);//鏇存敼鏁版嵁
- return dockingPreAttrMappingVOS;
- }
-
- /***
- * 鏍规嵁鏉′欢鏌ヨ灞炴�ф槧灏勪俊鎭�
- * @param conditionMap
- * @return
- * @throws VciBaseException
- */
- @Override
- public List<DockingPreAttrMappingVO> selectAttrMappings(Map<String, String> conditionMap) throws VciBaseException {
- List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
- VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreAttrMappingDO.class);
- queryWrapperForDO.setConditionMap(conditionMap);
- List<DockingPreAttrMappingDO> dockingPreAttrMappingDOS=dockingPreAttrMappingDaoI.selectByWrapper(queryWrapperForDO);
- List<String> attributOids=new ArrayList<>();
- if(!CollectionUtils.isEmpty(dockingPreAttrMappingDOS)){
- dockingPreAttrMappingDOS.stream().forEach(dockingPreAttrMappingDO -> {
- String attrOid= dockingPreAttrMappingDO.getJmetaListId();
- attributOids.add(attrOid);
- });
- dockingPreAttrMappingVOList= dockingPreAttrMappingDO2VOs(dockingPreAttrMappingDOS);
- Map<String/**oid**/,DockingPreAttrMappingVO/**瀵硅薄**/> attrMappingMap = dockingPreAttrMappingVOList.stream().collect(Collectors.toMap(s -> s.getJmetaListId(), t -> t,(o1, o2)->o2));
-
- VciQueryWrapperForDO queryWrapperForDO2 = new VciQueryWrapperForDO(DockingPreAttrRangeDO.class);
- Map<String,String> condtionMap=new HashMap<>();
- condtionMap.put("jmetaListId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(attributOids.toArray(new String[]{})) + ")");
- queryWrapperForDO.setConditionMap(conditionMap);
- List<DockingPreAttrRangeDO> dockingPreAttrRangeDOS=dockingPreAttrRangeDODaoI.selectByWrapper(queryWrapperForDO2);
- Map<String,List<DockingPreAttrRangeVO>> attribueOidMap=new HashMap<>();
- if(!CollectionUtils.isEmpty(dockingPreAttrRangeDOS)){
- dockingPreAttrRangeDOS.stream().forEach(dockingPreAttrRangeDO -> {
- String attributeOid= dockingPreAttrRangeDO.getJmetaListId();
- List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS=new ArrayList<>();
- dockingPreAttrRangeVOS.add(dockingPreAttrRangeDO2VO(dockingPreAttrRangeDO));
- if(attribueOidMap.containsKey(attributeOid)){
- List<DockingPreAttrRangeVO> oldDockingPreAttrRangeVOS= attribueOidMap.get(attributeOid);
- dockingPreAttrRangeVOS.addAll(oldDockingPreAttrRangeVOS);
- }
- attribueOidMap.put(attributeOid,dockingPreAttrRangeVOS);
- });
- }
- if(!CollectionUtils.isEmpty(attribueOidMap)){
- attribueOidMap.keySet().forEach(attoributeOid->{
- List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList= attribueOidMap.get(attoributeOid);
- if(attrMappingMap.containsKey(attoributeOid)){
- DockingPreAttrMappingVO dockingPreAttrMappingVO= attrMappingMap.get(attoributeOid);
- dockingPreAttrMappingVO.setDockingPreAttrRangeVOS(dockingPreAttrRangeVOList);
- }
- });
- }
- }
- return dockingPreAttrMappingVOList;
- }
-
- /***
- * 灞炴�ф灇涓惧璞¤浆鎹�
- * @param doList
- * @return
- */
- private List<DockingPreAttrRangeDO> dockingPreAttrRangeDTO2DOs(List<DockingPreAttrRangeDTO> doList) {
- List<DockingPreAttrRangeDO> voList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(doList)){
- for(DockingPreAttrRangeDTO s: doList){
- DockingPreAttrRangeDO doBO = dockingPreAttrRangeDTO2DO(s);
- if(doBO != null){
- voList.add(doBO);
- }
- }
- }
- return voList;
- }
-
- /***
- * 灞炴�ф灇涓炬槧灏�
- * @param dockingPreAttrRangeDTO
- * @return
- */
- private DockingPreAttrRangeDO dockingPreAttrRangeDTO2DO(DockingPreAttrRangeDTO dockingPreAttrRangeDTO) {
- DockingPreAttrRangeDO dockingPreAttrRangeDO = new DockingPreAttrRangeDO();
- if(dockingPreAttrRangeDTO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrRangeDTO,dockingPreAttrRangeDO);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- }
- return dockingPreAttrRangeDO;
- }
-
- /***
- * 灞炴�ф灇涓惧璞¤浆鎹�
- * @param doList
- * @return
- */
- private List<DockingPreAttrRangeVO> dockingPreAttrRangeDO2VOs(List<DockingPreAttrRangeDO> doList) {
- List<DockingPreAttrRangeVO> voList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(doList)){
- for(DockingPreAttrRangeDO s: doList){
- DockingPreAttrRangeVO vo = dockingPreAttrRangeDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /***
- * 灞炴�ф灇涓炬槧灏�
- * @param dockingPreAttrRangeDO
- * @return
- */
- private DockingPreAttrRangeVO dockingPreAttrRangeDO2VO(DockingPreAttrRangeDO dockingPreAttrRangeDO) {
- DockingPreAttrRangeVO vo = new DockingPreAttrRangeVO();
- if(dockingPreAttrRangeDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrRangeDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- }
- return vo;
- }
-
- /***
- * 灞炴�ф槧灏勫璞¤浆鎹�
- * @param doList
- * @return
- */
- private List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOs(List<DockingPreAttrMappingDO> doList) {
- List<DockingPreAttrMappingVO> voList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(doList)){
- for(DockingPreAttrMappingDO s: doList){
- DockingPreAttrMappingVO vo = dockingPreAttrMappingDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- private DockingPreAttrMappingVO dockingPreAttrMappingDO2VO(DockingPreAttrMappingDO dockingPreAttrMappingDO) {
- DockingPreAttrMappingVO vo = new DockingPreAttrMappingVO();
- if(dockingPreAttrMappingDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrMappingDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- }
- return vo;
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmEngineServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmEngineServiceImpl.java
deleted file mode 100644
index c027e6d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmEngineServiceImpl.java
+++ /dev/null
@@ -1,2753 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.vci.corba.common.VCIError;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-import com.vci.frameworkcore.pagemodel.SmUserVO;
-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.constant.RegExpConstant;
-import com.vci.starter.web.enumpck.BooleanEnum;
-import com.vci.starter.web.enumpck.UserSecretEnum;
-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.toolmodel.DateConverter;
-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.dto.BaseModelDTO;
-import com.vci.web.pageModel.KeyValue;
-import com.vci.web.pageModel.*;
-import com.vci.web.service.*;
-import com.vci.web.service.impl.FormulaServiceImpl;
-import com.vci.web.service.impl.OsEnumServiceImpl;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.bo.CodeTemplateAttrSqlBO;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dto.CodeDeleteBatchDTO;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.enumpack.CodeLevelTypeEnum;
-import org.springblade.code.enumpack.CodeSecTypeEnum;
-import org.springblade.code.enumpack.CodeUseButtonPositionTypeEnum;
-import org.springblade.code.lifecycle.CodeDefaultLC;
-import org.springblade.code.model.CodeClassifyTemplateAttrDO;
-import org.springblade.code.model.CodeClassifyTemplateDO;
-import org.springblade.code.service.*;
-import org.springblade.code.utils.DateUtils;
-import org.springblade.code.vo.pagemodel.*;
-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 java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.stream.Collectors;
-
-import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
-import static com.vci.web.constant.EnumIdConstant.LC_STATUS_SUBFIX;
-import static org.springblade.code.constant.MdmEngineConstant.*;
-
-/**
- * 涓绘暟鎹紩鎿庢湇鍔�
- *
- * @author weidy
- * @date 2022-2-22
- */
-@Service
-public class MdmEngineServiceImpl implements MdmEngineServiceI {
-
- /**
- * 蹇呰緭
- */
- public static final String REQUIRED_CHAR = "*";
- /**
- * 鏇挎崲瀛楃
- */
- public static final String SPECIAL_CHAR = "VCI";
- /**
- * 妯℃澘鐨勬湇鍔�
- */
- @Autowired
- private CodeClassifyTemplateServiceI templateService;
-
- /**
- * 妯℃澘鎸夐挳鏈嶅姟
- */
- @Autowired
- private CodeClassifyTemplateButtonServiceI templateButtonService;
-
- /**
- * 鍒嗙被鐨勬湇鍔�
- */
- @Autowired
- private CodeClassifyServiceI classifyService;
-
- /**
- * 涓氬姟鏁版嵁鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 鍏紡鐨勬湇鍔�
- */
- @Autowired
- private FormulaServiceImpl formulaService;
-
- /**
- * 鏋氫妇鐨勬湇鍔�
- */
- @Autowired
- private OsEnumServiceI enumService;
-
- /**
- * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
- */
- @Autowired
- private OsLifeCycleServiceI lifeCycleService;
-
- /**
- * 缂栫爜瑙勫垯鐨勬湇鍔�
- */
- @Autowired
- private CodeRuleServiceI ruleService;
-
- /**
- * 鍒嗙被鐮佸�肩殑鏈嶅姟
- */
- @Autowired
- private CodeClassifyValueServiceI classifyValueService;
-
- /**
- * 鍏抽敭灞炴�х殑閰嶇疆
- */
- @Autowired
- private CodeKeyAttrRepeatRuleServiceI keyRuleService;
-
-
- /**
- * 鍔熻兘鎸夐挳鐨勬湇鍔�
- */
- @Autowired
- private SmOperationServiceI operationService;
-
- /**
- * 鐢熸垚缂栫爜鐨勬湇鍔�
- */
- @Autowired
- private MdmProductCodeServiceI productCodeService;
-
- /**
- * 闃舵鐨勬湇鍔�
- */
- @Autowired
- private CodePhaseAttrServiceI phaseAttrService;
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 瀵嗙骇鐨勬湇鍔�
- */
- @Autowired
- private WebSecretServiceI secretService;
-
- /**
- * 鍙緭鍙��
- */
- @Autowired
- private BdSelectInputCharServiceI charService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
- /**
- * 鐩镐技椤规煡璇㈣鍒�
- */
- @Autowired
- private CodeResembleRuleServiceI resembleRuleService;
-
- /**
- * 灞炴�х殑鏈嶅姟
- */
- @Autowired
- private OsAttributeServiceI attributeService;
-
- /**
- * 鐢ㄦ埛鏌ヨ鐨勬湇鍔�
- */
- @Autowired
- private SmUserQueryServiceI userQueryService;
-
- /**
- * 妯℃澘灞炴�х殑鏈嶅姟
- */
- @Autowired
- private CodeClassifyTemplateAttrServiceI templateAttrService;
-
- /**
- * 鎷疯礉鐨勭増鏈�
- */
- public static final String COPY_FROM_VERSION = "copyfromversion";
-
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳
- *
- * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
- * @param functionId 鍔熻兘鐨勭紪鍙�
- * @return UI鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) {
- VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�");
- MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
- uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
- if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
- List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
- if (operationVOS == null) {
- operationVOS = new ArrayList<>();
- }
- //鏌ヨ鎵╁睍鎸夐挳
- List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid);
- if (!CollectionUtils.isEmpty(buttonVOS)) {
- for (int i = 0; i < buttonVOS.size(); i++) {
- CodeButtonVO buttonVO = buttonVOS.get(i);
- SmOperationVO operationVO = new SmOperationVO();
- operationVO.setModuleNo(functionId);
- operationVO.setUniqueFlag(buttonVO.getId());
- operationVO.setName(buttonVO.getName());
- operationVO.setAlias(operationVO.getName());
- operationVO.setExecuteJs(buttonVO.getExecutejs());
- operationVO.setIconCls(buttonVO.getIconcls());
- operationVOS.add(operationVO);
- }
- }
- uiInfoVO.setButtons(operationVOS);
- }
- return uiInfoVO;
- }
-
-
- /**
- * 浣跨敤涓婚搴撳垎绫昏幏鍙杣i鐩稿叧鐨勫唴瀹癸紙涓嶅寘鍚寜閽級
- *
- * @param codeClassifyOid 涓婚搴撶殑鍒嗙被鐨勪富閿�
- * @return UI鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getTableDefineByClassifyOid(String codeClassifyOid) {
- VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�");
- return getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
- }
-
- /**
- * 浣跨敤妯℃澘鏄剧ず瀵硅薄杞崲涓鸿〃鏍肩殑淇℃伅锛堝寘鍚墿灞曠殑鎸夐挳锛�
- *
- * @param templateVO 妯℃澘鐨勪俊鎭�
- * @return UI鐩稿叧鐨勫唴瀹癸紙浠呭寘鍚〃鏍间俊鎭級
- */
- private MdmUIInfoVO getTableDefineByTemplateVO(CodeClassifyTemplateVO templateVO) {
- //鍏堢湅杩欎釜鍒嗙被鏈韩鏄惁鏈夋ā鏉�
- MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
- uiInfoVO.setTemplateVO(templateVO);
- //鎴戜滑闇�瑕佸皢妯℃澘杞崲涓鸿〃鏍肩浉鍏崇殑鏄剧ず淇℃伅
- uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false));
- //闇�瑕佸幓鐪嬫墿灞曠殑鎸夐挳,鍙湁鍒楄〃閲岄潰鏈韩鎵嶆坊鍔犺繘鍘伙紝宸ュ叿鏍忎笂鐨勫崟鐙幏鍙�
- List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true);
- if (!CollectionUtils.isEmpty(buttonVOS)) {
- //鎴戜滑瑕佸垎寮�涓烘寜閽紝杩樻槸鍦ㄦ搷浣滃垪閲岄潰
- List<CodeClassifyTemplateButtonVO> tableButtonVOs = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TABLE.getValue().equalsIgnoreCase(s.getButtonuse())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(tableButtonVOs)) {
- UITableFieldVO optionFieldVO = new UITableFieldVO();
- optionFieldVO.setField("options");
- optionFieldVO.setTitle("鎿嶄綔");
- optionFieldVO.setFieldType("text");
- optionFieldVO.setOptionField(true);
- List<KeyValue> buttons = new ArrayList<>();
- Map<String, String> optionJsMap = new HashMap<>();
- tableButtonVOs.stream().forEach(buttonVO -> {
- KeyValue kv = new KeyValue();
- kv.setKey(buttonVO.getId());
- kv.setValue(buttonVO.getClassifybuttonoidName());
- kv.setAttributes(VciBaseUtil.objectToMap(buttonVO));
- buttons.add(kv);
- optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecutejs());
- });
- optionFieldVO.setOptionJsMap(optionJsMap);
- uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO);
- }
- }
- return uiInfoVO;
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 妯℃澘鐨勬樉绀哄璞�
- */
- @Override
- public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) {
- return getUsedTemplateByClassifyOid(codeClassifyOid, true);
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param hasAttr 鍖呭惈灞炴��
- * @return 妯℃澘鐨勬樉绀哄璞�
- */
- @Override
- public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) {
- List<CodeClassifyTemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr);
- return templateVOs.get(templateVOs.size() - 1);
- }
-
- /**
- * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
- *
- * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid) {
- return getFormDefineByTemplateOid(codeClassifyTemplateOid, null);
- }
-
- /**
- * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
- *
- * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
- * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫讳富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid, String codeClassifyOid) {
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeClassifyTemplateOid);
- MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
- uiInfoVO.setTemplateVO(templateVO);
- uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
- wrapperResemble(templateVO, uiInfoVO);
- return uiInfoVO;
- }
-
- /**
- * 灏佽鐩镐技椤规煡璇㈢殑鍒楄〃
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param uiInfoVO 椤甸潰鐨勪俊鎭�
- */
- private void wrapperResemble(CodeClassifyTemplateVO templateVO, MdmUIInfoVO uiInfoVO) {
- List<CodeClassifyTemplateAttrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())
- || VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) {
- UITableDefineVO resembleTable = new UITableDefineVO();
- resembleTable.setOid(templateVO.getOid());
- resembleTable.setBtmType(templateVO.getBtmTypeId());
- resembleTable.setDisplayQueryArea(false);
- resembleTable.setPageVO(new UITablePageVO());
- //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
- List<UITableFieldVO> fieldVOList = new ArrayList<>();
- resembleAttrList.forEach(attrVO -> {
- UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false);
- tableFieldVO.setHidden(false);
- fieldVOList.add(tableFieldVO);
- });
- List<List<UITableFieldVO>> cols = new ArrayList<>();
- cols.add(fieldVOList);
- resembleTable.setCols(cols);
- uiInfoVO.setResembleTableVO(resembleTable);
- }
- }
-
- /**
- * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
- *
- * @param templateOid 妯℃澘鐨勪富閿�
- * @param executionId 娴佺▼鎵цid
- * @param processUse 娴佺▼妯℃澘鐨勭敤閫�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- @Override
- public List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse) {
- VciBaseUtil.alertNotNull(templateOid, "妯℃澘涓婚敭", executionId, "娴佺▼鐨勬墽琛孖d", processUse, "娴佺▼妯℃澘鐢ㄩ��");
- while (StringUtils.countMatches(executionId, ".") > 1) {
- executionId = executionId.substring(0, executionId.lastIndexOf("."));
- }
- String sql = "select distinct (t.codetempattrOidArr)\n" +
- "from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE) + " t\n" +
- "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" +
- "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'";
- List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql);
- if (CollectionUtils.isEmpty(tempAttrOidArr) || StringUtils.isBlank(tempAttrOidArr.get(0).getAttributeValue("codetempattroidarr"))) {
- return new ArrayList<>();
- }
- return VciBaseUtil.str2List(tempAttrOidArr.get(0).getAttributeValue("codetempattroidarr"));
- }
-
- /**
- * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid) {
- MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
- CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
- uiInfoVO.setTemplateVO(templateVO);
- uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
- wrapperResemble(templateVO, uiInfoVO);
- return uiInfoVO;
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟
- *
- * @param codeClassifyOid 鍒嗙被涓婚敭
- * @param phase 闃舵鐨勫悕绉�
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
- */
- @Override
- public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String phase) {
- MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
- CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
- uiInfoVO.setTemplateVO(templateVO);
- UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true);
- List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase);
- uiTableDefineVO.getCols().stream().forEach(list -> {
- List<UITableFieldVO> visiableTableField=new ArrayList<>();
- if(StringUtils.isNotBlank(phase)) {
- visiableTableField = list.stream().filter(col ->
- phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
- (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
- || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
- )).collect(Collectors.toList());
- }else{
- visiableTableField= list.stream().filter(col ->
- templateVO.getAttributes().stream().anyMatch(s ->
- (!s.getReadonlyflag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
- (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId()))
- || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId()))
- )).collect(Collectors.toList());
- }
-
- visiableTableField.stream().forEach(vo -> {
- uiTableDefineVO.setHasEditor(true);
- if ("refer".equalsIgnoreCase(vo.getFieldType())) {
- setReferConfig2EditConfig(vo);
- } else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
- setComboxConfig2EditConfig(vo);
- } else if (StringUtils.isNotBlank(vo.getDateFormate())){
- vo.setEdit("date");
- }else {
- vo.setEdit(vo.getFieldType());
- }
- });
- });
- uiInfoVO.setTableDefineVO(uiTableDefineVO);
- wrapperResemble(templateVO, uiInfoVO);
- return uiInfoVO;
- }
-
- /**
- * 鍔犺浇鎴愬弬鐓х殑淇敼閰嶇疆
- * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄
- */
- private void setReferConfig2EditConfig(UITableFieldVO vo) {
- if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){
- vo.getReferConfig().getWhere().keySet().forEach(key -> {
- vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'");
- });
- }
- if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){
- String parentValue = vo.getReferConfig().getParentValue();
- parentValue ="\\" + parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}");
- vo.getReferConfig().setParentValue(parentValue);
- }
- String referConfig = vo.getReferConfig().toString()
- .replaceAll("=",":")
- .replaceAll("UITableCustomDefineVO","")
- .replaceAll("UIFieldSortVO","")
- .replaceAll("UITablePageVO","")
- .replaceAll("UITableFieldVO","")
- .replaceAll("UIFormReferVO","")
- .replaceAll("\\{vci-equals}","=")
- .replaceAll("\\{vci-quote}","\\\\'")
- .replaceAll("'null'","null");
- referConfig = referConfig + ",fieldMap:{" + vo.getQueryField() + ":'" + vo.getReferConfig().getValueField() + "'}";
- vo.setEditConfig("{referConfig:" + referConfig + "}");
- vo.setEdit(vo.getFieldType());
- }
-
- /**
- * 鍔犺浇鎴愪笅鎷夋鐨勪慨鏀归厤缃�
- * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄
- */
- private void setComboxConfig2EditConfig(UITableFieldVO vo) {
- vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'");
- if (!CollectionUtils.isEmpty(vo.getData())){
- vo.setEditConfig(vo.getEditConfig()+", comboxConfig:");
- for (int i = 0; i < vo.getData().size(); i++) {
- KeyValue data = vo.getData().get(i);
- if (i == vo.getData().size() -1){
- vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}");
- }else if (i == 0){
- vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
- }else{
- vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
- }
- }
- vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'");
- }
- vo.setEditConfig(vo.getEditConfig() + "}");
- vo.setEdit(vo.getFieldType());
- }
-
- /**
- * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹�
- *
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return ui鐩稿叧鐨勫唴瀹�
- */
- @Override
- public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid) {
- return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid));
- }
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
- */
- @Override
- public List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid) {
- CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
- return listButtonInToolbarByTemplateOid(templateVO.getOid());
- }
-
- /**
- * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
- *
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
- */
- @Override
- public List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid) {
- List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateOid, true);
- if (CollectionUtils.isEmpty(buttonVOS)) {
- return new ArrayList<>();
- }
- List<CodeClassifyTemplateButtonVO> toolbarButtons = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TOOLBAR.getValue().equalsIgnoreCase(s.getButtonuse())).collect(Collectors.toList());
- if (CollectionUtils.isEmpty(toolbarButtons)) {
- return new ArrayList<>();
- }
- List<CodeButtonVO> buttonVOList = new ArrayList<>();
- for (int i = 0; i < toolbarButtons.size(); i++) {
- buttonVOList.add(toolbarButtons.get(i).getButtonVO());
- }
- return buttonVOList;
- }
-
- /**
- * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param templateOid 妯℃澘鐨勪富閿�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鐨勫璞�
- * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級
- */
- @Override
- public DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper) {
- //1. 浣跨敤鍒嗙被鑾峰彇鎵�鏈夌殑涓嬬骇鍒嗙被锛岀劧鍚庢牴鎹垎绫绘煡璇㈠搴旂殑鏁版嵁
- //2. 鍏ㄩ儴浣跨敤褰撳墠鍒嗙被鐨勫綋鍓嶆ā鏉挎潵灞曠ず鍐呭
- //3. 濡傛灉妯℃澘涓婃湁鏋氫妇娉ㄥ叆锛岀粍鍚堣鍒欙紝鍜屽弬鐓х殑锛岄渶瑕佹墽琛岃浆鎹�
- //4. 鏌ヨ鐨勬椂鍊欙紝鐩存帴浣跨敤codeclsfpath鏉ユ煡璇�
- CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid);
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
- if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmtypeid())) {
- throw new VciBaseException("褰撳墠涓婚搴撳垎绫绘病鏈夐《灞傚垎绫伙紝鎴栬�呴《灞傚垎绫绘病鏈夎缃笟鍔$被鍨�");
- }
- String btmTypeId = topClassifyVO.getBtmtypeid();
- if (StringUtils.isBlank(btmTypeId)) {
- return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
- }
- if (conditionMap == null) {
- conditionMap = new HashMap<>();
- }
- //pageHelper.addDefaultDesc("createTime");
- pageHelper.addDefaultDesc("id");
- if (!classifyService.checkHasChild(codeClassifyOid)) {
- conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
- } else {
- conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
- + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
- "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
- }
- conditionMap.put("islastr", "1");
- conditionMap.put("islastv", "1");
- return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
-// List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList());
-// //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
-// List<String> finalSelectFieldList = selectFieldList;
-// List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
-// s -> StringUtils.isNotBlank(s.getReferbtmid())
-// &&
-// (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT)))
-// ).collect(Collectors.toList());
-// if(!CollectionUtils.isEmpty(referAttrVOs)){
-// for (int i = 0; i < referAttrVOs.size(); i++) {
-// selectFieldList.add(referAttrVOs.get(i).getId() + ".name");
-// }
-// }
-// //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
-// DataGrid<Map<String,String>> dataGrid = boService.queryGridByBo(btmTypeId, conditionMap, pageHelper, selectFieldList);
-// //鎴戜滑闇�瑕佷娇鐢ㄦā鏉挎潵杞崲
-// if(!CollectionUtils.isEmpty(dataGrid.getData())){
-// wrapperData(dataGrid.getData(),templateVO,finalSelectFieldList,false);
-// }
-// return dataGrid;
- }
-
- /**
- * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
- *
- * @param btmType 涓氬姟绫诲瀷
- * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴��
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉瀵硅薄
- * @return 鏁版嵁鍒楄〃
- */
- @Override
- public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
- CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
- List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
- DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
- List<Map<String, String>> dataList = new ArrayList<>();
- if (!CollectionUtils.isEmpty(maps)) {
- maps.stream().forEach(map -> {
- Map<String, String> data = new HashMap<>();
- map.forEach((key, value) -> {
- data.put(((String) key).toLowerCase(Locale.ROOT), (String) value);
- });
- dataList.add(data);
- });
- }
- dataGrid.setData(dataList);
- if (!CollectionUtils.isEmpty(dataList)) {
- wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
- dataGrid.setTotal(boService.queryCountBySql(sqlBO.getSqlCount(), new HashMap<>()));
- }
- return dataGrid;
- }
-
- /**
- * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅
- *
- * @param btmType 涓氬姟绫诲瀷
- * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞�
- * @return sql鐨勭浉鍏充俊鎭�
- */
- @Override
- public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
- //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞�
- //鍙傝�僔ciQueryWrapper鏉ュ鐞�
- //1. 鎵惧埌鎵�鏈夌殑瀛楁锛�
- Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
-
- //鎵�鏈夌殑鍙傜収鐨勫瓧娈�
- Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>();
- List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
- s -> StringUtils.isNotBlank(s.getReferbtmid()) || StringUtils.isNotBlank(s.getReferConfig())
- ).collect(Collectors.toList());
- Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(referAttrVOs)) {
- referAttrVOs.parallelStream().forEach(attrVO -> {
- UIFormReferVO referVO = null;
- if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
- referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class);
- } else {
- referVO = new UIFormReferVO();
- referVO.setReferType(attrVO.getReferbtmid());
- referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
- referVO.setTextField("name");
- }
-
- String referTable = VciBaseUtil.getTableName(referVO.getReferType());
- String referTableNick = attrVO.getId() + "0";
- String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId();
- joinTableList.put(attrVO.getId(), left);
- String referShowField = attrVO.getId() + "Name";
- List<String> textFields = VciBaseUtil.str2List(referVO.getTextField());
- String showFieldInSource = "";
- if (textFields.contains("name")) {
- showFieldInSource = "name";
- } else {
- showFieldInSource = textFields.get(0);
- }
- referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource);
- selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
- });
- }
- Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
- if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
- selectFieldList.add(attrId);
- }
- });
- if (!selectFieldList.contains(CODE_FIELD)) {
- selectFieldList.add(CODE_FIELD);
- }
- if (!selectFieldList.contains(CODE_CLASSIFY_OID_FIELD)) {
- selectFieldList.add(CODE_CLASSIFY_OID_FIELD);
- }
- if (!selectFieldList.contains(CODE_TEMPLATE_OID_FIELD)) {
- selectFieldList.add(CODE_TEMPLATE_OID_FIELD);
- }
- if (!selectFieldList.contains(CODE_FULL_PATH_FILED)) {
- selectFieldList.add(CODE_FULL_PATH_FILED);
- }
-
- //澶勭悊鏌ヨ鏉′欢
- //TODO 楠岃瘉sql娉ㄥ叆
- List<String> andSql = new ArrayList<>();
- List<String> orSql = new ArrayList<>();
- if (!CollectionUtils.isEmpty(conditionMap)) {
- Map<String, String> orConditionMap = new HashMap<>();
- Map<String, String> andCondtionMap = new HashMap<>();
- //鍏堝垎绂籵r鐨勬煡璇㈡潯浠讹紝鍙﹀褰撴煡璇㈡潯浠舵槸绌虹殑鏃跺�欎篃涓嶆煡璇�
- conditionMap.forEach((k, v) -> {
- if (StringUtils.isNotBlank(v)) {
- if (v.startsWith(QueryOptionConstant.OR)) {
- orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length()));
- } else {
- andCondtionMap.put(k, v);
- }
- }
- });
-
- andCondtionMap.forEach((k, v) -> {
- andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
- });
- orConditionMap.forEach((k, v) -> {
- orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
- });
- }
- //缁勫悎璧锋潵
- StringBuilder andSb = new StringBuilder();
- andSql.stream().forEach(s -> {
- andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE);
- });
-
- String andString = andSb.toString().trim();
- String endWithSql = QueryOptionConstant.AND;
- if (andString.endsWith(endWithSql)) {
- andString = andString.substring(0, andString.length() - endWithSql.length());
- }
-
- String orString = orSql.stream().collect(Collectors.joining(" or "));
- String whereSql = "";
- if (StringUtils.isNotBlank(orString)) {
- if (StringUtils.isBlank(andString)) {
- andString = " 1 = 1 ";
- }
- whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE;
- } else {
- whereSql = andString + SPACE;
- }
- if (attrVOMap.keySet().contains("secretgrade")) {
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- if (userSecret == null || userSecret == 0) {
- userSecret = secretService.getMinUserSecret();
- }
- whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
- }
- String tableName = VciBaseUtil.getTableName(btmType);
- String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
- + " from " + tableName + SPACE + "t" + SPACE
- + joinTableList.values().stream().collect(Collectors.joining(SPACE))
- + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- //鐪嬬湅鎺掑簭
- String orderSql = pageHelper.getOrderSql("t");
- sql += (orderSql == null ? "" : orderSql);
- String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= "
- + (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1);
- String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql;
- String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE))
- + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
- CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO();
- sqlBO.setTableName(tableName);
- sqlBO.setJoinTable(joinTableList);
- sqlBO.setNickName("t");
- sqlBO.setPageHelper(pageHelper);
- sqlBO.setSqlHasPage(sqlHasPage);
- sqlBO.setSqlCount(sqlCount);
- sqlBO.setSqlUnPage(sql);
- return sqlBO;
- }
-
-
- /**
- * 绌烘牸
- */
- public static final String SPACE = " ";
-
- /**
- * 缁勫悎鏌ヨ鏉′欢鐨剆ql
- *
- * @param key 瀛楁
- * @param value 鍚嶅瓧
- * @param referFieldMap 鍙傜収鐨勫瓧娈�
- * @param attrVOMap 灞炴�х殑鏄犲皠
- * @return Sql璇彞
- */
- private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
- if (key.endsWith("_begin")) {
- //璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
- String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
- if (referFieldMap.containsKey(field)) {
- //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
- return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE;
- } else {
- return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap);
- }
- } else if (key.endsWith("_end")) {
- //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
- String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
- if (referFieldMap.containsKey(field)) {
- //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
- return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE;
- } else {
- return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap);
- }
- } else {
- if (referFieldMap.containsKey(key)) {
- //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝
- String selectKey = referFieldMap.get(key);
- return getSqlByValue(selectKey, value, null);
- } else {
- return getSqlByValue(key, value, attrVOMap);
- }
- }
-
- }
-
- /**
- * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒�
- *
- * @param selectKey 鏌ヨ鐨勫瓧娈�
- * @param value 鍊�
- * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠
- * @return sql閲岀殑鍊�
- */
- private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
- StringBuilder sql = new StringBuilder();
- if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
- sql.append("t.");
- }
- if (value.startsWith(QueryOptionConstant.IN)) {
- sql.append(selectKey)
- .append(SPACE)
- .append("in")
- .append(SPACE)
- .append("(")
- .append(value.replace(QueryOptionConstant.IN, ""))
- .append(")");
- } else if (value.startsWith(QueryOptionConstant.NOTIN)) {
- sql.append(selectKey)
- .append(SPACE)
- .append("not in")
- .append(SPACE)
- .append("(")
- .append(value.replace(QueryOptionConstant.NOTIN, ""))
- .append(")");
- } else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) {
- value = value.replace(QueryOptionConstant.NOTEQUAL, "");
- value = getStringValueInWhere(selectKey, value, attrVOMap);
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.NOTEQUAL)
- .append(SPACE)
- .append(value);
- } else if (value.startsWith(QueryOptionConstant.MORETHAN)) {
- value = value.replace(QueryOptionConstant.MORETHAN, "");
- value = getStringValueInWhere(selectKey, value, attrVOMap);
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.MORETHAN)
- .append(SPACE)
- .append(value);
- } else if (value.startsWith(QueryOptionConstant.MORE)) {
- value = value.replace(QueryOptionConstant.MORE, "");
- value = getStringValueInWhere(selectKey, value, attrVOMap);
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.MORE)
- .append(SPACE)
- .append(value);
- } else if (value.startsWith(QueryOptionConstant.LESSTHAN)) {
- value = value.replace(QueryOptionConstant.LESSTHAN, "");
- value = getStringValueInWhere(selectKey, value, attrVOMap);
-
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.LESSTHAN)
- .append(SPACE)
- .append(value);
- } else if (value.startsWith(QueryOptionConstant.LESS)) {
- value = value.replace(QueryOptionConstant.LESS, "");
- value = getStringValueInWhere(selectKey, value, attrVOMap);
-
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.LESS)
- .append(SPACE)
- .append(value);
- } else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) {
- sql.append(selectKey)
- .append(SPACE)
- .append(" is not null");
- } else if (value.startsWith(QueryOptionConstant.ISNULL)) {
- sql.append(selectKey)
- .append(SPACE)
- .append(" is null");
- } else if (value.contains("*")) {
- //璇存槑鏄痩ike锛屾垨鑰卨efe like ,right like
- value = getStringValueInWhere(selectKey, value, attrVOMap);
- sql.append(selectKey)
- .append(SPACE)
- .append("like")
- .append(SPACE)
- // .append("'")
- .append(value.replace("*", "%"))
- // .append("'")
- .append(SPACE);
- } else {
- value= value.replace(SPECIAL_CHAR,REQUIRED_CHAR);
- value = getStringValueInWhere(selectKey, value, attrVOMap);
-
- sql.append(selectKey)
- .append(SPACE)
- .append(QueryOptionConstant.EQUAL)
- .append(SPACE)
- .append(value);
- }
- sql.append(SPACE);
- return sql.toString();
- }
-
- /**
- * 榛樿鐨勬椂闂存牸寮�
- */
- private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss";
-
- /**
- * 鏃ユ湡鏍煎紡
- */
- private static final String DATE_FORMAT = "yyyy-mm-dd";
- /**
- * 鍙槸sql
- */
- public static final String ONLY = "${vcionly}";
-
- /**
- * 鑾峰彇鏌ヨ鏉′欢涓殑鍊肩殑锛屽鐞嗕笉鍚岀殑绫诲瀷
- *
- * @param value 鍊�
- * @param field 瀛楁鍚嶇О
- * @return 鏃ユ湡鎴栬�呮椂闂存牸寮忎細鍖呮嫭to_date锛屽瓧绗︿覆浼氬姞'
- */
- private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
- if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null
- || !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) {
- //璇存槑鍙兘鏄寚瀹氱殑鏌愪釜鏉′欢锛岀洿鎺ヨ繑鍥�
- if (value.startsWith(ONLY)) {
- value = value.replace(ONLY, "");
- }
- if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
- return value;
- }
- if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) {
- //鏄弬鐓�
- return "'" + value + "'";
- } else {
- return value;
- }
- } else {
- //鐪嬬湅鏄笉鏄繖涓璞¢噷鐨勫睘鎬�
- if (attrVOMap.containsKey(field)) {
- VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributedatatype());
- if ("ts".equalsIgnoreCase(field)) {
- return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')";
- }
- DateConverter dateConverter = new DateConverter();
- if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) {
- //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�.
- dateConverter.setAsText(value);
- return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')";
- } else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) {
- dateConverter.setAsText(value);
- return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')";
- } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum)
- || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum)
- || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) {
- return value;
- } else {
- return "'" + value + "'";
- }
- } else {
- if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
- return value;
- }
- return "'" + value + "'";
- }
- }
-
- }
-
- /**
- * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭
- * @param dataMap 鏁版嵁鐨勫唴瀹�
- * @param templateVO 妯℃澘鐨勬樉绀�
- */
- @Override
- public void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO){
- List<String> booleanAttributes = templateVO.getAttributes().stream().filter(s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributedatatype())).map(s -> s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(booleanAttributes)){
- dataMap.stream().forEach(data -> {
- booleanAttributes.stream().forEach(attrId->{
- if(data.containsKey(attrId)){
- String value = data.get(attrId);
- data.put(attrId, BooleanEnum.TRUE.getValue().equalsIgnoreCase(value)?"鏄�":"鍚�");
- }
- });
- });
- }
- }
-
- /**
- * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
- *
- * @param dataMap 鏁版嵁鐨勬槧灏�
- * @param templateVO 妯℃澘鐨勫睘鎬�
- * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
- * @param form 琛ㄥ崟閲屼娇鐢�
- */
- @Override
- public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
- Collection<String> onlySelectAttrIdList, boolean form) {
- if (onlySelectAttrIdList == null) {
- onlySelectAttrIdList = new ArrayList<>();
- }
- //鍏堣浆鎹竴涓嬫椂闂存牸寮�
- List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList());
- List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
- s -> StringUtils.isNotBlank(s.getCodedateformat()) &&
- (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
- ).collect(Collectors.toList());
- //鏋氫妇鐨勫唴瀹�
- List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter(
- s -> (StringUtils.isNotBlank(s.getEnumid()) || StringUtils.isNotBlank(s.getEnumString()))
- &&
- (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
- ).collect(Collectors.toList());
-
- List<String> userIds = new ArrayList<>();
- dataMap.stream().forEach(data -> {
- //澶勭悊鏃堕棿
- if (!form) {
- //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮�
- wrapperDateFormat(dateFormatAttrVOs, data);
- }
- //澶勭悊鏋氫妇
- wrapperEnum(enumAttrVOs, data);
- String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
- String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,"");
- if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
- && StringUtils.isBlank(copyFromVersion)
- ) {
- data.put(VciQueryWrapperForDO.ID_FIELD, "******");
- }
- data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus));
- if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
- && StringUtils.isNotBlank(copyFromVersion)){
- data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�");
- }
- if (data.containsKey("creator")) {
- userIds.add(data.get("creator"));
- }
- if (data.containsKey("lastmodifier")) {
- userIds.add(data.get("lastmodifier"));
- }
- });
- if (!CollectionUtils.isEmpty(userIds)) {
- Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- dataMap.stream().forEach(data -> {
- String creator = data.getOrDefault("creator", null);
- if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
- data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
- }
- String lastmodifier = data.getOrDefault("lastmodifier", null);
- if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
- data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
- }
- });
- }
- }
-
- /**
- * 澶勭悊鏃堕棿鏍煎紡
- *
- * @param dateFormatAttrVOs 鏃堕棿鏍煎紡鐨勫睘鎬�
- * @param data 褰撳墠琛屾暟鎹�
- */
- private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) {
- if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) {
- dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> {
- String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT);
- String oldValue = data.getOrDefault(attrId, null);
- if (StringUtils.isNotBlank(oldValue)) {
- DateConverter dateConverter = new DateConverter();
- try {
- dateConverter.setAsText(oldValue);
- Date value = dateConverter.getValue();
- if (value != null) {
- data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodedateformat()));
- }
- } catch (Throwable e) {
- //杞崲鍙兘鏈夐棶棰橈紝杩欏氨浣跨敤鍘熸湰瀛樺偍鐨勫��
- }
- }
- });
- }
- }
-
- /**
- * 澶勭悊鏋氫妇鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊�
- *
- * @param enumAttrVOs 鏋氫妇灞炴��
- * @param data 褰撳墠琛屾暟鎹�
- */
- private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) {
- //澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫��
- if (!CollectionUtils.isEmpty(enumAttrVOs)) {
- enumAttrVOs.stream().forEach(enumAttrVO -> {
- String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
- String oldValue = data.getOrDefault(attrId, null);
- if (StringUtils.isNotBlank(oldValue)) {
- List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
- String newValue = oldValue;
- KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null);
- if (keyValue != null) {
- newValue = keyValue.getValue();
- }
- data.put(attrId + "Text", newValue);
- }
- });
- }
- }
-
- /**
- * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
- *
- * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
- * @return 涓嬫媺閫夐」
- */
- @Override
- public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
- List<KeyValue> comboboxKVs;
- if (StringUtils.isNotBlank(attrVO.getEnumString())) {
- comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
- } else {
- comboboxKVs = enumService.getEnum(attrVO.getEnumid());
- }
- return comboboxKVs;
- }
-
- /**
- * 澶勭悊缁勫悎瑙勫垯鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊�
- *
- * @param compAttrVOs 缁勫悎瑙勫垯灞炴��
- * @param data 褰撳墠琛屾暟鎹�
- */
- private void wrapperComponentRule(Collection<CodeClassifyTemplateAttrVO> compAttrVOs, Map<String, String> data) {
- if (!CollectionUtils.isEmpty(compAttrVOs)) {
- compAttrVOs.stream().forEach(attrVO -> {
- String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
- //鐢ㄥ叕寮忓幓璁$畻
- //鍏堢敤褰撳墠鏁版嵁鏇挎崲涓�涓�
- String calculatedValue = formulaService.getValueByFormula(data, attrVO.getComponentrule());
- data.put(attrId, calculatedValue);
- });
- }
- }
-
-
- /**
- * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭�
- *
- * @param oid 涓婚敭
- * @param templateOid 妯℃澘鐨勪富閿�
- * @return 鏁版嵁鐨勫唴瀹�
- */
- @Override
- public BaseResult<Map<String, String>> getDataByOid(String oid, String templateOid) {
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
- //涓轰簡闃叉妯℃澘涓婄殑涓氬姟绫诲瀷涓庡垎绫讳笂涓嶅搴�
- CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid());
- String btmId = topClassifyVO.getBtmtypeid();
- //鏌ヨ鏁版嵁
- Map<String, String> conditionMap = WebUtil.getOidQuery(oid);
- CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
- //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
- List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage());
- if (CollectionUtils.isEmpty(cbos)) {
- throw new VciBaseException("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵");
- }
- Map<String, String> data = new HashMap<>();
- ClientBusinessObject cbo = cbos.get(0);
- WebUtil.copyValueToMapFromCbos(cbo, data);
- List<Map<String, String>> dataList = new ArrayList<>();
- dataList.add(data);
- wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
- BaseResult<Map<String, String>> result = BaseResult.success(data);
- //鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬�
- String copy = cbo.getCopyFromVersion();
- if (StringUtils.isBlank(copy)) {
- copy = cbo.getAttributeValue("copyfromversion");
- }
- if (StringUtils.isNotBlank(copy)) {
- //璇存槑鏈夊彉鏇寸殑鍐呭
-
- CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1));
- //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
- List<ClientBusinessObject> oldCbos = boService.queryByOnlySql(oldSqlBO.getSqlUnPage());
- if (!CollectionUtils.isEmpty(oldCbos)) {
- Map<String, String> newData = new HashMap<>();
- WebUtil.copyValueToMapFromCbos(cbo, newData);
- Map<String, String> oldData = new HashMap<>();
- WebUtil.copyValueToMapFromCbos(oldCbos.get(0), oldData);
- Map<String, String> difFieldMap = new HashMap<>();
- newData.forEach((key, value) -> {
- String oldValue = oldData.getOrDefault(key, "");
- if (value == null) {
- value = "";
- }
- if (oldValue == null) {
- oldValue = "";
- }
- if (!value.equalsIgnoreCase(oldValue)) {
- difFieldMap.put(key, oldValue);
- }
- });
- List<Map<String, String>> difFieldList = new ArrayList<>();
- difFieldList.add(difFieldMap);
- result.setData(difFieldList);
- }
- }
- return result;
- }
-
- /**
- * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 缂栫爜瑙勫垯鐨勫唴瀹�
- */
- @Override
- public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) {
- VciBaseUtil.alertNotNull(codeClassifyOid, "鍒嗙被鐨勪富閿�");
- CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid);
- String codeRuleOid = classifyVO.getCoderuleoid();
- if (StringUtils.isBlank(codeRuleOid)) {
- //寰�涓婃壘
- CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
- return getCodeRuleByClassifyFullInfo(fullInfo);
- }
- //鎴戜滑鏌ヨ缂栫爜瑙勫垯
- return ruleService.getObjectHasSecByOid(codeRuleOid);
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
- *
- * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @return 瑙勫垯鐨勫唴瀹�
- */
- @Override
- public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) {
- //寰�涓婃壘
- String codeRuleOid = "";
- if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCoderuleoid())) {
- codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCoderuleoid();
- } else {
- if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) {
- //璇存槑宸茬粡鏄渶楂樺眰绾�,
- throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
- }
- List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList());
- //浠庢渶楂樼殑level寮�濮嬭幏鍙�
- for (int i = 0; i < parentClassifyVOList.size(); i++) {
- CodeClassifyVO record = parentClassifyVOList.get(i);
- if (StringUtils.isNotBlank(record.getCoderuleoid())) {
- codeRuleOid = record.getCoderuleoid();
- break;
- }
- }
- if (StringUtils.isBlank(codeRuleOid)) {
- throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
- }
- }
- return ruleService.getObjectHasSecByOid(codeRuleOid);
- }
-
- /**
- * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
- *
- * @param classifySecOid 鐮佹鐨勪富閿�
- * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
- * @return 鍒嗙被鐮佸�肩殑鍐呭
- */
- @Override
- public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) {
- return classifyValueService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid);
- }
-
- /**
- * 鐢宠鍗曚竴缂栫爜
- *
- * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
- * @return 杩斿洖缂栫爜鐨勫唴瀹�
- */
- @Override
- public String addSaveCode(CodeOrderDTO orderDTO) {
- VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
- orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
- //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
- checkSecValueOnOrder(ruleVO, orderDTO);
- //2.鍒ゆ柇蹇呰緭椤�
- checkRequiredAttrOnOrder(templateVO, orderDTO);
- //3.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- //4.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //5.鏍¢獙瑙勫垯
- checkVerifyOnOrder(templateVO, orderDTO);
- //6.鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
- //7.鏋氫妇杞崲
- checkEnumOnOrder(templateVO, orderDTO);
- //8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
- switchDateAttrOnOrder(templateVO, orderDTO);
- //9.鐢熸垚缂栫爜鐨勪俊鎭�
- ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
- //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
- copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
- //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
- cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
- //end -- modify by lihang @20220407
- List<ClientBusinessObject> cboList = new ArrayList<>();
-
- //澶囨敞
- cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
-
- cboList.add(cbo);
- List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
- batchSaveSelectChar(templateVO, cboList);
- return codeList.size() > 0 ? codeList.get(0) : "";
- }
-
- /**
- * 淇敼涓婚搴撴暟鎹�
- *
- * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
- */
- @Override
- public void editSaveCode(CodeOrderDTO orderDTO) {
- VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
- orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
- List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
- if (CollectionUtils.isEmpty(cbos)) {
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- ClientBusinessObject cbo = cbos.get(0);
- if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
- throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
- }
- if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
- throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
- }
-
- //娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲
-
- //1. 鍒ゆ柇蹇呰緭椤�
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- checkRequiredAttrOnOrder(templateVO, orderDTO);
- //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //4.鏍¢獙瑙勫垯
- checkVerifyOnOrder(templateVO, orderDTO);
- //5.鍒ゆ柇鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
- //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
- checkEnumOnOrder(templateVO, orderDTO);
- //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
- switchDateAttrOnOrder(templateVO, orderDTO);
- //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
- copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
- //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
- cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
- cbo.setName(orderDTO.getName()==null?"":orderDTO.getName());
- try {
- cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
- } catch (VCIError e) {
- e.printStackTrace();
- }
- //淇敼鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
- BatchCBO batchCBO = new BatchCBO();
- batchCBO.getUpdateCbos().add(cbo);
- List<ClientBusinessObject> cboList = new ArrayList<>();
- cboList.add(cbo);
- boService.persistenceBatch(batchCBO);
- batchSaveSelectChar(templateVO, cboList);
- }
-
- /**
- * 鍗囩増鐨勪富棰樺簱鏁版嵁
- *
- * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭
- */
- @Override
- public void upSaveCode(CodeOrderDTO orderDTO) {
- VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�",
- orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
- List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion()));
- if (CollectionUtils.isEmpty(cbos)) {
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- ClientBusinessObject oldCbo = cbos.get(0);
- if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) {
- throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()});
- }
- //闇�瑕佸崌鐗�
- ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation();
- ClientBusinessObject cbo = null;
- try {
- //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId());
- cbo = cboOperation.reviseBusinessObject(oldCbo, "");
- } catch (VCIError e) {
- throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e);
- }
- //1. 鍒ゆ柇蹇呰緭椤�
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- checkRequiredAttrOnOrder(templateVO, orderDTO);
- //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //4.鏍¢獙瑙勫垯
- checkVerifyOnOrder(templateVO, orderDTO);
- //5.鍒ゆ柇鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
- //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
- checkEnumOnOrder(templateVO, orderDTO);
- //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
- switchDateAttrOnOrder(templateVO, orderDTO);
- //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
- copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
- //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
-// cbo.setDescription(orderDTO.getDescription());
-// cbo.setName(orderDTO.getName());
- cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
- cbo.setName(orderDTO.getName()==null?"":orderDTO.getName());
- try {
- cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
- } catch (VCIError e) {
- e.printStackTrace();
- }
- //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
- cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss"));
- cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss"));
- List<ClientBusinessObject> cboList = new ArrayList<>();
- cboList.add(cbo);
- try {
- cboOperation.saveRevisionBuinessObject(cbo);
- } catch (VCIError vciError) {
- throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
- }
- batchSaveSelectChar(templateVO, cboList);
- }
-
- /**
- * 淇濆瓨鍙緭鍙�夌殑淇℃伅
- *
- * @param templateVO 妯℃澘鐨勫璞�
- * @param cboList 鏁版嵁鐨勫唴瀹�
- */
- @Override
- public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList) {
- if (templateVO != null && !CollectionUtils.isEmpty(cboList)) {
- //鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜�
- List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(selectAttrVOs)) {
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- selectAttrVOs.parallelStream().forEach(attrVO -> {
- List<String> valuesList = new CopyOnWriteArrayList<>();
- cboList.parallelStream().forEach(cbo -> {
- String value = cbo.getAttributeValue(attrVO.getId());
- if (StringUtils.isNotBlank(value)) {
- valuesList.add(value);
- }
- });
- if (!CollectionUtils.isEmpty(valuesList)) {
- charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo);
- }
- });
- }
- }
- }
-
- /**
- * 鍒犻櫎涓婚搴撴暟鎹�
- *
- * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿�
- */
- @Override
- public void deleteCode(CodeDeleteBatchDTO deleteBatchDTO) {
- VciBaseUtil.alertNotNull(deleteBatchDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", deleteBatchDTO.getOidList(), "鏁版嵁涓婚敭",
- deleteBatchDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid());
- //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
- Collection<Collection<String>> oidCollection = VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList());
- List<ClientBusinessObject> cboList = new ArrayList<>();
- oidCollection.stream().forEach(oids -> {
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
- List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap);
- cboList.addAll(cbos);
- });
- if (CollectionUtils.isEmpty(cboList)) {
- throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
- }
- List<ClientBusinessObject> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(editCBOs)) {
- ClientBusinessObject cbo = editCBOs.get(0);
- throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()});
- }
-
- //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
- String userId = WebUtil.getCurrentUserId();
- for (ClientBusinessObject clientBusinessObject:cboList){
- String creator = clientBusinessObject.getCreator();
- if(!userId.equalsIgnoreCase(creator)){
- throw new VciBaseException("缂栫爜涓�"+clientBusinessObject.getId()+"鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�");
- }
-
- }
- BatchCBO batchCBO = new BatchCBO();
- batchCBO.getDeleteCbos().addAll(cboList);
- WebUtil.setPersistence(false);
- batchCBO.copyFromOther(productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList()));
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO);
- }
-
- /**
- * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
- *
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param cbo 涓氬姟鏁版嵁
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param edit 鏄惁涓轰慨鏀�
- */
- private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, ClientBusinessObject cbo,
- CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
- boolean edit) {
- String fullPath = "";
- if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
- fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
- .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
- } else {
- fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
- }
- orderDTO.getData().forEach((key, value) -> {
- if (!edit || (!boService.checkUnAttrUnEdit(key) &&
- !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
- try {
- cbo.setAttributeValue(key, value);
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
- }
- }
- });
- try {
- cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD, templateVO.getOid());
- cbo.setAttributeValue(CODE_FULL_PATH_FILED, fullPath);
- if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
- //鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝
- if (StringUtils.isNotBlank(cbo.getLctId())) {
- OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctId());
- if (lifeCycleVO != null) {
- cbo.setLcStatus(lifeCycleVO.getStartStatus());
- } else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }
- } else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }
-
- }
- int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
- if (secret == 0 || !secretService.checkDataSecret(secret)) {
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
- }
- } catch (Throwable e) {
- logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
- }
- }
-
-
- /**
- * 杞崲缁勫悎瑙勫垯鐨勫��
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(compAttrVOMap)) {
- Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
-
- Map<String, String> dataLowMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(dataMap)) {
- dataMap.forEach((key, value) -> {
- dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
- });
- }
- dataLowMap.putAll(orderDTO.getData());
- compAttrVOMap.forEach((attrId, attrVO) -> {
- dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentrule()));
- });
- dataLowMap.forEach((key, value) -> {
- setValueToOrderDTO(orderDTO, key, value);
- });
- }
- }
-
- /**
- * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
- * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
- s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (classifyFullInfoBO.getTopClassifyVO() == null) {
- //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
-
- }
- if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
- classifyAttrVOMap.forEach((attrId, attrVO) -> {
- //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
- //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
- CodeClassifyVO classifyVO = null;
- if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
- //鎸囧畾浜嗗眰绾х殑
- //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
- List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
- int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
- if (classifyVOS.size() >= level && level > 0) {
- classifyVO = classifyVOS.get(level - 1);
- }
- } else {
- //褰撳墠鐨勫垎绫�
- classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
- }
- if (classifyVO == null) {
- //璇存槑灞傜骇鏈夎
- orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
- // classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
- } else {
- Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
- String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
- orderDTO.getData().put(attrId, value);
- }
- });
- }
- }
-
- /**
- * 杞崲鏃堕棿鐨勬牸寮�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodedateformat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value)) {
- DateConverter dateConverter = new DateConverter();
- dateConverter.setAsText(value);
- value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
- setValueToOrderDTO(orderDTO, attrId, value);
- }
- });
- }
- }
-
- /**
- * 鏍¢獙鏋氫妇鐨勫唴瀹�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
- Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
- enumAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value)) {
- //鏈夊�兼墠鑳芥牎楠�
- List<KeyValue> comboboxKVs = listComboboxItems(attrVO);
- if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
- throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
- }
- }
- });
- }
- }
-
- /**
- * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
- *
- * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
- * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
- */
- private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
- verifyAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())) {
- //鏍¢獙姝e垯琛ㄨ揪寮�
- throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
- }
- });
- }
- }
-
- /**
- * 鏍¢獙鍏抽敭灞炴��
- *
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
- * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
- */
- private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
- CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
- //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
- //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
- Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- Map<String, String> conditionMap = new HashMap<>();
- boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
- //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
- boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
- boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
- boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
- ketAttrMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (value == null) {
- value = "";
- }
- wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
- });
-
- //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
-
- if (!CollectionUtils.isEmpty(conditionMap)) {
- final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
- conditionMap.forEach((key, value) -> {
- sql[0] += " and " + key + " = " + value;
- });
- if (StringUtils.isNotBlank(orderDTO.getOid())) {
- //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
- sql[0] += " and oid != '" + orderDTO.getOid() + "'";
- } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
- sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
- }
- sql[0] += " and islastR = '1' and islastV = '1' ";
- if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
- String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
- String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
- throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
- }
- }
- }
-
- /**
- * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
- *
- * @param value 褰撳墠鐨勫��
- * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
- * @param attrId 灞炴�х殑缂栧彿
- * @param trim 鏄惁鍘婚櫎绌烘牸
- * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓
- * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙�
- * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸
- * @param conditionMap 鏌ヨ鏉′欢
- */
- @Override
- public void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatRuleVO keyRuleVO, String attrId,
- boolean trim, boolean ignoreCase, boolean ignoreWidth,
- boolean trimAll, Map<String, String> conditionMap) {
- boolean ignoreSpace = trim || trimAll;
- if (StringUtils.isBlank(value)) {
- //涓虹┖鐨勬椂鍊欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜�
- conditionMap.put("t."+attrId, "null");
- } else {
- if (keyRuleVO != null) {
- String queryKey = "";
- String queryValue = "";
-
- String temp = "";
- if (ignoreCase && ignoreSpace && ignoreWidth) {
- //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte(%s)) " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && ignoreSpace && !ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && !ignoreSpace && ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
- temp = "UPPER(to_single_byte(%s))";
- } else if (!ignoreCase && ignoreSpace && ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅
- temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte(%s) " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && !ignoreSpace && !ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
- temp = "UPPER(%s)";
- } else if (!ignoreCase && !ignoreCase && ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
- temp = "to_single_byte(%s)";
- } else if (!ignoreCase && ignoreSpace && !ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")");
- } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
- temp = "%s";
- }
- queryKey = String.format(temp, "t."+attrId);
- queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
- conditionMap.put(queryKey, queryValue);
- } else {
- //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
- conditionMap.put("t."+attrId, value);
- }
- }
- }
-
-
- /**
- * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
- *
- * @param orderDTO 缂栫爜鐢宠瀵硅薄
- * @param attrId 灞炴�х殑缂栧彿
- * @return 鍊�
- */
- private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
- attrId = attrId.toLowerCase(Locale.ROOT);
- String value = null;
- if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)
- || VciQueryWrapperForDO.SECRET_MANAGE_FIELD_MAP.containsKey(attrId)
- || VciQueryWrapperForDO.REVISION_MANAGE_FIELD_MAP.containsKey(attrId)
- || VciQueryWrapperForDO.LIFECYCLE_MANAGE_FIELD_MAP.containsKey(attrId)
- || VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.containsValue(attrId)
- ) {
- value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
- } else {
- //璇存槑鏄嚜琛岄厤缃殑
- //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
- value = orderDTO.getData().getOrDefault(attrId, "");
- }
- return value;
- }
-
- /**
- * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
- *
- * @param orderDTO 缂栫爜鐢宠瀵硅薄
- * @param attrId 灞炴�х殑缂栧彿
- * @param value 鍊�
- */
- private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
- attrId = attrId.toLowerCase(Locale.ROOT);
- if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
- WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
- } else {
- orderDTO.getData().put(attrId, value);
- }
- }
-
-
- /**
- * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
- s -> VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr()))
- .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(requiredAttrMap)) {
- requiredAttrMap.forEach((attrId, attrVO) -> {
- //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
- if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
- throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
- }
- });
- }
- }
-
-
- /**
- * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
- *
- * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
- * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
- */
- @Override
- public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) {
- List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter(
- s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSectype())
- || CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSectype())
- || CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSectype())
- || CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSectype())
- || VciBaseUtil.getBoolean(s.getNullableFlag()))
- ).map(CodeBasicSecVO::getOid).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(unSerialSecOidList)) {
- if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) {
- throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
- }
- if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid())
- && StringUtils.isBlank(s.getSecValue()))) {
- throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
- }
- }
- }
-
- /**
- * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴��
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param phase 闃舵鐨勫悕绉�
- * @return 灞炴�х殑鑻辨枃鍚嶇О
- */
- @Override
- public List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase) {
- CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid, false);
- //鎵鹃樁娈�
- return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase);
- }
-
- /**
- * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return 鍒嗙被鏍�
- */
- @Override
- public List<Tree> hasSelfClassifyTree(String codeClassifyOid) {
- if (StringUtils.isBlank(codeClassifyOid)) {
- return new ArrayList<>();
- }
- CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
- //鏌ヨ瀛�
- List<CodeClassifyVO> childrenClassifys = classifyService.listChildrenClassify(codeClassifyOid, true, "id", true);
- Map<String, CodeClassifyVO> classifyVOMap = new HashMap<>();
- classifyVOMap.putAll(Optional.ofNullable(fullInfo.getParentClassifyVOs()).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)));
- classifyVOMap.putAll(Optional.ofNullable(childrenClassifys).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)));
- TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(CodeClassifyServiceImpl.PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
- return revisionModelUtil.doList2Trees(classifyVOMap.values().stream().collect(Collectors.toList()), treeWrapperOptions, (CodeClassifyVO s) -> {
- return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
- .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
- });
- }
-
- /**
- * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param codeTemplateOid 妯℃澘鐨勪富閿�
- * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫��
- */
- @Override
- public Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid) {
- if (StringUtils.isBlank(codeClassifyOid) || StringUtils.isBlank(codeTemplateOid)) {
- return new HashMap<>();
- }
- //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭�
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeTemplateOid);
- //
-
- CodeOrderDTO orderDTO = new CodeOrderDTO();
- orderDTO.setData(new HashMap<>());
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- return orderDTO.getData();
- }
-
- /**
- * 棰勮缁勫悎瑙勫垯
- *
- * @param orderDTO 棰勮鐨勪俊鎭紝鍖呭惈妯℃澘鐨勪富閿�
- * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖
- */
- @Override
- public Map<String, String> previewCompRule(CodeOrderDTO orderDTO) {
- VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧淇℃伅", orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�");
- //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭�
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- switchComponentAttrOnOrder(templateVO, orderDTO);
- return orderDTO.getData();
- }
-
- /**
- * 淇敼鐘舵��
- *
- * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
- */
- @Override
- public void changeStatus(BaseModelDTO baseModelDTO) {
- VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
- List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
- List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
- //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈�
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
- conditionMap.put("createcodebtm", baseModelDTO.getBtmname());
- List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap);
- // 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
- if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
- BatchCBO batchCBO = new BatchCBO();
- batchCBO.getDeleteCbos().addAll(cboList);
- boService.persistenceBatch(batchCBO);
- } else {
- lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
- }
- lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
- }
-
- /**
- * 鐩镐技椤规煡璇�
- *
- * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
- * @return 鏁版嵁鍒楄〃
- */
- @Override
- public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) {
- VciBaseUtil.alertNotNull(orderDTO, "鐢宠鐨勪俊鎭�", orderDTO.getCodeClassifyOid(), "鍒嗙被涓婚敭", orderDTO.getTemplateOid(), "妯℃澘涓婚敭");
- CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO);
- switchDateAttrOnOrder(templateVO, orderDTO);
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
- Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
- if (CollectionUtils.isEmpty(attrVOs)) {
- //閮芥病鏈夊睘鎬э紝鑲畾涓嶈兘鏌ヨ浜�
- return new DataGrid<>();
- }
- Map<String, String> conditionMap = new HashMap<>();
- //鎴戜滑棣栧厛鑾峰彇鏈夋病鏈夋煡璇㈣鍒�
- CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
- attrVOs.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (value == null) {
- value = "";
- }
- wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
- });
-
- //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
- if (!CollectionUtils.isEmpty(conditionMap)) {
- Map<String, String> andConditionMap = new HashMap<>();
- andConditionMap.put("islastr", "1");
- andConditionMap.put("islastv", "1");
- if (StringUtils.isNotBlank(orderDTO.getOid())) {
- andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
- }
- conditionMap.putAll(andConditionMap);
- PageHelper pageHelper = new PageHelper(-1);
- pageHelper.addDefaultDesc("id");
- return queryGrid(fullInfoBO.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, pageHelper);
- }
- return new DataGrid<>();
- }
-
- /**
- * 灏佽鐩镐技椤规煡璇㈢殑鏌ヨ鏉′欢鐨勬槧灏�
- *
- * @param value 鍊�
- * @param resembleRuleVO 鐩镐技椤硅鍒�
- * @param attrId 灞炴�х殑缂栧彿
- * @param conditionMap 鏌ヨ鏉′欢
- */
- @Override
- public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) {
- boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
- if (StringUtils.isBlank(value)) {
- //涓虹┖鐨勬椂鍊欏氨涓嶆煡璇㈠畠灏辨槸
- } else {
- String queryKey = "";
- String queryValue = "";
- boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag());
- boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag());
- boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
- boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
- String temp = "";
- if (ignoreCase && ignoreSpace && ignoreWidth) {
- //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && ignoreSpace && !ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && !ignoreSpace && ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
- temp = "UPPER(to_single_byte('%s'))";
- } else if (!ignoreCase && ignoreSpace && ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅
- temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")");
- } else if (ignoreCase && !ignoreSpace && !ignoreWidth) {
- //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
- temp = "UPPER(%s)";
- } else if (!ignoreCase && !ignoreCase && ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
- temp = "to_single_byte('%s')";
- } else if (!ignoreCase && ignoreSpace && !ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
- temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")");
- } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) {
- //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
- temp = "%s";
- }
- if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) {
- List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter());
- for (int i = 0; i < chars.size(); i++) {
- String s = chars.get(i);
- temp = "replace(" + temp + ",'" + s + "','')";
- }
- }
- queryValue = String.format(temp, (trim ? value.trim() : value));
- temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)");
- queryKey = String.format(temp, "t."+attrId);
- conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
- }
- }
-
- /**
- * 浣跨敤鍒嗙被涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
- *
- * @param codeClassifyOid 鍒嗙被涓婚敭
- * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
- */
- @Override
- public CodeResembleRuleVO getUseResembleRuleByClassifyOid(String codeClassifyOid) {
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
- return getUseResembleRule(classifyFullInfo, classifyFullInfo.getCurrentClassifyVO());
- }
-
- /**
- * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒�
- *
- * @param fullInfoBO 绫诲叏閮ㄤ俊鎭�
- * @param currentClassifyVO 褰撳墠鐨勫垎绫�
- * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull
- */
- @Override
- public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) {
- if (currentClassifyVO == null) {
- return null;
- }
- if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) {
- //璇存槑宸茬粡瀛樺湪
- return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid());
- }
- if (StringUtils.isBlank(currentClassifyVO.getParentcodeclassifyoid())) {
- return null;
- }
- Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentcodeclassifyoid(), null));
- }
-
-
- /**
- * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟瀹氫箟鐨勪俊鎭�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿紝涓虹┖鐨勬椂鍊欙紝鑾峰彇妯℃澘鎵�灞炵殑鍒嗙被涓婚敭.鐢ㄤ簬浜х敓鍒嗙被娉ㄥ叆
- * @return 琛ㄦ牸鐨勪俊鎭�
- */
- private UIFormDefineVO wrapperFormDefineByTemplate(CodeClassifyTemplateVO templateVO, String codeClassifyOid) {
- UIFormDefineVO formDefineVO = new UIFormDefineVO();
- formDefineVO.setOid(templateVO.getOid());
- formDefineVO.setBtmType(templateVO.getBtmTypeId());
- if (StringUtils.isBlank(codeClassifyOid)) {
- codeClassifyOid = templateVO.getCodeclassifyoid();
- }
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
-
- List<UIFormItemVO> itemVOS = new ArrayList<>();
- Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getAttributegroup())).collect(Collectors.groupingBy(s -> s.getAttributegroup()));
- templateVO.getAttributes().forEach(attrVO -> {
- UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
- itemVOS.add(formItemVO);
- });
- //澶勭悊灞炴�у垎缁�
- if (!CollectionUtils.isEmpty(attrGroupMap)) {
- //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬�
- for (String key : attrGroupMap.keySet()) {
- List<CodeClassifyTemplateAttrVO> value = attrGroupMap.get(key);
- //鎵惧埌杩欎釜鍒嗙粍鐨勫睘鎬х殑绗竴涓�
- CodeClassifyTemplateAttrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrdernum().compareTo(o2.getOrdernum()))).findFirst().get();
- //鎴戜滑鎵惧埌杩欎釜灞炴�у湪鏈�缁堢殑itemVOs閲岀殑浣嶇疆
- UIFormItemVO lineVO = new UIFormItemVO();
- lineVO.setField(attrVO.getId() + "_line");
- lineVO.setType("line");
- lineVO.setText(key);
- //鎵句綅缃�
- for (int i = 0; i < itemVOS.size(); i++) {
- UIFormItemVO record = itemVOS.get(i);
- if (record.getField().equalsIgnoreCase(attrVO.getId())) {
- itemVOS.add(i, lineVO);
- break;
- }
- }
- }
- }
-
- CodeOrderDTO orderDTO = new CodeOrderDTO();
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- if (!CollectionUtils.isEmpty(orderDTO.getData())) {
- orderDTO.getData().forEach((key, value) -> {
- for (int i = 0; i < itemVOS.size(); i++) {
- UIFormItemVO itemVO = itemVOS.get(i);
- if (itemVO.getField().equalsIgnoreCase(key)) {
- itemVO.setDefaultValue(value);
- break;
- }
- }
- });
- }
- formDefineVO.setItems(itemVOS);
- //鏌ヨ鏄惁鏈夊垎绫绘敞鍏ョ殑
- return formDefineVO;
- }
-
-
- /**
- * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param forEdit 鏄惁鏄紪杈戞墍闇�
- * @return 琛ㄦ牸鐨勪俊鎭�
- */
- private UITableDefineVO wrapperTableDefineByTemplate(CodeClassifyTemplateVO templateVO,boolean forEdit) {
- //灏佽淇℃伅
- UITableDefineVO tableDefineVO = new UITableDefineVO();
- tableDefineVO.setOid(templateVO.getOid());
- tableDefineVO.setBtmType(templateVO.getBtmTypeId());
- tableDefineVO.setDisplayQueryArea(true);
- //鍓嶇浼氶粯璁ゅ垎椤电殑淇℃伅
-
- //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
- List<UITableFieldVO> fieldVOList = new ArrayList<>();
- Map<String, String> comboxOrReferFieldMap = new HashMap<>();
-
- templateVO.getAttributes().forEach(attrVO -> {
- UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,forEdit);
- if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
- comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
- }
- if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
- comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
- }
- if(StringUtils.isNotBlank(tableFieldVO.getEdit())){
- tableDefineVO.setHasEditor(true);
- }
- fieldVOList.add(tableFieldVO);
- });
- List<List<UITableFieldVO>> cols = new ArrayList<>();
- cols.add(fieldVOList);
- tableDefineVO.setCols(cols);
- Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t));
- //鏌ヨ灞炴��
- List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryattrflag())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(queryAttrVOs)) {
- List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
- queryAttrVOs.stream().forEach(attrVO -> {
- String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
- attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
- if (fieldVOMap.containsKey(attrId)) {
- queryFieldVOs.add(fieldVOMap.get(attrId));
- }
- });
- tableDefineVO.setQueryColumns(queryFieldVOs);
- }
- //楂樼骇灞炴��
- List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorqueryattrflag())).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) {
- List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
- seniorQueryAttrVOs.stream().forEach(attrVO -> {
- String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
- attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrId).toLowerCase(Locale.ROOT);
- if (fieldVOMap.containsKey(attrId)) {
- queryFieldVOs.add(fieldVOMap.get(attrId));
- }
- });
- tableDefineVO.setSeniorQueryColumns(queryFieldVOs);
- }
- return tableDefineVO;
- }
-
- /**
- * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃�
- *
- * @param attrVO 妯℃澘灞炴��
- * @param forEdit 鏄惁鏄紪杈戞墍闇�
- * @return 琛ㄦ牸鐨勫瓧娈�
- */
- @Override
- public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) {
- UITableFieldVO fieldVO = new UITableFieldVO();
- if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
- attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET);
- }
- fieldVO.setField(attrVO.getId());
- fieldVO.setTitle(attrVO.getName());
- fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
- fieldVO.setSort(true);
- fieldVO.setSortField(fieldVO.getField());
- fieldVO.setQueryField(fieldVO.getField());
- if (forEdit){
- fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
- }else {
- fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTabledisplayflag()));
- }
- if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) {
- fieldVO.setMinWidth(attrVO.getAttrTableWidth());
- fieldVO.setWidth(attrVO.getAttrTableWidth());
- }
- //鐪嬬湅鏄惁鏈夋灇涓�
- if ((StringUtils.isNotBlank(attrVO.getEnumString())
- && !"[]".equalsIgnoreCase(attrVO.getEnumString())) ||
- StringUtils.isNotBlank(attrVO.getEnumid())) {
- fieldVO.setFieldType("combox");
- fieldVO.setField(fieldVO.getField() + "Text");
- fieldVO.setComboxKey(attrVO.getEnumid());
- if (StringUtils.isNotBlank(attrVO.getEnumString())) {
- //鎸囧畾鐨勪笅鎷夋鍐呭
- fieldVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class));
- if (StringUtils.isBlank(attrVO.getEnumid())) {
- fieldVO.setComboxKey(fieldVO.getField() + "_data");
- }
- }else {
- List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumid());
- fieldVO.setData(osEnumItemVOList);
- }
- }
- //鐪嬫槸鍚︽湁鍙傜収
- if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
- fieldVO.setFieldType("refer");
- fieldVO.setQueryField(fieldVO.getField());
- fieldVO.setField(fieldVO.getField() + "name");
- fieldVO.setShowField(fieldVO.getField());
- if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
- //閰嶇疆鐨勫唴瀹�
- fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class));
- } else {
- UIFormReferVO formReferVO = new UIFormReferVO();
- formReferVO.setType("default");
- formReferVO.setReferType(attrVO.getReferbtmid());
- fieldVO.setReferConfig(formReferVO);
- }
- }
- if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) {
- fieldVO.setField("lcstatus_text");
- }
- Map<String, String> eventJsMap = new HashMap<>();
- //瓒呴摼鎺ヤ笌妯℃澘鏄簰鏂�
- if (StringUtils.isNotBlank(attrVO.getTablehref())) {
- String event = fieldVO.getSortField() + "_href";
- eventJsMap.put(event, attrVO.getTablehref());
- fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}");
- }
- if (StringUtils.isNotBlank(attrVO.getTabledisplayjs())) {
- //鐩存帴鍐檉unction(d){ return xxxxx;}
- fieldVO.setTemplet(attrVO.getTabledisplayjs());
- }
- if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
- fieldVO.setTemplet("function(d){return $webUtil.formateBoolean(d." + fieldVO.getField() + ");}");
- }
- fieldVO.setOptionJsMap(eventJsMap);
- fieldVO.setStyle(attrVO.getTabledisplaystyle());
- //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
- fieldVO.setDateFormate(attrVO.getCodedateformat());
- return fieldVO;
- }
-
- /**
- * 瀵嗙骇鐨勫瓧娈�
- */
- public static final String SECRET_FILED = "secretgrade";
-
- /**
- * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
- *
- * @param attrVO 妯℃澘灞炴��
- * @param btmType 涓氬姟绫诲瀷
- * @return 琛ㄥ崟鐨勫瓧娈�
- */
- @Override
- public UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) {
- UIFormItemVO itemVO = new UIFormItemVO();
- if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
- attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET);
- }
- itemVO.setField(attrVO.getId());
- itemVO.setText(attrVO.getName());
- itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
- if (VciBaseUtil.getBoolean(attrVO.getTextareaflag())) {
- itemVO.setType("textarea");
- }
- if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- || VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- || VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
- itemVO.setVerify("number");
- }
- itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadonlyflag()));
- itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyattrflag()));
- itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireflag()));
- itemVO.setDefaultValue(attrVO.getDefaultvalue());
- itemVO.setDateFormate(attrVO.getCodedateformat());
- itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
- itemVO.setVerify(attrVO.getVerifyrule());
- itemVO.setPrefix(attrVO.getPrefixvalue());
- itemVO.setSuffix(attrVO.getSuffixvalue());
- itemVO.setTooltips(attrVO.getExplain());
- itemVO.setSelectLibFlag(attrVO.getLibraryIdentification());
- //鐪嬬湅鏄惁鏈夋灇涓�
- if ((StringUtils.isNotBlank(attrVO.getEnumString())
- && !"[]".equalsIgnoreCase(attrVO.getEnumString())) ||
- StringUtils.isNotBlank(attrVO.getEnumid())) {
- itemVO.setType("combox");
- itemVO.setComboxKey(attrVO.getEnumid());
- if (StringUtils.isNotBlank(attrVO.getEnumString())) {
- //鎸囧畾鐨勪笅鎷夋鍐呭
- itemVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class));
- if (StringUtils.isBlank(attrVO.getEnumid())) {
- itemVO.setComboxKey(itemVO.getField() + "_data");
- }
- }
- }
- //鐪嬫槸鍚︽湁鍙傜収
- if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
- itemVO.setType("refer");
- itemVO.setShowField(itemVO.getField() + "name");
- if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
- //閰嶇疆鐨勫唴瀹�
- itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class));
- } else {
- UIFormReferVO formReferVO = new UIFormReferVO();
- formReferVO.setType("default");
- formReferVO.setReferType(attrVO.getReferbtmid());
- itemVO.setReferConfig(formReferVO);
- }
- }
-
- //濡傛灉鏄粍鍚堣鍒欙紝鍒嗙被娉ㄥ叆鐨勶紝鏄剧ず涓哄彧璇�
- if (StringUtils.isNotBlank(attrVO.getComponentrule())) {
- itemVO.setReadOnly(true);
- itemVO.setTooltips("鏈睘鎬т负缁勫悎瑙勫垯");
- itemVO.setRequired(false);
- }
- if (StringUtils.isNotBlank(attrVO.getClassifyinvokeattr())) {
- itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyinvokeeditflag()));
- itemVO.setTooltips("鏈睘鎬ф槸鍒嗙被娉ㄥ叆");
- itemVO.setRequired(false);
- }
-
- if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) {
- //鏄敓鍛藉懆鏈熺姸鎬�
- itemVO.setType("combox");
- itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX);
- }
- return itemVO;
- }
-
- /**
- * 灞炴�х被鍨嬩笌js涓殑瀛楁绫诲瀷鐨勬槧灏�
- */
- private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{
- put(VciFieldTypeEnum.VTString.name(), "text");
- put(VciFieldTypeEnum.VTInteger.name(), "text");
- put(VciFieldTypeEnum.VTLong.name(), "text");
- put(VciFieldTypeEnum.VTDouble.name(), "text");
- put(VciFieldTypeEnum.VTClob.name(), "text");
- put(VciFieldTypeEnum.VTBoolean.name(), "truefalse");
- put(VciFieldTypeEnum.VTDateTime.name(), "datetime");
- put(VciFieldTypeEnum.VTDate.name(), "datetime");
- put(VciFieldTypeEnum.VTTime.name(), "datetime");
- put(VciFieldTypeEnum.VTFilePath.name(), "file");
- }};
-
- /**
- * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃
- *
- * @param oid 涓氬姟鏁版嵁涓婚敭
- * @param btmName 涓氬姟绫诲瀷
- * @param pass 鏄惁閫氳繃
- * @return 鎵ц缁撴灉
- */
- @Override
- public BaseResult markDataPassing(String oid, String btmName, Boolean pass) {
- VciBaseUtil.alertNotNull(oid, "涓氬姟鏁版嵁涓婚敭", btmName, "涓氬姟绫诲瀷", pass, "鏍囪绫诲瀷");
- boolean flag = false;
- try {
- ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
- ClientBusinessObject data = operation.readBusinessObjectById(oid, btmName);
- if (data == null || StringUtils.isBlank(data.getOid())) {
- return BaseResult.fail(DATA_OID_NOT_EXIST);
- }
- data.setAttributeValue("passing", String.valueOf(pass));
- flag = operation.updateBuinessObject(data);
- } catch (VCIError e) {
- e.printStackTrace();
- }
- if (flag) {
- return BaseResult.success();
- } else {
- return BaseResult.fail("鏍囪澶辫触");
- }
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹�
- *
- * @param btmType 涓氬姟绫诲瀷
- * @param queryObject 鏌ヨ瀵硅薄
- * @return 琛ㄦ牸鐨勬樉绀哄璞″��
- */
- @Override
- public DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject) {
- VciBaseUtil.alertNotNull(btmType, "涓氬姟绫诲瀷");
- if (queryObject == null) {
- queryObject = new BaseQueryObject();
- }
- if (queryObject.getConditionMap() == null) {
- queryObject.setConditionMap(new HashMap<>());
- }
- Map<String, String> conditionMap = queryObject.getConditionMap();
- PageHelper pageHelper = queryObject.getPageHelper();
- if (!conditionMap.containsKey("oid")) {
- throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
- }
- List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid"));
- Map<String, String> oidMap = new HashMap<>();
- if (conditionMap.get("oid").contains(",")) {
- oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
- } else {
- oidMap.put("oid", conditionMap.get("oid"));
- }
- if (CollectionUtils.isEmpty(oidMap)) {
- throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
- }
- List<ClientBusinessObject> cbos = boService.queryCBO(btmType, oidMap);
- if (CollectionUtils.isEmpty(cbos)) {
- throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�");
- }
- ClientBusinessObject cbo = cbos.get(0);
- String templateOid = cbo.getAttributeValue("CODETEMPLATEOID");
- Map<String, String> templateOidMap = new HashMap<>();
- templateOidMap.put("oid", templateOid);
- List<CodeClassifyTemplateDO> templateDOList = boService.queryObject(CodeClassifyTemplateDO.class, templateOidMap);
- templateOidMap.clear();
- templateOidMap.put("CLASSIFYTEMPLATEOID",templateOid);
- List<CodeClassifyTemplateAttrDO> attrDOList = boService.queryObject(CodeClassifyTemplateAttrDO.class, templateOidMap);
- if (CollectionUtils.isEmpty(templateDOList)) {
- logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid);
- throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘");
- }
- CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
- templateVO.setAttributes(templateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
- try {
- if (oidList.size() > 1){
- DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
- List<Map<String,String>> allData = new ArrayList<>();
- oidList.forEach(oid -> {
- Map<String,String> condition = new HashMap<>();
- condition.put("oid",oid);
- DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
- allData.addAll(dataGrid.getData());
- });
- allDataGrid.setData(allData);
- return allDataGrid;
- }else {
- return queryGrid(btmType, templateVO, conditionMap, pageHelper);
- }
- } catch (Exception e) {
- System.out.println(e.getMessage());
- return null;
- }
- }
-
- /**
- * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹�
- *
- * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
- * @return 鎵ц缁撴灉
- */
- @Override
- public BaseResult batchUpdateCode(List<CodeOrderDTO> orderDTOList) {
- VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�");
- orderDTOList.forEach(orderDTO -> {
- VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
- orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
- });
- Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- List<ClientBusinessObject> updateList = new ArrayList<>();
- // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid());
- Map<String,String> cboOidMap = new HashMap<>();
- if (CollectionUtils.isEmpty(orderDTOMap.keySet())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")");
- List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
- if (CollectionUtils.isEmpty(cboList)){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- BatchCBO batchCBO = new BatchCBO();
- CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
- Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- orderDTOMap.keySet().stream().forEach(oid -> {
- CodeOrderDTO orderDTO = orderDTOMap.get(oid);
- ClientBusinessObject cbo = cboMap.get(oid);
- if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
- throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
- }
- if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
- throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
- }
- //1. 鍒ゆ柇蹇呰緭椤�
- CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- checkRequiredAttrOnOrder(templateVO, orderDTO);
- //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
- //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //4.鏍¢獙瑙勫垯
- checkVerifyOnOrder(templateVO, orderDTO);
- //5.鍒ゆ柇鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
- //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
- checkEnumOnOrder(templateVO, orderDTO);
- //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
- switchDateAttrOnOrder(templateVO, orderDTO);
- //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
- copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
- //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
- cbo.setDescription(orderDTO.getDescription());
- cbo.setName(orderDTO.getName());
- try {
- cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
- } catch (VCIError e) {
- e.printStackTrace();
- }
- batchCBO.getUpdateCbos().add(cbo);
- updateList.add(cbo);
- });
- boService.persistenceBatch(batchCBO);
- batchSaveSelectChar(firstTemplateVO, cboList);
- return BaseResult.success();
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔�
- *
- * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮�
- * @param functionId 鍔熻兘鐨勭紪鍙�
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�)
- */
- @Override
- public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) {
- CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath);
- if(classifyVO !=null){
- return getUIInfoByClassifyOid(classifyVO.getOid(),functionId);
- }
- return null;
- }
-
- /**
- * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔�
- *
- * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz
- * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
- */
- @Override
- public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) {
- CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath);
- if(classifyVO !=null){
- return getFormDefineByClassifyOid(classifyVO.getOid());
- }
- return null;
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmIOServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmIOServiceImpl.java
deleted file mode 100644
index 6a19628..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmIOServiceImpl.java
+++ /dev/null
@@ -1,4012 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.vci.corba.common.VCIError;
-import com.vci.file.util.VciZipUtil;
-import com.vci.starter.poi.bo.*;
-import com.vci.starter.poi.util.ExcelUtil;
-import com.vci.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.enumpck.BooleanEnum;
-import com.vci.starter.web.enumpck.UserSecretEnum;
-import com.vci.starter.web.enumpck.VciFieldTypeEnum;
-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.toolmodel.DateConverter;
-import com.vci.starter.web.util.*;
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.pageModel.BatchCBO;
-import com.vci.web.pageModel.KeyValue;
-import com.vci.web.pageModel.OsLifeCycleVO;
-import com.vci.web.pageModel.UIFormReferVO;
-import com.vci.web.redis.RedisService;
-import com.vci.web.service.OsLifeCycleServiceI;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.service.WebSecretServiceI;
-import com.vci.web.service.impl.FormulaServiceImpl;
-import com.vci.web.util.PlatformClientUtil;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.collections.map.HashedMap;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFRichTextString;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.hssf.util.HSSFColor;
-import org.apache.poi.ss.usermodel.Font;
-import org.apache.poi.ss.usermodel.RichTextString;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.bo.CodeTemplateAttrSqlBO;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dto.CodeExportAttrDTO;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.enumpack.CodeLevelTypeEnum;
-import org.springblade.code.lifecycle.CodeAllCodeLC;
-import org.springblade.code.lifecycle.CodeDefaultLC;
-import org.springblade.code.service.*;
-import org.springblade.code.vo.pagemodel.*;
-import org.springblade.code.vo.universalInter.attrmap.DataObjectVO;
-import org.springblade.code.vo.universalInter.attrmap.RowDatas;
-import org.springblade.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import plm.bs.bom.clientobject.ClientBusinessObject;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.stream.Collectors;
-
-import static org.springblade.code.constant.MdmEngineConstant.*;
-
-
-/**
- * 涓绘暟鎹鍏ュ鍑烘湇鍔�
- * @author weidy
- * @date 2022-3-6
- */
-@Service
-public class MdmIOServiceImpl implements MdmIOServiceI {
-
-
- @Value("${batchadd.exportattr.type:鍩烘湰淇℃伅}")
- public String BATCHADD_EXCEPORT_ATTR_TYPE;
-
-
- /**
- * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
- */
- @Autowired
- private OsLifeCycleServiceI lifeCycleService;
-
- @Autowired
- private PlatformClientUtil platformClientUtil;
- /**
- * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉� 鏈嶅姟
- */
- @Autowired
- private CodeClassifyProcessTempServiceI codeClassifyProcessTempService;
- /**
- * 涓婚搴撳垎绫荤殑鏈嶅姟
- */
- @Autowired
- private CodeClassifyServiceI classifyService;
-
- @Autowired
- private CodeClassifyTemplateServiceI templateServiceI;
- /**
- * 涓绘暟鎹紩鎿庣殑鏈嶅姟
- */
- @Autowired
- private MdmEngineServiceI engineService;
-
- /**
- * 瑙勫垯鐨勬湇鍔�
- */
- @Autowired
- private CodeRuleServiceI ruleService;
-
- /**
- * 鏁版嵁鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 鍏紡鐨勬湇鍔�
- */
- @Autowired
- private FormulaServiceImpl formulaService;
-
- /**
- * 缂撳瓨鏈嶅姟
- */
- @Autowired
- private RedisService redisService;
-
- /**
- * 鍏抽敭灞炴��
- */
- public static final String KEY_ATTR_CHAR = "鈽�";
-
- /**
- * 瀛楁
- */
- public static final String ROW_INDEX = "LAY_TABLE_INDEX";
- /**
- * 蹇呰緭
- */
- public static final String REQUIRED_CHAR = "*";
- /**
- * 鏇挎崲瀛楃
- */
- public static final String SPECIAL_CHAR = "VCI";
- /**
- * 寮哄埗鍒嗛〉鐨勬暟閲�
- */
- public static final int LIMIT = 10000;
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鍏抽敭灞炴�х殑閰嶇疆
- */
- @Autowired
- private CodeKeyAttrRepeatRuleServiceI keyRuleService;
-
- /**
- * 缂栫爜鐢熸垚鏈嶅姟绫�
- */
- @Autowired
- private MdmProductCodeServiceI productCodeService;
-
- /**
- * 妯℃澘鐨勬湇鍔�
- */
- @Autowired
- private CodeClassifyTemplateServiceI templateService;
-
- /**
- * 瀵嗙骇鐨勬湇鍔�
- */
- @Autowired
- private WebSecretServiceI secretService;
-
- /**
- * 瀵煎嚭涓婚搴撶殑鏁版嵁
- *
- * @param exportAttrDTO 瀵煎嚭鐩稿叧鐨勯厤缃紝蹇呴』瑕佹湁涓婚搴撳垎绫荤殑涓婚敭
- * @return 瀵煎嚭鐨別xcel鐨勬枃浠�
- */
- @Override
- public String exportCode(CodeExportAttrDTO exportAttrDTO) {
- VciBaseUtil.alertNotNull(exportAttrDTO,"瀵煎嚭鐨勯厤缃�",exportAttrDTO.getCodeClassifyOid(),"涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(exportAttrDTO.getCodeClassifyOid());
- //鑾峰彇鏈�鏂扮殑妯℃澘
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(exportAttrDTO.getCodeClassifyOid());
- //鍏堟煡璇㈡暟鎹�
- String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmtypeid();
- Map<String, String> conditionMap = exportAttrDTO.getConditionMap();
- if(conditionMap == null){
- conditionMap = new HashMap<>();
- }
- if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){
- conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")");
- }
- PageHelper pageHelper = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
- pageHelper.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
- pageHelper.setSort(exportAttrDTO.getSort());
- pageHelper.setOrder(exportAttrDTO.getOrder());
-
- pageHelper.addDefaultDesc("createTime");
- conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
-
- //鍏堟煡璇㈡�绘暟
- int total = 0;
- if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
- &&exportAttrDTO.getPage() !=null && exportAttrDTO.getPage() >0
- &&exportAttrDTO.getEndPage()>exportAttrDTO.getPage()){
- //浠庡灏戦〉鍒板灏戦〉鐨勬煡璇㈡柟寮忥紝
- for(int i = exportAttrDTO.getPage() ;i <= exportAttrDTO.getEndPage();i++){
- PageHelper thisPage = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
- thisPage.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
- thisPage.setSort(exportAttrDTO.getSort());
- thisPage.setOrder(exportAttrDTO.getOrder());
- thisPage.addDefaultDesc("createTime");
- total += boService.queryCount(btmTypeId, conditionMap);
- }
- }else{
- total=boService.queryCount(btmTypeId, conditionMap);
- }
- List<String> selectFieldList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
- selectFieldList = exportAttrDTO.getAttrIdIndexMap().values().stream().map(s->s.toLowerCase(Locale.ROOT)).collect(Collectors.toList());
- }else{
- selectFieldList = templateVO.getAttributes().stream().filter(s->VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ||VciBaseUtil.getBoolean(s.getTabledisplayflag())).map(s->s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
- }
- //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
- List<String> finalSelectFieldList = selectFieldList;
- List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
- s -> StringUtils.isNotBlank(s.getReferbtmid())
- &&
- (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT)))
- ).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(referAttrVOs)){
- for (int i = 0; i < referAttrVOs.size(); i++) {
- selectFieldList.add(referAttrVOs.get(i).getId() + ".name");
- }
- }
- List<String> excelNameList = new CopyOnWriteArrayList<>();
- String tempFolder = LocalFileUtil.getDefaultTempFolder();
-
- if(total>LIMIT){
- //鍒嗙粍鏉ユ墽琛�
- int queryCount = (total-total%LIMIT)/LIMIT;
- if(total%LIMIT>0){
- queryCount = queryCount + 1;
- }
- List<Integer> indexList = new ArrayList<>();
- for (int i = 0; i <queryCount ; i++) {
- indexList.add(i);
- }
- Map<String, String> finalConditionMap = conditionMap;
- //骞惰鏌ヨ鐪嬬湅
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- indexList.parallelStream().forEach(index->{
- //绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴�
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- PageHelper thisPage = new PageHelper(LIMIT);
- thisPage.setPage(index+1);
- thisPage.setSort(exportAttrDTO.getSort());
- thisPage.setOrder(exportAttrDTO.getOrder());
- thisPage.addDefaultDesc("createTime");
- selectDataAndExportExcelName(btmTypeId, finalConditionMap,thisPage,finalSelectFieldList,
- classifyFullInfo,templateVO,exportAttrDTO,
- excelNameList,tempFolder,index);
- });
- }else{
- pageHelper.setLimit(total);
- pageHelper.setPage(1);
- selectDataAndExportExcelName(btmTypeId,conditionMap,pageHelper,finalSelectFieldList,
- classifyFullInfo,templateVO,exportAttrDTO,
- excelNameList,tempFolder,1);
- }
- if(excelNameList.size() ==0){
- throw new VciBaseException("娌℃湁鏁版嵁鍙互琚鍑�");
- }
- if(excelNameList.size() == 1){
- return excelNameList.get(0);
- }
- //鏄涓紝鎴戜滑闇�瑕佹墦鎴愬帇缂╁寘
-
- String zipFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelNameList.size()+".zip";
- VciZipUtil zipUtil = new VciZipUtil();
- File file = new File(tempFolder);
- zipUtil.addFileToZip(file,zipFileName);
- File[] files = file.listFiles();
- for (int i = 0; i < files.length; i++) {
- LocalFileUtil.deleteTempFile(files[i],false);
- }
- LocalFileUtil.deleteTempFile(file,true);
- return zipFileName;
- }
-
- /**
- * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @return excel鐨勬枃浠跺湴鍧�
- */
- @Override
- public String downloadTopImportExcel(String codeClassifyOid){
- List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
- VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
- templateVOList= templateService.childTemplates(codeClassifyOid);
- List<CodeClassifyVO> codeClassifyVOS=classifyService.getIdPathToNamePathByParentId(codeClassifyOid,true);
- WriteExcelOption eo = new WriteExcelOption();
- LinkedHashMap<String,CodeClassifyTemplateAttrVO> allFieldToOutNameMap=new LinkedHashMap<>();
- templateVOList.stream().forEach(templateVO -> {
- //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
- // 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
- //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
- //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
- //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
- //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
- List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId())
- && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr())
- && (VciBaseUtil.getBoolean(s.getFormdisplayflag()))
- ).collect(Collectors.toList());
- if(CollectionUtils.isEmpty(templateAttrVOS)){
- throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
- }
- templateAttrVOS.stream().forEach(codetemplateAttr ->{
- String field=codetemplateAttr.getId();
- String name=codetemplateAttr.getName();
- CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
- boolean res=codetemplateAttr.getAttributegroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE)//鍩烘湰灞炴�у瓧娈垫樉绀�
- ||(StringUtils.isNotBlank(codetemplateAttr.getKeyattrflag())&&Boolean.parseBoolean(codetemplateAttr.getKeyattrflag()))//鍏抽敭灞炴�х殑瀛樺叆
- ||(StringUtils.isNotBlank(codetemplateAttr.getSamerepeatattrflag())&&Boolean.parseBoolean(codetemplateAttr.getSamerepeatattrflag())) //鐩镐技灞炴�х殑瀛樺叆
- ||(StringUtils.isNotBlank(codetemplateAttr.getRequireflag())&&Boolean.parseBoolean(codetemplateAttr.getRequireflag()));
- if(allFieldToOutNameMap.containsKey(name)){//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
- codeBaseAttributeDTO= allFieldToOutNameMap.get(name);
- if(StringUtils.isNotBlank(codetemplateAttr.getKeyattrflag())&&Boolean.parseBoolean(codetemplateAttr.getKeyattrflag())){
- codeBaseAttributeDTO.setKeyattrflag(codetemplateAttr.getKeyattrflag());//灞炴�у叧閿睘鎬�
- }
- if(StringUtils.isNotBlank(codetemplateAttr.getRequireflag())&&Boolean.parseBoolean(codetemplateAttr.getRequireflag())){
- codeBaseAttributeDTO.setKeyattrflag(codetemplateAttr.getRequireflag());//灞炴�у繀濉」
- }
- if(StringUtils.isNotBlank(codetemplateAttr.getSamerepeatattrflag())&&Boolean.parseBoolean(codetemplateAttr.getSamerepeatattrflag())){
- codeBaseAttributeDTO.setSamerepeatattrflag(codetemplateAttr.getSamerepeatattrflag());//灞炴�х浉浼煎睘鎬�
- }
- }else if(res){
- allFieldToOutNameMap.put(name,codetemplateAttr);
- }
- });
- });
- //鏁寸悊濂芥墍鏈夋ā鏉块渶瑕佸啓鍏xecl鐨勫睘鎬т俊鎭�
- Workbook workbook = new HSSFWorkbook();
- LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
- if(!CollectionUtils.isEmpty(allFieldToOutNameMap)){
- excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
- final int[] index = {0};
- allFieldToOutNameMap.values().stream().forEach(attrVO -> {
- Object text = attrVO.getName();
- text = exportKeyAndRequired(workbook,attrVO,text);
- int colIndex = 1 + index[0]++;
- WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
- if(StringUtils.isNotBlank(attrVO.getCodedateformat())
- || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- excelData.setDateFormat(VciDateUtil.DateTimeFormat);
- }
- if(text instanceof RichTextString){
- excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
- }
- excelDataList.add(excelData);
- if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
- //娣诲姞鏁版嵁鏈夋晥鎬�
- List<String> enumValueList = new ArrayList<>();
- enumValueList.add("");
- List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
- if(!CollectionUtils.isEmpty(valueList)){
- valueList.stream().forEach(kv->{
- enumValueList.add(kv.getValue());
- });
- }
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(enumValueList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- List<String> booleanList = new ArrayList<>();
- booleanList.add("鏄�");
- booleanList.add("鍚�");
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(booleanList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- });
- eo.addSheetDataList(codeClassifyVO.getName()+"瀵煎叆妯℃澘",excelDataList);
- }
- LinkedList<WriteExcelData> classPathList = new LinkedList<>();
- classPathList.add(new WriteExcelData(0,0,"鍒嗙被灞傜骇"));
-
- WriteExcelData idPathWriteExcelTitle=new WriteExcelData(0,1,"鍒嗙被ID璺緞");
- idPathWriteExcelTitle.setWidth(20);
- idPathWriteExcelTitle.setCenter(false);
- classPathList.add(idPathWriteExcelTitle);
- WriteExcelData namePathWriteExcelTitle=new WriteExcelData(0,2,"鍒嗙被鍚嶇О璺緞");
- namePathWriteExcelTitle.setWidth(20);
- namePathWriteExcelTitle.setCenter(false);
- classPathList.add(namePathWriteExcelTitle);
-
-
- final int[] rowIndex = {1};
- codeClassifyVOS.stream().forEach(codeClassifyVO1 -> {
- classPathList.add(new WriteExcelData(rowIndex[0],0,codeClassifyVO1.getDataLevel()));
-
- String idPath=codeClassifyVO1.getIdPath().startsWith("#")?codeClassifyVO1.getIdPath().substring(1):codeClassifyVO1.getIdPath();
- WriteExcelData idPathWriteExcelData=new WriteExcelData(rowIndex[0],1,idPath);
- idPathWriteExcelData.setWidth(30);
- idPathWriteExcelData.setCenter(false);
- classPathList.add(idPathWriteExcelData);
-
- String namePath=codeClassifyVO1.getNamePath().startsWith("#")?codeClassifyVO1.getNamePath().substring(1):codeClassifyVO1.getNamePath();
- WriteExcelData namePathWriteExcelData= new WriteExcelData(rowIndex[0],2,namePath);
- namePathWriteExcelData.setWidth(40);
- namePathWriteExcelData.setCenter(false);
- classPathList.add(namePathWriteExcelData);
- rowIndex[0]++;
- });
-
- WriteExcelData excelData=new WriteExcelData();
- excelData.setMerged(true);
- excelData.setRow(1);
- excelData.setRowTo(2);
- excelData.setCol(4);
- excelData.setColTo(9);
- excelData.setCenter(false);
- excelData.setReadOnly(true);
- excelData.setObj("瀵煎叆鏁版嵁鏃讹紝鍒嗙被璺緞蹇呴』濉啓鍙跺瓙鑺傜偣璺緞\n(閫夋嫨鍙跺瓙鑺傜偣瀵煎叆鍒欎笉闇�瑕佸~鍐欏垎绫昏矾寰�)");
- excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
- classPathList.add(excelData);
-
- eo.addSheetDataList(codeClassifyVO.getName()+"鍒嗙被瀵圭収琛�",classPathList);
-
- String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + "_瀵煎叆妯℃澘.xls";
- // eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
- ExcelUtil.writeDataToFile(excelName,eo);
- return excelName;
- }
-
- /**
- * 鐢熸垚瀵煎叆鐨勬枃浠�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
- * @return excel鐨勬枃浠跺湴鍧�
- */
- @Override
- public String createImportExcel(String codeClassifyOid,boolean isHistory) {
- List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
- VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
- CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
- if(isHistory){
- templateVOList= templateService.childTemplates(codeClassifyOid);
- }else{
- //鎵炬ā鏉�
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
- templateVOList.add(templateVO);
- }
-
- WriteExcelOption eo = new WriteExcelOption();
- eo.setAppend(true);
- //澧炲姞妯℃澘鐨勪俊鎭鍏�
- LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
- tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
- tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
- tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
- for(int j=0;j<templateVOList.size();j++){
- CodeClassifyTemplateVO templateVO=templateVOList.get(j);
-
- //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
- // 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
- //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
- //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
- //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
- //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
- List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId())
- && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr())
- && (isHistory || VciBaseUtil.getBoolean(s.getFormdisplayflag()))
- ).collect(Collectors.toList());
- if(CollectionUtils.isEmpty(templateAttrVOS)){
- throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
- }
- List<CodeClassifyTemplateAttrVO> idAttrVOList = templateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
- LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
- Workbook workbook = new HSSFWorkbook();
- if(isHistory){
- excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
- excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
- excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
- }
- for (int i = 0; i < templateAttrVOS.size(); i++) {
- CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
- Object text = attrVO.getName();
- text = exportKeyAndRequired(workbook,attrVO,text);
- int colIndex = (isHistory?3:0) + i;
- WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
- if(StringUtils.isNotBlank(attrVO.getCodedateformat())
- || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- excelData.setDateFormat(VciDateUtil.DateTimeFormat);
- }
- if(text instanceof RichTextString){
- excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
- }
- excelDataList.add(excelData);
- if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
- //娣诲姞鏁版嵁鏈夋晥鎬�
- List<String> enumValueList = new ArrayList<>();
- enumValueList.add("");
- List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
- if(!CollectionUtils.isEmpty(valueList)){
- valueList.stream().forEach(kv->{
- enumValueList.add(kv.getValue());
- });
- }
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(enumValueList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- List<String> booleanList = new ArrayList<>();
-
- booleanList.add("鏄�");
- booleanList.add("鍚�");
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(booleanList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- }
- eo.addSheetDataList(j+templateVO.getName(),excelDataList);
- tempEDList.add(new WriteExcelData(j+1,0,templateVO.getOid()));
- tempEDList.add(new WriteExcelData(j+1,1,templateVO.getId()));
- tempEDList.add(new WriteExcelData(j+1,2,templateVO.getName()));
- }
- String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
- eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
- ExcelUtil.writeDataToFile(excelName,eo);
- return excelName;
- }
-
-
- /**
- * 鐢熸垚瀵煎叆鐨勬枃浠�
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
- * @return excel鐨勬枃浠跺湴鍧�
- */
- /*@Override
- public String createImportExcel(String codeClassifyOid,boolean isHistory) {
- CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
- if(isHistory && !templateService.checkChildHasSameTemplate(codeClassifyOid)){
- throw new VciBaseException("褰撳墠閫夋嫨鐨勪富棰樺簱鍒嗙被鐨勬墍鏈変笅绾ц妭鐐逛腑瀛樺湪涓嶅悓鐨勬ā鏉跨殑鎯呭喌");
- }
- //鎵炬ā鏉�
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
- //鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
- //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
- //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
- //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
- //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
- List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId())
- && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr())
- && (isHistory || VciBaseUtil.getBoolean(s.getFormdisplayflag()))
- ).collect(Collectors.toList());
- if(CollectionUtils.isEmpty(templateAttrVOS)){
- throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
- }
- List<CodeClassifyTemplateAttrVO> idAttrVOList = templateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
- List<WriteExcelData> excelDataList = new ArrayList<>();
- Workbook workbook = new HSSFWorkbook();
- if(isHistory){
- excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
- excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
- excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
- }
- for (int i = 0; i < templateAttrVOS.size(); i++) {
- CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
- Object text = attrVO.getName();
- text = exportKeyAndRequired(workbook,attrVO,text);
- int colIndex = (isHistory?3:0) + i;
- WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
- if(StringUtils.isNotBlank(attrVO.getCodedateformat())
- || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
- ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- excelData.setDateFormat(VciDateUtil.DateTimeFormat);
- }
- if(text instanceof RichTextString){
- excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
- }
- excelDataList.add(excelData);
- if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
- //娣诲姞鏁版嵁鏈夋晥鎬�
- List<String> enumValueList = new ArrayList<>();
- enumValueList.add("");
- List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
- if(!CollectionUtils.isEmpty(valueList)){
- valueList.stream().forEach(kv->{
- enumValueList.add(kv.getValue());
- });
- }
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(enumValueList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
- List<String> booleanList = new ArrayList<>();
-
- booleanList.add("鏄�");
- booleanList.add("鍚�");
- //榛樿鍔�1涓囨潯
- WriteExcelData ed = new WriteExcelData(1,colIndex,"");
- ed.setRowTo(100);
- ed.setColTo(colIndex);
- ed.setValidation(true);
- ed.setValidationDataList(booleanList);
- ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
- excelDataList.add(ed);
- }
- }
- //澧炲姞妯℃澘鐨勪俊鎭鍏�
- List<WriteExcelData> tempEDList = new ArrayList<>();
- tempEDList.add(new WriteExcelData(0,0,templateVO.getOid()));
- tempEDList.add(new WriteExcelData(0,1,templateVO.getId()));
- tempEDList.add(new WriteExcelData(0,2,templateVO.getName()));
- String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
- WriteExcelOption eo = new WriteExcelOption(excelDataList);
- eo.addSheetDataList("妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
- ExcelUtil.writeDataToFile(excelName,eo);
- return excelName;
- }*/
-
- /**
- * 鎵归噺鐢宠缂栫爜鏁版嵁
- *
- * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return 鏈夐敊璇俊鎭殑excel鐨勬枃浠�
- */
- @Override
- public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) {
- VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
- ReadExcelOption reo = new ReadExcelOption();
- reo.setReadAllSheet(true);
- List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
- if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
- ||sheetDataSetList.get(0).getRowData().size()<1){
- throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
- }
- if(sheetDataSetList.size()>LIMIT+1){
- throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
- }
- //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
- SheetDataSet dataSet = sheetDataSetList.get(0);
- //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
- //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
- checkTemplateSync(sheetDataSetList,templateVO,0);
- //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
- Map<String,String> errorMap = new HashMap<>();
- String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
- CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
- List<String> needRowIndexList = new ArrayList<>();
- String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
- if(StringUtils.isNotBlank(filePath)) {
- codeImProtRusultVO.setFilePath(filePath);
- }
- if(StringUtils.isNotBlank(redisUUid)){
- codeImProtRusultVO.setRedisUuid(redisUUid);
- }
- return codeImProtRusultVO;
- }
-
-
- /***
- * 鎵归噺澶勭悊鐢宠鏁版嵁
- * @param orderDTO
- * @param templateVO
- * @param dataSet
- * @return
- */
- private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
- List<String> codeList=new ArrayList<>();
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
- engineService.checkSecValueOnOrder(ruleVO,orderDTO);
- List<SheetRowData> rowDataList = dataSet.getRowData();
-
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
- List<String> titleRowData = dataSet.getColName();
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
- getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
-
- //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
- List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
- && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
- ).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(unExistAttrVOs)){
- throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
- }
- List<ClientBusinessObject> cboList = new ArrayList<>();
- String fullPath = getFullPath(classifyFullInfo);
- excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
-
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
- //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
- batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
- selfRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
- });
- }
- if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- });
- }
- //鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,cboList);
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
- if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
- }
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
- String uuid=redisService.getUUIDEveryDay();
- Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
-
- if(errorMap.size()>0) {
- createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false);
- }
- boolean isCreateUUid=false;
- List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- //鐩镐技鏍¢獙
- Map<String,String>resembleMap=new HashMap<>();
- List<DataResembleVO> dataResembleVOS=new ArrayList<>();
- String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
- bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
- if(resembleMap.size()>0) {
- isCreateUUid=true;
- if(!CollectionUtils.isEmpty(dataResembleVOS)) {
- redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
- createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
- }
- }
- //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
- Map<String,String> newErrorMap=new HashMap<>();
- newErrorMap.putAll(resembleMap);
- newErrorMap.putAll(errorMap);
- needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !newErrorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
- isCreateUUid=true;
- }
- createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false);
- if(newErrorMap.size()>0) {
- createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
- }else {
- uuid="";
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !newErrorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(needSaveCboList)) {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- //鐢熸垚缂栫爜鐨勫唴瀹�
- codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(templateVO, needSaveCboList);
- }
- }
- if(!isCreateUUid){
- return uuid="";
- }
- return uuid;
- }
-
- /***
- * 瀛樺偍鍒嗙被瀵硅薄鍙婂叾鍒楀悕
- * @param uuid
- * @param templateVOList
- * @param dataSet
- * @param fieldIndexMap
- * @param iscContain
- */
- private void createRedisByCodeClassify(String uuid,CodeClassifyTemplateVO templateVOList,SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,boolean iscContain){
- List<ColumnVO> columnVOList = new ArrayList<>();
- List<String> outNameList = dataSet.getColName();
- fieldIndexMap.forEach((integer, s) -> {
- ColumnVO columnVOS = new ColumnVO();
- String field = fieldIndexMap.get(integer);
- String outName = outNameList.get(integer);
- columnVOS.setField(field);
- columnVOS.setTitle(outName);
- columnVOList.add(columnVOS);
- });
- CodeImportTemplateVO codeImportTemplateVO=new CodeImportTemplateVO();
- codeImportTemplateVO.setCodeClassifyTemplateVO(templateVOList);
- codeImportTemplateVO.setCloNamesList(columnVOList);
- List<CodeImportTemplateVO> codeImportTemplateVOs= new ArrayList<>();
- codeImportTemplateVOs.add(codeImportTemplateVO);
- redisService.setCacheList(uuid,codeImportTemplateVOs);
- redisService.expire(uuid,6000000);//redis杩囨湡鏃堕棿
- logger.info("");
- }
- private void createRedisDatas(String uuid,CodeClassifyTemplateVO templateVO,Map<String,ClientBusinessObject> rowIndexCbo, SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,Map<String,String> errorMap,boolean isok){
- List<SheetRowData> needsheetRowDataList =new ArrayList<>();
- if(errorMap.size()>0) {
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- needsheetRowDataList = dataSet.getRowData().stream().filter(cbo -> {
- String rowIndex=cbo.getRowIndex();
- return isok? !errorMap.containsKey(rowIndex):errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- }else{
- needsheetRowDataList= dataSet.getRowData();
- }
- Map<String/**涓枃鍚嶇О**/, SheetRowData/**鑻辨枃鍚嶇О**/> rowIdexDataMap = needsheetRowDataList.stream().collect(Collectors.toMap(s -> s.getRowIndex(), t -> t,(o1, o2)->o2));
- Map<String,CodeImprotDataVO> clsfDataMap=new HashMap<>();
- rowIndexCbo .forEach((rowIndex, cbo) -> {
- CodeImprotDataVO codeImprotDataVO = new CodeImprotDataVO();
- codeImprotDataVO.setTemplateOid(templateVO.getOid());
- List<Map<String, String>> dataList = new ArrayList<>();
- if(rowIdexDataMap.containsKey(rowIndex)){
- SheetRowData sheetRowData=rowIdexDataMap.get(rowIndex);
- Map<String, String> dataMap = new HashMap<>();
- Map<Integer, String> data = sheetRowData.getData();
- fieldIndexMap.forEach((integer, s) -> {
- String field = fieldIndexMap.get(integer);
- if (data.containsKey(integer)) {
- String vlues = data.get(integer);
- dataMap.put(field, vlues);
- }
- });
- dataMap.put("oid",cbo.getOid());
- dataList.add(dataMap);
- }
- if(clsfDataMap.containsKey(templateVO.getOid())){
- codeImprotDataVO=clsfDataMap.get(templateVO.getOid());
- dataList.addAll(codeImprotDataVO.getDatas());
- }
- codeImprotDataVO.setColNames(dataSet.getColName());
- codeImprotDataVO.setDatas(dataList);
- clsfDataMap.put(templateVO.getOid(),codeImprotDataVO);
- });
- if(!CollectionUtils.isEmpty(clsfDataMap)) {
- Collection codeImprotDataVOS=clsfDataMap.values();
- List<CodeImprotDataVO> codeImprotDataVOList=new ArrayList<>();
- codeImprotDataVOList.addAll(codeImprotDataVOS);
- redisService.setCacheList(uuid+"-"+templateVO.getOid(), codeImprotDataVOList);
- redisService.expire(uuid+"-"+templateVO.getOid(),6000000);//redis杩囨湡鏃堕棿
- }
- }
- /***
- * 鎵归噺澶勭悊鐢宠鏁版嵁
- * @param orderDTO
- * @param templateVO
- * @param dataSet
- * @return
- */
- @Override
- public List<String> batchImportCode(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
- List<String> codeList=new ArrayList<>();
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
- engineService.checkSecValueOnOrder(ruleVO,orderDTO);
- List<SheetRowData> rowDataList = dataSet.getRowData();
-
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
- List<String> titleRowData = dataSet.getColName();
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
- getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
-
- //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
- List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
- && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
- ).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(unExistAttrVOs)){
- throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
- }
- List<ClientBusinessObject> cboList = new ArrayList<>();
- String fullPath = getFullPath(classifyFullInfo);
- excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
-
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
- //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
- batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
- selfRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
- });
- }
- if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- });
- }
- //鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,cboList);
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
- if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
- }
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- if(!CollectionUtils.isEmpty(needSaveCboList)) {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- //鐢熸垚缂栫爜鐨勫唴瀹�
- codeList= productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(templateVO,needSaveCboList);
- }
- return codeList;
- }
- private LinkedList<CodeClassifyTemplateVO> checkSamesTemplate(List<String> titleRowData, List<SheetDataSet> sheetDataSetList,int shetNumber,Map<String/**璺緞**/, CodeClassifyVO> pathMap,Map<String,String>errorMap) throws Throwable {
- Map<String,String>pathOidMap =new HashMap<>();
- Map<String,String> templateIdRowIndex=new HashedMap();
- SheetDataSet dataSet= sheetDataSetList.get(shetNumber);
- LinkedHashMap<String,CodeClassifyTemplateVO> codeClassifyTemplateVOMap=new LinkedHashMap <String,CodeClassifyTemplateVO>();
- for (int i=0; i<titleRowData.size();i++){
- String title= titleRowData.get(i);
- if(title.equals("鍒嗙被璺緞")) {
- int finalI = i;
- dataSet.getRowData().stream().forEach(sheetRowData -> {
- String Path = sheetRowData.getData().get(finalI);
- String rowIndex=sheetRowData.getRowIndex();
- CodeClassifyTemplateVO newTemplateVO=new CodeClassifyTemplateVO();
- String templateOid="";
- if(pathOidMap.containsKey(Path)){
- templateOid= pathOidMap.get(Path) ;
- newTemplateVO=codeClassifyTemplateVOMap.get(templateOid);
- }else{
- if(pathMap.containsKey(Path)){
- CodeClassifyVO codeClassifyVO=pathMap.get(Path);
- newTemplateVO =engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- if(newTemplateVO!=null){
- templateOid=newTemplateVO.getOid();
- }else{
- errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫绘ā鏉�");
- }
- }else{
- errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫�");
- }
- }
- pathOidMap.put(Path, templateOid);
- codeClassifyTemplateVOMap.put(templateOid, newTemplateVO);
- templateIdRowIndex.put(templateOid, templateIdRowIndex.getOrDefault(templateOid, "") + "锛�" +rowIndex );
- });
- break;
- }
- }
- LinkedList<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new LinkedList<>();
- StringBuffer sb=new StringBuffer();
- codeClassifyTemplateVOMap.keySet().forEach(tempateOid->{
- String templateOidInExcel="";
- String tempateName="";
- CodeClassifyTemplateVO t= codeClassifyTemplateVOMap.get(tempateOid);
- codeClassifyTemplateVOList.add(t);
- if(!CollectionUtils.isEmpty(sheetDataSetList)
- && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
- List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
- templateOidInExcel=rowData.get(shetNumber).getData().get(0);
- tempateName=rowData.get(shetNumber).getData().get(2);
- //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
- }
- if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(tempateOid)){
- sb.append("妯℃澘銆�"+tempateName+"銆戜腑绗�"+templateIdRowIndex.get(tempateOid)+"琛屾暟鎹笉灞炰簬褰撳墠妯℃澘鐨勬暟鎹紝璇锋牳瀵�!");
- }
- });
- if(StringUtils.isNotBlank(sb)){
- throw new Throwable(sb.toString());
- }
- if(codeClassifyTemplateVOList.size()>1){
- String message="妯℃澘銆�"+dataSet.getSheetName()+"銆戞牴鎹垎绫昏矾寰勫垽鏂紝鍒嗙被瀛樺湪澶氫釜妯℃澘";
-
- throw new Throwable(message);
- }
- if(codeClassifyTemplateVOList.size()==0){
- String message="妯℃澘銆�"+dataSet.getSheetName()+"銆戞牴鎹暟鎹垎绫昏矾寰勫垽鏂紝鏈尮閰嶅埌瀵瑰簲妯℃澘";
- throw new Throwable(message);
- }
- return codeClassifyTemplateVOList ;
- }
- /**
- * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑
- * @param sheetDataSetList excel閲岀殑鍐呭
- * @param templateVO 妯℃澘鐨勪俊鎭�
- */
- private void checkTemplateSync(List<SheetDataSet> sheetDataSetList,CodeClassifyTemplateVO templateVO,int i){
- String templateOidInExcel = "";
- String templateName="";
- if(!CollectionUtils.isEmpty(sheetDataSetList)
- && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
- List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
- templateName=rowData.get(i).getData().get(2);
- templateOidInExcel=rowData.get(i).getData().get(0);
- //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
- }
- /* if(!CollectionUtils.isEmpty(sheetDataSetList)
- && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
- List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
- templateOidInExcel=rowData.get(i).getData().get(0);
- //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
- }*/
- if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(templateVO.getOid())){
- throw new VciBaseException("妯℃澘銆�"+templateName+"銆戜腑鐨勬暟鎹幏鍙栫殑妯$増淇℃伅涓庡綋鍓嶆ā鏉夸笉鍖归厤锛岃纭繚excel鏂囦欢閲屾湁銆愭ā鏉夸俊鎭�-璇峰嬁绉诲姩鎴栧垹闄ゃ�戠殑宸ヤ綔琛紝涓旂‘淇濇瘡娆″鍏ラ兘鏄厛涓嬭浇鐨勫鍏ユā鏉垮悗娣诲姞鐨勬暟鎹�");
- }
-
- }
-
- /***
- * 浠庨《灞傛壒閲忕敵璇峰鍏ユ柟娉�
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return
- */
- @Override
- public CodeImProtRusultVO batchTopImportCode(String codeClassifyOid, String classifyAttr, File file) {
- VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
- ReadExcelOption reo = new ReadExcelOption();
- reo.setReadAllSheet(true);
- List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
- if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
- ||sheetDataSetList.get(0).getRowData().size()<1){
- throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
- }
- if(sheetDataSetList.size()>LIMIT+1){
- throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
- }
- //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
- SheetDataSet dataSet = sheetDataSetList.get(0);
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
-
- List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
- Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
- pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
- List<String> titleRowData = dataSet.getColName();
- Map<String, String> errorMap = new ConcurrentHashMap<>();
- //棣栧厛灏嗘暟鎹互妯℃澘鐨勫舰寮忓垎寮�
- LinkedHashMap<String,List<CodeImprotDataVO>> codeclassifyDataMap=new LinkedHashMap<>();
- List<CodeImprotDataVO> codeClassifyDatas=new ArrayList<>();
- createExeclClassData(dataSet,pathMap,errorMap,codeClassifyDatas);
- //鏍规嵁妯℃澘灏嗘暟鎹暣鍚堝湪涓�璧凤紝鍘绘牎楠�
- Map<String/**妯℃澘oid**/, List<CodeImprotDataVO>/**鏁版嵁瀵硅薄**/> templateDatasMap =codeClassifyDatas.stream().collect(Collectors.toMap(CodeImprotDataVO::getTemplateOid,s->{
- List<CodeImprotDataVO> l=new ArrayList<>();
- l.add(s);
- return l;
- },(List<CodeImprotDataVO> s1,List<CodeImprotDataVO> s2)->{
- s1.addAll(s2);
- return s1;
- }));
- String uuid=redisService.getUUIDEveryDay();
- List<CodeImportTemplateVO> codeImportTemplateVOS=new ArrayList<>();
- //鎸夌収妯℃澘鍘绘暣鐞嗘暟鎹�
- templateDatasMap.keySet().stream().forEach(templateVOOid->{
- List<CodeImprotDataVO> codeImprotDataVOS= templateDatasMap.get(templateVOOid);
- CodeClassifyTemplateVO templateVO= templateServiceI.getObjectHasAttrByOid(templateVOOid);
-
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
-
- Map<String/**妯℃澘灞炴�у瓧娈祇id**/, String /**妯℃澘灞炴�у閮ㄥ悕绉�**/> fieldNameMap =attrVOS.stream().collect(Collectors.toMap(CodeClassifyTemplateAttrVO::getId,s->s.getName()));
-
- List<ClientBusinessObject> allCboList=new ArrayList<>();
- List<ColumnVO>columnVOList =new ArrayList();
- codeImprotDataVOS.stream().forEach(codeImprotDataVO -> {
- CodeImportTemplateVO codeImportTemplateVO=new CodeImportTemplateVO();
- codeImprotDataVO.getFields().stream().forEach(field->{
- ColumnVO columnVOS = new ColumnVO();
- String outName=fieldNameMap.get(field);
- columnVOS.setField(field);
- columnVOS.setTitle(outName);
- columnVOList.add(columnVOS);
-
- });
- codeImportTemplateVO.setCodeClassifyVO( codeImprotDataVO.getCodeClassifyVO());
- codeImportTemplateVO.setCodeClassifyTemplateVO( codeImprotDataVO.getCodeClassifyTemplateVO());
- List<String> colNames=codeImprotDataVO.getColNames();
- codeImportTemplateVO.setCloNamesList(columnVOList);
- codeImportTemplateVOS.add(codeImportTemplateVO);
- List<ClientBusinessObject> cboList=new ArrayList<>();
- excelToCbo(classifyFullInfo,codeImprotDataVO,cboList,true);
- allCboList.addAll(cboList);
-
- });
-
-
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
- //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
- batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap);
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
- selfRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
- });
- }
- if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- });
- }
- //鍒嗙被娉ㄥ叆
- // batchSwitchClassifyAttrOnOrder(attrVOS,allCboList,classifyFullInfo,false);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,allCboList);
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, allCboList,errorMap);
- //鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS, allCboList, errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,allCboList,errorMap);
-
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,allCboList,errorMap);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,allCboList);
-
-
- Map<String, ClientBusinessObject> rowIndexCboMap = allCboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
-
- if(errorMap.size()>0) {
- createRedisDatas(uuid + "-error",templateVO,codeImprotDataVOS, errorMap,false);
- }
- List<ClientBusinessObject> needSaveCboList = allCboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- //鐩镐技鏍¢獙
- Map<String,String>resembleMap=new HashMap<>();
- List<DataResembleVO> dataResembleVOS=new ArrayList<>();
- String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
- bathcResembleQuery(codeClassifyOid,templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
- if(resembleMap.size()>0) {
- if(!CollectionUtils.isEmpty(dataResembleVOS)) {
- redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
- createRedisDatas(uuid + "-resemble",templateVO, codeImprotDataVOS, resembleMap, false);
- }
- }
- //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
- Map<String,String> newErrorMap=new HashMap<>();
- newErrorMap.putAll(resembleMap);
- newErrorMap.putAll(errorMap);
- needSaveCboList = allCboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !newErrorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- createRedisDatas(uuid + "-ok",templateVO,codeImprotDataVOS, newErrorMap,true);
- });
- List<String> needRowIndexList=new ArrayList<>();
- CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
- if(errorMap.size()>0) {
- String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
- if (StringUtils.isNotBlank(filePath)) {
- codeImProtRusultVO.setFilePath(filePath);
- }
- }
- if(StringUtils.isNotBlank(uuid)){
- //灏嗘墍鏈夌殑鍒嗙被瀛樺叆缂撳瓨涔嬩腑
- codeImProtRusultVO.setRedisUuid(uuid);
- redisService.setCacheList(uuid + "-class",codeImportTemplateVOS);
- // redisService.expire(uuid + "-class",6000000);
- }
- return codeImProtRusultVO;
- }
-
- /***
- * 鏍规嵁涓嶅悓妯℃澘缁勭粐execl鏁版嵁
- * @param dataSet
- * @param pathMap
- * @param errorMap
- */
- private void createExeclClassData(SheetDataSet dataSet,Map<String/**璺緞**/, CodeClassifyVO> pathMap,Map<String,String>errorMap,List<CodeImprotDataVO> codeClassifyDatas){
-
- Map<String,CodeImprotDataVO> pathDatas=new HashMap<>();
- List<String> titleRowData= dataSet.getColName();
- List<SheetRowData> rowDataList= dataSet.getRowData();
- LinkedHashMap<String,CodeClassifyTemplateVO> codeClassifyTemplateVOMap=new LinkedHashMap <String,CodeClassifyTemplateVO>();
- for (int i=0;i<titleRowData.size();i++){
- String title= titleRowData.get(i);
- if(title.equals("鍒嗙被璺緞")) {
- int finalI = i;
- rowDataList.stream().forEach(sheetRowData -> {
- CodeImprotDataVO dataVO=new CodeImprotDataVO();
- String Path = sheetRowData.getData().get(finalI);
- String rowIndex=sheetRowData.getRowIndex();
- Map<Integer, String> execlData= sheetRowData.getData();
- CodeClassifyTemplateVO newTemplateVO=new CodeClassifyTemplateVO();
-
- if(StringUtils.isEmpty(Path)){
- Path="#current#";
- }
-
- if(pathMap.containsKey(Path)){
- CodeClassifyVO codeClassifyVO=pathMap.get(Path);
- if(codeClassifyTemplateVOMap.containsKey(Path)){
- newTemplateVO= codeClassifyTemplateVOMap.get(Path);
- }else{
- newTemplateVO =engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- if(newTemplateVO==null){
- errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫绘ā鏉�");
- }
- }
- if(pathMap.containsKey(Path)){
- dataVO=pathDatas.getOrDefault(Path,dataVO);
- }
- dataVO.setTemplateOid(newTemplateVO.getOid());
- dataVO.setCodeClassifyTemplateVO(newTemplateVO);
- dataVO.setCodeClassifyVO(codeClassifyVO);
- dataVO.setRowIndex(rowIndex);
- dataVO.setCodeClassifyOid(codeClassifyVO.getOid());//璁剧疆鍒嗙被oid
- dataVO.setCodeRuleOid(codeClassifyVO.getCoderuleoid());
- createExeclClassData(titleRowData,newTemplateVO,execlData,dataVO);
-
- pathDatas.put(Path,dataVO);
- codeClassifyTemplateVOMap.put(Path, newTemplateVO);
- }else{
- errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫�");
- }
- });
- break;
- }
- }
- List <CodeImprotDataVO> newCodeImprotDataVO= pathDatas.values().stream().collect(Collectors.toList());
- codeClassifyDatas.addAll(newCodeImprotDataVO);
- logger.info("222");
- }
-
- /**
- * 瀵煎叆鍘嗗彶鏁版嵁
- *
- * @param codeClassifyOid 鍒嗙被鐨勪富閿�
- * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
- * @param file excel鏂囦欢鐨勪俊鎭�
- * @return 鏈夐敊璇俊鎭殑excel
- */
- @Override
- public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) {
- VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
- ReadExcelOption reo = new ReadExcelOption();
- reo.setReadAllSheet(true);
- List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
- if (sheetDataSetList.size() > LIMIT + 1) {
- throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
- }
- Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
- //鐩镐技椤圭洰鏌ラ噸
- String uuid = redisService.getUUIDEveryDay();
- boolean isCreateUUid=false;
- boolean isExport=false;
- for(int i=0;i<sheetDataSetList.size()-1;i++) {
- if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
- || sheetDataSetList.get(i).getRowData().size() < 1) {
- continue;
- }
- //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
- //----閫昏緫鍐呭----
- //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О
- //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣
- //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯
- //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝
- //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛�
- // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶�
- // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級
- // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
- // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
- // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
-
- //鏌ヨ鍒嗙被鍜屾ā鏉�
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
-
- //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
- SheetDataSet dataSet = sheetDataSetList.get(i);
- List<SheetRowData> rowDataList = dataSet.getRowData();
-
- //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
- CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
- /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
- throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
- }***/
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
- List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
- Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
- List<String> titleRowData = dataSet.getColName();
- Map<String, String> errorMap = new ConcurrentHashMap<>();
- try {
- List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap);
- templateVO= templateVOList.get(0);
- }catch (Throwable e){
- throw new VciBaseException(e.getMessage());
- }
-
- List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
- String rowIndex = cbo.getRowIndex();
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- //checkTemplateSync(sheetDataSetList, templateVO,i);
- //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes();
- Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
-
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
- String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
- getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
- //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
- List<ClientBusinessObject> cboList = new ArrayList<>();
- String fullPath = getFullPath(classifyFullInfo);
- //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
- Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
- excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false);
-
-
- Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
- pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
-
- //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨�
- Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting()));
- List<String> repeatIdList = new ArrayList<>();
- idCountMap.forEach((id, count) -> {
- if (count > 1) {
- repeatIdList.add(id);
- }
- });
- if (!CollectionUtils.isEmpty(repeatIdList)) {
- cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).forEach(rowIndex -> {
- errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;");
- });
- }
- //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
- //妫�鏌ュ垎绫荤殑璺緞
- checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
-
- //妫�鏌ヨ鍒�
- Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
- List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
- checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
-
- //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙�
- if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) {
- cboList.stream().forEach(cbo -> {
- if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) {
- String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯");
- }
- });
- }
-
- //鍒ゆ柇蹇呰緭椤�
- batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
-
- //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪
- batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
-
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS, cboList);
-
- // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫��
- batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
-
- batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap);
- //6.澶勭悊鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true);
- //7.澶勭悊缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS, cboList);
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) {
- selfRepeatRowIndexList.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�");
- });
- }
- if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅");
- });
- }
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList, errorMap);
-
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap);
- if (CollectionUtils.isEmpty(ruleOidMap.values())) {
- throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯");
- }
- Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
- Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
- checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
- ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
- List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
- List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
-//鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
- if(!CollectionUtils.isEmpty(thisCbos)){
- List<String> existIds = new ArrayList<>();
- VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> {
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("coderuleoid", ruleOid);
- conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + ")");
- conditionMap.put(VciQueryWrapperForDO.LC_STATUS_FIELD, QueryOptionConstant.NOTIN + "('" + CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue() + "')");
- existIds.addAll(Optional.ofNullable(boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap, new PageHelper(-1), Arrays.stream(new String[]{"id"})
- .collect(Collectors.toList()))).orElseGet(() -> new ArrayList<>()).stream().map(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getAttributeValue("id");
- }
- return id;
- }).collect(Collectors.toList()));
- });
- List<String> existIdCbos = thisCbos.stream().filter(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getAttributeValue("id");
- }
- return existIds.contains(id);
- }).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(existIdCbos)) {
- thisCbos = thisCbos.stream().filter(s -> {
- String id = s.getId();
- if (StringUtils.isBlank(id)) {
- id = s.getAttributeValue("id");
- }
- return !existIdCbos.contains(id);
- }).collect(Collectors.toList());
- existIdCbos.stream().forEach(rowIndex -> {
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤");
- });
- }
- }
- });
-
- Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
- if (errorMap.size() > 0) {
- isExport=true;
- createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false);
- }
- createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO);
- List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- //鐩镐技鏍¢獙
- Map<String, String> resembleMap = new HashMap<>();
- List<DataResembleVO> dataResembleVOS = new ArrayList<>();
- String btmtypeid = classifyFullInfo.getTopClassifyVO().getBtmtypeid();
- bathcResembleQuery(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS);
- if (resembleMap.size() > 0) {
- if (!CollectionUtils.isEmpty(dataResembleVOS)) {
- redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
- createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
- }
- }
- //鐢熸垚class缂撳瓨
- Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t.getAttributeValue(CODE_CLASSIFY_OID_FIELD)));
- createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true);
- //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡
- //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
- Map<String, String> newErrorMap = new HashMap<>();
- newErrorMap.putAll(resembleMap);
- newErrorMap.putAll(errorMap);
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !newErrorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
- isCreateUUid=true;
- }
- List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toList());
- if (isExport||newErrorMap.size() > 0) {
- createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true);
- } else {
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
- CodeClassifyTemplateVO finalTemplateVO = templateVO;
- ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
- List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
- if (!CollectionUtils.isEmpty(thisCbos)) {
- try {
- productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, thisCbos);
- } catch (Throwable e) {
- logger.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
- thisCbos.stream().forEach(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
- });
- }
- }
- });
- engineService.batchSaveSelectChar(templateVO, cboList);
- }
- }
- String excelFileName="";
- if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
- excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
- WriteExcelOption eo = new WriteExcelOption();
- shetNameMap.forEach((shetName, errorDataList) -> {
- eo.addSheetDataList(shetName, errorDataList);
- });
- try {
- new File(excelFileName).createNewFile();
- } catch (IOException e) {
- throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
- }
- ExcelUtil.writeDataToFile(excelFileName, eo);
- }
- CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
- if(StringUtils.isNotBlank(excelFileName)) {
- codeImProtRusultVO.setFilePath(excelFileName);
- codeImProtRusultVO.setFileOid("");
- }
- if(isCreateUUid){
- codeImProtRusultVO.setRedisUuid(uuid);
- }
-
- return codeImProtRusultVO;
- }
- private void createWriteExcelData(Collection<SheetRowData> rowDataList, Map<String,String> errorMap,
- List<String> needRowIndexList, List<String> titleRowData, Map<String,List<WriteExcelData>> shetNameMap, CodeClassifyTemplateVO templateVO){
- List<WriteExcelData> errorDataList=new ArrayList<>();
- Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
- errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
- for (int i = 0; i < titleRowData.size(); i++) {
- //閿欒淇℃伅鍦ㄦ渶鍚�
- errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
- }
- Integer[] newRowIndex = new Integer[]{1};
- errorMap.forEach((index,error)->{
- //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
- SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
- if(rowData!=null){
- errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
- rowData.getData().forEach((colIndex,value)->{
- errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
- });
- newRowIndex[0]++;
- }
- });
-
- shetNameMap.put(templateVO.getName(),errorDataList);
- }
-
- /**
- * 妫�鏌ョ爜娈电殑闀垮害鏄惁绗﹀悎瑕佹眰
- * @param cboList 鏁版嵁
- * @param classifyVOMap 鍒嗙被鏄犲皠
- * @param ruleVOMap 瑙勫垯瀵硅薄
- * @param ruleOidMap 鍒嗙被鍖呭惈瑙勫垯
- * @param errorMap 閿欒鐨勪俊鎭�
- * @param ruleRowIndexMap 瑙勫垯鍖呭惈鐨勮鍙凤紝key鏄鍒欎富閿紝value鏄寘鍚殑鍏ㄩ儴琛屽彿
- */
- private void checkSecLengthInHistory(List<ClientBusinessObject> cboList,Map<String,CodeClassifyVO> classifyVOMap,Map<String,CodeRuleVO> ruleVOMap,
- Map<String/**鍒嗙被涓婚敭**/,String/**瑙勫垯涓婚敭**/> ruleOidMap,Map<String,String> errorMap,Map<String,List<String>> ruleRowIndexMap){
-
- cboList.stream().forEach(cbo-> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- String secLength = cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD);
- //鎵惧垎绫�
- String classifyOid = cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD);
- CodeClassifyVO classifyVO = classifyVOMap.get(classifyOid);
- if (classifyVO != null) {
- //2#2#4#1杩欐牱鐨勬柟寮�
- CodeRuleVO ruleVO = ruleVOMap.getOrDefault(ruleOidMap.get(classifyVO.getOid()), null);
- if(ruleVO!=null){
- String[] secValues = secLength.split("#");
- //鎬婚暱搴﹀拰缂栫爜鐨勯暱搴�
- String code = cbo.getAttributeValue(CODE_FIELD);
- if(code.length() != Arrays.stream(secValues).mapToInt(s->VciBaseUtil.getInt(s)).sum()){
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
- }else if(secValues.length != ruleVO.getSecVOList().size()){
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
- } else {
- //姣忎竴涓暱搴﹂兘涓嶈兘瓒呰繃鐮佹鐨�
- boolean fined = false;
- for (int j = 0; j < ruleVO.getSecVOList().size(); j++) {
- CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j);
- String length= secValues[j];
- if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>VciBaseUtil.getInt(secVO.getCodeSecLength())){
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
- fined = true;
- break;
- }
- }
- /**for (int i = 0; i < secValues.length; i++) {
- for (int j = 0; j < ruleVO.getSecVOList().size(); j++) {
- CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j);
- if (VciBaseUtil.getInt(secValues[i]) > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
- fined = true;
- break;
- }
- }
- if(fined){
- break;
- }
- }***/
- if(!fined){
- //鏆傛椂涓嶅彇娴佹按鐨勫唴瀹癸紝鍥犱负璋冪敤produceCode鐨勬椂鍊欏幓澶勭悊
- List<String> rowIndexList = ruleRowIndexMap.getOrDefault(ruleVO.getOid(), new ArrayList<>());
- rowIndexList.add(rowIndex);
- ruleRowIndexMap.put(ruleVO.getOid(),rowIndexList);
- }
- }
- }else{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍒嗙被娌℃湁璁剧疆缂栫爜瑙勫垯" );
- }
- }
- });
- }
-
- /**
- * excel杞崲涓篶bo鐨勫璞�
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param fieldIndexMap 瀛楁鐨勪綅缃�
- * @param rowDataList excel閲岀殑琛屾暟鎹�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param cboList 鏁版嵁鐨勫垪琛�
- * @param fullPath 鍏ㄨ矾寰�
- * @param newCode 鏄惁涓烘壒閲忕敵璇�
- */
- private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,
- CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,
- String fullPath,boolean newCode){
- rowDataList.stream().forEach(rowData -> {
- ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- rowData.getData().forEach((index,value)->{
- String field = fieldIndexMap.get(index);
- if(StringUtils.isBlank(field)){
- throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
- }
- try {
- cbo.setAttributeValueWithNoCheck(field,value);
- if(WebUtil.isDefaultField(field)){
- WebUtil.setValueToField(field, cbo, value);
- }
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
- }
- });
- try {
- if(newCode){
- cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
- //cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
- if(secret == 0 || !secretService.checkDataSecret(secret) ){
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
- }
- }else{
- //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
- //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
- }
- cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
- cbo.setAttributeValue(IMPORT_ROW_INDEX,rowData.getRowIndex());
- }catch (Throwable e){
- logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
- }
- cboList.add(cbo);
- });
-
- }
-
- /**
- * excel杞崲涓篶bo鐨勫璞�
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param fieldIndexMap 瀛楁鐨勪綅缃�
- * @param rowDataList excel閲岀殑琛屾暟鎹�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param cboList 鏁版嵁鐨勫垪琛�
- * @param fullPath 鍏ㄨ矾寰�
- * @param operation 鎿嶄綔绫诲瀷
- * @param errorMap 閿欒淇℃伅璁板綍
- */
- private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,List<String> titleRowData,Map<Integer,String> fieldIndexMap,List<RowDatas> rowDataList,
- CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,
- String fullPath,boolean isProcess,String operation,Map<String,String> errorMap,Map<String,String> codeOidToSystemOidMap){
- rowDataList.stream().forEach(rowData -> {
- String oid=rowData.getOid();
- String rowNumber=rowData.getRowIndex();
- ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- rowData.getData().forEach((index,value)->{
- String field = fieldIndexMap.get(index);
- if(StringUtils.isBlank(field)){
- errorMap.put(rowNumber,"灞炴�э細銆�" +titleRowData.get(index)+ "銆戝湪绯荤粺涓笉瀛樺湪");
- }
- try {
- cbo.setAttributeValueWithNoCheck(field,value);
- if(WebUtil.isDefaultField(field)){
- WebUtil.setValueToField(field, cbo, value);
- }
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
- errorMap.put(rowNumber,"灞炴�э細銆�" +titleRowData.get(index)+ "銆戝湪绯荤粺涓笉瀛樺湪");
- }
- });
- try {
- if(operation.equals("create")){
- logger.info("鍒嗙被瀵硅薄锛�"+classifyFullInfo.getCurrentClassifyVO());
- logger.info("codeClassoid:"+classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
- int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
- if(secret == 0 || !secretService.checkDataSecret(secret) ){
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
- }
- if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
- cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.AUDITING.getValue())) {//瀹℃壒涓�
- cbo.setLcStatus(CodeDefaultLC.AUDITING.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
- cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
- }else{
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());//鍙戝竷
- }
- /** if(!isProcess){
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
- }else {
- if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
- cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }else {//鍙戝竷
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
- }
- }***/
- cbo.setCreator(rowData.getCreator());
- cbo.setLastModifier(rowData.getEditor()==null?"":rowData.getEditor());
- }else if(operation.equals("update")){
- //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
- //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
- if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
- cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.RELEASED.getValue())){//鍙戝竷
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.AUDITING.getValue())) {//瀹℃壒涓�
- cbo.setLcStatus(CodeDefaultLC.AUDITING.getValue());
- }else if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
- cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
- }
- cbo.setLastModifier(rowData.getEditor() == null ? "" : rowData.getEditor());//淇敼鑰�
- }else if(operation.equals("delete")){
- if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
- cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
- }else{
- cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());//鍋滅敤
- }
- }
- cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
- cbo.setAttributeValue(IMPORT_ROW_INDEX,rowData.getRowIndex());
- }catch (Throwable e){
- logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
- errorMap.put(rowNumber,"璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�"+e.getMessage());
- }finally {
- codeOidToSystemOidMap.put(cbo.getOid(),oid);
- }
- cboList.add(cbo);
- });
-
- }
-
- /**
- * 妫�鏌ュ垎绫荤殑璺緞鏄惁瀛樺湪
- * @param cboList 涓氬姟鏁版嵁
- * @param errorMap 閿欒淇℃伅
- * @param pathMap 璺緞鍜屽垎绫荤殑鏄犲皠
- */
- private void checkClassifyPathInHistory(List<ClientBusinessObject> cboList,
- Map<String,String> errorMap, Map<String/**璺緞**/,CodeClassifyVO> pathMap,
- Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap) {
- cboList.parallelStream().forEach(cbo -> {
- String classifyPath = cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD);
- //濡傛灉path涓虹┖锛屽垯琛ㄧず鏄鍏ュ綋鍓嶅垎绫�
- if(StringUtils.isBlank(classifyPath)){
- classifyPath = "#current#";
- }
- if ( !pathMap.containsKey(classifyPath)) {
- String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(row_index,errorMap.getOrDefault(row_index,"") + ";鍒嗙被璺緞涓嶅瓨鍦�");
- } else {
- //杞竴涓嬪垎绫荤殑涓婚敭
- try {
- String classifyOid = pathMap.get(classifyPath).getOid();
- cbo.setAttributeValueWithNoCheck(CODE_CLASSIFY_OID_FIELD, classifyOid);
- cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(classifyOid,classifyPath));
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑閿欒", e);
- }
- }
- });
- }
-
- /**
- * 妫�鏌ュ垎绫讳互鍙婂瓙鍒嗙被鏄惁閮芥湁缂栫爜瑙勫垯
- * @param classifyVOMap 鍒嗙被鐨勬樉绀哄璞℃槧灏�
- * @param ruleOidMap 瑙勫垯鐨勪富閿槧灏�
- * @param unExistRuleClassifyOidList 涓嶅瓨鍦ㄧ紪鐮佽鍒欑殑鍒嗙被鐨勪富閿�
- */
- private void checkRuleOidInHistory( Map<String/**涓婚敭**/,CodeClassifyVO> classifyVOMap, Map<String/**鍒嗙被涓婚敭**/,String/**瑙勫垯涓婚敭**/> ruleOidMap,
- List<String> unExistRuleClassifyOidList ){
- if(!CollectionUtils.isEmpty(classifyVOMap)){
- classifyVOMap.values().parallelStream().forEach(classifyVO->{
- if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
- ruleOidMap.put(classifyVO.getOid(),classifyVO.getCoderuleoid());
- }else{
- //閫掑綊鎵句笂绾�
- List<String> ruleOidList = new ArrayList<>();
- recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
- if(!CollectionUtils.isEmpty(ruleOidList)){
- ruleOidMap.put(classifyVO.getOid(),ruleOidList.get(0));
- }else{
- unExistRuleClassifyOidList.add(classifyVO.getOid());
- }
- }
- });
- }
- logger.info(";;;;");
- }
- /**
- * 鑾峰彇瀛愬垎绫荤殑璺緞
- * @param classifyFullInfo 鍒嗙被鍏ㄩ儴淇℃伅
- * @param fullPath 鍒嗙被鐨勫叏璺緞
- * @return 瀛愬垎绫荤殑璺緞锛宬ey鏄垎绫荤殑涓婚敭
- */
- private Map<String/**鍒嗙被鐨勪富閿�**/,String/**鍒嗙被璺緞**/> getChildClassifyPathMap(CodeClassifyFullInfoBO classifyFullInfo,String fullPath){
- List<CodeClassifyVO> childPathVOs = classifyService.listChildrenClassify(classifyFullInfo.getCurrentClassifyVO().getOid(), true, VciQueryWrapperForDO.OID_FIELD, true);
- Map<String/**鍒嗙被鐨勪富閿�**/,String/**鍒嗙被鐨勪富閿�**/> childOidPathMap = new ConcurrentHashMap<>();
- if(!CollectionUtils.isEmpty(childPathVOs)){
- childPathVOs.parallelStream().forEach(childPath->{
- // String thisClassifyPath = fullPath + "##" + childPath.getPath().replace("#" + classifyFullInfo.getCurrentClassifyVO().getOid() + "#","").replace("#","##");
- List<String> list=Arrays.asList(childPath.getPath().split("#"));
- List<String> newPahtList= list.stream().sorted(Comparator.comparing(s -> s,Comparator.reverseOrder())).collect(Collectors.toList());
- String thisClassifyPath=StringUtils.join(newPahtList,"##")+fullPath;
- childOidPathMap.put(childPath.getOid(),thisClassifyPath);
- });
- }
- return childOidPathMap;
- }
-
- /**
- * 鑾峰彇鍒嗙被鐨勫叏璺緞
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @return 鍏ㄨ矾寰�
- */
- private String getFullPath(CodeClassifyFullInfoBO classifyFullInfo){
- String fullPath = "";
- if(!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())){
- fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())))
- .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
- }else{
- fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
- }
- return fullPath;
- }
-
- /***
- * @param titleRowData
- * @param newTemplateVO
- * @param execlData
- * @param codeImprotDataVO
- */
- private void createExeclClassData(List<String> titleRowData, CodeClassifyTemplateVO newTemplateVO, Map<Integer, String> execlData, CodeImprotDataVO codeImprotDataVO){
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = newTemplateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
- List<String> fields=new ArrayList<>();
- Map<String,String> filedValueMap=new HashMap<>();
- List<String> colNames=new ArrayList<>();
- for (int i = 0; i < titleRowData.size(); i++) {
- String title = titleRowData.get(i);
- title=title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,"");
- String id = attrNameIdMap.getOrDefault(title,"");
- if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){
- id = CODE_CLASSIFY_OID_FIELD;
- }
- if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){
- id = CODE_SEC_LENGTH_FIELD;
- }
- if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
- id = CODE_FIELD;
- }
- if(StringUtils.isNotBlank(id)){
- // fieldIndexMap.put(i,id);id
- fields.add(id);
- colNames.add(title);
- String value= StringUtils.isNotBlank(execlData.get(i))?execlData.get(i):"";
- filedValueMap.put(id,value);
-
- }
- }
- filedValueMap.put(IMPORT_ROW_INDEX,codeImprotDataVO.getRowIndex());
- codeImprotDataVO.setFields(fields);
- codeImprotDataVO.setColNames(colNames);
- codeImprotDataVO.getDatas().add(filedValueMap);
- }
-
- /**
- * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
- * @param titleRowData 鏍囬鐨勫唴瀹�
- * @param attrNameIdMap 妯℃澘涓睘鎬у悕绉板拰鑻辨枃鐨勬槧灏�
- * @param fieldIndexMap 浣嶇疆鍜岃嫳鏂囧瓧娈电殑鏄犲皠
- */
- private void getFieldIndexMap(List<String> titleRowData,Map<String/**鍚嶇О**/,String/**瀛楁鍚�**/> attrNameIdMap,Map<Integer/**浣嶇疆**/,String/**鑻辨枃鍚嶅瓧**/> fieldIndexMap){
- for (int i = 0; i < titleRowData.size(); i++) {
- String title = titleRowData.get(i);
- String id = attrNameIdMap.getOrDefault(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,""),"");
- if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){
- id = CODE_CLASSIFY_OID_FIELD;
- }
- if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){
- id = CODE_SEC_LENGTH_FIELD;
- }
- if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
- id = CODE_FIELD;
- }
- if(StringUtils.isNotBlank(id)){
- fieldIndexMap.put(i,id);
- }
- }
- }
-
-
- /**
- * 閫掑綊鎵剧紪鐮佽鍒�
- * @param classifyVOMap 鍒嗙被鐨勬樉绀哄璞℃槧灏�
- * @param classifyOid 鍒嗙被鐨勪富閿�
- * @param ruleOidList 瑙勫垯鐨勪富閿甽ist
- */
- private void recursionRule(Map<String, CodeClassifyVO> classifyVOMap,String classifyOid,List<String> ruleOidList){
- if(classifyVOMap.containsKey(classifyOid)){
- CodeClassifyVO classifyVO = classifyVOMap.get(classifyOid);
- if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
- ruleOidList.add(classifyVO.getCoderuleoid());
- return;
- }else{
- recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
- }
- }else{
- Map<String, CodeClassifyVO> parentClassifyVOMap=new HashMap<>();
- CodeClassifyVO codeClassifyVO= this.classifyService.getObjectByOid(classifyOid);
- parentClassifyVOMap.put(codeClassifyVO.getOid(),codeClassifyVO);
- recursionRule(parentClassifyVOMap,codeClassifyVO.getOid(),ruleOidList);
- }
- }
-
-
- /**
- * 閿欒淇℃伅杩斿洖excel
- * @param rowDataList 鎵�鏈夌殑瀵煎叆鏁版嵁
- * @param errorMap 閿欒鐨勪俊鎭�
- * @param needRowIndexList 闇�瑕佸啓鍏ョ殑鏁版嵁鐨勮鍙�
- * @param titleRowData 鏍囬琛�
- *
- * @return 閿欒鐨別xcel鏂囦欢锛屾病鏈夐敊璇細杩斿洖绌�
- */
- private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
- Map<String,String> errorMap,
- List<String> needRowIndexList,List<String> titleRowData){
- if(CollectionUtils.isEmpty(errorMap)){
- return "";
- }
- Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
- List<WriteExcelData> errorDataList = new ArrayList<>();
- errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
- for (int i = 0; i < titleRowData.size(); i++) {
- //閿欒淇℃伅鍦ㄦ渶鍚�
- errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
- }
- Integer[] newRowIndex = new Integer[]{1};
- errorMap.forEach((index,error)->{
- //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
- SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
- if(rowData!=null){
- errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
- rowData.getData().forEach((colIndex,value)->{
- errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
- });
- newRowIndex[0]++;
- }
- });
- String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
- WriteExcelOption eo = new WriteExcelOption(errorDataList);
- try {
- new File(excelFileName).createNewFile();
- } catch (IOException e) {
- throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
- }
- ExcelUtil.writeDataToFile(excelFileName,eo);
- return excelFileName;
- }
-
- /**
- * 鑾峰彇灞炴�у湪excel涓殑琛屾暟
- * @param fieldIndexIdMap 鍒楀彿-瀛楁鏄犲皠
- * @param attrId 灞炴�х殑缂栧彿
- * @return 鍒楀彿
- */
- private Integer getIndexInRowData(Map<Integer,String> fieldIndexIdMap,String attrId){
- return fieldIndexIdMap.keySet().stream().filter(
- index -> attrId.equalsIgnoreCase(fieldIndexIdMap.get(index))).findFirst().orElseGet(()->0);
- }
-
- /**
- * 澶勭悊鏋氫妇鐨勬樉绀哄璞�
- * @param attrVOS 妯℃澘灞炴��
- * @param dataList excel鐨勬暟鎹唴瀹�
- * @param errorMap 閿欒淇℃伅鐨勬槧灏�
- */
- private void batchSwitchEnumAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
- Map<String,String> errorMap ) {
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
- s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid()))
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- dataList.stream().forEach(cbo -> {
- String text = cbo.getAttributeValue(attrId);
- if(StringUtils.isNotBlank(text)){
- List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
- boolean fined = false;
- for (int i = 0; i < valueList.size(); i++) {
- KeyValue keyValue = valueList.get(i);
- //if(keyValue.getValue().equalsIgnoreCase(text)){
- if(keyValue.getValue().equalsIgnoreCase(text)||keyValue.getKey().equalsIgnoreCase(text)){
- try {
- cbo.setAttributeValue(attrId, keyValue.getKey());
- }catch (Throwable e){
- logger.error("璁剧疆灞炴�у嚭閿�");
- }
- fined = true;
- break;
- }
- }
- if(!fined){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�");
- }
- }
- });
- });
- }
- }
-
- /**
- * 杞Щboolean鍨嬬殑灞炴��
- * @param attrVOS 灞炴�х殑瀵硅薄
- * @param dataList 鏁版嵁
- */
- private void reSwitchBooleanAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList){
- Map<String, CodeClassifyTemplateAttrVO> booleanAttrMap = attrVOS.stream().filter(
- s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributedatatype())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(booleanAttrMap)) {
- booleanAttrMap.forEach((attrId, attrVO) -> {
- dataList.stream().forEach(cbo -> {
- String text = cbo.getAttributeValue(attrId);
- try {
- if (BooleanEnum.TRUE.getValue().equalsIgnoreCase(text) || "鏄�".equalsIgnoreCase(text)) {
- cbo.setAttributeValue(attrId, BooleanEnum.TRUE.getValue());
- } else {
- cbo.setAttributeValue(attrId, BooleanEnum.FASLE.getValue());
- }
- }catch (Throwable e){
-
- }
- });
- });
- }
- }
-
- /**
- * 杞崲鍙傜収鐨勫��
- * @param attrVOS 灞炴�х殑鏄剧ず瀵硅薄
- * @param dataList 鏁版嵁鍒楄〃
- * @param errorMap 閿欒鐨勪俊鎭�
- */
- private void batchSwitchReferAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,Map<String,String> errorMap){
- Map<String, CodeClassifyTemplateAttrVO> referAttrVOMap = attrVOS.stream().filter(
- s -> (StringUtils.isNotBlank(s.getReferbtmid()) || StringUtils.isNotBlank(s.getReferConfig()))
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if(!CollectionUtils.isEmpty(referAttrVOMap)){
- Map<String/**琛ㄦ牸鍜屽�肩殑灞炴��**/,Map<String/**鏄剧ず灞炴�х殑鍊�**/,List<String>/**琛ㄦ牸閲岀殑鍊�**/>> linkValueMap = new HashMap<>();
- referAttrVOMap.forEach((attrId,attrVO)->{
- dataList.stream().forEach(cbo -> {
- String text = cbo.getAttributeValue(attrId);
- if(StringUtils.isNotBlank(text)){
- UIFormReferVO referVO = getReferVO(attrVO);
- String valueField = getValueField(referVO);
- String showText = getTextField(referVO);
- String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
- Map<String, List<String>> showTextMap = linkValueMap.getOrDefault(tableAndAttr, new HashMap<>());
- List<String> textList = showTextMap.getOrDefault(showText, new ArrayList<>());
- if(!textList.contains(text)) {
- textList.add(text);
- }
- showTextMap.put(showText,textList);
- linkValueMap.put(tableAndAttr,showTextMap);
- }
- });
- });
- if(!CollectionUtils.isEmpty(linkValueMap)){
- //闇�瑕侀�愪釜琛ㄧ殑鍊煎瓧娈碉紝閫愪釜鏌ヨ
- Map<String/**琛ㄦ牸鍜屽�煎睘鎬�**/,Map<String/**鏄剧ず灞炴��**/, Map<String/**鍊�**/,String/**鏄剧ず鐨勫��**/>>> linkCboMap = new HashMap<>();
- linkValueMap.forEach((tableAndAttr,showValueMap)->{
- String[] split = tableAndAttr.split("#");
- String table = split[0];
- String valueField = split[1].toLowerCase(Locale.ROOT);
- Map<String,Map<String,String>> dataMap = new HashMap<>();
- showValueMap.forEach((showText,valueList)->{
- Map<String,String> valueOidTextMap = new HashMap<>();
- List<List<String>> valueCollections = VciBaseUtil.switchListForOracleIn(valueList);
- String sql = "select " + valueField + "," + showText.toLowerCase(Locale.ROOT) +" from " + table + " where " + showText + " in (%s)";
- valueCollections.stream().forEach(values->{
- List<ClientBusinessObject> cbos = boService.queryByOnlySql(String.format(sql, VciBaseUtil.toInSql(values.toArray(new String[0]))));
- if(!CollectionUtils.isEmpty(cbos)){
- valueOidTextMap.putAll(cbos.stream().collect(Collectors.toMap(s->s.getAttributeValue(valueField),t->t.getAttributeValue(showText))));
- }
- });
- dataMap.put(showText,valueOidTextMap);
- });
- linkCboMap.put(tableAndAttr,dataMap);
- });
- referAttrVOMap.forEach((attrId,attrVO)->{
- dataList.stream().forEach(cbo -> {
- String text = cbo.getAttributeValue(attrId);
- if (StringUtils.isNotBlank(text)) {
- UIFormReferVO referVO = getReferVO(attrVO);
- String valueField = getValueField(referVO);
- String showText = getTextField(referVO);
- String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
- if(!linkCboMap.containsKey(tableAndAttr)){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
-
- }else{
- Map<String, Map<String, String>> dataMap = linkCboMap.get(tableAndAttr);
- if(!dataMap.containsKey(showText)){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
- }else{
- Map<String, String> data = dataMap.get(showText);
- final boolean[] fined = {false};
- data.forEach((key,value)->{
- if(value.equalsIgnoreCase(text)){
- fined[0] = true;
- try {
- cbo.setAttributeValue(attrId, key);
- }catch (Throwable e){
-
- }
- }
- });
- if(!fined[0]){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
- }
- }
- }
- }
- });
- });
- }
- }
-
- }
-
- /**
- * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
- * @param attrVO 灞炴�х殑淇℃伅
- * @return 鍙傜収鐨勫唴瀹�
- */
- private UIFormReferVO getReferVO(CodeClassifyTemplateAttrVO attrVO){
- UIFormReferVO referVO = null;
- if(StringUtils.isNotBlank(attrVO.getReferConfig())){
- referVO = JSONObject.parseObject(attrVO.getReferConfig(),UIFormReferVO.class);
- }else{
- referVO = new UIFormReferVO();
- referVO.setReferType(attrVO.getReferbtmid());
- referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
- referVO.setTextField("name");
- }
- return referVO;
- }
-
- /**
- * 鑾峰彇鍙傜収涓殑鍊肩殑瀛楁
- * @param referVO 鍙傜収鐨勫璞�
- * @return 榛樿涓篛id锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
- */
- private String getValueField(UIFormReferVO referVO){
- String showText = referVO.getValueField();
- if(StringUtils.isBlank(showText)){
- return "oid";
- }
- if(showText.contains(",")){
- //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塷id
- List<String> strings = VciBaseUtil.str2List(showText);
- if(strings.contains("oid")){
- showText = "oid";
- }else{
- showText = strings.get(0);
- }
- }
- return showText;
- }
-
- /**
- * 鑾峰彇鍙傜収涓殑鏄剧ず鍐呭鐨勫瓧娈�
- * @param referVO 鍙傜収鐨勫璞�
- * @return 榛樿涓簄ame锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
- */
- private String getTextField(UIFormReferVO referVO){
- String showText = referVO.getTextField();
- if(StringUtils.isBlank(showText)){
- return "name";
- }
- if(showText.contains(",")){
- //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塶ame
- List<String> strings = VciBaseUtil.str2List(showText);
- if(strings.contains("name")){
- showText = "name";
- }else{
- showText = strings.get(0);
- }
- }
- return showText;
- }
-
-
-
- /**
- * 澶勭悊鍒嗙被娉ㄥ叆
- * @param attrVOS 妯℃澘灞炴��
- * @param dataList excel鐨勬暟鎹唴瀹�
- * @param classifyFullInfo 鍒嗙被鐨勫叏璺緞
- */
- private void batchSwitchClassifyAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
- CodeClassifyFullInfoBO classifyFullInfo,boolean isImPort) {
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
- s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- Map<String,CodeClassifyFullInfoBO> classifyFullInfoMap=new HashMap<>();
- classifyFullInfoMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),classifyFullInfo);
- if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dataList.stream().forEach(cbo -> {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
- //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
- CodeClassifyVO classifyVO = null;
- if(!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
- //鎸囧畾浜嗗眰绾х殑
- //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
- if(isImPort){
- if(!classifyFullInfoMap.containsKey(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD))) {
- CodeClassifyFullInfoBO currentClassifyFullInfo = classifyService.getClassifyFullInfo(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD));
- classifyFullInfoMap.put(currentClassifyFullInfo.getCurrentClassifyVO().getOid(), currentClassifyFullInfo);
- }
- }
- CodeClassifyFullInfoBO newClassifyFullInfo= classifyFullInfoMap.get(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD));
- List<CodeClassifyVO> classifyVOS = newClassifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
- int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
- if (classifyVOS.size()>=level && level > 0 ) {
- classifyVO = classifyVOS.get(level-1);
- }
- }else{
- //褰撳墠鐨勫垎绫�
- classifyVO = classifyFullInfo.getCurrentClassifyVO();
- }
- try {
- if (classifyVO == null) {
- //璇存槑灞傜骇鏈夎
- cbo.setAttributeValue(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
- } else {
- Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
- String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
- cbo.setAttributeValue(attrId, value);
- }
- } catch (Throwable e) {
- logger.error("璁剧疆灞炴�ч敊璇�", e);
- }
- });
- });
- }
- }
-
- /**
- * 澶勭悊缁勫悎瑙勫垯
- * @param attrVOS 妯℃澘灞炴��
- * @param dataList excel鐨勬暟鎹唴瀹�
- */
- private void batchSwitchComponentAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList) {
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- dataList.stream().forEach(cbo -> {
- //浠巈xcel涓婃妸灞炴�ц浆鎹负map
- Map<String,String> thisRowDataMap = new HashMap<>();
- WebUtil.copyValueToMapFromCbos(cbo,thisRowDataMap);
- //缁勫悎鍐呭
- String value = formulaService.getValueByFormula(thisRowDataMap,attrVO.getComponentrule());
- if(value == null){
- value = "";
- }
- try {
- cbo.setAttributeValue(attrId, value);
- }catch (Throwable e){
- logger.error("璁剧疆灞炴�х殑閿欒",e);
- }
- });
- });
- }
- }
-
- /**
- * 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮�
- * @param attrVOS 妯℃澘灞炴��
- * @param cboList 鏁版嵁鐨勫垪琛�
- * @param errorMap 閿欒鐨勪俊鎭�
- */
- private void batchSwitchDateAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap =attrVOS.stream().filter(s ->
- StringUtils.isNotBlank(s.getCodedateformat()) && VciBaseUtil.getBoolean(s.getFormdisplayflag()) && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- cboList.stream().forEach(cbo -> {
- String value = cbo.getAttributeValue(attrId);
- if (value == null) {
- value = "";
- }
- if (StringUtils.isNotBlank(value)) {
- boolean formated = false;
- if(StringUtils.isNotBlank(attrVO.getCodedateformat())){
- try {
- Date date = VciDateUtil.str2Date(value, attrVO.getCodedateformat());
- if(date!=null){
- cbo.setAttributeValue(attrId,value);
- formated = true;
- }
- } catch (Exception e) {
- //璇存槑涓嶆槸杩欎釜鏍煎紡
- }
- }
- if(!formated) {
- try {
- DateConverter dateConverter = new DateConverter();
- dateConverter.setAsText(value);
- value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
- cbo.setAttributeValue(attrId,value);
- }catch (Throwable e){
- //杞崲涓嶄簡
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鏃堕棿鏍煎紡涓嶆纭�" );
- }
- }
- }
- });
- });
- }
- }
-
- /**
- * 鏍¢獙鏄惁鏋氫妇鐨勫彇鍊艰寖鍥�
- * @param attrVOS 妯℃澘灞炴��
- * @param dataList 鏁版嵁鐨勫垪琛�
- * @return 涓嶇鍚堟灇涓惧彇鍊艰繑鍥炵殑琛屾暟
- */
- private Set<String> batchCheckEnumOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS, List<ClientBusinessObject> dataList) {
- //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
- Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = attrVOS.stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if(!CollectionUtils.isEmpty(enumAttrVOMap)){
- return dataList.stream().filter(cbo->
- enumAttrVOMap.keySet().stream().anyMatch(attrId-> {
- String value = cbo.getAttributeValue(attrId);
- if(StringUtils.isNotBlank(value)) {
- CodeClassifyTemplateAttrVO attrVO = enumAttrVOMap.get(attrId);
- List<KeyValue> comboboxKVs = engineService.listComboboxItems(attrVO);
- return !comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getValue()));
- }else{
- return false;
- }
- })).map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet());
- }
- return new HashSet<>();
- }
-
- /**
- * 妫�鏌ユ牎楠岃鍒欐病鏈夐�氳繃鐨勫唴瀹�
- * @param attrVOS 闇�瑕佹牎楠岀殑灞炴��
- * @param dataList 鏁版嵁鐨勫垪琛�
- * @param errorMap 閿欒鐨勪俊鎭槧灏�
- * @return 鏍¢獙涓嶉�氳繃鐨勮鏁�
- */
- private void batchCheckVerifyOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS, List<ClientBusinessObject> dataList,Map<String,String> errorMap) {
- Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule()) && StringUtils.isBlank(s.getComponentrule())
- &&StringUtils.isBlank(s.getClassifyinvokeattr())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if(!CollectionUtils.isEmpty(verifyAttrVOMap)){
- Map<String/**琛屽彿**/,List<String>/**鏍¢獙涓嶉�氳繃鐨勫睘鎬�**/> unPassCheckMap = new HashMap<>();
- verifyAttrVOMap.forEach((attrId,attrVO)->{
- dataList.stream().forEach(cbo -> {
- String value = cbo.getAttributeValue(attrId);
- if(StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- List<String> unPassAttrs = unPassCheckMap.getOrDefault(rowIndex, new ArrayList<>());
- unPassAttrs.add(attrVO.getName());
- unPassCheckMap.put(rowIndex,unPassAttrs);
- }
- });
- });
- if(!CollectionUtils.isEmpty(unPassCheckMap)){
- unPassCheckMap.forEach((rowIndex,unPassAttrs)->{
- errorMap.put(rowIndex,";灞炴�" + unPassAttrs.stream().collect(Collectors.joining(",")) + "]鍐呭涓嶇鍚堟牎楠岃鍒欑殑瑕佹眰");
- });
- }
- }
- }
-
- private void bathcResembleQuery(String codeClassifyOid, CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList,Map<String,String>resembleMap,String btmtypeid,List<DataResembleVO> dataResembleVOS){
- CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(codeClassifyOid);
- Map<String, String> conditionMap = new HashMap<>();
- CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(engineService.getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
- //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
- Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
- if (CollectionUtils.isEmpty(attrVOs)) {
- return;
- }
- Map<String,CodeImprotResembleVO> codeImprotResembleVOMap=new HashMap<>();
- List<CodeImprotResembleVO> codeImprotResembleVOList=new ArrayList<>();
- Map<String,String> rowIndePathMap=new HashMap<>();
- cboList.stream().forEach(clientBusinessObject -> {
- CodeImprotResembleVO codeImprotResembleVO=new CodeImprotResembleVO();
- final String[] path = {""};
- List<String> fieldList=new ArrayList<>();
- List<String> rowIndeList=new ArrayList<>();
- String rowIndex = clientBusinessObject.getAttributeValue(IMPORT_ROW_INDEX);
- attrVOs.forEach((attrId, attrVO) -> {
- String value="";
- /*if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
- value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
- }else {*/
- value= clientBusinessObject.getAttributeValue(attrId);
- // }
- fieldList.add(attrId);
- value=StringUtils.isBlank(value)?"":value;
- path[0] +=value+"#";
- engineService.wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
- });
- List<Map<String,String>> dataMap=new ArrayList<>();
- if(codeImprotResembleVOMap.containsKey(path[0])) {
- codeImprotResembleVO=codeImprotResembleVOMap.get(path[0]);
- rowIndeList=codeImprotResembleVO.getRownIndex();
- dataMap= codeImprotResembleVO.getDataList();
- resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
- }else{
- if (!CollectionUtils.isEmpty(conditionMap)) {
- Map<String, String> andConditionMap = new HashMap<>();
- andConditionMap.put("islastr", "1");
- andConditionMap.put("islastv", "1");
- conditionMap.putAll(andConditionMap);
- PageHelper pageHelper = new PageHelper(-1);
- pageHelper.addDefaultDesc("id");
- CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmtypeid, templateVO, conditionMap, pageHelper);
- List<ClientBusinessObject> resembleCboList=boService.queryByOnlySql(sqlBO.getSqlUnPage());
- if(!CollectionUtils.isEmpty(resembleCboList)) {
- List<Map<String, String>> finalDataMap = dataMap;
- resembleCboList.stream().forEach(cbo->{
- Map<String,String> resembDataMap=new HashMap<>();
- fieldList.stream().forEach(field->{
- String value=cbo.getAttributeValue(field);
- value=StringUtils.isBlank(value)?"":value;
- resembDataMap.put(field,value);
- });
- resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
- resembDataMap.put("rowIndex","");
- finalDataMap.add(resembDataMap);
- });
- resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
-
- }
- }
- }
- rowIndePathMap.put(rowIndex,path[0]);
- rowIndeList.add(rowIndex);
- codeImprotResembleVO.setPath(path[0]);
- codeImprotResembleVO.setRownIndex(rowIndeList);
- codeImprotResembleVO.setConditionMap(conditionMap);
- codeImprotResembleVO.setFields(fieldList);
- codeImprotResembleVO.setDataList(dataMap);
- codeImprotResembleVOMap.put(path[0],codeImprotResembleVO);
- });
- Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
- if(!CollectionUtils.isEmpty(rowIndePathMap)){
- rowIndePathMap.forEach((rowIndex, path) -> {
- if(codeImprotResembleVOMap.containsKey(path)){
- CodeImprotResembleVO codeImprotResembleVO= codeImprotResembleVOMap.get(path);
- List<String> fieldList=codeImprotResembleVO.getFields();
- List<String> rownIndexList= codeImprotResembleVO.getRownIndex();
- List<String> newRownIndexList = rownIndexList.stream().filter(cbo -> {
- return rowIndex!=cbo;
- }).collect(Collectors.toList());
- newRownIndexList.stream().forEach(s -> {
- resembleMap.put(s, "瀛樺湪鐩镐技鏁版嵁");
- });
- List<Map<String, String>>newDataList=new ArrayList<>();
- DataResembleVO dataResembleVO=new DataResembleVO();
- dataResembleVO.setOid(cboMap.get(rowIndex).getOid());
- List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
- String newRowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return rownIndexList.contains(newRowIndex)&&(!newRowIndex.equalsIgnoreCase(rowIndex));
- }).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(needSaveCboList)) {
- needSaveCboList.stream().forEach(cbo -> {
- String newRowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- Map<String, String> resembDataMap = new HashMap<>();
- fieldList.stream().forEach(field -> {
- String value = cbo.getAttributeValue(field);
- value = StringUtils.isBlank(value) ? "" : value;
- resembDataMap.put(field, value);
- });
- resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
- resembDataMap.put("rowIndex", newRowIndex);
- newDataList.add(resembDataMap);
- });
- }
- List<Map<String, String>>dataList=codeImprotResembleVO.getDataList();
- newDataList.addAll(dataList);
- dataResembleVO.setDataList(newDataList);
- dataResembleVOS.add(dataResembleVO);
- }
- });
- }
- }
-
- /**
- * 鏍¢獙鍏抽敭灞炴��
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
- * @param cboList 鎵归噺鐨勬暟鎹�
- */
- private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
- List<ClientBusinessObject> cboList) {
- //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
- //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
- CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
- //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
- //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
- Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-
- boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
- //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
- boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
- boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
- boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
-
- //1. 鎴戜滑闇�瑕佸厛鍒ゆ柇excel瀵煎叆鐨勫唴瀹规槸鍚︽纭�
- CodeImportResultVO resultVO = new CodeImportResultVO();
- resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}",
- new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"}));
- resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
- if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
- //鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
- cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
- }
- //2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
- //鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- Map<String,List<ClientBusinessObject>> indexTODataMap=new HashMap<>();
- List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
- //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- Map<String, String> conditionMap = new HashMap<>();
- ketAttrMap.forEach((attrId, attrVO) -> {
- String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
- if (value == null) {
- value = "";
- }
- value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
- engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
- });
- if (!CollectionUtils.isEmpty(ketAttrMap)) {
- CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, null);
- boolean isKeyCheck= boService.queryCountBySql(sqlBO.getSqlCount(), new HashMap<>()) > 0;
- if(isKeyCheck){
- List<ClientBusinessObject> newCboList= boService.queryByOnlySql(sqlBO.getSqlUnPage());
- indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX),newCboList);
- }
- return isKeyCheck;
- }else{
- return false;
- }
- }).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(repeatDataMap)){
- resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet()));
- }
- resultVO.setIndexTODataMap(indexTODataMap);
- resultVO.setSuccess(true);
- return resultVO;
- }
-
- /**
- * 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿
- * @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠
- * @param dataList 瀵煎叆鐨勬暟鎹�
- * @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒�
- * @return 閲嶅鐨勮鍙�
- */
- private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
- List<ClientBusinessObject> dataList,CodeKeyAttrRepeatRuleVO keyRuleVO){
- Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
- boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
- //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
- boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
- boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
- boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
- //蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ
- List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrdernum().compareTo(o2.getOrdernum()))).collect(Collectors.toList());
- Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>();
- dataList.parallelStream().forEach(cbo-> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < attrVOList.size(); i++) {
- CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
- String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
- String value = cbo.getAttributeValue( attrId);
- if (value == null) {
- value = "";
- }
- if(trim){
- value = value.trim();
- }
- if(trimAll){
- value = value.replace(" ","");
- }
- if(ignoreCase){
- value = value.toLowerCase(Locale.ROOT);
- }
- if(ignoreWidth){
- value = VciBaseUtil.toDBC(value);
- }
- sb.append(value).append("${ks}");
- }
- String keyString = sb.toString();
- if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
- selfRepeatRowIndexList.add(rowIndex);
- }else {
- rowIndexKeyStringMap.put(rowIndex, sb.toString());
- }
- });
- //鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊
- return selfRepeatRowIndexList;
- }
-
- /**
- * 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴��
- * @param attrVO 灞炴�х殑鏄剧ず瀵硅薄
- * @param text 鍗曞厓鏍肩殑鍊�
- */
- private Object exportKeyAndRequired(Workbook workbook,CodeClassifyTemplateAttrVO attrVO,Object text){
- //蹇呰緭鍔�*锛屽叧閿睘鎬т负钃濊壊
- if (VciBaseUtil.getBoolean(attrVO.getRequireflag()) || VciBaseUtil.getBoolean(attrVO.getKeyattrflag())) {
- String value = text.toString();
- if(VciBaseUtil.getBoolean(attrVO.getRequireflag())) {
- value += REQUIRED_CHAR;
- }
- if(VciBaseUtil.getBoolean(attrVO.getKeyattrflag())){
- value += KEY_ATTR_CHAR;
- }
- RichTextString ts = new HSSFRichTextString(value);
- if(VciBaseUtil.getBoolean(attrVO.getRequireflag())){
- Font font = workbook.createFont();
- font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());
- ts.applyFont(font);
- }
-
- if(VciBaseUtil.getBoolean(attrVO.getKeyattrflag())){
- Font font = workbook.createFont();
- font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
- ts.applyFont(font);
- }
- return ts;
- }
- return text;
- }
-
- /**
- * 鏌ヨ鏁版嵁骞跺鍑哄埌excel
- * @param btmTypeId 涓氬姟绫诲瀷
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉
- * @param selectFieldList 鏌ヨ鐨勫瓧娈�
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勪俊鎭�
- * @param exportAttrDTO 瀵煎嚭鐨勫睘鎬�
- * @param excelNameList excel鐨勬枃浠跺悕绉�
- * @param tempFolder 涓存椂鏂囦欢澶�
- * @param excelIndex excel鐨勯『搴�
- */
- private void selectDataAndExportExcelName(String btmTypeId, Map<String, String> conditionMap, PageHelper pageHelper, List<String> selectFieldList,
- CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeExportAttrDTO exportAttrDTO,
- List<String> excelNameList, String tempFolder,
- Integer excelIndex) {
- DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
- if(dataGrid == null || CollectionUtils.isEmpty(dataGrid.getData())){
- return;
- }
- //杞崲鏁版嵁
- List<Map<String, String>> dataMap = dataGrid.getData();
- //灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
- engineService.wrapperData(dataMap, templateVO, selectFieldList,false);
- //modify by weidy@2022-09-27
- //鍥犱负鍦ㄥ垪琛ㄥ拰琛ㄥ崟鐨勬樉绀虹殑鏃跺�欙紝鎴戜滑鐨勫紑鍏崇被鍨嬮〉闈細澶勭悊锛屼絾鏄湪瀵煎嚭鐨勬椂鍊欙紝鎴戜滑闇�瑕佸皢true鍜宖alse閮芥浛鎹㈡垚涓枃
- engineService.wrapperBoolean(dataMap,templateVO);
- Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- Map<Integer, String> attrIdIndexMap = exportAttrDTO.getAttrIdIndexMap();
- if (CollectionUtils.isEmpty(attrIdIndexMap)) {
- attrIdIndexMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getOrdernum(), t -> t.getId()));
- }
- List<Integer> indexList = attrIdIndexMap.keySet().stream().sorted().collect(Collectors.toList());
-
- String excelName = tempFolder + File.separator +
- classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelIndex + ".xls";
- try {
- new File(excelName).createNewFile();
- } catch (Throwable e) {
- throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
- }
- excelNameList.add(excelName);
- List<WriteExcelData> excelDataList = new ArrayList<>();
- Workbook workbook = new HSSFWorkbook();
- for (int i = 0; i < indexList.size(); i++) {
- String attrId = attrIdIndexMap.get(indexList.get(i)).toLowerCase(Locale.ROOT);
- if (attrVOMap.containsKey(attrId)) {
- CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
- Object text = attrVO.getName();
- text = exportKeyAndRequired(workbook,attrVO,text);
- WriteExcelData excelData = new WriteExcelData(0, i, text);
- if(text instanceof RichTextString){
- excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
- }
- excelDataList.add(excelData);
- }
- }
- final Integer[] rowIndex = {0};
- Map<Integer, String> finalAttrIdIndexMap = attrIdIndexMap;
- dataMap.stream().forEach(data -> {
- rowIndex[0]++;
- for (int i = 0; i < indexList.size(); i++) {
- Integer index = indexList.get(i);
- String attrId = finalAttrIdIndexMap.get(index).toLowerCase(Locale.ROOT);
- if (attrVOMap.containsKey(attrId)) {
- CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
- if (StringUtils.isNotBlank(attrVO.getEnumid()) || StringUtils.isNotBlank(attrVO.getEnumString())) {
- attrId = attrId + "Text";
- }
- if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
- attrId = attrId + "name";
- }
- if(VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attrId)){
- attrId = VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT);
- }
- excelDataList.add(new WriteExcelData(rowIndex[0], i, data.getOrDefault(attrId, "")));
- }
- }
- });
- WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
- ExcelUtil.writeDataToFile(excelName, excelOption);
- }
-
- /**
- * 鎵归噺鏍¢獙鏁版嵁鐨勪俊鎭�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param cboList 鏁版嵁鐨勫唴瀹�
- */
- private void batchCheckRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
- Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(s ->
- VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//涓嶈兘鏄粍鍚堢殑鍜屽垎绫绘敞鍏ョ殑
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- //涓嶮dmEngineServiceImpl閲岄潰鐨刢heckRequiredAttrOnOrder 閫昏緫搴旇鐩镐技
- if(!CollectionUtils.isEmpty(requiredAttrMap)) {
- Set<String> nullRowIndex = cboList.stream().filter(cbo -> requiredAttrMap.keySet().stream().anyMatch(attrId -> StringUtils.isBlank(cbo.getAttributeValue(attrId)))).map(cbo -> cbo.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet());
- if(!CollectionUtils.isEmpty(nullRowIndex)){
- String checkAttr = requiredAttrMap.values().stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(","));
- nullRowIndex.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鏍¢獙瑙勫垯涓嶉�氳繃锛屾湁鏍¢獙鐨勫睘鎬т负" + checkAttr);
- });
- }
- }
- }
-
- /**
- * 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param cboList 鏁版嵁鐨勫垪琛�
- * @param errorMap 閿欒鐨勪俊鎭�
- */
- private void batchCheckIdExistOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String ,String> errorMap){
- List<String> existIds = new ArrayList<>();
- VciBaseUtil.switchCollectionForOracleIn(cboList).stream().forEach(cbos -> {
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + ")");
- //涓氬姟鏁版嵁濡傛灉鐮佸�煎洖鏀朵細鐩存帴鍒犻櫎鏁版嵁锛屾墍浠ヨ繖閲岀洿鎺ュ垽鏂槸鍚﹀瓨鍦ㄥ嵆鍙�
- existIds.addAll(Optional.ofNullable(boService.queryCBO(templateVO.getBtmTypeId(), conditionMap, new PageHelper(-1), Arrays.stream(new String[]{"id"})
- .collect(Collectors.toList()))).orElseGet(() -> new ArrayList<>()).stream().map(s -> s.getAttributeValue("id")).collect(Collectors.toList()));
- });
- if(!CollectionUtils.isEmpty(existIds)){
- String idFieldName = templateVO.getAttributes().stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
- if(StringUtils.isBlank(idFieldName)){
- idFieldName = "浼佷笟缂栫爜";
- }
- String finalIdFieldName = idFieldName;
- cboList.stream().forEach(cbo->{
- String id = cbo.getId();
- if(StringUtils.isBlank(id)){
- id = cbo.getAttributeValue("id");
- }
- if(existIds.contains(id)){
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- String msg = errorMap.getOrDefault(rowIndex, "");
- msg+=";" + finalIdFieldName + "鐨勫�煎湪绯荤粺涓凡缁忓瓨鍦�";
- errorMap.put(rowIndex,msg);
- }
- });
- }
- }
-
- /**
- * 浠巑ap閲岃幏鍙栧��
- * @param dataMap 鍊肩殑鏄犲皠
- * @param attrId 灞炴�х殑缂栧彿
- * @return 鍊�
- */
- private String getValueFormMap(Map<String,String> dataMap,String attrId){
- attrId = attrId.toLowerCase(Locale.ROOT);
- return dataMap.getOrDefault(attrId,"");
- }
-
- /**
- * 璁剧疆鍊煎埌map涓�
- * @param dataMap 鍊肩殑鏄犲皠鍐呭
- * @param attrId 灞炴�х殑缂栧彿
- * @param value 灞炴�х殑鍊�
- */
- private void setValueToMap(Map<String,String> dataMap,String attrId,String value){
- attrId = attrId.toLowerCase(Locale.ROOT);
- dataMap.put(attrId,value);
- }
- /**
- * 闆嗘垚鎵归噺鐢宠鏁版嵁
- * @param orderDTO 鍒嗙被鐨勪富閿�
- * @param dataObjectVO 鏁版嵁淇℃伅
- * @param resultDataObjectDetailDOs 閿欒淇℃伅
- * @return 鏈夐敊璇俊鎭殑excel
- */
- @Override
- public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
- Map<String,String> errorMap=new HashMap<>();
- VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
- engineService.checkSecValueOnOrder(ruleVO,orderDTO);
- //鏌ヨ鍒嗙被鍜屾ā鏉�
- //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
- List<RowDatas> rowDataList = dataObjectVO.getRowData();
- Map<String ,RowDatas>rowDataMap=new LinkedHashMap<>();
- rowDataList.stream().forEach(rowData->{
- rowDataMap.put(rowData.getRowIndex(),rowData);
- });
- //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
-
- //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
- //checkTemplateSync(sheetDataSetList,templateVO);
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
- List<String> titleRowData = dataObjectVO.getColName();
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
- getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
-
- //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
- List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
- && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
- ).collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(unExistAttrVOs)){
- throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
- }
- List<ClientBusinessObject> cboList = new ArrayList<>();
- String fullPath = getFullPath(classifyFullInfo);
-
- // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
- boolean isProcess=false;
- //娉ㄩ噴鎺夋澶勪笅闈㈡墍鏈夐兘鎸夌収涓嶅垽鏂祦绋嬪瓨鍌ㄧ姸鎬佷簡
- /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
- isProcess=true;
- }***/
- Map<String,String> codeOidToSystemOidMap=new HashMap<>();//瀛樺偍缂栫爜鏁版嵁鍜岄泦鎴愮郴缁熸暟鎹畂id瀵圭収鏄犲皠
- excelToCbo(classifyFullInfo,titleRowData,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,isProcess,"create",errorMap,codeOidToSystemOidMap);
-
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
- //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
- batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
-
-
- /**
- * 鍏抽敭鐔熸倝閿欒鎻愮ず
- */
- Map<String,String> errorKeyMap=new HashMap<>();
-
-
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
- selfRepeatRowIndexList.stream().forEach(rowIndex->{
- /* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
- RowDatas rowData= rowDataMap.get(rowIndex);
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode("");
- resultDataObjectDetailDO.setId(rowData.getOid());
- resultDataObjectDetailDO.setErrorid("1");
- resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�ч噸澶�");
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- */
- errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";浼犲叆鐨勬暟鎹腑鍏抽敭灞炴�ч噸澶�");
- });
- }
- /****
- * 鍏抽敭灞炴�т笌绯荤粺涓噸澶嶇殑鍒ゆ柇
- */
- if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
- /* RowDatas rowData= rowDataMap.get(rowIndex);
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode("");
- resultDataObjectDetailDO.setId(rowData.getOid());
- resultDataObjectDetailDO.setErrorid("1");
- resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- */
- errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- });
- }
- //鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,cboList);
- // cboList.stream().forEach(cbo->{
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
- //鏍¢獙灞炴�ф槸鍚︽纭敊璇俊鎭�
- if(errorMap.size()>0){
- String[] newMsg = {""};
- cboList.stream().forEach(cbo -> {
- String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
- if(errorMap.containsKey(rowIndex)){
- String oid=cbo.getOid();
- String sourceOid=oid;
- if(codeOidToSystemOidMap.containsKey(oid)){
- sourceOid=codeOidToSystemOidMap.get(oid);
- }
- String code="";
- String errorid="103";
- String mes=errorMap.get(rowIndex);
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode(code);
- resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid(errorid);
- resultDataObjectDetailDO.setMsg(mes);
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- }
- });
-
- }
-
- Map<String,String> newKeyMap=new HashedMap();
- if(errorKeyMap.size()>0 ) {
- errorKeyMap.keySet().forEach(key->{
- if(!errorMap.containsKey(key)){
- newKeyMap.put(key,errorKeyMap.get(key));
- }
- });
- if(newKeyMap.size()>0) {
- Set<ClientBusinessObject> editBoList = new HashSet<>();
- Map<String, List<ClientBusinessObject>> indexTodataMap = keyResultVO.getIndexTODataMap();
- cboList.stream().forEach(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- if (indexTodataMap.containsKey(rowIndex)) {
- String oid = cbo.getOid();
- String sourceOid = oid;
- String code = "";
- String errorid = "201";
- if(codeOidToSystemOidMap.containsKey(oid)){
- sourceOid=codeOidToSystemOidMap.get(oid);
- }
- List<ClientBusinessObject> newCboList = indexTodataMap.get(rowIndex);
- if (!CollectionUtils.isEmpty(newCboList)) {
- ClientBusinessObject newCbo= newCboList.get(0);
- String lcstatus =newCbo.getAttributeValue("lcstatus");
- String newOid =newCbo.getAttributeValue("oid");
- String ts =newCbo.getAttributeValue("ts");
- code=newCbo.getAttributeValue("id");
- String lastmodifier=newCbo.getAttributeValue("lastmodifier");
- if (!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
- newCbo.setBusinessObject(cbo.getBusinessObject());
- newCbo.setOid(newOid);
- newCbo.setLastModifier(lastmodifier);
- newCbo.setId(code);
- newCbo.setTs(ts);
- cbo.setLastModifier(cbo.getLastModifier());
- editBoList.add(newCbo);
- }
- String mes = errorKeyMap.get(rowIndex);
- XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode(code);
- resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid(errorid);
- resultDataObjectDetailDO.setMsg(mes);
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- }
- }
- });
- //鍏抽敭鐔熸倝鏇存敼
- if (!CollectionUtils.isEmpty(editBoList)) {
- BatchCBO batchCbos = new BatchCBO();
- batchCbos.setUpdateCbos(editBoList);
- this.boService.persistenceBatch(batchCbos);//鏇存敼鏁版嵁
- }
- errorMap.putAll(errorKeyMap);
- }
- }
-
- // });
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex =cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
- List<String> needRowIndexList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(needSaveCboList)) {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- //鐢熸垚缂栫爜鐨勫唴瀹�
- try {
- productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(templateVO, needSaveCboList);
- // if(!isProcess){
- needSaveCboList.stream().forEach(needSaveCbo->{
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode(needSaveCbo.getId());
- String oid=needSaveCbo.getOid();
- String sourceOid=oid;
- if(codeOidToSystemOidMap.containsKey(oid)){
- sourceOid=codeOidToSystemOidMap.get(oid);
- }
- resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid("0");
- resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛");
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- });
- /* }else{
- needSaveCboList.stream().forEach(needSaveCbo->{
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- // resultDataObjectDetailDO.setCode(needSaveCbo.getId());//涓嶇敤杩斿洖缂栫爜
- String oid=needSaveCbo.getOid();
- String sourceOid=oid;
- if(codeOidToSystemOidMap.containsKey(oid)){
- sourceOid=codeOidToSystemOidMap.get(oid);
- }
- resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid("204");
- resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛锛岀瓑寰呯紪鐮佺郴缁熷彂甯冿紒");
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- });
-
- }*/
- }catch (Throwable e){
- e.printStackTrace();
- needSaveCboList.stream().forEach(needSaveCbo->{
- XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- resultDataObjectDetailDO.setCode("");
- String oid=needSaveCbo.getOid();
- String sourceOid=oid;
- if(codeOidToSystemOidMap.containsKey(oid)){
- sourceOid=codeOidToSystemOidMap.get(oid);
- }
- resultDataObjectDetailDO.setId(sourceOid);
- resultDataObjectDetailDO.setErrorid("1");
- resultDataObjectDetailDO.setMsg("淇濆瓨鍑虹幇闂:"+e.getMessage());
- resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
- });
-
- }
- }
- }
-
- /***
- * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛
- * @param codeClassifyVO;
- * @param dataObjectVO 鏁版嵁淇℃伅
- * @param resultDataObjectDetailDOs 閿欒淇℃伅
- */
- @Override
- public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO,DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
- String errorid="";
- String msg="";
- //鏌ヨ鍒嗙被鍜屾ā鏉�
- //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
- List<RowDatas> rowDataList = dataObjectVO.getRowData();
- Map<String, RowDatas> rowDataMap = new LinkedHashMap<>();
- Map<String, RowDatas> codeDataMap = new LinkedHashMap<>();
- rowDataList.stream().forEach(rowData -> {
- rowDataMap.put(rowData.getRowIndex(), rowData);
- codeDataMap.put(rowData.getCode(), rowData);
- });
- //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
- //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
- //checkTemplateSync(sheetDataSetList,templateVO);
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
- List<String> titleRowData = dataObjectVO.getColName();
- Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
- getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
- Map<String, String> cboOidMap = new HashMap<>();
- cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
- List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
- Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
- Map<String, String> errorMap = new HashMap<>();
- List<CodeOrderDTO> codeOrderDTOList = new ArrayList<>();
- this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap);
- // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
- boolean isProcess=false;
- /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
- isProcess=true;
- }**/
-
- Map<String, CodeOrderDTO> orderDTOMap = codeOrderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
- List<ClientBusinessObject> updateList = new ArrayList<>();
- List<ClientBusinessObject> deleteList = new ArrayList<>();
-
- BatchCBO batchCBO = new BatchCBO();
- CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
- Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
- // boolean finalIsProcess = isProcess;
- orderDTOMap.keySet().stream().forEach(code -> {
- CodeOrderDTO orderDTO = orderDTOMap.get(code);
- ClientBusinessObject cbo = cboMap.get(code);
- String dataStatus=cbo.getLcStatus();
- RowDatas rowData=codeDataMap.get(code);
- String status=rowData.getStatus();
- String operation=rowData.getOperation();
- if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
- // throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
- }
- /* if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
- throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
- }*/
- if(operation.equals("update")) {
- //1. 鍒ゆ柇蹇呰緭椤�
- checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
- //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
- switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO, errorMap);
- //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
- switchComponentAttrOnOrder(templateVO, orderDTO);
- //4.鏍¢獙瑙勫垯
- checkVerifyOnOrder(templateVO, orderDTO, errorMap);
- //5.鍒ゆ柇鍏抽敭灞炴��
- checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
- //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
- checkEnumOnOrder(templateVO, orderDTO, errorMap);
- //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
- switchDateAttrOnOrder(templateVO, orderDTO);
- //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
- copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true, errorMap);
- //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
- cbo.setDescription(orderDTO.getDescription());
- cbo.setName(orderDTO.getName());
- try {
- cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
- cbo.setAttributeValue("name", orderDTO.getName());
- // if(finalIsProcess){//鍦ㄦ祦绋嬩腑涓嶅厑璁告洿鏀�
- // errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼!"));
- // }else{
- cbo.setLcStatus(status);
- cbo.setAttributeValue("lcstatus",status);
- // }
- } catch (VCIError e) {
- e.printStackTrace();
- }
- updateList.add(cbo);
- }else if(operation.equals("delete")){//濡傛灉鍦ㄦ祦绋嬩腑涓嶅厑璁稿垹闄わ紝涓嶅湪娴佺▼涓姸鎬佷负鍙戝竷鎴栬�呭仠鐢ㄧ殑鏁版嵁涓嶅厑璁稿垹闄わ紝灏嗗叾鏇存敼涓哄仠鐢紝鍏朵粬鐨勬儏鍐电洿鎺ュ垹闄�
- // if(finalIsProcess){
- // errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鍒犻櫎!"));
- //}else {
- try {
- Map<String, String> condtionMap = new HashMap<>();
- condtionMap.put("createcodeoid", cbo.getOid());
- logger.info("oid:" + cbo.getOid());
- List<ClientBusinessObject> codeCbos = boService.queryCBO("codeallcode", condtionMap);
- logger.info("codeCbos size:" + codeCbos.size());
- if (!CollectionUtils.isEmpty(codeCbos)) {
- ClientBusinessObject codeCbo = codeCbos.get(0);
- logger.info("codeCbos code:" + codeCbo.getId());
- codeCbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
- codeCbo.setAttributeValue("lcstatus", CodeDefaultLC.TASK_BACK.getValue());
- updateList.add(codeCbo);
- }
- deleteList.add(cbo);
- }catch (VCIError e) {
- e.printStackTrace();
- }
- // }
- }else if(operation.equals("editstatus")){
- try {
- // if (finalIsProcess) {
- // errorMap.put(code, errorMap.getOrDefault(code, errorMap.getOrDefault(code, "") + ";鏁版嵁" + code + "鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼鐘舵��!"));
- // } else {
- cbo.setLcStatus(status);
- cbo.setAttributeValue("lcstatus", status);
- updateList.add(cbo);
- // }
- }catch (VCIError e) {
- e.printStackTrace();
- }
- }
- });
- /**
- * 閿欒淇℃伅杈撳嚭
- */
- if(errorMap.size()>0){
- errorMap.keySet().forEach(code->{
- if(codeDataMap.containsKey(code)){
- RowDatas rowDatas= codeDataMap.get(code);
- String dataMsg=errorMap.get(code);
- String oid=rowDatas.getOid();
- XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- xmlResultDataObjectDetailDO.setErrorid("103");
- xmlResultDataObjectDetailDO.setMsg(dataMsg);
- xmlResultDataObjectDetailDO.setId(oid);
- xmlResultDataObjectDetailDO.setCode(code);
- resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
- }
- });
- }else {
- //瀛樺偍鏁版嵁
- try {
- batchCBO.getUpdateCbos().addAll(updateList);
- batchCBO.getDeleteCbos().addAll(deleteList);
- boService.persistenceBatch(batchCBO);
- engineService.batchSaveSelectChar(firstTemplateVO, updateList);
- errorid="0";
- msg="鏇存柊/鐘舵�佹洿鏀�/鍒犻櫎鎴愬姛锛�";
- }catch (Throwable e){
- errorid="1";
- msg="淇濆瓨澶辫触锛�"+e;
- }finally {
- String finalMsg = msg;
- String finalErrorid = errorid;
- cboList.stream().forEach(cbo->{
- String code =cbo.getId();
- if(codeDataMap.containsKey(code)) {
- RowDatas rowDatas=codeDataMap.get(code);
- String oid=rowDatas.getOid();
- XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
- xmlResultDataObjectDetailDO.setErrorid(finalErrorid);
- xmlResultDataObjectDetailDO.setMsg(finalMsg);
- xmlResultDataObjectDetailDO.setId(oid);
- xmlResultDataObjectDetailDO.setCode(code);
- resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
- }
- });
-
- }
- }
- }
-
- /***
- * 浠庣紦瀛橀噷鑾峰彇鍒伴渶瑕佸鍏ョ殑鐩稿叧鏁版嵁
- * @param codeClssifyOid
- * @param redisOid
- * @return
- */
- @Override
- public DataGrid<Map<String, String>> gridDatas(String codeClssifyOid, String redisOid) {
- VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
- List<CodeImprotDataVO> codeImprotDataVOs = redisService.getCacheList(redisOid+"-"+codeClssifyOid);
- CodeImprotDataVO codeImprotDataVO=new CodeImprotDataVO();
- if(!CollectionUtils.isEmpty(codeImprotDataVOs)){
- if(StringUtils.isNotBlank(codeClssifyOid)){
- Map<String/**鍒嗙被鍚嶇О**/, CodeImprotDataVO/**鑻辨枃鍚嶇О**/> codeClassifyDatasMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getCodeClassifyOid(), t -> t,(o1, o2)->o2));
- if(codeClassifyDatasMap.containsKey(codeClssifyOid)){
- codeImprotDataVO= codeClassifyDatasMap.get(codeClssifyOid);
- }else{
- codeImprotDataVO= codeImprotDataVOs.get(0);
- }
- }
- }
- DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
- List<Map<String, String>> dataList = new ArrayList<>();
- if(codeImprotDataVO!=null){
- dataList= codeImprotDataVO.getDatas();
- }
- dataGrid.setData(dataList);
- if (!CollectionUtils.isEmpty(dataList)) {
- dataGrid.setTotal(dataList.size());
- }
- return dataGrid;
- }
-
- /**
- *
- * @param oid
- * @param redisOid
- * @return
- */
- @Override
- public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){
- VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
- List<DataResembleVO> codeImprotDataVOs = redisService.getCacheList(redisOid);
- DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
- List<Map<String, String>> dataList = new ArrayList<>();
-
- if(!CollectionUtils.isEmpty(codeImprotDataVOs)){
- Map<String/**鍒嗙被鍚嶇О**/, DataResembleVO/**鏁版嵁瀵硅薄**/> rowResembleDataMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
- if(rowResembleDataMap.containsKey(oid)){
- DataResembleVO dataResembleVO= rowResembleDataMap.get(oid);
- dataList= dataResembleVO.getDataList();
- }
- }
-
- dataGrid.setData(dataList);
- if (!CollectionUtils.isEmpty(dataList)) {
- dataGrid.setTotal(dataList.size());
- }
- return dataGrid;
- }
- @Override
- public List<CodeImportTemplateVO> gridclassifys(String redisOid) {
- List<CodeImportTemplateVO> codeImportTemplateVOs=new ArrayList<>();
- VciBaseUtil.alertNotNull(redisOid,"鍒嗙被",redisOid,"鍒嗙被缂撳瓨涓婚敭");
- List<CodeImportTemplateVO> redisServiceCacheObjects=redisService.getCacheList(redisOid);
- if(redisServiceCacheObjects!=null){
- codeImportTemplateVOs= redisServiceCacheObjects;
- }
- return codeImportTemplateVOs;
- }
-
- @Override
- public BaseResult batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList,String classifyAttr, boolean isImprot) {
- List<SheetRowData> rowDataList = new ArrayList<>();
- List<ClientBusinessObject> allNeedSaveCboList=new ArrayList<>();
- codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
- List<ClientBusinessObject>cboList=new ArrayList<>();
- List<String> colList=codeImprotSaveDatVO.getClos();
- CodeOrderDTO orderDTO= codeImprotSaveDatVO.getOrderDTO();
-
- List<Map<String, String>> dataList= codeImprotSaveDatVO.getDataList();
- Map<Integer, String> fieldIndexMap = new HashMap();
- for (int i=0;i<dataList.size();i++){
- SheetRowData sheetRowData=new SheetRowData();
- Map<String,String> dataMap= dataList.get(i);
- Map<Integer, String> data = new HashMap();
- final int[] colIndex = {0};
- Map<Integer, String> finalFieldIndexMap = new HashMap<>();
- dataMap.forEach((field, value)->{
- if(!ROW_INDEX.equalsIgnoreCase(field)){
- data.put(colIndex[0],value);
- finalFieldIndexMap.put(colIndex[0]++,field);
- }
- });
- fieldIndexMap=finalFieldIndexMap;
- sheetRowData.setData(data);
- sheetRowData.setRowIndex(i+"");
- rowDataList.add(sheetRowData);
- }
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
-
- // CodeClassifyTemplateVO codeClassifyTemplateVO= engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
- CodeClassifyTemplateVO codeClassifyTemplateVO= templateServiceI.getObjectHasAttrByOid(orderDTO.getTemplateOid());
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
- List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
- !DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- String fullPath = getFullPath(classifyFullInfo);
- excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
- Map<String,String> errorMap=new HashMap<>();
- if(isImprot) {
- Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
- //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
- //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
- List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(orderDTO.getCodeClassifyOid(), true, classifyAttr, true);
- Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
- Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
- pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
- //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
- //妫�鏌ュ垎绫荤殑璺緞
- checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
- }
- //鍒嗙被娉ㄥ叆
- batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,isImprot);
- //boolean
- reSwitchBooleanAttrOnOrder(attrVOS,cboList);
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
- //5.鏍¢獙鏋氫妇鏄惁姝g‘
- batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
- //7.澶勭悊鍙傜収鐨勬儏鍐�
- batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
- //6.鏃堕棿鏍煎紡鐨勯獙璇�
- //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
- batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
- //鏈�鍚庡紕缁勫悎瑙勫垯
- batchSwitchComponentAttrOnOrder(attrVOS,cboList);
- //3.鍒ゆ柇鍏抽敭灞炴��
- CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList);
- Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
- Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
- if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
- keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
- errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
- });
- }
- //4.鏍¢獙瑙勫垯
- batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
-
-
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- List<ClientBusinessObject>needSaveCboList = cboList.stream().filter(cbo -> {
- String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
- return !errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- if (!CollectionUtils.isEmpty(needSaveCboList)) {
- //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
- if (isImprot) {
- productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, null, needSaveCboList);
- }else {
- productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
- }
- allNeedSaveCboList.addAll(needSaveCboList);
- }
- //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
- engineService.batchSaveSelectChar(codeClassifyTemplateVO, allNeedSaveCboList);
- });
- return BaseResult.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
- }
- /***
- *
- * @param codeClassifyVO
- * @param templateVO
- * @param codeDataMap
- * @param codeSystemObjectMap
- * @param codeOrderDTOList
- * @param errorMap
- * @return
- */
- private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap){
- codeDataMap.keySet().forEach(code->{
- RowDatas rowDatas=codeDataMap.get(code);
- Map<String, String> data= rowDatas.getFiledValue();
- CodeOrderDTO orderDTO = new CodeOrderDTO();
- if(codeSystemObjectMap.containsKey(code)){
- ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
- orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
- orderDTO.setOid(sysDataObject.getOid());//鏁版嵁oid
- orderDTO.setLcStatus(rowDatas.getStatus());//鐘舵��
- orderDTO.setId(code);
- orderDTO.setTs(VciDateUtil.getDateFromStringForVci(sysDataObject.getTs()));
- orderDTO.setBtmname(codeClassifyVO.getBtmname());//涓氬姟绫诲瀷
- orderDTO.setDescription("闆嗘垚璋冪敤:鏇存柊");//鏁版嵁鎻忚堪
- if(data.containsKey("name")){
- String name=data.get("name");
- orderDTO.setName(name);//鍚嶇О灞炴�у��
- }
- orderDTO.setData(data);//璁剧疆鏁版嵁
- orderDTO.setSecDTOList(null);//鍒嗙被鐮佹
- orderDTO.setEditInProcess(false);//鏄惁鍦ㄦ祦绋嬩腑
- orderDTO.setTemplateOid(templateVO.getOid());
- }else{
- errorMap.put("code","缂栫爜涓猴細銆�"+code+"銆戠殑鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
- }
- codeOrderDTOList.add(orderDTO);
- });
- }
-
- /**
- * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
- *
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param cbo 涓氬姟鏁版嵁
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param edit 鏄惁涓轰慨鏀�
- */
- private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, ClientBusinessObject cbo,
- CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
- boolean edit,Map<String,String> errorMap) {
- String fullPath = "";
- if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
- fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
- .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
- } else {
- fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
- }
- orderDTO.getData().forEach((key, value) -> {
- if (!edit || (!boService.checkUnAttrUnEdit(key) &&
- !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
- try {
- cbo.setAttributeValue(key, value);
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
- }
- }
- });
- try {
- cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD, templateVO.getOid());
- cbo.setAttributeValue(CODE_FULL_PATH_FILED, fullPath);
- if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
- //鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝
- if (StringUtils.isNotBlank(cbo.getLctId())) {
- OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctId());
- if (lifeCycleVO != null) {
- cbo.setLcStatus(lifeCycleVO.getStartStatus());
- } else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }
- } else {
- cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- }
-
- }
- int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
- if (secret == 0 || !secretService.checkDataSecret(secret)) {
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
- }
- } catch (Throwable e) {
- logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
- }
- }
-
- /**
- * 杞崲鏃堕棿鐨勬牸寮�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodedateformat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
- dateAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value)) {
- DateConverter dateConverter = new DateConverter();
- dateConverter.setAsText(value);
- value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
- setValueToOrderDTO(orderDTO, attrId, value);
- }
- });
- }
- }
- /**
- * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
- *
- * @param orderDTO 缂栫爜鐢宠瀵硅薄
- * @param attrId 灞炴�х殑缂栧彿
- * @param value 鍊�
- */
- private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
- attrId = attrId.toLowerCase(Locale.ROOT);
- if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
- WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
- } else {
- orderDTO.getData().put(attrId, value);
- }
- }
- /**
- * 鏍¢獙鏋氫妇鐨勫唴瀹�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
- //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
- Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
- enumAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value)) {
- //鏈夊�兼墠鑳芥牎楠�
- List<KeyValue> comboboxKVs = this.engineService.listComboboxItems(attrVO);
- if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";灞炴�с��"+attrVO.getName()+"銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�");
- //throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
- }
- }
- });
- }
- }
-
- /**
- * 鏍¢獙鍏抽敭灞炴��
- *
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
- * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
- */
- private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
- //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
- CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
- //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
- //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
- Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- Map<String, String> conditionMap = new HashMap<>();
- boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
- //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
- boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
- boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
- boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
- ketAttrMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (value == null) {
- value = "";
- }
- engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
- });
-
- //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
-
- if (!CollectionUtils.isEmpty(conditionMap)) {
- final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " where 1 = 1 "};
- conditionMap.forEach((key, value) -> {
- sql[0] += " and " + key + " = " + value;
- });
- if (StringUtils.isNotBlank(orderDTO.getOid())) {
- //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
- sql[0] += " and oid != '" + orderDTO.getOid() + "'";
- } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
- sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
- }
- sql[0] += " and islastR = '1' and islastV = '1' ";
- if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
- String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
- String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
- String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�";
- String errormsg=defaultValue+MessageFormat.format(ruleInfoMsg, objs);
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg);
- // throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
- }
- }
- }
- /**
- * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
- *
- * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
- * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
- */
- private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
- Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
- verifyAttrVOMap.forEach((attrId, attrVO) -> {
- String value = getValueFromOrderDTO(orderDTO, attrId);
- if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())) {
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";灞炴�"+attrVO.getName()+"]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�");
- //鏍¢獙姝e垯琛ㄨ揪寮�
- // throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
- }
- });
- }
- }
- /**
- * 杞崲缁勫悎瑙勫垯鐨勫��
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
- Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(compAttrVOMap)) {
- Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
-
- Map<String, String> dataLowMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(dataMap)) {
- dataMap.forEach((key, value) -> {
- dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
- });
- }
- dataLowMap.putAll(orderDTO.getData());
- compAttrVOMap.forEach((attrId, attrVO) -> {
- dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentrule()));
- });
- dataLowMap.forEach((key, value) -> {
- setValueToOrderDTO(orderDTO, key, value);
- });
- }
- }
- /**
- * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
- * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
- Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
- s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
- ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (classifyFullInfoBO.getTopClassifyVO() == null) {
- //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
-
- }
- if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
- classifyAttrVOMap.forEach((attrId, attrVO) -> {
- //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
- //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
- CodeClassifyVO classifyVO = null;
- if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
- //鎸囧畾浜嗗眰绾х殑
- //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
- List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
- int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
- if (classifyVOS.size() >= level && level > 0) {
- classifyVO = classifyVOS.get(level - 1);
- }
- } else {
- //褰撳墠鐨勫垎绫�
- classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
- }
- if (classifyVO == null) {
- //璇存槑灞傜骇鏈夎
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
- //orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
- // classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
- } else {
- Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
- String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
- orderDTO.getData().put(attrId, value);
- }
- });
- }
- }
-
-
- /**
- * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
- *
- * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
- * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
- */
- private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
- Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
- s -> VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule())
- && StringUtils.isBlank(s.getClassifyinvokeattr()))
- .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
- if (!CollectionUtils.isEmpty(requiredAttrMap)) {
- requiredAttrMap.forEach((attrId, attrVO) -> {
- //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
- if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
- errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"") + ";灞炴�с�恵"+attrVO.getName()+"}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭" );
- // throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
- }
- });
- }
- }
-
-
-
-
- /**
- * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
- *
- * @param orderDTO 缂栫爜鐢宠瀵硅薄
- * @param attrId 灞炴�х殑缂栧彿
- * @return 鍊�
- */
- private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
- attrId = attrId.toLowerCase(Locale.ROOT);
- String value = null;
- if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
- value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
- } else {
- //璇存槑鏄嚜琛岄厤缃殑
- //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
- value = orderDTO.getData().getOrDefault(attrId, "");
- }
- return value;
- }
-
- /**
- * excel杞崲涓篶bo鐨勫璞�
- * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param codeImprotDataVO: 鍒嗙被瀵瑰簲鐨勬暟鎹�
- * @param cboList 鏁版嵁鐨勫垪琛�
- * @param newCode 鏄惁涓烘壒閲忕敵璇�
- */
- private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,CodeImprotDataVO codeImprotDataVO,List<ClientBusinessObject> cboList, boolean newCode){
- String fullPath = getFullPath(classifyFullInfo);
- codeImprotDataVO.getDatas().stream().forEach(rowData -> {
- ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- rowData.forEach((field,value)->{
- try {
- cbo.setAttributeValueWithNoCheck(field,value);
- if(WebUtil.isDefaultField(field)){
- WebUtil.setValueToField(field, cbo, value);
- }
- } catch (VCIError e) {
- logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
- }
- });
- try {
- if(newCode){
- cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
- //cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
- int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
- if(secret == 0 || !secretService.checkDataSecret(secret) ){
- Integer userSecret = VciBaseUtil.getCurrentUserSecret();
- cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
- }
- }else{
- //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
- //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
- cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
- }
- rowData.put("oid",cbo.getOid());
- cbo.setAttributeValue(CODE_TEMPLATE_OID_FIELD,codeImprotDataVO.getTemplateOid());
- cbo.setAttributeValue(IMPORT_ROW_INDEX,rowData.get(IMPORT_ROW_INDEX));
- }catch (Throwable e){
- logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
- }
- cboList.add(cbo);
- });
-
- }
-
-
- private void createRedisDatas(String uuid, CodeClassifyTemplateVO templateVO, List<CodeImprotDataVO> codeImprotDataVOs, Map<String, String> errorMap, boolean isok){
- codeImprotDataVOs.stream().forEach(codeImprotDataVO -> {
- List<Map<String, String>> dataLists=new ArrayList<>();
- CodeImprotDataVO newCodeImprotDataVO=new CodeImprotDataVO();
- if(errorMap.size()>0) {
- //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
- dataLists = codeImprotDataVO.getDatas().stream().filter(cbo -> {
- String rowIndex=cbo.get(IMPORT_ROW_INDEX);
- return isok? !errorMap.containsKey(rowIndex):errorMap.containsKey(rowIndex);
- }).collect(Collectors.toList());
-
- }else{
- dataLists= codeImprotDataVO.getDatas();
- }
- BeanUtilForVCI.copyPropertiesIgnoreCase(codeImprotDataVO,newCodeImprotDataVO);
- newCodeImprotDataVO.setDatas(dataLists);
- List<CodeImprotDataVO> codeImprotDataVOList=new ArrayList<>();
- codeImprotDataVOList.add(newCodeImprotDataVO);
- redisService.setCacheList(uuid+"-"+codeImprotDataVO.getCodeClassifyOid(), codeImprotDataVOList);
- logger.info(uuid+"-"+codeImprotDataVO.getCodeClassifyOid()+":鏉$洰鏁�"+codeImprotDataVOList.size());
- //redisService.expire(uuid+"-"+codeImprotDataVO.getCodeClassifyOid(),6000000);//redis杩囨湡鏃堕棿
- });
- }
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmProductCodeServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmProductCodeServiceImpl.java
deleted file mode 100644
index 2cf4f33..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/MdmProductCodeServiceImpl.java
+++ /dev/null
@@ -1,741 +0,0 @@
-package org.springblade.code.service.impl;
-
-import com.vci.corba.common.VCIError;
-import com.vci.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.constant.RegExpConstant;
-import com.vci.starter.web.exception.VciBaseException;
-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.util.VciDateUtil;
-import com.vci.web.enumpck.OsCodeFillTypeEnum;
-import com.vci.web.pageModel.BatchCBO;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.service.impl.FormulaServiceImpl;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.dao.CodeAllCodeDaoI;
-import org.springblade.code.dao.CodeSerialValueDaoI;
-import org.springblade.code.dto.CodeOrderSecDTO;
-import org.springblade.code.enumpack.CodeCutTypeEnum;
-import org.springblade.code.enumpack.CodeGetValueTypeEnum;
-import org.springblade.code.enumpack.CodeLevelTypeEnum;
-import org.springblade.code.enumpack.CodeSecTypeEnum;
-import org.springblade.code.lifecycle.CodeAllCodeLC;
-import org.springblade.code.model.CodeAllCodeDO;
-import org.springblade.code.model.CodeSerialValueDO;
-import org.springblade.code.service.MdmProductCodeServiceI;
-import org.springblade.code.vo.pagemodel.CodeBasicSecVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyTemplateVO;
-import org.springblade.code.vo.pagemodel.CodeClassifyVO;
-import org.springblade.code.vo.pagemodel.CodeRuleVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import plm.bs.bom.clientobject.ClientBusinessObject;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.vci.web.other.BdSelectInputCharAspect.SEP;
-import static org.springblade.code.constant.MdmEngineConstant.*;
-
-/**
- * 鐢熸垚缂栫爜鐨勬湇鍔�
- * @author weidy
- * @date 2022-3-6
- */
-@Service
-public class MdmProductCodeServiceImpl implements MdmProductCodeServiceI {
-
- /**
- * 涓氬姟鏁版嵁鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 鎵�鏈夌殑缂栫爜鐨勫唴瀹�
- */
- @Autowired
- private CodeAllCodeDaoI allCodeMapper;
-
- /**
- * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭�
- */
- @Autowired
- private CodeSerialValueDaoI serialValueMapper;
-
- /**
- * 鍏紡鐨勬湇鍔�
- */
- @Autowired
- private FormulaServiceImpl formulaService;
- /**
- * 鐢熸垚缂栫爜--骞朵笖淇濆瓨鏁版嵁
- *
- * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param templateVO 妯℃澘鐨勬樉绀哄璞�
- * @param ruleVO 缂栫爜瑙勫垯鐨勬樉绀哄璞�
- * @param secDTOList 鍚勪釜鐮佹鐨勫��
- * @param dataCBOList 涓氬姟鏁版嵁
- */
- @Override
- public synchronized List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
- CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<ClientBusinessObject> dataCBOList) {
- BatchCBO batchCBO = new BatchCBO();
- WebUtil.setPersistence(false);
- dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
- batchCBO.getCreateCbos().addAll(dataCBOList);
- List<String> codeList = new ArrayList<>();
-
- /*****
- * 淇濊瘉骞跺彂鐨勬椂鍊欙紝鏈�澶ф祦姘村彿閮藉鐨勶紝浣嗘槸杩欑鍔犻攣鏈夊紛绔�
- *
- */
-
- if(dataCBOList.stream().anyMatch(cbo->StringUtils.isNotBlank(cbo.getId()) && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD)))){
- //鏄巻鍙叉暟鎹鍏�
- //鍘嗗彶鏁版嵁鎵ц鐨勬椂鍊欙紝杩欎釜绯荤粺浼氬緢鍗�
- //涓昏鏄负浜嗗綍鍏ユ渶澶ф祦姘村彿鍜宎llcode
- SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
- List<CodeAllCodeDO> allCodeDOList = new ArrayList<>();
- Map<String/**娴佹按渚濇嵁**/,Map<String/**鐮佹鐨勪富閿�**/,Double/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>();
- dataCBOList.parallelStream().forEach(cbo->{
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- String code = cbo.getId();
- List<String> serialUnitList = new ArrayList<>();
- String[] secLengths = cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD).split("#");
- List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
- Map<String/**鐮佹鐨勪富閿�**/,String/**鐮佹鐨勫��**/> serialValueMap = new HashMap<>();
- Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
- for (int i = 0; i < secLengths.length; i++) {
- CodeBasicSecVO secVO = secVOList.get(i);
- String thisSecValue = "";
- if(i == 0){
- thisSecValue = code.contains("#")?code.substring(0,code.indexOf("#")):code;
- } else if(i == secLengths.length-1){
- //鏈�鍚�
- thisSecValue = code.contains("#")?code.substring(code.lastIndexOf("#")):code;
- }else {
- int start = 0;
- for (int j = 0; j < i; j++) {
- start += VciBaseUtil.getInt(secLengths[j]) + 1;
- }
- thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[1]));
- }
- if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){
- serialUnitList.add(thisSecValue);
- }
- if(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(secVO.getSectype())){
- serialValueMap.put(secVO.getOid(),thisSecValue);
- }
- }
- String serialUnitString = serialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : serialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE));
- List<String> serialUnFileStringList = new ArrayList<>();
- if(!CollectionUtils.isEmpty(serialValueMap)){
- serialValueMap.forEach((secOid,secValue)->{
- //瑕佺湅鏄笉鏄ˉ浣嶇殑
- CodeBasicSecVO secVO = secVOMap.get(secOid);
- Double serialDb = null;
- if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){
- //涓嶈ˉ鐮�
- //鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒�
- serialDb = VciBaseUtil.getDouble(killUnNumberChar(secValue));
- }else {
- //宸﹀彸濉厖鐨勶紝鎴戜滑闇�瑕�
- serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(secValue,secVO.getCodeFillSeparator(),
- OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
- }
- Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
- thisUnitMaxMap.put(secOid,serialDb);
- maxSerialMap.put(serialUnitString,thisUnitMaxMap);
- serialUnFileStringList.add(String.valueOf(serialDb));
- });
- }
- CodeAllCodeDO allCodeDO = new CodeAllCodeDO();
- allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
- allCodeDO.setCodeRuleOid(ruleVO.getOid());
- allCodeDO.setId(cbo.getId());
- allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid());
- allCodeDO.setCreateCodeBtm(cbo.getBtmName());
- allCodeDO.setCreateCodeOid(cbo.getOid());
- allCodeDO.setSerialUnit(serialUnitString);
- allCodeDO.setUnFillSerial(serialUnFileStringList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE)));
- allCodeDO.setLcStatus(cbo.getLcStatus());
- allCodeDOList.add(allCodeDO);
- });
- //澶勭悊鏈�澶х殑娴佹按鍙�
- List<CodeSerialValueDO> addSerialValueList = new ArrayList<>();
- List<CodeSerialValueDO> editSerialValueList = new ArrayList<>();
- maxSerialMap.forEach((serialUnit,secOidMaxMap)->{
- secOidMaxMap.forEach((secOid,maxSerial)->{
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("codeRuleOid", ruleVO.getOid());
- conditionMap.put("serialUnit", serialUnit);
- //杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
- conditionMap.put("codeSecOid", secOid);
- List<CodeSerialValueDO> serialValueDOS = serialValueMapper.selectByCondition(conditionMap, new PageHelper(-1));
- if (!CollectionUtils.isEmpty(serialValueDOS)) {
- CodeSerialValueDO serialValueDO = serialValueDOS.get(0);
- if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){
- serialValueDO.setMaxSerial(String.valueOf(maxSerial));
- editSerialValueList.add(serialValueDO);
- }
- }else{
- //娌℃湁
- CodeSerialValueDO serialValueDO = new CodeSerialValueDO();
- serialValueDO.setCodeRuleOid(ruleVO.getOid());
- serialValueDO.setSerialUnit(serialUnit);
- serialValueDO.setCodeSecOid(secOid);
- serialValueDO.setMaxSerial(maxSerial.toString());
- addSerialValueList.add(serialValueDO);
- }
- });
- });
- if(!CollectionUtils.isEmpty(addSerialValueList)){
- batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueList));
- }
- if(!CollectionUtils.isEmpty(editSerialValueList)){
- batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueList));
- }
- //澶勭悊allCode
- if(!CollectionUtils.isEmpty(allCodeDOList)){
- Map<String, List<CodeAllCodeDO>> ruleGroup = allCodeDOList.stream().collect(Collectors.groupingBy(s -> s.getCodeRuleOid()));
- Map<String, CodeAllCodeDO> codeDOMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getCodeRuleOid() + SEP + s.getId(), t -> t));
- List<CodeAllCodeDO> addCodeDOs = new ArrayList<>();
- List<CodeAllCodeDO> editCodeDOs = new ArrayList<>();
- ruleGroup.forEach((ruleOid,allCodeDOS)->{
- VciBaseUtil.switchCollectionForOracleIn(allCodeDOS).stream().forEach(codeDOs->{
- Map<String,String> conditionMap = new HashMap<>();
- conditionMap.put("coderuleoid",ruleOid);
- conditionMap.put("id",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")");
- List<CodeAllCodeDO> existCodes = allCodeMapper.selectByCondition(conditionMap, new PageHelper(-1));
- if(!CollectionUtils.isEmpty(existCodes)){
- existCodes.stream().forEach(existCode->{
- String rule_id = existCode.getCodeRuleOid() + SEP + existCode.getId();
- if(codeDOMap.containsKey(rule_id)){
- CodeAllCodeDO newCodeDO = codeDOMap.get(rule_id);
- existCode.setCreateCodeOid(newCodeDO.getOid());
- existCode.setCreateCodeBtm(newCodeDO.getCreateCodeBtm());
- existCode.setCodeClassifyTemplateOid(newCodeDO.getCodeClassifyTemplateOid());
- existCode.setCodeClassifyOid(newCodeDO.getCodeClassifyOid());
- existCode.setLcStatus(newCodeDO.getLcStatus());
- editCodeDOs.add(existCode);
- }
- });
- }
- });
- });
- if(!CollectionUtils.isEmpty(editCodeDOs)){
- Set<String> exitIds = editCodeDOs.stream().map(s -> s.getCodeRuleOid() + SEP + s.getId()).collect(Collectors.toSet());
- addCodeDOs = allCodeDOList.stream().filter(s -> !exitIds.contains(s.getCodeRuleOid() + SEP + s.getId())).collect(Collectors.toList());
- }else{
- addCodeDOs = allCodeDOList;
- }
- if(!CollectionUtils.isEmpty(editCodeDOs)){
- batchCBO.copyFromOther(allCodeMapper.batchUpdate(editCodeDOs));
- }
- if(!CollectionUtils.isEmpty(addCodeDOs)){
- batchCBO.copyFromOther(allCodeMapper.batchInsert(addCodeDOs));
- Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
- batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
- s.setLcStatus(statusMap.get(s.getOid()));
- try {
- s.setAttributeValue("lcstatus",statusMap.get(s.getOid()));
- } catch (VCIError e) {
- e.printStackTrace();
- }
- });
- }
- }
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO);
- return codeList;
- }else {
- List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
- List<String> serialUnitList = new LinkedList<>();
- List<String> secValueList = new ArrayList<>();
- Map<String, String> secValueMap = secDTOList.stream().collect(Collectors.toMap(s -> s.getSecOid(), s -> s.getSecValue()));
- List<CodeBasicSecVO> serialSecVOList = new ArrayList<>();
- List<CodeBasicSecVO> attrSecVOList = new ArrayList<>();
- for (int i = 0; i < secVOList.size(); i++) {
- CodeBasicSecVO secVO = secVOList.get(i);
- switchSecValue(secVO, secValueMap, classifyFullInfoBO, serialSecVOList, attrSecVOList, serialUnitList, secValueList);
- }
- //澶勭悊灞炴�х爜娈靛拰娴佹按鐮佹
- Map<String/**娴佹按鐮佹鐨勪富閿�**/, Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap = new HashMap<>();
- List<CodeAllCodeDO> allCodeDOList = new ArrayList<>();
-
- //宸茬粡瀛樺偍鐨勬渶澶ф祦姘村彿鐨勫唴瀹�
- Map<String/**鐮佹鐨勪富閿�**/, Map<String, CodeSerialValueDO>> maxSerialValueMap = new HashMap<>();
-
- for (int i = 0; i < dataCBOList.size(); i++) {
- ClientBusinessObject cbo = dataCBOList.get(i);
- List<String> thisSecValueList = new LinkedList<>();
- for (int j = 0; j < secValueList.size(); j++) {
- thisSecValueList.add(secValueList.get(j));
- }
- List<String> thisSerialUnitList = new LinkedList<>();
- //鍥犱负娴佹按渚濇嵁姣忔鍙兘涓嶄竴鏍凤紝鎵�浠ユ瘡娆¢兘鎷疯礉涓�浠�
- for (int j = 0; j < serialUnitList.size(); j++) {
- thisSerialUnitList.add(serialUnitList.get(j));
- }
- //鍏堢湅鐪嬫湁娌℃湁灞炴�х殑鐮佹
- boolean attrSevIsSerialDepend = CollectionUtils.isEmpty(attrSecVOList) ? false : (attrSecVOList.stream().anyMatch(s -> VciBaseUtil.getBoolean(s.getSerialDependFlag())));
- switchAttrSecValue(attrSecVOList, cbo, thisSecValueList, attrSevIsSerialDepend, thisSerialUnitList);
-
- String serialUnitString = thisSerialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : thisSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE));
- switchSerialSecValue(serialSecVOList, attrSevIsSerialDepend, ruleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0);
-
- //缁勮缂栫爜鐨勫��
- cbo.setId(thisSecValueList.stream().collect(Collectors.joining()));
- codeList.add(cbo.getId());
- StringBuilder sb = new StringBuilder();
- //鎶婄爜娈甸噷闈㈤兘鎵句竴涓嬫祦姘村彿
- for (int j = 0; j < serialSecVOList.size(); j++) {
- CodeBasicSecVO secVO = serialSecVOList.get(j);
- Double serialValue = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()).getOrDefault(serialUnitString, 0d);
- if (serialValue != null) {
- sb.append(String.valueOf(serialValue.longValue())).append(SERIAL_VALUE_SPACE);
- }
- }
- //瑕佸瓨鍌ㄦ渶鍚庣殑鍏ㄩ儴allcode
- wrapperAllCode(classifyFullInfoBO, ruleVO, cbo, templateVO, allCodeDOList, serialUnitString, sb.toString());
- }
- batchCBO.copyFromOther(allCodeMapper.batchInsert(allCodeDOList));
- saveSerialValue(batchCBO, ruleVO, lastMaxSerialValueMap, maxSerialValueMap);
-
- Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
- batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
- s.setLcStatus(statusMap.get(s.getOid()));
- try {
- s.setAttributeValue("lcstatus",statusMap.get(s.getOid()));
- } catch (VCIError e) {
- e.printStackTrace();
- }
- });
-
-
- }
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO);
- return codeList;
- }
-
- /**
- * 鍘婚櫎琛ヤ綅瀛楃
- * @param s 瀛楃
- * @param fillString 琛ヤ綅瀛楃
- * @param left 鏄惁宸﹁ˉ浣�
- * @return 鏇挎崲鍚庣殑鍊�
- */
- private String killFillChar(String s, String fillString,boolean left){
- Integer index = 0;
- String value = s;
- if(left){
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
- index = i;
- }
- }
- if(index >0){
- value = value.substring(index);
- }
- }else{
- //浠庡彸寰�宸︽壘
- for (int i = s.length()-1; i >=0; i++) {
- char c = s.charAt(i);
- if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
- index = i;
- }
- }
- if(index >0){
- value = value.substring(0,index);
- }
- }
- return value;
-
- }
-
- /**
- * 鍘绘帀涓嶆槸鏁板瓧鐨勫瓧绗�
- * @param s 瀛楃
- * @return 鏇挎崲鍚庣殑鍊�
- */
- private String killUnNumberChar(String s){
- Integer lastUnNumberIndex = 0;
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- if(!(new String(new char[]{c})).matches(RegExpConstant.NUMBER)){
- lastUnNumberIndex = i;
- }
- }
- String value = s;
- if(lastUnNumberIndex >0){
- value = value.substring(lastUnNumberIndex);
- }
- return value;
- }
-
- /**
- * 鍥炴敹鐮佸��
- *
- * @param btmId 涓氬姟鏁版嵁鐨勪笟鍔$被鍨�
- * @param businessOidCollection 涓氬姟鏁版嵁鐨勪富閿�
- * @return 鍙楀奖鍝嶇殑鏁版嵁鍐呭
- */
- @Override
- public BatchCBO recycleCode(String btmId, Collection<String> businessOidCollection) {
- boolean oldPersistence = WebUtil.isPersistence();
- WebUtil.setPersistence(false);
- BatchCBO batchCBO = new BatchCBO();
- VciBaseUtil.switchCollectionForOracleIn(businessOidCollection).stream().forEach(oids-> {
- Map<String, String> conditionMap = new HashMap<>();
- //缂栫爜瑕佽褰曚负鍥炴敹鐨勭姸鎬�
- conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
- conditionMap.put("createcodebtm", btmId);
- List<CodeAllCodeDO> allCodeDOS = allCodeMapper.selectByCondition(conditionMap, new PageHelper(-1));
- if (!CollectionUtils.isEmpty(allCodeDOS)) {
- allCodeDOS.stream().forEach(codeDO->{
- codeDO.setLcStatus(CodeAllCodeLC.TASK_BACK.getValue());
- });
- batchCBO.copyFromOther(allCodeMapper.batchUpdate(allCodeDOS));
- }
- });
- WebUtil.setPersistence(oldPersistence);
- return batchCBO;
- }
-
- /**
- * 杞崲鐮佸�肩殑鍐呭
- * @param secVO 鐮佹鐨勫唴瀹�
- * @param secValueMap 鐮佸�肩殑鍐呭锛宬ey鏄爜娈电殑涓婚敭锛寁alue鏄爜鍊�
- * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
- * @param serialSecVOList 娴佹按鐮佹
- * @param attrSecVOList 灞炴�х爜娈�
- * @param serialUnitList 娴佹按渚濇嵁
- * @param secValueList 鐮佸�煎垪琛�
- */
- private void switchSecValue(CodeBasicSecVO secVO,Map<String,String> secValueMap,
- CodeClassifyFullInfoBO classifyFullInfoBO,List<CodeBasicSecVO> serialSecVOList,
- List<CodeBasicSecVO> attrSecVOList, List<String> serialUnitList,
- List<String> secValueList ){
- CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(secVO.getSectype());
- String secValue = secValueMap.getOrDefault(secVO.getOid(), "");
- switch (secType) {
- case CODE_FIXED_SEC:
- //鍥哄畾鐮佹鐨勶紝鐩存帴鐢ㄧ爜鍊�,涓嶈鐮佸�肩殑闀垮害鏄灏戯紝鍥犱负鍙彉闀垮害鍜屽浐瀹氶暱搴︽槸鎺у埗鍦ㄧ爜娈电鐞嗛噷闈㈢殑鐮佸�煎畾涔夌殑
- break;
- case CODE_DATE_SEC:
- //鏃堕棿鐮佹锛岄渶瑕佸皢褰撳墠鏃堕棿渚濇嵁鏃堕棿鏍煎紡杩涜杞崲.
- //鏃堕棿鐮佹涓嶆秹鍙婂埌鏄惁琛ヤ綅
- secValue = VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr());
- break;
- case CODE_CLASSIFY_SEC:
- //鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏�
- break;
- case CODE_LEVEL_SEC:
- //灞傜骇鐮佹锛岄渶瑕佷粠鍒嗙被涓婅幏鍙栫浉搴旂殑淇℃伅
- if (CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(secVO.getCodeLevelType())) {
- //鏈�灏忓眰锛屽洜涓烘垜浠彧鑳藉湪鍙跺瓙鑺傜偣涓婄敵璇风紪鐮侊紝鎵�浠ヨ繖涓氨鏄綋鍓嶅垎绫荤殑
- if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType()) || CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
- //灏辨槸褰撳墠鍒嗙被鐨�
- secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
- } else {
- //鎴戜滑闇�瑕佷粠椤跺眰寮�濮嬫壘鍒板綋鍓嶅垎绫讳负姝�
- secValue = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
- }
- } else {
- //鎸囧畾灞傦紝鎴戜滑闇�瑕侀�氳繃涓婄骇鐨勬潵鑾峰彇
- if (CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
- //璇存槑褰撳墠宸茬粡鏄渶楂樼殑浜�
- secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
- } else {
- //杩欎釜鎴戜滑闇�瑕佺湅鐪�,灞傜骇鏄笉鏄ぇ浜庝簡鏈�澶у眰绾х殑鏁�
- List<CodeClassifyVO> parentClassifyVOList = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).collect(Collectors.toList());
- if (secVO.getCodeLevelValue() > (parentClassifyVOList.size() + 1)) {
- //鎸囧畾鐨勫眰绾ф瘮褰撳墠鐨勫眰绾ц繕澶т簡锛屾墍浠ュ彧鑳借幏鍙栧綋鍓嶅眰绾т簡
- if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType())) {
- secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
- } else {
- secValue = parentClassifyVOList.stream().map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
- }
- } else {
- //鎴戜滑鑾峰彇鍏朵腑鎸囧畾灞傜殑鍐呭
- if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType())) {
- CodeClassifyVO classifyVO = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() == secVO.getCodeLevelValue().intValue()).findFirst().orElseGet(() -> null);
- if (classifyVO != null) {
- secValue = classifyVO.getId();
- }
- } else {
- //灏忎簬绛変簬鐨勫叏閮ㄦ嬁鍑烘潵
- secValue = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() <= secVO.getCodeLevelValue().intValue()).sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining());
- }
- }
- }
- }
- //鐪嬬湅闀垮害鏄惁闇�瑕佹埅鏂�
- if (!CodeCutTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getValueCutType()) &&
- secVO.getValueCutLength() != null && secVO.getValueCutLength() > 0 && secValue.length() > secVO.getValueCutLength()) {
- if (CodeCutTypeEnum.RIGHT.getValue().equalsIgnoreCase(secVO.getValueCutType())) {
- //宸︽埅鍙栨槸浠庡乏杈瑰壀鎺夛紝鍙虫埅鍙栨槸浠庡彸杈瑰壀鎺�--淇濈暀宸﹁竟
- secValue = secValue.substring(0, secVO.getValueCutLength());
- } else {
- secValue = secValue.substring(secValue.length() - secVO.getValueCutLength());
- }
- }
- break;
- case CODE_REFER_SEC:
- //寮曠敤鐨勫湪椤甸潰涓婂凡缁忛�夋嫨浜嗭紝鎵�浠ョ洿鎺ヤ娇鐢ㄥ墠绔笂浼犻�掔殑鍊�
- //寮曠敤灏辨槸鍙傜収锛屽彲鑳芥槸鍏朵粬鐨勫垎绫伙紙涓氬姟绫诲瀷锛変笅鐨勬暟鎹紝鎵�浠ュ彧鍦ㄩ〉闈笂閫夋嫨
- break;
- case CODE_ATTR_SEC:
- //灞炴�т笌寮曠敤鐨勫尯鍒槸锛屽睘鎬ф槸褰撳墠鏁版嵁閲岀殑灞炴�э紝鑰屽紩鐢ㄥ彲鑳芥槸寮曠敤鍏朵粬鐨勫垎绫荤殑锛堜笟鍔$被鍨嬶級
- //鍥犱负鍙兘鏄壒閲忕殑鏁版嵁鐨勬搷浣滐紝鎵�浠ユ垜浠繖閲屼笉鑳界洿鎺ュ鐞嗗睘鎬э紝闇�瑕佸悗杈逛竴杈瑰鐞�
- secValue = "${attr_" + secVO.getOid() + "}";
- attrSecVOList.add(secVO);
- break;
- case CODE_VARIABLE_SEC:
- //鍙彉鐮佹锛屾槸鍦ㄩ〉闈笂杈撳叆鍐呭
- if (secValue.length() > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
- throw new VciBaseException("銆恵0}銆戣繖涓爜娈垫槸鍙彉鐮佹锛屼絾鏄幇鍦ㄨ緭鍏ョ殑鐮佸�肩殑闀垮害({1})瓒呰繃浜嗚瀹氱殑闀垮害{2}", new String[]{secVO.getName(), String.valueOf(secValue.length()), secVO.getCodeSecLength()});
- }
- OsCodeFillTypeEnum fillTypeEnum = OsCodeFillTypeEnum.forValue(secVO.getCodeFillType());
- secValue = fillString(VciBaseUtil.getInt(secVO.getCodeSecLength()), fillTypeEnum, secValue, secVO.getCodeFillSeparator());
- break;
- case CODE_SERIAL_SEC:
- //娴佹按鐮佹
- serialSecVOList.add(secVO);
- secValue = "${" + secVO.getOid() + "}";
- default:
- break;
- }
- if (VciBaseUtil.getBoolean(secVO.getSerialDependFlag())) {
- serialUnitList.add(secValue);
- }
- secValueList.add(secValue);
- }
-
-
- /**
- * 琛ヤ綅
- * @param totalLength 鎬婚暱搴�
- * @param fillTypeEnum 琛ヤ綅鏂瑰紡
- * @param text 褰撳墠鐨勫唴瀹�
- * @param fillChar 琛ヤ綅鐨勫瓧绗�
- * @return 涓嶅~鍏呬綅缃拰闀垮害宸茬粡杈惧埌/瓒呰繃鐨勬椂鍊欎笉浼氬~鍏�
- */
- private String fillString(int totalLength,OsCodeFillTypeEnum fillTypeEnum,String text,String fillChar){
- if(text.length() >= totalLength || OsCodeFillTypeEnum.NONE.equals(fillTypeEnum)){
- //涓嶇敤琛ヤ綅浜�
- return text;
- }
- int balance = totalLength - text.length();
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < balance; i++) {
- sb.append(fillChar);
- }
- if(OsCodeFillTypeEnum.LEFT.equals(fillTypeEnum)) {
- text = sb.toString() + text;
- }else {
- text = text + sb.toString();
- }
- return text;
- }
-
- /**
- * 杞崲灞炴�х爜娈电殑鍊�
- * @param attrSecVOList 灞炴�х爜娈电殑鏄剧ず瀵硅薄
- * @param cbo 涓氬姟鏁版嵁锛岀敤浜庤幏鍙栫爜娈电殑鍊�
- * @param thisSecValueList 鐮佸�肩殑鍒楄〃
- * @param attrSevIsSerialDepend 鏄惁鏈変綔涓烘祦姘翠緷鎹�
- * @param serialUnitList 娴佹按渚濇嵁鐨勫唴瀹�
- */
- private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList,ClientBusinessObject cbo,
- List<String> thisSecValueList,boolean attrSevIsSerialDepend,
- List<String> serialUnitList){
- if (!CollectionUtils.isEmpty(attrSecVOList)) {
- attrSecVOList.stream().forEach(attrSevVO -> {
- String value = "";
- if (StringUtils.isNotBlank(attrSevVO.getGetValueClass())) {
- //浣跨敤缁勫悎瑙勫垯鏉ュ鐞嗙殑
- value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
- } else {
- value = cbo.getAttributeValue(attrSevVO.getReferAttributeId());
- }
- if (value == null) {
- value = "";
- }
- //鏇挎崲secValueList閲岄潰鐨勫唴瀹�
- for (int j = 0; j < thisSecValueList.size(); j++) {
- String secValue = thisSecValueList.get(j);
- if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
- thisSecValueList.set(j, value);
- }
- }
- if (attrSevIsSerialDepend) {
- //鏄祦姘翠緷璧栫殑璇濓紝闇�瑕佸幓鏇挎崲涓�涓�
- for (int j = 0; j < serialUnitList.size(); j++) {
- String secValue = serialUnitList.get(j);
- if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
- serialUnitList.set(j, value);
- }
- }
- }
- });
- }
- }
-
- /**
- * 浣跨敤CBO澶勭悊缁勫悎瑙勫垯鐨勫唴瀹�
- * @param cbo 鏁版嵁鐨勫唴瀹�
- * @param rule 瑙勫垯鐨勫唴瀹�
- * @return 杞崲鍚庣殑
- */
- private String getValueByFormulaForCBO(ClientBusinessObject cbo,String rule){
- Map<String,String> dataMap = new HashMap<>();
- WebUtil.copyValueToMapFromCbos(cbo,dataMap);
- return formulaService.getValueByFormula(dataMap,rule);
- }
-
- /**
- * 杞崲娴佹按鐮佹鐨勫��
- * @param serialSecVOList 娴佹按鐮佹
- * @param attrSevIsSerialDepend 鏄惁鏈夊睘鎬х爜娈靛弬涓庢祦姘�
- * @param ruleVO 瑙勫垯鐨勫唴瀹�
- * @param serialUnitString 娴佹按渚濇嵁
- * @param maxSerialValueMap 鏈�澶х殑娴佹按鍙�
- * @param thisSecValueList 鏈鐨勭爜鍊�
- * @param lastMaxSerialValueMap 灏佽鍚�
- * @param firstData 鏄惁涓虹涓�鏉℃暟鎹�
- */
- private void switchSerialSecValue(List<CodeBasicSecVO> serialSecVOList,boolean attrSevIsSerialDepend,
- CodeRuleVO ruleVO,String serialUnitString,
- Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/,CodeSerialValueDO>> maxSerialValueMap,List<String> thisSecValueList,
- Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap,boolean firstData){
- if (!CollectionUtils.isEmpty(serialSecVOList)) {
- for (int j = 0; j < serialSecVOList.size(); j++) {
- CodeBasicSecVO secVO = serialSecVOList.get(j);
- if (attrSevIsSerialDepend || firstData) {
- //濡傛灉灞炴�х爜娈典篃鏄緷璧栵紝鍒欐瘡娆¢兘瑕佹煡璇紝濡傛灉灞炴�х爜娈典笉鏄緷璧栵紝鍒欏彧鏌ヨ涓�娆�
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("codeRuleOid", ruleVO.getOid());
- conditionMap.put("serialUnit", serialUnitString);
- //杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
- conditionMap.put("codeSecOid", secVO.getOid());
- List<CodeSerialValueDO> serialValueDOS = serialValueMapper.selectByCondition(conditionMap, new PageHelper(-1));
- if (!CollectionUtils.isEmpty(serialValueDOS)) {
- Map<String, CodeSerialValueDO> unitSerialMap = maxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>());
- CodeSerialValueDO serialValueDO = serialValueDOS.get(0);
- unitSerialMap.put(serialValueDO.getSerialUnit(),serialValueDO);
- maxSerialValueMap.put(secVO.getOid(), unitSerialMap);
- }
- }
- Double startValue = null;
- if(maxSerialValueMap.containsKey(secVO.getOid()) && maxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){
- startValue = VciBaseUtil.getDouble(maxSerialValueMap.get(secVO.getOid()).get(serialUnitString).getMaxSerial());
- }
- if(lastMaxSerialValueMap.containsKey(secVO.getOid()) && lastMaxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){
- //璇存槑澶氫釜鐢宠锛屼箣鍓嶅凡缁忓姞浜嗘祦姘村彿浜�
- startValue = lastMaxSerialValueMap.get(secVO.getOid()).get(serialUnitString);
- }
- Double thisSerialValue = 0d;
- if (startValue == null) {
- //绗竴涓紪鐮�
- thisSerialValue = VciBaseUtil.getDouble(secVO.getSerialStart());
- } else {
- //娴佹按鍙疯偗瀹氭槸鏁板瓧
- thisSerialValue = startValue + (j + 1) * secVO.getSerialStep();
- }
- //瑕佺湅鏄惁瓒呰繃鏈�澶х殑娴佹按鍊�
- if (thisSerialValue >= secVO.getCodeFillLimit()) {
- throw new VciBaseException("娴佹按鍙峰凡缁忚秴杩囧厑璁哥殑鏈�澶ф祦姘村�納0}",new String[]{secVO.getCodeFillLimit().toString()});
- }
- //瑕佺湅琛ヤ綅鐨勫唴瀹�
- Integer fillLength = VciBaseUtil.getInt(secVO.getCodeFillLength());
- if (fillLength == 0 || fillLength > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
- //闃叉鍦ㄦ坊鍔犵殑鍦版柟娌℃湁鎺у埗姝g‘
- fillLength = VciBaseUtil.getInt(secVO.getCodeSecLength());
- }
- String serialString = String.valueOf(thisSerialValue.longValue());
- serialString = fillString(fillLength, OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()), serialString, secVO.getCodeFillSeparator());
- for (int z = 0; z < thisSecValueList.size(); z++) {
- String secValue = thisSecValueList.get(z);
- if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) {
- thisSecValueList.set(z, serialString);
- }
- }
- Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>());
- unitSerialMap.put(serialUnitString, thisSerialValue);
- lastMaxSerialValueMap.put(secVO.getOid(),unitSerialMap);
- }
- }
- }
-
- /**
- * 灏佽瀛樺偍鐮佸�肩殑瀵硅薄
- * @param classifyFullInfoBO 鍒嗙被鍏ㄩ儴鐨勪俊鎭�
- * @param ruleVO 瑙勫垯鐨勫唴瀹�
- * @param cbo 涓氬姟鏁版嵁
- * @param templateVO 妯℃澘鐨勪俊鎭�
- * @param allCodeDOList 鎵�鏈夌殑鐮佸�肩殑瀵硅薄鍒楄〃
- */
- private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO,CodeRuleVO ruleVO,
- ClientBusinessObject cbo,CodeClassifyTemplateVO templateVO,
- List<CodeAllCodeDO> allCodeDOList,String serialUnitString,String serialValueString){
- CodeAllCodeDO allCodeDO = new CodeAllCodeDO();
- allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
- allCodeDO.setCodeRuleOid(ruleVO.getOid());
- allCodeDO.setId(cbo.getId());
- allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid());
- allCodeDO.setCreateCodeBtm(cbo.getBtmName());
- allCodeDO.setCreateCodeOid(cbo.getOid());
- allCodeDO.setSerialUnit(serialUnitString);
- allCodeDO.setUnFillSerial(serialValueString);
- allCodeDO.setLcStatus(cbo.getLcStatus());
- allCodeDOList.add(allCodeDO);
- }
-
- /**
- * 淇濆瓨娴佹按鐨勪俊鎭�
- * @param batchCBO 鏁版嵁瀛樺偍瀹瑰櫒
- * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
- * @param lastMaxSerialValueMap 鏈�澶х殑娴佹按鍊兼槧灏�
- * @param maxSerialValueMap 渚濇嵁瀛樺偍鐨勬渶澶ф祦姘寸殑鍐呭
- */
- private void saveSerialValue(BatchCBO batchCBO,CodeRuleVO ruleVO,
- Map<String/**鐮佹鐨勪富閿�**/,Map<String, Double>> lastMaxSerialValueMap,
- Map<String/**鐮佹鐨勪富閿�**/,Map<String, CodeSerialValueDO>> maxSerialValueMap){
- List<CodeSerialValueDO> editSerialValueDOList = new ArrayList<>();
- List<CodeSerialValueDO> addSerialValueDOList = new ArrayList<>();
- //瀛樺偍鏈�澶ф祦姘村彿
- lastMaxSerialValueMap.forEach((secOid,maxSerialMap)->{
- maxSerialMap.forEach((unit,maxSerial)->{
- CodeSerialValueDO serialValueDO = null;
- if(maxSerialValueMap.containsKey(secOid) && maxSerialValueMap.get(secOid).containsKey(unit)){
- //璇存槑鏈�
- serialValueDO = maxSerialValueMap.get(secOid).get(unit);
- serialValueDO.setMaxSerial(maxSerial.toString());
- editSerialValueDOList.add(serialValueDO);
- }else{
- serialValueDO = new CodeSerialValueDO();
- serialValueDO.setCodeRuleOid(ruleVO.getOid());
- serialValueDO.setSerialUnit(unit);
- serialValueDO.setCodeSecOid(secOid);
- serialValueDO.setMaxSerial(maxSerial.toString());
- addSerialValueDOList.add(serialValueDO);
- }
- });
- });
- if(!CollectionUtils.isEmpty(editSerialValueDOList)){
- batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueDOList));
- }
- if(!CollectionUtils.isEmpty(addSerialValueDOList)){
- batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueDOList));
- }
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntAuthorityServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntAuthorityServiceImpl.java
deleted file mode 100644
index bdeaf08..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntAuthorityServiceImpl.java
+++ /dev/null
@@ -1,288 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.springblade.code.dao.SysIntAuthorityDaoI;
-import org.springblade.code.dto.SysIntAuthorityDTO;
-import org.springblade.code.enumpack.SysIntegrationAuthorityTypeEnum;
-import org.springblade.code.model.SysIntAuthorityDO;
-import org.springblade.code.service.SysIntAuthorityServiceI;
-import org.springblade.code.service.SysIntInfoServiceI;
-import org.springblade.code.vo.pagemodel.SysIntAuthorityVO;
-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 lihang
- * @date 2022-03-07
- */
-@Service
-public class SysIntAuthorityServiceImpl implements SysIntAuthorityServiceI {
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private SysIntAuthorityDaoI sysIntAuthorityMapper;
-
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
- /**
- * 绯荤粺闆嗘垚鐨勬帴鍙d俊鎭湇鍔�
- */
- @Autowired
- private SysIntInfoServiceI sysIntInfoService;
-
-
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntAuthorityVO> gridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- pageHelper.addDefaultDesc("createTime");
- List<SysIntAuthorityDO> doList = sysIntAuthorityMapper.selectByCondition(conditionMap,pageHelper);
- DataGrid<SysIntAuthorityVO> dataGrid=new DataGrid<SysIntAuthorityVO>();
- if (!CollectionUtils.isEmpty(doList)) {
- dataGrid.setData(sysIntAuthorityDO2VOs(doList));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntAuthorityMapper.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntAuthorityDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- @Override
- public List<SysIntAuthorityVO> sysIntAuthorityDO2VOs(Collection<SysIntAuthorityDO> sysIntAuthorityDOs) throws VciBaseException{
- List<SysIntAuthorityVO> voList = new ArrayList<SysIntAuthorityVO>();
- if(!CollectionUtils.isEmpty(sysIntAuthorityDOs)){
- for(SysIntAuthorityDO s: sysIntAuthorityDOs){
- SysIntAuthorityVO vo = sysIntAuthorityDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntAuthorityDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public SysIntAuthorityVO sysIntAuthorityDO2VO(SysIntAuthorityDO sysIntAuthorityDO) throws VciBaseException{
- SysIntAuthorityVO vo = new SysIntAuthorityVO();
- if(sysIntAuthorityDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
-
- }
- return vo;
- }
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntAuthorityVO addSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
- if (SysIntegrationAuthorityTypeEnum.LOGIN.getValue().equals(sysIntAuthorityDTO.getType())){
- VciBaseUtil.alertNotNull(sysIntAuthorityDTO.getUseraccount(),"鐢ㄦ埛鐧诲綍楠岃瘉鏂瑰紡鐨勯獙璇佺敤鎴�",sysIntAuthorityDTO.getUsercode(),"鐢ㄦ埛鐧诲綍楠岃瘉鏂瑰紡鐨勯獙璇佸瘑鐮�");
- } else if (SysIntegrationAuthorityTypeEnum.TOKEN.getValue().equals(sysIntAuthorityDTO.getType())) {
- VciBaseUtil.alertNotNull(sysIntAuthorityDTO.getToken(),"浠ょ墝楠岃瘉鏂瑰紡鐨勪护鐗�");
- }
- //灏咲TO杞崲涓篋O
- SysIntAuthorityDO sysIntAuthorityDO = new SysIntAuthorityDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDTO,sysIntAuthorityDO);
- sysIntAuthorityMapper.insert(sysIntAuthorityDO);
- return sysIntAuthorityDO2VO(sysIntAuthorityDO);
- }
-
- /**
- * 淇敼绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntAuthorityVO editSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"鏁版嵁瀵硅薄",sysIntAuthorityDTO.getOid(),"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佷富閿�");
- //灏咲TO杞崲涓篋O
- SysIntAuthorityDO sysIntAuthorityDO = selectByOid(sysIntAuthorityDTO.getOid());
- revisionModelUtil.copyFromDTOIgnore(sysIntAuthorityDTO,sysIntAuthorityDO);
- sysIntAuthorityMapper.updateByPrimaryKey(sysIntAuthorityDO);
- return sysIntAuthorityDO2VO(sysIntAuthorityDO);
- }
-
-
- /**
- * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
- * @param sysIntAuthorityDTO 鏁版嵁浼犺緭瀵硅薄
- * @param sysIntAuthorityDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
- * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
- */
- private BaseResult checkIsCanDeleteForDO(SysIntAuthorityDTO sysIntAuthorityDTO, SysIntAuthorityDO sysIntAuthorityDO) {
- SysIntAuthorityDO tsDO = new SysIntAuthorityDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDTO,tsDO);
- //boService.checkTs(tsDO);
- if(!checkIsLinked(sysIntAuthorityDO.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{
- return !sysIntInfoService.isAlreadyUse(null,oid);
- }
-
- /**
- * 鍒犻櫎绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- @Override
- public BaseResult deleteSysIntAuthority(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�",sysIntAuthorityDTO.getOid(),"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佺殑涓婚敭");
- SysIntAuthorityDO sysIntAuthorityDO = selectByOid(sysIntAuthorityDTO.getOid());
- BaseResult baseResult = checkIsCanDeleteForDO(sysIntAuthorityDTO,sysIntAuthorityDO);
- if(baseResult.isSuccess()) {
- }else{
- return baseResult;
- }
- //鎵ц鍒犻櫎鎿嶄綔
- BatchCBO batchCBO = sysIntAuthorityMapper.deleteByPrimaryKey(sysIntAuthorityDO.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 SysIntAuthorityVO getObjectByOid(String oid) throws VciBaseException{
- return sysIntAuthorityDO2VO(selectByOid(oid));
- }
-
- /**
- * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
- * @param oid 涓婚敭
- * @return 鏁版嵁瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- private SysIntAuthorityDO selectByOid(String oid) throws VciBaseException{
- VciBaseUtil.alertNotNull(oid,"涓婚敭");
- SysIntAuthorityDO sysIntAuthorityDO = sysIntAuthorityMapper.selectByPrimaryKey(oid.trim());
- if(sysIntAuthorityDO == null || StringUtils.isBlank(sysIntAuthorityDO.getOid())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- return sysIntAuthorityDO;
- }
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- @Override
- public Collection<SysIntAuthorityVO> listSysIntAuthorityByOids(Collection<String> oidCollections) throws VciBaseException{
- VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
- List<SysIntAuthorityDO> sysIntAuthorityDOList = listSysIntAuthorityDOByOidCollections(oidCollections);
- return sysIntAuthorityDO2VOs(sysIntAuthorityDOList);
- }
-
- /**
- * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
- * @param oidCollections 涓婚敭鐨勯泦鍚�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- private List<SysIntAuthorityDO> listSysIntAuthorityDOByOidCollections(Collection<String> oidCollections){
- List<SysIntAuthorityDO> sysIntAuthorityDOList = new ArrayList<SysIntAuthorityDO>();
- if(!CollectionUtils.isEmpty(oidCollections)){
- Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
- for(Collection<String> oids: oidCollectionsList){
- List<SysIntAuthorityDO> tempDOList = sysIntAuthorityMapper.selectByPrimaryKeyCollection(oids);
- if(!CollectionUtils.isEmpty(tempDOList)){
- sysIntAuthorityDOList.addAll(tempDOList);
- }
- }
- }
- return sysIntAuthorityDOList;
- }
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鎺ュ彛鐨勮璇佸垪琛�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntAuthorityVO> refDataGridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if(conditionMap == null){
- conditionMap = new HashMap<String, String>();
- }
- return gridSysIntAuthority(conditionMap,pageHelper);
- }
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntBaseServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntBaseServiceImpl.java
deleted file mode 100644
index b45ffd9..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntBaseServiceImpl.java
+++ /dev/null
@@ -1,283 +0,0 @@
-package org.springblade.code.service.impl;
-
-
-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.springblade.code.dao.SysIntBaseDaoI;
-import org.springblade.code.dto.SysIntBaseDTO;
-import org.springblade.code.model.SysIntBaseDO;
-import org.springblade.code.service.SysIntBaseServiceI;
-import org.springblade.code.service.SysIntInfoServiceI;
-import org.springblade.code.vo.pagemodel.SysIntBaseVO;
-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 lihang
- * @date 2022-03-07
- */
-@Service
-public class SysIntBaseServiceImpl implements SysIntBaseServiceI {
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private SysIntBaseDaoI sysIntBaseMapper;
-
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
- /**
- * 绯荤粺闆嗘垚鐨勬帴鍙d俊鎭湇鍔�
- */
- @Autowired
- private SysIntInfoServiceI sysIntInfoService;
-
-
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntBaseVO> gridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- pageHelper.addDefaultDesc("createTime");
- List<SysIntBaseDO> doList = sysIntBaseMapper.selectByCondition(conditionMap,pageHelper);
- DataGrid<SysIntBaseVO> dataGrid=new DataGrid<SysIntBaseVO>();
- if (!CollectionUtils.isEmpty(doList)) {
- dataGrid.setData(sysIntBaseDO2VOs(doList));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntBaseMapper.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntBaseDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- @Override
- public List<SysIntBaseVO> sysIntBaseDO2VOs(Collection<SysIntBaseDO> sysIntBaseDOs) throws VciBaseException{
- List<SysIntBaseVO> voList = new ArrayList<SysIntBaseVO>();
- if(!CollectionUtils.isEmpty(sysIntBaseDOs)){
- for(SysIntBaseDO s: sysIntBaseDOs){
- SysIntBaseVO vo = sysIntBaseDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntBaseDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public SysIntBaseVO sysIntBaseDO2VO(SysIntBaseDO sysIntBaseDO) throws VciBaseException{
- SysIntBaseVO vo = new SysIntBaseVO();
- if(sysIntBaseDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
-
- }
- return vo;
- }
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntBaseVO addSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntBaseDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
- //灏咲TO杞崲涓篋O
- SysIntBaseDO sysIntBaseDO = new SysIntBaseDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDTO,sysIntBaseDO);
- sysIntBaseMapper.insert(sysIntBaseDO);
- return sysIntBaseDO2VO(sysIntBaseDO);
- }
-
- /**
- * 淇敼绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntBaseVO editSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntBaseDTO,"鏁版嵁瀵硅薄",sysIntBaseDTO.getOid(),"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭富閿�");
- //灏咲TO杞崲涓篋O
- SysIntBaseDO sysIntBaseDO = selectByOid(sysIntBaseDTO.getOid());
- revisionModelUtil.copyFromDTOIgnore(sysIntBaseDTO,sysIntBaseDO);
- sysIntBaseMapper.updateByPrimaryKey(sysIntBaseDO);
- return sysIntBaseDO2VO(sysIntBaseDO);
- }
-
-
- /**
- * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
- * @param sysIntBaseDTO 鏁版嵁浼犺緭瀵硅薄
- * @param sysIntBaseDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
- * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
- */
- private BaseResult checkIsCanDeleteForDO(SysIntBaseDTO sysIntBaseDTO, SysIntBaseDO sysIntBaseDO) {
- SysIntBaseDO tsDO = new SysIntBaseDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDTO,tsDO);
- //boService.checkTs(tsDO);
- if(!checkIsLinked(sysIntBaseDO.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{
- return !sysIntInfoService.isAlreadyUse(oid,null);
- }
-
- /**
- * 鍒犻櫎绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- @Override
- public BaseResult deleteSysIntBase(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntBaseDTO,"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�",sysIntBaseDTO.getOid(),"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭殑涓婚敭");
- SysIntBaseDO sysIntBaseDO = selectByOid(sysIntBaseDTO.getOid());
- BaseResult baseResult = checkIsCanDeleteForDO(sysIntBaseDTO,sysIntBaseDO);
- if(baseResult.isSuccess()) {
-
- }else{
- return baseResult;
- }
- //鎵ц鍒犻櫎鎿嶄綔
- BatchCBO batchCBO = sysIntBaseMapper.deleteByPrimaryKey(sysIntBaseDO.getOid());
- return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
- }
-
- /**
- * 涓婚敭鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param oid 涓婚敭
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntBaseVO getObjectByOid(String oid) throws VciBaseException{
- return sysIntBaseDO2VO(selectByOid(oid));
- }
-
- /**
- * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
- * @param oid 涓婚敭
- * @return 鏁版嵁瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- private SysIntBaseDO selectByOid(String oid) throws VciBaseException{
- VciBaseUtil.alertNotNull(oid,"涓婚敭");
- SysIntBaseDO sysIntBaseDO = sysIntBaseMapper.selectByPrimaryKey(oid.trim());
- if(sysIntBaseDO == null || StringUtils.isBlank(sysIntBaseDO.getOid())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- return sysIntBaseDO;
- }
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- @Override
- public Collection<SysIntBaseVO> listSysIntBaseByOids(Collection<String> oidCollections) throws VciBaseException{
- VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
- List<SysIntBaseDO> sysIntBaseDOList = listSysIntBaseDOByOidCollections(oidCollections);
- return sysIntBaseDO2VOs(sysIntBaseDOList);
- }
-
- /**
- * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
- * @param oidCollections 涓婚敭鐨勯泦鍚�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- private List<SysIntBaseDO> listSysIntBaseDOByOidCollections(Collection<String> oidCollections){
- List<SysIntBaseDO> sysIntBaseDOList = new ArrayList<SysIntBaseDO>();
- if(!CollectionUtils.isEmpty(oidCollections)){
- Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
- for(Collection<String> oids: oidCollectionsList){
- List<SysIntBaseDO> tempDOList = sysIntBaseMapper.selectByPrimaryKeyCollection(oids);
- if(!CollectionUtils.isEmpty(tempDOList)){
- sysIntBaseDOList.addAll(tempDOList);
- }
- }
- }
- return sysIntBaseDOList;
- }
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鐨勭郴缁熶俊鎭垪琛�
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntBaseVO> refDataGridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if(conditionMap == null){
- conditionMap = new HashMap<String, String>();
- }
- return gridSysIntBase(conditionMap,pageHelper);
- }
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntInfoServiceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntInfoServiceImpl.java
deleted file mode 100644
index 3b250e1..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/SysIntInfoServiceImpl.java
+++ /dev/null
@@ -1,1091 +0,0 @@
-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.frameworkcore.constant.FrameWorkDefaultValueConstant;
-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.pagemodel.TreeQueryObject;
-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.redis.RedisService;
-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.springblade.code.bo.CodeTemplateAttrSqlBO;
-import org.springblade.code.constant.MdmBtmTypeConstant;
-import org.springblade.code.dao.*;
-import org.springblade.code.dto.SysIntHeaderDTO;
-import org.springblade.code.dto.SysIntInfoDTO;
-import org.springblade.code.dto.SysIntParamDTO;
-import org.springblade.code.dto.UpdateSysInfoStatusDTO;
-import org.springblade.code.dto.datapush.classify.JsonRootDataDTO;
-import org.springblade.code.dto.datapush.classify.NodeClassifyDTO;
-import org.springblade.code.dto.datapush.classify.NodeDataDTO;
-import org.springblade.code.dto.datapush.classify.NodeLibraryDTO;
-import org.springblade.code.dto.datapush.result.ResultJsonDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeDataDTO;
-import org.springblade.code.dto.datapush.result.ResultNodeObjectDTO;
-import org.springblade.code.enumpack.SysIntegrationAuthorityTypeEnum;
-import org.springblade.code.enumpack.SysIntegrationRequestTypeEnum;
-import org.springblade.code.enumpack.sysIntegrationPushTypeEnum;
-import org.springblade.code.model.*;
-import org.springblade.code.service.CodeClassifyServiceI;
-import org.springblade.code.service.MdmEngineServiceI;
-import org.springblade.code.service.SysIntBaseServiceI;
-import org.springblade.code.service.SysIntInfoServiceI;
-import org.springblade.code.utils.HttpUtils;
-import org.springblade.code.utils.WsErpClientUtil;
-import org.springblade.code.vo.pagemodel.*;
-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.frameworkcore.constant.FrameWorkLangCodeConstant.*;
-import static org.springblade.code.constant.MdmDuckingConstant.*;
-import static org.springblade.code.constant.MdmEngineConstant.CODE_CLASSIFY_OID_FIELD;
-
-
-/**
- * 绯荤粺闆嗘垚鍩虹淇℃伅鏈嶅姟
- * @author lihang
- * @date 2022-03-07
- */
-@Service
-public class SysIntInfoServiceImpl implements SysIntInfoServiceI {
-
- @Value("${dataSyncPush.dataParamName:xmlData}")
- public String DATA_PARAM_NAME;
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- /**
- * 鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private SysIntInfoDaoI sysIntInfoMapper;
-
- /**
- * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- /**
- * 瀵硅薄鐨勬搷浣�
- */
- @Autowired
- private RevisionModelUtil revisionModelUtil;
-
- /**
- * 绯荤粺闆嗘垚涓殑绯荤粺淇℃伅鏈嶅姟
- */
- @Autowired
- private SysIntBaseServiceI sysIntBaseService;
-
- /**
- * 鎺ュ彛鍙傛暟
- */
- @Autowired
- private SysIntParamDaoI sysIntParamDaoI;
-
- /**
- * 鎺ュ彛楠岃瘉淇℃伅
- */
- @Autowired
- private SysIntHeaderDaoI sysIntHeaderDaoI;
-
- /**
- * 鍒嗙被涓氬姟绫诲瀷鎿嶄綔鏈嶅姟
- */
- @Autowired
- private CodeClassifyServiceI codeClassifyServiceI;
- /**
- * 缂撳瓨鏈嶅姟
- */
- @Autowired
- private RedisService redisService;
- /**
- * 闆嗘垚鏃ュ織鏁版嵁鎿嶄綔灞�
- */
- @Resource
- private DockingLogeDaoI dockingLogeDaoI;
- @Resource
- private DockingTaskDaoI dockingTaskDaoI;
- /**
- * 鏁版嵁鏈嶅姟
- */
- @Autowired(required = false)
- @Lazy
- private MdmEngineServiceI mdmEngineServiceI;
-
- /**
- * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鍩虹淇℃伅
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntInfoVO> gridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if (pageHelper == null) {
- pageHelper = new PageHelper(-1);
- }
- pageHelper.addDefaultDesc("createTime");
- List<SysIntInfoDO> doList = sysIntInfoMapper.selectByCondition(conditionMap,pageHelper);
-// Set<String> targetIdList = doList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
-// Set<String> sourceIdList = doList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet());
-// List<String> oidList = new ArrayList<>();
-// oidList.addAll(targetIdList);
-// oidList.addAll(sourceIdList);
-// if (!CollectionUtils.isEmpty(oidList)) {
-// List<SysIntBaseVO> sysIntBaseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidList);
-// matchSysOid2BuildInfoDO(doList, sysIntBaseVOList);
-// }
- DataGrid<SysIntInfoVO> dataGrid=new DataGrid<SysIntInfoVO>();
- if (!CollectionUtils.isEmpty(doList)) {
- dataGrid.setData(sysIntInfoDO2VOs(doList));
- dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntInfoMapper.countByCondition(conditionMap))));
- }
- return dataGrid;
- }
-
- /**
- * 鏍规嵁BaseVO闆嗗悎涓殑oid瀵笽nfoDO鐨勭洰鏍囩郴缁熶富閿�佹潵婧愮郴缁熶富閿繘琛屽尮閰嶏紝缁勮绯荤粺鍚嶇О鍜岀郴缁熸爣璇�
- * @param doList 绯荤粺闆嗘垚鍩虹淇℃伅瀵硅薄闆嗗悎
- * @param sysIntBaseVOList 绯荤粺闆嗘垚绯荤粺淇℃伅闆嗗悎
- */
- private void matchSysOid2BuildInfoDO(List<SysIntInfoDO> doList, List<SysIntBaseVO> sysIntBaseVOList) {
- doList.forEach(info -> {
- sysIntBaseVOList.stream().filter(vo -> {
- return info.getTargetSystemOid().equals(vo.getOid());
- }).forEach(base -> {
- info.setTargetSysId(base.getId());
- info.setTargetSysName(base.getName());
- });
- sysIntBaseVOList.stream().filter(vo -> {
- return info.getSourceSystemOid().equals(vo.getOid());
- }).forEach(base -> {
- info.setSourceSysId(base.getId());
- info.setSourceSysName(base.getName());
- info.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(info.getAuthorityType()));
- });
- });
- }
- @Override
- public List<SysIntInfoDO> selectAll(Map conditonMap){
- return sysIntInfoMapper.selectAll(conditonMap);
- }
-
- /**
- * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntInfoDOs 鏁版嵁瀵硅薄鍒楄〃
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- @Override
- public List<SysIntInfoVO> sysIntInfoDO2VOs(Collection<SysIntInfoDO> sysIntInfoDOs) throws VciBaseException{
- List<SysIntInfoVO> voList = new ArrayList<SysIntInfoVO>();
- if(!CollectionUtils.isEmpty(sysIntInfoDOs)){
- for(SysIntInfoDO s: sysIntInfoDOs){
- SysIntInfoVO vo = sysIntInfoDO2VO(s);
- if(vo != null){
- voList.add(vo);
- }
- }
- }
- return voList;
- }
-
- /**
- * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
- * @param sysIntInfoDO 鏁版嵁瀵硅薄
- * @return 鏄剧ず瀵硅薄
- * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO) throws VciBaseException{
- SysIntInfoVO vo = new SysIntInfoVO();
- if(sysIntInfoDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- vo.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(vo.getPushType()));
-
- }
- return vo;
- }
-
- /**
- * 澧炲姞绯荤粺闆嗘垚鍩虹淇℃伅
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntInfoVO addSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntInfoDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
- checkColumnNotNull(sysIntInfoDTO);
- String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
- SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
- sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
- sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
- sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
- sysIntInfoDTO.setUsedflag("true");//璁剧疆榛樿鍚敤鐘舵��
-
- //灏咲TO杞崲涓篋O
- SysIntInfoDO sysIntInfoDO = new SysIntInfoDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,sysIntInfoDO);
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
-
- BatchCBO batchCBO_update = new BatchCBO();
- BatchCBO sysIntInfoBo= sysIntInfoMapper.insert(sysIntInfoDO);
-
- List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
- List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
- sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
- SysIntParamDO sysIntParamDO = new SysIntParamDO();
- sysIntParamDTO.setInfoOid(sysIntInfoDO.getOid());
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
- sysIntParamDOS.add(sysIntParamDO);
- });
- }
- List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
- List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
- sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
- SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
- sysIntHeaderDTO.setInfoOid(sysIntInfoDO.getOid());
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
- sysIntHeaderDOS.add(sysIntHeaderDO);
- });
- }
-
- batchCBO_update.copyFromOther(sysIntInfoBo);
- //鎵归噺澶勭悊淇濆瓨header瀵硅薄
- if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
- BatchCBO sysIntHeaderBO = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
- batchCBO_update.copyFromOther(sysIntHeaderBO);
- }
- //鎵归噺澶勭悊淇濆瓨Param瀵硅薄
- if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
- BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
- batchCBO_update.copyFromOther(sysIntParamBO);
- }
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
-
- return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
- }
-
- /**
- *
- * @param sysIntInfoDO
- * @param sysIntHeaderDOS
- * @param sysIntParamDOS
- * @return
- */
- private SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO, List<SysIntHeaderDO> sysIntHeaderDOS, List<SysIntParamDO> sysIntParamDOS) {
- SysIntInfoVO vo = new SysIntInfoVO();
- if(sysIntInfoDO != null){
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
- //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
- List<SysIntParamVO> sysIntParamVOs=new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntParamDOS)){
- sysIntParamDOS.stream().forEach(sysIntParamDO -> {
- SysIntParamVO sysIntParamVO=new SysIntParamVO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDO,sysIntParamVO);
- sysIntParamVOs.add(sysIntParamVO);
- });
- vo.setSysIntParamVOs(sysIntParamVOs);
- }
- List<SysIntHeaderVO> sysIntHeaderVOs=new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
- sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
- SysIntHeaderVO sysIntHeaderVO=new SysIntHeaderVO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDO,sysIntHeaderVO);
- sysIntHeaderVOs.add(sysIntHeaderVO);
- });
- vo.setSysIntHeaderVOs(sysIntHeaderVOs);
- }
- }
- return vo;
- }
-
- /**
- * 绯荤粺闆嗘垚鎺ュ彛鍩虹淇℃伅Null瀛楁妫�楠�
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- private void checkColumnNotNull(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
- if (SysIntegrationRequestTypeEnum.HTTP.getValue().equals(sysIntInfoDTO.getInterfacetype())){
- VciBaseUtil.alertNotNull(sysIntInfoDTO.getRequesturl(),"HTTP鎺ュ彛鐨勮姹傚湴鍧�",sysIntInfoDTO.getRequestmethod(),"HTTP鎺ュ彛鐨勮姹傛柟寮�");
- }
- if (SysIntegrationRequestTypeEnum.WEB_SERVICE.getValue().equals(sysIntInfoDTO.getInterfacetype())){
- VciBaseUtil.alertNotNull(sysIntInfoDTO.getInterfaceFunction(),"WebService鐨勬帴鍙e嚱鏁�");
- }
- if (SysIntegrationRequestTypeEnum.CLASSPATH.getValue().equals(sysIntInfoDTO.getInterfacetype())){
- VciBaseUtil.alertNotNull(sysIntInfoDTO.getClassPath(),"绫昏矾寰�");
- }
- }
-
- /**
- * 淇敼绯荤粺闆嗘垚鍩虹淇℃伅
- * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
- * @return 鎵ц缁撴灉
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntInfoVO editSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntInfoDTO,"鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
-
-
- String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
- SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
- sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
- sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
- sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
-
- //灏咲TO杞崲涓篋O
- SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
- revisionModelUtil.copyFromDTOIgnore(sysIntInfoDTO,sysIntInfoDO);
- String sysInfoOid=sysIntInfoDO.getOid();
- List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
- List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
- sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
- SysIntParamDO sysIntParamDO = new SysIntParamDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
- sysIntParamDOS.add(sysIntParamDO);
- });
- }
- List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
- List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
- if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
- sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
- SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
- sysIntHeaderDOS.add(sysIntHeaderDO);
- });
- }
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
- BatchCBO batchCBO_update = new BatchCBO();
- BatchCBO sysIntInfoBo= sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
-
- batchCBO_update.copyFromOther(sysIntInfoBo);
- //鎵归噺澶勭悊淇濆瓨header瀵硅薄
- if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
- List<String> idList=new ArrayList<>();
- List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
- for (SysIntHeaderDO sysIntHeaderDO:headers_old){
- sysIntHeaderDO.setUsedflag(FLAG_FAIL);
- idList.add(sysIntHeaderDO.getOid());
- }
- if(idList.size()!=0){
- BatchCBO sysIntHeaderDeleteBO = sysIntHeaderDaoI.batchDeleteByOids(idList);
- batchCBO_update.copyFromOther(sysIntHeaderDeleteBO);
- }
- //鍐嶆柊澧瀐eaders
- for(SysIntHeaderDO sysIntHeaderDO:sysIntHeaderDOS){
- sysIntHeaderDO.setUsedflag(FLAG_TRUE);
- sysIntHeaderDO.setInfoOid(sysIntInfoDTO.getOid());
-
- }
- BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
- batchCBO_update.copyFromOther(batchCBO_insert);
- }
- //鎵归噺澶勭悊淇濆瓨Param瀵硅薄
- if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
- //鍏堝垹闄arams_old
- List<String> idList=new ArrayList<>();
- List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
- for (SysIntParamDO sysIntParamDO:params_old){
- sysIntParamDO.setUsedflag(FLAG_FAIL);
- idList.add(sysIntParamDO.getOid());
- }
- if(idList.size()!=0){
- BatchCBO sysIntParamDeleteBO = sysIntParamDaoI.batchDeleteByOids(idList);
- batchCBO_update.copyFromOther(sysIntParamDeleteBO);
- }
- //鍐嶆柊澧瀙arams
- for(SysIntParamDO sysIntParamDOi:sysIntParamDOS){
- sysIntParamDOi.setUsedflag(FLAG_TRUE);
- sysIntParamDOi.setInfoOid(sysIntInfoDTO.getOid());
- }
- BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
- batchCBO_update.copyFromOther(sysIntParamBO);
- }
- WebUtil.setPersistence(true);//涓嶆墽琛屼繚瀛�
- boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
- return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
- }
-
- /**
- * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
- * @param sysIntInfoDTO 鏁版嵁浼犺緭瀵硅薄
- * @param sysIntInfoDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
- * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
- */
- private BaseResult checkIsCanDeleteForDO(SysIntInfoDTO sysIntInfoDTO, SysIntInfoDO sysIntInfoDO) {
- SysIntInfoDO tsDO = new SysIntInfoDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,tsDO);
- boService.checkTs(tsDO);
- if(!checkIsLinked(sysIntInfoDO.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 sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
- * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
- * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
- */
- @Override
- public BaseResult deleteSysIntInfo(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
- VciBaseUtil.alertNotNull(sysIntInfoDTO,"绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅鐨勪富閿�");
- SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
- BaseResult baseResult = checkIsCanDeleteForDO(sysIntInfoDTO,sysIntInfoDO);
- if(baseResult.isSuccess()) {
-
- }else{
- return baseResult;
- }
- WebUtil.setPersistence(false);
- BatchCBO batchCBO_update = new BatchCBO();
- //鎵ц鍒犻櫎鎿嶄綔
- BatchCBO batchCBO = sysIntInfoMapper.deleteByPrimaryKey(sysIntInfoDO.getOid());
- batchCBO_update.copyFromOther(batchCBO);
- List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(sysIntInfoDO.getOid());
- if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
- List<String>headerIdList=new ArrayList<>();
- sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
- headerIdList.add(sysIntHeaderDO.getOid());
- });
- BatchCBO headerBO=sysIntHeaderDaoI.batchDeleteByOids(headerIdList);
- batchCBO_update.copyFromOther(headerBO);
- }
- List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid (sysIntInfoDO.getOid());
- if(!CollectionUtils.isEmpty(sysIntParamDOS)){
- List<String>paramIdList=new ArrayList<>();
- sysIntParamDOS.stream().forEach(sysIntParamDO -> {
- paramIdList.add(sysIntParamDO.getOid());
- });
- BatchCBO paramBO= sysIntParamDaoI.batchDeleteByOids(paramIdList);
- batchCBO_update.copyFromOther(paramBO);
- }
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
- return (batchCBO_update!=null && batchCBO_update.getDeleteCbos() !=null &&batchCBO_update.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
- }
-
- /**
- * 涓婚敭鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
- * @param oid 涓婚敭
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
- */
- @Override
- public SysIntInfoVO getObjectByOid(String oid) throws VciBaseException{
-
- SysIntInfoDO sysIntInfoDO= selectByOid(oid);
- List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(oid.trim());
- List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid(oid.trim());
- return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
- }
-
- /**
- * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
- * @param oid 涓婚敭
- * @return 鏁版嵁瀵硅薄
- * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
- */
- private SysIntInfoDO selectByOid(String oid) throws VciBaseException{
- VciBaseUtil.alertNotNull(oid,"涓婚敭");
- SysIntInfoDO sysIntInfoDO = sysIntInfoMapper.selectByPrimaryKey(oid.trim());
- if(sysIntInfoDO == null || StringUtils.isBlank(sysIntInfoDO.getOid())){
- throw new VciBaseException(DATA_OID_NOT_EXIST);
- }
- return sysIntInfoDO;
- }
-
- /**
- * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
- * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
- * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
- */
- @Override
- public Collection<SysIntInfoVO> listSysIntInfoByOids(Collection<String> oidCollections) throws VciBaseException{
- VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
- List<SysIntInfoDO> sysIntInfoDOList = listSysIntInfoDOByOidCollections(oidCollections);
- return sysIntInfoDO2VOs(sysIntInfoDOList);
- }
-
- /**
- * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
- * @param oidCollections 涓婚敭鐨勯泦鍚�
- * @return 鏁版嵁瀵硅薄鍒楄〃
- */
- private List<SysIntInfoDO> listSysIntInfoDOByOidCollections(Collection<String> oidCollections){
- List<SysIntInfoDO> sysIntInfoDOList = new ArrayList<SysIntInfoDO>();
- if(!CollectionUtils.isEmpty(oidCollections)){
- Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
- for(Collection<String> oids: oidCollectionsList){
- List<SysIntInfoDO> tempDOList = sysIntInfoMapper.selectByPrimaryKeyCollection(oids);
- Set<String> oidSet = tempDOList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
- oidSet.addAll(tempDOList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet()));
- List<SysIntBaseVO> baseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidSet);
- matchSysOid2BuildInfoDO(tempDOList,baseVOList);
- if(!CollectionUtils.isEmpty(tempDOList)){
- sysIntInfoDOList.addAll(tempDOList);
- }
- }
- }
- return sysIntInfoDOList;
- }
-
-
-
- /**
- * 鍙傜収绯荤粺闆嗘垚鍩虹淇℃伅鍒楄〃
- * @param conditionMap 鏌ヨ鏉′欢
- * @param pageHelper 鍒嗛〉鍜屾帓搴�
- * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public DataGrid<SysIntInfoVO> refDataGridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
- if(conditionMap == null){
- conditionMap = new HashMap<String, String>();
- }
- return gridSysIntInfo(conditionMap,pageHelper);
- }
-
- /**
- * 褰撳墠鎺ュ彛淇℃伅鏄惁鏈変娇鐢ㄧ洰鏍囦俊鎭�
- * @param sysOid 绯荤粺Oid
- * @param authorityOid 璁よ瘉鏂瑰紡Oid
- * @return true = 鍦ㄤ娇鐢� 锛沠alse = 鏈娇鐢�
- * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public boolean isAlreadyUse(String sysOid, String authorityOid) throws VciBaseException {
- Map<String,String> conditionMap = new HashMap<>();
- if (StringUtils.isNotBlank(sysOid)){
- conditionMap.put("sourceSystemOid",sysOid);
- Long countSource = sysIntInfoMapper.countByCondition(conditionMap);
- if (countSource > 0){
- return true;
- }
- conditionMap.clear();
- conditionMap.put("targetSystemOid",sysOid);
- Long countTarget = sysIntInfoMapper.countByCondition(conditionMap);
- if (countTarget > 0){
- return true;
- }
- conditionMap.clear();
- }
- if (StringUtils.isNotBlank(authorityOid)){
- conditionMap.put("authorityOid",authorityOid);
- Long countAuthority = sysIntInfoMapper.countByCondition(conditionMap);
- if (countAuthority > 0){
- return true;
- }
- }
- return false;
- }
-
- //=========浠ヤ笅绯荤粺鍙傛暟鍜岄獙璇佷俊鎭�
-
- /**
- * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛param
- * @param sysInfoOid
- * @return
- */
- @Override
- public List<SysIntParamDO> getParamsBySystemInfoOid(String sysInfoOid){
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntParamDO.class);
- queryWrapper.addQueryMap("infoOid",sysInfoOid);
- queryWrapper.addQueryMap("usedflag",FLAG_TRUE);
- List<SysIntParamDO> all_params = sysIntParamDaoI.selectByWrapper(queryWrapper);
- return all_params;
- }
-
- /**
- * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塸aram
- * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塸aram
- * @return
- */
- @Override
- public BaseResult updateParams(String sysInfoOid,List<SysIntParamDO> params){
-
- //鍏堜綔搴熸墍鏈夌殑params_old
- List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
- for (SysIntParamDO sysIntParamDO:params_old){
- sysIntParamDO.setUsedflag(FLAG_FAIL);
- }
-
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
- BatchCBO batchCBO_update = new BatchCBO();
- if(params_old.size()!=0){
- batchCBO_update = sysIntParamDaoI.batchUpdate(params_old);
- }
-
- if(params!=null&¶ms.size()!=0) {
- //鍐嶆柊澧瀙arams
- for(SysIntParamDO sysIntParamDOi:params){
- sysIntParamDOi.setUsedflag(FLAG_TRUE);
- }
- BatchCBO batchCBO_insert = sysIntParamDaoI.batchInsert(params);
- batchCBO_update.copyFromOther(batchCBO_insert);
- }
-
- WebUtil.setPersistence(true);//鎵ц淇濆瓨
- boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
- return BaseResult.success("淇濆瓨鎴愬姛!");
- }
-
- /**
- * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛header
- * @param sysInfoOid
- * @return
- */
- @Override
- public List<SysIntHeaderDO> getHeadersBySystemInfoOid(String sysInfoOid){
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntHeaderDO.class);
- queryWrapper.addQueryMap("infoOid",sysInfoOid);
- queryWrapper.addQueryMap("usedflag",FLAG_TRUE);
- List<SysIntHeaderDO> all_headers = sysIntHeaderDaoI.selectByWrapper(queryWrapper);
- return all_headers;
- }
-
- /**
- * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塰eader
- * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塰eader
- * @return
- */
- @Override
- public BaseResult updateHeaders(String sysInfoOid,List<SysIntHeaderDO> headers){
- //鍏堜綔搴熸墍鏈夌殑headers_old
- List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
- for (SysIntHeaderDO sysIntHeaderDO:headers_old){
- sysIntHeaderDO.setUsedflag(FLAG_FAIL);
- }
-
- WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
- BatchCBO batchCBO_update = new BatchCBO();
- if(headers_old.size()!=0){
- batchCBO_update = sysIntHeaderDaoI.batchUpdate(headers_old);
- }
-
- if(headers!=null&&headers.size()!=0) {
- //鍐嶆柊澧瀐eaders
- for(SysIntHeaderDO sysIntHeaderDO:headers){
- sysIntHeaderDO.setUsedflag(FLAG_TRUE);
- }
- BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(headers);
- batchCBO_update.copyFromOther(batchCBO_insert);
- }
-
- WebUtil.setPersistence(true);//鎵ц淇濆瓨
- boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
- return BaseResult.success("淇濆瓨鎴愬姛!");
- }
-
- @Override
- public List<SysIntInfoDO> getSysInfoByClassifyOid(String[] classifyOids) {
- return null;
- }
-
- /***
- *璁剧疆鏄惁鍚敤/鍋滅敤
- * @param sysInfoStatusDTO
- * @return
- */
- @Override
- public BaseResult updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO){
- VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"鏁版嵁瀵硅薄",sysInfoStatusDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
- SysIntInfoDO sysIntInfoDO = selectByOid(sysInfoStatusDTO.getOid());
- try {
- sysIntInfoDO.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat));
- } catch (Exception e) {
- e.printStackTrace();
- }
- if(sysInfoStatusDTO.getUpdate().equals("disable")) {
- sysIntInfoDO.setUsedflag("false");
- }else{
- sysIntInfoDO.setUsedflag("true");
- }
- sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
- return BaseResult.success();
- }
-
- /***
- * 鎺ㄩ�佸垎绫�/鏁版嵁
- * @param sysIntInfoDTO
- * @return
- * @throws VciBaseException
- */
- @Override
- public BaseResult pushData(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
- VciBaseUtil.alertNotNull(sysIntInfoDTO,"鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
- boolean issuccess=false;
- String type="鏁版嵁鎺ㄩ��";
- if(sysIntInfoDTO.getPushType().equalsIgnoreCase("1")){//鎺ㄩ�佹暟鎹�
- pushDockingTasks(sysIntInfoDTO);
- }else if(sysIntInfoDTO.getPushType().equalsIgnoreCase("2")){//鎺ㄩ�佸垎绫�
- issuccess= pushClsfDatas(sysIntInfoDTO);
- type="鍒嗙被鎺ㄩ��";
- }
- return issuccess?BaseResult.successMsg(type+"鎴愬姛锛�"):BaseResult.successMsg(type+"澶辫触锛�");
- }
- private BaseResult pushDockingTasks(SysIntInfoDTO sysIntInfoDTO) {
- String msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�";
- try {
- SysIntInfoVO sysIntInfoVO = getObjectByOid(sysIntInfoDTO.getOid());
- String codeClassifyOid = sysIntInfoVO.getClassifyoid();
- CodeClassifyTemplateVO templateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(codeClassifyOid);
- CodeClassifyVO topClassifyVO = codeClassifyServiceI.getTopClassifyVO(codeClassifyOid);
- String btmTypeId = topClassifyVO.getBtmtypeid();
- if (StringUtils.isBlank(btmTypeId)) {
- return BaseResult.fail("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
- }
- List<CodeClassifyVO> codeClassifyIdPathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "id", false);
- List<CodeClassifyVO> codeClassifynamePathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "name", false);
- Map<String/**鍒嗙被oid**/, String/**鍒嗙被浠e彿閾炬帴绗�**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
- Map<String/**鍒嗙被oid**/, String/**鍒嗙被鍚嶇О閾炬帴绗�**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
-
- PageHelper pageHelper = new PageHelper();
- pageHelper.setPage(1);
- pageHelper.setLimit(1000000);
- pageHelper.setStart(0);
- HashMap<String, String> conditionMap = new HashMap<>();
- if (!codeClassifyServiceI.checkHasChild(codeClassifyOid)) {
- conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
- } else {
- conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
- + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
- "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
- }
- conditionMap.put("islastr", "1");
- conditionMap.put("islastv", "1");
- List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"}));
- conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0])));
-
- CodeTemplateAttrSqlBO sqlBO = mdmEngineServiceI.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper);
- List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
- List<DockingTaskDO> dockingTaskDO_insert = new ArrayList<>();
- if (!CollectionUtils.isEmpty(maps)) {
- maps.stream().forEach(map -> {
- String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁oid
- String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎺ㄩ�佺被鍨�
- String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//缂栫爜
- String btmid = topClassifyVO.getBtmtypeid();//鏁版嵁涓氬姟绫诲瀷
- String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎵�鍦ㄧ殑鍒嗙被id
- String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr);
- DockingTaskDO dockingTaskDO = new DockingTaskDO();
- dockingTaskDO.setOid(date2Str +"_"+id);
- dockingTaskDO.setSendflag(SEND_FLAG_FALSE);
- dockingTaskDO.setId(id);//缂栫爜
- dockingTaskDO.setUniquecode("");
- dockingTaskDO.setBtmoid(btmoid);//鏁版嵁oid
- dockingTaskDO.setBtmid(btmid);//鏁版嵁涓氬姟绫诲瀷id
- if (clsfOidIdMap.containsKey(classifyoid)) {
- String classifyid = clsfOidIdMap.get(classifyoid);
- dockingTaskDO.setClassifyid(classifyid);//鏁版嵁鍦ㄥ垎绫籭d
- }
- dockingTaskDO.setClassifyoid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id
- if (clsfOidNameMap.containsKey(classifyoid)) {
- String classifyname = clsfOidNameMap.get(classifyoid);
- dockingTaskDO.setClassifyname(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉�
- }
- dockingTaskDO.setSendtype(sendtype);//鏁版嵁鎺ㄩ�佺被鍨�
- //String dataoid=redisService.getUUIDEveryDay();
- dockingTaskDO.setDataoid(date2Str +"_"+ btmoid);
- //intinfo
- dockingTaskDO.setSysinfooid(sysIntInfoVO.getOid());//intinfo鐨刼id
- dockingTaskDO.setSystemoid(sysIntInfoVO.getSysbaseoid());//绯荤粺oid
- dockingTaskDO.setSystemcode(sysIntInfoVO.getSysbaseid());//绯荤粺缂栫爜
- dockingTaskDO.setSystemname(sysIntInfoVO.getSysbasename());//绯荤粺name
- dockingTaskDO_insert.add(dockingTaskDO);
- });
- }
- BatchCBO bo = dockingTaskDaoI.batchInsert(dockingTaskDO_insert);
-
- }catch (Throwable e){
- msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!";
- logger.error("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!"+e);
- e.printStackTrace();
- }finally {
- logger.info(msg);
- return BaseResult.successMsg("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�");
- }
- }
- private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){
- String[] s=StringValue.split("#");
- StringBuffer sb=new StringBuffer();
- List<String> list=new ArrayList<>(Arrays.asList(s));
- Collections.reverse(list);
- System.out.println(list.toString());
- for (String o:list){
- if(StringUtils.isNotBlank(o)){
- sb.append(o).append(",");
- }
- }
- sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName());
- System.out.println(sb.toString());
-
- return sb.toString();
- }
- /***
- * 鍒嗙被鎺ㄩ�侀泦鎴�
- * @param sysIntInfoDTO
- * @return
- */
- private boolean pushClsfDatas(SysIntInfoDTO sysIntInfoDTO){
- SysIntInfoVO sysIntInfoVO= getObjectByOid(sysIntInfoDTO.getOid());
- String classOid= sysIntInfoVO.getClassifyoid();
- List<CodeClassifyVO> listChildrenClassify= codeClassifyServiceI.listChildrenClassify(classOid,true,"id",false);
- List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
- JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
- NodeDataDTO nodeDataDTO=new NodeDataDTO();
- //姣忎釜task涓�涓簨鍔★紝寮�鍚�
- WebUtil.setPersistence(false);
- BatchCBO batchCBO = new BatchCBO();
- boolean isSuccess=false;
- try {
- String sendString = "";
- if (!CollectionUtils.isEmpty(listChildrenClassify)) {
- listChildrenClassify.stream().forEach(codeClassifyVO -> {
- NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
- nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//鍒嗙被浠e彿
- nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//鍒嗙被鎻忚堪
- nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//鍏ㄨ矾寰�
- nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//鐘舵��
- nodeClassifyDTO.setPid(codeClassifyVO.getId());//鐖秈d鑺傜偣
- nodeClassifyDTO.setId(codeClassifyVO.getOid());//鍒嗙被oid
- nodeClassifyDTO.setName(codeClassifyVO.getName());//鍒嗙被鍚嶇О
- nodeClassifyDTOList.add(nodeClassifyDTO);
- });
- NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
- nodeLibraryDTO.setClassify(nodeClassifyDTOList);
- CodeClassifyVO rootClassify = codeClassifyServiceI.getTopClassifyVO(classOid);
- nodeLibraryDTO.setId(rootClassify.getOid());
- nodeLibraryDTO.setName(rootClassify.getName());
- nodeDataDTO.setLibrary(nodeLibraryDTO);
- jsonRootDataDTO.setData(nodeDataDTO);
- String paramType = sysIntInfoDTO.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, batchCBO);
- isSuccess=true;
- }
- }catch (Throwable e){
- e.printStackTrace();
- isSuccess=false;
- }finally {
- //姣忎竴涓猼ask涓�涓簨鐗�
- WebUtil.setPersistence(true);
- boService.persistenceBatch(batchCBO);
- return true;
- }
- }
- /***
- * 璋冪敤鎺ュ彛
- * @param sysIntInfoVO
- * @throws Throwable
- */
- private void callInterface(String sendString , SysIntInfoVO sysIntInfoVO,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<SysIntParamVO> sysIntParamVOList = sysIntInfoVO.getSysIntParamVOs();
- //鏌ヨheader
- List<SysIntHeaderVO> sysIntHeaderVOList =sysIntInfoVO.getSysIntHeaderVOs();
- if(type.equals(URLTYPE_HTTP)) {
- if (requestmethod.equals(URLTYPE_GET)) {//GET璇锋眰
- String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
- //鎷兼帴param
- for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
- sendurl = sendurl + "&" + sysIntParamVO.getParamkey() + "=" + sysIntParamVO.getParamvalue();
- }
- paramString = sendurl;
- backString = HttpUtils.get(sendurl);
- } else if (requestmethod.equals(URLTYPE_POST)) {//POST璇锋眰
- MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
- if(!CollectionUtils.isEmpty(sysIntParamVOList)) {
- for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
- params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
- }
- }
- params.add(DATA_PARAM_NAME,sendString);
- paramString = params.toString();
- MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
- if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) {
- for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
- headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.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 (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
- params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
- }
- paramString = sendString;
- MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
- for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
- headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.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.getClassifyid());
- resultNodeObjectDTO.setOid(sysIntInfoVO.getClassifyoid());
- 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(sysIntInfoVO.getSysbaseid());
- dockingLogeDO.setSystemname(sysIntInfoVO.getSysbasename());
- dockingLogeDO.setSystemoid(sysIntInfoVO.getSysbaseoid());
- dockingLogeDO.setClassifyoid(sysIntInfoVO.getClassifyoid());
- dockingLogeDO.setClassifyid(sysIntInfoVO.getClassifyid());
- dockingLogeDO.setClassifyname(sysIntInfoVO.getClassifyname());
- dockingLogeDO.setId(sysIntInfoVO.getId());
- dockingLogeDO.setUniquecode("");
- dockingLogeDO.setInterfacestatus(isSend?"true":"false");
- dockingLogeDO.setParamstring(paramString);
- dockingLogeDO.setType(DATA_LOGE_OUT);
- dockingLogeDO.setReturnstring(backString);
- dockingLogeDO.setMsg(msg);
- logger.info("闆嗘垚鎺ㄩ�佹暟鎹�,systemcode:"+sysIntInfoVO.getSysbaseid()+",systemname:"+sysIntInfoVO.getSysbasename()+",url:"+url+",param:"+paramString+",e:"+msg);
- BatchCBO dockingLogeDOBo = dockingLogeDaoI.insert(dockingLogeDO);
- batchCBO.copyFromOther(dockingLogeDOBo);
- }
- }
- }
-
- private void initData(String rootClassOid , Map<String,String> clsfOidIdMap,Map<String,String> clsfOidNameMap){
- TreeQueryObject treeQueryObject=new TreeQueryObject();
- treeQueryObject.setParentOid(rootClassOid);
- treeQueryObject.setQueryAllLevel(true);
- List<CodeClassifyDO> codeClassifyDOList=codeClassifyServiceI.selectCodeClassifyDOByTree(treeQueryObject);
- if(!CollectionUtils.isEmpty(codeClassifyDOList)){
- codeClassifyDOList.stream().forEach(codeClassify->{
- String id=codeClassify.getId();
- String name=codeClassify.getName();
- });
-
- }
- }
-}
-
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/UniversalInterfaceImpl.java b/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/UniversalInterfaceImpl.java
deleted file mode 100644
index 5bd4fb8..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/UniversalInterfaceImpl.java
+++ /dev/null
@@ -1,913 +0,0 @@
-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.starter.web.constant.QueryOptionConstant;
-import com.vci.starter.web.pagemodel.SessionInfo;
-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.VciQueryWrapperForDO;
-import com.vci.web.pageModel.BatchCBO;
-import com.vci.web.redis.RedisService;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.webservice.annotation.VciWebservice;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.code.bo.CodeClassifyFullInfoBO;
-import org.springblade.code.constant.MdmDuckingConstant;
-import org.springblade.code.dao.DockingLogeDaoI;
-import org.springblade.code.dto.CodeOrderDTO;
-import org.springblade.code.dto.CodeOrderSecDTO;
-import org.springblade.code.enumpack.CodeSecTypeEnum;
-import org.springblade.code.model.CodeClassifyDO;
-import org.springblade.code.model.DockingLogeDO;
-import org.springblade.code.service.CodeClassifyServiceI;
-import org.springblade.code.service.MdmEngineServiceI;
-import org.springblade.code.service.MdmIOServiceI;
-import org.springblade.code.service.UniversalInterfaceI;
-import org.springblade.code.utils.AttributeMapConfig;
-import org.springblade.code.utils.gennerAttrMapUtil;
-import org.springblade.code.vo.pagemodel.*;
-import org.springblade.code.vo.universalInter.apply.*;
-import org.springblade.code.vo.universalInter.attrmap.ClsfAttrMappingDO;
-import org.springblade.code.vo.universalInter.attrmap.LibraryClsfDO;
-import org.springblade.code.vo.universalInter.attrmap.LibraryDO;
-import org.springblade.code.vo.universalInter.attrmap.RowDatas;
-import org.springblade.code.vo.universalInter.classify.*;
-import org.springblade.code.vo.universalInter.data.*;
-import org.springblade.code.vo.universalInter.result.json.*;
-import org.springblade.code.vo.universalInter.result.xml.XMLResultClassfyVO;
-import org.springblade.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
-import org.springblade.code.vo.universalInter.result.xml.XMLResultSystemVO;
-import org.springframework.beans.factory.annotation.Autowired;
-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 org.springblade.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
-
-
-/***
- * 缁熶竴鎺ュ彛
- */
-@VciWebservice(path = "/universalInterface")
-public class UniversalInterfaceImpl implements UniversalInterfaceI {
-
- /**
- * 鏃ュ織
- */
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- @Autowired
- private AttributeMapConfig attributeMapConfig;
- /**
- * 缂撳瓨鏈嶅姟
- */
- @Autowired
- private RedisService redisService;
- /**
- * 涓婚搴撳垎绫荤殑鏈嶅姟
- */
- @Autowired
- private CodeClassifyServiceI classifyService;
- /**
- * 涓绘暟鎹紩鎿庣殑鏈嶅姟
- */
- @Autowired
- private MdmEngineServiceI engineService;
-
- /**
- * 闆嗘垚鎺ュ彛鏃ュ織鏈嶅姟鐨勯厤缃�
- */
- @Resource
- private DockingLogeDaoI dockingLogeDao;
- /**
- * 瀵嗙骇鐨勬湇鍔�
- */
-
- @Autowired
- private MdmIOServiceI mdmIOService;
- /**
- * 鏁版嵁鐨勬湇鍔�
- */
- @Autowired
- private WebBoServiceI boService;
-
- private static String separator="##VCI##";
- private String errorid="0";
- private String msg="鎴愬姛";
- private String objerrorCode="0";
- private String objerrorMsg="鎴愬姛";
-
- @Override
- public String applyCode(String data, String dataType) throws Throwable {
- String resultStr = "";
- String errorid="0";
- msg="鎴愬姛";
- objerrorCode="0";
- objerrorMsg="鎴愬姛";
- logger.info("鐢宠缂栫爜鐨勬暟鎹弬鏁�:->"+data);
- logger.info("鐢宠缂栫爜鐨勬暟鎹被鍨�:->"+dataType);
- String systemId="";
- List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
- try {
- if(StringUtils.isBlank(data)) {
- errorid="101";
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
- }
- InterParameterVO interParameterVO =new InterParameterVO();
- //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
- try {
- if ("xml".equals(dataType)) {
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(RootDataVO.class);
- xStream.autodetectAnnotations(true);
- RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
- interParameterVO.setData(rootDataVO);
- } else {
- interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
- }
- }catch (Throwable e){
- errorid="101";
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
- }
- ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
- systemId = interParameterVO.getData().getSystemId();
- UserVO userVo = interParameterVO.getData().getUser();
- List<ClassfyVO> classVOList = classfysVO.getClassify();
- InterParameterVO finalInterParameterVO = interParameterVO;
-
- //杩欐槸璐﹀彿淇℃伅
- SessionInfo sessionInfo = new SessionInfo();
- sessionInfo.setUserId(userVo.getUserName());
- sessionInfo.setUserName(userVo.getTrueName());
- sessionInfo.setIp(userVo.getIp());
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
-
- String finalSystemId = systemId;
- classVOList.stream().forEach(classVO -> {
- logger.info("鍙傛暟锛氬垎绫籆Ode:" + classVO.getClassCode());
- LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
- //鑾峰彇鍒嗙被淇℃伅
- try {
- String libray = classVO.getLibrary();
- CodeClassifyVO codeClassifyVO = getClassfy(classVO);
- logger.info("end锛氬垎绫绘煡璇㈠畬姣�");
- //鑾峰彇鍒嗙被妯℃澘淇℃伅
- if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
- objerrorCode="100";
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅");
- }
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
- objerrorCode="1";
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�");
- }
- logger.info("end锛氭ā鏉挎煡璇㈠畬姣�");
- ApplyDatasVO applyDatasVO = classVO.getObjects();
- org.springblade.code.vo.universalInter.attrmap.DataObjectVO dataObjectVO = new org.springblade.code.vo.universalInter.attrmap.DataObjectVO();
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
- logger.info("end锛氭暟鎹粍缁囧畬姣�");
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
- if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
- objerrorCode="1";
- logger.info("classifyFullInfo:"+"鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
- }
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
- objerrorCode="102";
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旇鍒�");
- }
- logger.info("end锛氳鍒欒幏鍙栧畬姣�");
- List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classVO.getSections().getSection(), ruleVO);
- logger.info("end锛氱爜娈佃幏鍙栧畬姣�");
- CodeOrderDTO orderDTO = new CodeOrderDTO();
- orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
- orderDTO.setSecDTOList(codeOrderSecDTOList);//鍒嗙被鐮佹
- mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs);
- logger.info("end锛氱敵璇疯幏鍙栧畬姣�");
- } catch (Throwable e) {
- XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- xmlResultDataObjectDetailDO.setCode("");
- xmlResultDataObjectDetailDO.setId("");
- xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
- xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:"+e.getMessage());
- resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
- e.printStackTrace();
- }finally {
- XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
- resultClassfyVO.setClassCode(classVO.getClassCode());
- resultClassfyVO.setLibrary(classVO.getLibrary());
- resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
- resultClassfyVO.setObjects(resultDataObjectDetailDOs);
- resultClassfyVOList.add(resultClassfyVO);
- }
- });
- XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
- xmlResultSystemVO.setClassifys(resultClassfyVOList);
- xmlResultSystemVO.setMsg(msg);
- xmlResultSystemVO.setErrorid(errorid);
- resultStr= transferResultXMl(xmlResultSystemVO,dataType);
- }catch (Throwable e){
- e.printStackTrace();;
- msg="鐢宠缂栫爜澶辫触:"+e.getMessage();
- /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
- XMLResultSystemVO.setErrorid(errorid);
- XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage());
- XMLResultSystemVO.setClassifys(resultClassfyVOList);
- resultStr=transferResultXMl(XMLResultSystemVO,dataType);
-
- logger.error("鐢宠缂栫爜澶辫触锛�->"+e);
- return resultStr;*/
- }finally {
- XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
- xmlResultSystemVO.setClassifys(resultClassfyVOList);
- xmlResultSystemVO.setMsg(msg);
- xmlResultSystemVO.setErrorid(errorid);
- resultStr= transferResultXMl(xmlResultSystemVO,dataType);
- final boolean[] issucess = {true};
- if(!errorid.equals("0")) {
- issucess[0] = false;
- }else {
- if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
- resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
- xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
- if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
- issucess[0] = false;
- msg=objec.getMsg();
- }
- });
- });
- }
-
- }
- try {
- //璁板綍鏃ュ織
- this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
- }catch (Throwable e){
- e.printStackTrace();
- }
- }
- logger.info("杩斿洖鍙傛暟:"+resultStr);
-
- return resultStr;
- }
-
- /***
- * 闆嗘垚鏇存柊鎺ュ彛
- * @param data 锛氭暟鎹俊鎭弬鏁帮細鏍规嵁datatype瀹氫箟鍏舵牸寮弜ml/json
- * @param dataType 纭畾灞炴�т俊鎭弬鏁颁紶杈撴牸寮�
- * @return
- * @throws Throwable
- */
- @Override
- public String syncEditData(String data, String dataType) throws Throwable {
- String resultStr = "";
- String errorid="0";
- msg="鎴愬姛";
- String systemId="";
- objerrorCode="0";
- objerrorMsg="鎴愬姛";
- logger.info("鏇存敼缂栫爜鐨勬暟鎹弬鏁�:->"+data);
- logger.info("鏇存敼缂栫爜鐨勬暟鎹被鍨�:->"+dataType);
- List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
- try {
- if (StringUtils.isBlank(data)) {
- errorid = "101";
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
- }
- InterParameterVO interParameterVO = new InterParameterVO();
- //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
- try {
- if ("xml".equals(dataType)) {
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(RootDataVO.class);
- xStream.autodetectAnnotations(true);
- RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
- interParameterVO.setData(rootDataVO);
- } else {
- interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
- }
- } catch (Throwable e) {
- errorid = "101";
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
-
- }
- ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
- systemId = interParameterVO.getData().getSystemId();
- UserVO userVo = interParameterVO.getData().getUser();
- List<ClassfyVO> classVOList = classfysVO.getClassify();
- InterParameterVO finalInterParameterVO = interParameterVO;
- //杩欐槸璐﹀彿淇℃伅
- SessionInfo sessionInfo = new SessionInfo();
- sessionInfo.setUserId(userVo.getUserName());
- sessionInfo.setUserName(userVo.getTrueName());
- sessionInfo.setIp(userVo.getIp());
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- String finalSystemId = systemId;
- classVOList.stream().forEach(classVO->{
- logger.info("鍙傛暟锛氬垎绫籆Ode:" + classVO.getClassCode());
- LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
- //鑾峰彇鍒嗙被淇℃伅
- try {
- String libray = classVO.getLibrary();
- CodeClassifyVO codeClassifyVO = getClassfy(classVO);
- if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
- objerrorCode="100";
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅");
- }
- logger.info("end锛氬垎绫绘煡璇㈠畬姣�");
- //鑾峰彇鍒嗙被妯℃澘淇℃伅
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
- if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
- objerrorCode="102";
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�");
- }
- logger.info("end锛氭ā鏉挎煡璇㈠畬姣�");
- ApplyDatasVO applyDatasVO = classVO.getObjects();
- org.springblade.code.vo.universalInter.attrmap.DataObjectVO dataObjectVO = new org.springblade.code.vo.universalInter.attrmap.DataObjectVO();
- //灏嗛粯璁ょ殑灞炴�у叏閮ㄦ浛鎹㈡帀
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
- ).collect(Collectors.toList());
- this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
- logger.info("end锛氭暟鎹瀯寤哄畬姣�");
- logger.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�");
- mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs);
- logger.info("end锛氫慨鏀规暟鎹墽琛屽畬姣�");
- } catch (Throwable e) {
- XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
- xmlResultDataObjectDetailDO.setCode("");
- xmlResultDataObjectDetailDO.setId("");
- xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
- xmlResultDataObjectDetailDO.setMsg("缂栫爜鏇存敼/鐘舵�佹洿鏀�/鍒犻櫎:"+e.getMessage());
- resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
- e.printStackTrace();
- }finally {
- XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
- resultClassfyVO.setClassCode(classVO.getClassCode());
- resultClassfyVO.setLibrary(classVO.getLibrary());
- resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
- resultClassfyVO.setObjects(resultDataObjectDetailDOs);
- resultClassfyVOList.add(resultClassfyVO);
- }
-
- });
- }catch (Throwable e){
- e.printStackTrace();;
- msg="缂栫爜鏇存敼/鐘舵�佹洿鏀�/鍒犻櫎:"+e.getMessage();
- /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
- XMLResultSystemVO.setErrorid(errorid);
- XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage());
- XMLResultSystemVO.setClassifys(resultClassfyVOList);
- resultStr=transferResultXMl(XMLResultSystemVO,dataType);
-
- logger.error("鐢宠缂栫爜澶辫触锛�->"+e);
- return resultStr;*/
- }finally {
- XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
- xmlResultSystemVO.setClassifys(resultClassfyVOList);
- xmlResultSystemVO.setMsg(msg);
- xmlResultSystemVO.setErrorid(errorid);
- resultStr= transferResultXMl(xmlResultSystemVO,dataType);
- final boolean[] issucess = {true};
- if(!errorid.equals("0")) {
- issucess[0] = false;
- }else {
- if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
- resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
- xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
- if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
- issucess[0] = false;
- msg=objec.getMsg();
- }
- });
- });
- }
-
- }
- try {
- //璁板綍鏃ュ織
- this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "syncEditData");
- }catch (Throwable e){
- e.printStackTrace();
- }
- }
- logger.info("杩斿洖鍙傛暟:"+resultStr);
- //瀛樺偍鏃ュ織
- return resultStr;
- }
-
- /****
- * 鏌ヨ鍒嗙被
- * @param data
- * @param dataType
- * @return
- * @throws Throwable
- */
- @Override
- public String queryClassify(String data, String dataType) throws Throwable{
- boolean issucess=false;
- String resultStr = "";
- String errorid="0";
- msg="鎴愬姛";
- String systemId="";
- logger.info("鏌ヨ鍒嗙被鐨勬暟鎹弬鏁�:->"+data);
- logger.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
- ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
- List<ClassifyVO> classifyVOList=new ArrayList<>();
- ResultData resultData=new ResultData();
- try {
- if (StringUtils.isBlank(data)) {
- errorid = "101";
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
- }
- QueryClassifyVO queryClassifyVO = new QueryClassifyVO();
- //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
- try {
- if ("xml".equals(dataType)) {
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(QueryData.class);
- xStream.autodetectAnnotations(true);
- QueryData queryData = (QueryData) xStream.fromXML(data);
- queryClassifyVO.setData(queryData);
- } else {
- queryClassifyVO = JSONObject.toJavaObject(JSONObject.parseObject(data), QueryClassifyVO.class);
- }
- } catch (Throwable e) {
- errorid = "101";
- msg="鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�";
- e.printStackTrace();
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
- }
- QueryData queryData=queryClassifyVO.getData();
- UserVO userVo=queryData.getUserVo();
- systemId=queryData.getSystemId();
- QueryLibraryVO libraryVO= queryData.getLibrary();
- String libId= libraryVO.getId();
- List<String> classifyIdList= libraryVO.getClassifyid();
- List<CodeClassifyDO> codeClassifyDOS =new ArrayList<>();
- //杩欐槸璐﹀彿淇℃伅
- //杩欐槸璐﹀彿淇℃伅
- SessionInfo sessionInfo = new SessionInfo();
- sessionInfo.setUserId(userVo.getUserName());
- sessionInfo.setUserName(userVo.getTrueName());
- sessionInfo.setIp(userVo.getIp());
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
- if(!CollectionUtils.isEmpty(classifyIdList)){
- //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
- queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(classifyIdList.toArray(new String[0])));
- codeClassifyDOS=classifyService.selectByWrapper(queryWrapper);
- }else {
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
- queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(libId));
- List<CodeClassifyDO> libIdDos =classifyService.selectByWrapper(queryWrapper);
- String oid= libIdDos.get(0).getOid();
-
- TreeQueryObject treeQueryObject=new TreeQueryObject();
- treeQueryObject.setParentOid(oid);
- treeQueryObject.setQueryAllLevel(true);
- codeClassifyDOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
- }
- LibraryVO libraryVo=new LibraryVO();
- libraryVo.setId(libId);
- libraryVo.setName("");
- if(!CollectionUtils.isEmpty(codeClassifyDOS)){
- errorid = "0";
- msg="鎴愬姛!";
- codeClassifyDOS.stream().forEach(codeClassifyDO -> {
- ClassifyVO classifyVO=new ClassifyVO();
- classifyVO.setId(codeClassifyDO.getOid());
- classifyVO.setLcStatus(codeClassifyDO.getLcStatus());
- classifyVO.setClassCode(codeClassifyDO.getId());
- classifyVO.setDescription(codeClassifyDO.getDescription());
- classifyVO.setName(codeClassifyDO.getName());
- classifyVO.setPid(codeClassifyDO.getParentCodeClassifyOid());
- classifyVO.setFullPathName(codeClassifyDO.getPath());
- classifyVOList.add(classifyVO);
- });
- libraryVo.setClassify(classifyVOList);
- }else{
- errorid = "100";
- msg="鏈煡璇㈠埌鐩稿叧鐨勫垎绫讳俊鎭�";
- }
- issucess=true;
- resultData.setLibrary(libraryVo);
- }catch (Throwable e){
- e.printStackTrace();;
- msg="鏌ヨ鍒嗙被澶辫触:"+e.getMessage();
- }finally {
- resultData.setErrorid(errorid);
- resultData.setMsg(msg);
- resultClassifyVO.setResultData(resultData);
- }
- if(dataType.equals("xml")){
- //缁勭粐杩斿洖鎺ュ彛淇℃伅
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(XMLResultSystemVO.class);
- xStream.autodetectAnnotations(true);
- resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultData);
-
- }else{
- Object object = JSONObject.toJSON(resultClassifyVO);
- resultStr = object.toString();
- }
- try {
- //璁板綍鏃ュ織
- this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
- }catch (Throwable e){
- e.printStackTrace();
- }
- logger.info("杩斿洖鍙傛暟:"+resultStr);
- return resultStr;
- }
-
- /***
- *
- * @param data
- * @param dataType
- * @return
- * @throws Throwable
- */
- @Override
- public String queryData(String data, String dataType) throws Throwable {
- boolean issucess=false;
- String resultStr = "";
- String errorid="0";
- msg="鎴愬姛";
- String systemId="";
- logger.info("鏌ヨ鍒嗙被鐨勬暟鎹弬鏁�:->"+data);
- logger.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
- DataCondtionsVO dataCondtionsVO=new DataCondtionsVO();
- ResultDataVO resultDataVO=new ResultDataVO();
- try {
- try {
- if ("xml".equals(dataType)) {
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(CondtionsVO.class);
- xStream.autodetectAnnotations(true);
- CondtionsVO condtionsVO = (CondtionsVO) xStream.fromXML(data);
- dataCondtionsVO.setCondtions(condtionsVO);
- } else {
- dataCondtionsVO = JSONObject.toJavaObject(JSONObject.parseObject(data), DataCondtionsVO.class);
- }
- } catch (Throwable e) {
- errorid = "101";
- msg = "鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�";
- e.printStackTrace();
- throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
- }
- CondtionsVO condtionsVO=dataCondtionsVO.getCondtions();
- systemId=condtionsVO.getSystemId();
- UserVO userVo=condtionsVO.getUser();
- CondtionVO condtionVO= condtionsVO.getCondtion();
- SessionInfo sessionInfo = new SessionInfo();
- sessionInfo.setUserId(userVo.getUserName());
- sessionInfo.setUserName(userVo.getTrueName());
- sessionInfo.setIp(userVo.getIp());
- VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
-
- String classCode=condtionVO.getClassCode();
- String library= condtionVO.getLibrary();
- String queryFileds= condtionVO.getQueryFileds();
-
- List<CodeClassifyDO> codeClassifyDOS =new ArrayList<>();
- //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
- VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
- queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(classCode));
- List<CodeClassifyDO> libIdDos =classifyService.selectByWrapper(queryWrapper);
- if(!CollectionUtils.isEmpty(libIdDos)){
- CodeClassifyDO currentCodeClassifyDO=libIdDos.get(0);
- String oid=currentCodeClassifyDO.getOid();
- TreeQueryObject treeQueryObject=new TreeQueryObject();
- treeQueryObject.setParentOid(oid);
- treeQueryObject.setQueryAllLevel(true);
- codeClassifyDOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
- codeClassifyDOS.add(currentCodeClassifyDO);
- Map<String, CodeClassifyDO> oidCodeclassifyDOMap = codeClassifyDOS.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
-
- List<PropertyVO> propertyVOS=condtionVO.getPro();
- Map<String,String> condtionMap=new HashMap<>();
- propertyVOS.stream().forEach(propertyVO -> {
- condtionMap.put(propertyVO.getFiledName(),propertyVO.getFiledValue());
- });
- condtionMap.put("codeclsfid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) + ")");
- List<ClientBusinessObject> clientBusinessObjects= boService.queryCBO( currentCodeClassifyDO.getBtmTypeId(),condtionMap);
- List<DataObjectVO> dataObjectVOS=new ArrayList<>();
- if(!CollectionUtils.isEmpty(clientBusinessObjects)){
- CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassifyDO.getOid());
- Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
-
- clientBusinessObjects.stream().forEach(cbo -> {
- DataObjectVO dataObjectVO=new DataObjectVO();
- dataObjectVO.setCode(cbo.getId());
- dataObjectVO.setStatus(cbo.getLcStatus());
- String codeclsfid=cbo.getAttributeValue("codeclsfid");
- if(oidCodeclassifyDOMap.containsKey(codeclsfid)){
- CodeClassifyDO classifyDO= oidCodeclassifyDOMap.get(codeclsfid);
- dataObjectVO.setClassCode(classifyDO.getId());
- }
- dataObjectVO.setLibrary(library);
- String [] newQueryFileds=queryFileds.split(",");
- List<PropertyVO> propertyVOList=new ArrayList<>();
- for(String filed:newQueryFileds){
- String value=cbo.getAttributeValue(filed);
- if(filedAttributeMap.containsKey(filed)){
- CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed);
- PropertyVO propertyVO=new PropertyVO();
- propertyVO.setFiledName(filed);
- propertyVO.setFiledValue(value);
- propertyVO.setOutname(attrVO.getName());
- propertyVOList.add(propertyVO);
- }
- }
- dataObjectVO.setPro(propertyVOList);
- dataObjectVOS.add(dataObjectVO);
- });
- resultDataVO.setObject(dataObjectVOS);
- }
- }
- errorid = "0";
- msg = "鏁版嵁鏌ヨ鎴愬姛";
- }catch (Throwable e){
- e.printStackTrace();;
- msg="鏌ヨ鏁版嵁澶辫触:"+e.getMessage();
- }finally {
- resultDataVO.setErrorid(errorid);
- resultDataVO.setMsg(msg);
- }
- ResultVO resultVO=new ResultVO();
- resultVO.setData(resultDataVO);
- if(dataType.equals("xml")){
- //缁勭粐杩斿洖鎺ュ彛淇℃伅
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(XMLResultSystemVO.class);
- xStream.autodetectAnnotations(true);
- resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultDataVO);
- }else{
- Object object = JSONObject.toJSON(resultVO);
- resultStr = object.toString();
- }
- try { //璁板綍鏃ュ織
- this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
- }catch (Throwable e){
- e.printStackTrace();
- }
- logger.info("杩斿洖鍙傛暟:"+resultStr);
- return resultStr;
- }
-
- /***
- * 鏌ヨ鏍¢獙鍒嗙被淇℃伅
- * @param classfyVO
- */
- private CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{
- CodeClassifyVO classifyVO = new CodeClassifyVO();
- try {
- String classCode = classfyVO.getClassCode();
- String className = classfyVO.getFullclsfNamePath();
- //鏍规嵁鍒嗙被浠e彿鏌ヨ鍒嗙被淇℃伅
- if (StringUtils.isNotBlank(classfyVO.getClassCode())) {
- Map<String, String> conditionMap = new HashMap<>();
- conditionMap.put("id", classCode);
- VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap, CodeClassifyDO.class);
- List<CodeClassifyDO> codeClassifyDOS = classifyService.selectByWrapper(wrapper);
- if (!CollectionUtils.isEmpty(codeClassifyDOS)) {
- CodeClassifyDO classifyDO = codeClassifyDOS.get(0);
- //灏咲TO杞崲涓篋O
- classifyVO = new CodeClassifyVO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO);
- if(StringUtils.isBlank(classifyVO.getOid())){
- throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
- }
- }else{
- throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
- }
- } else {
- classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/"));
- if(StringUtils.isBlank(classifyVO.getOid())){
- throw new Throwable("鏍规嵁鍒嗙被鍚嶇О璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
- }
- }
- }catch (Throwable e){
- objerrorCode="100";
- new Throwable("鑾峰彇鍒嗙被淇℃伅澶辫触:"+e.getMessage());
- }
- return classifyVO;
- }
-
- /***
- * 鏍规嵁绌垮叆鐨勫弬鏁颁俊鎭牎楠岀爜娈佃鍒�
- */
- private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO) throws Throwable{
- List<CodeBasicSecVO> codeBasicSecVOS= ruleVO.getSecVOList();
- Map<String,String> sectionVOMap=new HashMap<>();
- SectionVOList.stream().forEach(SectionVO->{
- sectionVOMap.put(SectionVO.getName(),SectionVO.getValue());
- });
- List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
- for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
- String sectype = codeBasicSecVO.getSectype();
- if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
- String name = codeBasicSecVO.getName();
- String sectypeText = codeBasicSecVO.getSectypeText();
- logger.info("鐮佹鍚嶇О:"+name);
- logger.info("鎻忚堪:"+sectypeText);
- CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
- if (sectionVOMap.containsKey(name)) {
- CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
- String sectypeValue = sectionVOMap.get(name);
- logger.info("鐮佹鍊�:"+sectypeValue);
- CodeOrderSecDTO.setSecValue(sectypeValue);
- codeOrderSecDTOList.add(CodeOrderSecDTO);
- } else {
- objerrorCode="101";
- throw new Throwable("浼犲叆鐨勭爜娈佃鍒欑己灏�" + name + "鐮佹");
- }
- }
- }
- return codeOrderSecDTOList;
- }
-
- /***
- * 鏍规嵁灞炴�ф槧灏勮浆鎹㈢紪鐮佹墍闇�瀛楁
- */
- public void getConfigDatas(String systemId, String libray, ApplyDatasVO applyDatasVO, List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList, org.springblade.code.vo.universalInter.attrmap.DataObjectVO dataObjectVO) throws Throwable {
- List<ApplyDataVO> applyDataVOList=applyDatasVO.getObject();
- LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
- //濡傛灉灏嗘暟鎹浆鎹㈡垚鎵�闇�瑕佺殑鏁版嵁瀵硅薄
- Map<String, String> attrMapConfigMap=new HashMap<>();
- Map<String, String> propMaps=new HashMap<>();
- try {
- Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
- //stringStringMap.put("RLM","D:\\RLM.xml");
- LibraryDO libraryDO= gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId,stringStringMap);
- List<LibraryClsfDO> libraryClsfDOList=libraryDO.getClsf();
- Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
- if(libPropMaps.containsKey(libray)){
- List<ClsfAttrMappingDO> clsfAttrMappingDOList=libPropMaps.get(libray);
- propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
- }
- }catch (Throwable e){
- objerrorCode="1";
- throw new Throwable("MDM闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
- }
- LinkedList<String> rowNameList=new LinkedList<>();
- LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
- //鏍规嵁鍒嗙被妯℃澘缁勭粐鏁版嵁
- final int[] index = {0};
- try {
- codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
- String attrName = codeClassifyTemplateAttrVO.getName();
- String field = codeClassifyTemplateAttrVO.getId();
- rowNameList.add(attrName);
- filedIndexMap.put(field, index[0]++);
- });
- dataObjectVO.setColName(rowNameList);//鏀惧叆灞炴��
- attrMapConfigMap.putAll(propMaps);
- LinkedList<RowDatas> rowDataList = new LinkedList<>();
- //Map<String, List<ProppertyVO>> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2));
- final int[] rowIndex = {0};
- applyDataVOList.stream().forEach(applyDataVO -> {
- rowIndex[0]++;
- RowDatas rowDatas = new RowDatas();
- rowDatas.setOid(applyDataVO.getId());
- rowDatas.setCreator(applyDataVO.getCreator());
- rowDatas.setEditor(applyDataVO.getEditor());
- rowDatas.setCode(applyDataVO.getCode());
- rowDatas.setOperation(applyDataVO.getOperate());
- rowDatas.setStatus(applyDataVO.getStatus());
- rowDatas.setRowIndex(rowIndex[0] + "");
- List<ProppertyVO> proppertyVOList = applyDataVO.getProp();
-
- LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>();
- Map<String, String> filedValueMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(proppertyVOList)) {
- Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2));
- Map<String, String> keyValueMap = new HashMap<>();
- //鍒ゆ柇attrMapConfigMap鏄惁鏈夊�硷紝濡傛灉娌℃湁鍒欒鏄庡熀纭�榛樿鐨勬槸缂栫爜绯荤粺瀛楁
- if (!CollectionUtils.isEmpty(attrMapConfigMap)) {
- sourceKeyValueMap.keySet().forEach(sourceKey -> {
- String dataValue = sourceKeyValueMap.get(sourceKey);
- if (attrMapConfigMap.containsKey(sourceKey)) {
- String targetKey = attrMapConfigMap.get(sourceKey);
- keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
- }
- });
- } else {
- sourceKeyValueMap.forEach((filed,value)->{
- keyValueMap.put(filed,StringUtils.isBlank(value)?"":value) ;
- });
- }
-
- filedIndexMap.forEach((attrKey, column) -> {
- String keyValue = "";
- if (keyValueMap.containsKey(attrKey)) {
- keyValue =StringUtils.isBlank(keyValueMap.get(attrKey))?"":keyValueMap.get(attrKey);
- }
- integerValueMap.put(column, keyValue);
- filedValueMap.put(attrKey, keyValue);
- });
- }
- rowDatas.setData(integerValueMap);
- rowDatas.setFiledValue(filedValueMap);
- rowDataList.add(rowDatas);
- });
- dataObjectVO.setRowData(rowDataList);
- }catch (Throwable e){
- objerrorCode="1";
- throw new Throwable("缁勭粐鏁版嵁鏄犲皠鍊煎け璐�");
- }
- }
- /***
- * 鏁版嵁缁存姢涓庣紪鐮佺敵璇疯繑鍥�
- * @param resultSystemVO
- * @param dataType
- * @return
- */
- private String transferResultXMl(XMLResultSystemVO resultSystemVO,String dataType){
- String resultStr="";
- if ("xml".equals(dataType)) {
- //缁勭粐杩斿洖鎺ュ彛淇℃伅
- XStream xStream = new XStream(new DomDriver());
- xStream.processAnnotations(XMLResultSystemVO.class);
- xStream.autodetectAnnotations(true);
- resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultSystemVO);
- } else {
- List<XMLResultClassfyVO> resultClassfyVOList =resultSystemVO.getClassifys();
- JSONResultDataVO resultDataVO = new JSONResultDataVO();
- JSONResultSystemVO jsonResultSystemVO = new JSONResultSystemVO();
- JSONResultClassfysVO jsonResultClassfysVO = new JSONResultClassfysVO();
- List<JSONResultClassfyVO> jSONResultClassfyVOList = new ArrayList<>();
- resultClassfyVOList.stream().forEach(resultClassfyVO -> {
- List<XMLResultDataObjectDetailDO> xmlResultDataObjectDetailDOS = resultClassfyVO.getObjects();
- List<JSONResultDataObjectDetailDO> JSONResultDataObjectDetailDOList = new ArrayList<>();
- xmlResultDataObjectDetailDOS.stream().forEach(xmlResultDataObjectDetail -> {
- JSONResultDataObjectDetailDO jsonResultDataObjectDetail = new JSONResultDataObjectDetailDO();
- BeanUtilForVCI.copyPropertiesIgnoreCase(xmlResultDataObjectDetail, jsonResultDataObjectDetail);
- JSONResultDataObjectDetailDOList.add(jsonResultDataObjectDetail);
- });
- JSONResultClassfyVO jsonResultClassfyVO = new JSONResultClassfyVO();
- jsonResultClassfyVO.setClassCode(resultClassfyVO.getClassCode());
- jsonResultClassfyVO.setLibrary(resultClassfyVO.getLibrary());
- jsonResultClassfyVO.setFullclsfNamePath(resultClassfyVO.getFullclsfNamePath());
- JSONResultDataObjectDO JSONResultDataObjectDO = new JSONResultDataObjectDO();
- JSONResultDataObjectDO.setObject(JSONResultDataObjectDetailDOList);
- jsonResultClassfyVO.setObjects(JSONResultDataObjectDO);
- jSONResultClassfyVOList.add(jsonResultClassfyVO);
- });
- jsonResultClassfysVO.setClassify(jSONResultClassfyVOList);
- jsonResultSystemVO.setClassifys(jsonResultClassfysVO);
- jsonResultSystemVO.setErrorid(resultSystemVO.getErrorid());
- jsonResultSystemVO.setMsg(resultSystemVO.getMsg());
- resultDataVO.setData(jsonResultSystemVO);
- Object object = JSONObject.toJSON(resultDataVO);
- resultStr = object.toString();
-
- }
- return resultStr;
- }
-
- /***
- * 璁板綍鏃ュ織淇℃伅
- * @param systemId
- * @param parmaData
- * @param result
- * @return
- */
- private void saveLogs(String systemId,String systemName,String parmaData, String result,boolean isSucess,String msg,String operation){
- //璁板綍鏃ュ織淇℃伅
- DockingLogeDO dockingLogeDO=new DockingLogeDO();
- String oid=redisService.getUUIDEveryDay();
- dockingLogeDO.setSystemcode(StringUtils.isBlank(systemId)?"-":systemId);//璁剧疆绯荤粺鏍囪瘑
- dockingLogeDO.setSystemname(StringUtils.isBlank(systemName)?"-":systemName);
- dockingLogeDO.setMsg(msg);//鏃ュ織娑堟伅
- dockingLogeDO.setClassifyid("-");//鍒嗙被缂栧彿
- dockingLogeDO.setClassifyname("-");//鍒嗙被鍚嶇О
- dockingLogeDO.setClassifyoid("-");//鍒嗙被涓婚敭
- dockingLogeDO.setUniquecode("-");//鍞竴鏍囪瘑
- dockingLogeDO.setSystemoid("-");//绯荤粺鏍囪瘑
-// dockingLogeDO.setName(operation);
- dockingLogeDO.setOid(oid);//鏃ュ織涓婚敭
- dockingLogeDO.setParamstring(parmaData);//鍙傛暟淇℃伅
- dockingLogeDO.setReturnstring(result);//杩斿洖淇℃伅
- dockingLogeDO.setType(operation);//鏃ュ織鎿嶄綔绫诲瀷
- if(isSucess) {
- dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_TRUE);//鎺ュ彛闆嗘垚鐘舵��
- }else{
- dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_FALSE);//鎺ュ彛闆嗘垚鐘舵��
- }
- BatchCBO insert = dockingLogeDao.insert(dockingLogeDO);
- logger.info("闆嗘垚鎺ㄩ�佹暟鎹垚鍔�,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
- }
-}
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
deleted file mode 100644
index 5e9b8df..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/AttributeMapConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-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
deleted file mode 100644
index a9b0de6..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/BackXml.java
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index fa59d49..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/DateUtils.java
+++ /dev/null
@@ -1,527 +0,0 @@
-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
deleted file mode 100644
index 58ea4cc..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/EnumVO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-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
deleted file mode 100644
index aeb2952..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/HttpUtils.java
+++ /dev/null
@@ -1,194 +0,0 @@
-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
deleted file mode 100644
index ce153c0..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Json2XmlUtil.java
+++ /dev/null
@@ -1,121 +0,0 @@
-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
deleted file mode 100644
index 72b4d7d..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/PatternUtil.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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
deleted file mode 100644
index ccbc71f..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/Pro.java
+++ /dev/null
@@ -1,40 +0,0 @@
-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
deleted file mode 100644
index e935e63..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsAxis2ClientUtil.java
+++ /dev/null
@@ -1,59 +0,0 @@
-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
deleted file mode 100644
index 2c23c8a..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/WsErpClientUtil.java
+++ /dev/null
@@ -1,59 +0,0 @@
-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
deleted file mode 100644
index 0db27e5..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlData.java
+++ /dev/null
@@ -1,143 +0,0 @@
-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
deleted file mode 100644
index c108432..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/XmlUtil.java
+++ /dev/null
@@ -1,770 +0,0 @@
-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 org.springblade.code.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
deleted file mode 100644
index d7a37cf..0000000
--- a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/utils/gennerAttrMapUtil.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.springblade.code.utils;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-import com.vci.starter.web.util.LocalFileUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.code.vo.universalInter.attrmap.LibraryDO;
-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-desk/pom.xml b/Source/BladeX/blade-service/blade-desk/pom.xml
deleted file mode 100644
index b7da9d5..0000000
--- a/Source/BladeX/blade-service/blade-desk/pom.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<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>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-desk</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-desk-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-user-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-flow-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <!--Oss-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-oss</artifactId>
- </dependency>
- <!--MinIO-->
- <dependency>
- <groupId>io.minio</groupId>
- <artifactId>minio</artifactId>
- </dependency>
- <!--QiNiu-->
- <dependency>
- <groupId>com.qiniu</groupId>
- <artifactId>qiniu-java-sdk</artifactId>
- </dependency>
- <!--<dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-transaction</artifactId>
- </dependency>-->
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/DeskApplication.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/DeskApplication.java
deleted file mode 100644
index b4b88ed..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/DeskApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.desk;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
-
-/**
- * Desk鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class DeskApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_DESK_NAME, DeskApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/DashBoardController.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/DashBoardController.java
deleted file mode 100644
index 2f1dbfe..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/DashBoardController.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package org.springblade.desk.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 棣栭〉
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@Api(value = "棣栭〉", tags = "棣栭〉")
-public class DashBoardController {
-
- /**
- * 娲昏穬鐢ㄦ埛
- */
- @GetMapping("/dashboard/activities")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "娲昏穬鐢ㄦ埛", notes = "娲昏穬鐢ㄦ埛")
- public R activities() {
- List<Map<String, Object>> list = new ArrayList<>();
-
- Map<String, Object> map1 = new HashMap<>(16);
- map1.put("id", "trend-1");
- map1.put("updatedAt", "2019-01-01");
- map1.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
- map1.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
- map1.put("project", Kv.create().set("name", "鍏湀杩唬").set("link", "http://github.com/"));
- map1.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
- list.add(map1);
-
- Map<String, Object> map2 = new HashMap<>(16);
- map2.put("id", "trend-2");
- map2.put("updatedAt", "2019-01-01");
- map2.put("user", Kv.create().set("name", "浠樺皬灏�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
- map2.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
- map2.put("project", Kv.create().set("name", "涓冩湀鏈堣凯浠�").set("link", "http://github.com/"));
- map2.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
- list.add(map2);
-
- return R.data(list);
- }
-
- /**
- * 鐢ㄦ埛淇℃伅
- */
- @GetMapping("/dashboard/info")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鐢ㄦ埛淇℃伅", notes = "鐢ㄦ埛淇℃伅")
- public R info() {
- Map<String, Object> map = new HashMap<>(16);
- map.put("id", "trend-1");
- map.put("updatedAt", "2019-01-01");
- map.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
- map.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
- map.put("project", Kv.create().set("name", "鍏湀杩唬").set("link", "http://github.com/"));
- map.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
- return R.data(map);
- }
-
- /**
- * 绛惧悕淇℃伅
- */
- @PostMapping("/dashboard/sign")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "绛惧悕淇℃伅", notes = "绛惧悕淇℃伅")
- public R sign() {
- Map<String, Object> map = new HashMap<>(16);
- map.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
- return R.data(map);
- }
-
- /**
- * 鑾峰彇娑堟伅
- */
- @GetMapping("/notice/notices")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "娑堟伅", notes = "娑堟伅")
- public R notices() {
- List<Map<String, String>> list = new ArrayList<>();
- Map<String, String> map1 = new HashMap<>(16);
- map1.put("logo", "https://spring.io/img/homepage/icon-spring-framework.svg");
- map1.put("title", "SpringBoot");
- map1.put("description", "鐜板湪鐨剋eb椤圭洰鍑犱箮閮戒細鐢ㄥ埌spring妗嗘灦锛岃�岃浣跨敤spring闅惧厤闇�瑕侀厤缃ぇ閲忕殑xml閰嶇疆鏂囦欢锛岃�� springboot鐨勫嚭鐜拌В 鍐充簡杩欎竴闂锛屼竴涓」鐩敋鑷充笉鐢ㄩ儴缃插埌鏈嶅姟鍣ㄤ笂鐩存帴寮�璺戯紝鐪熷儚springboot鎵�璇达細鈥渏ust run鈥濄��");
- map1.put("member", "Chill");
- map1.put("href", "http://spring.io/projects/spring-boot");
- list.add(map1);
-
- Map<String, String> map2 = new HashMap<>(16);
- map2.put("logo", "https://spring.io/img/homepage/icon-spring-cloud.svg");
- map2.put("title", "SpringCloud");
- map2.put("description", "SpringCloud鏄熀浜嶴pringBoot鐨勪竴鏁村瀹炵幇寰湇鍔$殑妗嗘灦銆備粬鎻愪緵浜嗗井鏈嶅姟寮�鍙戞墍闇�鐨勯厤缃鐞嗐�佹湇鍔″彂鐜般�佹柇璺櫒銆佹櫤鑳借矾鐢便�佸井浠g悊銆佹帶鍒舵�荤嚎銆佸叏灞�閿併�佸喅绛栫珵閫夈�佸垎甯冨紡浼氳瘽鍜岄泦缇ょ姸鎬佺鐞嗙瓑缁勪欢銆�");
- map2.put("member", "Chill");
- map2.put("href", "http://spring.io/projects/spring-cloud");
- list.add(map2);
-
- Map<String, String> map3 = new HashMap<>(16);
- map3.put("logo", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1546359961068&di=05ff9406e6675ca9a58a525a7e7950b9&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D575314515%2C4268715674%26fm%3D214%26gp%3D0.jpg");
- map3.put("title", "Mybatis");
- map3.put("description", "MyBatis 鏄竴娆句紭绉�鐨勬寔涔呭眰妗嗘灦锛屽畠鏀寔瀹氬埗鍖� SQL銆佸瓨鍌ㄨ繃绋嬩互鍙婇珮绾ф槧灏勩�侻yBatis 閬垮厤浜嗗嚑涔庢墍鏈夌殑 JDBC 浠g爜鍜屾墜鍔ㄨ缃弬鏁颁互鍙婅幏鍙栫粨鏋滈泦銆侻yBatis 鍙互浣跨敤绠�鍗曠殑 XML 鎴栨敞瑙f潵閰嶇疆鍜屾槧灏勫師鐢熶俊鎭紝灏嗘帴鍙e拰 Java 鐨� POJOs(Plain Old Java Objects,鏅�氱殑 Java瀵硅薄)鏄犲皠鎴愭暟鎹簱涓殑璁板綍銆�");
- map3.put("member", "Chill");
- map3.put("href", "http://www.mybatis.org/mybatis-3/getting-started.html");
- list.add(map3);
-
- Map<String, String> map4 = new HashMap<>(16);
- map4.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png");
- map4.put("title", "React");
- map4.put("description", "React 璧锋簮浜� Facebook 鐨勫唴閮ㄩ」鐩紝鍥犱负璇ュ叕鍙稿甯傚満涓婃墍鏈� JavaScript MVC 妗嗘灦锛岄兘涓嶆弧鎰忥紝灏卞喅瀹氳嚜宸卞啓涓�濂楋紝鐢ㄦ潵鏋惰Instagram 鐨勭綉绔欍�傚仛鍑烘潵浠ュ悗锛屽彂鐜拌繖濂椾笢瑗垮緢濂界敤锛屽氨鍦�2013骞�5鏈堝紑婧愪簡銆�");
- map4.put("member", "Chill");
- map4.put("href", "https://reactjs.org/");
- list.add(map4);
-
- Map<String, String> map5 = new HashMap<>(16);
- map5.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png");
- map5.put("title", "Ant Design");
- map5.put("description", "铓傝殎閲戞湇浣撻獙鎶�鏈儴缁忚繃澶ч噺鐨勯」鐩疄璺靛拰鎬荤粨锛屾矇娣�鍑鸿璁¤瑷� Ant Design锛岃繖鍙笉鍗曠函鍙槸璁捐鍘熷垯銆佹帶浠惰鑼冨拰瑙嗚灏哄锛岃繕閰嶅鏈夊墠绔唬鐮佸疄鐜版柟妗堛�備篃灏辨槸璇撮噰鐢ˋnt Design鍚庯紝UI璁捐鍜屽墠绔晫闈㈢爺鍙戝彲鍚屾瀹屾垚锛屾晥鐜囧ぇ澶ф彁鍗囥��");
- map5.put("member", "Chill");
- map5.put("href", "https://ant.design/docs/spec/introduce-cn");
- list.add(map5);
-
- Map<String, String> map6 = new HashMap<>(16);
- map6.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png");
- map6.put("title", "Ant Design Pro");
- map6.put("description", "Ant Design Pro 鏄竴涓紒涓氱骇寮�绠卞嵆鐢ㄧ殑涓悗鍙板墠绔�/璁捐瑙e喅鏂规銆傜鍚堥樋閲岃拷姹傜殑'鏁忔嵎鐨勫墠绔�+寮哄ぇ鐨勪腑鍙�'鐨勬�濇兂銆�");
- map6.put("member", "Chill");
- map6.put("href", "https://pro.ant.design");
- list.add(map6);
-
- return R.data(list);
- }
-
- /**
- * 鑾峰彇鎴戠殑娑堟伅
- */
- @GetMapping("/notice/my-notices")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "娑堟伅", notes = "娑堟伅")
- public R myNotices() {
- List<Map<String, String>> list = new ArrayList<>();
- Map<String, String> map1 = new HashMap<>(16);
- map1.put("id", "000000001");
- map1.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png");
- map1.put("title", "浣犳敹鍒颁簡 14 浠芥柊鍛ㄦ姤");
- map1.put("datetime", "2018-08-09");
- map1.put("type", "notification");
- list.add(map1);
-
- Map<String, String> map2 = new HashMap<>(16);
- map2.put("id", "000000002");
- map2.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png");
- map2.put("title", "浣犳帹鑽愮殑 鏇插Ξ濡� 宸查�氳繃绗笁杞潰璇�");
- map2.put("datetime", "2018-08-08");
- map2.put("type", "notification");
- list.add(map2);
-
-
- Map<String, String> map3 = new HashMap<>(16);
- map3.put("id", "000000003");
- map3.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
- map3.put("title", "鏇蹭附涓� 璇勮浜嗕綘");
- map3.put("description", "鎻忚堪淇℃伅鎻忚堪淇℃伅鎻忚堪淇℃伅");
- map3.put("datetime", "2018-08-07");
- map3.put("type", "message");
- map3.put("clickClose", "true");
- list.add(map3);
-
-
- Map<String, String> map4 = new HashMap<>(16);
- map4.put("id", "000000004");
- map4.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
- map4.put("title", "鏈卞亸鍙� 鍥炲浜嗕綘");
- map4.put("description", "杩欑妯℃澘鐢ㄤ簬鎻愰啋璋佷笌浣犲彂鐢熶簡浜掑姩锛屽乏渚ф斁銆庤皝銆忕殑澶村儚");
- map4.put("type", "message");
- map4.put("datetime", "2018-08-07");
- map4.put("clickClose", "true");
- list.add(map4);
-
-
- Map<String, String> map5 = new HashMap<>(16);
- map5.put("id", "000000005");
- map5.put("title", "浠诲姟鍚嶇О");
- map5.put("description", "浠诲姟闇�瑕佸湪 2018-01-12 20:00 鍓嶅惎鍔�");
- map5.put("extra", "鏈紑濮�");
- map5.put("status", "todo");
- map5.put("type", "event");
- list.add(map5);
-
- return R.data(list);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/LeaveController.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/LeaveController.java
deleted file mode 100644
index 85639be..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/LeaveController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.desk.controller;
-
-import lombok.AllArgsConstructor;
-import org.springblade.common.cache.CacheNames;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.desk.entity.ProcessLeave;
-import org.springblade.desk.service.ILeaveService;
-import org.springblade.system.user.cache.UserCache;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@RequestMapping("/process/leave")
-@AllArgsConstructor
-public class LeaveController extends BladeController implements CacheNames {
-
- private final ILeaveService leaveService;
-
- /**
- * 璇︽儏
- *
- * @param businessId 涓婚敭
- */
- @GetMapping("detail")
- public R<ProcessLeave> detail(Long businessId) {
- ProcessLeave detail = leaveService.getById(businessId);
- detail.getFlow().setAssigneeName(UserCache.getUser(detail.getCreateUser()).getName());
- return R.data(detail);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param leave 璇峰亣淇℃伅
- */
- @PostMapping("start-process")
- public R startProcess(@RequestBody ProcessLeave leave) {
- return R.status(leaveService.startProcess(leave));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/NoticeController.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/NoticeController.java
deleted file mode 100644
index 2270900..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/controller/NoticeController.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.desk.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.BladePage;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.TenantDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.feign.INoticeClient;
-import org.springblade.desk.service.INoticeService;
-import org.springblade.desk.vo.NoticeVO;
-import org.springblade.desk.wrapper.NoticeWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.Map;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@TenantDS
-@RestController
-@RequestMapping("notice")
-@AllArgsConstructor
-@Api(value = "鐢ㄦ埛鍗氬", tags = "鍗氬鎺ュ彛")
-public class NoticeController extends BladeController {
-
- private final INoticeService noticeService;
-
- private final INoticeClient noticeClient;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆notice")
- public R<NoticeVO> detail(Notice notice) {
- Notice detail = noticeService.getOne(Condition.getQueryWrapper(notice));
- return R.data(NoticeWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "category", value = "鍏憡绫诲瀷", paramType = "query", dataType = "integer"),
- @ApiImplicitParam(name = "title", value = "鍏憡鏍囬", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
- public R<IPage<NoticeVO>> list(@ApiIgnore @RequestParam Map<String, Object> notice, Query query) {
- NoticeWrapper.build().noticeQuery(notice);
- IPage<Notice> pages = noticeService.page(Condition.getPage(query), Condition.getQueryWrapper(notice, Notice.class));
- return R.data(NoticeWrapper.build().pageVO(pages));
- }
-
- /**
- * 澶氳〃鑱斿悎鏌ヨ鑷畾涔夊垎椤�
- */
- @GetMapping("/page")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "category", value = "鍏憡绫诲瀷", paramType = "query", dataType = "integer"),
- @ApiImplicitParam(name = "title", value = "鍏憡鏍囬", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
- public R<IPage<NoticeVO>> page(@ApiIgnore NoticeVO notice, Query query) {
- IPage<NoticeVO> pages = noticeService.selectNoticePage(Condition.getPage(query), notice);
- return R.data(pages);
- }
-
- /**
- * 鏂板
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆notice")
- public R save(@RequestBody Notice notice) {
- return R.status(noticeService.save(notice));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆notice")
- public R update(@RequestBody Notice notice) {
- return R.status(noticeService.updateById(notice));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆notice")
- public R submit(@RequestBody Notice notice) {
- return R.status(noticeService.saveOrUpdate(notice));
- }
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆notice")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎") @RequestParam String ids) {
- boolean temp = noticeService.deleteLogic(Func.toLongList(ids));
- return R.status(temp);
- }
-
- /**
- * 杩滅▼璋冪敤鍒嗛〉鎺ュ彛
- */
- @GetMapping("/top")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鍒嗛〉杩滅▼璋冪敤", notes = "浼犲叆current,size")
- public R<BladePage<Notice>> top(@ApiParam(value = "褰撳墠椤�") @RequestParam Integer current, @ApiParam(value = "姣忛〉鏄剧ず鏉℃暟") @RequestParam Integer size) {
- BladePage<Notice> page = noticeClient.top(current, size);
- return R.data(page);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
deleted file mode 100644
index 67dc1a6..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.desk.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.flow.core.entity.FlowEntity;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 璇峰亣娴佺▼瀹炰綋绫�
- *
- * @author Chill
- */
-@Data
-@TableName("pl_wf_process_leave")
-@EqualsAndHashCode(callSuper = true)
-public class ProcessLeave extends FlowEntity {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 娴佺▼瀹氫箟id
- */
- private String processDefinitionId;
- /**
- * 娴佺▼瀹炰緥id
- */
- private String processInstanceId;
- /**
- * 璇峰亣寮�濮嬫椂闂�
- */
- private Date startTime;
- /**
- * 璇峰亣缁撴潫鏃堕棿
- */
- private Date endTime;
- /**
- * 璇峰亣鐞嗙敱
- */
- private String reason;
- /**
- * 瀹℃壒浜�
- */
- private String taskUser;
- /**
- * 娴佺▼鐢宠鏃堕棿
- */
- private Date applyTime;
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/feign/NoticeClient.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/feign/NoticeClient.java
deleted file mode 100644
index c612d8f..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/feign/NoticeClient.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.desk.feign;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.BladePage;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.service.INoticeService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-/**
- * Notice Feign
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore()
-@RestController
-@AllArgsConstructor
-public class NoticeClient implements INoticeClient {
-
- private final INoticeService service;
-
- @Override
- @GetMapping(TOP)
- public BladePage<Notice> top(Integer current, Integer size) {
- Query query = new Query();
- query.setCurrent(current);
- query.setSize(size);
- IPage<Notice> page = service.page(Condition.getPage(query));
- return BladePage.of(page);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.java
deleted file mode 100644
index 461bf4f..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.desk.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.desk.entity.ProcessLeave;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface LeaveMapper extends BaseMapper<ProcessLeave> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.xml b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.xml
deleted file mode 100644
index 37e86b8..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/LeaveMapper.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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.desk.mapper.LeaveMapper">
-
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.java
deleted file mode 100644
index 22443e5..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.desk.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.vo.NoticeVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface NoticeMapper extends BaseMapper<Notice> {
-
- /**
- * 鍓峃鏉℃暟鎹�
- *
- * @param number 鏁伴噺
- * @return List<Notice>
- */
- List<Notice> topList(Integer number);
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page 鍒嗛〉
- * @param notice 瀹炰綋
- * @return List<NoticeVO>
- */
- List<NoticeVO> selectNoticePage(IPage page, NoticeVO notice);
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml
deleted file mode 100644
index 8992089..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/mapper/NoticeMapper.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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.desk.mapper.NoticeMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="noticeResultMap" type="org.springblade.desk.entity.Notice">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="release_time" property="releaseTime"/>
- <result column="title" property="title"/>
- <result column="content" property="content"/>
- </resultMap>
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="noticeVOResultMap" type="org.springblade.desk.vo.NoticeVO">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="release_time" property="releaseTime"/>
- <result column="title" property="title"/>
- <result column="content" property="content"/>
- </resultMap>
-
- <select id="topList" resultMap="noticeResultMap">
- select * from pl_org_notice limit #{number}
- </select>
-
- <select id="selectNoticePage" resultMap="noticeVOResultMap">
- SELECT
- n.*,
- d.dict_value AS categoryName
- FROM
- pl_org_notice n
- LEFT JOIN ( SELECT * FROM pl_sys_dict WHERE CODE = 'notice' ) d ON n.category = d.dict_key
- WHERE
- n.is_deleted = 0 and n.tenant_id = #{notice.tenantId}
- <if test="notice.title!=null">
- and n.title like concat(concat('%', #{notice.title}), '%')
- </if>
- <if test="notice.category!=null">
- and n.category = #{notice.category}
- </if>
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/ILeaveService.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/ILeaveService.java
deleted file mode 100644
index 59be4e4..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/ILeaveService.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.desk.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.desk.entity.ProcessLeave;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ILeaveService extends BaseService<ProcessLeave> {
-
- /**
- * 寮�鍚祦绋�
- *
- * @param leave 璇峰亣瀹炰綋
- * @return boolean
- */
- boolean startProcess(ProcessLeave leave);
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/INoticeService.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/INoticeService.java
deleted file mode 100644
index aff42c8..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/INoticeService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.desk.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.vo.NoticeVO;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface INoticeService extends BaseService<Notice> {
-
- /**
- * 鑷畾涔夊垎椤�
- * @param page
- * @param notice
- * @return
- */
- IPage<NoticeVO> selectNoticePage(IPage<NoticeVO> page, NoticeVO notice);
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java
deleted file mode 100644
index 155e168..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.desk.service.impl;
-
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.desk.entity.ProcessLeave;
-import org.springblade.desk.mapper.LeaveMapper;
-import org.springblade.desk.service.ILeaveService;
-import org.springblade.flow.core.constant.ProcessConstant;
-import org.springblade.flow.core.entity.BladeFlow;
-import org.springblade.flow.core.feign.IFlowClient;
-import org.springblade.flow.core.utils.FlowUtil;
-import org.springblade.flow.core.utils.TaskUtil;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Slf4j
-@Service
-@AllArgsConstructor
-public class LeaveServiceImpl extends BaseServiceImpl<LeaveMapper, ProcessLeave> implements ILeaveService {
-
- private final IFlowClient flowClient;
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- // @GlobalTransactional
- public boolean startProcess(ProcessLeave leave) {
- String businessTable = FlowUtil.getBusinessTable(ProcessConstant.LEAVE_KEY);
- if (Func.isEmpty(leave.getId())) {
- // 淇濆瓨leave
- leave.setApplyTime(DateUtil.now());
- save(leave);
- // 鍚姩娴佺▼
- Kv variables = Kv.create()
- .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName())
- .set("taskUser", TaskUtil.getTaskUser(leave.getTaskUser()))
- .set("days", DateUtil.between(leave.getStartTime(), leave.getEndTime()).toDays());
- R<BladeFlow> result = flowClient.startProcessInstanceById(leave.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(leave.getId())), variables);
- if (result.isSuccess()) {
- log.debug("娴佺▼宸插惎鍔�,娴佺▼ID:" + result.getData().getProcessInstanceId());
- // 杩斿洖娴佺▼id鍐欏叆leave
- leave.setProcessInstanceId(result.getData().getProcessInstanceId());
- updateById(leave);
- } else {
- throw new ServiceException("寮�鍚祦绋嬪け璐�");
- }
- } else {
-
- updateById(leave);
- }
- return true;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/NoticeServiceImpl.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/NoticeServiceImpl.java
deleted file mode 100644
index 685c597..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/NoticeServiceImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.desk.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.mapper.NoticeMapper;
-import org.springblade.desk.service.INoticeService;
-import org.springblade.desk.vo.NoticeVO;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class NoticeServiceImpl extends BaseServiceImpl<NoticeMapper, Notice> implements INoticeService {
-
- @Override
- public IPage<NoticeVO> selectNoticePage(IPage<NoticeVO> page, NoticeVO notice) {
- // 鑻ヤ笉浣跨敤mybatis-plus鑷甫鐨勫垎椤垫柟娉曪紝鍒欎笉浼氳嚜鍔ㄥ甫鍏enantId锛屾墍浠ユ垜浠渶瑕佽嚜琛屾敞鍏�
- notice.setTenantId(AuthUtil.getTenantId());
- return page.setRecords(baseMapper.selectNoticePage(page, notice));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/wrapper/NoticeWrapper.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/wrapper/NoticeWrapper.java
deleted file mode 100644
index 5fa07f5..0000000
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/wrapper/NoticeWrapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.desk.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.desk.entity.Notice;
-import org.springblade.desk.vo.NoticeVO;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.enums.DictEnum;
-
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * Notice鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class NoticeWrapper extends BaseEntityWrapper<Notice, NoticeVO> {
-
- public static NoticeWrapper build() {
- return new NoticeWrapper();
- }
-
- @Override
- public NoticeVO entityVO(Notice notice) {
- NoticeVO noticeVO = Objects.requireNonNull(BeanUtil.copy(notice, NoticeVO.class));
- String dictValue = DictCache.getValue(DictEnum.NOTICE, noticeVO.getCategory());
- noticeVO.setCategoryName(dictValue);
- return noticeVO;
- }
-
- /**
- * 鏌ヨ鏉′欢澶勭悊
- */
- public void noticeQuery(Map<String, Object> notice) {
- // 姝ゅ満鏅粎鍦� pg鏁版嵁搴� map绫诲瀷浼犲弬鐨勬儏鍐典笅闇�瑕佸鐞嗭紝entity浼犲弬宸茬粡鍖呭惈鏁版嵁绫诲瀷锛屽垯鏃犻渶鍏冲績
- // 閽堝 pg鏁版嵁搴� int绫诲瀷瀛楁鏌ヨ闇�瑕佸己杞殑澶勭悊绀轰緥
- String searchKey = "category";
- if (Func.isNotEmpty(notice.get(searchKey))) {
- // 鏁版嵁搴撳瓧娈典负int绫诲瀷锛岃缃�"="鏌ヨ锛屽叿浣撴煡璇㈠弬鏁拌瑙� @org.springblade.core.mp.support.SqlKeyword
- notice.put(searchKey.concat("_equal"), Func.toInt(notice.get(searchKey)));
- // 榛樿"like"鏌ヨ锛宲g鏁版嵁搴� 鍦烘櫙浼氭姤閿欙紝鎵�浠ュ皢鍏跺垹闄�
- notice.remove(searchKey);
- }
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-omd/pom.xml b/Source/BladeX/blade-service/blade-omd/pom.xml
deleted file mode 100644
index 40d7c15..0000000
--- a/Source/BladeX/blade-service/blade-omd/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<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>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-omd</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-omd-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-flow-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
-
- <!--Oss-->
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-oss</artifactId>
- </dependency>
- <!--MinIO-->
- <dependency>
- <groupId>io.minio</groupId>
- <artifactId>minio</artifactId>
- </dependency>
- <!--QiNiu-->
- <dependency>
- <groupId>com.qiniu</groupId>
- <artifactId>qiniu-java-sdk</artifactId>
- </dependency>
- <!--<dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-transaction</artifactId>
- </dependency>-->
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/OmdApplication.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/OmdApplication.java
deleted file mode 100644
index e7d2dd2..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/OmdApplication.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.omd;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-
-/**
- * 绯荤粺妯″潡鍚姩鍣�
- * @author Chill
- */
-@BladeCloudApplication
-public class OmdApplication {
-
- public static void main(String[] args) {
- BladeApplication.run("blade-omd", OmdApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/controller/DictBizOmdController.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/controller/DictBizOmdController.java
deleted file mode 100644
index e3d4b3c..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/controller/DictBizOmdController.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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.omd.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.service.IDictBizService;
-import org.springblade.omd.vo.DictBizMVO;
-import org.springblade.omd.wrapper.DictBizWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/dict-biz")
-@Api(value = "涓氬姟瀛楀吀", tags = "涓氬姟瀛楀吀")
-public class DictBizOmdController extends BladeController {
-
- private final IDictBizService dictService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
- public R<DictBizMVO> detail(DictBizM dict) {
- DictBizM detail = dictService.getOne(Condition.getQueryWrapper(dict));
- return R.data(DictBizWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictBizMVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
- List<DictBizM> list = dictService.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().orderByAsc(DictBizM::getSort));
- return R.data(DictBizWrapper.build().listNodeVO(list));
- }
-
- /**
- * 椤剁骇鍒楄〃
- */
- @GetMapping("/parent-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<IPage<DictBizMVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
- return R.data(dictService.parentList(dict, query));
- }
-
- /**
- * 瀛愬垪琛�
- */
- @GetMapping("/child-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictBizMVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
- return R.data(dictService.childList(dict, parentId));
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictBizMVO>> tree() {
- List<DictBizMVO> tree = dictService.tree();
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/parent-tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictBizMVO>> parentTree() {
- List<DictBizMVO> tree = dictService.parentTree();
- return R.data(tree);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
- public R submit(@Valid @RequestBody DictBizM dict) {
- CacheUtil.clear(DICT_CACHE);
- return R.status(dictService.submit(dict));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(DICT_CACHE);
- return R.status(dictService.removeDict(ids));
- }
-
- /**
- * 鑾峰彇瀛楀吀
- */
- @GetMapping("/dictionary")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
- public R<List<DictBizM>> dictionary(String code) {
- List<DictBizM> tree = dictService.getList(code);
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍�
- */
- @GetMapping("/dictionary-tree")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
- public R<List<DictBizMVO>> dictionaryTree(String code) {
- List<DictBizM> tree = dictService.getList(code);
- return R.data(DictBizWrapper.build().listNodeVO(tree));
- }
-
- /**
- * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
- */
- @PostMapping("/check")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
- public R checkOrInsert(@Valid @RequestBody DictBizM dict) {
- CacheUtil.clear(DICT_CACHE);
- return dictService.checkOrInsert(dict);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/feign/DictBizClient.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/feign/DictBizClient.java
deleted file mode 100644
index eb3b366..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/feign/DictBizClient.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.omd.feign;
-
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.service.IDictBizService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.List;
-
-
-/**
- * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-public class DictBizClient implements IDictBizClient {
-
- private final IDictBizService service;
-
- @Override
- @GetMapping(GET_BY_ID)
- public R<DictBizM> getById(Long id) {
- return R.data(service.getById(id));
- }
-
- @Override
- @GetMapping(GET_VALUE)
- public R<String> getValue(String code, String dictKey) {
- return R.data(service.getValue(code, dictKey));
- }
-
- @Override
- @GetMapping(GET_LIST)
- public R<List<DictBizM>> getList(String code) {
- return R.data(service.getList(code));
- }
-
- @Override
- @GetMapping(CHECK_VALUE)
- public R getCheck(DictBizM dict) {
- return service.checkOrInsert(dict);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.java
deleted file mode 100644
index c835d01..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.omd.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.vo.DictBizMVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<DictBizM> getList(String code);
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictBizMVO> tree();
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictBizMVO> parentTree();
-
-}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.xml b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.xml
deleted file mode 100644
index f75b087..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/mapper/DictBizMapper.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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.omd.mapper.DictBizMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="dictResultMap" type="org.springblade.omd.entity.DictBizM">
- <id column="id" property="id"/>
- <result column="tenant_id" property="tenantId"/>
- <result column="parent_id" property="parentId"/>
- <result column="code" property="code"/>
- <result column="dict_key" property="dictKey"/>
- <result column="dict_value" property="dictValue"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- </resultMap>
-
- <select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0
- </select>
-
- <!-- oracle 鐗堟湰 -->
- <!--<select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
- </select>-->
-
- <select id="getList" resultMap="dictResultMap">
- select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0
- </select>
-
- <select id="parentTree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/IDictBizService.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/IDictBizService.java
deleted file mode 100644
index 506c635..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/IDictBizService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.omd.service;
-
-
-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.omd.entity.DictBizM;
-import org.springblade.omd.vo.DictBizMVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IDictBizService extends IService<DictBizM> {
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictBizMVO> tree();
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictBizMVO> parentTree();
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<DictBizM> getList(String code);
-
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param dict
- * @return
- */
- boolean submit(DictBizM dict);
-
- /**
- * 鍒犻櫎瀛楀吀
- *
- * @param ids
- * @return
- */
- boolean removeDict(String ids);
-
- /**
- * 椤剁骇鍒楄〃
- *
- * @param dict
- * @param query
- * @return
- */
- IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query);
-
- /**
- * 瀛愬垪琛�
- *
- * @param dict
- * @param parentId
- * @return
- */
- List<DictBizMVO> childList(Map<String, Object> dict, Long parentId);
-
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param dict
- * @return
- */
- R checkOrInsert(DictBizM dict);
-}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/impl/DictBizServiceImpl.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/impl/DictBizServiceImpl.java
deleted file mode 100644
index 168ae02..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/service/impl/DictBizServiceImpl.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.omd.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.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;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.omd.cache.DictBizCache;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.mapper.DictBizMapper;
-import org.springblade.omd.service.IDictBizService;
-import org.springblade.omd.vo.DictBizMVO;
-import org.springblade.omd.wrapper.DictBizWrapper;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBizM> implements IDictBizService {
-
- @Override
- public List tree() {
- return ForestNodeMerger.merge((List)baseMapper.tree());
- }
-
- @Override
- public List<DictBizMVO> parentTree() {
- return ForestNodeMerger.merge((List)baseMapper.parentTree());
- }
-
- @Override
- public String getValue(String code, String dictKey) {
- return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
- }
-
- @Override
- public List<DictBizM> getList(String code) {
- return baseMapper.getList(code);
- }
-
- @Override
- public boolean submit(DictBizM dict) {
- LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
- Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
- if (cnt > 0L) {
- throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
- }
- // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
- if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
- DictBizM parent = DictBizCache.getById(dict.getId());
- this.update(Wrappers.<DictBizM>update().lambda().set(DictBizM::getCode, dict.getCode()).eq(DictBizM::getCode, parent.getCode()).ne(DictBizM::getParentId, BladeConstant.TOP_PARENT_ID));
- }
- if (Func.isEmpty(dict.getParentId())) {
- dict.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- CacheUtil.clear(DICT_CACHE);
- return saveOrUpdate(dict);
- }
-
- @Override
- public boolean removeDict(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<DictBizM>query().lambda().in(DictBizM::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
- @Override
- public IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query) {
- IPage<DictBizM> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictBizM.class).lambda().eq(DictBizM::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictBizM::getSort));
- return DictBizWrapper.build().pageVO(page);
- }
-
- @Override
- public List<DictBizMVO> childList(Map<String, Object> dict, Long parentId) {
- if (parentId < 0) {
- return new ArrayList<>();
- }
- dict.remove("parentId");
- DictBizM parentDict = DictBizCache.getById(parentId);
- List<DictBizM> list = this.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().ne(DictBizM::getId, parentId).eq(DictBizM::getCode, parentDict.getCode()).orderByAsc(DictBizM::getSort));
- return DictBizWrapper.build().listNodeVO(list);
- }
-
- @Override
- public R checkOrInsert(DictBizM dict) {
-
- LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
- Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
- if (cnt > 0L) {
- return R.fail("瀛楀吀宸茬粡瀛樺湪锛�");
- }
-
- if (Func.isEmpty(dict.getParentId())) {
- dict.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- CacheUtil.clear(DICT_CACHE);
-
- if(saveOrUpdate(dict) == true){
- return R.success("鎿嶄綔鎴愬姛!");
- }
- return R.fail("鎿嶄綔澶辫触锛�");
-
- }
-}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/wrapper/DictBizWrapper.java b/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/wrapper/DictBizWrapper.java
deleted file mode 100644
index c1324ab..0000000
--- a/Source/BladeX/blade-service/blade-omd/src/main/java/org/springblade/omd/wrapper/DictBizWrapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.omd.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.omd.cache.DictBizCache;
-import org.springblade.omd.entity.DictBizM;
-import org.springblade.omd.vo.DictBizMVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class DictBizWrapper extends BaseEntityWrapper<DictBizM, DictBizMVO> {
-
- public static DictBizWrapper build() {
- return new DictBizWrapper();
- }
-
- @Override
- public DictBizMVO entityVO(DictBizM dict) {
- DictBizMVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictBizMVO.class));
- if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- DictBizM parent = DictBizCache.getById(dict.getParentId());
- dictVO.setParentName(parent.getDictValue());
- }
- return dictVO;
- }
-
- public List<DictBizMVO> listNodeVO(List<DictBizM> list) {
- List<DictBizMVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictBizMVO.class)).collect(Collectors.toList());
- return ForestNodeMerger.merge((List)collect);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/pom.xml b/Source/BladeX/blade-service/blade-system/pom.xml
deleted file mode 100644
index a7fb25d..0000000
--- a/Source/BladeX/blade-service/blade-system/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-system</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-excel</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-system-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-user-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/SystemApplication.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/SystemApplication.java
deleted file mode 100644
index 7f5baf7..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/SystemApplication.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.system;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * 绯荤粺妯″潡鍚姩鍣�
- * @author Chill
- */
-@BladeCloudApplication
-public class SystemApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_SYSTEM_NAME, SystemApplication.class, args);
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ApiScopeController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ApiScopeController.java
deleted file mode 100644
index 11cd289..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ApiScopeController.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.ApiScope;
-import org.springblade.system.service.IApiScopeService;
-import org.springblade.system.vo.ApiScopeVO;
-import org.springblade.system.wrapper.ApiScopeWrapper;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鎺ュ彛鏉冮檺鎺у埗鍣�
- *
- * @author BladeX
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("api-scope")
-@Api(value = "鎺ュ彛鏉冮檺", tags = "鎺ュ彛鏉冮檺")
-public class ApiScopeController extends BladeController {
-
- private final IApiScopeService apiScopeService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
- public R<ApiScope> detail(ApiScope dataScope) {
- ApiScope detail = apiScopeService.getOne(Condition.getQueryWrapper(dataScope));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆dataScope")
- public R<IPage<ApiScopeVO>> list(ApiScope dataScope, Query query) {
- IPage<ApiScope> pages = apiScopeService.page(Condition.getPage(query), Condition.getQueryWrapper(dataScope));
- return R.data(ApiScopeWrapper.build().pageVO(pages));
- }
-
- /**
- * 鏂板
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板", notes = "浼犲叆dataScope")
- public R save(@Valid @RequestBody ApiScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(apiScopeService.save(dataScope));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇敼", notes = "浼犲叆dataScope")
- public R update(@Valid @RequestBody ApiScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(apiScopeService.updateById(dataScope));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dataScope")
- public R submit(@Valid @RequestBody ApiScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(apiScopeService.saveOrUpdate(dataScope));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(apiScopeService.deleteLogic(Func.toLongList(ids)));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java
deleted file mode 100644
index 3d21cdb..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.AuthClient;
-import org.springblade.system.service.IAuthClientService;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-
-/**
- * 搴旂敤绠$悊鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/client")
-@ApiIgnore
-@Api(value = "搴旂敤绠$悊", tags = "鎺ュ彛")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
-public class AuthClientController extends BladeController {
-
- private final IAuthClientService clientService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆client")
- public R<AuthClient> detail(AuthClient authClient) {
- AuthClient detail = clientService.getOne(Condition.getQueryWrapper(authClient));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆client")
- public R<IPage<AuthClient>> list(AuthClient authClient, Query query) {
- IPage<AuthClient> pages = clientService.page(Condition.getPage(query), Condition.getQueryWrapper(authClient));
- return R.data(pages);
- }
-
- /**
- * 鏂板
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板", notes = "浼犲叆client")
- public R save(@Valid @RequestBody AuthClient authClient) {
- return R.status(clientService.save(authClient));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇敼", notes = "浼犲叆client")
- public R update(@Valid @RequestBody AuthClient authClient) {
- return R.status(clientService.updateById(authClient));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆client")
- public R submit(@Valid @RequestBody AuthClient authClient) {
- return R.status(clientService.saveOrUpdate(authClient));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(clientService.deleteLogic(Func.toLongList(ids)));
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java
deleted file mode 100644
index 6297734..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.springblade.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Combination;
-import org.springblade.system.service.ICombinationService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 瀵嗙爜缁勫悎鏂瑰紡琛�(Combination)琛ㄦ帶鍒跺眰
- *
- * @author makejava
- * @since 2023-03-20 15:23:16
- */
-@ApiIgnore
-@AllArgsConstructor
-@RestController
-@Api(value = "瀵嗙爜缁勫悎鏂瑰紡", tags = "鎺ュ彛")
-@RequestMapping("/combination")
-public class CombinationController {
-
- /**
- * 鏈嶅姟瀵硅薄
- */
- @Resource
- private final ICombinationService combinationService;
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param combination 绛涢�夋潯浠�
- * @param query 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆combination锛屽垎椤靛弬鏁皅uery")
- public R<IPage<Combination>> queryByPage(Combination combination, Query query) {
- IPage<Combination> pages = combinationService.page(Condition.getPage(query), Condition.getQueryWrapper(combination));
- return R.data(pages);
- }
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�")
- public R<List> select() {
- List<Map<String, Object>> map = combinationService.selectMaps();
- return R.data(map);
- }
-
- /**
- * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 鍗曟潯鏁版嵁
- */
- @GetMapping("/one")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
- public ResponseEntity<Combination> queryById(@ApiParam(value = "缁勫悎鏂瑰紡ID", required = true) @RequestParam Long id) {
- return ResponseEntity.ok(this.combinationService.queryById(id));
- }
-
- /**
- * 鏂板鍜屼慨鏀规暟鎹�
- *
- * @param combination 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆combination")
- public R submit(@Valid @RequestBody Combination combination) {
- return R.status(combinationService.submit(combination));
- }
-
- /**
- * 鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鍒犻櫎鏄惁鎴愬姛
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
- return ResponseEntity.ok(this.combinationService.deleteByIds(ids));
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DataScopeController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DataScopeController.java
deleted file mode 100644
index faba986..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DataScopeController.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.DataScope;
-import org.springblade.system.service.IDataScopeService;
-import org.springblade.system.vo.DataScopeVO;
-import org.springblade.system.wrapper.DataScopeWrapper;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鏁版嵁鏉冮檺鎺у埗鍣�
- *
- * @author BladeX
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("data-scope")
-@Api(value = "鏁版嵁鏉冮檺", tags = "鏁版嵁鏉冮檺")
-public class DataScopeController extends BladeController {
-
- private final IDataScopeService dataScopeService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
- public R<DataScope> detail(DataScope dataScope) {
- DataScope detail = dataScopeService.getOne(Condition.getQueryWrapper(dataScope));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆dataScope")
- public R<IPage<DataScopeVO>> list(DataScope dataScope, Query query) {
- IPage<DataScope> pages = dataScopeService.page(Condition.getPage(query), Condition.getQueryWrapper(dataScope));
- return R.data(DataScopeWrapper.build().pageVO(pages));
- }
-
- /**
- * 鏂板
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板", notes = "浼犲叆dataScope")
- public R save(@Valid @RequestBody DataScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(dataScopeService.save(dataScope));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇敼", notes = "浼犲叆dataScope")
- public R update(@Valid @RequestBody DataScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(dataScopeService.updateById(dataScope));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dataScope")
- public R submit(@Valid @RequestBody DataScope dataScope) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(dataScopeService.saveOrUpdate(dataScope));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(dataScopeService.deleteLogic(Func.toLongList(ids)));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
deleted file mode 100644
index c2acc4a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.secure.constant.AuthConstant;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.service.IDeptService;
-import org.springblade.system.user.cache.UserCache;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.vo.DeptVO;
-import org.springblade.system.wrapper.DeptWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/dept")
-@Api(value = "閮ㄩ棬", tags = "閮ㄩ棬")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-public class DeptController extends BladeController {
-
- private final IDeptService deptService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dept")
- public R<DeptVO> detail(Dept dept) {
- Dept detail = deptService.getOne(Condition.getQueryWrapper(dept));
- return R.data(DeptWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "fullName", value = "閮ㄩ棬鍏ㄧО", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dept")
- public R<List<DeptVO>> list(@ApiIgnore @RequestParam Map<String, Object> dept, BladeUser bladeUser) {
- QueryWrapper<Dept> queryWrapper = Condition.getQueryWrapper(dept, Dept.class);
- List<Dept> list = deptService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Dept::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(DeptWrapper.build().listNodeVO(list));
- }
-
- /**
- * 鎳掑姞杞藉垪琛�
- */
- @GetMapping("/lazy-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "fullName", value = "閮ㄩ棬鍏ㄧО", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆dept")
- public R<List<DeptVO>> lazyList(@ApiIgnore @RequestParam Map<String, Object> dept, Long parentId, BladeUser bladeUser) {
- List<DeptVO> list = deptService.lazyList(bladeUser.getTenantId(), parentId, dept);
- return R.data(DeptWrapper.build().listNodeLazyVO(list));
- }
-
- /**
- * 鑾峰彇閮ㄩ棬鏍戝舰缁撴瀯
- *
- * @return
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DeptVO>> tree(String tenantId, BladeUser bladeUser) {
- List<DeptVO> tree = deptService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
- return R.data(tree);
- }
-
- /**
- * 鎳掑姞杞借幏鍙栭儴闂ㄦ爲褰㈢粨鏋�
- */
- @GetMapping("/lazy-tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鎳掑姞杞芥爲褰㈢粨鏋�", notes = "鏍戝舰缁撴瀯")
- public R<List<DeptVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
- List<DeptVO> tree = deptService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
- return R.data(tree);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dept")
- public R submit(@Valid @RequestBody Dept dept) {
- if (deptService.submit(dept)) {
- CacheUtil.clear(SYS_CACHE);
- // 杩斿洖鎳掑姞杞芥爲鏇存柊鑺傜偣鎵�闇�瀛楁
- Kv kv = Kv.create().set("id", String.valueOf(dept.getId())).set("tenantId", dept.getTenantId())
- .set("deptCategoryName", DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()));
- return R.data(kv);
- }
- return R.fail("鎿嶄綔澶辫触");
- }
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE);
- return R.status(deptService.removeDept(ids));
- }
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- //@PreAuth(AuthConstant.PERMIT_ALL)
- @GetMapping("/select")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
- public R<List<Dept>> select(Long userId, String deptId) {
- if (Func.isNotEmpty(userId)) {
- User user = UserCache.getUser(userId);
- deptId = user.getDeptId();
- }
- List<Dept> list = deptService.list(Wrappers.<Dept>lambdaQuery().in(Dept::getId, Func.toLongList(deptId)));
- return R.data(list);
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictBizController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictBizController.java
deleted file mode 100644
index 50f85d6..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictBizController.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.service.IDictBizService;
-import org.springblade.system.vo.DictBizVO;
-import org.springblade.system.wrapper.DictBizWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/dict-biz")
-@Api(value = "涓氬姟瀛楀吀", tags = "涓氬姟瀛楀吀")
-public class DictBizController extends BladeController {
-
- private final IDictBizService dictService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
- public R<DictBizVO> detail(DictBiz dict) {
- DictBiz detail = dictService.getOne(Condition.getQueryWrapper(dict));
- return R.data(DictBizWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictBizVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
- List<DictBiz> list = dictService.list(Condition.getQueryWrapper(dict, DictBiz.class).lambda().orderByAsc(DictBiz::getSort));
- return R.data(DictBizWrapper.build().listNodeVO(list));
- }
-
- /**
- * 椤剁骇鍒楄〃
- */
- @GetMapping("/parent-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<IPage<DictBizVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
- return R.data(dictService.parentList(dict, query));
- }
-
- /**
- * 瀛愬垪琛�
- */
- @GetMapping("/child-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictBizVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
- return R.data(dictService.childList(dict, parentId));
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictBizVO>> tree() {
- List<DictBizVO> tree = dictService.tree();
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/parent-tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictBizVO>> parentTree() {
- List<DictBizVO> tree = dictService.parentTree();
- return R.data(tree);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
- public R submit(@Valid @RequestBody DictBiz dict) {
- CacheUtil.clear(DICT_CACHE);
- return R.status(dictService.submit(dict));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(DICT_CACHE);
- return R.status(dictService.removeDict(ids));
- }
-
- /**
- * 鑾峰彇瀛楀吀
- */
- @GetMapping("/dictionary")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
- public R<List<DictBiz>> dictionary(String code) {
- List<DictBiz> tree = dictService.getList(code);
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍�
- */
- @GetMapping("/dictionary-tree")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
- public R<List<DictBizVO>> dictionaryTree(String code) {
- List<DictBiz> tree = dictService.getList(code);
- return R.data(DictBizWrapper.build().listNodeVO(tree));
- }
-
-
-}
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
deleted file mode 100644
index cd3708b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.service.IDictService;
-import org.springblade.system.vo.DictVO;
-import org.springblade.system.wrapper.DictWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/dict")
-@Api(value = "瀛楀吀", tags = "瀛楀吀")
-public class DictController extends BladeController {
-
- private final IDictService dictService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
- public R<DictVO> detail(Dict dict) {
- Dict detail = dictService.getOne(Condition.getQueryWrapper(dict));
- return R.data(DictWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
- List<Dict> list = dictService.list(Condition.getQueryWrapper(dict, Dict.class).lambda().orderByAsc(Dict::getSort));
- DictWrapper dictWrapper = new DictWrapper();
- return R.data(dictWrapper.listNodeVO(list));
- }
-
- /**
- * 椤剁骇鍒楄〃
- */
- @GetMapping("/parent-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<IPage<DictVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
- return R.data(dictService.parentList(dict, query));
- }
-
- /**
- * 瀛愬垪琛�
- */
- @GetMapping("/child-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
- public R<List<DictVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
- return R.data(dictService.childList(dict, parentId));
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictVO>> tree() {
- List<DictVO> tree = dictService.tree();
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
- */
- @GetMapping("/parent-tree")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<DictVO>> parentTree() {
- List<DictVO> tree = dictService.parentTree();
- return R.data(tree);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
- public R submit(@Valid @RequestBody Dict dict) {
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- return R.status(dictService.submit(dict));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- return R.status(dictService.removeDict(ids));
- }
-
- /**
- * 鑾峰彇瀛楀吀
- */
- @GetMapping("/dictionary")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
- public R<List<Dict>> dictionary(String code) {
- List<Dict> tree = dictService.getList(code);
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇瀛楀吀鏍�
- */
- @GetMapping("/dictionary-tree")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
- public R<List<DictVO>> dictionaryTree(String code) {
- List<Dict> tree = dictService.getList(code);
- return R.data(DictWrapper.build().listNodeVO(tree));
- }
-
- /**
- * 瀛楀吀閿�煎垪琛�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "瀛楀吀閿�煎垪琛�", notes = "瀛楀吀閿�煎垪琛�")
- public R<List<Dict>> select() {
- List<Dict> list = dictService.list(Wrappers.<Dict>query().lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID));
- list.forEach(dict -> dict.setDictValue(dict.getCode() + StringPool.COLON + StringPool.SPACE + dict.getDictValue()));
- return R.data(list);
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
deleted file mode 100644
index b798a72..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.node.TreeNode;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Menu;
-import org.springblade.system.entity.TopMenu;
-import org.springblade.system.service.IMenuService;
-import org.springblade.system.service.ITopMenuService;
-import org.springblade.system.vo.CheckedTreeVO;
-import org.springblade.system.vo.GrantTreeVO;
-import org.springblade.system.vo.MenuVO;
-import org.springblade.system.wrapper.MenuWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
-
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/menu")
-@Api(value = "鑿滃崟", tags = "鑿滃崟")
-public class MenuController extends BladeController {
-
- private final IMenuService menuService;
- private final ITopMenuService topMenuService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆menu")
- public R<MenuVO> detail(Menu menu) {
- Menu detail = menuService.getOne(Condition.getQueryWrapper(menu));
- return R.data(MenuWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
- })
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆menu")
- public R<List<MenuVO>> list(@ApiIgnore @RequestParam Map<String, Object> menu) {
- List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().orderByAsc(Menu::getSort));
- return R.data(MenuWrapper.build().listNodeVO(list));
- }
-
- /**
- * 鎳掑姞杞藉垪琛�
- */
- @GetMapping("/lazy-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
- })
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
- public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
- List<MenuVO> list = menuService.lazyList(parentId, menu);
- return R.data(MenuWrapper.build().listNodeLazyVO(list));
- }
-
- /**
- * 鑿滃崟鍒楄〃
- */
- @GetMapping("/menu-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
- })
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鑿滃崟鍒楄〃", notes = "浼犲叆menu")
- public R<List<MenuVO>> menuList(@ApiIgnore @RequestParam Map<String, Object> menu) {
- List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().eq(Menu::getCategory, 1).orderByAsc(Menu::getSort));
- return R.data(MenuWrapper.build().listNodeVO(list));
- }
-
- /**
- * 鎳掑姞杞借彍鍗曞垪琛�
- */
- @GetMapping("/lazy-menu-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
- })
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鎳掑姞杞借彍鍗曞垪琛�", notes = "浼犲叆menu")
- public R<List<MenuVO>> lazyMenuList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
- List<MenuVO> list = menuService.lazyMenuList(parentId, menu);
- return R.data(MenuWrapper.build().listNodeLazyVO(list));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆menu")
- public R submit(@Valid @RequestBody Menu menu) {
- if (menuService.submit(menu)) {
- CacheUtil.clear(MENU_CACHE);
- CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
- // 杩斿洖鎳掑姞杞芥爲鏇存柊鑺傜偣鎵�闇�瀛楁
- Kv kv = Kv.create().set("id", String.valueOf(menu.getId()));
- return R.data(kv);
- }
- return R.fail("鎿嶄綔澶辫触");
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(MENU_CACHE);
- CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
- return R.status(menuService.removeMenu(ids));
- }
-
- /**
- * 鍓嶇鑿滃崟鏁版嵁
- */
- @GetMapping("/routes")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鍓嶇鑿滃崟鏁版嵁", notes = "鍓嶇鑿滃崟鏁版嵁")
- public R<List<MenuVO>> routes(BladeUser user, Long topMenuId) {
- List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId);
- return R.data(list);
- }
-
- /**
- * 鍓嶇鎸夐挳鏁版嵁
- */
- @GetMapping("/buttons")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "鍓嶇鎸夐挳鏁版嵁", notes = "鍓嶇鎸夐挳鏁版嵁")
- public R<List<MenuVO>> buttons(BladeUser user) {
- List<MenuVO> list = menuService.buttons(user.getRoleId());
- return R.data(list);
- }
-
- /**
- * 鑾峰彇鑿滃崟鏍戝舰缁撴瀯
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 11)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<TreeNode>> tree() {
- List<TreeNode> tree = menuService.tree();
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇鏉冮檺鍒嗛厤鏍戝舰缁撴瀯
- */
- @GetMapping("/grant-tree")
- @ApiOperationSupport(order = 12)
- @ApiOperation(value = "鏉冮檺鍒嗛厤鏍戝舰缁撴瀯", notes = "鏉冮檺鍒嗛厤鏍戝舰缁撴瀯")
- public R<GrantTreeVO> grantTree(BladeUser user) {
- GrantTreeVO vo = new GrantTreeVO();
- vo.setMenu(menuService.grantTree(user));
- vo.setDataScope(menuService.grantDataScopeTree(user));
- vo.setApiScope(menuService.grantApiScopeTree(user));
- return R.data(vo);
- }
-
- /**
- * 鑾峰彇鏉冮檺鍒嗛厤鏍戝舰缁撴瀯
- */
- @GetMapping("/role-tree-keys")
- @ApiOperationSupport(order = 13)
- @ApiOperation(value = "瑙掕壊鎵�鍒嗛厤鐨勬爲", notes = "瑙掕壊鎵�鍒嗛厤鐨勬爲")
- public R<CheckedTreeVO> roleTreeKeys(String roleIds) {
- CheckedTreeVO vo = new CheckedTreeVO();
- vo.setMenu(menuService.roleTreeKeys(roleIds));
- vo.setDataScope(menuService.dataScopeTreeKeys(roleIds));
- vo.setApiScope(menuService.apiScopeTreeKeys(roleIds));
- return R.data(vo);
- }
-
- /**
- * 鑾峰彇椤堕儴鑿滃崟鏍戝舰缁撴瀯
- */
- @GetMapping("/grant-top-tree")
- @ApiOperationSupport(order = 14)
- @ApiOperation(value = "椤堕儴鑿滃崟鏍戝舰缁撴瀯", notes = "椤堕儴鑿滃崟鏍戝舰缁撴瀯")
- public R<GrantTreeVO> grantTopTree(BladeUser user) {
- GrantTreeVO vo = new GrantTreeVO();
- vo.setMenu(menuService.grantTopTree(user));
- return R.data(vo);
- }
-
- /**
- * 鑾峰彇椤堕儴鑿滃崟鏍戝舰缁撴瀯
- */
- @GetMapping("/top-tree-keys")
- @ApiOperationSupport(order = 15)
- @ApiOperation(value = "椤堕儴鑿滃崟鎵�鍒嗛厤鐨勬爲", notes = "椤堕儴鑿滃崟鎵�鍒嗛厤鐨勬爲")
- public R<CheckedTreeVO> topTreeKeys(String topMenuIds) {
- CheckedTreeVO vo = new CheckedTreeVO();
- vo.setMenu(menuService.topTreeKeys(topMenuIds));
- return R.data(vo);
- }
-
- /**
- * 椤堕儴鑿滃崟鏁版嵁
- */
- @GetMapping("/top-menu")
- @ApiOperationSupport(order = 16)
- @ApiOperation(value = "椤堕儴鑿滃崟鏁版嵁", notes = "椤堕儴鑿滃崟鏁版嵁")
- public R<List<TopMenu>> topMenu(BladeUser user) {
- if (Func.isEmpty(user)) {
- return null;
- }
- List<TopMenu> list = topMenuService.list(Wrappers.<TopMenu>query().lambda().orderByAsc(TopMenu::getSort));
- return R.data(list);
- }
-
- /**
- * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
- */
- @GetMapping("/auth-routes")
- @ApiOperationSupport(order = 17)
- @ApiOperation(value = "鑿滃崟鐨勮鑹叉潈闄�")
- public R<List<Kv>> authRoutes(BladeUser user) {
- if (Func.isEmpty(user)) {
- return null;
- }
- return R.data(menuService.authRoutes(user));
- }
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java
deleted file mode 100644
index 3fc5614..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ParamController.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Param;
-import org.springblade.system.service.IParamService;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.PARAM_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/param")
-@Api(value = "鍙傛暟绠$悊", tags = "鎺ュ彛")
-public class ParamController extends BladeController {
-
- private final IParamService paramService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆param")
- public R<Param> detail(Param param) {
- Param detail = paramService.getOne(Condition.getQueryWrapper(param));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "paramName", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "paramKey", value = "鍙傛暟閿悕", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "paramValue", value = "鍙傛暟閿��", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆param")
- public R<IPage<Param>> list(@ApiIgnore @RequestParam Map<String, Object> param, Query query) {
- IPage<Param> pages = paramService.page(Condition.getPage(query), Condition.getQueryWrapper(param, Param.class));
- return R.data(pages);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆param")
- public R submit(@Valid @RequestBody Param param) {
- CacheUtil.clear(PARAM_CACHE);
- CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
- return R.status(paramService.saveOrUpdate(param));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(PARAM_CACHE);
- CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
- return R.status(paramService.deleteLogic(Func.toLongList(ids)));
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/PostController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/PostController.java
deleted file mode 100644
index ee8115d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/PostController.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Post;
-import org.springblade.system.service.IPostService;
-import org.springblade.system.vo.PostVO;
-import org.springblade.system.wrapper.PostWrapper;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 宀椾綅琛� 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/post")
-@Api(value = "宀椾綅", tags = "宀椾綅")
-public class PostController extends BladeController {
-
- private final IPostService postService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆post")
- public R<PostVO> detail(Post post) {
- Post detail = postService.getOne(Condition.getQueryWrapper(post));
- return R.data(PostWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒嗛〉 宀椾綅琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆post")
- public R<IPage<PostVO>> list(Post post, Query query) {
- IPage<Post> pages = postService.page(Condition.getPage(query), Condition.getQueryWrapper(post));
- return R.data(PostWrapper.build().pageVO(pages));
- }
-
-
- /**
- * 鑷畾涔夊垎椤� 宀椾綅琛�
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆post")
- public R<IPage<PostVO>> page(PostVO post, Query query) {
- IPage<PostVO> pages = postService.selectPostPage(Condition.getPage(query), post);
- return R.data(pages);
- }
-
- /**
- * 鏂板 宀椾綅琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆post")
- public R save(@Valid @RequestBody Post post) {
- CacheUtil.clear(SYS_CACHE);
- return R.status(postService.save(post));
- }
-
- /**
- * 淇敼 宀椾綅琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆post")
- public R update(@Valid @RequestBody Post post) {
- CacheUtil.clear(SYS_CACHE);
- return R.status(postService.updateById(post));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 宀椾綅琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆post")
- public R submit(@Valid @RequestBody Post post) {
- CacheUtil.clear(SYS_CACHE);
- return R.status(postService.saveOrUpdate(post));
- }
-
-
- /**
- * 鍒犻櫎 宀椾綅琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE);
- return R.status(postService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆post")
- public R<List<Post>> select(String tenantId, BladeUser bladeUser) {
- List<Post> list = postService.list(Wrappers.<Post>query().lambda().eq(Post::getTenantId, Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())));
- return R.data(list);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java
deleted file mode 100644
index 307c847..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.excel.util.ExcelUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.system.entity.Region;
-import org.springblade.system.excel.RegionExcel;
-import org.springblade.system.excel.RegionImporter;
-import org.springblade.system.service.IRegionService;
-import org.springblade.system.vo.RegionVO;
-import org.springblade.system.wrapper.RegionWrapper;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 琛屾斂鍖哄垝琛� 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/region")
-@Api(value = "琛屾斂鍖哄垝", tags = "琛屾斂鍖哄垝")
-public class RegionController extends BladeController {
-
- private final IRegionService regionService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆region")
- public R<RegionVO> detail(Region region) {
- Region detail = regionService.getOne(Condition.getQueryWrapper(region));
- return R.data(RegionWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒嗛〉 琛屾斂鍖哄垝琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆region")
- public R<IPage<Region>> list(Region region, Query query) {
- IPage<Region> pages = regionService.page(Condition.getPage(query), Condition.getQueryWrapper(region));
- return R.data(pages);
- }
-
- /**
- * 鎳掑姞杞藉垪琛�
- */
- @GetMapping("/lazy-list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鍖哄垝缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鍖哄垝鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
- public R<List<RegionVO>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
- List<RegionVO> list = regionService.lazyList(parentCode, menu);
- return R.data(RegionWrapper.build().listNodeLazyVO(list));
- }
-
- /**
- * 鎳掑姞杞藉垪琛�
- */
- @GetMapping("/lazy-tree")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "code", value = "鍖哄垝缂栧彿", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "name", value = "鍖哄垝鍚嶇О", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
- public R<List<RegionVO>> lazyTree(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
- List<RegionVO> list = regionService.lazyTree(parentCode, menu);
- return R.data(RegionWrapper.build().listNodeLazyVO(list));
- }
-
- /**
- * 鏂板 琛屾斂鍖哄垝琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板", notes = "浼犲叆region")
- public R save(@Valid @RequestBody Region region) {
- return R.status(regionService.save(region));
- }
-
- /**
- * 淇敼 琛屾斂鍖哄垝琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "淇敼", notes = "浼犲叆region")
- public R update(@Valid @RequestBody Region region) {
- return R.status(regionService.updateById(region));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 琛屾斂鍖哄垝琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆region")
- public R submit(@Valid @RequestBody Region region) {
- return R.status(regionService.submit(region));
- }
-
-
- /**
- * 鍒犻櫎 琛屾斂鍖哄垝琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭")
- public R remove(@ApiParam(value = "涓婚敭", required = true) @RequestParam String id) {
- return R.status(regionService.removeRegion(id));
- }
-
- /**
- * 琛屾斂鍖哄垝涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
- public R<List<Region>> select(@RequestParam(required = false, defaultValue = "00") String code) {
- List<Region> list = regionService.list(Wrappers.<Region>query().lambda().eq(Region::getParentCode, code));
- return R.data(list);
- }
-
- /**
- * 瀵煎叆琛屾斂鍖哄垝鏁版嵁
- */
- @PostMapping("import-region")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "瀵煎叆琛屾斂鍖哄垝", notes = "浼犲叆excel")
- public R importRegion(MultipartFile file, Integer isCovered) {
- RegionImporter regionImporter = new RegionImporter(regionService, isCovered == 1);
- ExcelUtil.save(file, regionImporter, RegionExcel.class);
- return R.success("鎿嶄綔鎴愬姛");
- }
-
- /**
- * 瀵煎嚭琛屾斂鍖哄垝鏁版嵁
- */
- @GetMapping("export-region")
- @ApiOperationSupport(order = 11)
- @ApiOperation(value = "瀵煎嚭琛屾斂鍖哄垝", notes = "浼犲叆user")
- public void exportRegion(@ApiIgnore @RequestParam Map<String, Object> region, HttpServletResponse response) {
- QueryWrapper<Region> queryWrapper = Condition.getQueryWrapper(region, Region.class);
- List<RegionExcel> list = regionService.exportRegion(queryWrapper);
- ExcelUtil.export(response, "琛屾斂鍖哄垝鏁版嵁" + DateUtil.time(), "琛屾斂鍖哄垝鏁版嵁琛�", list, RegionExcel.class);
- }
-
- /**
- * 瀵煎嚭妯℃澘
- */
- @GetMapping("export-template")
- @ApiOperationSupport(order = 12)
- @ApiOperation(value = "瀵煎嚭妯℃澘")
- public void exportUser(HttpServletResponse response) {
- List<RegionExcel> list = new ArrayList<>();
- ExcelUtil.export(response, "琛屾斂鍖哄垝妯℃澘", "琛屾斂鍖哄垝琛�", list, RegionExcel.class);
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
deleted file mode 100644
index 7226035..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Role;
-import org.springblade.system.service.IRoleService;
-import org.springblade.system.user.cache.UserCache;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.vo.GrantVO;
-import org.springblade.system.vo.RoleVO;
-import org.springblade.system.wrapper.RoleWrapper;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/role")
-@Api(value = "瑙掕壊", tags = "瑙掕壊")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-public class RoleController extends BladeController {
-
- private final IRoleService roleService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆role")
- public R<RoleVO> detail(Role role) {
- Role detail = roleService.getOne(Condition.getQueryWrapper(role));
- return R.data(RoleWrapper.build().entityVO(detail));
- }
-
- /**
- * 鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "roleName", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "roleAlias", value = "瑙掕壊鍒悕", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆role")
- public R<List<RoleVO>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) {
- QueryWrapper<Role> queryWrapper = Condition.getQueryWrapper(role, Role.class);
- List<Role> list = roleService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Role::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(RoleWrapper.build().listNodeVO(list));
- }
-
- /**
- * 鑾峰彇瑙掕壊鏍戝舰缁撴瀯
- */
- @GetMapping("/tree")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<RoleVO>> tree(String tenantId, BladeUser bladeUser) {
- List<RoleVO> tree = roleService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
- return R.data(tree);
- }
-
- /**
- * 鑾峰彇鎸囧畾瑙掕壊鏍戝舰缁撴瀯
- */
- @GetMapping("/tree-by-id")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
- public R<List<RoleVO>> treeById(Long roleId, BladeUser bladeUser) {
- Role role = SysCache.getRole(roleId);
- List<RoleVO> tree = roleService.tree(Func.notNull(role) ? role.getTenantId() : bladeUser.getTenantId());
- return R.data(tree);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆role")
- public R submit(@Valid @RequestBody Role role) {
- CacheUtil.clear(SYS_CACHE);
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(roleService.submit(role));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE);
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(roleService.removeRole(ids));
- }
-
- /**
- * 璁剧疆瑙掕壊鏉冮檺
- */
- @PostMapping("/grant")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎")
- public R grant(@RequestBody GrantVO grantVO) {
- CacheUtil.clear(SYS_CACHE);
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- boolean temp = roleService.grant(grantVO.getRoleIds(), grantVO.getMenuIds(), grantVO.getDataScopeIds(), grantVO.getApiScopeIds());
- return R.status(temp);
- }
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
- public R<List<Role>> select(Long userId, String roleId) {
- if (Func.isNotEmpty(userId)) {
- User user = UserCache.getUser(userId);
- roleId = user.getRoleId();
- }
- List<Role> list = roleService.list(Wrappers.<Role>lambdaQuery().in(Role::getId, Func.toLongList(roleId)));
- return R.data(list);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/SearchController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/SearchController.java
deleted file mode 100644
index f4d10e9..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/SearchController.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Post;
-import org.springblade.system.service.IDeptService;
-import org.springblade.system.service.IPostService;
-import org.springblade.system.service.IRoleService;
-import org.springblade.system.vo.DeptVO;
-import org.springblade.system.vo.PostVO;
-import org.springblade.system.vo.RoleVO;
-import org.springblade.system.wrapper.PostWrapper;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-/**
- * 鏌ヨ鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/search")
-@Api(value = "鏌ヨ", tags = "鏌ヨ")
-public class SearchController {
-
- private final IRoleService roleService;
-
- private final IDeptService deptService;
-
- private final IPostService postService;
-
- /**
- * 瑙掕壊淇℃伅鏌ヨ
- */
- @GetMapping("/role")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "瑙掕壊淇℃伅鏌ヨ", notes = "浼犲叆roleName鎴栬�卲arentId")
- public R<List<RoleVO>> roleSearch(String roleName, Long parentId) {
- return R.data(roleService.search(roleName, parentId));
- }
-
- /**
- * 閮ㄩ棬淇℃伅鏌ヨ
- */
- @GetMapping("/dept")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "閮ㄩ棬淇℃伅鏌ヨ", notes = "浼犲叆deptName鎴栬�卲arentId")
- public R<List<DeptVO>> deptSearch(String deptName, Long parentId) {
- return R.data(deptService.search(deptName, parentId));
- }
-
- /**
- * 宀椾綅淇℃伅鏌ヨ
- */
- @GetMapping("/post")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "宀椾綅淇℃伅鏌ヨ", notes = "浼犲叆postName")
- public R<IPage<PostVO>> postSearch(String postName, Query query) {
- LambdaQueryWrapper<Post> queryWrapper = Wrappers.<Post>query().lambda();
- if (Func.isNotBlank(postName)) {
- queryWrapper.like(Post::getPostName, postName);
- }
- IPage<Post> pages = postService.page(Condition.getPage(query), queryWrapper);
- return R.data(PostWrapper.build().pageVO(pages));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java
deleted file mode 100644
index d89b21a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package org.springblade.system.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Strategy;
-import org.springblade.system.service.IStrategyService;
-import org.springframework.data.domain.Page;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 瀵嗙爜绛栫暐(Strategy)琛ㄦ帶鍒跺眰
- *
- * @author makejava
- * @since 2023-03-20 16:45:31
- */
-@NonDS
-@ApiIgnore
-@AllArgsConstructor
-@RestController
-@RequestMapping("/strategy")
-@Api(value = "瀵嗙爜绛栫暐", tags = "鎺ュ彛")
-public class StrategyController {
-
- /**
- * 鏈嶅姟瀵硅薄
- */
- @Resource
- private IStrategyService strategyService;
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param query 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆鍒嗛〉鍙傛暟query")
- public R<Page<Strategy>> queryByPage(Query query) {
- Page<Strategy> strategyPage = strategyService.queryAllByPage(query);
- return R.data(strategyPage);
- }
-
- /**
- * 鏌ヨ榛樿瀵嗙爜绛栫暐
- *
- * @return 鏌ヨ缁撴灉
- */
- @GetMapping("/default")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鏌ヨ榛樿瀵嗙爜绛栫暐")
- public R<Strategy> queryByIsDefault() {
- Strategy strategy = strategyService.queryByIsDefault();
- return R.data(strategy);
- }
-
- /**
- * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 鍗曟潯鏁版嵁
- */
- @GetMapping("/one")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
- public ResponseEntity<Strategy> queryById(@ApiParam(value = "瀵嗙爜绛栫暐ID", required = true) @RequestParam String id) {
- return ResponseEntity.ok(this.strategyService.queryById(id));
- }
-
- /**
- * 鏂板鍜屼慨鏀规暟鎹�
- *
- * @param strategy 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鎴栦慨鏀规暟鎹�", notes = "浼犲叆strategy")
- public ResponseEntity<Boolean> submit(@Valid @RequestBody Strategy strategy) {
- return ResponseEntity.ok(this.strategyService.submit(strategy));
- }
-
- /**
- * 鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鍒犻櫎鏄惁鎴愬姛
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
- public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
- return ResponseEntity.ok(this.strategyService.deleteByIds(ids));
- }
-
- /**
- * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
- *
- * @param userId 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PostMapping("/query-userid")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐", notes = "浼犲叆userId")
- public R<Strategy> queryByUserId(@Valid @RequestParam Long userId) {
- return R.data(this.strategyService.queryByUserId(userId));
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
deleted file mode 100644
index a21106b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.*;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.entity.TenantPackage;
-import org.springblade.system.service.ITenantPackageService;
-import org.springblade.system.service.ITenantService;
-import org.springblade.system.vo.TenantVO;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-import static org.springblade.core.tenant.constant.TenantBaseConstant.TENANT_DATASOURCE_CACHE;
-import static org.springblade.core.tenant.constant.TenantBaseConstant.TENANT_DATASOURCE_EXIST_KEY;
-import static org.springblade.system.cache.SysCache.TENANT_PACKAGE_ID;
-import static org.springblade.system.cache.SysCache.TENANT_TENANT_ID;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-@RequestMapping("/tenant")
-@Api(value = "绉熸埛绠$悊", tags = "鎺ュ彛")
-public class TenantController extends BladeController {
-
- private final ITenantService tenantService;
-
- private final ITenantPackageService tenantPackageService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<Tenant> detail(Tenant tenant) {
- Tenant detail = tenantService.getOne(Condition.getQueryWrapper(tenant));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "tenantId", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "tenantName", value = "瑙掕壊鍒悕", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "contactNumber", value = "鑱旂郴鐢佃瘽", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<IPage<Tenant>> list(@ApiIgnore @RequestParam Map<String, Object> tenant, Query query, BladeUser bladeUser) {
- QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant, Tenant.class);
- IPage<Tenant> pages = tenantService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(pages);
- }
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<List<Tenant>> select(Tenant tenant, BladeUser bladeUser) {
- QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant);
- List<Tenant> list = tenantService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(list);
- }
-
- /**
- * 鑷畾涔夊垎椤�
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<IPage<Tenant>> page(Tenant tenant, Query query) {
- IPage<Tenant> pages = tenantService.selectTenantPage(Condition.getPage(query), tenant);
- return R.data(pages);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- public R submit(@Valid @RequestBody TenantVO tenantVO) {
- return R.status(tenantService.submitTenant(tenantVO));
- }
-
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(tenantService.removeTenant(Func.toLongList(ids)));
- }
-
- /**
- * 鏁版嵁婧愰厤缃�
- */
- @PostMapping("/datasource")
- @ApiOperationSupport(order = 8)
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperation(value = "鏁版嵁婧愰厤缃�", notes = "浼犲叆datasource_id")
- public R datasource(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "鏁版嵁婧怚D", required = true) @RequestParam Long datasourceId){
- CacheUtil.evict(TENANT_DATASOURCE_CACHE, TENANT_DATASOURCE_EXIST_KEY, tenantId, Boolean.FALSE);
- return R.status(tenantService.update(Wrappers.<Tenant>update().lambda().set(Tenant::getDatasourceId, datasourceId).eq(Tenant::getTenantId, tenantId)));
- }
-
- /**
- * 鏍规嵁鍚嶇О鏌ヨ鍒楄〃
- *
- * @param name 绉熸埛鍚嶇О
- */
- @GetMapping("/find-by-name")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<List<Tenant>> findByName(String name) {
- List<Tenant> list = tenantService.list(Wrappers.<Tenant>query().lambda().like(Tenant::getTenantName, name));
- return R.data(list);
- }
-
- /**
- * 鏍规嵁鍩熷悕鏌ヨ淇℃伅
- *
- * @param domain 鍩熷悕
- */
- @GetMapping("/info")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "閰嶇疆淇℃伅", notes = "浼犲叆domain")
- public R<Kv> info(String domain) {
- Tenant tenant = tenantService.getOne(Wrappers.<Tenant>query().lambda().eq(Tenant::getDomainUrl, domain));
- Kv kv = Kv.create();
- if (tenant != null) {
- kv.set("tenantId", tenant.getTenantId())
- .set("domain", tenant.getDomainUrl())
- .set("backgroundUrl", tenant.getBackgroundUrl());
- }
- return R.data(kv);
- }
-
- /**
- * 鏍规嵁绉熸埛ID鏌ヨ浜у搧鍖呰鎯�
- *
- * @param tenantId 绉熸埛ID
- */
- @GetMapping("/package-detail")
- @ApiOperationSupport(order = 11)
- @ApiOperation(value = "浜у搧鍖呰鎯�", notes = "浼犲叆tenantId")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- public R<TenantPackage> packageDetail(Long tenantId) {
- Tenant tenant = tenantService.getById(tenantId);
- return R.data(tenantPackageService.getById(tenant.getPackageId()));
- }
-
- /**
- * 浜у搧鍖呴厤缃�
- */
- @PostMapping("/package-setting")
- @ApiOperationSupport(order = 12)
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- @ApiOperation(value = "浜у搧鍖呴厤缃�", notes = "浼犲叆packageId")
- public R packageSetting(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "浜у搧鍖匢D") Long packageId) {
- CacheUtil.evict(SYS_CACHE, TENANT_TENANT_ID, tenantId, Boolean.FALSE);
- CacheUtil.evict(SYS_CACHE, TENANT_PACKAGE_ID, tenantId, Boolean.FALSE);
- return R.status(tenantService.update(Wrappers.<Tenant>update().lambda().set(Tenant::getPackageId, packageId).eq(Tenant::getTenantId, tenantId)));
- }
-
- /**
- * 鏌ヨ绉熸埛淇℃伅锛岀畝閿�煎褰㈠娍
- * @return
- */
- @GetMapping("/tenant-map")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "涓嬫媺绉熸埛淇℃伅")
- public R<List> findAll() {
- List<Map<String, Object>> map = tenantService.selectMaps();
- return R.data(map);
- }
-
- /**
- * 鏌ヨ鏄惁閰嶇疆鏈夐粯璁ゅ繀椤诲紑鍚笁鍛樼鐞�
- * @return
- */
- @GetMapping("/find-ssa-enable")
- @ApiOperationSupport(order = 14)
- @ApiOperation(value = "涓嬫媺绉熸埛淇℃伅")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
- public R findIsOpen() {
- boolean isOpen = this.tenantService.findIsOpen();
- return R.data(isOpen);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java
deleted file mode 100644
index 242c69c..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.TenantPackage;
-import org.springblade.system.service.ITenantPackageService;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 绉熸埛浜у搧琛� 鎺у埗鍣�
- *
- * @author BladeX
- */
-@RestController
-@AllArgsConstructor
-@RequestMapping("/tenant-package")
-@Api(value = "绉熸埛浜у搧琛�", tags = "绉熸埛浜у搧琛ㄦ帴鍙�")
-public class TenantPackageController extends BladeController {
-
- private final ITenantPackageService tenantPackageService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenantPackage")
- public R<TenantPackage> detail(TenantPackage tenantPackage) {
- TenantPackage detail = tenantPackageService.getOne(Condition.getQueryWrapper(tenantPackage));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 绉熸埛浜у搧琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenantPackage")
- public R<IPage<TenantPackage>> list(TenantPackage tenantPackage, Query query) {
- IPage<TenantPackage> pages = tenantPackageService.page(Condition.getPage(query), Condition.getQueryWrapper(tenantPackage));
- return R.data(pages);
- }
-
- /**
- * 鏂板 绉熸埛浜у搧琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板", notes = "浼犲叆tenantPackage")
- public R save(@Valid @RequestBody TenantPackage tenantPackage) {
- return R.status(tenantPackageService.save(tenantPackage));
- }
-
- /**
- * 淇敼 绉熸埛浜у搧琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "淇敼", notes = "浼犲叆tenantPackage")
- public R update(@Valid @RequestBody TenantPackage tenantPackage) {
- return R.status(tenantPackageService.updateById(tenantPackage));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 绉熸埛浜у搧琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆tenantPackage")
- public R submit(@Valid @RequestBody TenantPackage tenantPackage) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(tenantPackageService.saveOrUpdate(tenantPackage));
- }
-
-
- /**
- * 鍒犻櫎 绉熸埛浜у搧琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return R.status(tenantPackageService.deleteLogic(Func.toLongList(ids)));
- }
-
-
- /**
- * 涓嬫媺鏁版嵁婧�
- */
- @GetMapping("/select")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<List<TenantPackage>> select(TenantPackage tenantPackage) {
- return R.data(tenantPackageService.list(Condition.getQueryWrapper(tenantPackage)));
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java
deleted file mode 100644
index 686dd4c..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.TopMenu;
-import org.springblade.system.service.ITopMenuService;
-import org.springblade.system.vo.GrantVO;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 椤堕儴鑿滃崟琛� 鎺у埗鍣�
- *
- * @author BladeX
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-@RequestMapping("/topmenu")
-@Api(value = "椤堕儴鑿滃崟琛�", tags = "椤堕儴鑿滃崟")
-//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
-public class TopMenuController extends BladeController {
-
- private final ITopMenuService topMenuService;
-
- /**
- * 璇︽儏
- */
- @GetMapping("/detail")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆topMenu")
- public R<TopMenu> detail(TopMenu topMenu) {
- TopMenu detail = topMenuService.getOne(Condition.getQueryWrapper(topMenu));
- return R.data(detail);
- }
-
- /**
- * 鍒嗛〉 椤堕儴鑿滃崟琛�
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆topMenu")
- public R<IPage<TopMenu>> list(TopMenu topMenu, Query query) {
- IPage<TopMenu> pages = topMenuService.page(Condition.getPage(query), Condition.getQueryWrapper(topMenu).lambda().orderByAsc(TopMenu::getSort));
- return R.data(pages);
- }
-
- /**
- * 鏂板 椤堕儴鑿滃崟琛�
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板", notes = "浼犲叆topMenu")
- public R save(@Valid @RequestBody TopMenu topMenu) {
- return R.status(topMenuService.save(topMenu));
- }
-
- /**
- * 淇敼 椤堕儴鑿滃崟琛�
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆topMenu")
- public R update(@Valid @RequestBody TopMenu topMenu) {
- return R.status(topMenuService.updateById(topMenu));
- }
-
- /**
- * 鏂板鎴栦慨鏀� 椤堕儴鑿滃崟琛�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆topMenu")
- public R submit(@Valid @RequestBody TopMenu topMenu) {
- return R.status(topMenuService.saveOrUpdate(topMenu));
- }
-
-
- /**
- * 鍒犻櫎 椤堕儴鑿滃崟琛�
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
- return R.status(topMenuService.deleteLogic(Func.toLongList(ids)));
- }
-
- /**
- * 璁剧疆椤堕儴鑿滃崟
- */
- @PostMapping("/grant")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "椤堕儴鑿滃崟閰嶇疆", notes = "浼犲叆topMenuId闆嗗悎浠ュ強menuId闆嗗悎")
- public R grant(@RequestBody GrantVO grantVO) {
- CacheUtil.clear(SYS_CACHE);
- CacheUtil.clear(MENU_CACHE);
- CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
- boolean temp = topMenuService.grant(grantVO.getTopMenuIds(), grantVO.getMenuIds());
- return R.status(temp);
- }
-
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java
deleted file mode 100644
index aaa6062..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.springblade.system.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.system.service.IUserPwdstrategyService;
-import org.springblade.system.vo.UserPwdstrategyVO;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-/**
- * 鐢ㄦ埛瀵嗙爜绛栫暐鍏宠仈(UserPwdstrategy)琛ㄦ帶鍒跺眰
- *
- * @author ludc
- * @since 2023-03-20 15:23:24
- */
-@NonDS
-@ApiIgnore
-@AllArgsConstructor
-@RestController
-@RequestMapping("/user-pwdstrategy")
-@Api(value = "鐢ㄦ埛瀵嗙爜瀹夊叏绛栫暐鍏宠仈琛�", tags = "鎺ュ彛")
-public class UserPwdstrategyController {
-
- @Resource
- private IUserPwdstrategyService userPwdstrategyService;
-
- /**
- * 鏂板鍜屼慨鏀规暟鎹�
- *
- * @param userPwdstrategyVO 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PutMapping("/insert")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鏁版嵁", notes = "浼犲叆userPwdstrategy")
- public ResponseEntity<Boolean> insert(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) {
- return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO));
- }
-
- /**
- * 鏂板鍜屼慨鏀规暟鎹�
- *
- * @param userPwdstrategyVO 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "淇敼鏁版嵁", notes = "浼犲叆userPwdstrategy")
- public ResponseEntity<Boolean> update(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) {
- return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO));
- }
-
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java
deleted file mode 100644
index 6dca0b9..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.springblade.system.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.ValueRange;
-import org.springblade.system.service.IValueRangeService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * (ValueRangeController)琛ㄦ帶鍒跺眰
- *
- * @author ludc
- * @since 2023-03-20 15:23:24
- */
-@NonDS
-@ApiIgnore
-@AllArgsConstructor
-@RestController
-@RequestMapping("/value-range")
-@Api(value = "瀵嗙爜缁勫悎鏂瑰紡鍙栧��", tags = "鎺ュ彛")
-public class ValueRangeController {
-
- /**
- * 鏈嶅姟瀵硅薄
- */
- @Resource
- private IValueRangeService valueRangeService;
-
- @GetMapping("/list")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
- public R<List<ValueRange>> queryByList() {
- return R.data(valueRangeService.queryByAll());
- }
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param valueRange 绛涢�夋潯浠�
- * @param query 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆valueRange锛屽垎椤靛弬鏁皅uery")
- public R<IPage<ValueRange>> queryByPage(ValueRange valueRange, Query query) {
- IPage<ValueRange> pages = valueRangeService.page(Condition.getPage(query), Condition.getQueryWrapper(valueRange));
- return R.data(pages);
- }
-
- /**
- * 鏂板鍜屼慨鏀规暟鎹�
- *
- * @param valueRange 瀹炰綋
- * @return 鏂板缁撴灉
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆valueRange")
- public ResponseEntity<Boolean> submit(@Valid @RequestBody ValueRange valueRange) {
- return ResponseEntity.ok(this.valueRangeService.submit(valueRange));
- }
-
- /**
- * 鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鍒犻櫎鏄惁鎴愬姛
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
- public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
- return ResponseEntity.ok(this.valueRangeService.deleteByIds(ids));
- }
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionExcel.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionExcel.java
deleted file mode 100644
index a3b78e5..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionExcel.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.system.excel;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
-import com.alibaba.excel.annotation.write.style.ContentRowHeight;
-import com.alibaba.excel.annotation.write.style.HeadRowHeight;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * RegionExcel
- *
- * @author Chill
- */
-@Data
-@ColumnWidth(16)
-@HeadRowHeight(20)
-@ContentRowHeight(18)
-public class RegionExcel implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @ExcelProperty("鍖哄垝缂栧彿")
- private String code;
-
- @ExcelProperty("鐖跺尯鍒掔紪鍙�")
- private String parentCode;
-
- @ExcelProperty("绁栧尯鍒掔紪鍙�")
- private String ancestors;
-
- @ExcelProperty("鍖哄垝鍚嶇О")
- private String name;
-
- @ExcelProperty("鐪佺骇鍖哄垝缂栧彿")
- private String provinceCode;
-
- @ExcelProperty("鐪佺骇鍚嶇О")
- private String provinceName;
-
- @ExcelProperty("甯傜骇鍖哄垝缂栧彿")
- private String cityCode;
-
- @ExcelProperty("甯傜骇鍚嶇О")
- private String cityName;
-
- @ExcelProperty("鍖虹骇鍖哄垝缂栧彿")
- private String districtCode;
-
- @ExcelProperty("鍖虹骇鍚嶇О")
- private String districtName;
-
- @ExcelProperty("闀囩骇鍖哄垝缂栧彿")
- private String townCode;
-
- @ExcelProperty("闀囩骇鍚嶇О")
- private String townName;
-
- @ExcelProperty("鏉戠骇鍖哄垝缂栧彿")
- private String villageCode;
-
- @ExcelProperty("鏉戠骇鍚嶇О")
- private String villageName;
-
- @ExcelProperty("灞傜骇")
- private Integer regionLevel;
-
- @ExcelProperty("鎺掑簭")
- private Integer sort;
-
- @ExcelProperty("澶囨敞")
- private String remark;
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionImporter.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionImporter.java
deleted file mode 100644
index 0d17b53..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/excel/RegionImporter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.excel;
-
-import lombok.RequiredArgsConstructor;
-import org.springblade.core.excel.support.ExcelImporter;
-import org.springblade.system.service.IRegionService;
-
-import java.util.List;
-
-/**
- * 琛屾斂鍖哄垝鏁版嵁瀵煎叆绫�
- *
- * @author Chill
- */
-@RequiredArgsConstructor
-public class RegionImporter implements ExcelImporter<RegionExcel> {
-
- private final IRegionService service;
- private final Boolean isCovered;
-
- @Override
- public void save(List<RegionExcel> data) {
- service.importRegion(data, isCovered);
- }
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/ApiScopeClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/ApiScopeClient.java
deleted file mode 100644
index 76433f1..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/ApiScopeClient.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.feign;
-
-import lombok.RequiredArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.utils.Func;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static org.springblade.core.secure.constant.PermissionConstant.permissionAllStatement;
-import static org.springblade.core.secure.constant.PermissionConstant.permissionStatement;
-
-/**
- * 鎺ュ彛鏉冮檺Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@RequiredArgsConstructor
-public class ApiScopeClient implements IApiScopeClient {
-
- private final JdbcTemplate jdbcTemplate;
-
- @Override
- @GetMapping(PERMISSION_PATH)
- public List<String> permissionPath(String roleId) {
- List<Long> roleIds = Func.toLongList(roleId);
- return jdbcTemplate.queryForList(permissionAllStatement(roleIds.size()), roleIds.toArray(), String.class);
- }
-
- @Override
- @GetMapping(PERMISSION_CODE)
- public List<String> permissionCode(String permission, String roleId) {
- List<Object> args = new ArrayList<>(Collections.singletonList(permission));
- List<Long> roleIds = Func.toLongList(roleId);
- args.addAll(roleIds);
- return jdbcTemplate.queryForList(permissionStatement(roleIds.size()), args.toArray(), String.class);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DataScopeClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DataScopeClient.java
deleted file mode 100644
index a257757..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DataScopeClient.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.system.feign;
-
-import lombok.RequiredArgsConstructor;
-import org.springblade.core.datascope.constant.DataScopeConstant;
-import org.springblade.core.datascope.model.DataScopeModel;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * 鏁版嵁鏉冮檺Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@RequiredArgsConstructor
-public class DataScopeClient implements IDataScopeClient {
-
- private static final DataScopeModel SEARCHED_DATA_SCOPE_MODEL = new DataScopeModel(Boolean.TRUE);
-
- private final JdbcTemplate jdbcTemplate;
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param mapperId 鏁版嵁鏉冮檺mapperId
- * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
- * @return DataScopeModel
- */
- @Override
- @GetMapping(GET_DATA_SCOPE_BY_MAPPER)
- public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
- List<Object> args = new ArrayList<>(Collections.singletonList(mapperId));
- List<Long> roleIds = Func.toLongList(roleId);
- args.addAll(roleIds);
- // 澧炲姞searched瀛楁闃叉鏈厤缃殑鍙傛暟閲嶅璇诲簱瀵艰嚧缂撳瓨鍑荤┛
- // 鍚庣画鑻ユ湁鏂板閰嶇疆鍒欎細娓呯┖缂撳瓨閲嶆柊鍔犺浇
- DataScopeModel dataScope;
- List<DataScopeModel> list = jdbcTemplate.query(DataScopeConstant.dataByMapper(roleIds.size()), args.toArray(), new BeanPropertyRowMapper<>(DataScopeModel.class));
- if (CollectionUtil.isNotEmpty(list)) {
- dataScope = list.iterator().next();
- dataScope.setSearched(Boolean.TRUE);
- } else {
- dataScope = SEARCHED_DATA_SCOPE_MODEL;
- }
- return dataScope;
- }
-
- /**
- * 鑾峰彇鏁版嵁鏉冮檺
- *
- * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
- * @return DataScopeModel
- */
- @Override
- @GetMapping(GET_DATA_SCOPE_BY_CODE)
- public DataScopeModel getDataScopeByCode(String code) {
- // 澧炲姞searched瀛楁闃叉鏈厤缃殑鍙傛暟閲嶅璇诲簱瀵艰嚧缂撳瓨鍑荤┛
- // 鍚庣画鑻ユ湁鏂板閰嶇疆鍒欎細娓呯┖缂撳瓨閲嶆柊鍔犺浇
- DataScopeModel dataScope;
- List<DataScopeModel> list = jdbcTemplate.query(DataScopeConstant.DATA_BY_CODE, new Object[]{code}, new BeanPropertyRowMapper<>(DataScopeModel.class));
- if (CollectionUtil.isNotEmpty(list)) {
- dataScope = list.iterator().next();
- dataScope.setSearched(Boolean.TRUE);
- } else {
- dataScope = SEARCHED_DATA_SCOPE_MODEL;
- }
- return dataScope;
- }
-
- /**
- * 鑾峰彇閮ㄩ棬瀛愮骇
- *
- * @param deptId 閮ㄩ棬id
- * @return deptIds
- */
- @Override
- @GetMapping(GET_DEPT_ANCESTORS)
- public List<Long> getDeptAncestors(Long deptId) {
- return jdbcTemplate.queryForList(DataScopeConstant.DATA_BY_DEPT, new Object[]{deptId}, Long.class);
- }
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictBizClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictBizClient.java
deleted file mode 100644
index feda97a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictBizClient.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.feign;
-
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.service.IDictBizService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.List;
-
-
-/**
- * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-public class DictBizClient implements IDictBizClient {
-
- private final IDictBizService service;
-
- @Override
- @GetMapping(GET_BY_ID)
- public R<DictBiz> getById(Long id) {
- return R.data(service.getById(id));
- }
-
- @Override
- @GetMapping(GET_VALUE)
- public R<String> getValue(String code, String dictKey) {
- return R.data(service.getValue(code, dictKey));
- }
-
- @Override
- @GetMapping(GET_LIST)
- public R<List<DictBiz>> getList(String code) {
- return R.data(service.getList(code));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java
deleted file mode 100644
index d35d617..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/DictClient.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.feign;
-
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.service.IDictService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.List;
-
-
-/**
- * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-public class DictClient implements IDictClient {
-
- private final IDictService service;
-
- @Override
- @GetMapping(GET_BY_ID)
- public R<Dict> getById(Long id) {
- return R.data(service.getById(id));
- }
-
- @Override
- @GetMapping(GET_VALUE)
- public R<String> getValue(String code, String dictKey) {
- return R.data(service.getValue(code, dictKey));
- }
-
- @Override
- @GetMapping(GET_LIST)
- public R<List<Dict>> getList(String code) {
- return R.data(service.getList(code));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
deleted file mode 100644
index 68e2399..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * 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.system.feign;
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.*;
-import org.springblade.system.service.*;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
-
-import java.util.List;
-
-/**
- * 绯荤粺鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@ApiIgnore
-@RestController
-@AllArgsConstructor
-public class SysClient implements ISysClient {
-
- private final IDeptService deptService;
-
- private final IPostService postService;
-
- private final IRoleService roleService;
-
- private final IMenuService menuService;
-
- private final ITenantService tenantService;
-
- private final ITenantPackageService tenantPackageService;
-
- private final IParamService paramService;
-
- private final IRegionService regionService;
-
- private final IStrategyService strategyService;
-
- private final ICombinationService combinationService;
-
- @Override
- @GetMapping(MENU)
- public R<Menu> getMenu(Long id) {
- return R.data(menuService.getById(id));
- }
-
- @Override
- @GetMapping(DEPT)
- public R<Dept> getDept(Long id) {
- return R.data(deptService.getById(id));
- }
-
- @Override
- public R<String> getDeptIds(String tenantId, String deptNames) {
- return R.data(deptService.getDeptIds(tenantId, deptNames));
- }
-
- @Override
- public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
- return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));
- }
-
- @Override
- @GetMapping(DEPT_NAME)
- public R<String> getDeptName(Long id) {
- return R.data(deptService.getById(id).getDeptName());
- }
-
- @Override
- @GetMapping(DEPT_NAMES)
- public R<List<String>> getDeptNames(String deptIds) {
- return R.data(deptService.getDeptNames(deptIds));
- }
-
- @Override
- @GetMapping(DEPT_CHILD)
- public R<List<Dept>> getDeptChild(Long deptId) {
- return R.data(deptService.getDeptChild(deptId));
- }
-
- @Override
- public R<Post> getPost(Long id) {
- return R.data(postService.getById(id));
- }
-
- @Override
- public R<String> getPostIds(String tenantId, String postNames) {
- return R.data(postService.getPostIds(tenantId, postNames));
- }
-
- @Override
- public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
- return R.data(postService.getPostIdsByFuzzy(tenantId, postNames));
- }
-
- @Override
- public R<String> getPostName(Long id) {
- return R.data(postService.getById(id).getPostName());
- }
-
- @Override
- public R<List<String>> getPostNames(String postIds) {
- return R.data(postService.getPostNames(postIds));
- }
-
- @Override
- @GetMapping(ROLE)
- public R<Role> getRole(Long id) {
- return R.data(roleService.getById(id));
- }
-
- @Override
- public R<String> getRoleIds(String tenantId, String roleNames) {
- return R.data(roleService.getRoleIds(tenantId, roleNames));
- }
-
- @Override
- @GetMapping(ROLE_NAME)
- public R<String> getRoleName(Long id) {
- return R.data(roleService.getById(id).getRoleName());
- }
-
- @Override
- @GetMapping(ROLE_ALIAS)
- public R<String> getRoleAlias(Long id) {
- return R.data(roleService.getById(id).getRoleAlias());
- }
-
- @Override
- @GetMapping(ROLE_NAMES)
- public R<List<String>> getRoleNames(String roleIds) {
- return R.data(roleService.getRoleNames(roleIds));
- }
-
- @Override
- @GetMapping(ROLE_ALIASES)
- public R<List<String>> getRoleAliases(String roleIds) {
- return R.data(roleService.getRoleAliases(roleIds));
- }
-
- @Override
- @GetMapping(TENANT)
- public R<Tenant> getTenant(Long id) {
- return R.data(tenantService.getById(id));
- }
-
- @Override
- @GetMapping(TENANT_ID)
- public R<Tenant> getTenant(String tenantId) {
- return R.data(tenantService.getByTenantId(tenantId));
- }
-
- @Override
- @GetMapping(TENANT_PACKAGE)
- public R<TenantPackage> getTenantPackage(String tenantId) {
- Tenant tenant = tenantService.getByTenantId(tenantId);
- return R.data(tenantPackageService.getById(tenant.getPackageId()));
- }
-
- @Override
- @GetMapping(PARAM)
- public R<Param> getParam(Long id) {
- return R.data(paramService.getById(id));
- }
-
- @Override
- @GetMapping(PARAM_VALUE)
- public R<String> getParamValue(String paramKey) {
- return R.data(paramService.getValue(paramKey));
- }
-
- @Override
- @GetMapping(REGION)
- public R<Region> getRegion(String code) {
- return R.data(regionService.getById(code));
- }
-
- @Override
- @PostMapping(STRATEGY)
- public R<Strategy> getByTenantIdAndName(String tenantId, String name) {
- return R.data(strategyService.queryByNameAndTenantId(tenantId,name));
- }
-
- @Override
- @PostMapping(STRATEGYBYID)
- public R<Strategy> getByUserId(Long userId) {
- return R.data(strategyService.queryByUserId(userId));
- }
-
- @Override
- @PostMapping(REGEX)
- public R<String> getRegex(@RequestBody List<String> combinationIds) {
- return R.data(combinationService.getRegex(combinationIds));
- }
-
- @Override
- @PostMapping(REGEXONE)
- public R<List<String>> getRegexByList(List<String> combinationIds) {
- return R.data(combinationService.getRegexList(combinationIds));
- }
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.java
deleted file mode 100644
index 3904a05..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.ApiScope;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface ApiScopeMapper extends BaseMapper<ApiScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.xml
deleted file mode 100644
index 5d62dc0..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ApiScopeMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.mapper.ApiScopeMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.java
deleted file mode 100644
index 73d2d03..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.AuthClient;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface AuthClientMapper extends BaseMapper<AuthClient> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.xml
deleted file mode 100644
index f86769d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/AuthClientMapper.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.system.mapper.AuthClientMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="clientResultMap" type="org.springblade.system.entity.AuthClient">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="client_id" property="clientId"/>
- <result column="client_secret" property="clientSecret"/>
- <result column="Autowireds_ids" property="AutowiredIds"/>
- <result column="scope" property="scope"/>
- <result column="authorized_grant_types" property="authorizedGrantTypes"/>
- <result column="web_server_redirect_uri" property="webServerRedirectUri"/>
- <result column="authorities" property="authorities"/>
- <result column="access_token_validity" property="accessTokenValidity"/>
- <result column="refresh_token_validity" property="refreshTokenValidity"/>
- <result column="additional_information" property="additionalInformation"/>
- <result column="autoapprove" property="autoapprove"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java
deleted file mode 100644
index 3e55378..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.springblade.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.apache.ibatis.annotations.Param;
-import org.springblade.system.entity.Combination;
-
-import java.util.List;
-
-/**
- * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ暟鎹簱璁块棶灞�
- *
- * @author makejava
- * @since 2023-03-20 15:23:17
- */
-public interface CombinationMapper extends BaseMapper<Combination> {
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- Combination queryById(String id);
-
- /**
- * 鑷畾涔夊垎椤�
- * @param page
- * @param combination
- * @return
- */
- List<Combination> selectCombinationPage(IPage page, Combination combination);
-
- /**
- * 缁熻鎬昏鏁�
- *
- * @param combination 鏌ヨ鏉′欢
- * @return 鎬昏鏁�
- */
- long count(Combination combination);
-
- /**
- * 鏌ヨ缁勫悎鏂瑰紡姝e垯
- *
- * @param combinationIds 鏌ヨ鏉′欢
- * @return 鎬昏鏁�
- */
- String queryRegex(@Param("combinationIds") List<String> combinationIds);
-
- /**
- * 鏌ヨ缁勫悎鏂瑰紡瀵瑰簲姝e垯闆嗗悎
- *
- * @param combinationIds 鏌ヨ鏉′欢
- * @return 鎬昏鏁�
- */
- List<String> queryRegexList(@Param("combinationIds") List<String> combinationIds);
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml
deleted file mode 100644
index be19c53..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?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.system.mapper.CombinationMapper">
-
- <resultMap type="org.springblade.system.entity.Combination" id="CombinationMap">
- <result property="id" column="ID" jdbcType="VARCHAR"/>
- <result property="name" column="NAME" jdbcType="VARCHAR"/>
- <result property="desc" column="DESC" jdbcType="VARCHAR"/>
- <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/>
- <result property="createUser" column="CREATEUSER" jdbcType="VARCHAR"/>
- <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
- <result property="updateUser" column="UPDATEUSER" jdbcType="VARCHAR"/>
- <result property="licensors" column="LICENSORS" jdbcType="VARCHAR"/>
- </resultMap>
-
- <!--鏌ヨ鍗曚釜-->
- <select id="queryById" resultMap="CombinationMap">
- select ID,
- NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
- from PL_SYS_COMBINATION
- where ID = #{id}
- </select>
-
- <!--缁熻鎬昏鏁�-->
- <select id="count" resultType="java.lang.Long">
- select count(1)
- from PL_SYS_COMBINATION
- <where>
- <if test="id != null and id != ''">
- and ID = #{id}
- </if>
- <if test="name != null and name != ''">
- and NAME = #{name}
- </if>
- <if test="desc != null and desc != ''">
- and DESC = #{desc}
- </if>
- <if test="createtime != null">
- and CREATETIME = #{createtime}
- </if>
- <if test="createuser != null and createuser != ''">
- and CREATEUSER = #{createuser}
- </if>
- <if test="updatetime != null">
- and UPDATETIME = #{updatetime}
- </if>
- <if test="updateuser != null and updateuser != ''">
- and UPDATEUSER = #{updateuser}
- </if>
- <if test="licensors != null and licensors != ''">
- and LICENSORS = #{licensors}
- </if>
- </where>
- </select>
-
- <!--鍒嗛〉鏌ヨ-->
- <select id="selectCombinationPage" resultMap="CombinationMap">
- select
- ID, NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
- from PL_SYS_COMBINATION
- <where>
- <if test="id != null and id != ''">
- and ID = #{id}
- </if>
- <if test="name != null and name != ''">
- and NAME = #{name}
- </if>
- <if test="desc != null and desc != ''">
- and DESC = #{desc}
- </if>
- <if test="createtime != null">
- and CREATETIME = #{createtime}
- </if>
- <if test="createuser != null and createuser != ''">
- and CREATEUSER = #{createuser}
- </if>
- <if test="updatetime != null">
- and UPDATETIME = #{updatetime}
- </if>
- <if test="updateuser != null and updateuser != ''">
- and UPDATEUSER = #{updateuser}
- </if>
- <if test="licensors != null and licensors != ''">
- and LICENSORS = #{licensors}
- </if>
- </where>
- limit #{pageable.offset}, #{pageable.pageSize}
- </select>
-
- <select id="queryRegex" resultType="java.lang.String">
- SELECT CONCAT(REPLACE(WM_CONCAT(psc.REGEX),',[',''),']') FROM PL_SYS_COMBINATION psc
- WHERE psc.ID IN (
- <foreach collection="combinationIds" item="id" separator=",">
- #{id}
- </foreach>
- )
- </select>
-
- <select id="queryRegexList" resultType="java.lang.String">
- SELECT concat(psc.REGEX,']{1,}') from PL_SYS_COMBINATION psc
- WHERE psc.ID IN (
- <foreach collection="combinationIds" item="id" separator=",">
- #{id}
- </foreach>
- )
- </select>
-
-</mapper>
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.java
deleted file mode 100644
index 8df5a4e..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.DataScope;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface DataScopeMapper extends BaseMapper<DataScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.xml
deleted file mode 100644
index cbb4659..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DataScopeMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.mapper.DataScopeMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java
deleted file mode 100644
index f6a10ff..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.vo.DeptVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * DeptMapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface DeptMapper extends BaseMapper<Dept> {
-
- /**
- * 鎳掑姞杞介儴闂ㄥ垪琛�
- *
- * @param tenantId
- * @param parentId
- * @param param
- * @return
- */
- List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @param tenantId
- * @return
- */
- List<DeptVO> tree(String tenantId);
-
- /**
- * 鎳掑姞杞借幏鍙栨爲褰㈣妭鐐�
- *
- * @param tenantId
- * @param parentId
- * @return
- */
- List<DeptVO> lazyTree(String tenantId, Long parentId);
-
- /**
- * 鑾峰彇閮ㄩ棬鍚�
- *
- * @param ids
- * @return
- */
- List<String> getDeptNames(Long[] ids);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml
deleted file mode 100644
index 3b3f761..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DeptMapper.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?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.system.mapper.DeptMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="deptResultMap" type="org.springblade.system.entity.Dept">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="dept_name" property="deptName"/>
- <result column="full_name" property="fullName"/>
- <result column="ancestors" property="ancestors"/>
- <result column="dept_category" property="deptCategory"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="deptVOResultMap" type="org.springblade.system.vo.DeptVO">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="dept_name" property="deptName"/>
- <result column="full_name" property="fullName"/>
- <result column="ancestors" property="ancestors"/>
- <result column="dept_category" property="deptCategory"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="has_children" property="hasChildren"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- <result column="has_children" property="hasChildren"/>
- </resultMap>
-
- <select id="lazyList" resultMap="deptVOResultMap">
- SELECT
- dept.* ,
- (
- SELECT
- CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
- FROM
- pl_org_dept
- WHERE
- parent_id = dept.id and is_deleted = 0
- ) AS "has_children"
- FROM
- pl_org_dept dept
- WHERE dept.is_deleted = 0
- <if test="param1!=null and param1!=''">
- and dept.tenant_id = #{param1}
- </if>
- <if test="param2!=null">
- and dept.parent_id = #{param2}
- </if>
- <if test="param3.deptName!=null and param3.deptName!=''">
- and dept.dept_name like concat(concat('%', #{param3.deptName}),'%')
- </if>
- <if test="param3.fullName!=null and param3.fullName!=''">
- and dept.full_name like concat(concat('%', #{param3.fullName}),'%')
- </if>
- ORDER BY dept.sort
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, dept_name as title, id as "value", id as "key" from pl_org_dept where is_deleted = 0
- <if test="_parameter!=null and _parameter!=''">
- and tenant_id = #{_parameter}
- </if>
- ORDER BY sort
- </select>
-
- <select id="lazyTree" resultMap="treeNodeResultMap" >
- SELECT
- dept.id,
- dept.parent_id,
- dept.dept_name AS title,
- dept.id AS "value",
- dept.id AS "key",
- (
- SELECT
- CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
- FROM
- pl_org_dept
- WHERE
- parent_id = dept.id and is_deleted = 0
- ) AS "has_children"
- FROM
- pl_org_dept dept
- WHERE
- dept.parent_id = #{param2} AND dept.is_deleted = 0
- <if test="param1!=null and param1!=''">
- and dept.tenant_id = #{param1}
- </if>
- ORDER BY dept.sort
- </select>
-
- <select id="getDeptNames" resultType="java.lang.String">
- SELECT
- dept_name
- FROM
- pl_org_dept
- WHERE
- id IN
- <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
- #{ids}
- </foreach>
- and is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.java
deleted file mode 100644
index 4e56d9d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.vo.DictBizVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface DictBizMapper extends BaseMapper<DictBiz> {
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<DictBiz> getList(String code);
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictBizVO> tree();
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictBizVO> parentTree();
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml
deleted file mode 100644
index f108435..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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.system.mapper.DictBizMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="dictResultMap" type="org.springblade.system.entity.DictBiz">
- <id column="id" property="id"/>
- <result column="tenant_id" property="tenantId"/>
- <result column="parent_id" property="parentId"/>
- <result column="code" property="code"/>
- <result column="dict_key" property="dictKey"/>
- <result column="dict_value" property="dictValue"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- </resultMap>
-
- <select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0
- </select>
-
- <!-- oracle 鐗堟湰 -->
- <!--<select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
- </select>-->
-
- <select id="getList" resultMap="dictResultMap">
- select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0
- </select>
-
- <select id="parentTree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java
deleted file mode 100644
index b237476..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.vo.DictVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface DictMapper extends BaseMapper<Dict> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param dict
- * @return
- */
- List<DictVO> selectDictPage(IPage page, DictVO dict);
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<Dict> getList(String code);
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictVO> tree();
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @return
- */
- List<DictVO> parentTree();
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml
deleted file mode 100644
index a555209..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictMapper.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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.system.mapper.DictMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="dictResultMap" type="org.springblade.system.entity.Dict">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="code" property="code"/>
- <result column="dict_key" property="dictKey"/>
- <result column="dict_value" property="dictValue"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- </resultMap>
-
- <select id="selectDictPage" resultMap="dictResultMap">
- select * from pl_sys_dict where is_deleted = 0
- </select>
-
- <select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict where code = #{param1} and dict_key = #{param2} and is_deleted = 0
- </select>
-
- <!-- oracle 鐗堟湰 -->
- <!--<select id="getValue" resultType="java.lang.String">
- select
- dict_value
- from pl_sys_dict where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
- </select>-->
-
- <select id="getList" resultMap="dictResultMap">
- select id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0
- </select>
-
- <select id="parentTree" resultMap="treeNodeResultMap">
- select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0 and parent_id = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java
deleted file mode 100644
index c4f9850..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.core.tool.node.TreeNode;
-import org.springblade.system.dto.MenuDTO;
-import org.springblade.system.entity.Menu;
-import org.springblade.system.vo.MenuVO;
-
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * MenuMapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface MenuMapper extends BaseMapper<Menu> {
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentId
- * @param param
- * @return
- */
- List<MenuVO> lazyList(Long parentId, Map<String, Object> param);
-
- /**
- * 鎳掑姞杞借彍鍗曞垪琛�
- *
- * @param parentId
- * @param param
- * @return
- */
- List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param);
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> tree();
-
- /**
- * 鎺堟潈鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> grantTree();
-
- /**
- * 鎺堟潈鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<TreeNode> grantTreeByRole(List<Long> roleId);
-
- /**
- * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> grantTopTree();
-
- /**
- * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<TreeNode> grantTopTreeByRole(List<Long> roleId);
-
- /**
- * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> grantDataScopeTree();
-
- /**
- * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> grantApiScopeTree();
-
- /**
- * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<TreeNode> grantDataScopeTreeByRole(List<Long> roleId);
-
- /**
- * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<TreeNode> grantApiScopeTreeByRole(List<Long> roleId);
-
- /**
- * 鎵�鏈夎彍鍗�
- *
- * @return
- */
- List<Menu> allMenu();
-
- /**
- * 鏉冮檺閰嶇疆鑿滃崟
- *
- * @param roleId
- * @param topMenuId
- * @return
- */
- List<Menu> roleMenu(List<Long> roleId, Long topMenuId);
-
- /**
- * 鏉冮檺閰嶇疆鑿滃崟
- *
- * @param roleId
- * @return
- */
- List<Menu> roleMenuByRoleId(List<Long> roleId);
-
- /**
- * 鏉冮檺閰嶇疆鑿滃崟
- *
- * @param topMenuId
- * @return
- */
- List<Menu> roleMenuByTopMenuId(Long topMenuId);
-
- /**
- * 鑿滃崟鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<Menu> routes(List<Long> roleId);
-
- /**
- * 鎸夐挳鏍戝舰缁撴瀯
- *
- * @return
- */
- List<Menu> allButtons();
-
- /**
- * 鎸夐挳鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<Menu> buttons(List<Long> roleId);
-
- /**
- * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
- *
- * @param roleIds
- * @return
- */
- List<MenuDTO> authRoutes(List<Long> roleIds);
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
deleted file mode 100644
index a9cc4d7..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
+++ /dev/null
@@ -1,478 +0,0 @@
-<?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.system.mapper.MenuMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="menuResultMap" type="org.springblade.system.entity.Menu">
- <id column="id" property="id"/>
- <result column="code" property="code"/>
- <result column="parent_id" property="parentId"/>
- <result column="name" property="name"/>
- <result column="alias" property="alias"/>
- <result column="path" property="path"/>
- <result column="source" property="source"/>
- <result column="sort" property="sort"/>
- <result column="category" property="category"/>
- <result column="action" property="action"/>
- <result column="is_open" property="isOpen"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="menuVOResultMap" type="org.springblade.system.vo.MenuVO">
- <id column="id" property="id"/>
- <result column="code" property="code"/>
- <result column="parent_id" property="parentId"/>
- <result column="name" property="name"/>
- <result column="alias" property="alias"/>
- <result column="path" property="path"/>
- <result column="source" property="source"/>
- <result column="sort" property="sort"/>
- <result column="category" property="category"/>
- <result column="action" property="action"/>
- <result column="is_open" property="isOpen"/>
- <result column="remark" property="remark"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="has_children" property="hasChildren"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- </resultMap>
-
- <select id="lazyList" resultMap="menuVOResultMap">
- SELECT
- menu.*,
- (
- SELECT
- CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
- FROM
- pl_sys_menu
- WHERE
- parent_id = menu.id AND is_deleted = 0
- ) AS "has_children"
- FROM
- pl_sys_menu menu
- WHERE menu.is_deleted = 0
- <if test="param1!=null">
- and menu.parent_id = #{param1}
- </if>
- <if test="param2.name!=null and param2.name!=''">
- and menu.name like concat(concat('%', #{param2.name}),'%')
- </if>
- <if test="param2.code!=null and param2.code!=''">
- and menu.code like concat(concat('%', #{param2.code}),'%')
- </if>
- <if test="param2.alias!=null and param2.alias!=''">
- and menu.alias like concat(concat('%', #{param2.alias}),'%')
- </if>
- ORDER BY menu.sort
- </select>
-
- <select id="lazyMenuList" resultMap="menuVOResultMap">
- SELECT
- menu.*,
- (
- SELECT
- CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
- FROM
- pl_sys_menu
- WHERE
- parent_id = menu.id AND is_deleted = 0 AND category = 1
- ) AS "has_children"
- FROM
- pl_sys_menu menu
- WHERE menu.is_deleted = 0 AND menu.category = 1
- <if test="param1!=null">
- and menu.parent_id = #{param1}
- </if>
- <if test="param2.name!=null and param2.name!=''">
- and menu.name like concat(concat('%', #{param2.name}),'%')
- </if>
- <if test="param2.code!=null and param2.code!=''">
- and menu.code like concat(concat('%', #{param2.code}),'%')
- </if>
- <if test="param2.alias!=null and param2.alias!=''">
- and menu.alias like concat(concat('%', #{param2.alias}),'%')
- </if>
- ORDER BY menu.sort
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 and category = 1
- </select>
-
- <select id="allMenu" resultMap="menuResultMap">
- select * from pl_sys_menu where is_deleted = 0 and category = 1
- </select>
-
- <select id="roleMenu" resultMap="menuResultMap">
- select * from pl_sys_menu where is_deleted = 0 and id IN
- ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
- <foreach collection="param1" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- <if test="param2!=null and param2>0">
- AND id IN
- (
- SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param2}
- )
- </if>
- </select>
-
- <select id="roleMenuByRoleId" resultMap="menuResultMap">
- select * from pl_sys_menu where is_deleted = 0 and id IN
- ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- </select>
-
- <select id="roleMenuByTopMenuId" resultMap="menuResultMap">
- select * from pl_sys_menu where is_deleted = 0 and id IN
- (
- SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param1}
- )
- </select>
-
- <select id="routes" resultMap="menuResultMap">
- SELECT
- *
- FROM
- pl_sys_menu
- WHERE
- is_deleted = 0 and category = 1
- and id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- </select>
-
- <select id="allButtons" resultMap="menuResultMap">
- SELECT
- id,
- parent_id,
- CODE,
- NAME,
- alias,
- path,
- source,
- action,
- sort
- FROM
- pl_sys_menu
- WHERE
- (
- category = 2 OR id IN ( SELECT parent_id FROM pl_sys_menu WHERE is_deleted = 0 AND category = 2 )
- )
- AND is_deleted = 0
- ORDER BY sort
- </select>
-
- <select id="buttons" resultMap="menuResultMap">
- SELECT * FROM (
- SELECT
- id,
- parent_id,
- code,
- name,
- alias,
- path,
- source,
- action,
- sort
- FROM
- pl_sys_menu
- WHERE
- is_deleted = 0 and id IN (
- SELECT parent_id FROM pl_sys_menu
- WHERE ( category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- ) ) )
-
- UNION ALL
-
- SELECT
- id,
- parent_id,
- code,
- name,
- alias,
- path,
- source,
- action,
- sort
- FROM
- pl_sys_menu
- WHERE
- is_deleted = 0 and category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>)
- ) menu ORDER BY sort
- </select>
-
- <select id="grantTree" resultMap="treeNodeResultMap">
- select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 order by sort
- </select>
-
- <select id="grantTreeByRole" resultMap="treeNodeResultMap">
- select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- or id in (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- order by sort
- </select>
-
- <select id="grantTopTree" resultMap="treeNodeResultMap">
- select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0 order by sort
- </select>
-
- <select id="grantTopTreeByRole" resultMap="treeNodeResultMap">
- select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- or id in (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- order by sort
- </select>
-
- <select id="grantDataScopeTree" resultMap="treeNodeResultMap">
- SELECT
- *
- FROM
- (
- SELECT
- id,
- parent_id,
- NAME AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_sys_menu
- WHERE
- category = 1
- AND is_deleted = 0
- AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
- ) menu
-
- UNION ALL
-
- SELECT
- id,
- menu_id AS parent_id,
- scope_name AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_auth_scope_data
- WHERE
- is_deleted = 0
- AND menu_id IS NOT NULL
- </select>
-
- <select id="grantApiScopeTree" resultMap="treeNodeResultMap">
- SELECT
- *
- FROM
- (
- SELECT
- id,
- parent_id,
- NAME AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_sys_menu
- WHERE
- category = 1
- AND is_deleted = 0
- AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
- ) menu
-
- UNION ALL
-
- SELECT
- id,
- menu_id AS parent_id,
- scope_name AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_auth_scope_api
- WHERE
- is_deleted = 0
- AND menu_id IS NOT NULL
- </select>
-
- <select id="grantDataScopeTreeByRole" resultMap="treeNodeResultMap">
- SELECT
- *
- FROM
- (
- SELECT
- id,
- parent_id,
- NAME AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_sys_menu
- WHERE
- category = 1
- AND is_deleted = 0
- AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
- AND (
- id IN (
- select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- OR id IN (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- )
- ) menu
-
- UNION ALL
-
- SELECT
- id,
- menu_id AS parent_id,
- scope_name AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_auth_scope_data
- WHERE
- is_deleted = 0
- AND (
- menu_id IN (
- select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- OR menu_id IN (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- )
- AND menu_id IS NOT NULL
- </select>
-
- <select id="grantApiScopeTreeByRole" resultMap="treeNodeResultMap">
- SELECT
- *
- FROM
- (
- SELECT
- id,
- parent_id,
- NAME AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_sys_menu
- WHERE
- category = 1
- AND is_deleted = 0
- AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
- AND (
- id IN (
- select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- OR id IN (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in (
- select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- )
- ) menu
-
- UNION ALL
-
- SELECT
- id,
- menu_id AS parent_id,
- scope_name AS title,
- id AS "value",
- id AS "key"
- FROM
- pl_auth_scope_api
- WHERE
- is_deleted = 0
- AND
- (
- menu_id IN (
- select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- OR menu_id IN (
- select parent_id from pl_sys_menu where is_deleted = 0
- and id in ( select menu_id from pl_org_role_menu where role_id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach> )
- )
- )
- AND menu_id IS NOT NULL
- </select>
-
- <select id="authRoutes" resultType="org.springblade.system.dto.MenuDTO">
- SELECT
- GROUP_CONCAT(r.role_alias) as alias,
- m.path
- FROM
- pl_org_role_menu rm
- LEFT JOIN pl_sys_menu m ON rm.menu_id = m.id
- LEFT JOIN pl_org_role r ON rm.role_id = r.id
- WHERE
- rm.role_id IN
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- AND m.path IS NOT NULL and m.is_deleted = 0
- GROUP BY m.path
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.java
deleted file mode 100644
index 3adf34f..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.Param;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface ParamMapper extends BaseMapper<Param> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.xml
deleted file mode 100644
index e88fd76..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamMapper.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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.system.mapper.ParamMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="paramResultMap" type="org.springblade.system.entity.Param">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="param_name" property="paramName"/>
- <result column="param_key" property="paramKey"/>
- <result column="param_value" property="paramValue"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.java
deleted file mode 100644
index 67a4190..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.system.entity.Post;
-import org.springblade.system.vo.PostVO;
-
-import java.util.List;
-
-/**
- * 宀椾綅琛� Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface PostMapper extends BaseMapper<Post> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param post
- * @return
- */
- List<PostVO> selectPostPage(IPage page, PostVO post);
-
- /**
- * 鑾峰彇宀椾綅鍚�
- *
- * @param ids
- * @return
- */
- List<String> getPostNames(Long[] ids);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.xml
deleted file mode 100644
index bb3cfd8..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/PostMapper.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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.system.mapper.PostMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="postResultMap" type="org.springblade.system.entity.Post">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="category" property="category"/>
- <result column="post_code" property="postCode"/>
- <result column="post_name" property="postName"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-
- <select id="selectPostPage" resultMap="postResultMap">
- select * from pl_org_post where is_deleted = 0
- </select>
-
- <select id="getPostNames" resultType="java.lang.String">
- SELECT
- post_name
- FROM
- pl_org_post
- WHERE
- id IN
- <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
- #{ids}
- </foreach>
- and is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.java
deleted file mode 100644
index 4a9eeb1..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import org.springblade.system.entity.Region;
-import org.springblade.system.excel.RegionExcel;
-import org.springblade.system.vo.RegionVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 琛屾斂鍖哄垝琛� Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface RegionMapper extends BaseMapper<Region> {
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentCode
- * @param param
- * @return
- */
- List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentCode
- * @param param
- * @return
- */
- List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
-
- /**
- * 瀵煎嚭鍖哄垝鏁版嵁
- *
- * @param queryWrapper
- * @return
- */
- List<RegionExcel> exportRegion(@Param("ew") Wrapper<Region> queryWrapper);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.xml
deleted file mode 100644
index 0253d34..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RegionMapper.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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.system.mapper.RegionMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="regionResultMap" type="org.springblade.system.entity.Region">
- <id column="code" property="code"/>
- <result column="parent_code" property="parentCode"/>
- <result column="ancestors" property="ancestors"/>
- <result column="name" property="name"/>
- <result column="province_code" property="provinceCode"/>
- <result column="province_name" property="provinceName"/>
- <result column="city_code" property="cityCode"/>
- <result column="city_name" property="cityName"/>
- <result column="district_code" property="districtCode"/>
- <result column="district_name" property="districtName"/>
- <result column="town_code" property="townCode"/>
- <result column="town_name" property="townName"/>
- <result column="village_code" property="villageCode"/>
- <result column="village_name" property="villageName"/>
- <result column="level" property="regionLevel"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
- <resultMap id="regionVOResultMap" type="org.springblade.system.vo.RegionVO">
- <id column="code" property="code"/>
- <result column="parent_code" property="parentCode"/>
- <result column="ancestors" property="ancestors"/>
- <result column="name" property="name"/>
- <result column="province_code" property="provinceCode"/>
- <result column="province_name" property="provinceName"/>
- <result column="city_code" property="cityCode"/>
- <result column="city_name" property="cityName"/>
- <result column="district_code" property="districtCode"/>
- <result column="district_name" property="districtName"/>
- <result column="town_code" property="townCode"/>
- <result column="town_name" property="townName"/>
- <result column="village_code" property="villageCode"/>
- <result column="village_name" property="villageName"/>
- <result column="level" property="regionLevel"/>
- <result column="sort" property="sort"/>
- <result column="remark" property="remark"/>
- <result column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="has_children" property="hasChildren"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- <result column="has_children" property="hasChildren"/>
- </resultMap>
-
- <select id="lazyList" resultMap="regionVOResultMap">
- SELECT
- region.*,
- ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children"
- FROM
- pl_sys_region region
- <where>
- <if test="param1!=null">
- and region.parent_code = #{param1}
- </if>
- <if test="param2.code!=null and param2.code!=''">
- and region.code like concat(concat('%', #{param2.code}),'%')
- </if>
- <if test="param2.name!=null and param2.name!=''">
- and region.name like concat(concat('%', #{param2.name}),'%')
- </if>
- </where>
- </select>
-
- <select id="lazyTree" resultMap="treeNodeResultMap">
- SELECT
- region.code AS "id",
- region.parent_code AS "parent_id",
- region.name AS "title",
- region.code AS "value",
- region.code AS "key",
- ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children"
- FROM
- pl_sys_region region
- <where>
- <if test="param1!=null">
- and region.parent_code = #{param1}
- </if>
- <if test="param2.code!=null and param2.code!=''">
- and region.code like concat(concat('%', #{param2.code}),'%')
- </if>
- <if test="param2.name!=null and param2.name!=''">
- and region.name like concat(concat('%', #{param2.name}),'%')
- </if>
- </where>
- ORDER BY region.code
- </select>
-
- <select id="exportRegion" resultType="org.springblade.system.excel.RegionExcel">
- SELECT * FROM pl_sys_region ${ew.customSqlSegment}
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java
deleted file mode 100644
index 66b1b73..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.system.entity.Role;
-import org.springblade.system.vo.RoleVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface RoleMapper extends BaseMapper<Role> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param role
- * @return
- */
- List<RoleVO> selectRolePage(IPage page, RoleVO role);
-
- /**
- * 鑾峰彇鏍戝舰鑺傜偣
- *
- * @param tenantId
- * @param excludeRole
- * @return
- */
- List<RoleVO> tree(String tenantId, String excludeRole);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param ids
- * @return
- */
- List<String> getRoleNames(Long[] ids);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param ids
- * @return
- */
- List<String> getRoleAliases(Long[] ids);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
deleted file mode 100644
index 7142252..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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.system.mapper.RoleMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="roleResultMap" type="org.springblade.system.entity.Role">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="role_name" property="roleName"/>
- <result column="sort" property="sort"/>
- <result column="role_alias" property="roleAlias"/>
- <result column="is_deleted" property="isDeleted"/>
- </resultMap>
-
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
- <id column="id" property="id"/>
- <result column="parent_id" property="parentId"/>
- <result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
- </resultMap>
-
- <select id="selectRolePage" resultMap="roleResultMap">
- select * from pl_org_role where is_deleted = 0
- </select>
-
- <select id="tree" resultMap="treeNodeResultMap">
- select id, parent_id, role_name as title, id as "value", id as "key" from pl_org_role where is_deleted = 0
- <if test="param1!=null">
- and tenant_id = #{param1}
- </if>
- <if test="param2!=null">
- and role_alias <> #{param2}
- </if>
- </select>
-
- <select id="getRoleNames" resultType="java.lang.String">
- SELECT
- role_name
- FROM
- pl_org_role
- WHERE
- id IN
- <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
- #{ids}
- </foreach>
- and is_deleted = 0
- </select>
-
- <select id="getRoleAliases" resultType="java.lang.String">
- SELECT
- role_alias
- FROM
- pl_org_role
- WHERE
- id IN
- <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
- #{ids}
- </foreach>
- and is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java
deleted file mode 100644
index 9afb43b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.system.entity.RoleMenu;
-import org.springblade.system.vo.RoleMenuVO;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
-
- /**
- * 鑷畾涔夊垎椤�
- * @param page
- * @param roleMenu
- * @return
- */
- List<RoleMenuVO> selectRoleMenuPage(IPage page, RoleMenuVO roleMenu);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.xml
deleted file mode 100644
index ea7f060..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMenuMapper.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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.system.mapper.RoleMenuMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="roleMenuResultMap" type="org.springblade.system.entity.RoleMenu">
- <id column="id" property="id"/>
- <result column="menu_id" property="menuId"/>
- <result column="role_id" property="roleId"/>
- </resultMap>
-
- <select id="selectRoleMenuPage" resultMap="roleMenuResultMap">
- select * from pl_org_role_menu where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.java
deleted file mode 100644
index 7b22574..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.RoleScope;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface RoleScopeMapper extends BaseMapper<RoleScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.xml
deleted file mode 100644
index 55b8fb5..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleScopeMapper.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?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.system.mapper.RoleScopeMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="roleMenuResultMap" type="org.springblade.system.entity.RoleScope">
- <id column="id" property="id"/>
- <result column="scope_id" property="scopeId"/>
- <result column="role_id" property="roleId"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java
deleted file mode 100644
index 2a7fe31..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.springblade.system.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.apache.ibatis.annotations.Param;
-import org.springblade.system.entity.Strategy;
-
-import java.util.List;
-
-/**
- * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ暟鎹簱璁块棶灞�
- *
- * @author makejava
- * @since 2023-03-20 15:16:15
- */
-public interface StrategyMapper extends BaseMapper<Strategy> {
-
- /**
- * 鏌ヨ鎸囧畾琛屾暟鎹�
- *
- * @param page 鍒嗛〉瀵硅薄
- * @return 瀵硅薄鍒楄〃
- */
- List<Strategy> queryAllByPage(IPage page);
-
- /**
- * 缁熻鎬昏鏁�
- *
- * @param plSysStrategy 鏌ヨ鏉′欢
- * @return 鎬昏鏁�
- */
- long count(Strategy plSysStrategy);
-
- /**
- * 鏍规嵁鐢ㄦ埛鍚嶄互鍙婄鎴稩D鏌ヨ瀵嗙爜绛栫暐
- * @return
- */
- Strategy queryByNameAndTenantId(@Param("tenantId") String tenantId,@Param("name") String name);
-
- /**
- * 鏍规嵁鐢ㄦ埛id杩涜鏌ヨ
- *
- * @param userId 鐢ㄦ埛id
- * @return 瀵硅薄
- */
- Strategy queryByUserId(@Param("userId") Long userId);
-
- Strategy queryByIsDefault();
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml
deleted file mode 100644
index 385b072..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?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.system.mapper.StrategyMapper">
-
- <resultMap type="org.springblade.system.entity.Strategy" id="StrategyMap">
- <result property="id" column="ID" jdbcType="VARCHAR"/>
- <result property="strategyName" column="STRATEGY_NAME" jdbcType="VARCHAR"/>
- <result property="minPwdLen" column="MIN_PWD_LEN" jdbcType="VARCHAR"/>
- <result property="maxPwdLen" column="MAX_PWD_LEN" jdbcType="VARCHAR"/>
- <result property="combinationIds" column="COMBINATION_IDS" jdbcType="VARCHAR"/>
- <result property="requiredType" column="REQUIRED_TYPE" jdbcType="VARCHAR"/>
- <result property="expirationTime" column="EXPIRATION_TIME" jdbcType="TIMESTAMP"/>
- <result property="reminderTime" column="REMINDER_TIME" jdbcType="TIMESTAMP"/>
- <result property="lockingNum" column="LOCKING_NUM" jdbcType="VARCHAR"/>
- <result property="lockingTime" column="LOCKING_TIME" jdbcType="TIMESTAMP"/>
- <result property="desc" column="DESC" jdbcType="VARCHAR"/>
- <result property="isDefault" column="IS_DEFAULT" jdbcType="VARCHAR"/>
- <result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
- <result property="createUser" column="CREATE_USER" jdbcType="TIMESTAMP"/>
- <result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
- <result property="updateUser" column="UPDATE_USER" jdbcType="TIMESTAMP"/>
- <result property="combinationNames" column="COMBINATIONNAMES"/>
- </resultMap>
-
- <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
- <select id="queryAllByPage" resultMap="StrategyMap">
- select pss.*,
- (select WM_CONCAT(psc.NAME)
- from PL_SYS_COMBINATION psc
- where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
- from PL_SYS_STRATEGY pss
- </select>
-
- <!--缁熻鎬昏鏁�-->
- <select id="count" resultType="java.lang.Long">
- select count(1)
- from PL_SYS_STRATEGY
- <where>
- <if test="id != null and id != ''">
- and ID = #{id}
- </if>
- <if test="strategyName != null and strategyName != ''">
- and STRATEGY_NAME = #{strategyName}
- </if>
- <if test="minPwdLen != null and minPwdLen != ''">
- and MIN_PWD_LEN = #{minPwdLen}
- </if>
- <if test="maxPwdLen != null and maxPwdLen != ''">
- and MAX_PWD_LEN = #{maxPwdLen}
- </if>
- <if test="combination != null and combination != ''">
- and COMBINATION = #{combination }
- </if>
- <if test="requiredType != null and requiredType != ''">
- and REQUIRED_TYPE = #{requiredType}
- </if>
- <if test="expirationTime != null">
- and EXPIRATION_TIME = #{expirationTime}
- </if>
- <if test="reminderTime != null">
- and REMINDER_TIME = #{reminderTime}
- </if>
- <if test="lockingNum != null and lockingNum != ''">
- and LOCKING_NUM = #{lockingNum}
- </if>
- <if test="lockingTime != null">
- and LOCKING_TIME = #{lockingTime}
- </if>
- <if test="desc != null and desc != ''">
- and DESC = #{desc}
- </if>
- <if test="isDefault != null and isDefault != ''">
- and IS_DEFAULT = #{isDefault}
- </if>
- <if test="createDate != null">
- and CREATE_DATE = #{createDate}
- </if>
- <if test="createUser != null">
- and CREATE_USER = #{createUser}
- </if>
- <if test="updateDate != null">
- and UPDATE_DATE = #{updateDate}
- </if>
- <if test="updateUser != null">
- and UPDATE_USER = #{updateUser}
- </if>
- </where>
- </select>
-
-
- <select id="queryByNameAndTenantId" resultMap="StrategyMap">
- SELECT PSS.*,(select WM_CONCAT(psc.NAME)
- from PL_SYS_COMBINATION psc
- where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
- FROM PL_SYS_STRATEGY PSS
- LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=PSUP.PWDSTRATEGY_ID
- LEFT JOIN PL_ORG_USER POU ON POU.ID=PSUP.USER_ID
- WHERE POU.TENANT_ID = #{tenantId} AND POU.NAME=#{name};
- </select>
-
- <select id="queryByUserId" resultMap="StrategyMap">
- SELECT PSS.*,(select WM_CONCAT(psc.NAME)
- from PL_SYS_COMBINATION psc
- where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
- FROM PL_SYS_STRATEGY PSS LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=psup.PWDSTRATEGY_ID
- WHERE PSUP.USER_ID = #{userId}
- </select>
-
- <select id="queryByIsDefault" resultType="org.springblade.system.entity.Strategy">
- SELECT PSS.*,(SELECT WM_CONCAT(psc.NAME)
- FROM PL_SYS_COMBINATION psc
- WHERE instr(pss.COMBINATION_IDS, psc.ID) > 0) COMBINATIONNAMES
- FROM PL_SYS_STRATEGY PSS
- WHERE is_default = 1
- </select>
-
-</mapper>
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java
deleted file mode 100644
index b57431b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.system.entity.Tenant;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface TenantMapper extends BaseMapper<Tenant> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param tenant
- * @return
- */
- List<Tenant> selectTenantPage(IPage page, Tenant tenant);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
deleted file mode 100644
index 47708d7..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.system.mapper.TenantMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="tenantResultMap" type="org.springblade.system.entity.Tenant">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="tenant_id" property="tenantId"/>
- <result column="tenant_name" property="tenantName"/>
- <result column="full_name" property="fullName"/>
- <result column="domain_url" property="domainUrl"/>
- <result column="background_url" property="backgroundUrl"/>
- <result column="linkman" property="linkman"/>
- <result column="contact_number" property="contactNumber"/>
- <result column="address" property="address"/>
- <result column="license_key" property="licenseKey"/>
- </resultMap>
-
-
- <select id="selectTenantPage" resultMap="tenantResultMap">
- select * from pl_org_tenant where is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.java
deleted file mode 100644
index acf4e8d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.TenantPackage;
-
-/**
- * 绉熸埛浜у搧琛� Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface TenantPackageMapper extends BaseMapper<TenantPackage> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.xml
deleted file mode 100644
index 749f86d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantPackageMapper.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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.system.mapper.TenantPackageMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="tenantPackageResultMap" type="org.springblade.system.entity.TenantPackage">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="package_name" property="packageName"/>
- <result column="menu_id" property="menuId"/>
- <result column="remark" property="remark"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.java
deleted file mode 100644
index c035291..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.TopMenu;
-
-/**
- * 椤堕儴鑿滃崟琛� Mapper 鎺ュ彛
- *
- * @author BladeX
- */
-public interface TopMenuMapper extends BaseMapper<TopMenu> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.xml
deleted file mode 100644
index 7f3b5b2..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuMapper.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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.system.mapper.TopMenuMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="topMenuResultMap" type="org.springblade.system.entity.TopMenu">
- <result column="id" property="id"/>
- <result column="create_user" property="createUser"/>
- <result column="create_dept" property="createDept"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="code" property="code"/>
- <result column="name" property="name"/>
- <result column="source" property="source"/>
- <result column="sort" property="sort"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.java
deleted file mode 100644
index 0c9e3ce..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.TopMenuSetting;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface TopMenuSettingMapper extends BaseMapper<TopMenuSetting> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.xml
deleted file mode 100644
index 5de98e4..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TopMenuSettingMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.mapper.TopMenuSettingMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java
deleted file mode 100644
index 15876ae..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.springblade.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.entity.UserPwdstrategy;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ暟鎹簱璁块棶灞�
- *
- * @author makejava
- * @since 2023-03-22 15:24:46
- */
-public interface UserPwdstrategyMapper extends BaseMapper<UserPwdstrategy> {
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- UserPwdstrategy queryById(Long id);
-
- /**
- * 淇敼鏁版嵁
- *
- * @param UserPwdstrategy 瀹炰緥瀵硅薄
- * @return 褰卞搷琛屾暟
- */
- int update(UserPwdstrategy UserPwdstrategy);
-
- /**
- * 閫氳繃鐢ㄦ埛id杩涜鍒犻櫎鏁版嵁
- *
- * @param userIds 鐢ㄦ埛id
- * @return 褰卞搷琛屾暟
- */
- int deleteByUserIds(List<Long> userIds);
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml
deleted file mode 100644
index 62eea8a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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.system.mapper.UserPwdstrategyMapper">
-
- <resultMap type="org.springblade.system.entity.UserPwdstrategy" id="UserPwdstrategyMap">
- <result property="id" column="ID" jdbcType="INTEGER"/>
- <result property="userId" column="USER_ID" jdbcType="INTEGER"/>
- <result property="pwdstrategyId" column="PWDSTRATEGY_ID" jdbcType="INTEGER"/>
- </resultMap>
-
- <!--鏌ヨ鍗曚釜-->
- <select id="queryById" resultMap="UserPwdstrategyMap">
- select ID,
- USER_ID,
- PWDSTRATEGY_ID
- from PL_SYS_USER_PWDSTRATEGY
- where ID = #{id}
- </select>
-
- <!--缁熻鎬昏鏁�-->
- <select id="count" resultType="java.lang.Long">
- select count(1)
- from PL_SYS_USER_PWDSTRATEGY
- <where>
- <if test="id != null">
- and ID = #{id}
- </if>
- <if test="userId != null">
- and USER_ID = #{userId}
- </if>
- <if test="pwdstrategyId != null">
- and PWDSTRATEGY_ID = #{pwdstrategyId}
- </if>
- </where>
- </select>
-
- <!--閫氳繃涓婚敭淇敼鏁版嵁-->
- <update id="update">
- update PL_SYS_USER_PWDSTRATEGY
- <set>
- <if test="userId != null">
- USER_ID = #{userId},
- </if>
- <if test="pwdstrategyId != null">
- PWDSTRATEGY_ID = #{pwdstrategyId},
- </if>
- </set>
- where ID = #{id}
- </update>
-
- <delete id="deleteByUserIds">
- DELETE FROM PL_SYS_USER_PWDSTRATEGY WHERE USER_ID IN (
- <foreach collection="userIds" item="uId" separator=",">
- #{uId}
- </foreach>
- )
- </delete>
-
-</mapper>
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java
deleted file mode 100644
index 05ef2cd..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.springblade.system.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import org.springblade.system.entity.ValueRange;
-import org.springframework.data.domain.Pageable;
-
-import java.util.List;
-
-/**
- * (ValueRannge)琛ㄦ暟鎹簱璁块棶灞�
- *
- * @author makejava
- * @since 2023-03-20 15:23:25
- */
-public interface ValueRangeMapper extends BaseMapper<ValueRange> {
-
- /**
- * 鏌ヨ鎸囧畾琛屾暟鎹�
- *
- * @param valueRannge 鏌ヨ鏉′欢
- * @param pageable 鍒嗛〉瀵硅薄
- * @return 瀵硅薄鍒楄〃
- */
- List<ValueRange> queryAllByLimit(ValueRange valueRannge, @Param("pageable") Pageable pageable);
-
- /**
- * 缁熻鎬昏鏁�
- *
- * @param valueRannge 鏌ヨ鏉′欢
- * @return 鎬昏鏁�
- */
- long count(ValueRange valueRannge);
-
-
- /**
- * 鏍圭┒缁勫悎id鏌ヨ鍙栧��
- * @return
- */
- List<String> queryByCombinationIds(@Param("combinationIds") List<String> combinationIds);
-
-}
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml
deleted file mode 100644
index 6b38726..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?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.system.mapper.ValueRangeMapper">
-
- <resultMap type="org.springblade.system.entity.ValueRange" id="ValueRangeMap">
- <result property="id" column="ID" jdbcType="VARCHAR"/>
- <result property="value" column="VALUE" jdbcType="VARCHAR"/>
- <result property="combinationId" column="COMBINATION_ID" jdbcType="VARCHAR"/>
- <result property="updateTime" column="CREATEUSER" jdbcType="VARCHAR"/>
- <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
- <result property="createUser" column="UPDATEUSER" jdbcType="VARCHAR"/>
- <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/>
- </resultMap>
-
- <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
- <select id="queryAllByLimit" resultMap="ValueRangeMap">
- select
- ID, VALUE, COMBINATION_ID, CREATEUSER, UPDATETIME, UPDATEUSER, CREATETIME
- from PL_SYS_VALUE_RANGE
- <where>
- <if test="id != null and id != ''">
- and ID = #{id}
- </if>
- <if test="value != null and value != ''">
- and VALUE = #{value}
- </if>
- <if test="combinationId != null and combinationId != ''">
- and COMBINATION_ID = #{combinationId}
- </if>
- <if test="createuser != null and createuser != ''">
- and CREATEUSER = #{createuser}
- </if>
- <if test="updatetime != null">
- and UPDATETIME = #{updatetime}
- </if>
- <if test="updateuser != null and updateuser != ''">
- and UPDATEUSER = #{updateuser}
- </if>
- <if test="createtime != null">
- and CREATETIME = #{createtime}
- </if>
- </where>
- limit #{pageable.offset}, #{pageable.pageSize}
- </select>
-
- <!--缁熻鎬昏鏁�-->
- <select id="count" resultType="java.lang.Long">
- select count(1)
- from PL_SYS_VALUE_RANGE
- <where>
- <if test="id != null and id != ''">
- and ID = #{id}
- </if>
- <if test="value != null and value != ''">
- and VALUE = #{value}
- </if>
- <if test="combinationId != null and combinationId != ''">
- and COMBINATION_ID = #{combinationId}
- </if>
- <if test="createuser != null and createuser != ''">
- and CREATEUSER = #{createuser}
- </if>
- <if test="updatetime != null">
- and UPDATETIME = #{updatetime}
- </if>
- <if test="updateuser != null and updateuser != ''">
- and UPDATEUSER = #{updateuser}
- </if>
- <if test="createtime != null">
- and CREATETIME = #{createtime}
- </if>
- </where>
- </select>
-
- <select id="queryByCombinationIds" resultType="java.util.List">
- SELECT "VALUE" FROM PL_SYS_VALUE_RANGE PSVR
- WHERE PSVR.COMBINATION_ID IN (
- <foreach collection="combinationIds" item="id" separator=",">
- #{id}
- </foreach>
- )
- </select>
-
-</mapper>
-
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IApiScopeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IApiScopeService.java
deleted file mode 100644
index 293b3e5..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IApiScopeService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.ApiScope;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface IApiScopeService extends BaseService<ApiScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IAuthClientService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IAuthClientService.java
deleted file mode 100644
index 695eb1d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IAuthClientService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.AuthClient;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IAuthClientService extends BaseService<AuthClient> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java
deleted file mode 100644
index c019269..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.springblade.system.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.Combination;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔℃帴鍙�
- *
- * @author makejava
- * @since 2023-03-20 15:23:21
- */
-public interface ICombinationService extends IService<Combination> {
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- Combination queryById(Long id);
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param combination 绛涢�夋潯浠�
- * @param page 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page);
-
- /**
- * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
- *
- * @param combination 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- boolean submit(Combination combination);
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids
- * @return 鏄惁鎴愬姛
- */
- boolean deleteByIds(List<String> ids);
-
- /**
- * 涓嬫媺鏁版嵁婧愭煡璇�
- * 鏌ヨ缁勫悎id锛坘ey锛夛細缁勫悎鍚嶏紙value锛�
- * @return
- */
- List<Map<String,Object>> selectMaps();
-
- /**
- * 鏌ヨ鎷兼帴瀹屾暣鐨勬鍒�
- * @param combinationIds
- * @return
- */
- String getRegex(List<String> combinationIds);
-
- /**
- * 鏍规嵁缁勫悎id鏌ヨ姝e垯闆嗗悎
- * @param combinationIds
- * @return
- */
- List<String> getRegexList(List<String> combinationIds);
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDataScopeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDataScopeService.java
deleted file mode 100644
index 4babdcb..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDataScopeService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.DataScope;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface IDataScopeService extends BaseService<DataScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
deleted file mode 100644
index fde1c9b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.vo.DeptVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IDeptService extends IService<Dept> {
-
- /**
- * 鎳掑姞杞介儴闂ㄥ垪琛�
- *
- * @param tenantId
- * @param parentId
- * @param param
- * @return
- */
- List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @param tenantId
- * @return
- */
- List<DeptVO> tree(String tenantId);
-
- /**
- * 鎳掑姞杞芥爲褰㈢粨鏋�
- *
- * @param tenantId
- * @param parentId
- * @return
- */
- List<DeptVO> lazyTree(String tenantId, Long parentId);
-
- /**
- * 鑾峰彇閮ㄩ棬ID
- *
- * @param tenantId
- * @param deptNames
- * @return
- */
- String getDeptIds(String tenantId, String deptNames);
-
- /**
- * 鑾峰彇閮ㄩ棬ID
- *
- * @param tenantId
- * @param deptNames
- * @return
- */
- String getDeptIdsByFuzzy(String tenantId, String deptNames);
-
- /**
- * 鑾峰彇閮ㄩ棬鍚�
- *
- * @param deptIds
- * @return
- */
- List<String> getDeptNames(String deptIds);
-
- /**
- * 鑾峰彇瀛愰儴闂�
- *
- * @param deptId
- * @return
- */
- List<Dept> getDeptChild(Long deptId);
-
- /**
- * 鍒犻櫎閮ㄩ棬
- *
- * @param ids
- * @return
- */
- boolean removeDept(String ids);
-
- /**
- * 鎻愪氦
- *
- * @param dept
- * @return
- */
- boolean submit(Dept dept);
-
- /**
- * 閮ㄩ棬淇℃伅鏌ヨ
- *
- * @param deptName
- * @param parentId
- * @return
- */
- List<DeptVO> search(String deptName, Long parentId);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictBizService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictBizService.java
deleted file mode 100644
index e254f40..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictBizService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.system.service;
-
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.mp.support.Query;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.vo.DictBizVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IDictBizService extends IService<DictBiz> {
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictBizVO> tree();
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictBizVO> parentTree();
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<DictBiz> getList(String code);
-
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param dict
- * @return
- */
- boolean submit(DictBiz dict);
-
- /**
- * 鍒犻櫎瀛楀吀
- *
- * @param ids
- * @return
- */
- boolean removeDict(String ids);
-
- /**
- * 椤剁骇鍒楄〃
- *
- * @param dict
- * @param query
- * @return
- */
- IPage<DictBizVO> parentList(Map<String, Object> dict, Query query);
-
- /**
- * 瀛愬垪琛�
- *
- * @param dict
- * @param parentId
- * @return
- */
- List<DictBizVO> childList(Map<String, Object> dict, Long parentId);
-
-}
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
deleted file mode 100644
index 28d3a33..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IDictService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.mp.support.Query;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.vo.DictVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IDictService extends IService<Dict> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param dict
- * @return
- */
- IPage<DictVO> selectDictPage(IPage<DictVO> page, DictVO dict);
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictVO> tree();
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<DictVO> parentTree();
-
- /**
- * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
- *
- * @param code 瀛楀吀缂栧彿
- * @param dictKey 瀛楀吀搴忓彿
- * @return
- */
- String getValue(String code, String dictKey);
-
- /**
- * 鑾峰彇瀛楀吀琛�
- *
- * @param code 瀛楀吀缂栧彿
- * @return
- */
- List<Dict> getList(String code);
-
- /**
- * 鏂板鎴栦慨鏀�
- *
- * @param dict
- * @return
- */
- boolean submit(Dict dict);
-
- /**
- * 鍒犻櫎瀛楀吀
- *
- * @param ids
- * @return
- */
- boolean removeDict(String ids);
-
- /**
- * 椤剁骇鍒楄〃
- *
- * @param dict
- * @param query
- * @return
- */
- IPage<DictVO> parentList(Map<String, Object> dict, Query query);
-
- /**
- * 瀛愬垪琛�
- *
- * @param dict
- * @param parentId
- * @return
- */
- List<DictVO> childList(Map<String, Object> dict, Long parentId);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java
deleted file mode 100644
index 5014981..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IMenuService.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.tool.node.TreeNode;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.system.entity.Menu;
-import org.springblade.system.vo.MenuVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IMenuService extends IService<Menu> {
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentId
- * @param param
- * @return
- */
- List<MenuVO> lazyList(Long parentId, Map<String, Object> param);
-
- /**
- * 鎳掑姞杞借彍鍗曞垪琛�
- *
- * @param parentId
- * @param param
- * @return
- */
- List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param);
-
- /**
- * 鑿滃崟鏍戝舰缁撴瀯
- *
- * @param roleId
- * @param topMenuId
- * @return
- */
- List<MenuVO> routes(String roleId, Long topMenuId);
-
- /**
- * 鎸夐挳鏍戝舰缁撴瀯
- *
- * @param roleId
- * @return
- */
- List<MenuVO> buttons(String roleId);
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @return
- */
- List<TreeNode> tree();
-
- /**
- * 鎺堟潈鏍戝舰缁撴瀯
- *
- * @param user
- * @return
- */
- List<TreeNode> grantTree(BladeUser user);
-
- /**
- * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
- *
- * @param user
- * @return
- */
- List<TreeNode> grantTopTree(BladeUser user);
-
- /**
- * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @param user
- * @return
- */
- List<TreeNode> grantDataScopeTree(BladeUser user);
-
- /**
- * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
- *
- * @param user
- * @return
- */
- List<TreeNode> grantApiScopeTree(BladeUser user);
-
- /**
- * 榛樿閫変腑鑺傜偣
- *
- * @param roleIds
- * @return
- */
- List<String> roleTreeKeys(String roleIds);
-
- /**
- * 榛樿閫変腑鑺傜偣
- *
- * @param topMenuIds
- * @return
- */
- List<String> topTreeKeys(String topMenuIds);
-
- /**
- * 榛樿閫変腑鑺傜偣
- *
- * @param roleIds
- * @return
- */
- List<String> dataScopeTreeKeys(String roleIds);
-
- /**
- * 榛樿閫変腑鑺傜偣
- *
- * @param roleIds
- * @return
- */
- List<String> apiScopeTreeKeys(String roleIds);
-
- /**
- * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
- *
- * @param user
- * @return
- */
- List<Kv> authRoutes(BladeUser user);
-
- /**
- * 鍒犻櫎鑿滃崟
- *
- * @param ids
- * @return
- */
- boolean removeMenu(String ids);
-
- /**
- * 鎻愪氦
- *
- * @param menu
- * @return
- */
- boolean submit(Menu menu);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java
deleted file mode 100644
index ff29123..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IParamService.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.Param;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IParamService extends BaseService<Param> {
-
- /**
- * 鑾峰彇鍙傛暟鍊�
- *
- * @param paramKey 鍙傛暟key
- * @return String
- */
- String getValue(String paramKey);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java
deleted file mode 100644
index fc395d5..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IPostService.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.Post;
-import org.springblade.system.vo.PostVO;
-
-import java.util.List;
-
-/**
- * 宀椾綅琛� 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IPostService extends BaseService<Post> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param post
- * @return
- */
- IPage<PostVO> selectPostPage(IPage<PostVO> page, PostVO post);
-
- /**
- * 鑾峰彇宀椾綅ID
- *
- * @param tenantId
- * @param postNames
- * @return
- */
- String getPostIds(String tenantId, String postNames);
-
- /**
- * 鑾峰彇宀椾綅ID
- *
- * @param tenantId
- * @param postNames
- * @return
- */
- String getPostIdsByFuzzy(String tenantId, String postNames);
-
- /**
- * 鑾峰彇宀椾綅鍚�
- *
- * @param postIds
- * @return
- */
- List<String> getPostNames(String postIds);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRegionService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRegionService.java
deleted file mode 100644
index c46f6fa..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRegionService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.Region;
-import org.springblade.system.excel.RegionExcel;
-import org.springblade.system.vo.RegionVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 琛屾斂鍖哄垝琛� 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IRegionService extends IService<Region> {
-
- /**
- * 鎻愪氦
- *
- * @param region
- * @return
- */
- boolean submit(Region region);
-
- /**
- * 鍒犻櫎
- *
- * @param id
- * @return
- */
- boolean removeRegion(String id);
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentCode
- * @param param
- * @return
- */
- List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
-
- /**
- * 鎳掑姞杞藉垪琛�
- *
- * @param parentCode
- * @param param
- * @return
- */
- List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
-
- /**
- * 瀵煎叆鍖哄垝鏁版嵁
- *
- * @param data
- * @param isCovered
- * @return
- */
- void importRegion(List<RegionExcel> data, Boolean isCovered);
-
- /**
- * 瀵煎嚭鍖哄垝鏁版嵁
- *
- * @param queryWrapper
- * @return
- */
- List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java
deleted file mode 100644
index b504d32..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleMenuService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.RoleMenu;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IRoleMenuService extends IService<RoleMenu> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleScopeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleScopeService.java
deleted file mode 100644
index d3d6376..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleScopeService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.RoleScope;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IRoleScopeService extends IService<RoleScope> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java
deleted file mode 100644
index adbe3a1..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IRoleService.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.Role;
-import org.springblade.system.vo.RoleVO;
-
-import javax.validation.constraints.NotEmpty;
-import java.util.List;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IRoleService extends IService<Role> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param role
- * @return
- */
- IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role);
-
- /**
- * 鏍戝舰缁撴瀯
- *
- * @param tenantId
- * @return
- */
- List<RoleVO> tree(String tenantId);
-
- /**
- * 鏉冮檺閰嶇疆
- *
- * @param roleIds 瑙掕壊id闆嗗悎
- * @param menuIds 鑿滃崟id闆嗗悎
- * @param dataScopeIds 鏁版嵁鏉冮檺id闆嗗悎
- * @param apiScopeIds 鎺ュ彛鏉冮檺id闆嗗悎
- * @return 鏄惁鎴愬姛
- */
- boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds);
-
- /**
- * 鑾峰彇瑙掕壊ID
- *
- * @param tenantId
- * @param roleNames
- * @return
- */
- String getRoleIds(String tenantId, String roleNames);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param roleIds
- * @return
- */
- List<String> getRoleNames(String roleIds);
-
- /**
- * 鑾峰彇瑙掕壊鍚�
- *
- * @param roleIds
- * @return
- */
- List<String> getRoleAliases(String roleIds);
-
- /**
- * 鎻愪氦
- *
- * @param role
- * @return
- */
- boolean submit(Role role);
-
- /**
- * 瑙掕壊淇℃伅鏌ヨ
- *
- * @param roleName
- * @param parentId
- * @return
- */
- List<RoleVO> search(String roleName, Long parentId);
-
- /**
- * 鍒犻櫎瑙掕壊
- *
- * @param ids
- * @return
- */
- boolean removeRole(String ids);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java
deleted file mode 100644
index bc3e471..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.springblade.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.mp.support.Query;
-import org.springblade.system.entity.Strategy;
-import org.springframework.data.domain.PageImpl;
-
-import java.util.List;
-
-/**
- * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ湇鍔℃帴鍙�
- *
- * @author makejava
- * @since 2023-03-20 15:16:18
- */
-public interface IStrategyService extends IService<Strategy> {
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- Strategy queryById(String id);
-
- /**
- * 鏌ヨ榛樿瀵嗙爜绛栫暐
- *
- * @return 瀹炰緥瀵硅薄
- */
- Strategy queryByIsDefault();
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param query 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- PageImpl<Strategy> queryAllByPage(Query query);
-
- /**
- * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
- *
- * @param strategy 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- boolean submit(Strategy strategy);
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鏄惁鎴愬姛
- */
- boolean deleteByIds(List<String> ids);
-
- /**
- * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣�
- * @param tenantId
- * @param name
- * @return
- */
- Strategy queryByNameAndTenantId(String tenantId, String name);
-
- /**
- * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
- * @param userId
- * @return
- */
- Strategy queryByUserId(Long userId);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantPackageService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantPackageService.java
deleted file mode 100644
index 9007e1e..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantPackageService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.TenantPackage;
-
-/**
- * 绉熸埛浜у搧琛� 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface ITenantPackageService extends BaseService<TenantPackage> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java
deleted file mode 100644
index fb571c8..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.vo.TenantVO;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ITenantService extends BaseService<Tenant> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param tenant
- * @return
- */
- IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant);
-
- /**
- * 鏍规嵁绉熸埛缂栧彿鑾峰彇瀹炰綋
- *
- * @param tenantId
- * @return
- */
- Tenant getByTenantId(String tenantId);
-
- /**
- * 鏂板
- *
- * @param tenant
- * @return
- */
- boolean submitTenant(TenantVO tenant);
-
- /**
- * 鍒犻櫎
- *
- * @param ids
- * @return
- */
- boolean removeTenant(List<Long> ids);
-
- /**
- * 閰嶇疆绉熸埛鎺堟潈
- *
- * @param accountNumber
- * @param expireTime
- * @param ids
- * @return
- */
- //boolean setting(Integer accountNumber, Date expireTime, String ids);
-
- /**
- * 鏌ヨ绉熸埛id锛坘ey锛夛細绉熸埛鍚嶏紙value锛�
- * @return
- */
- List<Map<String,Object>> selectMaps();
-
- /**
- * 鏌ヨ鏄惁閰嶇疆鏈夐粯璁ゅ繀椤诲紑鍚笁鍛樼鐞�
- *
- * @return
- */
- boolean findIsOpen();
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuService.java
deleted file mode 100644
index 66fbad1..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.system.service;
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.entity.TopMenu;
-
-import javax.validation.constraints.NotEmpty;
-import java.util.List;
-
-/**
- * 椤堕儴鑿滃崟琛� 鏈嶅姟绫�
- *
- * @author BladeX
- */
-public interface ITopMenuService extends BaseService<TopMenu> {
-
- /**
- * 椤堕儴鑿滃崟閰嶇疆
- *
- * @param topMenuIds 椤堕儴鑿滃崟id闆嗗悎
- * @param menuIds 鑿滃崟id闆嗗悎
- * @return 鏄惁鎴愬姛
- */
- boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuSettingService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuSettingService.java
deleted file mode 100644
index 83b52f2..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ITopMenuSettingService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.TopMenuSetting;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface ITopMenuSettingService extends IService<TopMenuSetting> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java
deleted file mode 100644
index 03e26cf..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.springblade.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.UserPwdstrategy;
-import org.springblade.system.vo.UserPwdstrategyVO;
-
-/**
- * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔℃帴鍙�
- *
- * @author makejava
- * @since 2023-03-22 15:24:54
- */
-public interface IUserPwdstrategyService extends IService<UserPwdstrategy> {
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- UserPwdstrategy queryById(Long id);
-
- /**
- * 鏂板鎴栦慨鏀规暟鎹�
- *
- * @param userPwdstrategyVO 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- Boolean submit(UserPwdstrategyVO userPwdstrategyVO);
-
-
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java
deleted file mode 100644
index 9dcea9b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.springblade.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.entity.ValueRange;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-
-import java.util.List;
-
-/**
- * (ValueRange)琛ㄦ湇鍔℃帴鍙�
- *
- * @author makejava
- * @since 2023-03-20 15:23:27
- */
-public interface IValueRangeService extends IService<ValueRange> {
-
- /**
- * 鍏ㄦ煡璇�
- * @return
- */
- List<ValueRange> queryByAll();
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param valueRange 绛涢�夋潯浠�
- * @param pageRequest 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest);
-
- /**
- * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
- *
- * @param valueRange 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- boolean submit(ValueRange valueRange);
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鏄惁鎴愬姛
- */
- boolean deleteByIds(List<String> ids);
-
- /**
- * 鑾峰彇鍙栧��
- *
- * @return 鏄惁鎴愬姛
- */
- List<String> getByAllString(List<String> combinationIds);
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ApiScopeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ApiScopeServiceImpl.java
deleted file mode 100644
index 4f7d23a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ApiScopeServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.ApiScope;
-import org.springblade.system.mapper.ApiScopeMapper;
-import org.springblade.system.service.IApiScopeService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-public class ApiScopeServiceImpl extends BaseServiceImpl<ApiScopeMapper, ApiScope> implements IApiScopeService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/AuthClientServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/AuthClientServiceImpl.java
deleted file mode 100644
index a375e48..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/AuthClientServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.AuthClient;
-import org.springblade.system.mapper.AuthClientMapper;
-import org.springblade.system.service.IAuthClientService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class AuthClientServiceImpl extends BaseServiceImpl<AuthClientMapper, AuthClient> implements IAuthClientService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java
deleted file mode 100644
index 1d69a42..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package org.springblade.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Combination;
-import org.springblade.system.mapper.CombinationMapper;
-import org.springblade.system.service.ICombinationService;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔″疄鐜扮被
- *
- * @author makejava
- * @since 2023-03-20 15:23:22
- */
-@Service
-@Validated
-//@AllArgsConstructor
-public class CombinationServiceImpl extends ServiceImpl<CombinationMapper,Combination> implements ICombinationService {
-
- @Resource
- private CombinationMapper combinationMapper;
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- @Override
- public Combination queryById(Long id) {
- Combination combination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getId, id));
- return combination;
- }
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param combination 绛涢�夋潯浠�
- * @param page 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @Override
- public IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page) {
- return page.setRecords(combinationMapper.selectCombinationPage(page,combination));
- }
-
- /**
- * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
- *
- * @param combination 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- @Override
- public boolean submit(Combination combination) {
- //鍒ゆ柇鏄惁鎼哄甫id
- if(Func.isEmpty(combination.getId())){
- //鏂板
- Combination dbcombination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getName, combination.getName()));
- //濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
- if(!Func.isEmpty(dbcombination)){
- throw new ServiceException("缁勫悎鍚嶇О宸插瓨鍦�!");
- }
- if(Func.isEmpty(combination.getCreateTime())){
- combination.setCreateTime(new Date());
- }
- if(Func.isEmpty(combination.getUpdateTime())){
- combination.setUpdateTime(new Date());
- }
- boolean temp = saveOrUpdate(combination);
- return temp;
- }else {
- if(Func.isEmpty(combination.getUpdateTime())){
- combination.setUpdateTime(new Date());
- }
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return saveOrUpdate(combination);
- }
- }
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鏄惁鎴愬姛
- */
- @Override
- public boolean deleteByIds(List<String> ids) {
- boolean tenantTemp = this.removeBatchByIds(ids);
- return tenantTemp;
- }
-
- /**
- * 鏌ヨ瀵嗙爜缁勫悎id锛氱粍鍚堝悕锛岄敭鍊煎
- *
- * @return 閿�煎
- */
- @Override
- public List<Map<String, Object>> selectMaps() {
- List<Map<String, Object>> maps = listMaps(new QueryWrapper<Combination>().select("ID", "NAME"));
- return maps;
- }
-
- @Override
- public String getRegex(List<String> combinationIds) {
- return combinationMapper.queryRegex(combinationIds);
- }
-
- @Override
- public List<String> getRegexList(List<String> combinationIds) {
- return combinationMapper.queryRegexList(combinationIds);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DataScopeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DataScopeServiceImpl.java
deleted file mode 100644
index a1d96c6..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DataScopeServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.DataScope;
-import org.springblade.system.mapper.DataScopeMapper;
-import org.springblade.system.service.IDataScopeService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-public class DataScopeServiceImpl extends BaseServiceImpl<DataScopeMapper, DataScope> implements IDataScopeService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
deleted file mode 100644
index b344a1e..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.mapper.DeptMapper;
-import org.springblade.system.service.IDeptService;
-import org.springblade.system.vo.DeptVO;
-import org.springblade.system.wrapper.DeptWrapper;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
-
- private static final String TENANT_ID = "tenantId";
- private static final String PARENT_ID = "parentId";
-
- @Override
- public List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param) {
- // 璁剧疆绉熸埛ID
- if (AuthUtil.isAdministrator()) {
- tenantId = StringPool.EMPTY;
- }
- String paramTenantId = Func.toStr(param.get(TENANT_ID));
- if (Func.isNotEmpty(paramTenantId) && AuthUtil.isAdministrator()) {
- tenantId = paramTenantId;
- }
- // 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
- if (Func.isEmpty(param.get(PARENT_ID)) && param.size() == 1) {
- parentId = 0L;
- }
- // 鍒ゆ柇鏁版嵁鏉冮檺鎺у埗,闈炶秴绠¤鑹插彧鍙湅鍒版湰绾у強浠ヤ笅鏁版嵁
- if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
- Long deptId = Func.firstLong(AuthUtil.getDeptId());
- Dept dept = SysCache.getDept(deptId);
- if (dept.getParentId() != 0) {
- parentId = dept.getParentId();
- }
- }
- // 鍒ゆ柇鐐瑰嚮鎼滅储甯︽湁鏌ヨ鏉′欢鐨勬儏鍐�
- if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) {
- parentId = null;
- }
- return baseMapper.lazyList(tenantId, parentId, param);
- }
-
-
- @Override
- public List<DeptVO> tree(String tenantId) {
- return ForestNodeMerger.merge(baseMapper.tree(tenantId));
- }
-
- @Override
- public List<DeptVO> lazyTree(String tenantId, Long parentId) {
- if (AuthUtil.isAdministrator()) {
- tenantId = StringPool.EMPTY;
- }
- return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
- }
-
- @Override
- public String getDeptIds(String tenantId, String deptNames) {
- List<Dept> deptList = baseMapper.selectList(Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId).in(Dept::getDeptName, Func.toStrList(deptNames)));
- if (deptList != null && deptList.size() > 0) {
- return deptList.stream().map(dept -> Func.toStr(dept.getId())).distinct().collect(Collectors.joining(","));
- }
- return null;
- }
-
- @Override
- public String getDeptIdsByFuzzy(String tenantId, String deptNames) {
- LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId);
- queryWrapper.and(wrapper -> {
- List<String> names = Func.toStrList(deptNames);
- names.forEach(name -> wrapper.like(Dept::getDeptName, name).or());
- });
- List<Dept> deptList = baseMapper.selectList(queryWrapper);
- if (deptList != null && deptList.size() > 0) {
- return deptList.stream().map(dept -> Func.toStr(dept.getId())).distinct().collect(Collectors.joining(","));
- }
- return null;
- }
-
- @Override
- public List<String> getDeptNames(String deptIds) {
- return baseMapper.getDeptNames(Func.toLongArray(deptIds));
- }
-
- @Override
- public List<Dept> getDeptChild(Long deptId) {
- return baseMapper.selectList(Wrappers.<Dept>query().lambda().like(Dept::getAncestors, deptId));
- }
-
- @Override
- public boolean removeDept(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<Dept>query().lambda().in(Dept::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
- @Override
- public boolean submit(Dept dept) {
- if (Func.isEmpty(dept.getParentId())) {
- dept.setTenantId(AuthUtil.getTenantId());
- dept.setParentId(BladeConstant.TOP_PARENT_ID);
- dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
- }
- if (dept.getParentId() > 0) {
- Dept parent = getById(dept.getParentId());
- if (Func.toLong(dept.getParentId()) == Func.toLong(dept.getId())) {
- throw new ServiceException("鐖惰妭鐐逛笉鍙�夋嫨鑷韩!");
- }
- dept.setTenantId(parent.getTenantId());
- String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
- dept.setAncestors(ancestors);
- }
- dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return saveOrUpdate(dept);
- }
-
- @Override
- public List<DeptVO> search(String deptName, Long parentId) {
- String tenantId = AuthUtil.getTenantId();
- LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
- if (Func.isNotEmpty(tenantId)) {
- queryWrapper.eq(Dept::getTenantId, tenantId);
- }
- if (Func.isNotEmpty(deptName)) {
- queryWrapper.like(Dept::getDeptName, deptName);
- }
- if (Func.isNotEmpty(parentId) && parentId > 0L) {
- queryWrapper.eq(Dept::getParentId, parentId);
- }
- List<Dept> deptList = baseMapper.selectList(queryWrapper);
- return DeptWrapper.build().listNodeVO(deptList);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictBizServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictBizServiceImpl.java
deleted file mode 100644
index 15f8f1e..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictBizServiceImpl.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.cache.DictBizCache;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.mapper.DictBizMapper;
-import org.springblade.system.service.IDictBizService;
-import org.springblade.system.vo.DictBizVO;
-import org.springblade.system.wrapper.DictBizWrapper;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBiz> implements IDictBizService {
-
- @Override
- public List<DictBizVO> tree() {
- return ForestNodeMerger.merge(baseMapper.tree());
- }
-
- @Override
- public List<DictBizVO> parentTree() {
- return ForestNodeMerger.merge(baseMapper.parentTree());
- }
-
- @Override
- public String getValue(String code, String dictKey) {
- return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
- }
-
- @Override
- public List<DictBiz> getList(String code) {
- return baseMapper.getList(code);
- }
-
- @Override
- public boolean submit(DictBiz dict) {
- LambdaQueryWrapper<DictBiz> lqw = Wrappers.<DictBiz>query().lambda().eq(DictBiz::getCode, dict.getCode()).eq(DictBiz::getDictKey, dict.getDictKey());
- Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBiz::getId, dict.getId()));
- if (cnt > 0L) {
- throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
- }
- // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
- if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
- DictBiz parent = DictBizCache.getById(dict.getId());
- this.update(Wrappers.<DictBiz>update().lambda().set(DictBiz::getCode, dict.getCode()).eq(DictBiz::getCode, parent.getCode()).ne(DictBiz::getParentId, BladeConstant.TOP_PARENT_ID));
- }
- if (Func.isEmpty(dict.getParentId())) {
- dict.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- CacheUtil.clear(DICT_CACHE);
- return saveOrUpdate(dict);
- }
-
- @Override
- public boolean removeDict(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<DictBiz>query().lambda().in(DictBiz::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
- @Override
- public IPage<DictBizVO> parentList(Map<String, Object> dict, Query query) {
- IPage<DictBiz> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictBiz.class).lambda().eq(DictBiz::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictBiz::getSort));
- return DictBizWrapper.build().pageVO(page);
- }
-
- @Override
- public List<DictBizVO> childList(Map<String, Object> dict, Long parentId) {
- if (parentId < 0) {
- return new ArrayList<>();
- }
- dict.remove("parentId");
- DictBiz parentDict = DictBizCache.getById(parentId);
- List<DictBiz> list = this.list(Condition.getQueryWrapper(dict, DictBiz.class).lambda().ne(DictBiz::getId, parentId).eq(DictBiz::getCode, parentDict.getCode()).orderByAsc(DictBiz::getSort));
- return DictBizWrapper.build().listNodeVO(list);
- }
-}
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
deleted file mode 100644
index 087520b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.mapper.DictMapper;
-import org.springblade.system.service.IDictService;
-import org.springblade.system.vo.DictVO;
-import org.springblade.system.wrapper.DictWrapper;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements IDictService {
-
- @Override
- public IPage<DictVO> selectDictPage(IPage<DictVO> page, DictVO dict) {
- return page.setRecords(baseMapper.selectDictPage(page, dict));
- }
-
- @Override
- public List<DictVO> tree() {
- return ForestNodeMerger.merge(baseMapper.tree());
- }
-
- @Override
- public List<DictVO> parentTree() {
- return ForestNodeMerger.merge(baseMapper.parentTree());
- }
-
- @Override
- public String getValue(String code, String dictKey) {
- return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
- }
-
- @Override
- public List<Dict> getList(String code) {
- return baseMapper.getList(code);
- }
-
- @Override
- public boolean submit(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) {
- throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
- }
- // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
- if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
- Dict parent = DictCache.getById(dict.getId());
- this.update(Wrappers.<Dict>update().lambda().set(Dict::getCode, dict.getCode()).eq(Dict::getCode, parent.getCode()).ne(Dict::getParentId, BladeConstant.TOP_PARENT_ID));
- }
- if (Func.isEmpty(dict.getParentId())) {
- dict.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
- return saveOrUpdate(dict);
- }
-
- @Override
- public boolean removeDict(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<Dict>query().lambda().in(Dict::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
- @Override
- public IPage<DictVO> parentList(Map<String, Object> dict, Query query) {
- IPage<Dict> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, Dict.class).lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(Dict::getSort));
- return DictWrapper.build().pageVO(page);
- }
-
- @Override
- public List<DictVO> childList(Map<String, Object> dict, Long parentId) {
- if (parentId < 0) {
- return new ArrayList<>();
- }
- dict.remove("parentId");
- 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);
- }
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java
deleted file mode 100644
index b7ea85b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.node.TreeNode;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.dto.MenuDTO;
-import org.springblade.system.entity.*;
-import org.springblade.system.mapper.MenuMapper;
-import org.springblade.system.service.IMenuService;
-import org.springblade.system.service.IRoleMenuService;
-import org.springblade.system.service.IRoleScopeService;
-import org.springblade.system.service.ITopMenuSettingService;
-import org.springblade.system.vo.MenuVO;
-import org.springblade.system.wrapper.MenuWrapper;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static org.springblade.common.constant.CommonConstant.API_SCOPE_CATEGORY;
-import static org.springblade.common.constant.CommonConstant.DATA_SCOPE_CATEGORY;
-import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@AllArgsConstructor
-public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {
-
- private final IRoleMenuService roleMenuService;
- private final IRoleScopeService roleScopeService;
- private final ITopMenuSettingService topMenuSettingService;
- private final static String PARENT_ID = "parentId";
- private final static Integer MENU_CATEGORY = 1;
-
- @Override
- public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) {
- if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
- parentId = null;
- }
- return baseMapper.lazyList(parentId, param);
- }
-
- @Override
- public List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param) {
- if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
- parentId = null;
- }
- return baseMapper.lazyMenuList(parentId, param);
- }
-
-
- @Override
- public List<MenuVO> routes(String roleId, Long topMenuId) {
- if (StringUtil.isBlank(roleId)) {
- return null;
- }
- List<Menu> allMenus = baseMapper.allMenu();
- List<Menu> roleMenus;
- // 瓒呯骇绠$悊鍛樺苟涓斾笉鏄《閮ㄨ彍鍗曡姹傚垯杩斿洖鍏ㄩ儴鑿滃崟
- if (AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
- roleMenus = allMenus;
- }
- // 闈炶秴绾х鐞嗗憳骞朵笖涓嶆槸椤堕儴鑿滃崟璇锋眰鍒欒繑鍥炲搴旇鑹叉潈闄愯彍鍗�
- else if (!AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
- roleMenus = tenantPackageMenu(baseMapper.roleMenuByRoleId(Func.toLongList(roleId)));
- }
- // 椤堕儴鑿滃崟璇锋眰杩斿洖瀵瑰簲瑙掕壊鏉冮檺鑿滃崟
- else {
- // 瑙掕壊閰嶇疆瀵瑰簲鑿滃崟
- List<Menu> roleIdMenus = baseMapper.roleMenuByRoleId(Func.toLongList(roleId));
- // 鍙嶅悜閫掑綊瑙掕壊鑿滃崟鎵�鏈夌埗绾�
- List<Menu> routes = new LinkedList<>(roleIdMenus);
- roleIdMenus.forEach(roleMenu -> recursion(allMenus, routes, roleMenu));
- // 椤堕儴閰嶇疆瀵瑰簲鑿滃崟
- List<Menu> topIdMenus = baseMapper.roleMenuByTopMenuId(topMenuId);
- // 绛涢�夊尮閰嶈鑹插搴旂殑鏉冮檺鑿滃崟
- roleMenus = topIdMenus.stream().filter(x ->
- routes.stream().anyMatch(route -> route.getId().longValue() == x.getId().longValue())
- ).collect(Collectors.toList());
- }
- return buildRoutes(allMenus, roleMenus);
- }
-
- private List<MenuVO> buildRoutes(List<Menu> allMenus, List<Menu> roleMenus) {
- List<Menu> routes = new LinkedList<>(roleMenus);
- roleMenus.forEach(roleMenu -> recursion(allMenus, routes, roleMenu));
- routes.sort(Comparator.comparing(Menu::getSort));
- MenuWrapper menuWrapper = new MenuWrapper();
- List<Menu> collect = routes.stream().filter(x -> Func.equals(x.getCategory(), 1)).collect(Collectors.toList());
- return menuWrapper.listNodeVO(collect);
- }
-
- private void recursion(List<Menu> allMenus, List<Menu> routes, Menu roleMenu) {
- Optional<Menu> menu = allMenus.stream().filter(x -> Func.equals(x.getId(), roleMenu.getParentId())).findFirst();
- if (menu.isPresent() && !routes.contains(menu.get())) {
- routes.add(menu.get());
- recursion(allMenus, routes, menu.get());
- }
- }
-
- @Override
- public List<MenuVO> buttons(String roleId) {
- List<Menu> buttons = (AuthUtil.isAdministrator()) ? baseMapper.allButtons() : baseMapper.buttons(Func.toLongList(roleId));
- MenuWrapper menuWrapper = new MenuWrapper();
- return menuWrapper.listNodeVO(buttons);
- }
-
- @Override
- public List<TreeNode> tree() {
- return ForestNodeMerger.merge(baseMapper.tree());
- }
-
- @Override
- public List<TreeNode> grantTree(BladeUser user) {
- List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()));
- return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
- }
-
- @Override
- public List<TreeNode> grantTopTree(BladeUser user) {
- List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTopTree() : baseMapper.grantTopTreeByRole(Func.toLongList(user.getRoleId()));
- return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
- }
-
- /**
- * 绉熸埛鑿滃崟鏉冮檺鑷畾涔夌瓫閫�
- */
- private List<TreeNode> tenantPackageTree(List<TreeNode> menuTree, String tenantId) {
- TenantPackage tenantPackage = SysCache.getTenantPackage(tenantId);
- if (!AuthUtil.isAdministrator() && Func.isNotEmpty(tenantPackage) && tenantPackage.getId() > 0L) {
- List<Long> menuIds = Func.toLongList(tenantPackage.getMenuId());
- // 绛涢�夊嚭涓よ�呰彍鍗曚氦闆嗛泦鍚�
- List<TreeNode> collect = menuTree.stream().filter(x -> menuIds.contains(x.getId())).collect(Collectors.toList());
- // 鍒涘缓閫掑綊鍩虹闆嗗悎
- List<TreeNode> packageTree = new LinkedList<>(collect);
- // 閫掑綊绛涢�夊嚭鑿滃崟闆嗗悎鎵�鏈夌埗绾�
- collect.forEach(treeNode -> recursionParent(menuTree, packageTree, treeNode));
- // 閫掑綊绛涢�夊嚭鑿滃崟闆嗗悎鎵�鏈夊瓙绾�
- collect.forEach(treeNode -> recursionChild(menuTree, packageTree, treeNode));
- // 鍚堝苟鍦ㄤ竴璧疯繑鍥炴渶缁堥泦鍚�
- return packageTree;
- }
- return menuTree;
- }
-
- /**
- * 鐖惰妭鐐归�掑綊
- */
- public void recursionParent(List<TreeNode> menuTree, List<TreeNode> packageTree, TreeNode treeNode) {
- Optional<TreeNode> node = menuTree.stream().filter(x -> Func.equals(x.getId(), treeNode.getParentId())).findFirst();
- if (node.isPresent() && !packageTree.contains(node.get())) {
- packageTree.add(node.get());
- recursionParent(menuTree, packageTree, node.get());
- }
- }
-
- /**
- * 瀛愯妭鐐归�掑綊
- */
- public void recursionChild(List<TreeNode> menuTree, List<TreeNode> packageTree, TreeNode treeNode) {
- List<TreeNode> nodes = menuTree.stream().filter(x -> Func.equals(x.getParentId(), treeNode.getId())).collect(Collectors.toList());
- nodes.forEach(node -> {
- if (!packageTree.contains(node)) {
- packageTree.add(node);
- recursionChild(menuTree, packageTree, node);
- }
- });
- }
-
- /**
- * 绉熸埛鑿滃崟鏉冮檺鑷畾涔夌瓫閫�
- */
- private List<Menu> tenantPackageMenu(List<Menu> menu) {
- TenantPackage tenantPackage = SysCache.getTenantPackage(AuthUtil.getTenantId());
- if (Func.isNotEmpty(tenantPackage) && tenantPackage.getId() > 0L) {
- List<Long> menuIds = Func.toLongList(tenantPackage.getMenuId());
- menu = menu.stream().filter(x -> menuIds.contains(x.getId())).collect(Collectors.toList());
- }
- return menu;
- }
-
- @Override
- public List<TreeNode> grantDataScopeTree(BladeUser user) {
- return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantDataScopeTree() : baseMapper.grantDataScopeTreeByRole(Func.toLongList(user.getRoleId())));
- }
-
- @Override
- public List<TreeNode> grantApiScopeTree(BladeUser user) {
- return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantApiScopeTree() : baseMapper.grantApiScopeTreeByRole(Func.toLongList(user.getRoleId())));
- }
-
- @Override
- public List<String> roleTreeKeys(String roleIds) {
- List<RoleMenu> roleMenus = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().in(RoleMenu::getRoleId, Func.toLongList(roleIds)));
- return roleMenus.stream().map(roleMenu -> Func.toStr(roleMenu.getMenuId())).collect(Collectors.toList());
- }
-
- @Override
- public List<String> topTreeKeys(String topMenuIds) {
- List<TopMenuSetting> settings = topMenuSettingService.list(Wrappers.<TopMenuSetting>query().lambda().in(TopMenuSetting::getTopMenuId, Func.toLongList(topMenuIds)));
- return settings.stream().map(setting -> Func.toStr(setting.getMenuId())).collect(Collectors.toList());
- }
-
- @Override
- public List<String> dataScopeTreeKeys(String roleIds) {
- List<RoleScope> roleScopes = roleScopeService.list(Wrappers.<RoleScope>query().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, Func.toLongList(roleIds)));
- return roleScopes.stream().map(roleScope -> Func.toStr(roleScope.getScopeId())).collect(Collectors.toList());
- }
-
- @Override
- public List<String> apiScopeTreeKeys(String roleIds) {
- List<RoleScope> roleScopes = roleScopeService.list(Wrappers.<RoleScope>query().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, Func.toLongList(roleIds)));
- return roleScopes.stream().map(roleScope -> Func.toStr(roleScope.getScopeId())).collect(Collectors.toList());
- }
-
- @Override
- @Cacheable(cacheNames = MENU_CACHE, key = "'auth:routes:' + #user.roleId")
- public List<Kv> authRoutes(BladeUser user) {
- List<MenuDTO> routes = baseMapper.authRoutes(Func.toLongList(user.getRoleId()));
- List<Kv> list = new ArrayList<>();
- routes.forEach(route -> list.add(Kv.create().set(route.getPath(), Kv.create().set("authority", Func.toStrArray(route.getAlias())))));
- return list;
- }
-
- @Override
- public boolean removeMenu(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<Menu>query().lambda().in(Menu::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
- @Override
- public boolean submit(Menu menu) {
- LambdaQueryWrapper<Menu> menuQueryWrapper = Wrappers.lambdaQuery();
- if (menu.getId() == null) {
- menuQueryWrapper.eq(Menu::getCode, menu.getCode()).or(
- wrapper -> wrapper.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
- );
- } else {
- menuQueryWrapper.ne(Menu::getId, menu.getId()).and(
- wrapper -> wrapper.eq(Menu::getCode, menu.getCode()).or(
- o -> o.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
- )
- );
- }
- Long cnt = baseMapper.selectCount(menuQueryWrapper);
- if (cnt > 0L) {
- throw new ServiceException("鑿滃崟鍚嶆垨缂栧彿宸插瓨鍦�!");
- }
- if (menu.getParentId() == null && menu.getId() == null) {
- menu.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- if (menu.getParentId() != null && menu.getId() == null) {
- Menu parentMenu = baseMapper.selectById(menu.getParentId());
- if (parentMenu != null && parentMenu.getCategory() != 1) {
- throw new ServiceException("鐖惰妭鐐瑰彧鍙�夋嫨鑿滃崟绫诲瀷!");
- }
- }
- menu.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return saveOrUpdate(menu);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java
deleted file mode 100644
index 3cd73c9..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.Param;
-import org.springblade.system.mapper.ParamMapper;
-import org.springblade.system.service.IParamService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class ParamServiceImpl extends BaseServiceImpl<ParamMapper, Param> implements IParamService {
-
- @Override
- public String getValue(String paramKey) {
- Param param = this.getOne(Wrappers.<Param>query().lambda().eq(Param::getParamKey, paramKey));
- return param.getParamValue();
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java
deleted file mode 100644
index 240fd39..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/PostServiceImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Post;
-import org.springblade.system.mapper.PostMapper;
-import org.springblade.system.service.IPostService;
-import org.springblade.system.vo.PostVO;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 宀椾綅琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class PostServiceImpl extends BaseServiceImpl<PostMapper, Post> implements IPostService {
-
- @Override
- public IPage<PostVO> selectPostPage(IPage<PostVO> page, PostVO post) {
- return page.setRecords(baseMapper.selectPostPage(page, post));
- }
-
- @Override
- public String getPostIds(String tenantId, String postNames) {
- List<Post> postList = baseMapper.selectList(Wrappers.<Post>query().lambda().eq(Post::getTenantId, tenantId).in(Post::getPostName, Func.toStrList(postNames)));
- if (postList != null && postList.size() > 0) {
- return postList.stream().map(post -> Func.toStr(post.getId())).distinct().collect(Collectors.joining(","));
- }
- return null;
- }
-
- @Override
- public String getPostIdsByFuzzy(String tenantId, String postNames) {
- LambdaQueryWrapper<Post> queryWrapper = Wrappers.<Post>query().lambda().eq(Post::getTenantId, tenantId);
- queryWrapper.and(wrapper -> {
- List<String> names = Func.toStrList(postNames);
- names.forEach(name -> wrapper.like(Post::getPostName, name).or());
- });
- List<Post> postList = baseMapper.selectList(queryWrapper);
- if (postList != null && postList.size() > 0) {
- return postList.stream().map(post -> Func.toStr(post.getId())).distinct().collect(Collectors.joining(","));
- }
- return null;
- }
-
- @Override
- public List<String> getPostNames(String postIds) {
- return baseMapper.getPostNames(Func.toLongArray(postIds));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java
deleted file mode 100644
index 6fc8f7d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RegionServiceImpl.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.system.entity.Region;
-import org.springblade.system.excel.RegionExcel;
-import org.springblade.system.mapper.RegionMapper;
-import org.springblade.system.service.IRegionService;
-import org.springblade.system.vo.RegionVO;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.system.cache.RegionCache.*;
-
-
-/**
- * 琛屾斂鍖哄垝琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements IRegionService {
-
- @Override
- public boolean submit(Region region) {
- Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getCode, region.getCode()));
- if (cnt > 0L) {
- return this.updateById(region);
- }
- // 璁剧疆绁栧尯鍒掔紪鍙�
- Region parent = getByCode(region.getParentCode());
- if (Func.isNotEmpty(parent) || Func.isNotEmpty(parent.getCode())) {
- String ancestors = parent.getAncestors() + StringPool.COMMA + parent.getCode();
- region.setAncestors(ancestors);
- }
- // 璁剧疆鐪併�佸競銆佸尯銆侀晣銆佹潙
- Integer level = region.getRegionLevel();
- String code = region.getCode();
- String name = region.getName();
- if (level == PROVINCE_LEVEL) {
- region.setProvinceCode(code);
- region.setProvinceName(name);
- } else if (level == CITY_LEVEL) {
- region.setCityCode(code);
- region.setCityName(name);
- } else if (level == DISTRICT_LEVEL) {
- region.setDistrictCode(code);
- region.setDistrictName(name);
- } else if (level == TOWN_LEVEL) {
- region.setTownCode(code);
- region.setTownName(name);
- } else if (level == VILLAGE_LEVEL) {
- region.setVillageCode(code);
- region.setVillageName(name);
- }
- return this.save(region);
- }
-
- @Override
- public boolean removeRegion(String id) {
- Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getParentCode, id));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeById(id);
- }
-
- @Override
- public List<RegionVO> lazyList(String parentCode, Map<String, Object> param) {
- return baseMapper.lazyList(parentCode, param);
- }
-
- @Override
- public List<RegionVO> lazyTree(String parentCode, Map<String, Object> param) {
- return baseMapper.lazyTree(parentCode, param);
- }
-
- @Override
- public void importRegion(List<RegionExcel> data, Boolean isCovered) {
- List<Region> list = new ArrayList<>();
- data.forEach(regionExcel -> {
- Region region = BeanUtil.copy(regionExcel, Region.class);
- list.add(region);
- });
- if (isCovered) {
- this.saveOrUpdateBatch(list);
- } else {
- this.saveBatch(list);
- }
- }
-
- @Override
- public List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper) {
- return baseMapper.exportRegion(queryWrapper);
- }
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java
deleted file mode 100644
index 9bf04c8..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleMenuServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.system.entity.RoleMenu;
-import org.springblade.system.mapper.RoleMenuMapper;
-import org.springblade.system.service.IRoleMenuService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements IRoleMenuService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleScopeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleScopeServiceImpl.java
deleted file mode 100644
index 76b19c5..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleScopeServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.system.entity.RoleScope;
-import org.springblade.system.mapper.RoleScopeMapper;
-import org.springblade.system.service.IRoleScopeService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class RoleScopeServiceImpl extends ServiceImpl<RoleScopeMapper, RoleScope> implements IRoleScopeService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java
deleted file mode 100644
index d6d525a..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.AllArgsConstructor;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.constant.RoleConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Role;
-import org.springblade.system.entity.RoleMenu;
-import org.springblade.system.entity.RoleScope;
-import org.springblade.system.mapper.RoleMapper;
-import org.springblade.system.service.IRoleMenuService;
-import org.springblade.system.service.IRoleScopeService;
-import org.springblade.system.service.IRoleService;
-import org.springblade.system.vo.RoleVO;
-import org.springblade.system.wrapper.RoleWrapper;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.constraints.NotEmpty;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static org.springblade.common.constant.CommonConstant.API_SCOPE_CATEGORY;
-import static org.springblade.common.constant.CommonConstant.DATA_SCOPE_CATEGORY;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@Validated
-@AllArgsConstructor
-public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
-
- private final IRoleMenuService roleMenuService;
- private final IRoleScopeService roleScopeService;
-
- @Override
- public IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role) {
- return page.setRecords(baseMapper.selectRolePage(page, role));
- }
-
- @Override
- public List<RoleVO> tree(String tenantId) {
- String userRole = AuthUtil.getUserRole();
- String excludeRole = null;
- if (!CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMIN) && !CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMINISTRATOR)) {
- excludeRole = RoleConstant.ADMINISTRATOR;
- }
- return ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole));
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds) {
- return grantRoleMenu(roleIds, menuIds) && grantDataScope(roleIds, dataScopeIds) && grantApiScope(roleIds, apiScopeIds);
- }
-
- private boolean grantRoleMenu(List<Long> roleIds, List<Long> menuIds) {
- // 闃叉瓒婃潈閰嶇疆瓒呯瑙掕壊
- Long administratorCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMINISTRATOR).in(Role::getId, roleIds));
- if (!AuthUtil.isAdministrator() && administratorCount > 0L) {
- throw new ServiceException("鏃犳潈閰嶇疆瓒呯瑙掕壊!");
- }
- // 闃叉瓒婃潈閰嶇疆绠$悊鍛樿鑹�
- Long adminCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMIN).in(Role::getId, roleIds));
- if (!AuthUtil.isAdmin() && adminCount > 0L) {
- throw new ServiceException("鏃犳潈閰嶇疆绠$悊鍛樿鑹�!");
- }
- // 鍒犻櫎瑙掕壊閰嶇疆鐨勮彍鍗曢泦鍚�
- roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().in(RoleMenu::getRoleId, roleIds));
- // 缁勮閰嶇疆
- List<RoleMenu> roleMenus = new ArrayList<>();
- roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
- RoleMenu roleMenu = new RoleMenu();
- roleMenu.setRoleId(roleId);
- roleMenu.setMenuId(menuId);
- roleMenus.add(roleMenu);
- }));
- // 鏂板閰嶇疆
- roleMenuService.saveBatch(roleMenus);
- // 閫掑綊璁剧疆涓嬪睘瑙掕壊鑿滃崟闆嗗悎
- recursionRoleMenu(roleIds, menuIds);
- return true;
- }
-
- private void recursionRoleMenu(List<Long> roleIds, List<Long> menuIds) {
- roleIds.forEach(roleId -> baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getParentId, roleId)).forEach(role -> {
- List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
- // 瀛愯妭鐐硅繃婊ゅ嚭鐖惰妭鐐瑰垹闄ょ殑鑿滃崟闆嗗悎
- List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
- if (collectRoleMenuIds.size() > 0) {
- // 鍒犻櫎瀛愯妭鐐规潈闄愬鐨勮彍鍗曢泦鍚�
- roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
- // 閫掑綊璁剧疆涓嬪睘瑙掕壊鑿滃崟闆嗗悎
- recursionRoleMenu(Collections.singletonList(role.getId()), menuIds);
- }
- }));
- }
-
- private boolean grantDataScope(List<Long> roleIds, List<Long> dataScopeIds) {
- // 鍒犻櫎瑙掕壊閰嶇疆鐨勬暟鎹潈闄愰泦鍚�
- roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
- // 缁勮閰嶇疆
- List<RoleScope> roleDataScopes = new ArrayList<>();
- roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
- RoleScope roleScope = new RoleScope();
- roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
- roleScope.setRoleId(roleId);
- roleScope.setScopeId(scopeId);
- roleDataScopes.add(roleScope);
- }));
- // 鏂板閰嶇疆
- roleScopeService.saveBatch(roleDataScopes);
- return true;
- }
-
- private boolean grantApiScope(List<Long> roleIds, List<Long> apiScopeIds) {
- // 鍒犻櫎瑙掕壊閰嶇疆鐨勬帴鍙f潈闄愰泦鍚�
- roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
- // 缁勮閰嶇疆
- List<RoleScope> roleApiScopes = new ArrayList<>();
- roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
- RoleScope roleScope = new RoleScope();
- roleScope.setScopeCategory(API_SCOPE_CATEGORY);
- roleScope.setScopeId(scopeId);
- roleScope.setRoleId(roleId);
- roleApiScopes.add(roleScope);
- }));
- // 鏂板閰嶇疆
- roleScopeService.saveBatch(roleApiScopes);
- return true;
- }
-
- @Override
- public String getRoleIds(String tenantId, String roleNames) {
- List<Role> roleList = baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getTenantId, tenantId).in(Role::getRoleName, Func.toStrList(roleNames)));
- if (roleList != null && roleList.size() > 0) {
- return roleList.stream().map(role -> Func.toStr(role.getId())).distinct().collect(Collectors.joining(","));
- }
- return null;
- }
-
- @Override
- public List<String> getRoleNames(String roleIds) {
- return baseMapper.getRoleNames(Func.toLongArray(roleIds));
- }
-
- @Override
- public List<String> getRoleAliases(String roleIds) {
- return baseMapper.getRoleAliases(Func.toLongArray(roleIds));
- }
-
- @Override
- public boolean submit(Role role) {
- if (!AuthUtil.isAdministrator()) {
- if (Func.toStr(role.getRoleAlias()).equals(RoleConstant.ADMINISTRATOR)) {
- throw new ServiceException("鏃犳潈闄愬垱寤鸿秴绠¤鑹诧紒");
- }
- }
- if (Func.isEmpty(role.getParentId())) {
- role.setTenantId(AuthUtil.getTenantId());
- role.setParentId(BladeConstant.TOP_PARENT_ID);
- }
- if (role.getParentId() > 0) {
- Role parent = getById(role.getParentId());
- if (Func.toLong(role.getParentId()) == Func.toLong(role.getId())) {
- throw new ServiceException("鐖惰妭鐐逛笉鍙�夋嫨鑷韩!");
- }
- role.setTenantId(parent.getTenantId());
- }
- role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return saveOrUpdate(role);
- }
-
- @Override
- public List<RoleVO> search(String roleName, Long parentId) {
- String tenantId = AuthUtil.getTenantId();
- LambdaQueryWrapper<Role> queryWrapper = Wrappers.<Role>query().lambda();
- if (Func.isNotEmpty(roleName)) {
- queryWrapper.like(Role::getRoleName, roleName);
- }
- if (Func.isNotEmpty(parentId) && parentId > 0L) {
- queryWrapper.eq(Role::getParentId, parentId);
- }
- if (Func.isNotEmpty(tenantId)) {
- queryWrapper.eq(Role::getTenantId, tenantId);
- }
- List<Role> roleList = baseMapper.selectList(queryWrapper);
- return RoleWrapper.build().listNodeVO(roleList);
- }
-
- @Override
- public boolean removeRole(String ids) {
- Long cnt = baseMapper.selectCount(Wrappers.<Role>query().lambda().in(Role::getParentId, Func.toLongList(ids)));
- if (cnt > 0L) {
- throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
- }
- return removeByIds(Func.toLongList(ids));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
deleted file mode 100644
index 15a6b43..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.springblade.system.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.Strategy;
-import org.springblade.system.mapper.StrategyMapper;
-import org.springblade.system.service.IStrategyService;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 瀵嗙爜绛栫暐(Strategy)琛ㄦ湇鍔″疄鐜扮被
- *
- * @author makejava
- * @since 2023-03-20 15:25:05
- */
-@Service
-public class StrategyServiceImpl extends ServiceImpl<StrategyMapper, Strategy> implements IStrategyService {
-
- @Resource
- private StrategyMapper strategyMapper;
-
- /**
- * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
- *
- * @param id 涓婚敭
- * @return 瀹炰緥瀵硅薄
- */
- @Override
- public Strategy queryById(String id) {
- return this.getById(id);
- }
-
- /**
- * 鏌ヨ榛樿瀵嗙爜绛栫暐
- * @return
- */
- @Override
- public Strategy queryByIsDefault() {
- return this.strategyMapper.queryByIsDefault();
- }
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param query 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @Override
- public PageImpl<Strategy> queryAllByPage(Query query) {
- Page<Strategy> strategyPage = new Page<>(query.getCurrent(), query.getSize());
- return new PageImpl<>(this.strategyMapper.queryAllByPage(strategyPage));
- }
-
- /**
- * 鏂板鏁版嵁鎴栬�呬慨鏀规暟鎹�
- *
- * @param strategy 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- @Override
- public boolean submit(Strategy strategy) {
- //鍒ゆ柇鏄惁鎼哄甫id
- if(Func.isEmpty(strategy.getId())){
- //鎵ц鏂板
- Strategy dbstrategy = this.getOne(Wrappers.<Strategy>query().lambda()
- .eq(Strategy::getStrategyName, strategy.getStrategyName()));
- //濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
- if(!Func.isEmpty(dbstrategy)){
- throw new ServiceException("璇ュ瘑鐮佺瓥鐣ュ凡瀛樺湪!");
- }
- //濡傛灉褰撳墠鏂板璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
- if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
- this.update(Wrappers.<Strategy>update().lambda()
- .set(Strategy::getIsDefault, CommonConstant.NOT_SEALED_ID)
- .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
- }
- if(strategy.getRequiredType() > 0){
- throw new ServiceException("蹇呭~绉嶇被涓嶈兘灏忎簬绛変簬0!");
- }
- if(strategy.getRequiredType() > strategy.getCombinationIds().split(",").length){
- throw new ServiceException("蹇呭~绉嶇被涓嶈兘澶т簬鎵�閫夋嫨鐨勫瘑鐮佺粍鍚堟柟寮忕殑涓暟!");
- }
- if(strategy.getMaxPwdLen() > strategy.getMinPwdLen()){
- throw new ServiceException("瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庢渶灏忛暱搴�!");
- }
- if(strategy.getMinPwdLen() < strategy.getCombinationIds().split(",").length || strategy.getMaxPwdLen() < strategy.getCombinationIds().split(",").length){
- throw new ServiceException("瀵嗙爜鏈�灏忛暱搴︿笉鑳藉皬浜庣瀵嗙瓥鐣ョ殑鍊�!");
- }
- if(Func.isEmpty(strategy.getCreateTime())){
- strategy.setCreateTime(new Date());
- }
- if(Func.isEmpty(strategy.getUpdateTime())){
- strategy.setUpdateTime(new Date());
- }
- boolean temp = super.saveOrUpdate(strategy);
- return temp;
- }else {
- //濡傛灉褰撳墠淇敼璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
- if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
- this.update(Wrappers.<Strategy>update().lambda()
- .set(Strategy::getIsDefault,CommonConstant.NOT_SEALED_ID)
- .eq(Strategy::getIsDefault,CommonConstant.DATA_SCOPE_CATEGORY));
- }else {
- if(Func.isEmpty(queryByIsDefault())){
- throw new ServiceException("榛樿瀵嗙爜绛栫暐蹇呴』鏈変笖浠呮湁涓�鏉�!");
- }
- }
- if(Func.isEmpty(strategy.getUpdateTime())){
- strategy.setUpdateTime(new Date());
- }
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return super.saveOrUpdate(strategy);
- }
- }
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鏄惁鎴愬姛
- */
- @Override
- public boolean deleteByIds(List<String> ids) {
- Strategy strategy = this.getOne(Wrappers.<Strategy>query().lambda()
- .in(Strategy::getId,ids)
- .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
- //濡傛灉瀛樺湪榛樿绛栫暐鐨刬d锛屽氨涓嶈兘鐩存帴鍒犻櫎缁欏嚭鎻愮ず
- if(!Func.isEmpty(strategy)){
- throw new ServiceException("涓嶈兘鍒犻櫎榛樿瀵嗙爜绛栫暐!");
- }
- boolean tenantTemp = this.removeBatchByIds(ids);
- return tenantTemp;
- }
-
- /**
- * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣�
- * @param tenantId
- * @param name
- * @return
- */
- @Override
- public Strategy queryByNameAndTenantId(String tenantId, String name) {
- Strategy strategy = this.strategyMapper.queryByNameAndTenantId(tenantId,name);
- if(!Func.isEmpty(strategy)){
- return strategy;
- }
- return queryByIsDefault();
- }
-
- /**
- * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
- * @param userId
- * @return
- */
- @Override
- public Strategy queryByUserId(Long userId) {
- Strategy strategy = this.strategyMapper.queryByUserId(userId);
- if(!Func.isEmpty(strategy)){
- return strategy;
- }
- return queryByIsDefault();
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantPackageServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantPackageServiceImpl.java
deleted file mode 100644
index dd222e8..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantPackageServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.TenantPackage;
-import org.springblade.system.mapper.TenantPackageMapper;
-import org.springblade.system.service.ITenantPackageService;
-import org.springframework.stereotype.Service;
-
-/**
- * 绉熸埛浜у搧琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-public class TenantPackageServiceImpl extends BaseServiceImpl<TenantPackageMapper, TenantPackage> implements ITenantPackageService {
-
-}
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
deleted file mode 100644
index 8d989ce..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.tenant.TenantId;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.cache.ParamCache;
-import org.springblade.system.entity.*;
-import org.springblade.system.mapper.TenantMapper;
-import org.springblade.system.service.*;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.enums.UserEnum;
-import org.springblade.system.user.feign.IUserClient;
-import org.springblade.system.vo.TenantVO;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static org.springblade.common.constant.TenantConstant.*;
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@RequiredArgsConstructor
-public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> implements ITenantService {
-
- private final TenantId tenantId;
- private final IRoleService roleService;
- private final IMenuService menuService;
- private final IDeptService deptService;
- private final IPostService postService;
- private final IRoleMenuService roleMenuService;
- private final IDictBizService dictBizService;
- private final IUserClient userClient;
- private final IStrategyService strategyService;
- private final IUserPwdstrategyService userPwdstrategyService;
-
- /**
- * 鑾峰彇鏄惁鍏佽鑷鎺у埗涓夊憳鏄惁寮�鍚�
- */
- @Value("${ssa.ssa-enable}")
- private Boolean ssaEnable;
- /**
- * 鑾峰彇榛樿涓夊憳绠$悊鍛樼殑鍚嶇О
- */
- @Value("#{'${ssa.ssa-names}'.split(',')}")
- private List<String> ssaNames;
- /**
- * 涓夊憳绠$悊鑿滃崟閰嶇疆
- */
- @Value("#{'${ssa.sys-menus}'.split(',')}")
- private List<String> sysMenus;
- @Value("#{'${ssa.sec-menus}'.split(',')}")
- private List<String> secMenus;
- @Value("#{'${ssa.audit-menus}'.split(',')}")
- private List<String> auditMenus;
-
- @Override
- public IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant) {
- return page.setRecords(baseMapper.selectTenantPage(page, tenant));
- }
-
- @Override
- public Tenant getByTenantId(String tenantId) {
- return getOne(Wrappers.<Tenant>query().lambda().eq(Tenant::getTenantId, tenantId));
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean submitTenant(TenantVO tenant) {
- if (Func.isEmpty(tenant.getId())) {
- // 鑾峰彇鍒版湭鍒犻櫎绉熸埛鎬绘暟锛岀敓鎴愭柊鐨勭鎴穒d
- List<Tenant> tenants = baseMapper.selectList(Wrappers.<Tenant>query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
- String tenantId = getTenantId(codes);
- tenant.setTenantId(tenantId);
- // 閰嶇疆涓篺alse锛屽苟涓斿墠绔紶杈撶殑鍙傛暟涓�1(鏈�夋嫨寮�鍚�)灏变笉闇�瑕佸垱寤轰笁鍛�
- if(!this.ssaEnable && tenant.getSsaEnable()==1){
- // 涓嶅紑鍚笁鍛樼鐞嗘椂鐩存帴鍒涘缓涓�涓渶楂樻潈闄愮殑绠$悊鍛�
- Role role = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瓒呯骇绠$悊鍛�",1,"admin",BladeConstant.DB_NOT_DELETED);
- roleService.save(role);
- // 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
- saveRoleMenus(role, MENU_CODES);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
- Dept dept = generateDept(tenantId, tenant);
- deptService.save(dept);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
- Post postInfo = generatePost(tenantId, 1, "admin", "绠$悊鍛�", 1);
- postService.save(postInfo);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
- LinkedList<DictBiz> dictBizs = new LinkedList<>();
- List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
- dictBizService.saveBatch(dictBizList);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ょ鐞嗙敤
- User user = generateUser(tenantId, role, dept, postInfo);
- // 鍏堜繚瀛樼鎴�
- boolean temp = super.saveOrUpdate(tenant);
- // 鍒涘缓鐢ㄦ埛
- R<Boolean> result = userClient.saveUser(user);
- //鐢熸垚鐢ㄦ埛瀵嗙爜绛栫暐绠$悊璁板綍
- if (!result.isSuccess()) {
- throw new ServiceException(result.getMsg());
- }
- return temp;
- }else {
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁よ鑹�
- List<Role> roles = new ArrayList<>();
- Role roleSys = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"绯荤粺绠$悊鍛�",1,this.ssaNames.get(0),BladeConstant.DB_NOT_DELETED);
- Role roleSec = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹夊叏绠$悊鍛�",2,this.ssaNames.get(1),BladeConstant.DB_NOT_DELETED);
- Role roleAudit = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹¤绠$悊鍛�",3,this.ssaNames.get(2),BladeConstant.DB_NOT_DELETED);
- roles.add(roleSys);
- roles.add(roleSec);
- roles.add(roleAudit);
- roleService.saveBatch(roles);
- // 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
- saveRoleMenus(roleSys,this.sysMenus); //绯荤粺绠$悊鍛樿鑹茶彍鍗曟潈闄�
- saveRoleMenus(roleSec,this.secMenus); //瀹夊叏绠$悊鍛樿鑹茶彍鍗曟潈闄�
- saveRoleMenus(roleAudit,this.auditMenus); //瀹¤绠$悊鍛樿鑹茶彍鍗曟潈闄�
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
- Dept dept = generateDept(tenantId, tenant);
- deptService.save(dept);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
- Post postSys = generatePost(tenantId, 1, this.ssaNames.get(0), "绯荤粺绠$悊鍛�", 1);
- Post postSec = generatePost(tenantId,1,this.ssaNames.get(1),"瀹夊叏绠$悊鍛�",4);
- Post postAudit = generatePost(tenantId,1,this.ssaNames.get(2),"瀹¤绠$悊鍛�",5);
- postService.saveBatch(Arrays.asList(postSys,postSec,postAudit));
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
- LinkedList<DictBiz> dictBizs = new LinkedList<>();
- List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
- dictBizService.saveBatch(dictBizList);
- // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ょ鐞嗙敤鎴�
- User userSys = generateUser(tenantId, roleSys, dept, postSys);
- User userSec = generateUser(tenantId,roleSec,dept,postSec);
- User userAudit = generateUser(tenantId,roleAudit,dept,postAudit);
- // 鍏堜繚瀛樼鎴�
- boolean temp = super.saveOrUpdate(tenant);
- // 鍒涘缓鐢ㄦ埛
- R<Boolean> result = userClient.saveUserList(Arrays.asList(userSys,userSec,userAudit));
- if (!result.isSuccess()) {
- throw new ServiceException(result.getMsg());
- }
- return temp;
- }
- } else {
- CacheUtil.clear(SYS_CACHE, tenant.getTenantId());
- return super.saveOrUpdate(tenant);
- }
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean removeTenant(List<Long> ids) {
- List<String> tenantIds = this.list(Wrappers.<Tenant>query().lambda().in(Tenant::getId, ids))
- .stream().map(tenant -> Func.toStr(tenant.getTenantId())).distinct().collect(Collectors.toList());
- CacheUtil.clear(SYS_CACHE, tenantIds);
- if (tenantIds.contains(BladeConstant.ADMIN_TENANT_ID)) {
- throw new ServiceException("涓嶅彲鍒犻櫎绠$悊绉熸埛!");
- }
- boolean tenantTemp = this.deleteLogic(ids);
- R<Boolean> result = userClient.removeUser(StringUtil.join(tenantIds));
- if (!result.isSuccess()) {
- throw new ServiceException(result.getMsg());
- }
- return tenantTemp;
- }
-
- @Override
- public List<Map<String,Object>> selectMaps(){
- List<Map<String, Object>> maps = listMaps(new QueryWrapper<Tenant>().select("TENANT_ID", "TENANT_NAME"));
- return maps;
- }
-
- @Override
- public boolean findIsOpen() {
- return this.ssaEnable;
- }
-
- /**
- * 鍒涘缓绉熸埛涓嬬殑榛樿宀椾綅
- * @param tenantId
- * @param sort
- */
- private Post generatePost(String tenantId,Integer categ,String postCode,String postName,Integer sort){
- Post post = new Post();
- post.setTenantId(tenantId);
- post.setCategory(categ);
- post.setPostCode(postCode);
- post.setPostName(postName);
- post.setSort(sort);
- return post;
- }
-
- /**
- * 鍒涘缓榛樿鐢ㄦ埛锛屽苟杩涜鐩稿叧鏉冮檺璁剧疆
- */
- private User generateUser(String tenantId, Role role, Dept dept, Post post){
- User user = new User();
- user.setTenantId(tenantId);
- user.setName(role.getRoleAlias());
- 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);
- user.setRoleId(String.valueOf(role.getId()));
- user.setDeptId(String.valueOf(dept.getId()));
- user.setPostId(String.valueOf(post.getId()));
- user.setBirthday(new Date());
- user.setSex(1);
- user.setUserType(UserEnum.WEB.getCategory());
- user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return user;
- }
-
- /**
- * 淇濆瓨鐢ㄦ埛瀵瑰簲鐨勫叧鑱斾俊鎭�
- * @param role
- */
- private void saveRoleMenus(Role role,List<String> stringMenus){
- LinkedList<Menu> userMenus = new LinkedList<>();
- // 鑾峰彇鍙傛暟閰嶇疆鐨勯粯璁よ彍鍗曢泦鍚堬紝閫楀彿闅斿紑
- //List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
- List<Menu> menus = getMenus((stringMenus), userMenus);
- List<RoleMenu> roleMenus = new ArrayList<>();
- //鍒涘缓鎵�鏈夎彍鍗曡鑹插叧鑱斿璞�
- menus.forEach(menu -> {
- roleMenus.add(new RoleMenu(menu.getId(),role.getId()));
- });
- roleMenuService.saveBatch(roleMenus);
- }
-
- /**
- * 鍒涘缓榛樿閮ㄩ棬
- * @param tenantId
- * @param tenant
- */
- private Dept generateDept(String tenantId,Tenant tenant){
- Dept dept = new Dept();
- dept.setTenantId(tenantId);
- dept.setParentId(BladeConstant.TOP_PARENT_ID);
- dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
- dept.setDeptName(tenant.getTenantName());
- dept.setFullName(tenant.getTenantName());
- dept.setDeptCategory(1);
- dept.setSort(2);
- dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return dept;
- }
-
- private String getTenantId(List<String> codes) {
- String code = tenantId.generate();
- if (codes.contains(code)) {
- return getTenantId(codes);
- }
- return code;
- }
-
- private List<Menu> getMenus(List<String> codes, LinkedList<Menu> menus) {
- codes.forEach(code -> {
- Menu menu = menuService.getOne(Wrappers.<Menu>query().lambda().eq(Menu::getCode, code).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- if (menu != null) {
- menus.add(menu);
- recursionMenu(menu.getId(), menus);
- }
- });
- return menus;
- }
-
- private void recursionMenu(Long parentId, LinkedList<Menu> menus) {
- List<Menu> menuList = menuService.list(Wrappers.<Menu>query().lambda().eq(Menu::getParentId, parentId).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- menus.addAll(menuList);
- menuList.forEach(menu -> recursionMenu(menu.getId(), menus));
- }
-
- private List<DictBiz> getDictBizs(String tenantId, LinkedList<DictBiz> dictBizs) {
- List<DictBiz> dictBizList = dictBizService.list(Wrappers.<DictBiz>query().lambda().eq(DictBiz::getParentId, BladeConstant.TOP_PARENT_ID).eq(DictBiz::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- dictBizList.forEach(dictBiz -> {
- Long oldParentId = dictBiz.getId();
- Long newParentId = IdWorker.getId();
- dictBiz.setId(newParentId);
- dictBiz.setTenantId(tenantId);
- dictBizs.add(dictBiz);
- recursionDictBiz(tenantId, oldParentId, newParentId, dictBizs);
- });
- return dictBizs;
- }
-
- private void recursionDictBiz(String tenantId, Long oldParentId, Long newParentId, LinkedList<DictBiz> dictBizs) {
- List<DictBiz> dictBizList = dictBizService.list(Wrappers.<DictBiz>query().lambda().eq(DictBiz::getParentId, oldParentId).eq(DictBiz::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- dictBizList.forEach(dictBiz -> {
- Long oldSubParentId = dictBiz.getId();
- Long newSubParentId = IdWorker.getId();
- dictBiz.setId(newSubParentId);
- dictBiz.setTenantId(tenantId);
- dictBiz.setParentId(newParentId);
- dictBizs.add(dictBiz);
- recursionDictBiz(tenantId, oldSubParentId, newSubParentId, dictBizs);
- });
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuServiceImpl.java
deleted file mode 100644
index 134252c..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuServiceImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.entity.TopMenu;
-import org.springblade.system.entity.TopMenuSetting;
-import org.springblade.system.mapper.TopMenuMapper;
-import org.springblade.system.service.ITopMenuService;
-import org.springblade.system.service.ITopMenuSettingService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.validation.constraints.NotEmpty;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 椤堕儴鑿滃崟琛� 鏈嶅姟瀹炵幇绫�
- *
- * @author BladeX
- */
-@Service
-@AllArgsConstructor
-public class TopMenuServiceImpl extends BaseServiceImpl<TopMenuMapper, TopMenu> implements ITopMenuService {
-
- private final ITopMenuSettingService topMenuSettingService;
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds) {
- // 鍒犻櫎椤堕儴鑿滃崟閰嶇疆鐨勮彍鍗曢泦鍚�
- topMenuSettingService.remove(Wrappers.<TopMenuSetting>update().lambda().in(TopMenuSetting::getTopMenuId, topMenuIds));
- // 缁勮閰嶇疆
- List<TopMenuSetting> menuSettings = new ArrayList<>();
- topMenuIds.forEach(topMenuId -> menuIds.forEach(menuId -> {
- TopMenuSetting menuSetting = new TopMenuSetting();
- menuSetting.setTopMenuId(topMenuId);
- menuSetting.setMenuId(menuId);
- menuSettings.add(menuSetting);
- }));
- // 鏂板閰嶇疆
- topMenuSettingService.saveBatch(menuSettings);
- return true;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuSettingServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuSettingServiceImpl.java
deleted file mode 100644
index 6c61257..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TopMenuSettingServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.system.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.system.entity.TopMenuSetting;
-import org.springblade.system.mapper.TopMenuSettingMapper;
-import org.springblade.system.service.ITopMenuSettingService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class TopMenuSettingServiceImpl extends ServiceImpl<TopMenuSettingMapper, TopMenuSetting> implements ITopMenuSettingService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java
deleted file mode 100644
index c277d31..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.springblade.system.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.RequiredArgsConstructor;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.system.entity.UserPwdstrategy;
-import org.springblade.system.mapper.UserPwdstrategyMapper;
-import org.springblade.system.service.IUserPwdstrategyService;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
-import org.springblade.system.vo.UserPwdstrategyVO;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔″疄鐜扮被
- *
- * @author makejava
- * @since 2023-03-22 15:24:55
- */
-@Service
-@RequiredArgsConstructor
-public class UserPwdstrategyServiceImpl extends ServiceImpl<UserPwdstrategyMapper,UserPwdstrategy> implements IUserPwdstrategyService {
-
- @Resource
- private UserPwdstrategyMapper userPwdstrategyMapper;
-
- /**
- * user鏈嶅姟璋冪敤绫�
- */
- private final IUserClient userClient;
-
- @Override
- public UserPwdstrategy queryById(Long id) {
- return this.getById(id);
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- * @param userPwdstrategyVO 瀹炰緥瀵硅薄
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean submit(UserPwdstrategyVO userPwdstrategyVO) {
- //鍏堝垹闄�
- int eft = this.userPwdstrategyMapper.deleteByUserIds(userPwdstrategyVO.getUserIds());
- //鍦ㄦ柊澧�
- List<UserPwdstrategy> userPwdstrategyList = new ArrayList<>();
- userPwdstrategyVO.getUserIds().forEach(id->{
- boolean temp = userPwdstrategyList.add(new UserPwdstrategy(id, userPwdstrategyVO.getPwdstrategyId()));
- if(temp){
- //瀵嗙爜绛栫暐鏀瑰姩鎴愬姛涔嬪悗淇敼鐢ㄦ埛鐘舵��
- User user = new User();
- user.setId(id);
- user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID);
- userClient.updateUser(user);
- }
- });
- return this.saveBatch(userPwdstrategyList);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java
deleted file mode 100644
index 69eaa0b..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.springblade.system.service.impl;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.entity.ValueRange;
-import org.springblade.system.mapper.ValueRangeMapper;
-import org.springblade.system.service.IValueRangeService;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-
-import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
-
-/**
- * (PlSysValueRange)琛ㄦ湇鍔″疄鐜扮被
- *
- * @author makejava
- * @since 2023-03-20 15:23:59
- */
-@Service
-public class ValueRangeServiceImpl extends ServiceImpl<ValueRangeMapper,ValueRange> implements IValueRangeService {
-
- @Resource
- private ValueRangeMapper valueRangeMapper;
-
- /**
- * 鍏ㄦ煡璇�
- *
- * @return 鏌ヨ缁撴灉
- */
- @Override
- public List<ValueRange> queryByAll() {
- return valueRangeMapper.selectList(null);
- }
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param valueRange 绛涢�夋潯浠�
- * @param pageRequest 鍒嗛〉瀵硅薄
- * @return 鏌ヨ缁撴灉
- */
- @Override
- public Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest) {
- long total = this.valueRangeMapper.count(valueRange);
- return new PageImpl<>(this.valueRangeMapper.queryAllByLimit(valueRange, pageRequest), pageRequest, total);
- }
-
- /**
- * 鏂板鏁版嵁
- *
- * @param valueRange 瀹炰緥瀵硅薄
- * @return 瀹炰緥瀵硅薄
- */
- @Override
- public boolean submit(ValueRange valueRange) {
- //鍒ゆ柇鏄惁鎼哄甫id
- if(Func.isEmpty(valueRange.getId())){
- //鏂板
- ValueRange dbValueRange = this.getOne(Wrappers.<ValueRange>query().lambda()
- .eq(ValueRange::getCombinationId,valueRange.getCombinationId())
- .eq(ValueRange::getValue, valueRange.getValue()));
- //鍚屼竴缁勫悎鏂瑰紡涓嬩笉鑳藉嚭鐜扮浉鍚岀殑鍙栧�艰寖鍥�
- if(!Func.isEmpty(dbValueRange)){
- throw new ServiceException("璇ョ粍鍚堟柟寮忎笅宸插瓨鍦ㄧ浉鍚屽彇鍊艰寖鍥�!");
- }
- if(Func.isEmpty(valueRange.getCreateTime())){
- valueRange.setCreateTime(new Date());
- }
- if(Func.isEmpty(valueRange.getUpdateTime())){
- valueRange.setUpdateTime(new Date());
- }
- boolean temp = saveOrUpdate(valueRange);
- return temp;
- }else {
- if(Func.isEmpty(valueRange.getUpdateTime())){
- valueRange.setUpdateTime(new Date());
- }
- CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
- return saveOrUpdate(valueRange);
- }
- }
-
- /**
- * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
- *
- * @param ids 涓婚敭
- * @return 鏄惁鎴愬姛
- */
- @Override
- public boolean deleteByIds(List<String> ids) {
- boolean tenantTemp = this.removeBatchByIds(ids);
- return tenantTemp;
- }
-
- /**
- * 鑾峰彇鍙栧��
- *
- * @return 鏄惁鎴愬姛
- */
- @Override
- public List<String> getByAllString(List<String> combinationIds) {
- List<String> list = valueRangeMapper.queryByCombinationIds(combinationIds);
- return list;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ApiScopeWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ApiScopeWrapper.java
deleted file mode 100644
index bad6600..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/ApiScopeWrapper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.ApiScope;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.vo.ApiScopeVO;
-
-import java.util.Objects;
-
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class ApiScopeWrapper extends BaseEntityWrapper<ApiScope, ApiScopeVO> {
-
- public static ApiScopeWrapper build() {
- return new ApiScopeWrapper();
- }
-
- @Override
- public ApiScopeVO entityVO(ApiScope dataScope) {
- ApiScopeVO apiScopeVO = Objects.requireNonNull(BeanUtil.copy(dataScope, ApiScopeVO.class));
- String scopeTypeName = DictCache.getValue(DictEnum.API_SCOPE_TYPE, dataScope.getScopeType());
- apiScopeVO.setScopeTypeName(scopeTypeName);
- return apiScopeVO;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DataScopeWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DataScopeWrapper.java
deleted file mode 100644
index 2ce546d..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DataScopeWrapper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.DataScope;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.vo.DataScopeVO;
-
-import java.util.Objects;
-
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class DataScopeWrapper extends BaseEntityWrapper<DataScope, DataScopeVO> {
-
- public static DataScopeWrapper build() {
- return new DataScopeWrapper();
- }
-
- @Override
- public DataScopeVO entityVO(DataScope dataScope) {
- DataScopeVO dataScopeVO = Objects.requireNonNull(BeanUtil.copy(dataScope, DataScopeVO.class));
- String scopeTypeName = DictCache.getValue(DictEnum.DATA_SCOPE_TYPE, dataScope.getScopeType());
- dataScopeVO.setScopeTypeName(scopeTypeName);
- return dataScopeVO;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java
deleted file mode 100644
index 1303f10..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DeptWrapper.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.vo.DeptVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class DeptWrapper extends BaseEntityWrapper<Dept, DeptVO> {
-
- public static DeptWrapper build() {
- return new DeptWrapper();
- }
-
- @Override
- public DeptVO entityVO(Dept dept) {
- DeptVO deptVO = Objects.requireNonNull(BeanUtil.copy(dept, DeptVO.class));
- if (Func.equals(dept.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- deptVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- Dept parent = SysCache.getDept(dept.getParentId());
- deptVO.setParentName(parent.getDeptName());
- }
- String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
- deptVO.setDeptCategoryName(category);
- return deptVO;
- }
-
-
- public List<DeptVO> listNodeVO(List<Dept> list) {
- List<DeptVO> collect = list.stream().map(dept -> {
- DeptVO deptVO = BeanUtil.copy(dept, DeptVO.class);
- String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
- Objects.requireNonNull(deptVO).setDeptCategoryName(category);
- return deptVO;
- }).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
- public List<DeptVO> listNodeLazyVO(List<DeptVO> list) {
- List<DeptVO> collect = list.stream().peek(dept -> {
- String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
- Objects.requireNonNull(dept).setDeptCategoryName(category);
- }).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictBizWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictBizWrapper.java
deleted file mode 100644
index f921da0..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictBizWrapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictBizCache;
-import org.springblade.system.entity.DictBiz;
-import org.springblade.system.vo.DictBizVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class DictBizWrapper extends BaseEntityWrapper<DictBiz, DictBizVO> {
-
- public static DictBizWrapper build() {
- return new DictBizWrapper();
- }
-
- @Override
- public DictBizVO entityVO(DictBiz dict) {
- DictBizVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictBizVO.class));
- if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- DictBiz parent = DictBizCache.getById(dict.getParentId());
- dictVO.setParentName(parent.getDictValue());
- }
- return dictVO;
- }
-
- public List<DictBizVO> listNodeVO(List<DictBiz> list) {
- List<DictBizVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictBizVO.class)).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java
deleted file mode 100644
index c1c0514..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/DictWrapper.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.Dict;
-import org.springblade.system.vo.DictVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class DictWrapper extends BaseEntityWrapper<Dict, DictVO> {
-
- public static DictWrapper build() {
- return new DictWrapper();
- }
-
- @Override
- public DictVO entityVO(Dict dict) {
- DictVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictVO.class));
- if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- Dict parent = DictCache.getById(dict.getParentId());
- dictVO.setParentName(parent.getDictValue());
- }
- return dictVO;
- }
-
- public List<DictVO> listNodeVO(List<Dict> list) {
- List<DictVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictVO.class)).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java
deleted file mode 100644
index 4f3ea79..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/MenuWrapper.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Menu;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.vo.MenuVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class MenuWrapper extends BaseEntityWrapper<Menu, MenuVO> {
-
- public static MenuWrapper build() {
- return new MenuWrapper();
- }
-
- @Override
- public MenuVO entityVO(Menu menu) {
- MenuVO menuVO = Objects.requireNonNull(BeanUtil.copy(menu, MenuVO.class));
- if (Func.equals(menu.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- menuVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- Menu parent = SysCache.getMenu(menu.getParentId());
- menuVO.setParentName(parent.getName());
- }
- String category = DictCache.getValue(DictEnum.MENU_CATEGORY, Func.toInt(menuVO.getCategory()));
- String action = DictCache.getValue(DictEnum.BUTTON_FUNC, Func.toInt(menuVO.getAction()));
- String open = DictCache.getValue(DictEnum.YES_NO, Func.toInt(menuVO.getIsOpen()));
- menuVO.setCategoryName(category);
- menuVO.setActionName(action);
- menuVO.setIsOpenName(open);
- return menuVO;
- }
-
- public List<MenuVO> listNodeVO(List<Menu> list) {
- List<MenuVO> collect = list.stream().map(menu -> BeanUtil.copy(menu, MenuVO.class)).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
- public List<MenuVO> listNodeLazyVO(List<MenuVO> list) {
- return ForestNodeMerger.merge(list);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/PostWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/PostWrapper.java
deleted file mode 100644
index edeb175..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/PostWrapper.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.entity.Post;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.vo.PostVO;
-
-import java.util.Objects;
-
-/**
- * 宀椾綅琛ㄥ寘瑁呯被,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class PostWrapper extends BaseEntityWrapper<Post, PostVO> {
-
- public static PostWrapper build() {
- return new PostWrapper();
- }
-
- @Override
- public PostVO entityVO(Post post) {
- PostVO postVO = Objects.requireNonNull(BeanUtil.copy(post, PostVO.class));
- String categoryName = DictCache.getValue(DictEnum.POST_CATEGORY, post.getCategory());
- postVO.setCategoryName(categoryName);
- return postVO;
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RegionWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RegionWrapper.java
deleted file mode 100644
index d78c82c..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RegionWrapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.system.cache.RegionCache;
-import org.springblade.system.entity.Region;
-import org.springblade.system.vo.RegionVO;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class RegionWrapper extends BaseEntityWrapper<Region, RegionVO> {
-
- public static RegionWrapper build() {
- return new RegionWrapper();
- }
-
- @Override
- public RegionVO entityVO(Region region) {
- RegionVO regionVO = Objects.requireNonNull(BeanUtil.copy(region, RegionVO.class));
- Region parentRegion = RegionCache.getByCode(region.getParentCode());
- regionVO.setParentName(parentRegion.getName());
- return regionVO;
- }
-
- public List<RegionVO> listNodeLazyVO(List<RegionVO> list) {
- return ForestNodeMerger.merge(list);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java
deleted file mode 100644
index 33050f0..0000000
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/wrapper/RoleWrapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.system.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Role;
-import org.springblade.system.vo.RoleVO;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class RoleWrapper extends BaseEntityWrapper<Role, RoleVO> {
-
- public static RoleWrapper build() {
- return new RoleWrapper();
- }
-
- @Override
- public RoleVO entityVO(Role role) {
- RoleVO roleVO = Objects.requireNonNull(BeanUtil.copy(role, RoleVO.class));
- if (Func.equals(role.getParentId(), BladeConstant.TOP_PARENT_ID)) {
- roleVO.setParentName(BladeConstant.TOP_PARENT_NAME);
- } else {
- Role parent = SysCache.getRole(role.getParentId());
- roleVO.setParentName(parent.getRoleName());
- }
- return roleVO;
- }
-
-
- public List<RoleVO> listNodeVO(List<Role> list) {
- List<RoleVO> collect = list.stream().map(this::entityVO).collect(Collectors.toList());
- return ForestNodeMerger.merge(collect);
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/pom.xml b/Source/BladeX/blade-service/blade-user/pom.xml
deleted file mode 100644
index f9e3259..0000000
--- a/Source/BladeX/blade-service/blade-user/pom.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>blade-service</artifactId>
- <groupId>org.springblade</groupId>
- <version>3.0.1.RELEASE</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-user</artifactId>
- <name>${project.artifactId}</name>
- <version>${bladex.project.version}</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-core-boot</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-excel</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-user-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-system-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.oracle.database.jdbc</groupId>
- <artifactId>ojdbc8</artifactId>
- </dependency>
- <dependency>
- <groupId>cn.easyproject</groupId>
- <artifactId>orai18n</artifactId>
- <version>${orai18n.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- <skip>false</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/UserApplication.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/UserApplication.java
deleted file mode 100644
index 903b57d..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/UserApplication.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.system.user;
-
-import org.springblade.core.cloud.client.BladeCloudApplication;
-import org.springblade.core.launch.BladeApplication;
-import org.springblade.core.launch.constant.AppConstant;
-
-/**
- * 鐢ㄦ埛鍚姩鍣�
- *
- * @author Chill
- */
-@BladeCloudApplication
-public class UserApplication {
-
- public static void main(String[] args) {
- BladeApplication.run(AppConstant.APPLICATION_USER_NAME, UserApplication.class, args);
- }
-
-}
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
deleted file mode 100644
index 48102f9..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * 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.system.user.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.common.cache.CacheNames;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.excel.util.ExcelUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.excel.UserExcel;
-import org.springblade.system.user.excel.UserImporter;
-import org.springblade.system.user.service.IUserService;
-import org.springblade.system.user.vo.UserVO;
-import org.springblade.system.user.wrapper.UserWrapper;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import springfox.documentation.annotations.ApiIgnore;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
-
-/**
- * 鎺у埗鍣�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@RequestMapping
-@AllArgsConstructor
-public class UserController {
-
- private final IUserService userService;
- private final BladeRedis bladeRedis;
-
- /**
- * 鏌ヨ鍗曟潯
- */
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "鏌ョ湅璇︽儏", notes = "浼犲叆id")
- @GetMapping("/detail")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<UserVO> detail(User user) {
- User detail = userService.getOne(Condition.getQueryWrapper(user));
- return R.data(UserWrapper.build().entityVO(detail));
- }
-
- /**
- * 鏌ヨ鍗曟潯
- */
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "鏌ョ湅璇︽儏", notes = "浼犲叆id")
- @GetMapping("/info")
- public R<UserVO> info(BladeUser user) {
- User detail = userService.getById(user.getUserId());
- return R.data(UserWrapper.build().entityVO(detail));
- }
-
- /**
- * 鐢ㄦ埛鍒楄〃
- */
- @GetMapping("/list")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "account", value = "璐﹀彿鍚�", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "realName", value = "濮撳悕", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<IPage<UserVO>> list(@ApiIgnore @RequestParam Map<String, Object> user, Query query, BladeUser bladeUser) {
- QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
- IPage<User> pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(UserWrapper.build().pageVO(pages));
- }
-
- /**
- * 鑷畾涔夌敤鎴峰垪琛�
- */
- @GetMapping("/page")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "account", value = "璐﹀彿鍚�", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "realName", value = "濮撳悕", paramType = "query", dataType = "string")
- })
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) {
- IPage<User> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
- return R.data(UserWrapper.build().pageVO(pages));
- }
-
- /**
- * 鏂板鎴栦慨鏀�
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆User")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R submit(@Valid @RequestBody User user) {
- CacheUtil.clear(USER_CACHE);
- return R.status(userService.submit(user));
- }
-
- /**
- * 淇敼
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "淇敼", notes = "浼犲叆User")
- public R update(@Valid @RequestBody User user) {
- CacheUtil.clear(USER_CACHE);
- return R.status(userService.updateUser(user));
- }
-
- /**
- * 鍒犻櫎
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆id闆嗗悎")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R remove(@RequestParam String ids) {
- CacheUtil.clear(USER_CACHE);
- return R.status(userService.removeUser(ids));
- }
-
- /**
- * 璁剧疆鑿滃崟鏉冮檺
- */
- @PostMapping("/grant")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R grant(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds,
- @ApiParam(value = "roleId闆嗗悎", required = true) @RequestParam String roleIds) {
- boolean temp = userService.grant(userIds, roleIds);
- return R.status(temp);
- }
-
- /**
- * 瀵嗙爜閲嶅埗
- */
- @PostMapping("/reset-password")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "鍒濆鍖栧瘑鐮�", notes = "浼犲叆userId闆嗗悎")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R resetPassword(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds) {
- boolean temp = userService.resetPassword(userIds);
- return R.status(temp);
- }
-
- /**
- * 淇敼瀵嗙爜
- */
- @PostMapping("/update-password")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "淇敼瀵嗙爜", notes = "浼犲叆瀵嗙爜")
- public R updatePassword(BladeUser user, @ApiParam(value = "鏃у瘑鐮�", required = true) @RequestParam String oldPassword,
- @ApiParam(value = "鏂板瘑鐮�", required = true) @RequestParam String newPassword,
- @ApiParam(value = "鏂板瘑鐮�", required = true) @RequestParam String newPassword1) {
- boolean temp = userService.updatePassword(user.getUserId(), oldPassword, newPassword, newPassword1);
- return R.status(temp);
- }
-
- /**
- * 淇敼鍩烘湰淇℃伅
- */
- @PostMapping("/update-info")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "淇敼鍩烘湰淇℃伅", notes = "浼犲叆User")
- public R updateInfo(@Valid @RequestBody User user) {
- CacheUtil.clear(USER_CACHE);
- return R.status(userService.updateUserInfo(user));
- }
-
- /**
- * 鐢ㄦ埛鍒楄〃
- */
- @GetMapping("/user-list")
- @ApiOperationSupport(order = 11)
- @ApiOperation(value = "鐢ㄦ埛鍒楄〃", notes = "浼犲叆user")
- public R<List<User>> userList(User user, BladeUser bladeUser) {
- QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user);
- List<User> list = userService.list((!AuthUtil.isAdministrator()) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
- return R.data(list);
- }
-
- /**
- * 瀵煎叆鐢ㄦ埛
- */
- @PostMapping("import-user")
- @ApiOperationSupport(order = 12)
- @ApiOperation(value = "瀵煎叆鐢ㄦ埛", notes = "浼犲叆excel")
- public R importUser(MultipartFile file, Integer isCovered) {
- UserImporter userImporter = new UserImporter(userService, isCovered == 1);
- ExcelUtil.save(file, userImporter, UserExcel.class);
- return R.success("鎿嶄綔鎴愬姛");
- }
-
- /**
- * 瀵煎嚭鐢ㄦ埛
- */
- @GetMapping("export-user")
- @ApiOperationSupport(order = 13)
- @ApiOperation(value = "瀵煎嚭鐢ㄦ埛", notes = "浼犲叆user")
- public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) {
- QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
- if (!AuthUtil.isAdministrator()) {
- queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId());
- }
- queryWrapper.lambda().eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED);
- List<UserExcel> list = userService.exportUser(queryWrapper);
- ExcelUtil.export(response, "鐢ㄦ埛鏁版嵁" + DateUtil.time(), "鐢ㄦ埛鏁版嵁琛�", list, UserExcel.class);
- }
-
- /**
- * 瀵煎嚭妯℃澘
- */
- @GetMapping("export-template")
- @ApiOperationSupport(order = 14)
- @ApiOperation(value = "瀵煎嚭妯℃澘")
- public void exportUser(HttpServletResponse response) {
- List<UserExcel> list = new ArrayList<>();
- ExcelUtil.export(response, "鐢ㄦ埛鏁版嵁妯℃澘", "鐢ㄦ埛鏁版嵁琛�", list, UserExcel.class);
- }
-
-
- /**
- * 绗笁鏂规敞鍐岀敤鎴�
- */
- @PostMapping("/register-guest")
- @ApiOperationSupport(order = 15)
- @ApiOperation(value = "绗笁鏂规敞鍐岀敤鎴�", notes = "浼犲叆user")
- public R registerGuest(User user, Long oauthId) {
- return R.status(userService.registerGuest(user, oauthId));
- }
-
-
- /**
- * 閰嶇疆鐢ㄦ埛骞冲彴淇℃伅
- */
- @PostMapping("/update-platform")
- @ApiOperationSupport(order = 16)
- @ApiOperation(value = "閰嶇疆鐢ㄦ埛骞冲彴淇℃伅", notes = "浼犲叆user")
- public R updatePlatform(Long userId, Integer userType, String userExt) {
- return R.status(userService.updatePlatform(userId, userType, userExt));
- }
-
- /**
- * 鏌ョ湅骞冲彴璇︽儏
- */
- @ApiOperationSupport(order = 17)
- @ApiOperation(value = "鏌ョ湅骞冲彴璇︽儏", notes = "浼犲叆id")
- @GetMapping("/platform-detail")
- //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
- public R<UserVO> platformDetail(User user) {
- return R.data(userService.platformDetail(user));
- }
-
-
- /**
- * 鐢ㄦ埛鍒楄〃鏌ヨ
- */
- @ApiImplicitParams({
- @ApiImplicitParam(name = "name", value = "浜哄憳濮撳悕", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "postName", value = "鑱屼綅鍚嶇О", paramType = "query", dataType = "string"),
- @ApiImplicitParam(name = "current", value = "褰撳墠椤垫暟", paramType = "query", dataType = "int"),
- @ApiImplicitParam(name = "size", value = "姣忛〉鏁伴噺", paramType = "query", dataType = "int")
- })
- @ApiOperationSupport(order = 18)
- @ApiOperation(value = "鐢ㄦ埛鍒楄〃鏌ヨ", notes = "鐢ㄦ埛鍒楄〃鏌ヨ")
- @GetMapping("/search/user")
- public R<IPage<UserVO>> userSearch(@ApiIgnore UserVO user, @ApiIgnore Query query) {
- return R.data(userService.selectUserSearch(user, query));
- }
-
- /**
- * 鐢ㄦ埛瑙i攣
- */
- @PostMapping("/unlock")
- @ApiOperationSupport(order = 19)
- @ApiOperation(value = "璐﹀彿瑙i攣", notes = "浼犲叆id")
- public R unlock(String userIds) {
- if (StringUtil.isBlank(userIds)) {
- return R.fail("璇疯嚦灏戦�夋嫨涓�涓敤鎴�");
- }
- List<User> userList = userService.list(Wrappers.<User>lambdaQuery().in(User::getId, Func.toLongList(userIds)));
- userList.forEach(user -> bladeRedis.del(CacheNames.tenantKey(user.getTenantId(), CacheNames.USER_FAIL_KEY, user.getAccount())));
- return R.success("鎿嶄綔鎴愬姛");
- }
-
- /**
- * 鐢ㄦ埛瑙i攣
- */
- @PostMapping("/check-renexpr")
- @ApiOperationSupport(order = 20)
- @ApiOperation(value = "鏌ヨ鐢ㄦ埛瀵嗙爜绛栫暐鏄惁闇�瑕佹彁閱�", notes = "浼犲叆id")
- 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/excel/UserExcel.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/excel/UserExcel.java
deleted file mode 100644
index 0ed691d..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/excel/UserExcel.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.system.user.excel;
-
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
-import com.alibaba.excel.annotation.write.style.ContentRowHeight;
-import com.alibaba.excel.annotation.write.style.HeadRowHeight;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * UserExcel
- *
- * @author Chill
- */
-@Data
-@ColumnWidth(25)
-@HeadRowHeight(20)
-@ContentRowHeight(18)
-public class UserExcel implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @ColumnWidth(15)
- @ExcelProperty("绉熸埛缂栧彿")
- private String tenantId;
-
- @ExcelIgnore
- @ExcelProperty("鐢ㄦ埛骞冲彴")
- private String userType;
-
- @ColumnWidth(20)
- @ExcelProperty("鐢ㄦ埛骞冲彴鍚嶇О")
- private String userTypeName;
-
- @ColumnWidth(15)
- @ExcelProperty("璐︽埛")
- private String account;
-
- @ColumnWidth(10)
- @ExcelProperty("鏄电О")
- private String name;
-
- @ColumnWidth(10)
- @ExcelProperty("濮撳悕")
- private String realName;
-
- @ExcelProperty("閭")
- private String email;
-
- @ColumnWidth(15)
- @ExcelProperty("鎵嬫満")
- private String phone;
-
- @ExcelIgnore
- @ExcelProperty("瑙掕壊ID")
- private String roleId;
-
- @ExcelIgnore
- @ExcelProperty("閮ㄩ棬ID")
- private String deptId;
-
- @ExcelIgnore
- @ExcelProperty("宀椾綅ID")
- private String postId;
-
- @ExcelProperty("瑙掕壊鍚嶇О")
- private String roleName;
-
- @ExcelProperty("閮ㄩ棬鍚嶇О")
- private String deptName;
-
- @ExcelProperty("宀椾綅鍚嶇О")
- private String postName;
-
- @ColumnWidth(20)
- @ExcelProperty("鐢熸棩")
- private Date birthday;
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/excel/UserImporter.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/excel/UserImporter.java
deleted file mode 100644
index 0f450d9..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/excel/UserImporter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.system.user.excel;
-
-import lombok.RequiredArgsConstructor;
-import org.springblade.core.excel.support.ExcelImporter;
-import org.springblade.system.user.service.IUserService;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛鏁版嵁瀵煎叆绫�
- *
- * @author Chill
- */
-@RequiredArgsConstructor
-public class UserImporter implements ExcelImporter<UserExcel> {
-
- private final IUserService service;
- private final Boolean isCovered;
-
- @Override
- public void save(List<UserExcel> data) {
- service.importUser(data, isCovered);
- }
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
deleted file mode 100644
index 7081387..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.system.user.feign;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.entity.UserInfo;
-import org.springblade.system.user.entity.UserOauth;
-import org.springblade.system.user.enums.UserEnum;
-import org.springblade.system.user.service.IUserService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-public class UserClient implements IUserClient {
-
- private final IUserService service;
-
- @Override
- @GetMapping(USER_INFO_BY_ID)
- public R<User> userInfoById(Long userId) {
- return R.data(service.getById(userId));
- }
-
- @Override
- @GetMapping(USER_INFO_BY_ACCOUNT)
- public R<User> userByAccount(String tenantId, String account) {
- return R.data(service.userByAccount(tenantId, account));
- }
-
- @Override
- @GetMapping(USER_INFO)
- public R<UserInfo> userInfo(String tenantId, String account) {
- return R.data(service.userInfo(tenantId, account));
- }
-
- @Override
- @GetMapping(USER_INFO_BY_TYPE)
- public R<UserInfo> userInfo(String tenantId, String account, String userType) {
- return R.data(service.userInfo(tenantId, account, UserEnum.of(userType)));
- }
-
- @Override
- @PostMapping(USER_AUTH_INFO)
- public R<UserInfo> userAuthInfo(@RequestBody UserOauth userOauth) {
- return R.data(service.userInfo(userOauth));
- }
-
- @Override
- @PostMapping(SAVE_USER)
- public R<Boolean> saveUser(@RequestBody User user) {
- return R.data(service.submit(user));
- }
-
- @Override
- @PostMapping(SAVE_USER_LIST)
- public R<Boolean> saveUserList(List<User> users) {
- return R.data(service.submitList(users));
- }
-
- @Override
- @PostMapping(REMOVE_USER)
- public R<Boolean> removeUser(String tenantIds) {
- return R.data(service.remove(Wrappers.<User>query().lambda().in(User::getTenantId, Func.toStrList(tenantIds))));
- }
-
- @Override
- @PostMapping(UPDATE_USER)
- public R<Boolean> updateUser(@RequestBody User user) {
- return R.data(service.updateUser(user));
- }
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserSearchClient.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserSearchClient.java
deleted file mode 100644
index 3961115..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserSearchClient.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.system.user.feign;
-
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.service.IUserSearchService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛鏌ヨ鏈嶅姟Feign瀹炵幇绫�
- *
- * @author Chill
- */
-@NonDS
-@RestController
-@AllArgsConstructor
-public class UserSearchClient implements IUserSearchClient {
-
- private final IUserSearchService service;
-
- @Override
- @GetMapping(LIST_BY_USER)
- public R<List<User>> listByUser(String userId) {
- return R.data(service.listByUser(Func.toLongList(userId)));
- }
-
- @Override
- @GetMapping(LIST_BY_DEPT)
- public R<List<User>> listByDept(String deptId) {
- return R.data(service.listByDept(Func.toLongList(deptId)));
- }
-
- @Override
- @GetMapping(LIST_BY_POST)
- public R<List<User>> listByPost(String postId) {
- return R.data(service.listByPost(Func.toLongList(postId)));
- }
-
- @Override
- @GetMapping(LIST_BY_ROLE)
- public R<List<User>> listByRole(String roleId) {
- return R.data(service.listByRole(Func.toLongList(roleId)));
- }
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.java
deleted file mode 100644
index feae073..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.user.entity.UserApp;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserAppMapper extends BaseMapper<UserApp> {
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.xml
deleted file mode 100644
index 321d2df..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserAppMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.user.mapper.UserAppMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.java
deleted file mode 100644
index a8bf6bd..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.user.entity.UserDept;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserDeptMapper extends BaseMapper<UserDept> {
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.xml
deleted file mode 100644
index e5b4723..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserDeptMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.user.mapper.UserDeptMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java
deleted file mode 100644
index 30a83db..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.apache.ibatis.annotations.Param;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.excel.UserExcel;
-
-import java.util.List;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserMapper extends BaseMapper<User> {
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param user
- * @param deptIdList
- * @param tenantId
- * @return
- */
- List<User> selectUserPage(IPage<User> page, @Param("user") User user, @Param("deptIdList") List<Long> deptIdList, @Param("tenantId") String tenantId);
-
- /**
- * 鑾峰彇鐢ㄦ埛
- *
- * @param tenantId
- * @param account
- * @return
- */
- User getUser(String tenantId, String account);
-
- /**
- * 鑾峰彇瀵煎嚭鐢ㄦ埛鏁版嵁
- *
- * @param queryWrapper
- * @return
- */
- List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
deleted file mode 100644
index 9c1b7c3..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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.system.user.mapper.UserMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="userResultMap" type="org.springblade.system.user.entity.User">
- <result column="id" property="id"/>
- <result column="tenant_id" property="tenantId"/>
- <result column="create_user" property="createUser"/>
- <result column="create_time" property="createTime"/>
- <result column="update_user" property="updateUser"/>
- <result column="update_time" property="updateTime"/>
- <result column="status" property="status"/>
- <result column="is_deleted" property="isDeleted"/>
- <result column="code" property="code"/>
- <result column="user_type" property="userType"/>
- <result column="account" property="account"/>
- <result column="password" property="password"/>
- <result column="name" property="name"/>
- <result column="real_name" property="realName"/>
- <result column="email" property="email"/>
- <result column="phone" property="phone"/>
- <result column="birthday" property="birthday"/>
- <result column="sex" property="sex"/>
- <result column="role_id" property="roleId"/>
- <result column="dept_id" property="deptId"/>
- <result column="post_id" property="postId"/>
- <result column="strategy_name" property="pwdStrategy"/>
- <result column="pwd_update_time" property="pwdUpdateTime"/>
- <result column="secretgrade" property="secretgrade"/>
- <result column="strategy_update_status" property="strategyUpdateStatus"/>
- </resultMap>
-
-
- <select id="selectUserPage" resultMap="userResultMap">
- SELECT
- pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name
- FROM pl_org_user pou
- LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
- LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
- WHERE is_deleted = 0
- <if test="tenantId!=null and tenantId != ''">
- and tenant_id = #{tenantId}
- </if>
- <if test="user.tenantId!=null and user.tenantId != ''">
- and tenant_id = #{user.tenantId}
- </if>
- <if test="user.account!=null and user.account != ''">
- and account = #{user.account}
- </if>
- <if test="user.realName!=null and user.realName != ''">
- and real_name = #{user.realName}
- </if>
- <if test="user.userType!=null and user.userType != ''">
- and user_type = #{user.userType}
- </if>
- <if test="deptIdList!=null and deptIdList.size>0">
- and pou.id in (
- SELECT
- user_id
- FROM
- pl_org_user_dept poud
- WHERE
- dept_id IN
- <foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- )
- </if>
- ORDER BY pou.id
- </select>
-
- <select id="getUser" resultMap="userResultMap">
- SELECT
- pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name
- FROM pl_org_user pou
- LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
- LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
- WHERE
- tenant_id = #{param1} and account = #{param2} and is_deleted = 0
- </select>
-
- <select id="exportUser" resultType="org.springblade.system.user.excel.UserExcel">
- SELECT
- pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name
- FROM pl_org_user pou
- LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
- LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
- ${ew.customSqlSegment}
- </select>
-
- <select id="selectByIdUser" resultType="org.springblade.system.user.entity.User">
- select id, code, user_type, account, password , name, real_name, avatar, email, phone , birthday, sex, role_id, dept_id, post_id , pwd_update_time, secretgrade, strategy_update_status, tenant_id, create_user , create_dept, create_time, update_user, update_time, status , is_deleted
- from pl_org_user
- where id = #{userId} and is_deleted = 0
- </select>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.java
deleted file mode 100644
index edaa704..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.user.entity.UserOauth;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserOauthMapper extends BaseMapper<UserOauth> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.xml
deleted file mode 100644
index c1ccf8d..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOauthMapper.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.system.user.mapper.UserOauthMapper">
-
- <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
- <resultMap id="userResultMap" type="org.springblade.system.user.entity.UserOauth">
- <result column="id" property="id"/>
- <result column="tenant_id" property="tenantId"/>
- <result column="user_id" property="userId"/>
- <result column="username" property="username"/>
- <result column="nickname" property="nickname"/>
- <result column="avatar" property="avatar"/>
- <result column="blog" property="blog"/>
- <result column="company" property="company"/>
- <result column="location" property="location"/>
- <result column="email" property="email"/>
- <result column="remark" property="remark"/>
- <result column="gender" property="gender"/>
- <result column="source" property="source"/>
- </resultMap>
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.java
deleted file mode 100644
index f7a9c69..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.user.entity.UserOther;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserOtherMapper extends BaseMapper<UserOther> {
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.xml
deleted file mode 100644
index 3cde6e2..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserOtherMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.user.mapper.UserOtherMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.java
deleted file mode 100644
index 735aeaa..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.system.user.entity.UserWeb;
-
-/**
- * Mapper 鎺ュ彛
- *
- * @author Chill
- */
-public interface UserWebMapper extends BaseMapper<UserWeb> {
-
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.xml
deleted file mode 100644
index 687ffc1..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserWebMapper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?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.system.user.mapper.UserWebMapper">
-
-</mapper>
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserDeptService.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserDeptService.java
deleted file mode 100644
index cc1d8df..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserDeptService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.user.entity.UserDept;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IUserDeptService extends IService<UserDept> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserOauthService.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserOauthService.java
deleted file mode 100644
index 4c0dd98..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserOauthService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.system.user.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.system.user.entity.UserOauth;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IUserOauthService extends IService<UserOauth> {
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserSearchService.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserSearchService.java
deleted file mode 100644
index 112712c..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserSearchService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.system.user.service;
-
-
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.system.user.entity.User;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛鏌ヨ鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IUserSearchService extends BaseService<User> {
-
- /**
- * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param userId 鐢ㄦ埛ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- List<User> listByUser(List<Long> userId);
-
- /**
- * 鏍规嵁閮ㄩ棬ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param deptId 閮ㄩ棬ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- List<User> listByDept(List<Long> deptId);
-
- /**
- * 鏍规嵁宀椾綅ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param postId 宀椾綅ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- List<User> listByPost(List<Long> postId);
-
- /**
- * 鏍规嵁瑙掕壊ID鏌ヨ鐢ㄦ埛鍒楄〃
- *
- * @param roleId 瑙掕壊ID
- * @return 鐢ㄦ埛鍒楄〃
- */
- List<User> listByRole(List<Long> roleId);
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
deleted file mode 100644
index ef74d82..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * 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.system.user.service;
-
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.core.mp.base.BaseService;
-import org.springblade.core.mp.support.Query;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.entity.UserInfo;
-import org.springblade.system.user.entity.UserOauth;
-import org.springblade.system.user.enums.UserEnum;
-import org.springblade.system.user.excel.UserExcel;
-import org.springblade.system.user.vo.UserVO;
-
-import java.util.List;
-
-/**
- * 鏈嶅姟绫�
- *
- * @author Chill
- */
-public interface IUserService extends BaseService<User> {
-
- /**
- * 鏂板鐢ㄦ埛
- *
- * @param user
- * @return
- */
- boolean submit(User user);
-
- /**
- * 鎵归噺鏂板鐢ㄦ埛
- *
- * @param users
- * @return
- */
- boolean submitList(List<User> users);
-
- /**
- * 淇敼鐢ㄦ埛
- *
- * @param user
- * @return
- */
- boolean updateUser(User user);
-
- /**
- * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
- *
- * @param user
- * @return
- */
- boolean updateUserInfo(User user);
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param page
- * @param user
- * @param deptId
- * @param tenantId
- * @return
- */
- IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId);
-
- /**
- * 鑷畾涔夊垎椤�
- *
- * @param user
- * @param query
- * @return
- */
- IPage<UserVO> selectUserSearch(UserVO user, Query query);
-
-
- /**
- * 鐢ㄦ埛淇℃伅
- *
- * @param userId
- * @return
- */
- UserInfo userInfo(Long userId);
-
- /**
- * 鐢ㄦ埛淇℃伅
- *
- * @param tenantId
- * @param account
- * @return
- */
- UserInfo userInfo(String tenantId, String account);
-
- /**
- * 鐢ㄦ埛淇℃伅
- *
- * @param tenantId
- * @param account
- * @param userEnum
- * @return
- */
- UserInfo userInfo(String tenantId, String account, UserEnum userEnum);
-
- /**
- * 鐢ㄦ埛淇℃伅
- *
- * @param userOauth
- * @return
- */
- UserInfo userInfo(UserOauth userOauth);
-
- /**
- * 鏍规嵁璐﹀彿鑾峰彇鐢ㄦ埛
- *
- * @param tenantId
- * @param account
- * @return
- */
- User userByAccount(String tenantId, String account);
-
- /**
- * 缁欑敤鎴疯缃鑹�
- *
- * @param userIds
- * @param roleIds
- * @return
- */
- boolean grant(String userIds, String roleIds);
-
- /**
- * 鍒濆鍖栧瘑鐮�
- *
- * @param userIds
- * @return
- */
- boolean resetPassword(String userIds);
-
- /**
- * 淇敼瀵嗙爜
- *
- * @param userId
- * @param oldPassword
- * @param newPassword
- * @param newPassword1
- * @return
- */
- boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1);
-
- /**
- * 鍒犻櫎鐢ㄦ埛
- *
- * @param userIds
- * @return
- */
- boolean removeUser(String userIds);
-
- /**
- * 瀵煎叆鐢ㄦ埛鏁版嵁
- *
- * @param data
- * @param isCovered
- * @return
- */
- void importUser(List<UserExcel> data, Boolean isCovered);
-
- /**
- * 瀵煎嚭鐢ㄦ埛鏁版嵁
- *
- * @param queryWrapper
- * @return
- */
- List<UserExcel> exportUser(Wrapper<User> queryWrapper);
-
- /**
- * 娉ㄥ唽鐢ㄦ埛
- *
- * @param user
- * @param oauthId
- * @return
- */
- boolean registerGuest(User user, Long oauthId);
-
- /**
- * 閰嶇疆鐢ㄦ埛骞冲彴
- *
- * @param userId
- * @param userType
- * @param userExt
- * @return
- */
- boolean updatePlatform(Long userId, Integer userType, String userExt);
-
- /**
- * 鐢ㄦ埛璇︾粏淇℃伅
- *
- * @param user
- * @return
- */
- UserVO platformDetail(User user);
-
- /**
- * 妫�鏌ョ敤鎴锋槸鍚﹀埌浜嗘彁閱掔敤鎴蜂慨鏀瑰瘑鐮佹垨鑰呭瘑鐮佽繃鏈熺殑鏃堕棿
- *
- */
- Long checkRenAndExpr(Long userId);
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserDeptServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserDeptServiceImpl.java
deleted file mode 100644
index 3ab95db..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserDeptServiceImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.system.user.service.impl;
-
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.system.user.entity.UserDept;
-import org.springblade.system.user.mapper.UserDeptMapper;
-import org.springblade.system.user.service.IUserDeptService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class UserDeptServiceImpl extends ServiceImpl<UserDeptMapper, UserDept> implements IUserDeptService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserOauthServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserOauthServiceImpl.java
deleted file mode 100644
index 59c9c84..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserOauthServiceImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.system.user.service.impl;
-
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.AllArgsConstructor;
-import org.springblade.system.user.entity.UserOauth;
-import org.springblade.system.user.mapper.UserOauthMapper;
-import org.springblade.system.user.service.IUserOauthService;
-import org.springframework.stereotype.Service;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@AllArgsConstructor
-public class UserOauthServiceImpl extends ServiceImpl<UserOauthMapper, UserOauth> implements IUserOauthService {
-
-}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserSearchServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserSearchServiceImpl.java
deleted file mode 100644
index d934ce2..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserSearchServiceImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.system.user.service.impl;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.mapper.UserMapper;
-import org.springblade.system.user.service.IUserSearchService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 鐢ㄦ埛鏌ヨ鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@AllArgsConstructor
-public class UserSearchServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserSearchService {
-
- @Override
- public List<User> listByUser(List<Long> userId) {
- return this.list(Wrappers.<User>lambdaQuery().in(User::getId, userId));
- }
-
- @Override
- public List<User> listByDept(List<Long> deptId) {
- LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
- deptId.forEach(id -> queryWrapper.like(User::getDeptId, id).or());
- return this.list(queryWrapper);
- }
-
- @Override
- public List<User> listByPost(List<Long> postId) {
- LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
- postId.forEach(id -> queryWrapper.like(User::getPostId, id).or());
- return this.list(queryWrapper);
- }
-
- @Override
- public List<User> listByRole(List<Long> roleId) {
- LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
- roleId.forEach(id -> queryWrapper.like(User::getRoleId, id).or());
- return this.list(queryWrapper);
- }
-}
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
deleted file mode 100644
index 6e92d92..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * 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.system.user.service.impl;
-
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
-import org.springblade.common.constant.CommonConstant;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tenant.BladeTenantProperties;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.*;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.cache.ParamCache;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Strategy;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.feign.ISysClient;
-import org.springblade.system.user.cache.UserCache;
-import org.springblade.system.user.entity.*;
-import org.springblade.system.user.enums.UserEnum;
-import org.springblade.system.user.excel.UserExcel;
-import org.springblade.system.user.mapper.UserMapper;
-import org.springblade.system.user.service.IUserDeptService;
-import org.springblade.system.user.service.IUserOauthService;
-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;
-
-import java.util.*;
-
-import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-@RequiredArgsConstructor
-public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
- private static final String GUEST_NAME = "guest";
-
- private final IUserDeptService userDeptService;
- 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)
- public boolean submit(User user) {
- if (StringUtil.isBlank(user.getTenantId())) {
- user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
- }
- String tenantId = user.getTenantId();
- //Tenant tenant = SysCache.getTenant(tenantId);
- if (Func.isNotEmpty(user.getPassword())) {
- user.setPassword(DigestUtil.encrypt(user.getPassword()));
- }
- Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount()));
- if (userCount > 0L && Func.isEmpty(user.getId())) {
- throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
- }
- return save(user) && submitUserDept(user);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean submitList(List<User> users) {
- Boolean flag = true;
- for (User user : users){
- if (StringUtil.isBlank(user.getTenantId())) {
- user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
- }
- String tenantId = user.getTenantId();
- if (Func.isNotEmpty(user.getPassword())) {
- user.setPassword(DigestUtil.encrypt(user.getPassword()));
- }
- Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount()));
- if (userCount > 0L && Func.isEmpty(user.getId())) {
- throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
- }
- flag = save(user) && submitUserDept(user);
-
- }
- return flag;
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean updateUser(User user) {
- String tenantId = user.getTenantId();
- Long userCount = baseMapper.selectCount(
- Wrappers.<User>query().lambda()
- .eq(User::getTenantId, tenantId)
- .eq(User::getAccount, user.getAccount())
- .notIn(User::getId, user.getId())
- );
- if (userCount > 0L) {
- throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
- }
- return updateUserInfo(user) && submitUserDept(user);
- }
-
- @Override
- public boolean updateUserInfo(User user) {
- user.setPassword(null);
- return updateById(user);
- }
-
- private boolean submitUserDept(User user) {
- List<Long> deptIdList = Func.toLongList(user.getDeptId());
- List<UserDept> userDeptList = new ArrayList<>();
- deptIdList.forEach(deptId -> {
- UserDept userDept = new UserDept();
- userDept.setUserId(user.getId());
- userDept.setDeptId(deptId);
- userDeptList.add(userDept);
- });
- userDeptService.remove(Wrappers.<UserDept>update().lambda().eq(UserDept::getUserId, user.getId()));
- return userDeptService.saveBatch(userDeptList);
- }
-
- @Override
- public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
- List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
- return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
- }
-
- @Override
- public IPage<UserVO> selectUserSearch(UserVO user, Query query) {
- LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>query().lambda();
- String tenantId = AuthUtil.getTenantId();
- if (StringUtil.isNotBlank(tenantId)) {
- queryWrapper.eq(User::getTenantId, tenantId);
- }
- if (StringUtil.isNotBlank(user.getName())) {
- queryWrapper.like(User::getName, user.getName());
- }
- if (StringUtil.isNotBlank(user.getDeptName())) {
- String deptIds = SysCache.getDeptIdsByFuzzy(AuthUtil.getTenantId(), user.getDeptName());
- if (StringUtil.isNotBlank(deptIds)) {
- queryWrapper.and(wrapper -> {
- List<String> ids = Func.toStrList(deptIds);
- ids.forEach(id -> wrapper.like(User::getDeptId, id).or());
- });
- }
- }
- if (StringUtil.isNotBlank(user.getPostName())) {
- String postIds = SysCache.getPostIdsByFuzzy(AuthUtil.getTenantId(), user.getPostName());
- if (StringUtil.isNotBlank(postIds)) {
- queryWrapper.and(wrapper -> {
- List<String> ids = Func.toStrList(postIds);
- ids.forEach(id -> wrapper.like(User::getPostId, id).or());
- });
- }
- }
- IPage<User> pages = this.page(Condition.getPage(query), queryWrapper);
- return UserWrapper.build().pageVO(pages);
- }
-
- @Override
- public User userByAccount(String tenantId, String account) {
- return baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, account).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));
- }
-
- @Override
- public UserInfo userInfo(Long userId) {
- User user = baseMapper.selectById(userId);
- return buildUserInfo(user);
- }
-
- @Override
- public UserInfo userInfo(String tenantId, String account) {
- User user = baseMapper.getUser(tenantId, account);
- return buildUserInfo(user);
- }
-
- @Override
- public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) {
- User user = baseMapper.getUser(tenantId, account);
- return buildUserInfo(user, userEnum);
- }
-
- private UserInfo buildUserInfo(User user) {
- return buildUserInfo(user, UserEnum.WEB);
- }
-
- private UserInfo buildUserInfo(User user, UserEnum userEnum) {
- if (ObjectUtil.isEmpty(user)) {
- return null;
- }
- UserInfo userInfo = new UserInfo();
- userInfo.setUser(user);
- if (Func.isNotEmpty(user)) {
- R<List<String>> result = sysClient.getRoleAliases(user.getRoleId());
- if (result.isSuccess()) {
- List<String> roleAlias = result.getData();
- userInfo.setRoles(roleAlias);
- }
- }
- // 鏍规嵁姣忎釜鐢ㄦ埛骞冲彴锛屽缓绔嬪搴旂殑detail琛紝閫氳繃鏌ヨ灏嗙粨鏋滈泦鍐欏叆鍒癲etail瀛楁
- Kv detail = Kv.create().set("type", userEnum.getName());
- if (userEnum == UserEnum.WEB) {
- UserWeb userWeb = new UserWeb();
- UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- detail.set("ext", query.getUserExt());
- }
- } else if (userEnum == UserEnum.APP) {
- UserApp userApp = new UserApp();
- UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- detail.set("ext", query.getUserExt());
- }
- } else {
- UserOther userOther = new UserOther();
- UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- detail.set("ext", query.getUserExt());
- }
- }
- userInfo.setDetail(detail);
- return userInfo;
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public UserInfo userInfo(UserOauth userOauth) {
- UserOauth uo = userOauthService.getOne(Wrappers.<UserOauth>query().lambda().eq(UserOauth::getUuid, userOauth.getUuid()).eq(UserOauth::getSource, userOauth.getSource()));
- UserInfo userInfo;
- if (Func.isNotEmpty(uo) && Func.isNotEmpty(uo.getUserId())) {
- userInfo = this.userInfo(uo.getUserId());
- userInfo.setOauthId(Func.toStr(uo.getId()));
- } else {
- userInfo = new UserInfo();
- if (Func.isEmpty(uo)) {
- userOauthService.save(userOauth);
- userInfo.setOauthId(Func.toStr(userOauth.getId()));
- } else {
- userInfo.setOauthId(Func.toStr(uo.getId()));
- }
- User user = new User();
- user.setAccount(userOauth.getUsername());
- user.setTenantId(userOauth.getTenantId());
- userInfo.setUser(user);
- userInfo.setRoles(Collections.singletonList(GUEST_NAME));
- }
- return userInfo;
- }
-
- @Override
- public boolean grant(String userIds, String roleIds) {
- User user = new User();
- user.setRoleId(roleIds);
- return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
- }
-
- @Override
- public boolean resetPassword(String userIds) {
- User user = new User();
- user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
- user.setUpdateTime(DateUtil.now());
- return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
- }
-
- @Override
- public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1) {
- User user = getById(userId);
- if (!newPassword.equals(newPassword1)) {
- throw new ServiceException("璇疯緭鍏ユ纭殑纭瀵嗙爜!");
- }
- if (!user.getPassword().equals(DigestUtil.hex(oldPassword))) {
- throw new ServiceException("鍘熷瘑鐮佷笉姝g‘!");
- }
- //鑾峰彇鐢ㄦ埛閲囩敤鐨勫瘑鐮佺瓥鐣�
- Strategy strategy = sysClient.getByUserId(userId).getData();
- //瀵嗙爜闀垮害鏍¢獙
- if(newPassword1.length() < strategy.getMinPwdLen() || newPassword1.length() > strategy.getMaxPwdLen()){
- throw new ServiceException("瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴");
- }
- List<String> regexs = sysClient.getRegexByList(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
- //鍒ゆ柇鏄惁婊¤冻缁勫悎鏂瑰紡涓殑蹇呭~绉嶇被鏁�
- int reqType = 0;
- for (int i = 0; i < regexs.size(); i++) {
- if(reqType>=strategy.getRequiredType()){
- break;
- }
- if(!Func.isEmpty(RegexUtil.findResult(regexs.get(i),newPassword1))){
- reqType++;
- }
- }
- String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠绫诲瀷锛岃閲嶆柊杈撳叆瀵嗙爜锛�";
- if(reqType<strategy.getRequiredType()){
- throw new ServiceException(resException);
- }
- // 鏄惁灞炰簬缁勫悎鏂瑰紡涓殑绫诲瀷
- String regex = sysClient.getRegex(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
- regex = "^"+regex+"{"+strategy.getRequiredType()+",}$";
- boolean result = RegexUtil.find(regex, newPassword1);
- 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));
- }
-
- @Override
- public boolean removeUser(String userIds) {
- if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) {
- throw new ServiceException("涓嶈兘鍒犻櫎鏈处鍙�!");
- }
- return deleteLogic(Func.toLongList(userIds));
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void importUser(List<UserExcel> data, Boolean isCovered) {
- data.forEach(userExcel -> {
- User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
- // 璁剧疆鐢ㄦ埛骞冲彴
- user.setUserType(Func.toInt(DictCache.getKey(DictEnum.USER_TYPE, userExcel.getUserTypeName()), 1));
- // 璁剧疆閮ㄩ棬ID
- user.setDeptId(Func.toStrWithEmpty(SysCache.getDeptIds(userExcel.getTenantId(), userExcel.getDeptName()), StringPool.EMPTY));
- // 璁剧疆宀椾綅ID
- user.setPostId(Func.toStrWithEmpty(SysCache.getPostIds(userExcel.getTenantId(), userExcel.getPostName()), StringPool.EMPTY));
- // 璁剧疆瑙掕壊ID
- user.setRoleId(Func.toStrWithEmpty(SysCache.getRoleIds(userExcel.getTenantId(), userExcel.getRoleName()), StringPool.EMPTY));
- // 璁剧疆绉熸埛ID
- if (!AuthUtil.isAdministrator() || StringUtil.isBlank(user.getTenantId())) {
- user.setTenantId(AuthUtil.getTenantId());
- }
- // 瑕嗙洊鏁版嵁
- if (isCovered) {
- // 鏌ヨ鐢ㄦ埛鏄惁瀛樺湪
- User oldUser = UserCache.getUser(userExcel.getTenantId(), userExcel.getAccount());
- if (oldUser != null && oldUser.getId() != null) {
- user.setId(oldUser.getId());
- this.updateUser(user);
- return;
- }
- }
- // 鑾峰彇榛樿瀵嗙爜閰嶇疆
- String initPassword = ParamCache.getValue(DEFAULT_PARAM_PASSWORD);
- user.setPassword(initPassword);
- this.submit(user);
- });
- }
-
- @Override
- public List<UserExcel> exportUser(Wrapper<User> queryWrapper) {
- List<UserExcel> userList = baseMapper.exportUser(queryWrapper);
- userList.forEach(user -> {
- user.setUserTypeName(DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()));
- user.setRoleName(StringUtil.join(SysCache.getRoleNames(user.getRoleId())));
- user.setDeptName(StringUtil.join(SysCache.getDeptNames(user.getDeptId())));
- user.setPostName(StringUtil.join(SysCache.getPostNames(user.getPostId())));
- });
- return userList;
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean registerGuest(User user, Long oauthId) {
- Tenant tenant = SysCache.getTenant(user.getTenantId());
- if (tenant == null || tenant.getId() == null) {
- throw new ServiceException("绉熸埛淇℃伅閿欒!");
- }
- UserOauth userOauth = userOauthService.getById(oauthId);
- if (userOauth == null || userOauth.getId() == null) {
- throw new ServiceException("绗笁鏂圭櫥闄嗕俊鎭敊璇�!");
- }
- user.setRealName(user.getName());
- user.setAvatar(userOauth.getAvatar());
- user.setRoleId(StringPool.MINUS_ONE);
- user.setDeptId(StringPool.MINUS_ONE);
- user.setPostId(StringPool.MINUS_ONE);
- boolean userTemp = this.submit(user);
- userOauth.setUserId(user.getId());
- userOauth.setTenantId(user.getTenantId());
- boolean oauthTemp = userOauthService.updateById(userOauth);
- return (userTemp && oauthTemp);
- }
- @Override
- public boolean updatePlatform(Long userId, Integer userType, String userExt) {
- if (userType.equals(UserEnum.WEB.getCategory())) {
- UserWeb userWeb = new UserWeb();
- UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, userId));
- if (ObjectUtil.isNotEmpty(query)) {
- userWeb.setId(query.getId());
- }
- userWeb.setUserId(userId);
- userWeb.setUserExt(userExt);
- return userWeb.insertOrUpdate();
- } else if (userType.equals(UserEnum.APP.getCategory())) {
- UserApp userApp = new UserApp();
- UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, userId));
- if (ObjectUtil.isNotEmpty(query)) {
- userApp.setId(query.getId());
- }
- userApp.setUserId(userId);
- userApp.setUserExt(userExt);
- return userApp.insertOrUpdate();
- } else {
- UserOther userOther = new UserOther();
- UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, userId));
- if (ObjectUtil.isNotEmpty(query)) {
- userOther.setId(query.getId());
- }
- userOther.setUserId(userId);
- userOther.setUserExt(userExt);
- return userOther.insertOrUpdate();
- }
- }
-
- @Override
- public UserVO platformDetail(User user) {
- User detail = baseMapper.selectOne(Condition.getQueryWrapper(user));
- UserVO userVO = UserWrapper.build().entityVO(detail);
- if (userVO.getUserType().equals(UserEnum.WEB.getCategory())) {
- UserWeb userWeb = new UserWeb();
- UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- userVO.setUserExt(query.getUserExt());
- }
- } else if (userVO.getUserType().equals(UserEnum.APP.getCategory())) {
- UserApp userApp = new UserApp();
- UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- userVO.setUserExt(query.getUserExt());
- }
- } else {
- UserOther userOther = new UserOther();
- UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId()));
- if (ObjectUtil.isNotEmpty(query)) {
- userVO.setUserExt(query.getUserExt());
- }
- }
- return userVO;
- }
-
- @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;
- if(!Func.isEmpty(pwdUpdateTime)){
- pwdupdateday = dateToDay(pwdUpdateTime);
- }
- Strategy strategy = sysClient.getByUserId(userId).getData();
- //鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
- long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(new Date());
- //鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜
- if(reminder<=0){
- return -1L;
- }
- //鎻愰啋鐢ㄦ埛杩樻湁澶氫箙杩囨湡
- if(reminder<=strategy.getReminderTime()){
- long res = (strategy.getReminderTime()+pwdupdateday)-dateToDay(new Date());
- return res;
- }
- //浠h〃姝e父鐘舵�佽繕鏈埌鎻愰啋涓庤繃鏈熸椂闂达紝鏃笉鎻愰啋涔熶笉瑕佹眰淇敼
- 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/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java
deleted file mode 100644
index e84aff4..0000000
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.system.user.wrapper;
-
-import org.springblade.core.mp.support.BaseEntityWrapper;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.system.cache.DictCache;
-import org.springblade.system.cache.SysCache;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.enums.DictEnum;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.vo.UserVO;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
- *
- * @author Chill
- */
-public class UserWrapper extends BaseEntityWrapper<User, UserVO> {
-
- public static UserWrapper build() {
- return new UserWrapper();
- }
-
- @Override
- public UserVO entityVO(User user) {
- UserVO userVO = Objects.requireNonNull(BeanUtil.copy(user, UserVO.class));
- Tenant tenant = SysCache.getTenant(user.getTenantId());
- List<String> roleName = SysCache.getRoleNames(user.getRoleId());
- List<String> deptName = SysCache.getDeptNames(user.getDeptId());
- List<String> postName = SysCache.getPostNames(user.getPostId());
- userVO.setTenantName(tenant.getTenantName());
- userVO.setRoleName(Func.join(roleName));
- userVO.setDeptName(Func.join(deptName));
- userVO.setPostName(Func.join(postName));
- userVO.setSexName(DictCache.getValue(DictEnum.SEX, user.getSex()));
- userVO.setUserTypeName(DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()));
- return userVO;
- }
-
-}
diff --git a/Source/BladeX/blade-service/pom.xml b/Source/BladeX/blade-service/pom.xml
deleted file mode 100644
index 6920bb2..0000000
--- a/Source/BladeX/blade-service/pom.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<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>UBCS</artifactId>
- <version>3.0.1.RELEASE</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>blade-service</artifactId>
- <name>${project.artifactId}</name>
- <version>3.0.1.RELEASE</version>
- <packaging>pom</packaging>
- <description>BladeX 寰湇鍔¢泦鍚�</description>
-
- <modules>
- <module>blade-desk</module>
- <module>blade-system</module>
- <module>blade-user</module>
- <module>blade-code</module>
- <module>blade-omd</module>
- </modules>
-
- <dependencies>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-metrics</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-tenant</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-starter-api-crypto</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-dict-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-scope-api</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/Source/BladeX/pom.xml b/Source/BladeX/pom.xml
deleted file mode 100644
index 32624ed..0000000
--- a/Source/BladeX/pom.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?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">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.springblade</groupId>
- <artifactId>UBCS</artifactId>
- <version>3.0.1.RELEASE</version>
- <packaging>pom</packaging>
-
- <properties>
- <bladex.project.version>3.0.1.RELEASE</bladex.project.version>
-
- <java.version>1.8</java.version>
- <maven.plugin.version>3.8.0</maven.plugin.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <orai18n.version>11.2.0.4</orai18n.version>
- <spring.boot.version>2.7.1</spring.boot.version>
- <spring.cloud.version>2021.0.3</spring.cloud.version>
- <spring.platform.version>Cairo-SR8</spring.platform.version>
-
- <!-- 鎺ㄨ崘浣跨敤Harbor -->
- <docker.registry.url>192.168.0.157</docker.registry.url>
- <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
- <docker.username>admin</docker.username>
- <docker.password>Harbor12345</docker.password>
- <docker.namespace>blade</docker.namespace>
- <docker.plugin.version>1.4.13</docker.plugin.version>
- </properties>
-
- <modules>
- <module>blade-auth</module>
- <module>blade-common</module>
- <module>blade-gateway</module>
- <module>blade-ops</module>
- <module>blade-ops-api</module>
- <module>blade-plugin</module>
- <module>blade-plugin-api</module>
- <module>blade-service</module>
- <module>blade-service-api</module>
- </modules>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springblade.platform</groupId>
- <artifactId>blade-bom</artifactId>
- <version>${bladex.project.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.springblade</groupId>
- <artifactId>blade-common</artifactId>
- <version>${bladex.project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring.boot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring.cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>io.spring.platform</groupId>
- <artifactId>platform-bom</artifactId>
- <version>${spring.platform.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <finalName>${project.name}</finalName>
- <Autowireds>
- <Autowired>
- <directory>src/main/Autowireds</directory>
- </Autowired>
- <Autowired>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </Autowired>
- </Autowireds>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${spring.boot.version}</version>
- <configuration>
- <fork>true</fork>
- <finalName>${project.build.finalName}</finalName>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <version>${docker.plugin.version}</version>
- <configuration>
- <username>${docker.username}</username>
- <password>${docker.password}</password>
- <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
- <tag>${project.version}</tag>
- <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
- <buildArgs>
- <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
- </buildArgs>
- </configuration>
- <!--瀛愭湇鍔℃坊鍔犲涓嬮厤缃紝杩愯 mvn deploy 鍛戒护渚夸細鑷姩鎵撳寘闀滃儚-->
- <!--<executions>
- <execution>
- <id>default</id>
- <goals>
- <goal>build</goal>
- <goal>push</goal>
- </goals>
- </execution>
- </executions>-->
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <tasks>
- <!--suppress UnresolvedMavenProperty -->
- <copy overwrite="true"
- tofile="${session.executionRootDirectory}/target/${project.artifactId}.jar"
- file="${project.build.directory}/${project.artifactId}.jar" />
- </tasks>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
- <plugins>
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven.plugin.version}</version>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- <encoding>UTF-8</encoding>
- <compilerArgs>
- <arg>-parameters</arg>
- </compilerArgs>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <repositories>
- <repository>
- <id>aliyun-repos</id>
- <url>https://maven.aliyun.com/repository/public/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>blade-release</id>
- <name>Release Repository</name>
- <url>http://nexus.javablade.com/repository/maven-releases/</url>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>aliyun-plugin</id>
- <url>https://maven.aliyun.com/repository/public/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
-
-</project>
diff --git a/Source/BladeX/service-start.sh b/Source/BladeX/service-start.sh
deleted file mode 100644
index 6501254..0000000
--- a/Source/BladeX/service-start.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#妫�鏌ョ▼搴忔槸鍚﹀湪杩愯
-start(){
-
- #鍏堟竻绌簍arget骞舵墦鍖�
- mvn clean package
-
- #鍚姩admin鏈嶅姟
- docker build -f ./blade-ops/blade-admin/Dockerfile -t bladex/blade-admin .
- docker run -d -p 36002:36002 --name blade-admin bladex/blade-admin:latest
-
- #鍚姩auth鏈嶅姟
- docker build -f ./blade-auth/Dockerfile -t bladex/blade-auth .
- docker run -d -p 36001:36001 --name blade-auth bladex/blade-auth:latest
-
- #鍚姩log鏈嶅姟
- docker build -f ./blade-ops/blade-log/Dockerfile -t bladex/blade-log .
- docker run -d -p 36005:36005 --name blade-log bladex/blade-log:latest
-
- #鍚姩desk鏈嶅姟
- docker build -f ./blade-service/blade-desk/Dockerfile -t bladex/blade-desk .
- docker run -d -p 36010:36010 --name blade-desk bladex/blade-desk:latest
-
- #鍚姩宸ヤ綔娴乫low鏈嶅姟
- docker build -f ./blade-ops/blade-flow/Dockerfile -t bladex/blade-flow .
- docker run -d -p 36004:36004 --name blade-flow bladex/blade-flow:latest
-
- #鍚姩develop鏈嶅姟
- docker build -f ./blade-ops/blade-develop/Dockerfile -t bladex/blade-develop .
- docker run -d -p 36003:36003 --name blade-develop bladex/blade-develop:latest
-
- #鍚姩jobAdmin鏈嶅姟
- docker build -f ./blade-ops/blade-xxljob-admin/Dockerfile -t bladex/blade-jobadmin .
- docker run -d -p 36013:36013 --name blade-jobadmin bladex/blade-jobadmin:latest
-
- #鍚姩job鏈嶅姟
- docker build -f ./blade-ops/blade-xxljob/Dockerfile -t bladex/blade-job .
- docker run -d -p 36009:36009 --name blade-job bladex/blade-job:latest
-
- #鍚姩report鏈嶅姟
- docker build -f ./blade-ops/blade-report/Dockerfile -t bladex/blade-report .
- docker run -d -p 36006:36006 --name blade-report bladex/blade-report:latest
-
- #鍚姩Autowired鏈嶅姟
- docker build -f ./blade-ops/blade-Autowired/Dockerfile -t bladex/blade-Autowired .
- docker run -d -p 36007:36007 --name blade-Autowired bladex/blade-Autowired:latest
-
- #鍚姩swagger鏈嶅姟
- docker build -f ./blade-ops/blade-swagger/Dockerfile -t bladex/blade-swagger .
- docker run -d -p 36008:36008 --name blade-swagger bladex/blade-swagger:latest
-
- #鍚姩system鏈嶅姟
- docker build -f ./blade-service/blade-system/Dockerfile -t bladex/blade-system .
- docker run -d -p 36011:36011 --name blade-system bladex/blade-system:latest
-
- #鍚姩user鏈嶅姟
- docker build -f ./blade-service/blade-user/Dockerfile -t bladex/blade-user .
- docker run -d -p 36012:36012 --name blade-user bladex/blade-user:latest
-
- #鍚姩gateway鏈嶅姟
- docker build -f ./blade-gateway/Dockerfile -t bladex/blade-gateway .
- docker run -d -p 37000:37000 --name blade-gateway bladex/blade-gateway:latest
-
-}
-
-start
-
-
-
-
-
diff --git a/Source/BladeX/service-stop.sh b/Source/BladeX/service-stop.sh
deleted file mode 100644
index fa340ce..0000000
--- a/Source/BladeX/service-stop.sh
+++ /dev/null
@@ -1,173 +0,0 @@
-#鍋滄鏂规硶瀹瑰櫒鍜屽垹闄ゅ搴旈暅鍍忔柟娉�
-stop(){
- #瀹氫箟瀹瑰櫒鍜岄暅鍍忕殑鍚嶇О
- imagesName=bladex/blade-auth
- containerName=blade-auth
- #濡傛灉瀛樺湪锛屽氨鍏抽棴骞朵笖鍒犻櫎璇ュ鍣�
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-admin
- containerName=blade-admin
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-auth
- containerName=blade-auth
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-log
- containerName=blade-log
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-desk
- containerName=blade-desk
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-flow
- containerName=blade-flow
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-develop
- containerName=blade-develop
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-jobadmin
- containerName=blade-jobadmin
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-job
- containerName=blade-job
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-report
- containerName=blade-report
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-Autowired
- containerName=blade-Autowired
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-swagger
- containerName=blade-swagger
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-system
- containerName=blade-system
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-user
- containerName=blade-user
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
- imagesName=bladex/blade-gateway
- containerName=blade-gateway
- if [[ -n $(docker ps -q -f "name=$containerName") ]];then
- echo $containerName"is up,we will stop and remove it !!!"
- docker stop $containerName
- docker rm $containerName
- docker rmi $imagesName
- else
- echo $containerName" is not up!!!"
- fi
-
-}
-stop
-
-
diff --git a/Source/BladeX/.editorconfig b/Source/UBCS/.editorconfig
similarity index 100%
rename from Source/BladeX/.editorconfig
rename to Source/UBCS/.editorconfig
diff --git a/Source/BladeX/.gitignore b/Source/UBCS/.gitignore
similarity index 100%
rename from Source/BladeX/.gitignore
rename to Source/UBCS/.gitignore
diff --git a/Source/BladeX/LICENSE b/Source/UBCS/LICENSE
similarity index 100%
rename from Source/BladeX/LICENSE
rename to Source/UBCS/LICENSE
diff --git a/Source/BladeX/README.md b/Source/UBCS/README.md
similarity index 100%
rename from Source/BladeX/README.md
rename to Source/UBCS/README.md
diff --git a/Source/BladeX/doc/docker/README.md b/Source/UBCS/doc/docker/README.md
similarity index 100%
rename from Source/BladeX/doc/docker/README.md
rename to Source/UBCS/doc/docker/README.md
diff --git "a/Source/BladeX/doc/mvn/mvn\345\221\275\344\273\244.md" "b/Source/UBCS/doc/mvn/mvn\345\221\275\344\273\244.md"
similarity index 100%
rename from "Source/BladeX/doc/mvn/mvn\345\221\275\344\273\244.md"
rename to "Source/UBCS/doc/mvn/mvn\345\221\275\344\273\244.md"
diff --git a/Source/BladeX/doc/nacos/README.md b/Source/UBCS/doc/nacos/README.md
similarity index 100%
rename from Source/BladeX/doc/nacos/README.md
rename to Source/UBCS/doc/nacos/README.md
diff --git a/Source/BladeX/doc/nacos/blade-dev.yaml b/Source/UBCS/doc/nacos/blade-dev.yaml
similarity index 100%
rename from Source/BladeX/doc/nacos/blade-dev.yaml
rename to Source/UBCS/doc/nacos/blade-dev.yaml
diff --git a/Source/BladeX/doc/nacos/blade-prod.yaml b/Source/UBCS/doc/nacos/blade-prod.yaml
similarity index 100%
rename from Source/BladeX/doc/nacos/blade-prod.yaml
rename to Source/UBCS/doc/nacos/blade-prod.yaml
diff --git a/Source/BladeX/doc/nacos/blade-test.yaml b/Source/UBCS/doc/nacos/blade-test.yaml
similarity index 100%
rename from Source/BladeX/doc/nacos/blade-test.yaml
rename to Source/UBCS/doc/nacos/blade-test.yaml
diff --git a/Source/BladeX/doc/nacos/blade.yaml b/Source/UBCS/doc/nacos/blade.yaml
similarity index 100%
rename from Source/BladeX/doc/nacos/blade.yaml
rename to Source/UBCS/doc/nacos/blade.yaml
diff --git a/Source/BladeX/doc/nacos/routes/README.md b/Source/UBCS/doc/nacos/routes/README.md
similarity index 100%
rename from Source/BladeX/doc/nacos/routes/README.md
rename to Source/UBCS/doc/nacos/routes/README.md
diff --git a/Source/BladeX/doc/nacos/routes/blade-gateway-dev.json b/Source/UBCS/doc/nacos/routes/blade-gateway-dev.json
similarity index 100%
rename from Source/BladeX/doc/nacos/routes/blade-gateway-dev.json
rename to Source/UBCS/doc/nacos/routes/blade-gateway-dev.json
diff --git a/Source/BladeX/doc/other/env.md b/Source/UBCS/doc/other/env.md
similarity index 100%
rename from Source/BladeX/doc/other/env.md
rename to Source/UBCS/doc/other/env.md
diff --git a/Source/BladeX/doc/other/http-code.md b/Source/UBCS/doc/other/http-code.md
similarity index 100%
rename from Source/BladeX/doc/other/http-code.md
rename to Source/UBCS/doc/other/http-code.md
diff --git a/Source/BladeX/doc/sql/db/database-info.md b/Source/UBCS/doc/sql/db/database-info.md
similarity index 100%
rename from Source/BladeX/doc/sql/db/database-info.md
rename to Source/UBCS/doc/sql/db/database-info.md
diff --git a/Source/BladeX/doc/sql/dm/bladex-flowable-dameng.dmp b/Source/UBCS/doc/sql/dm/bladex-flowable-dameng.dmp
similarity index 100%
rename from Source/BladeX/doc/sql/dm/bladex-flowable-dameng.dmp
rename to Source/UBCS/doc/sql/dm/bladex-flowable-dameng.dmp
Binary files differ
diff --git a/Source/BladeX/doc/sql/dm/bladex-saber-dameng.dmp b/Source/UBCS/doc/sql/dm/bladex-saber-dameng.dmp
similarity index 100%
rename from Source/BladeX/doc/sql/dm/bladex-saber-dameng.dmp
rename to Source/UBCS/doc/sql/dm/bladex-saber-dameng.dmp
Binary files differ
diff --git a/Source/BladeX/doc/sql/dm/bladex-sword-dameng.dmp b/Source/UBCS/doc/sql/dm/bladex-sword-dameng.dmp
similarity index 100%
rename from Source/BladeX/doc/sql/dm/bladex-sword-dameng.dmp
rename to Source/UBCS/doc/sql/dm/bladex-sword-dameng.dmp
Binary files differ
diff --git a/Source/BladeX/doc/sql/mysql/bladex-flowable-mysql.sql b/Source/UBCS/doc/sql/mysql/bladex-flowable-mysql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/mysql/bladex-flowable-mysql.sql
rename to Source/UBCS/doc/sql/mysql/bladex-flowable-mysql.sql
diff --git a/Source/BladeX/doc/sql/mysql/bladex-saber-mysql.sql b/Source/UBCS/doc/sql/mysql/bladex-saber-mysql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/mysql/bladex-saber-mysql.sql
rename to Source/UBCS/doc/sql/mysql/bladex-saber-mysql.sql
diff --git a/Source/BladeX/doc/sql/mysql/bladex-sword-mysql.sql b/Source/UBCS/doc/sql/mysql/bladex-sword-mysql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/mysql/bladex-sword-mysql.sql
rename to Source/UBCS/doc/sql/mysql/bladex-sword-mysql.sql
diff --git a/Source/BladeX/doc/sql/oracle/bladex-flowable-oracle.sql b/Source/UBCS/doc/sql/oracle/bladex-flowable-oracle.sql
similarity index 100%
rename from Source/BladeX/doc/sql/oracle/bladex-flowable-oracle.sql
rename to Source/UBCS/doc/sql/oracle/bladex-flowable-oracle.sql
diff --git a/Source/BladeX/doc/sql/oracle/bladex-saber-oracle.sql b/Source/UBCS/doc/sql/oracle/bladex-saber-oracle.sql
similarity index 100%
rename from Source/BladeX/doc/sql/oracle/bladex-saber-oracle.sql
rename to Source/UBCS/doc/sql/oracle/bladex-saber-oracle.sql
diff --git a/Source/BladeX/doc/sql/oracle/bladex-sword-oracle.sql b/Source/UBCS/doc/sql/oracle/bladex-sword-oracle.sql
similarity index 100%
rename from Source/BladeX/doc/sql/oracle/bladex-sword-oracle.sql
rename to Source/UBCS/doc/sql/oracle/bladex-sword-oracle.sql
diff --git a/Source/BladeX/doc/sql/postgresql/bladex-flowable-postgresql.sql b/Source/UBCS/doc/sql/postgresql/bladex-flowable-postgresql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/postgresql/bladex-flowable-postgresql.sql
rename to Source/UBCS/doc/sql/postgresql/bladex-flowable-postgresql.sql
diff --git a/Source/BladeX/doc/sql/postgresql/bladex-saber-postgresql.sql b/Source/UBCS/doc/sql/postgresql/bladex-saber-postgresql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/postgresql/bladex-saber-postgresql.sql
rename to Source/UBCS/doc/sql/postgresql/bladex-saber-postgresql.sql
diff --git a/Source/BladeX/doc/sql/postgresql/bladex-sword-postgresql.sql b/Source/UBCS/doc/sql/postgresql/bladex-sword-postgresql.sql
similarity index 100%
rename from Source/BladeX/doc/sql/postgresql/bladex-sword-postgresql.sql
rename to Source/UBCS/doc/sql/postgresql/bladex-sword-postgresql.sql
diff --git a/Source/BladeX/doc/sql/sqlserver/bladex-flowable-sqlserver.sql b/Source/UBCS/doc/sql/sqlserver/bladex-flowable-sqlserver.sql
similarity index 100%
rename from Source/BladeX/doc/sql/sqlserver/bladex-flowable-sqlserver.sql
rename to Source/UBCS/doc/sql/sqlserver/bladex-flowable-sqlserver.sql
diff --git a/Source/BladeX/doc/sql/sqlserver/bladex-saber-sqlserver.sql b/Source/UBCS/doc/sql/sqlserver/bladex-saber-sqlserver.sql
similarity index 100%
rename from Source/BladeX/doc/sql/sqlserver/bladex-saber-sqlserver.sql
rename to Source/UBCS/doc/sql/sqlserver/bladex-saber-sqlserver.sql
diff --git a/Source/BladeX/doc/sql/sqlserver/bladex-sword-sqlserver.sql b/Source/UBCS/doc/sql/sqlserver/bladex-sword-sqlserver.sql
similarity index 100%
rename from Source/BladeX/doc/sql/sqlserver/bladex-sword-sqlserver.sql
rename to Source/UBCS/doc/sql/sqlserver/bladex-sword-sqlserver.sql
diff --git a/Source/BladeX/doc/sql/update/bladex-update-dameng-3.0.0~3.0.1.sql b/Source/UBCS/doc/sql/update/bladex-update-dameng-3.0.0~3.0.1.sql
similarity index 100%
rename from Source/BladeX/doc/sql/update/bladex-update-dameng-3.0.0~3.0.1.sql
rename to Source/UBCS/doc/sql/update/bladex-update-dameng-3.0.0~3.0.1.sql
diff --git a/Source/BladeX/doc/sql/update/bladex-update-mysql-3.0.0~3.0.1.sql b/Source/UBCS/doc/sql/update/bladex-update-mysql-3.0.0~3.0.1.sql
similarity index 100%
rename from Source/BladeX/doc/sql/update/bladex-update-mysql-3.0.0~3.0.1.sql
rename to Source/UBCS/doc/sql/update/bladex-update-mysql-3.0.0~3.0.1.sql
diff --git a/Source/BladeX/doc/sql/update/bladex-update-oracle-3.0.0~3.0.1.sql b/Source/UBCS/doc/sql/update/bladex-update-oracle-3.0.0~3.0.1.sql
similarity index 100%
rename from Source/BladeX/doc/sql/update/bladex-update-oracle-3.0.0~3.0.1.sql
rename to Source/UBCS/doc/sql/update/bladex-update-oracle-3.0.0~3.0.1.sql
diff --git a/Source/BladeX/doc/sql/update/bladex-update-postgresql-3.0.0~3.0.1.sql b/Source/UBCS/doc/sql/update/bladex-update-postgresql-3.0.0~3.0.1.sql
similarity index 100%
rename from Source/BladeX/doc/sql/update/bladex-update-postgresql-3.0.0~3.0.1.sql
rename to Source/UBCS/doc/sql/update/bladex-update-postgresql-3.0.0~3.0.1.sql
diff --git a/Source/BladeX/doc/sql/update/bladex-update-sqlserver-3.0.0~3.0.1.sql b/Source/UBCS/doc/sql/update/bladex-update-sqlserver-3.0.0~3.0.1.sql
similarity index 100%
rename from Source/BladeX/doc/sql/update/bladex-update-sqlserver-3.0.0~3.0.1.sql
rename to Source/UBCS/doc/sql/update/bladex-update-sqlserver-3.0.0~3.0.1.sql
diff --git a/Source/UBCS/pom.xml b/Source/UBCS/pom.xml
new file mode 100644
index 0000000..ca85d29
--- /dev/null
+++ b/Source/UBCS/pom.xml
@@ -0,0 +1,220 @@
+<?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">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.springblade</groupId>
+ <artifactId>UBCS</artifactId>
+ <version>3.0.1.RELEASE</version>
+ <packaging>pom</packaging>
+
+ <properties>
+ <bladex.project.version>3.0.1.RELEASE</bladex.project.version>
+
+ <java.version>1.8</java.version>
+ <maven.plugin.version>3.8.0</maven.plugin.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <orai18n.version>11.2.0.4</orai18n.version>
+ <spring.boot.version>2.7.1</spring.boot.version>
+ <spring.cloud.version>2021.0.3</spring.cloud.version>
+ <spring.platform.version>Cairo-SR8</spring.platform.version>
+
+ <!-- 鎺ㄨ崘浣跨敤Harbor -->
+ <docker.registry.url>192.168.0.157</docker.registry.url>
+ <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
+ <docker.username>admin</docker.username>
+ <docker.password>Harbor12345</docker.password>
+ <docker.namespace>blade</docker.namespace>
+ <docker.plugin.version>1.4.13</docker.plugin.version>
+ </properties>
+
+ <modules>
+ <module>ubcs-auth</module>
+ <module>ubcs-common</module>
+ <module>ubcs-gateway</module>
+ <module>ubcs-ops</module>
+ <module>ubcs-ops-api</module>
+ <module>ubcs-plugin</module>
+ <module>ubcs-plugin-api</module>
+ <module>ubcs-service</module>
+ <module>ubcs-service-api</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade.platform</groupId>
+ <artifactId>blade-bom</artifactId>
+ <version>${bladex.project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring.boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-dependencies</artifactId>
+ <version>${spring.cloud.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.spring.platform</groupId>
+ <artifactId>platform-bom</artifactId>
+ <version>${spring.platform.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${project.name}</finalName>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**/*.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring.boot.version}</version>
+ <configuration>
+ <fork>true</fork>
+ <finalName>${project.build.finalName}</finalName>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <version>${docker.plugin.version}</version>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ </configuration>
+ <!--瀛愭湇鍔℃坊鍔犲涓嬮厤缃紝杩愯 mvn deploy 鍛戒护渚夸細鑷姩鎵撳寘闀滃儚-->
+ <!--<executions>
+ <execution>
+ <id>default</id>
+ <goals>
+ <goal>build</goal>
+ <goal>push</goal>
+ </goals>
+ </execution>
+ </executions>-->
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <!--suppress UnresolvedMavenProperty -->
+ <copy overwrite="true"
+ tofile="${session.executionRootDirectory}/target/${project.artifactId}.jar"
+ file="${project.build.directory}/${project.artifactId}.jar" />
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven.plugin.version}</version>
+ <configuration>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ <encoding>UTF-8</encoding>
+ <compilerArgs>
+ <arg>-parameters</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <id>aliyun-repos</id>
+ <url>https://maven.aliyun.com/repository/public/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>blade-release</id>
+ <name>Release Repository</name>
+ <url>http://nexus.javablade.com/repository/maven-releases/</url>
+ </repository>
+ </repositories>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>aliyun-plugin</id>
+ <url>https://maven.aliyun.com/repository/public/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+</project>
diff --git a/Source/BladeX/script/docker/app/.env b/Source/UBCS/script/docker/app/.env
similarity index 100%
rename from Source/BladeX/script/docker/app/.env
rename to Source/UBCS/script/docker/app/.env
diff --git a/Source/BladeX/script/docker/app/deploy.sh b/Source/UBCS/script/docker/app/deploy.sh
similarity index 100%
rename from Source/BladeX/script/docker/app/deploy.sh
rename to Source/UBCS/script/docker/app/deploy.sh
diff --git a/Source/BladeX/script/docker/app/docker-compose.yml b/Source/UBCS/script/docker/app/docker-compose.yml
similarity index 100%
rename from Source/BladeX/script/docker/app/docker-compose.yml
rename to Source/UBCS/script/docker/app/docker-compose.yml
diff --git a/Source/BladeX/script/docker/app/nacos/init.d/custom.properties b/Source/UBCS/script/docker/app/nacos/init.d/custom.properties
similarity index 100%
rename from Source/BladeX/script/docker/app/nacos/init.d/custom.properties
rename to Source/UBCS/script/docker/app/nacos/init.d/custom.properties
diff --git a/Source/BladeX/script/docker/app/nginx/api/nginx.conf b/Source/UBCS/script/docker/app/nginx/api/nginx.conf
similarity index 100%
rename from Source/BladeX/script/docker/app/nginx/api/nginx.conf
rename to Source/UBCS/script/docker/app/nginx/api/nginx.conf
diff --git a/Source/BladeX/script/docker/app/nginx/web/html/index.html b/Source/UBCS/script/docker/app/nginx/web/html/index.html
similarity index 100%
rename from Source/BladeX/script/docker/app/nginx/web/html/index.html
rename to Source/UBCS/script/docker/app/nginx/web/html/index.html
diff --git a/Source/BladeX/script/docker/app/nginx/web/nginx.conf b/Source/UBCS/script/docker/app/nginx/web/nginx.conf
similarity index 100%
rename from Source/BladeX/script/docker/app/nginx/web/nginx.conf
rename to Source/UBCS/script/docker/app/nginx/web/nginx.conf
diff --git a/Source/BladeX/script/docker/app/prometheus/config/alert_rules.yml b/Source/UBCS/script/docker/app/prometheus/config/alert_rules.yml
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/alert_rules.yml
rename to Source/UBCS/script/docker/app/prometheus/config/alert_rules.yml
diff --git a/Source/BladeX/script/docker/app/prometheus/config/alertmanager.yml b/Source/UBCS/script/docker/app/prometheus/config/alertmanager.yml
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/alertmanager.yml
rename to Source/UBCS/script/docker/app/prometheus/config/alertmanager.yml
diff --git a/Source/BladeX/script/docker/app/prometheus/config/dingtalk.yml b/Source/UBCS/script/docker/app/prometheus/config/dingtalk.yml
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/dingtalk.yml
rename to Source/UBCS/script/docker/app/prometheus/config/dingtalk.yml
diff --git a/Source/BladeX/script/docker/app/prometheus/config/grafana.ini b/Source/UBCS/script/docker/app/prometheus/config/grafana.ini
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/grafana.ini
rename to Source/UBCS/script/docker/app/prometheus/config/grafana.ini
diff --git a/Source/BladeX/script/docker/app/prometheus/config/prometheus.yml b/Source/UBCS/script/docker/app/prometheus/config/prometheus.yml
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/prometheus.yml
rename to Source/UBCS/script/docker/app/prometheus/config/prometheus.yml
diff --git a/Source/BladeX/script/docker/app/prometheus/config/wechat.tmpl b/Source/UBCS/script/docker/app/prometheus/config/wechat.tmpl
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/config/wechat.tmpl
rename to Source/UBCS/script/docker/app/prometheus/config/wechat.tmpl
diff --git a/Source/BladeX/script/docker/app/prometheus/dashboard/bladex-docker.json b/Source/UBCS/script/docker/app/prometheus/dashboard/bladex-docker.json
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/dashboard/bladex-docker.json
rename to Source/UBCS/script/docker/app/prometheus/dashboard/bladex-docker.json
diff --git a/Source/BladeX/script/docker/app/prometheus/dashboard/bladex-jvm.json b/Source/UBCS/script/docker/app/prometheus/dashboard/bladex-jvm.json
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/dashboard/bladex-jvm.json
rename to Source/UBCS/script/docker/app/prometheus/dashboard/bladex-jvm.json
diff --git a/Source/BladeX/script/docker/app/prometheus/dashboard/bladex-linux.json b/Source/UBCS/script/docker/app/prometheus/dashboard/bladex-linux.json
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/dashboard/bladex-linux.json
rename to Source/UBCS/script/docker/app/prometheus/dashboard/bladex-linux.json
diff --git a/Source/BladeX/script/docker/app/prometheus/dashboard/bladex-mysql.json b/Source/UBCS/script/docker/app/prometheus/dashboard/bladex-mysql.json
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/dashboard/bladex-mysql.json
rename to Source/UBCS/script/docker/app/prometheus/dashboard/bladex-mysql.json
diff --git a/Source/BladeX/script/docker/app/prometheus/dashboard/bladex-nacos.json b/Source/UBCS/script/docker/app/prometheus/dashboard/bladex-nacos.json
similarity index 100%
rename from Source/BladeX/script/docker/app/prometheus/dashboard/bladex-nacos.json
rename to Source/UBCS/script/docker/app/prometheus/dashboard/bladex-nacos.json
diff --git a/Source/BladeX/script/docker/elk/README.md b/Source/UBCS/script/docker/elk/README.md
similarity index 100%
rename from Source/BladeX/script/docker/elk/README.md
rename to Source/UBCS/script/docker/elk/README.md
diff --git a/Source/BladeX/script/docker/elk/deploy.sh b/Source/UBCS/script/docker/elk/deploy.sh
similarity index 100%
rename from Source/BladeX/script/docker/elk/deploy.sh
rename to Source/UBCS/script/docker/elk/deploy.sh
diff --git a/Source/BladeX/script/docker/elk/docker-compose.yml b/Source/UBCS/script/docker/elk/docker-compose.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/docker-compose.yml
rename to Source/UBCS/script/docker/elk/docker-compose.yml
diff --git a/Source/BladeX/script/docker/elk/es-master.yml b/Source/UBCS/script/docker/elk/es-master.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/es-master.yml
rename to Source/UBCS/script/docker/elk/es-master.yml
diff --git a/Source/BladeX/script/docker/elk/es-slave1.yml b/Source/UBCS/script/docker/elk/es-slave1.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/es-slave1.yml
rename to Source/UBCS/script/docker/elk/es-slave1.yml
diff --git a/Source/BladeX/script/docker/elk/es-slave2.yml b/Source/UBCS/script/docker/elk/es-slave2.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/es-slave2.yml
rename to Source/UBCS/script/docker/elk/es-slave2.yml
diff --git a/Source/BladeX/script/docker/elk/filebeat.yml b/Source/UBCS/script/docker/elk/filebeat.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/filebeat.yml
rename to Source/UBCS/script/docker/elk/filebeat.yml
diff --git a/Source/BladeX/script/docker/elk/kibana.yml b/Source/UBCS/script/docker/elk/kibana.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/kibana.yml
rename to Source/UBCS/script/docker/elk/kibana.yml
diff --git a/Source/BladeX/script/docker/elk/logstash-filebeat.conf b/Source/UBCS/script/docker/elk/logstash-filebeat.conf
similarity index 100%
rename from Source/BladeX/script/docker/elk/logstash-filebeat.conf
rename to Source/UBCS/script/docker/elk/logstash-filebeat.conf
diff --git a/Source/BladeX/script/docker/elk/logstash.yml b/Source/UBCS/script/docker/elk/logstash.yml
similarity index 100%
rename from Source/BladeX/script/docker/elk/logstash.yml
rename to Source/UBCS/script/docker/elk/logstash.yml
diff --git a/Source/BladeX/script/docker/elk/undeploy.sh b/Source/UBCS/script/docker/elk/undeploy.sh
similarity index 100%
rename from Source/BladeX/script/docker/elk/undeploy.sh
rename to Source/UBCS/script/docker/elk/undeploy.sh
diff --git a/Source/BladeX/script/fatjar/service.cmd b/Source/UBCS/script/fatjar/service.cmd
similarity index 100%
rename from Source/BladeX/script/fatjar/service.cmd
rename to Source/UBCS/script/fatjar/service.cmd
diff --git a/Source/BladeX/script/fatjar/service.sh b/Source/UBCS/script/fatjar/service.sh
similarity index 100%
rename from Source/BladeX/script/fatjar/service.sh
rename to Source/UBCS/script/fatjar/service.sh
diff --git a/Source/UBCS/service-start.sh b/Source/UBCS/service-start.sh
new file mode 100644
index 0000000..ac56fbd
--- /dev/null
+++ b/Source/UBCS/service-start.sh
@@ -0,0 +1,83 @@
+#鏈嶅姟鐢熸垚闀滃儚锛屽苟杩愯
+start(){
+
+ #鍏堟竻绌簍arget骞舵墦鍖�
+ mvn clean package
+
+ #鍚姩admin鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-admin/Dockerfile -t vci-ubcs/ubcs-admin .
+ docker run -d -p 36002:36002 --name ubcs-admin vci-ubcs/ubcs-admin:latest
+
+ #鍚姩auth鏈嶅姟
+ docker build -f ./ubcs-auth/Dockerfile -t vci-ubcs/ubcs-auth .
+ docker run -d -p 36001:36001 --name ubcs-auth vci-ubcs/ubcs-auth:latest
+
+ #鍚姩log鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-log/Dockerfile -t vci-ubcs/ubcs-log .
+ docker run -d -p 36005:36005 --name ubcs-log vci-ubcs/ubcs-log:latest
+
+ #鍚姩desk鏈嶅姟
+ docker build -f ./ubcs-service/ubcs-desk/Dockerfile -t vci-ubcs/ubcs-desk .
+ docker run -d -p 36010:36010 --name ubcs-desk vci-ubcs/ubcs-desk:latest
+
+ #鍚姩宸ヤ綔娴乫low鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-flow/Dockerfile -t vci-ubcs/ubcs-flow .
+ docker run -d -p 36004:36004 --name ubcs-flow vci-ubcs/ubcs-flow:latest
+
+ #鍚姩develop鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-develop/Dockerfile -t vci-ubcs/ubcs-develop .
+ docker run -d -p 36003:36003 --name ubcs-develop vci-ubcs/ubcs-develop:latest
+
+ #鍚姩jobAdmin鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-xxljob-admin/Dockerfile -t vci-ubcs/ubcs-jobadmin .
+ docker run -d -p 36013:36013 --name ubcs-jobadmin vci-ubcs/ubcs-jobadmin:latest
+
+ #鍚姩job鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-xxljob/Dockerfile -t vci-ubcs/ubcs-job .
+ docker run -d -p 36009:36009 --name ubcs-job vci-ubcs/ubcs-job:latest
+
+ #鍚姩report鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-report/Dockerfile -t vci-ubcs/ubcs-report .
+ docker run -d -p 36006:36006 --name ubcs-report vci-ubcs/ubcs-report:latest
+
+ #鍚姩Resource鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-resource/Dockerfile -t vci-ubcs/ubcs-resource .
+ docker run -d -p 36007:36007 --name ubcs-rresource vci-ubcs/ubcs-resource:latest
+
+ #鍚姩swagger鏈嶅姟
+ docker build -f ./ubcs-ops/ubcs-swagger/Dockerfile -t vci-ubcs/ubcs-swagger .
+ docker run -d -p 36008:36008 --name ubcs-swagger vci-ubcs/ubcs-swagger:latest
+
+ #鍚姩system鏈嶅姟
+ docker build -f ./ubcs-service/ubcs-system/Dockerfile -t vci-ubcs/ubcs-system .
+ docker run -d -p 36011:36011 --name ubcs-system vci-ubcs/ubcs-system:latest
+
+ #鍚姩user鏈嶅姟
+ docker build -f ./ubcs-service/ubcs-user/Dockerfile -t vci-ubcs/ubcs-user .
+ docker run -d -p 36012:36012 --name ubcs-user vci-ubcs/ubcs-user:latest
+
+ #鍚姩gateway鏈嶅姟
+ docker build -f ./ubcs-gateway/Dockerfile -t vci-ubcs/ubcs-gateway .
+ docker run -d -p 37000:37000 --name ubcs-gateway vci-ubcs/ubcs-gateway:latest
+
+ #鍚姩omdy鏈嶅姟
+ docker build -f ./ubcs-omd/Dockerfile -t vci-ubcs/ubcs-omd .
+ docker run -d -p 36015:36015 --name ubcs-omd vci-ubcs/ubcs-omd:latest
+
+ #鍚姩code鏈嶅姟
+ docker build -f ./ubcs-code/Dockerfile -t vci-ubcs/ubcs-code .
+ docker run -d -p 36013:36013 --name ubcs-code vci-ubcs/ubcs-code:latest
+
+
+ #鍏朵粬鏈嶅姟璇疯嚜琛屾坊鍔�
+
+
+
+}
+
+start
+
+
+
+
+
diff --git a/Source/UBCS/service-stop.sh b/Source/UBCS/service-stop.sh
new file mode 100644
index 0000000..9f4cb9c
--- /dev/null
+++ b/Source/UBCS/service-stop.sh
@@ -0,0 +1,199 @@
+#鍋滄瀹瑰櫒杩愯鍜屽垹闄ゅ搴旈暅鍍忔柟娉�
+stop(){
+ #瀹氫箟瀹瑰櫒鍜岄暅鍍忕殑鍚嶇О
+ imagesName=vci-ubcs/ubcs-
+ #瀹氫箟鏈嶅姟鍚嶇О
+ containerName=ubcs-auth
+ #濡傛灉瀛樺湪锛屽氨鍏抽棴骞朵笖鍒犻櫎璇ュ鍣�
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-admin
+ containerName=ubcs-admin
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-auth
+ containerName=ubcs-auth
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-log
+ containerName=ubcs-log
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-desk
+ containerName=ubcs-desk
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-flow
+ containerName=ubcs-flow
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-develop
+ containerName=ubcs-develop
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-jobadmin
+ containerName=ubcs-jobadmin
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-job
+ containerName=ubcs-job
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-report
+ containerName=ubcs-report
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-resource
+ containerName=ubcs-resource
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-swagger
+ containerName=ubcs-swagger
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-system
+ containerName=ubcs-system
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-user
+ containerName=ubcs-user
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-gateway
+ containerName=ubcs-gateway
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-omd
+ containerName=ubcs-omd
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ imagesName=vci-ubcs/ubcs-code
+ containerName=ubcs-code
+ if [[ -n $(docker ps -q -f "name=$containerName") ]];then
+ echo $containerName"is up,we will stop and remove it !!!"
+ docker stop $containerName
+ docker rm $containerName
+ docker rmi $imagesName
+ else
+ echo $containerName" is not up!!!"
+ fi
+
+ #鍏朵粬鏈嶅姟闇�瑕侊紝璇疯嚜琛屾坊鍔�
+
+
+}
+stop
+
+
diff --git a/Source/BladeX/blade-auth/Dockerfile b/Source/UBCS/ubcs-auth/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-auth/Dockerfile
rename to Source/UBCS/ubcs-auth/Dockerfile
diff --git a/Source/BladeX/blade-auth/README.md b/Source/UBCS/ubcs-auth/README.md
similarity index 100%
rename from Source/BladeX/blade-auth/README.md
rename to Source/UBCS/ubcs-auth/README.md
diff --git a/Source/UBCS/ubcs-auth/pom.xml b/Source/UBCS/ubcs-auth/pom.xml
new file mode 100644
index 0000000..a92b9d5
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/pom.xml
@@ -0,0 +1,154 @@
+<?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">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <artifactId>ubcs-auth</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-scope-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-db</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-metrics</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-redis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-social</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-user-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-system-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <!--瀹夊叏妯″潡-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-security</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security.oauth</groupId>
+ <artifactId>spring-security-oauth2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-jwt</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-redis</artifactId>
+ </dependency>
+ <!-- 楠岃瘉鐮� -->
+ <dependency>
+ <groupId>com.github.whvcse</groupId>
+ <artifactId>easy-captcha</artifactId>
+ </dependency>
+ <!--freemarker-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-freemarker</artifactId>
+ </dependency>
+ <!--oracle椹卞姩-->
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ <!-- 閾捐矾杩借釜銆佹湇鍔$洃鎺� -->
+ <!--<dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-trace</artifactId>
+ </dependency>-->
+ <!-- 瑙e喅Java11鏃犳硶杩愯鐨勯棶棰� -->
+ <!--<dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-core</artifactId>
+ <version>2.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.1.1</version>
+ </dependency>-->
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/AuthApplication.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/AuthApplication.java
new file mode 100644
index 0000000..b28b2e1
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/AuthApplication.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 com.vci.ubcs.auth;
+
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 鐢ㄦ埛璁よ瘉鏈嶅姟鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class AuthApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_AUTH_NAME, AuthApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeAuthorizationServerConfiguration.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeAuthorizationServerConfiguration.java
new file mode 100644
index 0000000..2d03d28
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeAuthorizationServerConfiguration.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.config;
+
+import com.vci.ubcs.system.user.feign.IUserClient;
+import com.vci.ubcs.auth.constant.AuthConstant;
+import com.vci.ubcs.auth.granter.BladeTokenGranter;
+import com.vci.ubcs.auth.service.BladeClientDetailsServiceImpl;
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.social.props.SocialProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.TokenGranter;
+import org.springframework.security.oauth2.provider.token.TokenEnhancer;
+import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+
+import javax.sql.DataSource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 璁よ瘉鏈嶅姟鍣ㄩ厤缃�
+ *
+ * @author Chill
+ */
+@Order
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+@EnableAuthorizationServer
+public class BladeAuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
+
+ private final DataSource dataSource;
+
+ private final AuthenticationManager authenticationManager;
+
+ private final UserDetailsService userDetailsService;
+
+ private final TokenStore tokenStore;
+
+ private final TokenEnhancer jwtTokenEnhancer;
+
+ private final JwtAccessTokenConverter jwtAccessTokenConverter;
+
+ private final BladeRedis bladeRedis;
+
+ private final IUserClient userClient;
+
+ private final SocialProperties socialProperties;
+
+ @Override
+ public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
+ //鑾峰彇鑷畾涔塼okenGranter
+ TokenGranter tokenGranter = BladeTokenGranter.getTokenGranter(authenticationManager, endpoints, bladeRedis, userClient, socialProperties);
+
+ //閰嶇疆绔偣
+ endpoints.tokenStore(tokenStore)
+ .authenticationManager(authenticationManager)
+ .userDetailsService(userDetailsService)
+ .tokenGranter(tokenGranter);
+
+ //鎵╁睍token杩斿洖缁撴灉
+ if (jwtAccessTokenConverter != null && jwtTokenEnhancer != null) {
+ TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
+ List<TokenEnhancer> enhancerList = new ArrayList<>();
+ enhancerList.add(jwtTokenEnhancer);
+ enhancerList.add(jwtAccessTokenConverter);
+ tokenEnhancerChain.setTokenEnhancers(enhancerList);
+ //jwt澧炲己
+ endpoints.tokenEnhancer(tokenEnhancerChain).accessTokenConverter(jwtAccessTokenConverter);
+ }
+ }
+
+ /**
+ * 閰嶇疆瀹㈡埛绔俊鎭�
+ * 鏈嶅姟鍚姩鏃跺姞杞絪ql
+ * 浣滅敤锛氭煡璇lient淇℃伅
+ */
+ @Override
+ @SneakyThrows
+ public void configure(ClientDetailsServiceConfigurer clients) {
+ BladeClientDetailsServiceImpl clientDetailsService = new BladeClientDetailsServiceImpl(dataSource);
+ clientDetailsService.setSelectClientDetailsSql(AuthConstant.DEFAULT_SELECT_STATEMENT);
+ clientDetailsService.setFindClientDetailsSql(AuthConstant.DEFAULT_FIND_STATEMENT);
+ clients.withClientDetails(clientDetailsService);
+ }
+
+ @Override
+ public void configure(AuthorizationServerSecurityConfigurer oauthServer) {
+ oauthServer
+ .allowFormAuthenticationForClients()
+ .tokenKeyAccess("permitAll()")
+ .checkTokenAccess("isAuthenticated()");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java
new file mode 100644
index 0000000..5f680cc
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/BladeResourceServerConfiguration.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.config;
+
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+
+/**
+ * 鑷畾涔夎祫婧愭斁琛�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+public class BladeResourceServerConfiguration extends ResourceServerConfigurerAdapter {
+
+ @Override
+ @SneakyThrows
+ public void configure(HttpSecurity http) {
+ http.authorizeRequests()
+ .antMatchers(
+ "/actuator/**",
+ "/oauth/captcha",
+ "/oauth/logout",
+ "/oauth/clear-cache",
+ "/oauth/render/**",
+ "/oauth/callback/**",
+ "/oauth/revoke/**",
+ "/oauth/refresh/**",
+ "/oauth/login",
+ "/oauth/form",
+ "/token/**",
+ "/mobile/**",
+ "/static/**",
+ "/v2/api-docs").permitAll()
+ .anyRequest().authenticated().and()
+ .csrf().disable();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/JwtTokenStoreConfiguration.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/JwtTokenStoreConfiguration.java
new file mode 100644
index 0000000..ea6bf6c
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/JwtTokenStoreConfiguration.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.config;
+
+import com.vci.ubcs.auth.support.BladeJwtTokenEnhancer;
+import org.springblade.core.jwt.props.JwtProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.jwt.crypto.sign.MacSigner;
+import org.springframework.security.jwt.crypto.sign.SignatureVerifier;
+import org.springframework.security.oauth2.provider.token.TokenEnhancer;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
+
+/**
+ * JwtTokenStore
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@ConditionalOnProperty(prefix = "blade.security.oauth2", name = "storeType", havingValue = "jwt", matchIfMissing = true)
+public class JwtTokenStoreConfiguration {
+
+ /**
+ * 浣跨敤jwtTokenStore瀛樺偍token
+ */
+ @Bean
+ public TokenStore jwtTokenStore(JwtProperties jwtProperties) {
+ return new JwtTokenStore(getJwtAccessTokenConverter(jwtProperties));
+ }
+
+ /**
+ * 鐢ㄤ簬鐢熸垚jwt
+ */
+ @Bean
+ public JwtAccessTokenConverter jwtAccessTokenConverter(JwtProperties jwtProperties) {
+ return getJwtAccessTokenConverter(jwtProperties);
+ }
+
+ /**
+ * 鑷畾涔� JwtAccessTokenConverter
+ */
+ private JwtAccessTokenConverter getJwtAccessTokenConverter(JwtProperties jwtProperties) {
+ JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
+ accessTokenConverter.setSigningKey(jwtProperties.getSignKey());
+ SignatureVerifier verifier = new MacSigner(jwtProperties.getSignKey());
+ accessTokenConverter.setVerifier(verifier);
+ return accessTokenConverter;
+ }
+
+ /**
+ * 鐢ㄤ簬鎵╁睍jwt
+ */
+ @Bean
+ @ConditionalOnMissingBean(name = "jwtTokenEnhancer")
+ public TokenEnhancer jwtTokenEnhancer(JwtAccessTokenConverter jwtAccessTokenConverter, JwtProperties jwtProperties) {
+ return new BladeJwtTokenEnhancer(jwtAccessTokenConverter, jwtProperties);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/SecurityConfiguration.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/SecurityConfiguration.java
new file mode 100644
index 0000000..39d3e5b
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/config/SecurityConfiguration.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.config;
+
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import com.vci.ubcs.auth.support.BladePasswordEncoderFactories;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.builders.WebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+/**
+ * Security閰嶇疆
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
+
+ @Bean
+ @Override
+ @SneakyThrows
+ public AuthenticationManager authenticationManagerBean() {
+ return super.authenticationManagerBean();
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return BladePasswordEncoderFactories.createDelegatingPasswordEncoder();
+ }
+
+ @Override
+ @SneakyThrows
+ protected void configure(HttpSecurity http) {
+ http.headers().frameOptions().disable();
+ http.httpBasic().and().csrf().disable();
+ http.formLogin().loginPage("/oauth/login").loginProcessingUrl("/oauth/form");
+ }
+
+ @Override
+ public void configure(WebSecurity web) {
+ web.ignoring().antMatchers("/js/*.js", "/css/*.css");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/constant/AuthConstant.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/constant/AuthConstant.java
new file mode 100644
index 0000000..1379e85
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/constant/AuthConstant.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.constant;
+
+/**
+ * 鎺堟潈鏍¢獙甯搁噺
+ *
+ * @author Chill
+ */
+public interface AuthConstant {
+
+ /**
+ * 瀵嗙爜鍔犲瘑瑙勫垯
+ */
+ String ENCRYPT = "{blade}";
+
+ /**
+ * pl_sys_client琛ㄥ瓧娈�
+ */
+ String CLIENT_FIELDS = "client_id, CONCAT('{noop}',client_secret) as client_secret, Resource_ids, scope, authorized_grant_types, " +
+ "web_server_redirect_uri, authorities, access_token_validity, " +
+ "refresh_token_validity, additional_information, autoapprove";
+
+ /**
+ * pl_sys_client鏌ヨ璇彞
+ */
+ String BASE_STATEMENT = "select " + CLIENT_FIELDS + " from pl_sys_client";
+
+ /**
+ * pl_sys_client鏌ヨ鎺掑簭
+ */
+ String DEFAULT_FIND_STATEMENT = BASE_STATEMENT + " order by client_id";
+
+ /**
+ * 鏌ヨclient_id
+ */
+ String DEFAULT_SELECT_STATEMENT = BASE_STATEMENT + " where client_id = ?";
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java
new file mode 100644
index 0000000..be06db7
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.endpoint;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.model.AuthToken;
+import me.zhyd.oauth.request.AuthRequest;
+import me.zhyd.oauth.utils.AuthStateUtils;
+import org.springblade.core.social.props.SocialProperties;
+import org.springblade.core.social.utils.SocialUtil;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * SocialEndpoint
+ *
+ * @author Chill
+ */
+@NonDS
+@Slf4j
+@RestController
+@AllArgsConstructor
+@ConditionalOnProperty(value = "social.enabled", havingValue = "true")
+public class BladeSocialEndpoint {
+
+ private final SocialProperties socialProperties;
+
+ /**
+ * 鎺堟潈瀹屾瘯璺宠浆
+ */
+ @RequestMapping("/oauth/render/{source}")
+ public void renderAuth(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
+ AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
+ String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
+ response.sendRedirect(authorizeUrl);
+ }
+
+ /**
+ * 鑾峰彇璁よ瘉淇℃伅
+ */
+ @RequestMapping("/oauth/callback/{source}")
+ public Object login(@PathVariable("source") String source, AuthCallback callback) {
+ AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
+ return authRequest.login(callback);
+ }
+
+ /**
+ * 鎾ら攢鎺堟潈
+ */
+ @RequestMapping("/oauth/revoke/{source}/{token}")
+ public Object revokeAuth(@PathVariable("source") String source, @PathVariable("token") String token) {
+ AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
+ return authRequest.revoke(AuthToken.builder().accessToken(token).build());
+ }
+
+ /**
+ * 缁湡浠ょ墝
+ */
+ @RequestMapping("/oauth/refresh/{source}")
+ public Object refreshAuth(@PathVariable("source") String source, String token) {
+ AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
+ return authRequest.refresh(AuthToken.builder().refreshToken(token).build());
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
new file mode 100644
index 0000000..1d4aaf1
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.endpoint;
+
+import com.wf.captcha.SpecCaptcha;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import com.vci.ubcs.common.cache.CacheNames;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.jwt.JwtUtil;
+import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.launch.constant.TokenConstant;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.WebUtil;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.oauth2.common.OAuth2AccessToken;
+import org.springframework.security.oauth2.common.OAuth2RefreshToken;
+import org.springframework.security.oauth2.provider.AuthorizationRequest;
+import org.springframework.security.oauth2.provider.ClientDetailsService;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpSession;
+import java.time.Duration;
+
+import static org.springblade.core.cache.constant.CacheConstant.*;
+
+/**
+ * BladeEndPoint
+ *
+ * @author Chill
+ */
+@NonDS
+@Slf4j
+@RestController
+@AllArgsConstructor
+public class BladeTokenEndPoint {
+
+ private final BladeRedis bladeRedis;
+ private final JwtProperties jwtProperties;
+ private final ClientDetailsService clientDetailsService;
+ private final TokenStore tokenStore;
+
+ /**
+ * 鐧诲綍椤甸潰
+ */
+ @GetMapping("/oauth/login")
+ public ModelAndView require(ModelAndView model) {
+ model.setViewName("login");
+ return model;
+ }
+
+ /**
+ * 鎺堟潈椤甸潰
+ */
+ @GetMapping("/oauth/confirm_access")
+ public ModelAndView confirm(HttpSession session, ModelAndView model) {
+ Object auth = session.getAttribute("authorizationRequest");
+ if (auth != null) {
+ AuthorizationRequest authorizationRequest = (AuthorizationRequest) auth;
+ model.addObject("client", clientDetailsService.loadClientByClientId(authorizationRequest.getClientId()));
+ model.addObject("principal", SecurityContextHolder.getContext().getAuthentication().getPrincipal());
+ }
+ model.setViewName("confirm");
+ return model;
+ }
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ */
+ @GetMapping("/oauth/user-info")
+ public R<Authentication> currentUser(Authentication authentication) {
+ return R.data(authentication);
+ }
+
+ /**
+ * 楠岃瘉鐮�
+ */
+ @GetMapping("/oauth/captcha")
+ public Kv captcha() {
+ SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
+ String verCode = specCaptcha.text().toLowerCase();
+ String key = StringUtil.randomUUID();
+ // 瀛樺叆redis骞惰缃繃鏈熸椂闂翠负30鍒嗛挓
+ bladeRedis.setEx(CacheNames.CAPTCHA_KEY + key, verCode, Duration.ofMinutes(30));
+ // 灏唊ey鍜宐ase64杩斿洖缁欏墠绔�
+ return Kv.create().set("key", key).set("image", specCaptcha.toBase64());
+ }
+
+ /**
+ * 閫�鍑虹櫥褰�
+ */
+ @GetMapping("/oauth/logout")
+ public Kv logout() {
+ BladeUser user = AuthUtil.getUser();
+ String token = JwtUtil.getToken(WebUtil.getRequest().getHeader(TokenConstant.HEADER));
+ // 娓呯┖redis淇濆瓨鐨則oken
+ if (user != null && jwtProperties.getState()) {
+ JwtUtil.removeAccessToken(user.getTenantId(), String.valueOf(user.getUserId()), token);
+ }
+ // 娓呯┖璧勬簮鏈嶅姟鍣ㄤ繚瀛樼殑token
+ OAuth2AccessToken accessToken = tokenStore.readAccessToken(token);
+ OAuth2RefreshToken refreshToken = null;
+ if (accessToken != null && StringUtil.isNoneBlank(accessToken.getValue())) {
+ refreshToken = accessToken.getRefreshToken();
+ tokenStore.removeAccessToken(accessToken);
+ }
+ if (refreshToken != null && StringUtil.isNoneBlank(refreshToken.getValue())) {
+ tokenStore.removeRefreshToken(refreshToken);
+ }
+ return Kv.create().set("success", "true").set("msg", "success");
+ }
+
+ /**
+ * 缂撳瓨娓呯┖
+ */
+ @GetMapping("/oauth/clear-cache")
+ public Kv clearCache() {
+ CacheUtil.clear(BIZ_CACHE);
+ CacheUtil.clear(USER_CACHE);
+ CacheUtil.clear(DICT_CACHE);
+ CacheUtil.clear(FLOW_CACHE);
+ CacheUtil.clear(SYS_CACHE);
+ CacheUtil.clear(PARAM_CACHE);
+ CacheUtil.clear(RESOURCE_CACHE);
+ CacheUtil.clear(MENU_CACHE);
+ CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
+ CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
+ return Kv.create().set("success", "true").set("msg", "success");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/BladeTokenGranter.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/BladeTokenGranter.java
new file mode 100644
index 0000000..5a6306a
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/BladeTokenGranter.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.granter;
+
+import com.vci.ubcs.system.user.feign.IUserClient;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.social.props.SocialProperties;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
+import org.springframework.security.oauth2.provider.CompositeTokenGranter;
+import org.springframework.security.oauth2.provider.TokenGranter;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 鑷畾涔夋嫇灞昑okenGranter
+ *
+ * @author Chill
+ */
+public class BladeTokenGranter {
+
+ /**
+ * 鑷畾涔塼okenGranter
+ */
+ public static TokenGranter getTokenGranter(final AuthenticationManager authenticationManager, final AuthorizationServerEndpointsConfigurer endpoints, BladeRedis bladeRedis, IUserClient userClient, SocialProperties socialProperties) {
+ // 榛樿tokenGranter闆嗗悎
+ List<TokenGranter> granters = new ArrayList<>(Collections.singletonList(endpoints.getTokenGranter()));
+ // 澧炲姞楠岃瘉鐮佹ā寮�
+ granters.add(new CaptchaTokenGranter(authenticationManager, endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), bladeRedis));
+ // 澧炲姞绗笁鏂圭櫥闄嗘ā寮�
+ granters.add(new SocialTokenGranter(endpoints.getTokenServices(), endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory(), userClient, socialProperties));
+ // 缁勫悎tokenGranter闆嗗悎
+ return new CompositeTokenGranter(granters);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/CaptchaTokenGranter.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/CaptchaTokenGranter.java
new file mode 100644
index 0000000..31d5f6b
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/CaptchaTokenGranter.java
@@ -0,0 +1,65 @@
+package com.vci.ubcs.auth.granter;
+
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springframework.security.authentication.*;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
+import org.springframework.security.oauth2.provider.*;
+import org.springframework.security.oauth2.provider.token.AbstractTokenGranter;
+import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 楠岃瘉鐮乀okenGranter
+ *
+ * @author Chill
+ */
+public class CaptchaTokenGranter extends AbstractTokenGranter {
+
+ private static final String GRANT_TYPE = "captcha";
+
+ private final AuthenticationManager authenticationManager;
+
+ private BladeRedis bladeRedis;
+
+ public CaptchaTokenGranter(AuthenticationManager authenticationManager,
+ AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, BladeRedis bladeRedis) {
+ this(authenticationManager, tokenServices, clientDetailsService, requestFactory, GRANT_TYPE);
+ this.bladeRedis = bladeRedis;
+ }
+
+ protected CaptchaTokenGranter(AuthenticationManager authenticationManager, AuthorizationServerTokenServices tokenServices,
+ ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, String grantType) {
+ super(tokenServices, clientDetailsService, requestFactory, grantType);
+ this.authenticationManager = authenticationManager;
+ }
+
+ @Override
+ protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
+ Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
+ String username = parameters.get("username");
+ String password = parameters.get("password");
+ // Protect from downstream leaks of password
+ parameters.remove("password");
+
+ Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password);
+ ((AbstractAuthenticationToken) userAuth).setDetails(parameters);
+ try {
+ userAuth = authenticationManager.authenticate(userAuth);
+ }
+ catch (AccountStatusException | BadCredentialsException ase) {
+ //covers expired, locked, disabled cases (mentioned in section 5.2, draft 31)
+ throw new InvalidGrantException(ase.getMessage());
+ }
+ // If the username/password are wrong the spec says we should send 400/invalid grant
+
+ if (userAuth == null || !userAuth.isAuthenticated()) {
+ throw new InvalidGrantException("Could not authenticate user: " + username);
+ }
+
+ OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
+ return new OAuth2Authentication(storedOAuth2Request, userAuth);
+ }
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/SocialTokenGranter.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/SocialTokenGranter.java
new file mode 100644
index 0000000..c56eb43
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/SocialTokenGranter.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.granter;
+
+import com.vci.ubcs.auth.service.BladeUserDetails;
+import com.vci.ubcs.auth.utils.TokenUtil;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.entity.UserInfo;
+import com.vci.ubcs.system.user.entity.UserOauth;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.model.AuthResponse;
+import me.zhyd.oauth.model.AuthUser;
+import me.zhyd.oauth.request.AuthRequest;
+import com.vci.ubcs.auth.constant.AuthConstant;
+import org.springblade.core.social.props.SocialProperties;
+import org.springblade.core.social.utils.SocialUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.WebUtil;
+import org.springframework.security.authentication.AbstractAuthenticationToken;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.authority.AuthorityUtils;
+import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
+import org.springframework.security.oauth2.provider.*;
+import org.springframework.security.oauth2.provider.token.AbstractTokenGranter;
+import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * 绗笁鏂圭櫥褰曡璇佺被
+ *
+ * @author Chill
+ */
+public class SocialTokenGranter extends AbstractTokenGranter {
+ private static final String GRANT_TYPE = "social";
+ private static final Integer AUTH_SUCCESS_CODE = 2000;
+
+ private final IUserClient userClient;
+ private final SocialProperties socialProperties;
+
+ protected SocialTokenGranter(AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, IUserClient userClient, SocialProperties socialProperties) {
+ super(tokenServices, clientDetailsService, requestFactory, GRANT_TYPE);
+ this.userClient = userClient;
+ this.socialProperties = socialProperties;
+ }
+
+ @Override
+ protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
+ // 璇锋眰澶寸鎴蜂俊鎭�
+ HttpServletRequest request = WebUtil.getRequest();
+ String tenantId = Func.toStr(request.getHeader(TokenUtil.TENANT_HEADER_KEY), TokenUtil.DEFAULT_TENANT_ID);
+
+ Map<String, String> parameters = new LinkedHashMap<>(tokenRequest.getRequestParameters());
+ // 寮�鏀惧钩鍙版潵婧�
+ String sourceParameter = parameters.get("source");
+ // 鍖归厤鏄惁鏈夊埆鍚嶅畾涔�
+ String source = socialProperties.getAlias().getOrDefault(sourceParameter, sourceParameter);
+ // 寮�鏀惧钩鍙版巿鏉冪爜
+ String code = parameters.get("code");
+ // 寮�鏀惧钩鍙扮姸鎬佸悧
+ String state = parameters.get("state");
+
+ // 鑾峰彇寮�鏀惧钩鍙版巿鏉冩暟鎹�
+ AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
+ AuthCallback authCallback = new AuthCallback();
+ authCallback.setCode(code);
+ authCallback.setState(state);
+ AuthResponse authResponse = authRequest.login(authCallback);
+ AuthUser authUser;
+ if (authResponse.getCode() == AUTH_SUCCESS_CODE) {
+ authUser = (AuthUser) authResponse.getData();
+ } else {
+ throw new InvalidGrantException("social grant failure, auth response is not success");
+ }
+
+ // 缁勮鏁版嵁
+ UserOauth userOauth = Objects.requireNonNull(BeanUtil.copy(authUser, UserOauth.class));
+ userOauth.setSource(authUser.getSource());
+ userOauth.setTenantId(tenantId);
+ userOauth.setUuid(authUser.getUuid());
+
+ // 杩滅▼璋冪敤锛岃幏鍙栬璇佷俊鎭�
+ R<UserInfo> result = userClient.userAuthInfo(userOauth);
+ BladeUserDetails bladeUserDetails;
+ if (result.isSuccess()) {
+ User user = result.getData().getUser();
+ Kv detail = result.getData().getDetail();
+ if (user == null || user.getId() == null) {
+ throw new InvalidGrantException("social grant failure, user is null");
+ }
+ bladeUserDetails = new BladeUserDetails(user.getId(),
+ tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(result.getData().getRoles()), Func.toStr(userOauth.getAvatar(), TokenUtil.DEFAULT_AVATAR),
+ userOauth.getUsername(), AuthConstant.ENCRYPT + user.getPassword(), detail, true, true, true, true,
+ AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())));
+ } else {
+ throw new InvalidGrantException("social grant failure, feign client return error");
+ }
+
+ // 缁勮璁よ瘉鏁版嵁锛屽叧闂瘑鐮佹牎楠�
+ Authentication userAuth = new UsernamePasswordAuthenticationToken(bladeUserDetails, null, bladeUserDetails.getAuthorities());
+ ((AbstractAuthenticationToken) userAuth).setDetails(parameters);
+ OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
+
+ // 杩斿洖 OAuth2Authentication
+ return new OAuth2Authentication(storedOAuth2Request, userAuth);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeClientDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeClientDetailsServiceImpl.java
new file mode 100644
index 0000000..4b614cd
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeClientDetailsServiceImpl.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.service;
+
+import org.springframework.security.oauth2.provider.ClientDetails;
+import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+
+/**
+ * 瀹㈡埛绔俊鎭�
+ *
+ * @author Chill
+ */
+@Component
+public class BladeClientDetailsServiceImpl extends JdbcClientDetailsService {
+
+ public BladeClientDetailsServiceImpl(DataSource dataSource) {
+ super(dataSource);
+ }
+
+ /**
+ * 缂撳瓨瀹㈡埛绔俊鎭�
+ * clientId=saber
+ * @param clientId 瀹㈡埛绔痠d
+ */
+ @Override
+ public ClientDetails loadClientByClientId(String clientId) {
+ try {
+ return super.loadClientByClientId(clientId);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
new file mode 100644
index 0000000..bc7b230
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.service;
+
+import lombok.Getter;
+import org.springblade.core.tool.support.Kv;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+
+import java.util.Collection;
+
+/**
+ * 鐢ㄦ埛淇℃伅鎷撳睍
+ *
+ * @author Chill
+ */
+@Getter
+public class BladeUserDetails extends User {
+
+ /**
+ * 鐢ㄦ埛id
+ */
+ private final Long userId;
+ /**
+ * 绉熸埛ID
+ */
+ private final String tenantId;
+ /**
+ * 绗笁鏂硅璇両D
+ */
+ private final String oauthId;
+ /**
+ * 鏄电О
+ */
+ private final String name;
+ /**
+ * 鐪熷悕
+ */
+ private final String realName;
+ /**
+ * 璐﹀彿
+ */
+ private final String account;
+ /**
+ * 閮ㄩ棬id
+ */
+ private final String deptId;
+ /**
+ * 宀椾綅id
+ */
+ private final String postId;
+ /**
+ * 瑙掕壊id
+ */
+ private final String roleId;
+ /**
+ * 瑙掕壊鍚�
+ */
+ private final String roleName;
+ /**
+ * 澶村儚
+ */
+ private final String avatar;
+ /**
+ * 鐢ㄦ埛璇︽儏
+ */
+ private final Kv detail;
+ /**
+ * 瀵嗙爜绛栫暐淇敼鐘舵��
+ */
+ private Long strategyUpdateStatus;
+
+
+ public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus) {
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ this.userId = userId;
+ this.tenantId = tenantId;
+ this.oauthId = oauthId;
+ this.name = name;
+ this.realName = realName;
+ this.account = username;
+ this.deptId = deptId;
+ this.postId = postId;
+ this.roleId = roleId;
+ this.roleName = roleName;
+ this.avatar = avatar;
+ this.detail = detail;
+ this.strategyUpdateStatus = strategyUpdateStatus;
+ }
+
+ public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ this.userId = userId;
+ this.tenantId = tenantId;
+ this.oauthId = oauthId;
+ this.name = name;
+ this.realName = realName;
+ this.account = username;
+ this.deptId = deptId;
+ this.postId = postId;
+ this.roleId = roleId;
+ this.roleName = roleName;
+ this.avatar = avatar;
+ this.detail = detail;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
new file mode 100644
index 0000000..088979d
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.service;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.vci.ubcs.auth.constant.AuthConstant;
+import com.vci.ubcs.auth.utils.TokenUtil;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.entity.UserInfo;
+import com.vci.ubcs.system.user.enums.UserEnum;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import io.jsonwebtoken.Claims;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import me.zhyd.oauth.log.Log;
+import com.vci.ubcs.common.cache.CacheNames;
+import org.springblade.core.jwt.JwtUtil;
+import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.*;
+import com.vci.ubcs.system.cache.ParamCache;
+import com.vci.ubcs.system.entity.Strategy;
+import com.vci.ubcs.system.entity.Tenant;
+import com.vci.ubcs.system.feign.ISysClient;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.AuthorityUtils;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @author Chill
+ */
+@Service
+@RequiredArgsConstructor
+public class BladeUserDetailsServiceImpl implements UserDetailsService {
+
+ /**
+ * 鍏佽閿欒娆℃暟
+ */
+ //public static final Integer FAIL_COUNT = 5;
+ public static final String FAIL_COUNT_VALUE = "account.failCount";
+
+ /**
+ * user鏈嶅姟璋冪敤绫�
+ */
+ private final IUserClient userClient;
+
+ private final ISysClient sysClient;
+
+ private final BladeRedis bladeRedis;
+
+ private final JwtProperties jwtProperties;
+
+
+ /**
+ * 瓒呯骇绠$悊鍛樹俊鎭�
+ */
+ @Value("${user-info.tenant-id}")
+ private String tenantId;
+ @Value("${user-info.user-name}")
+ private String userName;
+ @Value("${user-info.passwrod}")
+ private String password;
+ @Value("${user-info.id}")
+ private String id;
+ @Value("${ip-whitelist.ip-enable}")
+ private Boolean ipEnable;
+ @Value("#{'${ip-whitelist.ip}'.split(',')}")
+ private List<String> ips;
+
+ @Override
+ @SneakyThrows
+ public BladeUserDetails loadUserByUsername(String username) {
+ HttpServletRequest request = WebUtil.getRequest();
+ // 鑾峰彇鐢ㄦ埛缁戝畾ID
+ String headerDept = request.getHeader(TokenUtil.DEPT_HEADER_KEY);
+ String headerRole = request.getHeader(TokenUtil.ROLE_HEADER_KEY);
+ // 鑾峰彇绉熸埛ID
+ String headerTenant = request.getHeader(TokenUtil.TENANT_HEADER_KEY);
+ String paramTenant = request.getParameter(TokenUtil.TENANT_PARAM_KEY);
+ String password = request.getParameter(TokenUtil.PASSWORD_KEY);
+ String grantType = request.getParameter(TokenUtil.GRANT_TYPE_KEY);
+ // 鍒ゆ柇绉熸埛璇锋眰澶�
+ if (StringUtil.isAllBlank(headerTenant, paramTenant)) {
+ throw new UserDeniedAuthorizationException(TokenUtil.TENANT_NOT_FOUND);
+ }
+ // 鍒ゆ柇浠ょ墝鍚堟硶鎬�
+ if (!judgeRefreshToken(grantType, request)) {
+ throw new UserDeniedAuthorizationException(TokenUtil.TOKEN_NOT_PERMISSION);
+ }
+
+ // 鎸囧畾绉熸埛ID
+ String tenantId = StringUtils.isBlank(headerTenant) ? paramTenant : headerTenant;
+
+ Log.debug("褰撳墠鐧诲綍鐢ㄦ埛鐨勭鎴稩d涓猴細"+tenantId+"褰撳墠鐧诲綍鐢ㄦ埛鍚嶄负锛�"+username);
+ Strategy strategy = sysClient.getByTenantIdAndName(tenantId, username).getData();
+
+ // 鍒ゆ柇鐧诲綍鏄惁閿佸畾
+ int count = getFailCount(tenantId, username);
+ int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), Func.toInt(strategy.getLockingNum()));
+
+ if (count >= failCount) {
+ throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
+ }
+ //瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id涓�000000
+ if(tenantId.equals(this.tenantId)){
+ if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) {
+ setFailCount(tenantId, username, count,strategy.getLockingTime());
+ throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+ }
+ //濡傛灉ip姣斿鍚巊et鎶涘嚭寮傚父No value present灏辩洿鎺ユ姏寮傚父缁撴潫鐧诲綍
+ if(ipEnable){
+ Log.debug("褰撳墠璁块棶IP锛�"+getIpAddress(request));
+ try {
+ ips.stream().filter(s -> s.equals(getIpAddress(request))).findFirst().get();
+ } catch (Exception e){
+ throw new UserDeniedAuthorizationException(TokenUtil.IP_NOT_FOND);
+ }
+ }
+
+ ArrayList<GrantedAuthority> authorities = new ArrayList<>();
+ authorities.add(new SimpleGrantedAuthority("administrator"));
+ // 鎴愬姛鍒欐竻闄ょ櫥褰曢敊璇鏁�
+ delFailCount(tenantId, username);
+ Kv kv = Kv.create();
+ kv.set("type","web");
+ return new BladeUserDetails(
+ new Long(this.id),this.tenantId, StringPool.EMPTY, "瓒呯骇绠$悊鍛�", "瓒呯骇绠$悊鍛�",this.id, this.id,"1123598816738675201",
+ "administrator","https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" ,this.userName, AuthConstant.ENCRYPT + this.password, kv,
+ true, true, true, true,authorities
+ );
+ }else {
+ R<Tenant> tenant = sysClient.getTenant(tenantId);
+
+ if (tenant.isSuccess()) {
+ if (TokenUtil.judgeTenant(tenant.getData())) {
+ throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION);
+ }
+ } else {
+ throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT);
+ }
+
+ // 鑾峰彇鐢ㄦ埛绫诲瀷
+ String userType = Func.toStr(request.getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE);
+
+ // 杩滅▼璋冪敤杩斿洖鏁版嵁
+ R<UserInfo> result;
+ // 鏍规嵁涓嶅悓鐢ㄦ埛绫诲瀷璋冪敤瀵瑰簲鐨勬帴鍙h繑鍥炴暟鎹紝鐢ㄦ埛鍙嚜琛屾嫇灞�
+ if (userType.equals(UserEnum.WEB.getName())) {
+ result = userClient.userInfo(tenantId, username, UserEnum.WEB.getName());
+ } else if (userType.equals(UserEnum.APP.getName())) {
+ result = userClient.userInfo(tenantId, username, UserEnum.APP.getName());
+ } else {
+ result = userClient.userInfo(tenantId, username, UserEnum.OTHER.getName());
+ }
+
+ // 鍒ゆ柇杩斿洖淇℃伅
+ if (result.isSuccess()) {
+ UserInfo userInfo = result.getData();
+ User user = userInfo.getUser();
+ // 鐢ㄦ埛涓嶅瓨鍦�,浣嗘彁绀虹敤鎴峰悕涓庡瘑鐮侀敊璇苟閿佸畾璐﹀彿
+ if (user == null || user.getId() == null) {
+ setFailCount(tenantId, username, count,strategy.getLockingTime());
+ throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+ }
+ String hex = DigestUtil.hex(password);
+ // 鐢ㄦ埛瀛樺湪浣嗗瘑鐮侀敊璇�,瓒呰繃娆℃暟鍒欓攣瀹氳处鍙�
+ if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(hex)) {
+ setFailCount(tenantId, username, count,strategy.getLockingTime());
+ throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+ }
+ // 鐢ㄦ埛瑙掕壊涓嶅瓨鍦�
+ if (Func.isEmpty(userInfo.getRoles())) {
+ throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_ROLE);
+ }
+ // 澶氶儴闂ㄦ儏鍐典笅鎸囧畾鍗曢儴闂�
+ if (Func.isNotEmpty(headerDept) && user.getDeptId().contains(headerDept)) {
+ user.setDeptId(headerDept);
+ }
+ // 澶氳鑹叉儏鍐典笅鎸囧畾鍗曡鑹�
+ if (Func.isNotEmpty(headerRole) && user.getRoleId().contains(headerRole)) {
+ R<List<String>> roleResult = sysClient.getRoleAliases(headerRole);
+ if (roleResult.isSuccess()) {
+ userInfo.setRoles(roleResult.getData());
+ }
+ user.setRoleId(headerRole);
+ }
+ // 鎴愬姛鍒欐竻闄ょ櫥褰曢敊璇鏁�
+ delFailCount(tenantId, username);
+ //濉厖鐢ㄦ埛淇℃伅鍒扮敤鎴蜂俊鎭墿灞曠被
+ BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(),
+ user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
+ username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true,
+ AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus());
+ return bladeUserDetails;
+ } else {
+ throw new UsernameNotFoundException(result.getMsg());
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇瀹㈡埛绔痠p锛屽鎴风鍙兘缁忚繃浠g悊锛屼篃鍙兘娌$粡杩囦唬鐞�
+ * 濡傚紑鍚櫄鎷熸満鐨勬儏鍐典篃鍙兘瀵艰嚧鑾峰彇鍒扮殑鏄櫄鎷熸満鐨刬p
+ * @param request
+ * @return
+ */
+ public static String getIpAddress(HttpServletRequest request){
+ String ip = request.getHeader("x-forwarded-for");
+ if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+ // 澶氭鍙嶅悜浠g悊鍚庝細鏈夊涓猧p鍊硷紝绗竴涓猧p鎵嶆槸鐪熷疄ip
+ ip = ip.split(",")[0];
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("Proxy-Client-IP");
+ System.out.println("Proxy-Client-IP"+ip);
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("WL-Proxy-Client-IP");
+ System.out.println("WL-Proxy-Client-IP"+ip);
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_CLIENT_IP");
+ System.out.println("HTTP_CLIENT_IP"+ip);
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+ System.out.println("HTTP_X_FORWARDED_FOR"+ip);
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("X-Real-IP");
+ System.out.println("X-Real-IP"+ip);
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getRemoteAddr();
+ System.out.println("getRemoteAddr"+ip);
+ }
+ //濡傛灉娌″彇鍒癷p锛岃繑鍥�""
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = "";
+ }
+ return ip;
+ }
+
+ /**
+ * 鑾峰彇璐﹀彿閿欒娆℃暟
+ *
+ * @param tenantId 绉熸埛id
+ * @param username 璐﹀彿
+ * @return int
+ */
+ private int getFailCount(String tenantId, String username) {
+ return Func.toInt(bladeRedis.get(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username)), 0);
+ }
+
+ /**
+ * 璁剧疆璐﹀彿閿欒娆℃暟
+ *
+ * @param tenantId 绉熸埛id
+ * @param username 璐﹀彿
+ * @param count 娆℃暟
+ */
+ private void setFailCount(String tenantId, String username, int count, Long expir) {
+ bladeRedis.setEx(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username), count + 1, Duration.ofMinutes(expir));
+ }
+
+ /**
+ * 娓呯┖璐﹀彿閿欒娆℃暟
+ *
+ * @param tenantId 绉熸埛id
+ * @param username 璐﹀彿
+ */
+ private void delFailCount(String tenantId, String username) {
+ bladeRedis.del(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username));
+ }
+
+ /**
+ * 鏍¢獙refreshToken鍚堟硶鎬�
+ *
+ * @param grantType 璁よ瘉绫诲瀷
+ * @param request 璇锋眰
+ */
+ private boolean judgeRefreshToken(String grantType, HttpServletRequest request) {
+ if (jwtProperties.getState() && jwtProperties.getSingle() && StringUtil.equals(grantType, TokenUtil.REFRESH_TOKEN_KEY)) {
+ String refreshToken = request.getParameter(TokenUtil.REFRESH_TOKEN_KEY);
+ Claims claims = JwtUtil.parseJWT(refreshToken);
+ String tenantId = String.valueOf(claims.get("tenant_id"));
+ String userId = String.valueOf(claims.get("user_id"));
+ String token = JwtUtil.getRefreshToken(tenantId, userId, refreshToken);
+ return StringUtil.equalsIgnoreCase(token, refreshToken);
+ }
+ return true;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
new file mode 100644
index 0000000..74b24bd
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.support;
+
+import com.vci.ubcs.auth.service.BladeUserDetails;
+import com.vci.ubcs.auth.utils.TokenUtil;
+import lombok.AllArgsConstructor;
+import org.springblade.core.jwt.JwtUtil;
+import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
+import org.springframework.security.oauth2.common.OAuth2AccessToken;
+import org.springframework.security.oauth2.common.OAuth2RefreshToken;
+import org.springframework.security.oauth2.provider.OAuth2Authentication;
+import org.springframework.security.oauth2.provider.token.TokenEnhancer;
+import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * jwt杩斿洖鍙傛暟澧炲己
+ *
+ * @author Chill
+ */
+@AllArgsConstructor
+public class BladeJwtTokenEnhancer implements TokenEnhancer {
+
+ private final JwtAccessTokenConverter jwtAccessTokenConverter;
+ private final JwtProperties jwtProperties;
+
+ @Override
+ public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
+ BladeUserDetails principal = (BladeUserDetails) authentication.getUserAuthentication().getPrincipal();
+
+ //token鍙傛暟澧炲己
+ Map<String, Object> info = new HashMap<>(16);
+ info.put(TokenUtil.CLIENT_ID, TokenUtil.getClientIdFromHeader());
+ info.put(TokenUtil.USER_ID, Func.toStr(principal.getUserId()));
+ info.put(TokenUtil.DEPT_ID, Func.toStr(principal.getDeptId()));
+ info.put(TokenUtil.POST_ID, Func.toStr(principal.getPostId()));
+ info.put(TokenUtil.ROLE_ID, Func.toStr(principal.getRoleId()));
+ info.put(TokenUtil.TENANT_ID, principal.getTenantId());
+ info.put(TokenUtil.OAUTH_ID, principal.getOauthId());
+ info.put(TokenUtil.ACCOUNT, principal.getAccount());
+ info.put(TokenUtil.USER_NAME, principal.getUsername());
+ info.put(TokenUtil.NICK_NAME, principal.getName());
+ info.put(TokenUtil.REAL_NAME, principal.getRealName());
+ info.put(TokenUtil.ROLE_NAME, principal.getRoleName());
+ info.put(TokenUtil.AVATAR, principal.getAvatar());
+ info.put(TokenUtil.DETAIL, principal.getDetail());
+ info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME);
+ info.put(TokenUtil.STRATEGYUPDATESTATUS, principal.getStrategyUpdateStatus());
+ ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);
+
+ //token鐘舵�佽缃�
+ if (jwtProperties.getState()) {
+ OAuth2AccessToken oAuth2AccessToken = jwtAccessTokenConverter.enhance(accessToken, authentication);
+ String accessTokenValue = oAuth2AccessToken.getValue();
+ String tenantId = principal.getTenantId();
+ String userId = Func.toStr(principal.getUserId());
+ JwtUtil.addAccessToken(tenantId, userId, accessTokenValue, accessToken.getExpiresIn());
+
+ if (jwtProperties.getSingle()) {
+ OAuth2RefreshToken oAuth2RefreshToken = oAuth2AccessToken.getRefreshToken();
+ String refreshTokenValue = oAuth2RefreshToken.getValue();
+ JwtUtil.addRefreshToken(tenantId, userId, refreshTokenValue, accessToken.getExpiresIn() * 168);
+ }
+ }
+
+ return accessToken;
+ }
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeNoOpPasswordEncoder.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeNoOpPasswordEncoder.java
new file mode 100644
index 0000000..1b8d839
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeNoOpPasswordEncoder.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.support;
+
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+/**
+ * 鏃犲瘑鐮佸姞瀵�
+ *
+ * @author Chill
+ */
+public class BladeNoOpPasswordEncoder implements PasswordEncoder {
+
+ @Override
+ public String encode(CharSequence rawPassword) {
+ return rawPassword.toString();
+ }
+
+ @Override
+ public boolean matches(CharSequence rawPassword, String encodedPassword) {
+ return rawPassword.toString().equals(encodedPassword);
+ }
+
+ /**
+ * Get the singleton {@link BladeNoOpPasswordEncoder}.
+ */
+ public static PasswordEncoder getInstance() {
+ return INSTANCE;
+ }
+
+ private static final PasswordEncoder INSTANCE = new BladeNoOpPasswordEncoder();
+
+ private BladeNoOpPasswordEncoder() {
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoder.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoder.java
new file mode 100644
index 0000000..9c3ba44
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoder.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.support;
+
+import org.springblade.core.tool.utils.DigestUtil;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+/**
+ * 鑷畾涔夊瘑鐮佸姞瀵�
+ *
+ * @author Chill
+ */
+public class BladePasswordEncoder implements PasswordEncoder {
+
+ @Override
+ public String encode(CharSequence rawPassword) {
+ return DigestUtil.hex((String) rawPassword);
+ }
+
+ @Override
+ public boolean matches(CharSequence rawPassword, String encodedPassword) {
+ return encodedPassword.equals(encode(rawPassword));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoderFactories.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoderFactories.java
new file mode 100644
index 0000000..b1ab109
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladePasswordEncoderFactories.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2002-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.vci.ubcs.auth.support;
+
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
+import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 鑷畾涔夊瘑鐮佸伐鍘�
+ *
+ * @author Rob Winch, Chill
+ * @since 5.0
+ */
+public class BladePasswordEncoderFactories {
+
+ /**
+ * Creates a {@link DelegatingPasswordEncoder} with default mappings. Additional
+ * mappings may be added and the encoding will be updated to conform with best
+ * practices. However, due to the nature of {@link DelegatingPasswordEncoder} the
+ * updates should not impact users. The mappings current are:
+ *
+ * <ul>
+ * <li>blade - {@link BladePasswordEncoder} (sha1(md5("password")))</li>
+ * <li>bcrypt - {@link BCryptPasswordEncoder} (Also used for encoding)</li>
+ * <li>noop - {@link BladeNoOpPasswordEncoder}</li>
+ * <li>pbkdf2 - {@link Pbkdf2PasswordEncoder}</li>
+ * <li>scrypt - {@link SCryptPasswordEncoder}</li>
+ * </ul>
+ *
+ * @return the {@link PasswordEncoder} to use
+ */
+ public static PasswordEncoder createDelegatingPasswordEncoder() {
+ String encodingId = "blade";
+ Map<String, PasswordEncoder> encoders = new HashMap<>(16);
+ encoders.put(encodingId, new BladePasswordEncoder());
+ encoders.put("bcrypt", new BCryptPasswordEncoder());
+ encoders.put("noop", BladeNoOpPasswordEncoder.getInstance());
+ encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
+ encoders.put("scrypt", new SCryptPasswordEncoder());
+
+ return new DelegatingPasswordEncoder(encodingId, encoders);
+ }
+
+ private BladePasswordEncoderFactories() {
+ }
+
+}
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
new file mode 100644
index 0000000..386b7bc
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.auth.utils;
+
+import lombok.SneakyThrows;
+import com.vci.ubcs.common.constant.TenantConstant;
+import org.springblade.core.launch.constant.TokenConstant;
+import org.springblade.core.tenant.BladeTenantProperties;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.*;
+import com.vci.ubcs.system.entity.Tenant;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException;
+import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException;
+
+import java.util.Base64;
+import java.util.Calendar;
+
+/**
+ * 璁よ瘉宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class TokenUtil {
+
+ public final static String AVATAR = TokenConstant.AVATAR;
+ public final static String ACCOUNT = TokenConstant.ACCOUNT;
+ public final static String USER_NAME = TokenConstant.USER_NAME;
+ public final static String NICK_NAME = TokenConstant.NICK_NAME;
+ public final static String REAL_NAME = TokenConstant.REAL_NAME;
+ public final static String USER_ID = TokenConstant.USER_ID;
+ public final static String DEPT_ID = TokenConstant.DEPT_ID;
+ public final static String POST_ID = TokenConstant.POST_ID;
+ public final static String ROLE_ID = TokenConstant.ROLE_ID;
+ public final static String ROLE_NAME = TokenConstant.ROLE_NAME;
+ public final static String TENANT_ID = TokenConstant.TENANT_ID;
+ public final static String OAUTH_ID = TokenConstant.OAUTH_ID;
+ public final static String CLIENT_ID = TokenConstant.CLIENT_ID;
+ public final static String DETAIL = TokenConstant.DETAIL;
+ public final static String LICENSE = TokenConstant.LICENSE;
+ public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME;
+ public final static String STRATEGYUPDATESTATUS = "strategyUpdateStatus";
+
+ public final static String DEPT_HEADER_KEY = "Dept-Id";
+ public final static String ROLE_HEADER_KEY = "Role-Id";
+ public final static String CAPTCHA_HEADER_KEY = "Captcha-Key";
+ public final static String CAPTCHA_HEADER_CODE = "Captcha-Code";
+ public final static String CAPTCHA_NOT_CORRECT = "楠岃瘉鐮佷笉姝g‘";
+ public final static String TENANT_HEADER_KEY = "Tenant-Id";
+ public final static String TENANT_PARAM_KEY = "tenant_id";
+ public final static String DEFAULT_TENANT_ID = "000000";
+ public final static String TENANT_NOT_FOUND = "绉熸埛ID鏈壘鍒�";
+ public final static String USER_TYPE_HEADER_KEY = "User-Type";
+ public final static String DEFAULT_USER_TYPE = "web";
+ public final static String TOKEN_NOT_PERMISSION = "浠ょ墝鎺堟潈宸茶繃鏈�";
+ public final static String USER_NOT_FOUND = "鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒";
+ public final static String USER_HAS_NO_ROLE = "鏈幏寰楃敤鎴风殑瑙掕壊淇℃伅";
+ public final static String USER_HAS_NO_TENANT = "鏈幏寰楃敤鎴风殑绉熸埛淇℃伅";
+ public final static String USER_HAS_NO_TENANT_PERMISSION = "绉熸埛鎺堟潈宸茶繃鏈�,璇疯仈绯荤鐞嗗憳";
+ public final static String USER_HAS_TOO_MANY_FAILS = "鐧诲綍閿欒娆℃暟杩囧,璇风◢鍚庡啀璇�";
+ public final static String IP_NOT_FOND = "璇P鍦板潃鏃犺闂潈闄愶紝璇烽厤缃甀P鐧藉悕鍗�";
+ public final static String HEADER_KEY = "Authorization";
+ public final static String HEADER_PREFIX = "Basic ";
+ public final static String DEFAULT_AVATAR = "";
+ public final static String PASSWORD_KEY = "password";
+ public final static String GRANT_TYPE_KEY = "grant_type";
+ public final static String REFRESH_TOKEN_KEY = "refresh_token";
+
+ private static BladeTenantProperties tenantProperties;
+
+ /**
+ * 鑾峰彇绉熸埛閰嶇疆
+ *
+ * @return tenantProperties
+ */
+ private static BladeTenantProperties getTenantProperties() {
+ if (tenantProperties == null) {
+ tenantProperties = SpringUtil.getBean(BladeTenantProperties.class);
+ }
+ return tenantProperties;
+ }
+
+ /**
+ * 瑙g爜
+ */
+ @SneakyThrows
+ public static String[] extractAndDecodeHeader() {
+ String header = WebUtil.getRequest().getHeader(TokenUtil.HEADER_KEY);
+ if (header == null || !header.startsWith(TokenUtil.HEADER_PREFIX)) {
+ throw new UnapprovedClientAuthenticationException("璇锋眰澶翠腑鏃燾lient淇℃伅");
+ }
+
+ byte[] base64Token = header.substring(6).getBytes(Charsets.UTF_8_NAME);
+
+ byte[] decoded;
+ try {
+ decoded = Base64.getDecoder().decode(base64Token);
+ } catch (IllegalArgumentException var7) {
+ throw new BadCredentialsException("Failed to decode basic authentication token");
+ }
+
+ String token = new String(decoded, Charsets.UTF_8_NAME);
+ int index = token.indexOf(StringPool.COLON);
+ if (index == -1) {
+ throw new BadCredentialsException("Invalid basic authentication token");
+ } else {
+ return new String[]{token.substring(0, index), token.substring(index + 1)};
+ }
+ }
+
+ /**
+ * 鑾峰彇璇锋眰澶翠腑鐨勫鎴风id
+ */
+ public static String getClientIdFromHeader() {
+ String[] tokens = extractAndDecodeHeader();
+ return tokens[0];
+ }
+
+ /**
+ * 鑾峰彇token杩囨湡鏃堕棿(娆℃棩鍑屾櫒3鐐�)
+ *
+ * @return expire
+ */
+ public static int getTokenValiditySecond() {
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.DAY_OF_YEAR, 1);
+ cal.set(Calendar.HOUR_OF_DAY, 3);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MINUTE, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ return (int) (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
+ }
+
+ /**
+ * 鑾峰彇refreshToken杩囨湡鏃堕棿
+ *
+ * @return expire
+ */
+ public static int getRefreshTokenValiditySeconds() {
+ return 60 * 60 * 24 * 15;
+ }
+
+ /**
+ * 鍒ゆ柇绉熸埛鏉冮檺
+ *
+ * @param tenant 绉熸埛淇℃伅
+ * @return boolean
+ */
+ public static boolean judgeTenant(Tenant tenant) {
+ if (tenant == null || tenant.getId() == null) {
+ throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_NO_TENANT);
+ }
+ if (StringUtil.equalsIgnoreCase(tenant.getTenantId(), BladeConstant.ADMIN_TENANT_ID)) {
+ return false;
+ }
+ if (getTenantProperties().getLicense()) {
+ String licenseKey = tenant.getLicenseKey();
+ String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY);
+ }
+ return false;
+ }
+
+}
diff --git a/Source/BladeX/blade-auth/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-auth/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-auth/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-auth/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-auth/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-auth/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-auth/src/main/resources/application-test.yml b/Source/UBCS/ubcs-auth/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-auth/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-auth/src/main/resources/application.yml b/Source/UBCS/ubcs-auth/src/main/resources/application.yml
new file mode 100644
index 0000000..23c2497
--- /dev/null
+++ b/Source/UBCS/ubcs-auth/src/main/resources/application.yml
@@ -0,0 +1,65 @@
+# 鍦ㄤ娇鐢⊿pring榛樿鏁版嵁婧怘ikari鐨勬儏鍐典笅閰嶇疆浠ヤ笅閰嶇疆椤�
+spring:
+ datasource:
+ hikari:
+ # 鑷姩鎻愪氦浠庢睜涓繑鍥炵殑杩炴帴
+ auto-commit: true
+ # 杩炴帴姹犱腑缁存姢鐨勬渶灏忕┖闂茶繛鎺ユ暟
+ minimum-idle: 10
+ # 杩炴帴姹犱腑鍏佽鐨勬渶澶ц繛鎺ユ暟銆傜己鐪佸�硷細10锛涙帹鑽愮殑鍏紡锛�((core_count * 2) + effective_spindle_count)
+ maximum-pool-size: 60
+ # 绌洪棽杩炴帴瓒呮椂鏃堕棿锛岄粯璁ゅ��600000锛�10鍒嗛挓锛夛紝澶т簬绛変簬max-lifetime涓攎ax-lifetime>0锛屼細琚噸缃负0锛涗笉绛変簬0涓斿皬浜�10绉掞紝浼氳閲嶇疆涓�10绉掋��
+ # 鍙湁绌洪棽杩炴帴鏁板ぇ浜庢渶澶ц繛鎺ユ暟涓旂┖闂叉椂闂磋秴杩囪鍊硷紝鎵嶄細琚噴鏀�
+ idle-timeout: 30000
+ # 杩炴帴鏈�澶у瓨娲绘椂闂�.涓嶇瓑浜�0涓斿皬浜�30绉掞紝浼氳閲嶇疆涓洪粯璁ゅ��30鍒嗛挓.璁剧疆搴旇姣攎ysql璁剧疆鐨勮秴鏃舵椂闂寸煭
+ max-lifetime: 1800000
+ # 绛夊緟杩炴帴姹犲垎閰嶈繛鎺ョ殑鏈�澶ф椂闀匡紙姣锛夛紝瓒呰繃杩欎釜鏃堕暱杩樻病鍙敤鐨勮繛鎺ュ垯鍙戠敓SQLException锛� 缂虹渷:30绉�
+ connection-timeout: 30000
+ # 杩炴帴娴嬭瘯鏌ヨ
+ #connection-test-query: select 1
+ #connection-test-query: SELECT 1 FROM dual
+ freemarker:
+ # 妯℃澘鍚庣紑鍚�
+ suffix: .ftl
+ # 鏂囨。绫诲瀷
+ content-type: text/html
+ # 椤甸潰缂栫爜
+ charset: UTF-8
+ # 椤甸潰缂撳瓨
+ cache: false
+ # 妯℃澘璺緞
+ template-loader-path: classpath:/templates/
+ web:
+ # 璧勬簮璺緞
+ resources:
+ static-locations: classpath:/static/
+
+#swagger鏂囨。
+swagger:
+ base-packages:
+ - org.springblade
+ - org.springframework.security.oauth2.provider.endpoint
+
+#绗笁鏂圭櫥闄�
+social:
+ oauth:
+ GITHUB:
+ client-id: 233************
+ client-secret: 233************************************
+ redirect-uri: ${social.domain}/oauth/redirect/github
+ GITEE:
+ client-id: 233************
+ client-secret: 233************************************
+ redirect-uri: ${social.domain}/oauth/redirect/gitee
+ WECHAT_OPEN:
+ client-id: 233************
+ client-secret: 233************************************
+ redirect-uri: ${social.domain}/oauth/redirect/wechat
+ QQ:
+ client-id: 233************
+ client-secret: 233************************************
+ redirect-uri: ${social.domain}/oauth/redirect/qq
+ DINGTALK:
+ client-id: 233************
+ client-secret: 233************************************
+ redirect-uri: ${social.domain}/oauth/redirect/dingtalk
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/css/bootstrap.min.css b/Source/UBCS/ubcs-auth/src/main/resources/static/css/bootstrap.min.css
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/css/bootstrap.min.css
rename to Source/UBCS/ubcs-auth/src/main/resources/static/css/bootstrap.min.css
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/css/iofrm-style.css b/Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-style.css
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/css/iofrm-style.css
rename to Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-style.css
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/css/iofrm-theme.css b/Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-theme.css
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/css/iofrm-theme.css
rename to Source/UBCS/ubcs-auth/src/main/resources/static/css/iofrm-theme.css
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/js/bootstrap.min.js b/Source/UBCS/ubcs-auth/src/main/resources/static/js/bootstrap.min.js
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/js/bootstrap.min.js
rename to Source/UBCS/ubcs-auth/src/main/resources/static/js/bootstrap.min.js
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/js/jquery.min.js b/Source/UBCS/ubcs-auth/src/main/resources/static/js/jquery.min.js
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/js/jquery.min.js
rename to Source/UBCS/ubcs-auth/src/main/resources/static/js/jquery.min.js
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/js/md5.js b/Source/UBCS/ubcs-auth/src/main/resources/static/js/md5.js
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/js/md5.js
rename to Source/UBCS/ubcs-auth/src/main/resources/static/js/md5.js
diff --git a/Source/BladeX/blade-auth/src/main/resources/static/js/popper.min.js b/Source/UBCS/ubcs-auth/src/main/resources/static/js/popper.min.js
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/static/js/popper.min.js
rename to Source/UBCS/ubcs-auth/src/main/resources/static/js/popper.min.js
diff --git a/Source/BladeX/blade-auth/src/main/resources/templates/confirm.ftl b/Source/UBCS/ubcs-auth/src/main/resources/templates/confirm.ftl
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/templates/confirm.ftl
rename to Source/UBCS/ubcs-auth/src/main/resources/templates/confirm.ftl
diff --git a/Source/BladeX/blade-auth/src/main/resources/templates/login.ftl b/Source/UBCS/ubcs-auth/src/main/resources/templates/login.ftl
similarity index 100%
rename from Source/BladeX/blade-auth/src/main/resources/templates/login.ftl
rename to Source/UBCS/ubcs-auth/src/main/resources/templates/login.ftl
diff --git a/Source/UBCS/ubcs-common/pom.xml b/Source/UBCS/ubcs-common/pom.xml
new file mode 100644
index 0000000..96a7d1a
--- /dev/null
+++ b/Source/UBCS/ubcs-common/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-common</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-loadbalancer</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ <finalName>${project.name}</finalName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/cache/CacheNames.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/cache/CacheNames.java
new file mode 100644
index 0000000..62bd0c5
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/cache/CacheNames.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.cache;
+
+/**
+ * 缂撳瓨鍚�
+ *
+ * @author Chill
+ */
+public interface CacheNames {
+
+ /**
+ * 杩斿洖鎷兼帴鍚庣殑key
+ *
+ * @param cacheKey 缂撳瓨key
+ * @param cacheKeyValue 缂撳瓨key鍊�
+ * @return tenantKey
+ */
+ static String cacheKey(String cacheKey, String cacheKeyValue) {
+ return cacheKey.concat(cacheKeyValue);
+ }
+
+ /**
+ * 杩斿洖绉熸埛鏍煎紡鐨刱ey
+ *
+ * @param tenantId 绉熸埛缂栧彿
+ * @param cacheKey 缂撳瓨key
+ * @param cacheKeyValue 缂撳瓨key鍊�
+ * @return tenantKey
+ */
+ static String tenantKey(String tenantId, String cacheKey, String cacheKeyValue) {
+ return tenantId.concat(":").concat(cacheKey).concat(cacheKeyValue);
+ }
+
+ /**
+ * 楠岃瘉鐮乲ey
+ */
+ String CAPTCHA_KEY = "blade:auth::blade:captcha:";
+
+ /**
+ * 鐧诲綍澶辫触key
+ */
+ String USER_FAIL_KEY = "blade:user::blade:fail:";
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/config/BladeCommonConfiguration.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/config/BladeCommonConfiguration.java
new file mode 100644
index 0000000..5872175
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/config/BladeCommonConfiguration.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.config;
+
+
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 鍏叡灏佽鍖呴厤缃被
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+public class BladeCommonConfiguration {
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java
new file mode 100644
index 0000000..9b6dffa
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.constant;
+
+/**
+ * 閫氱敤甯搁噺
+ *
+ * @author Chill
+ */
+public interface CommonConstant {
+
+ /**
+ * sword 绯荤粺鍚�
+ */
+ String SWORD_NAME = "sword";
+
+ /**
+ * saber 绯荤粺鍚�
+ */
+ String SABER_NAME = "saber";
+
+ /**
+ * 椤剁骇鐖惰妭鐐筰d
+ */
+ Long TOP_PARENT_ID = 0L;
+
+ /**
+ * 椤剁骇鐖惰妭鐐瑰悕绉�
+ */
+ String TOP_PARENT_NAME = "椤剁骇";
+
+ /**
+ * 鏈皝瀛樼姸鎬佸��
+ */
+ Integer NOT_SEALED_ID = 0;
+
+ /**
+ * 榛樿瀵嗙爜
+ */
+ String DEFAULT_PASSWORD = "123456";
+
+ /**
+ * 榛樿瀵嗙爜鍙傛暟鍊�
+ */
+ String DEFAULT_PARAM_PASSWORD = "account.initPassword";
+
+ /**
+ * 榛樿鎺掑簭瀛楁
+ */
+ String SORT_FIELD = "sort";
+
+ /**
+ * 鏁版嵁鏉冮檺绫诲瀷
+ */
+ Integer DATA_SCOPE_CATEGORY = 1;
+
+ /**
+ * 鎺ュ彛鏉冮檺绫诲瀷
+ */
+ Integer API_SCOPE_CATEGORY = 2;
+
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
new file mode 100644
index 0000000..c372f84
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.constant;
+
+import org.springblade.core.launch.constant.AppConstant;
+
+import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
+
+/**
+ * 鍚姩甯搁噺
+ *
+ * @author Chill
+ */
+public interface LauncherConstant {
+
+ /**
+ * xxljob
+ */
+ String APPLICATION_XXLJOB_NAME = APPLICATION_NAME_PREFIX + "xxljob";
+
+ /**
+ * xxljob
+ */
+ String APPLICATION_XXLJOB_ADMIN_NAME = APPLICATION_NAME_PREFIX + "xxljob-admin";
+
+ /**
+ * nacos dev 鍦板潃
+ */
+ //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
+ String NACOS_DEV_ADDR = "192.168.93.133:38848";
+
+ /**
+ * nacos prod 鍦板潃
+ */
+ //String NACOS_PROD_ADDR = "dev.vci-tech.com:38848";
+ String NACOS_PROD_ADDR = "192.168.93.129:38848";
+
+ /**
+ * nacos test 鍦板潃
+ */
+ //String NACOS_TEST_ADDR = "dev.vci-tech.com:38848";
+ String NACOS_TEST_ADDR = "192.168.93.133:38848";
+
+ /**
+ * sentinel dev 鍦板潃
+ */
+ //String SENTINEL_DEV_ADDR = "127.0.0.1:8858";
+
+ /**
+ * sentinel prod 鍦板潃
+ */
+ //String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
+
+ /**
+ * sentinel test 鍦板潃
+ */
+ //String SENTINEL_TEST_ADDR = "172.30.0.58:8858";
+
+ /**
+ * seata dev 鍦板潃
+ */
+ String SEATA_DEV_ADDR = "127.0.0.1:8091";
+
+ /**
+ * seata prod 鍦板潃
+ */
+ String SEATA_PROD_ADDR = "172.30.0.68:8091";
+
+ /**
+ * seata test 鍦板潃
+ */
+ String SEATA_TEST_ADDR = "172.30.0.68:8091";
+
+ /**
+ * zipkin dev 鍦板潃
+ */
+ String ZIPKIN_DEV_ADDR = "http://dev.vci-tech.com:38006";
+
+ /**
+ * zipkin prod 鍦板潃
+ */
+ String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411";
+
+ /**
+ * zipkin test 鍦板潃
+ */
+ String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411";
+
+ /**
+ * elk dev 鍦板潃
+ */
+ String ELK_DEV_ADDR = "dev.vci-tech.com:38002";
+
+ /**
+ * elk prod 鍦板潃
+ */
+ String ELK_PROD_ADDR = "dev.vci-tech.com:38002";
+
+ /**
+ * elk test 鍦板潃
+ */
+ String ELK_TEST_ADDR = "dev.vci-tech.com:38002";
+
+ /**
+ * seata file妯″紡
+ */
+ String FILE_MODE = "file";
+
+ /**
+ * seata nacos妯″紡
+ */
+ String NACOS_MODE = "nacos";
+
+ /**
+ * seata default妯″紡
+ */
+ String DEFAULT_MODE = "default";
+
+ /**
+ * seata group鍚庣紑
+ */
+ String GROUP_NAME = "-group";
+
+ /**
+ * seata 鏈嶅姟缁勬牸寮�
+ *
+ * @param appName 鏈嶅姟鍚�
+ * @return group
+ */
+ static String seataServiceGroup(String appName) {
+ return appName.concat(GROUP_NAME);
+ }
+
+ /**
+ * 鍔ㄦ�佽幏鍙杗acos鍦板潃
+ *
+ * @param profile 鐜鍙橀噺
+ * @return addr
+ */
+ static String nacosAddr(String profile) {
+ switch (profile) {
+ case (AppConstant.PROD_CODE):
+ return NACOS_PROD_ADDR;
+ case (AppConstant.TEST_CODE):
+ return NACOS_TEST_ADDR;
+ default:
+ return NACOS_DEV_ADDR;
+ }
+ }
+
+ /**
+ * 鍔ㄦ�佽幏鍙杝entinel鍦板潃
+ *
+ * @param profile 鐜鍙橀噺
+ * @return addr
+ */
+/* static String sentinelAddr(String profile) {
+ switch (profile) {
+ case (AppConstant.PROD_CODE):
+ return SENTINEL_PROD_ADDR;
+ case (AppConstant.TEST_CODE):
+ return SENTINEL_TEST_ADDR;
+ default:
+ return SENTINEL_DEV_ADDR;
+ }
+ }*/
+
+ /**
+ * 鍔ㄦ�佽幏鍙杝eata鍦板潃
+ *
+ * @param profile 鐜鍙橀噺
+ * @return addr
+ */
+ static String seataAddr(String profile) {
+ switch (profile) {
+ case (AppConstant.PROD_CODE):
+ return SEATA_PROD_ADDR;
+ case (AppConstant.TEST_CODE):
+ return SEATA_TEST_ADDR;
+ default:
+ return SEATA_DEV_ADDR;
+ }
+ }
+
+ /**
+ * 鍔ㄦ�佽幏鍙杬ipkin鍦板潃
+ *
+ * @param profile 鐜鍙橀噺
+ * @return addr
+ */
+ static String zipkinAddr(String profile) {
+ switch (profile) {
+ case (AppConstant.PROD_CODE):
+ return ZIPKIN_PROD_ADDR;
+ case (AppConstant.TEST_CODE):
+ return ZIPKIN_TEST_ADDR;
+ default:
+ return ZIPKIN_DEV_ADDR;
+ }
+ }
+
+ /**
+ * 鍔ㄦ�佽幏鍙杄lk鍦板潃
+ *
+ * @param profile 鐜鍙橀噺
+ * @return addr
+ */
+ static String elkAddr(String profile) {
+ switch (profile) {
+ case (AppConstant.PROD_CODE):
+ return ELK_PROD_ADDR;
+ case (AppConstant.TEST_CODE):
+ return ELK_TEST_ADDR;
+ default:
+ return ELK_DEV_ADDR;
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/TenantConstant.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/TenantConstant.java
new file mode 100644
index 0000000..b888be4
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/TenantConstant.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.constant;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 绉熸埛甯搁噺
+ *
+ * @author Chill
+ */
+public interface TenantConstant {
+
+ /**
+ * 绉熸埛榛樿瀵嗙爜KEY
+ */
+ String PASSWORD_KEY = "tenant.default.password";
+
+ /**
+ * 绉熸埛榛樿璐﹀彿棰濆害KEY
+ */
+ //String ACCOUNT_NUMBER_KEY = "tenant.default.accountNumber";
+
+ /**
+ * 绉熸埛榛樿鑿滃崟闆嗗悎KEY
+ */
+ String ACCOUNT_MENU_CODE_KEY = "tenant.default.menuCode";
+
+ /**
+ * 绉熸埛榛樿瀵嗙爜
+ */
+ String DEFAULT_PASSWORD = "123456";
+
+ /**
+ * 绉熸埛鎺堟潈鐮侀粯璁�16浣嶅瘑閽�
+ */
+ String DES_KEY = "0000000000000000";
+
+ /**
+ * 绉熸埛榛樿璐﹀彿棰濆害
+ */
+ //Integer DEFAULT_ACCOUNT_NUMBER = -1;
+
+ /**
+ * 绉熸埛榛樿鑿滃崟闆嗗悎
+ */
+ List<String> MENU_CODES = Arrays.asList(
+ "desk", "flow", "work", "monitor", "Resource", "role", "user", "dept", "dictbiz", "topmenu"
+ );
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/launch/LauncherServiceImpl.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/launch/LauncherServiceImpl.java
new file mode 100644
index 0000000..5f05d3b
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/launch/LauncherServiceImpl.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.launch;
+
+import com.vci.ubcs.common.constant.LauncherConstant;
+import org.springblade.core.auto.service.AutoService;
+import org.springblade.core.launch.service.LauncherService;
+import org.springblade.core.launch.utils.PropsUtil;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+
+import java.util.Properties;
+
+/**
+ * 鍚姩鍙傛暟鎷撳睍
+ *
+ * @author smallchil
+ */
+@AutoService(LauncherService.class)
+public class LauncherServiceImpl implements LauncherService {
+
+ @Override
+ public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
+ Properties props = System.getProperties();
+ // 閫氱敤娉ㄥ唽
+ PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
+ PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
+ System.out.println( LauncherConstant.nacosAddr(profile));
+ //PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
+ PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
+ PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
+
+ // 寮�鍚痚lk鏃ュ織
+ PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));
+
+ // seata娉ㄥ唽鍦板潃
+ // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
+ // seata娉ㄥ唽group鏍煎紡
+ // PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
+ // seata閰嶇疆鏈嶅姟group
+ // PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
+ // seata娉ㄥ唽妯″紡閰嶇疆
+ // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE);
+ // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile));
+ // PropsUtil.setProperty(props, "seata.config.type", LauncherConstant.NACOS_MODE);
+ // PropsUtil.setProperty(props, "seata.config.nacos.server-addr", LauncherConstant.nacosAddr(profile));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/utils/CommonUtil.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/utils/CommonUtil.java
new file mode 100644
index 0000000..2ded4e0
--- /dev/null
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/utils/CommonUtil.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.common.utils;
+
+/**
+ * 閫氱敤宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class CommonUtil {
+
+}
diff --git a/Source/BladeX/blade-common/src/main/resources/banner.txt b/Source/UBCS/ubcs-common/src/main/resources/banner.txt
similarity index 100%
rename from Source/BladeX/blade-common/src/main/resources/banner.txt
rename to Source/UBCS/ubcs-common/src/main/resources/banner.txt
diff --git a/Source/BladeX/blade-gateway/Dockerfile b/Source/UBCS/ubcs-gateway/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-gateway/Dockerfile
rename to Source/UBCS/ubcs-gateway/Dockerfile
diff --git a/Source/UBCS/ubcs-gateway/pom.xml b/Source/UBCS/ubcs-gateway/pom.xml
new file mode 100644
index 0000000..c9be5b0
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-gateway</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-undertow</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-metrics</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-jwt</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ </dependency>
+ <!--Spring-->
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-gateway</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-bootstrap</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>de.codecentric</groupId>
+ <artifactId>spring-boot-admin-starter-client</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/GateWayApplication.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/GateWayApplication.java
new file mode 100644
index 0000000..cb30b4a
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/GateWayApplication.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway;
+
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 椤圭洰鍚姩
+ *
+ * @author Chill
+ */
+@EnableScheduling
+@EnableDiscoveryClient
+@SpringBootApplication
+public class GateWayApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_GATEWAY_NAME, GateWayApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/ErrorHandlerConfiguration.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/ErrorHandlerConfiguration.java
new file mode 100644
index 0000000..4ba8537
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/ErrorHandlerConfiguration.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.config;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.ubcs.gateway.handler.ErrorExceptionHandler;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 寮傚父澶勭悊閰嶇疆绫�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AutoConfigureBefore(ErrorWebFluxAutoConfiguration.class)
+@EnableConfigurationProperties({ServerProperties.class})
+public class ErrorHandlerConfiguration {
+
+ @Bean
+ public ErrorExceptionHandler globalExceptionHandler(ObjectMapper objectMapper) {
+ return new ErrorExceptionHandler(objectMapper);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/RouterFunctionConfiguration.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/RouterFunctionConfiguration.java
new file mode 100644
index 0000000..03034fd
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/config/RouterFunctionConfiguration.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.config;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import com.vci.ubcs.gateway.props.AuthProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.cors.reactive.CorsUtils;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
+
+/**
+ * 璺敱閰嶇疆淇℃伅
+ *
+ * @author Chill
+ */
+@Slf4j
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+@EnableConfigurationProperties({AuthProperties.class})
+public class RouterFunctionConfiguration {
+
+ /**
+ * 杩欓噷涓烘敮鎸佺殑璇锋眰澶达紝濡傛灉鏈夎嚜瀹氫箟鐨刪eader瀛楁璇疯嚜宸辨坊鍔�
+ */
+ private static final String ALLOWED_HEADERS = "X-Requested-With, Tenant-Id, Blade-Auth, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client, knfie4j-gateway-request, knife4j-gateway-code, request-origion";
+ private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD";
+ private static final String ALLOWED_ORIGIN = "*";
+ private static final String ALLOWED_EXPOSE = "*";
+ private static final String MAX_AGE = "18000L";
+
+ /**
+ * 璺ㄥ煙閰嶇疆
+ */
+ @Bean
+ public WebFilter corsFilter() {
+ return (ServerWebExchange ctx, WebFilterChain chain) -> {
+ ServerHttpRequest request = ctx.getRequest();
+ if (CorsUtils.isCorsRequest(request)) {
+ ServerHttpResponse response = ctx.getResponse();
+ HttpHeaders headers = response.getHeaders();
+ headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS);
+ headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);
+ headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);
+ headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);
+ headers.add("Access-Control-Max-Age", MAX_AGE);
+ headers.add("Access-Control-Allow-Credentials", "true");
+ if (request.getMethod() == HttpMethod.OPTIONS) {
+ response.setStatusCode(HttpStatus.OK);
+ return Mono.empty();
+ }
+ }
+ return chain.filter(ctx);
+ };
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteService.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteService.java
new file mode 100644
index 0000000..9af352c
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteService.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.dynamic;
+
+import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
+import org.springframework.cloud.gateway.route.RouteDefinition;
+import org.springframework.cloud.gateway.route.RouteDefinitionWriter;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.context.ApplicationEventPublisherAware;
+import org.springframework.stereotype.Service;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+
+/**
+ * 鍔ㄦ�佽矾鐢变笟鍔$被
+ *
+ * @author Chill
+ */
+@Service
+public class DynamicRouteService implements ApplicationEventPublisherAware {
+
+ private final RouteDefinitionWriter routeDefinitionWriter;
+
+ private ApplicationEventPublisher publisher;
+
+ public DynamicRouteService(RouteDefinitionWriter routeDefinitionWriter) {
+ this.routeDefinitionWriter = routeDefinitionWriter;
+ }
+
+ @Override
+ public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
+ this.publisher = applicationEventPublisher;
+ }
+
+ /**
+ * 澧炲姞璺敱
+ */
+ public String save(RouteDefinition definition) {
+ try {
+ routeDefinitionWriter.save(Mono.just(definition)).subscribe();
+ this.publisher.publishEvent(new RefreshRoutesEvent(this));
+ return "save success";
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "save failure";
+ }
+ }
+
+ /**
+ * 鏇存柊璺敱
+ */
+ public String update(RouteDefinition definition) {
+ try {
+ this.routeDefinitionWriter.delete(Mono.just(definition.getId()));
+ this.routeDefinitionWriter.save(Mono.just(definition)).subscribe();
+ this.publisher.publishEvent(new RefreshRoutesEvent(this));
+ return "update success";
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "update failure";
+ }
+ }
+
+ /**
+ * 鏇存柊璺敱
+ */
+ public String updateList(List<RouteDefinition> routeDefinitions) {
+ routeDefinitions.forEach(this::update);
+ return "update done";
+ }
+
+ /**
+ * 鍒犻櫎璺敱
+ */
+ public String delete(String id) {
+ try {
+ this.routeDefinitionWriter.delete(Mono.just(id));
+ return "delete success";
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "delete failure";
+ }
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteServiceListener.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteServiceListener.java
new file mode 100644
index 0000000..80b63c7
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/DynamicRouteServiceListener.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.dynamic;
+
+import com.alibaba.cloud.nacos.NacosConfigProperties;
+import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.launch.constant.NacosConstant;
+import org.springblade.core.launch.props.BladeProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.cloud.gateway.route.RouteDefinition;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+/**
+ * 鍔ㄦ�佽矾鐢辩洃鍚櫒
+ *
+ * @author Chill
+ */
+@Order
+@Slf4j
+@Component
+@RefreshScope
+public class DynamicRouteServiceListener {
+
+ private final DynamicRouteService dynamicRouteService;
+ private final NacosDiscoveryProperties nacosDiscoveryProperties;
+ private final NacosConfigProperties nacosConfigProperties;
+ private final BladeProperties bladeProperties;
+
+ public DynamicRouteServiceListener(DynamicRouteService dynamicRouteService, NacosDiscoveryProperties nacosDiscoveryProperties, NacosConfigProperties nacosConfigProperties, BladeProperties bladeProperties) {
+ this.dynamicRouteService = dynamicRouteService;
+ this.nacosDiscoveryProperties = nacosDiscoveryProperties;
+ this.nacosConfigProperties = nacosConfigProperties;
+ this.bladeProperties = bladeProperties;
+ dynamicRouteServiceListener();
+ }
+
+ /**
+ * 鐩戝惉Nacos涓嬪彂鐨勫姩鎬佽矾鐢遍厤缃�
+ */
+ private void dynamicRouteServiceListener() {
+ try {
+ String dataId = NacosConstant.dataId(bladeProperties.getName(), bladeProperties.getEnv(), NacosConstant.NACOS_CONFIG_JSON_FORMAT);
+ String group = nacosConfigProperties.getGroup();
+ Properties properties = new Properties();
+ properties.setProperty(PropertyKeyConst.SERVER_ADDR, nacosDiscoveryProperties.getServerAddr());
+ properties.setProperty(PropertyKeyConst.NAMESPACE, nacosDiscoveryProperties.getNamespace());
+ ConfigService configService = NacosFactory.createConfigService(properties);
+ configService.addListener(dataId, group, new Listener() {
+ @Override
+ public void receiveConfigInfo(String configInfo) {
+ List<RouteDefinition> routeDefinitions = JSON.parseArray(configInfo, RouteDefinition.class);
+ dynamicRouteService.updateList(routeDefinitions);
+ }
+
+ @Override
+ public Executor getExecutor() {
+ return null;
+ }
+ });
+ String configInfo = configService.getConfig(dataId, group, 5000);
+ if (configInfo != null) {
+ List<RouteDefinition> routeDefinitions = JSON.parseArray(configInfo, RouteDefinition.class);
+ dynamicRouteService.updateList(routeDefinitions);
+ }
+ } catch (NacosException ignored) {
+ ignored.printStackTrace();
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayFilter.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayFilter.java
new file mode 100644
index 0000000..41185e6
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayFilter.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.dynamic;
+
+import lombok.Data;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 杩囨护鍣ㄥ畾涔夋ā鍨�
+ *
+ * @author Chill
+ */
+@Data
+public class GatewayFilter {
+
+ /**
+ * 杩囨护鍣ㄥ搴旂殑Name
+ */
+ private String name;
+
+ /**
+ * 瀵瑰簲鐨勮矾鐢辫鍒�
+ */
+ private Map<String, String> args = new LinkedHashMap<>();
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayPredicate.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayPredicate.java
new file mode 100644
index 0000000..7d1f6c7
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayPredicate.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.dynamic;
+
+import lombok.Data;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 璺敱鏂█瀹氫箟妯″瀷
+ *
+ * @author Chill
+ */
+@Data
+public class GatewayPredicate {
+
+ /**
+ * 鏂█瀵瑰簲鐨凬ame
+ */
+ private String name;
+
+ /**
+ * 閰嶇疆鐨勬柇瑷�瑙勫垯
+ */
+ private Map<String, String> args = new LinkedHashMap<>();
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayRoute.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayRoute.java
new file mode 100644
index 0000000..a85ed01
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/dynamic/GatewayRoute.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.dynamic;
+
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Gateway鐨勮矾鐢卞畾涔夋ā鍨�
+ *
+ * @author Chill
+ */
+@Data
+public class GatewayRoute {
+
+ /**
+ * 璺敱鐨刬d
+ */
+ private String id;
+
+ /**
+ * 璺敱鏂█闆嗗悎閰嶇疆
+ */
+ private List<GatewayPredicate> predicates = new ArrayList<>();
+
+ /**
+ * 璺敱杩囨护鍣ㄩ泦鍚堥厤缃�
+ */
+ private List<GatewayFilter> filters = new ArrayList<>();
+
+ /**
+ * 璺敱瑙勫垯杞彂鐨勭洰鏍噓ri
+ */
+ private String uri;
+
+ /**
+ * 璺敱鎵ц鐨勯『搴�
+ */
+ private int order = 0;
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/AuthFilter.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/AuthFilter.java
new file mode 100644
index 0000000..d460b85
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/AuthFilter.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.filter;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.ubcs.gateway.provider.AuthProvider;
+import com.vci.ubcs.gateway.provider.RequestProvider;
+import com.vci.ubcs.gateway.provider.ResponseProvider;
+import io.jsonwebtoken.Claims;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.jwt.JwtUtil;
+import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.launch.constant.TokenConstant;
+import com.vci.ubcs.gateway.props.AuthProperties;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.util.AntPathMatcher;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 閴存潈璁よ瘉
+ *
+ * @author Chill
+ */
+@Slf4j
+@Component
+@AllArgsConstructor
+public class AuthFilter implements GlobalFilter, Ordered {
+ private final AuthProperties authProperties;
+ private final ObjectMapper objectMapper;
+ private final JwtProperties jwtProperties;
+ private final AntPathMatcher antPathMatcher = new AntPathMatcher();
+
+ @Override
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ //鏍¢獙 Token 鏀捐
+ String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange);
+ String path = exchange.getRequest().getURI().getPath();
+ if (isSkip(path) || isSkip(originalRequestUrl)) {
+ return chain.filter(exchange);
+ }
+ //鏍¢獙 Token 鍚堟硶鎬�
+ ServerHttpResponse resp = exchange.getResponse();
+ String headerToken = exchange.getRequest().getHeaders().getFirst(AuthProvider.AUTH_KEY);
+ String paramToken = exchange.getRequest().getQueryParams().getFirst(AuthProvider.AUTH_KEY);
+ if (StringUtils.isBlank(headerToken) && StringUtils.isBlank(paramToken)) {
+ return unAuth(resp, "缂哄け浠ょ墝,閴存潈澶辫触");
+ }
+ String auth = StringUtils.isBlank(headerToken) ? paramToken : headerToken;
+ String token = JwtUtil.getToken(auth);
+ Claims claims = JwtUtil.parseJWT(token);
+ if (token == null || claims == null) {
+ return unAuth(resp, "璇锋眰鏈巿鏉�");
+ }
+ //鍒ゆ柇 Token 鐘舵��
+ if (jwtProperties.getState()) {
+ String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID));
+ String userId = String.valueOf(claims.get(TokenConstant.USER_ID));
+ String accessToken = JwtUtil.getAccessToken(tenantId, userId, token);
+ if (!token.equalsIgnoreCase(accessToken)) {
+ return unAuth(resp, "浠ょ墝宸插け鏁�");
+ }
+ }
+ return chain.filter(exchange);
+ }
+
+ private boolean isSkip(String path) {
+ return AuthProvider.getDefaultSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path))
+ || authProperties.getSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path))
+ || authProperties.getAuth().stream().anyMatch(auth -> antPathMatcher.match(auth.getPattern(), path))
+ || authProperties.getBasic().stream().anyMatch(basic -> antPathMatcher.match(basic.getPattern(), path))
+ || authProperties.getSign().stream().anyMatch(sign -> antPathMatcher.match(sign.getPattern(), path));
+ }
+
+ private Mono<Void> unAuth(ServerHttpResponse resp, String msg) {
+ resp.setStatusCode(HttpStatus.UNAUTHORIZED);
+ resp.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
+ String result = "";
+ try {
+ result = objectMapper.writeValueAsString(ResponseProvider.unAuth(msg));
+ } catch (JsonProcessingException e) {
+ log.error(e.getMessage(), e);
+ }
+ DataBuffer buffer = resp.bufferFactory().wrap(result.getBytes(StandardCharsets.UTF_8));
+ return resp.writeWith(Flux.just(buffer));
+ }
+
+
+ @Override
+ public int getOrder() {
+ return -100;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalRequestLogFilter.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalRequestLogFilter.java
new file mode 100644
index 0000000..a7ad0b6
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalRequestLogFilter.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.gateway.filter;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.vci.ubcs.gateway.provider.AuthProvider;
+import com.vci.ubcs.gateway.provider.RequestProvider;
+import io.jsonwebtoken.Claims;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.jwt.JwtUtil;
+import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * webflux 鏃ュ織璇锋眰璁板綍锛屾柟渚垮紑鍙戣皟璇曘�傝姹傛棩蹇楄繃婊ゅ櫒鎺掑簭灏介噺浣庛��
+ *
+ * <p>
+ * 娉ㄦ剰锛氭殏鏃朵笉鏀寔缁撴瀯浣撴墦鍗帮紝鎯冲疄鐜帮紝璇风湅涓嬮潰鐨勯摼鎺ャ��
+ * https://stackoverflow.com/questions/45240005/how-to-log-request-and-response-bodies-in-spring-webflux
+ * https://github.com/Silvmike/webflux-demo/blob/master/tests/src/test/java/ru/hardcoders/demo/webflux/web_handler/filters/logging
+ * </p>
+ *
+ * @author dream.lu
+ */
+@Slf4j
+@Configuration(proxyBeanMethods = false)
+@RequiredArgsConstructor
+@ConditionalOnProperty(value = "blade.log.request.enabled", havingValue = "true", matchIfMissing = true)
+public class GlobalRequestLogFilter implements GlobalFilter, Ordered {
+ private final WebEndpointProperties endpointProperties;
+
+ @Override
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ ServerHttpRequest request = exchange.getRequest();
+ // 鎵撳嵃璇锋眰璺緞
+ String path = request.getPath().pathWithinApplication().value();
+
+ // 蹇界暐 endpoint 璇锋眰
+ String endpointBasePath = endpointProperties.getBasePath();
+ if (StringUtils.isNotBlank(endpointBasePath) && path.startsWith(endpointBasePath)) {
+ return chain.filter(exchange);
+ }
+
+ String requestUrl = RequestProvider.getOriginalRequestUrl(exchange);
+
+ // 鏋勫缓鎴愪竴鏉¢暱 鏃ュ織锛岄伩鍏嶅苟鍙戜笅鏃ュ織閿欎贡
+ StringBuilder beforeReqLog = new StringBuilder(300);
+ // 鏃ュ織鍙傛暟
+ List<Object> beforeReqArgs = new ArrayList<>();
+ beforeReqLog.append("\n\n================ Gateway Request Start ================\n");
+ // 鎵撳嵃璺敱
+ beforeReqLog.append("===> {}: {}\n");
+ // 鍙傛暟
+ String requestMethod = request.getMethodValue();
+ beforeReqArgs.add(requestMethod);
+ beforeReqArgs.add(requestUrl);
+
+ // 鎵撳嵃璇锋眰澶�
+ HttpHeaders headers = request.getHeaders();
+ headers.forEach((headerName, headerValue) -> {
+ beforeReqLog.append("===Headers=== {}: {}\n");
+ beforeReqArgs.add(headerName);
+ if (AuthProvider.AUTH_KEY.toLowerCase().equals(headerName)) {
+ String value = headerValue.get(0);
+ String token = JwtUtil.getToken(value);
+ Claims claims = JwtUtil.parseJWT(token);
+ beforeReqArgs.add((claims == null) ? "" : claims.toString());
+ beforeReqLog.append("===Headers=== {}: {}\n");
+ beforeReqArgs.add(headerName.concat("-original"));
+ beforeReqArgs.add(headerValue.toArray());
+ } else {
+ beforeReqArgs.add(headerValue.toArray());
+ }
+ });
+
+ beforeReqLog.append("================ Gateway Request End =================\n");
+ // 鎵撳嵃鎵ц鏃堕棿
+ log.info(beforeReqLog.toString(), beforeReqArgs.toArray());
+ return chain.filter(exchange);
+ }
+
+ @Override
+ public int getOrder() {
+ return Ordered.LOWEST_PRECEDENCE;
+ }
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalResponseLogFilter.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalResponseLogFilter.java
new file mode 100644
index 0000000..3f26937
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/GlobalResponseLogFilter.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.gateway.filter;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.util.UriComponentsBuilder;
+import reactor.core.publisher.Mono;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * webflux 鐩稿簲鏃ュ織锛屾柟渚垮紑鍙戣皟璇曪紝娉ㄦ剰鎺掑簭瑕佷紭鍏堛��
+ *
+ * @author dream.lu
+ */
+@Slf4j
+@Configuration(proxyBeanMethods = false)
+@RequiredArgsConstructor
+@ConditionalOnProperty(value = "blade.log.request.enabled", havingValue = "true", matchIfMissing = true)
+public class GlobalResponseLogFilter implements GlobalFilter, Ordered {
+ private final WebEndpointProperties endpointProperties;
+
+ @Override
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ ServerHttpRequest request = exchange.getRequest();
+ // 鎵撳嵃璇锋眰璺緞
+ String path = request.getPath().pathWithinApplication().value();
+ // 蹇界暐 endpoint 璇锋眰
+ String endpointBasePath = endpointProperties.getBasePath();
+ if (StringUtils.isNotBlank(endpointBasePath) && path.startsWith(endpointBasePath)) {
+ return chain.filter(exchange);
+ }
+ return chain.filter(exchange).then(
+ Mono.fromRunnable(() -> {
+ MultiValueMap<String, String> queryParams = request.getQueryParams();
+ String requestUrl = UriComponentsBuilder.fromPath(path).queryParams(queryParams).build().toUriString();
+
+ // 鏋勫缓鎴愪竴鏉¢暱 鏃ュ織锛岄伩鍏嶅苟鍙戜笅鏃ュ織閿欎贡
+ StringBuilder responseLog = new StringBuilder(300);
+ // 鏃ュ織鍙傛暟
+ List<Object> responseArgs = new ArrayList<>();
+ responseLog.append("\n\n================ Gateway Response Start ================\n");
+ ServerHttpResponse response = exchange.getResponse();
+ // 鎵撳嵃璺敱 200 get: /api/xxx/xxx
+ responseLog.append("<=== {} {}: {}\n");
+ // 鍙傛暟
+ String requestMethod = request.getMethodValue();
+ responseArgs.add(response.getStatusCode().value());
+ responseArgs.add(requestMethod);
+ responseArgs.add(requestUrl);
+
+ // 鎵撳嵃璇锋眰澶�
+ HttpHeaders headers = response.getHeaders();
+ headers.forEach((headerName, headerValue) -> {
+ responseLog.append("===Headers=== {}: {}\n");
+ responseArgs.add(headerName);
+ responseArgs.add(headerValue.toArray());
+ });
+
+ responseLog.append("================ Gateway Response End =================\n");
+ // 鎵撳嵃鎵ц鏃堕棿
+ log.info(responseLog.toString(), responseArgs.toArray());
+ })
+ );
+ }
+
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE;
+ }
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/RequestFilter.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/RequestFilter.java
new file mode 100644
index 0000000..f5dee58
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/filter/RequestFilter.java
@@ -0,0 +1,63 @@
+package com.vci.ubcs.gateway.filter;
+
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
+import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.addOriginalRequestUrl;
+
+/**
+ * <p>
+ * 鍏ㄥ眬鎷︽埅鍣紝浣滅敤鎵�鏈夌殑寰湇鍔�
+ * <p>
+ * 1. 瀵硅姹傚ご涓弬鏁拌繘琛屽鐞� from 鍙傛暟杩涜娓呮礂
+ * 2. 閲嶅啓StripPrefix = 1,鏀寔鍏ㄥ眬
+ *
+ * @author lengleng
+ */
+@Component
+public class RequestFilter implements GlobalFilter, Ordered {
+
+ /**
+ * Process the Web request and (optionally) delegate to the next
+ * {@code WebFilter} through the given {@link GatewayFilterChain}.
+ *
+ * @param exchange the current server exchange
+ * @param chain provides a way to delegate to the next filter
+ * @return {@code Mono<Void>} to indicate when request processing is complete
+ */
+ @Override
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ // 1. 娓呮礂璇锋眰澶翠腑from 鍙傛暟
+ ServerHttpRequest request = exchange.getRequest().mutate()
+ .headers(httpHeaders -> httpHeaders.remove("X"))
+ .build();
+
+ // 2. 閲嶅啓StripPrefix
+ addOriginalRequestUrl(exchange, request.getURI());
+ String rawPath = request.getURI().getRawPath();
+ String newPath = "/" + Arrays.stream(StringUtils.tokenizeToStringArray(rawPath, "/"))
+ .skip(1L).collect(Collectors.joining("/"));
+ ServerHttpRequest newRequest = request.mutate()
+ .path(newPath)
+ .build();
+ exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI());
+
+ return chain.filter(exchange.mutate().request(newRequest.mutate().build()).build());
+ }
+
+ @Override
+ public int getOrder() {
+ return -1000;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/handler/ErrorExceptionHandler.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/handler/ErrorExceptionHandler.java
new file mode 100644
index 0000000..4e74ccb
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/handler/ErrorExceptionHandler.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.handler;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.ubcs.gateway.provider.ResponseProvider;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
+import org.springframework.core.annotation.Order;
+import org.springframework.core.io.buffer.DataBufferFactory;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.server.ResponseStatusException;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.util.Map;
+
+/**
+ * 寮傚父澶勭悊
+ *
+ * @author Chill
+ */
+@Order(-1)
+@RequiredArgsConstructor
+public class ErrorExceptionHandler implements ErrorWebExceptionHandler {
+
+ private final ObjectMapper objectMapper;
+
+ @Override
+ public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
+ ServerHttpRequest request = exchange.getRequest();
+ ServerHttpResponse response = exchange.getResponse();
+
+ if (response.isCommitted()) {
+ return Mono.error(ex);
+ }
+
+ response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+ if (ex instanceof ResponseStatusException) {
+ response.setStatusCode(((ResponseStatusException) ex).getStatus());
+ }
+
+ return response.writeWith(Mono.fromSupplier(() -> {
+ DataBufferFactory bufferFactory = response.bufferFactory();
+ try {
+ int status = 500;
+ if (response.getStatusCode() != null) {
+ status = response.getStatusCode().value();
+ }
+ Map<String, Object> result = ResponseProvider.response(status, this.buildMessage(request, ex));
+ return bufferFactory.wrap(objectMapper.writeValueAsBytes(result));
+ } catch (JsonProcessingException e) {
+ return bufferFactory.wrap(new byte[0]);
+ }
+ }));
+ }
+
+
+ /**
+ * 鏋勫缓寮傚父淇℃伅
+ */
+ private String buildMessage(ServerHttpRequest request, Throwable ex) {
+ String uri = request.getURI().toString();
+ if (uri.endsWith("doc.html")) {
+ return "[Swagger鑱氬悎缃戝叧] 宸茶縼绉昏嚦 [blade-swagger] 鏈嶅姟锛岃寮�鍚� [blade-swagger] 鏈嶅姟骞惰闂� [http://127.0.0.1:18000/doc.html]";
+ }
+ StringBuilder message = new StringBuilder("Failed to handle request [");
+ message.append(request.getMethodValue());
+ message.append(" ");
+ message.append(request.getURI());
+ message.append("]");
+ if (ex != null) {
+ message.append(": ");
+ message.append(ex.getMessage());
+ }
+ return message.toString();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/props/AuthProperties.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/props/AuthProperties.java
new file mode 100644
index 0000000..afa5dd4
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/props/AuthProperties.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.props;
+
+import com.vci.ubcs.gateway.provider.AuthSecure;
+import com.vci.ubcs.gateway.provider.BasicSecure;
+import com.vci.ubcs.gateway.provider.SignSecure;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鏉冮檺杩囨护
+ *
+ * @author Chill
+ */
+@Data
+@RefreshScope
+@ConfigurationProperties("blade.secure")
+public class AuthProperties {
+
+ /**
+ * 鏀捐API闆嗗悎
+ */
+ private final List<String> skipUrl = new ArrayList<>();
+
+ /**
+ * 鑷畾涔夋巿鏉冮厤缃�
+ */
+ private final List<AuthSecure> auth = new ArrayList<>();
+
+ /**
+ * 鍩虹璁よ瘉閰嶇疆
+ */
+ private final List<BasicSecure> basic = new ArrayList<>();
+
+ /**
+ * 绛惧悕璁よ瘉閰嶇疆
+ */
+ private final List<SignSecure> sign = new ArrayList<>();
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthProvider.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthProvider.java
new file mode 100644
index 0000000..49598e2
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthProvider.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import org.springblade.core.launch.constant.TokenConstant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 閴存潈閰嶇疆
+ *
+ * @author Chill
+ */
+public class AuthProvider {
+
+ public static final String AUTH_KEY = TokenConstant.HEADER;
+ private static final List<String> DEFAULT_SKIP_URL = new ArrayList<>();
+
+ static {
+ DEFAULT_SKIP_URL.add("/example");
+ DEFAULT_SKIP_URL.add("/oauth/token/**");
+ DEFAULT_SKIP_URL.add("/oauth/captcha/**");
+ DEFAULT_SKIP_URL.add("/oauth/clear-cache/**");
+ DEFAULT_SKIP_URL.add("/oauth/user-info");
+ DEFAULT_SKIP_URL.add("/oauth/render/**");
+ DEFAULT_SKIP_URL.add("/oauth/callback/**");
+ DEFAULT_SKIP_URL.add("/oauth/revoke/**");
+ DEFAULT_SKIP_URL.add("/oauth/refresh/**");
+ DEFAULT_SKIP_URL.add("/token/**");
+ DEFAULT_SKIP_URL.add("/actuator/**");
+ DEFAULT_SKIP_URL.add("/v2/api-docs/**");
+ DEFAULT_SKIP_URL.add("/auth/**");
+ DEFAULT_SKIP_URL.add("/log/**");
+ DEFAULT_SKIP_URL.add("/menu/routes");
+ DEFAULT_SKIP_URL.add("/menu/auth-routes");
+ DEFAULT_SKIP_URL.add("/menu/top-menu");
+ DEFAULT_SKIP_URL.add("/tenant/info");
+ DEFAULT_SKIP_URL.add("/process/Resource-view");
+ DEFAULT_SKIP_URL.add("/process/diagram-view");
+ DEFAULT_SKIP_URL.add("/manager/check-upload");
+ DEFAULT_SKIP_URL.add("/error/**");
+ DEFAULT_SKIP_URL.add("/assets/**");
+ }
+
+ /**
+ * 榛樿鏃犻渶閴存潈鐨凙PI
+ */
+ public static List<String> getDefaultSkipUrl() {
+ return DEFAULT_SKIP_URL;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthSecure.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthSecure.java
new file mode 100644
index 0000000..61bff52
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/AuthSecure.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 鑷畾涔夋巿鏉冭鍒�
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AuthSecure {
+ /**
+ * 璇锋眰璺緞
+ */
+ private String pattern;
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/BasicSecure.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/BasicSecure.java
new file mode 100644
index 0000000..76cf94d
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/BasicSecure.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 鍩虹鎺堟潈瑙勫垯
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class BasicSecure {
+ /**
+ * 璇锋眰璺緞
+ */
+ private String pattern;
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/RequestProvider.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/RequestProvider.java
new file mode 100644
index 0000000..3bae0fb
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/RequestProvider.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+import java.util.LinkedHashSet;
+
+/**
+ * RequestProvider
+ *
+ * @author Chill
+ */
+public class RequestProvider {
+
+ /**
+ * 鑾峰彇鍘熷url
+ *
+ * @param exchange
+ * @return
+ */
+ public static String getOriginalRequestUrl(ServerWebExchange exchange) {
+ ServerHttpRequest request = exchange.getRequest();
+ LinkedHashSet<URI> uris = exchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
+ URI requestUri = uris.stream().findFirst().orElse(request.getURI());
+ MultiValueMap<String, String> queryParams = request.getQueryParams();
+ return UriComponentsBuilder.fromPath(requestUri.getRawPath()).queryParams(queryParams).build().toUriString();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/ResponseProvider.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/ResponseProvider.java
new file mode 100644
index 0000000..19d1afe
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/ResponseProvider.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 璇锋眰鍝嶅簲杩斿洖
+ *
+ * @author Chill
+ */
+public class ResponseProvider {
+
+ /**
+ * 鎴愬姛
+ *
+ * @param message 淇℃伅
+ * @return
+ */
+ public static Map<String, Object> success(String message) {
+ return response(200, message);
+ }
+
+ /**
+ * 澶辫触
+ *
+ * @param message 淇℃伅
+ * @return
+ */
+ public static Map<String, Object> fail(String message) {
+ return response(400, message);
+ }
+
+ /**
+ * 鏈巿鏉�
+ *
+ * @param message 淇℃伅
+ * @return
+ */
+ public static Map<String, Object> unAuth(String message) {
+ return response(401, message);
+ }
+
+ /**
+ * 鏈嶅姟鍣ㄥ紓甯�
+ *
+ * @param message 淇℃伅
+ * @return
+ */
+ public static Map<String, Object> error(String message) {
+ return response(500, message);
+ }
+
+ /**
+ * 鏋勫缓杩斿洖鐨凧SON鏁版嵁鏍煎紡
+ *
+ * @param status 鐘舵�佺爜
+ * @param message 淇℃伅
+ * @return
+ */
+ public static Map<String, Object> response(int status, String message) {
+ Map<String, Object> map = new HashMap<>(16);
+ map.put("code", status);
+ map.put("msg", message);
+ map.put("data", null);
+ return map;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/SignSecure.java b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/SignSecure.java
new file mode 100644
index 0000000..a41026c
--- /dev/null
+++ b/Source/UBCS/ubcs-gateway/src/main/java/com/vci/ubcs/gateway/provider/SignSecure.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.gateway.provider;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 绛惧悕鎺堟潈瑙勫垯
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SignSecure {
+ /**
+ * 璇锋眰璺緞
+ */
+ private String pattern;
+
+}
diff --git a/Source/BladeX/blade-gateway/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-gateway/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-gateway/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-gateway/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-gateway/src/main/resources/bootstrap.yml b/Source/UBCS/ubcs-gateway/src/main/resources/bootstrap.yml
similarity index 100%
rename from Source/BladeX/blade-gateway/src/main/resources/bootstrap.yml
rename to Source/UBCS/ubcs-gateway/src/main/resources/bootstrap.yml
diff --git a/Source/UBCS/ubcs-ops-api/pom.xml b/Source/UBCS/ubcs-ops-api/pom.xml
new file mode 100644
index 0000000..462601a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-ops-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>3.0.1.RELEASE</version>
+ <packaging>pom</packaging>
+ <description>BladeX 寰湇鍔PI闆嗗悎</description>
+
+ <modules>
+ <module>ubcs-flow-api</module>
+ <module>ubcs-resource-api</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-mybatis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-openfeign</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ <finalName>${project.name}</finalName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/pom.xml b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/pom.xml
new file mode 100644
index 0000000..e93129f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-flow-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+
+
+</project>
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/constant/ProcessConstant.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/constant/ProcessConstant.java
new file mode 100644
index 0000000..ba80732
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/constant/ProcessConstant.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.constant;
+
+/**
+ * 娴佺▼甯搁噺.
+ *
+ * @author Chill
+ */
+public interface ProcessConstant {
+
+ /**
+ * 璇峰亣娴佺▼鏍囪瘑
+ */
+ String LEAVE_KEY = "Leave";
+
+ /**
+ * 鎶ラ攢娴佺▼鏍囪瘑
+ */
+ String EXPENSE_KEY = "Expense";
+
+ /**
+ * 鍚屾剰鏍囪瘑
+ */
+ String PASS_KEY = "pass";
+
+ /**
+ * 鍚屾剰浠e彿
+ */
+ String PASS_ALIAS = "ok";
+
+ /**
+ * 鍚屾剰榛樿鎵瑰
+ */
+ String PASS_COMMENT = "鍚屾剰";
+
+ /**
+ * 椹冲洖榛樿鎵瑰
+ */
+ String NOT_PASS_COMMENT = "椹冲洖";
+
+ /**
+ * 鍒涘缓浜哄彉閲忓悕
+ */
+ String TASK_VARIABLE_CREATE_USER = "createUser";
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
new file mode 100644
index 0000000..bc0c590
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.entity;
+
+import com.vci.ubcs.flow.core.constant.ProcessConstant;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 宸ヤ綔娴侀�氱敤瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+public class BladeFlow implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 浠诲姟缂栧彿
+ */
+ private String taskId;
+ /**
+ * 浠诲姟鍚嶇О
+ */
+ private String taskName;
+ /**
+ * 浠诲姟瀹氫箟Key
+ */
+ private String taskDefinitionKey;
+ /**
+ * 浠诲姟鎵ц浜虹紪鍙�
+ */
+ private String assignee;
+ /**
+ * 浠诲姟鎵ц浜哄悕绉�
+ */
+ private String assigneeName;
+ /**
+ * 娴佺▼鍒嗙被
+ */
+ private String category;
+ /**
+ * 娴佺▼鍒嗙被鍚�
+ */
+ private String categoryName;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private Date createTime;
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ private Date endTime;
+ /**
+ * 绛炬敹鏃堕棿
+ */
+ private Date claimTime;
+ /**
+ * 鍘嗗彶浠诲姟缁撴潫鏃堕棿
+ */
+ private Date historyTaskEndTime;
+ /**
+ * 鎵цID
+ */
+ private String executionId;
+ /**
+ * 娴佺▼瀹炰緥ID
+ */
+ private String processInstanceId;
+ /**
+ * 娴佺▼ID
+ */
+ private String processDefinitionId;
+ /**
+ * 娴佺▼鏍囪瘑
+ */
+ private String processDefinitionKey;
+ /**
+ * 娴佺▼鍚�
+ */
+ private String processDefinitionName;
+ /**
+ * 娴佺▼鐗堟湰
+ */
+ private int processDefinitionVersion;
+ /**
+ * 娴佺▼璇存槑
+ */
+ private String processDefinitionDesc;
+ /**
+ * 娴佺▼绠�鍥惧悕
+ */
+ private String processDefinitionDiagramResName;
+ /**
+ * 娴佺▼閲嶅懡鍚�
+ */
+ private String processDefinitionResName;
+ /**
+ * 鍘嗗彶浠诲姟娴佺▼瀹炰緥ID 鏌ョ湅娴佺▼鍥句細鐢ㄥ埌
+ */
+ private String historyProcessInstanceId;
+ /**
+ * 娴佺▼瀹炰緥鏄惁缁撴潫
+ */
+ private String processIsFinished;
+ /**
+ * 鍘嗗彶娲诲姩ID
+ */
+ private String historyActivityId;
+ /**
+ * 鍘嗗彶娲诲姩娴佺▼
+ */
+ private String historyActivityName;
+ /**
+ * 鍘嗗彶娲诲姩鑰楁椂
+ */
+ private String historyActivityDurationTime;
+ /**
+ * 涓氬姟缁戝畾Table
+ */
+ private String businessTable;
+ /**
+ * 涓氬姟缁戝畾ID
+ */
+ private String businessId;
+ /**
+ * 浠诲姟鐘舵��
+ */
+ private String status;
+ /**
+ * 浠诲姟鎰忚
+ */
+ private String comment;
+ /**
+ * 鏄惁閫氳繃
+ */
+ private boolean isPass;
+ /**
+ * 鏄惁閫氳繃浠e彿
+ */
+ private String flag;
+ /**
+ * 寮�濮嬫煡璇㈡棩鏈�
+ */
+ private Date beginDate;
+ /**
+ * 缁撴潫鏌ヨ鏃ユ湡
+ */
+ private Date endDate;
+ /**
+ * 娴佺▼鍙傛暟
+ */
+ private Map<String, Object> variables;
+
+ /**
+ * 鑾峰彇鏄惁閫氳繃
+ */
+ public boolean isPass() {
+ return ProcessConstant.PASS_ALIAS.equals(flag) || ProcessConstant.PASS_COMMENT.equals(comment);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowEntity.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowEntity.java
new file mode 100644
index 0000000..37e5b5f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowEntity.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * FlowEntity
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FlowEntity extends BaseEntity {
+
+ @TableField(exist = false)
+ private BladeFlow flow;
+
+ public BladeFlow getFlow() {
+ if (flow == null) {
+ flow = new BladeFlow();
+ }
+ return flow;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/enums/FlowModeEnum.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/enums/FlowModeEnum.java
new file mode 100644
index 0000000..9a68240
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/enums/FlowModeEnum.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 娴佺▼绫诲瀷鏋氫妇
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public enum FlowModeEnum {
+
+ /**
+ * 閫氱敤娴佺▼
+ */
+ COMMON("common", 1),
+
+ /**
+ * 瀹氬埗娴佺▼
+ */
+ CUSTOM("custom", 2),
+ ;
+
+ final String name;
+ final int mode;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClient.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClient.java
new file mode 100644
index 0000000..d65e7f3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClient.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.feign;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * 宸ヤ綔娴佽繙绋嬭皟鐢ㄦ帴鍙�.
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_FLOW_NAME,
+ fallback = IFlowClientFallback.class
+)
+public interface IFlowClient {
+
+ String API_PREFIX = "/client";
+ String START_PROCESS_INSTANCE_BY_ID = API_PREFIX + "/start-process-instance-by-id";
+ String START_PROCESS_INSTANCE_BY_KEY = API_PREFIX + "/start-process-instance-by-key";
+ String COMPLETE_TASK = API_PREFIX + "/complete-task";
+ String TASK_VARIABLE = API_PREFIX + "/task-variable";
+ String TASK_VARIABLES = API_PREFIX + "/task-variables";
+
+ /**
+ * 寮�鍚祦绋�
+ *
+ * @param processDefinitionId 娴佺▼id
+ * @param businessKey 涓氬姟key
+ * @param variables 鍙傛暟
+ * @return BladeFlow
+ */
+ @PostMapping(START_PROCESS_INSTANCE_BY_ID)
+ R<BladeFlow> startProcessInstanceById(@RequestParam("processDefinitionId") String processDefinitionId, @RequestParam("businessKey") String businessKey, @RequestBody Map<String, Object> variables);
+
+ /**
+ * 寮�鍚祦绋�
+ *
+ * @param processDefinitionKey 娴佺▼鏍囪瘑
+ * @param businessKey 涓氬姟key
+ * @param variables 鍙傛暟
+ * @return BladeFlow
+ */
+ @PostMapping(START_PROCESS_INSTANCE_BY_KEY)
+ R<BladeFlow> startProcessInstanceByKey(@RequestParam("processDefinitionKey") String processDefinitionKey, @RequestParam("businessKey") String businessKey, @RequestBody Map<String, Object> variables);
+
+ /**
+ * 瀹屾垚浠诲姟
+ *
+ * @param taskId 浠诲姟id
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param comment 璇勮
+ * @param variables 鍙傛暟
+ * @return R
+ */
+ @PostMapping(COMPLETE_TASK)
+ R completeTask(@RequestParam("taskId") String taskId, @RequestParam("processInstanceId") String processInstanceId, @RequestParam("comment") String comment, @RequestBody Map<String, Object> variables);
+
+ /**
+ * 鑾峰彇娴佺▼鍙橀噺
+ *
+ * @param taskId 浠诲姟id
+ * @param variableName 鍙橀噺鍚�
+ * @return R
+ */
+ @GetMapping(TASK_VARIABLE)
+ R<Object> taskVariable(@RequestParam("taskId") String taskId, @RequestParam("variableName") String variableName);
+
+ /**
+ * 鑾峰彇娴佺▼鍙橀噺闆嗗悎
+ *
+ * @param taskId 浠诲姟id
+ * @return R
+ */
+ @GetMapping(TASK_VARIABLES)
+ R<Map<String, Object>> taskVariables(@RequestParam("taskId") String taskId);
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClientFallback.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClientFallback.java
new file mode 100644
index 0000000..5148a22
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IFlowClientFallback.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.feign;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 娴佺▼杩滅▼璋冪敤澶辫触澶勭悊绫�
+ *
+ * @author Chill
+ */
+@Component
+public class IFlowClientFallback implements IFlowClient {
+
+ @Override
+ public R<BladeFlow> startProcessInstanceById(String processDefinitionId, String businessKey, Map<String, Object> variables) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R<BladeFlow> startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String, Object> variables) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R completeTask(String taskId, String processInstanceId, String comment, Map<String, Object> variables) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R<Object> taskVariable(String taskId, String variableName) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R<Map<String, Object>> taskVariables(String taskId) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/FlowUtil.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/FlowUtil.java
new file mode 100644
index 0000000..03d99aa
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/FlowUtil.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.utils;
+
+import com.vci.ubcs.flow.core.constant.ProcessConstant;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 宸ヤ綔娴佸伐鍏风被
+ *
+ * @author Chill
+ */
+public class FlowUtil {
+
+ /**
+ * 瀹氫箟娴佺▼key瀵瑰簲鐨勮〃鍚�
+ */
+ private final static Map<String, String> BUSINESS_TABLE = new HashMap<>();
+
+ static {
+ BUSINESS_TABLE.put(ProcessConstant.LEAVE_KEY, "pl_wf_process_leave");
+ }
+
+ /**
+ * 閫氳繃娴佺▼key鑾峰彇涓氬姟琛ㄥ悕
+ *
+ * @param key 娴佺▼key
+ */
+ public static String getBusinessTable(String key) {
+ String businessTable = BUSINESS_TABLE.get(key);
+ if (Func.isEmpty(businessTable)) {
+ throw new RuntimeException("娴佺▼鍚姩澶辫触,鏈壘鍒扮浉鍏充笟鍔¤〃");
+ }
+ return businessTable;
+ }
+
+ /**
+ * 鑾峰彇涓氬姟鏍囪瘑
+ *
+ * @param businessTable 涓氬姟琛�
+ * @param businessId 涓氬姟琛ㄤ富閿�
+ * @return businessKey
+ */
+ public static String getBusinessKey(String businessTable, String businessId) {
+ return StringUtil.format("{}:{}", businessTable, businessId);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/TaskUtil.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/TaskUtil.java
new file mode 100644
index 0000000..cad48d4
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/utils/TaskUtil.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.utils;
+
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+
+import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
+
+/**
+ * 宸ヤ綔娴佷换鍔″伐鍏风被
+ *
+ * @author Chill
+ */
+public class TaskUtil {
+
+ /**
+ * 鑾峰彇浠诲姟鐢ㄦ埛鏍煎紡
+ *
+ * @return taskUser
+ */
+ public static String getTaskUser() {
+ return StringUtil.format("{}{}", TASK_USR_PREFIX, AuthUtil.getUserId());
+ }
+
+ /**
+ * 鑾峰彇浠诲姟鐢ㄦ埛鏍煎紡
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return taskUser
+ */
+ public static String getTaskUser(String userId) {
+ return StringUtil.format("{}{}", TASK_USR_PREFIX, userId);
+ }
+
+
+ /**
+ * 鑾峰彇鐢ㄦ埛涓婚敭
+ *
+ * @param taskUser 浠诲姟鐢ㄦ埛
+ * @return userId
+ */
+ public static Long getUserId(String taskUser) {
+ return Func.toLong(StringUtil.removePrefix(taskUser, TASK_USR_PREFIX));
+ }
+
+ /**
+ * 鑾峰彇鐢ㄦ埛缁勬牸寮�
+ *
+ * @return candidateGroup
+ */
+ public static String getCandidateGroup() {
+ return AuthUtil.getUserRole();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/pom.xml b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/pom.xml
new file mode 100644
index 0000000..3f9973d
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-resource-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-sms</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-tenant</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Attach.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Attach.java
new file mode 100644
index 0000000..24ae52e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Attach.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 闄勪欢琛ㄥ疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_attach")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Attach瀵硅薄", description = "闄勪欢琛�")
+public class Attach extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 闄勪欢鍦板潃
+ */
+ @ApiModelProperty(value = "闄勪欢鍦板潃")
+ private String link;
+ /**
+ * 闄勪欢鍩熷悕
+ */
+ @ApiModelProperty(value = "闄勪欢鍩熷悕")
+ private String domainUrl;
+ /**
+ * 闄勪欢鍚嶇О
+ */
+ @ApiModelProperty(value = "闄勪欢鍚嶇О")
+ private String name;
+ /**
+ * 闄勪欢鍘熷悕
+ */
+ @ApiModelProperty(value = "闄勪欢鍘熷悕")
+ private String originalName;
+ /**
+ * 闄勪欢鎷撳睍鍚�
+ */
+ @ApiModelProperty(value = "闄勪欢鎷撳睍鍚�")
+ private String extension;
+ /**
+ * 闄勪欢澶у皬
+ */
+ @ApiModelProperty(value = "闄勪欢澶у皬")
+ private Long attachSize;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Oss.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Oss.java
new file mode 100644
index 0000000..c8fa4b4
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Oss.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_sys_oss")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Oss瀵硅薄", description = "Oss瀵硅薄")
+public class Oss extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 鎵�灞炲垎绫�
+ */
+ @ApiModelProperty(value = "鎵�灞炲垎绫�")
+ private Integer category;
+
+ /**
+ * 璧勬簮缂栧彿
+ */
+ @ApiModelProperty(value = "璧勬簮缂栧彿")
+ private String ossCode;
+
+ /**
+ * oss鍦板潃
+ */
+ @ApiModelProperty(value = "璧勬簮鍦板潃")
+ private String endpoint;
+ /**
+ * accessKey
+ */
+ @ApiModelProperty(value = "accessKey")
+ private String accessKey;
+ /**
+ * secretKey
+ */
+ @ApiModelProperty(value = "secretKey")
+ private String secretKey;
+ /**
+ * 绌洪棿鍚�
+ */
+ @ApiModelProperty(value = "绌洪棿鍚�")
+ private String bucketName;
+ /**
+ * 搴旂敤ID TencentCOS闇�瑕�
+ */
+ @ApiModelProperty(value = "搴旂敤ID")
+ private String appId;
+ /**
+ * 鍦板煙绠�绉� TencentCOS闇�瑕�
+ */
+ @ApiModelProperty(value = "鍦板煙绠�绉�")
+ private String region;
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Sms.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Sms.java
new file mode 100644
index 0000000..479156f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/entity/Sms.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 鐭俊閰嶇疆琛ㄥ疄浣撶被
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_sys_sms")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Sms瀵硅薄", description = "鐭俊閰嶇疆琛�")
+public class Sms extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 璧勬簮缂栧彿
+ */
+ @ApiModelProperty(value = "璧勬簮缂栧彿")
+ private String smsCode;
+
+ /**
+ * 妯℃澘ID
+ */
+ @ApiModelProperty(value = "妯℃澘ID")
+ private String templateId;
+ /**
+ * 鍒嗙被
+ */
+ @ApiModelProperty(value = "鍒嗙被")
+ private Integer category;
+ /**
+ * accessKey
+ */
+ @ApiModelProperty(value = "accessKey")
+ private String accessKey;
+ /**
+ * secretKey
+ */
+ @ApiModelProperty(value = "secretKey")
+ private String secretKey;
+ /**
+ * regionId
+ */
+ @ApiModelProperty(value = "regionId")
+ private String regionId;
+ /**
+ * 鐭俊绛惧悕
+ */
+ @ApiModelProperty(value = "鐭俊绛惧悕")
+ private String signName;
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/enums/SmsCodeEnum.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/enums/SmsCodeEnum.java
new file mode 100644
index 0000000..b2479ce
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/enums/SmsCodeEnum.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.springblade.core.tool.utils.StringPool;
+
+/**
+ * Sms璧勬簮缂栫爜鏋氫妇绫�
+ *
+ * @author Chill
+ * @apiNote 璇ユ灇涓剧被瀵瑰簲鐭俊閰嶇疆妯″潡鐨勮祫婧愮紪鐮侊紝鍙牴鎹笟鍔¢渶姹傝嚜琛屾嫇灞�
+ */
+@Getter
+@AllArgsConstructor
+public enum SmsCodeEnum {
+
+ /**
+ * 榛樿缂栧彿
+ */
+ DEFAULT(StringPool.EMPTY, 1),
+
+ /**
+ * 楠岃瘉鐮佺紪鍙�
+ */
+ VALIDATE("validate", 2),
+
+ /**
+ * 閫氱煡鍏憡缂栧彿
+ */
+ NOTICE("notice", 3),
+
+ /**
+ * 涓嬪崟閫氱煡缂栧彿
+ */
+ ORDER("order", 4),
+
+ /**
+ * 浼氳閫氱煡缂栧彿
+ */
+ MEETING("meeting", 5),
+ ;
+
+ final String name;
+ final int category;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClient.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClient.java
new file mode 100644
index 0000000..3d37f63
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClient.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.feign;
+
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * ISmsClient
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_RESOURCE_NAME,
+ fallback = ISmsClientFallback.class
+)
+public interface ISmsClient {
+ String API_PREFIX = "/client";
+ String SEND_MESSAGE = API_PREFIX + "/send-message";
+ String SEND_VALIDATE = API_PREFIX + "/send-validate";
+ String VALIDATE_MESSAGE = API_PREFIX + "/validate-message";
+
+ /**
+ * 閫氱敤鐭俊鍙戦��
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param params 妯℃澘鍙傛暟
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ * @return R
+ */
+ @PostMapping(SEND_MESSAGE)
+ R<SmsResponse> sendMessage(@RequestParam("code") String code, @RequestParam("params") String params, @RequestParam("phones") String phones);
+
+ /**
+ * 鐭俊楠岃瘉鐮佸彂閫�
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param phone 鎵嬫満鍙�
+ * @return R
+ */
+ @PostMapping(SEND_VALIDATE)
+ R sendValidate(@RequestParam("code") String code, @RequestParam("phone") String phone);
+
+ /**
+ * 鏍¢獙鐭俊
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param id 鏍¢獙id
+ * @param value 鏍¢獙鍊�
+ * @param phone 鎵嬫満鍙�
+ * @return R
+ */
+ @PostMapping(VALIDATE_MESSAGE)
+ R validateMessage(@RequestParam("code") String code, @RequestParam("id") String id, @RequestParam("value") String value, @RequestParam("phone") String phone);
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClientFallback.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClientFallback.java
new file mode 100644
index 0000000..82238ca
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/feign/ISmsClientFallback.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.feign;
+
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+/**
+ * 娴佺▼杩滅▼璋冪敤澶辫触澶勭悊绫�
+ *
+ * @author Chill
+ */
+@Component
+public class ISmsClientFallback implements ISmsClient {
+ @Override
+ public R sendMessage(String code, String params, String phones) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R sendValidate(String code, String phone) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+ @Override
+ public R validateMessage(String code, String id, String value, String phone) {
+ return R.fail("杩滅▼璋冪敤澶辫触");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/SmsUtil.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/SmsUtil.java
new file mode 100644
index 0000000..0c389b8
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/SmsUtil.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.utils;
+
+import org.springblade.core.sms.model.SmsCode;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.RandomType;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.resource.feign.ISmsClient;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 鐭俊鏈嶅姟宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class SmsUtil {
+
+ public static final String PARAM_KEY = "code";
+ public static final String SEND_SUCCESS = "鐭俊鍙戦�佹垚鍔�";
+ public static final String SEND_FAIL = "鐭俊鍙戦�佸け璐�";
+ public static final String VALIDATE_SUCCESS = "鐭俊鏍¢獙鎴愬姛";
+ public static final String VALIDATE_FAIL = "鐭俊鏍¢獙澶辫触";
+
+ private static ISmsClient smsClient;
+
+ /**
+ * 鑾峰彇鐭俊鏈嶅姟鏋勫缓绫�
+ *
+ * @return SmsBuilder
+ */
+ public static ISmsClient getSmsClient() {
+ if (smsClient == null) {
+ smsClient = SpringUtil.getBean(ISmsClient.class);
+ }
+ return smsClient;
+ }
+
+ /**
+ * 鑾峰彇鐭俊楠岃瘉鐮佸弬鏁�
+ *
+ * @return 楠岃瘉鐮佸弬鏁�
+ */
+ public static Map<String, String> getValidateParams() {
+ Map<String, String> params = new HashMap<>(1);
+ params.put(PARAM_KEY, StringUtil.random(6, RandomType.INT));
+ return params;
+ }
+
+ /**
+ * 鍙戦�佺煭淇�
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param params 妯℃澘鍙傛暟
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ * @return 鍙戦�佺粨鏋�
+ */
+ public static SmsResponse sendMessage(String code, Map<String, String> params, String phones) {
+ R<SmsResponse> result = getSmsClient().sendMessage(code, JsonUtil.toJson(params), phones);
+ return result.getData();
+ }
+
+ /**
+ * 鍙戦�侀獙璇佺爜
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param phone 鎵嬫満鍙�
+ * @return 鍙戦�佺粨鏋�
+ */
+ public static SmsCode sendValidate(String code, String phone) {
+ SmsCode smsCode = new SmsCode();
+ R result = getSmsClient().sendValidate(code, phone);
+ if (result.isSuccess()) {
+ smsCode = JsonUtil.parse(JsonUtil.toJson(result.getData()), SmsCode.class);
+ } else {
+ smsCode.setSuccess(Boolean.FALSE);
+ }
+ return smsCode;
+ }
+
+ /**
+ * 鏍¢獙鐭俊
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param id 鏍¢獙id
+ * @param value 鏍¢獙鍊�
+ * @return 鍙戦�佺粨鏋�
+ */
+ public static boolean validateMessage(String code, String id, String value, String phone) {
+ R result = getSmsClient().validateMessage(code, id, value, phone);
+ return result.isSuccess();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/AttachVO.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/AttachVO.java
new file mode 100644
index 0000000..db2d188
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/AttachVO.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.resource.entity.Attach;
+
+/**
+ * 闄勪欢琛ㄨ鍥惧疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AttachVO瀵硅薄", description = "闄勪欢琛�")
+public class AttachVO extends Attach {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/OssVO.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/OssVO.java
new file mode 100644
index 0000000..216cf2d
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/OssVO.java
@@ -0,0 +1,29 @@
+package com.vci.ubcs.resource.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.resource.entity.Oss;
+
+/**
+ * OssVO
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "OssVO瀵硅薄", description = "瀵硅薄瀛樺偍琛�")
+public class OssVO extends Oss {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍒嗙被鍚�
+ */
+ private String categoryName;
+
+ /**
+ * 鏄惁鍚敤
+ */
+ private String statusName;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/SmsVO.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/SmsVO.java
new file mode 100644
index 0000000..08696f8
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/vo/SmsVO.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.resource.entity.Sms;
+
+/**
+ * 鐭俊閰嶇疆琛ㄨ鍥惧疄浣撶被
+ *
+ * @author BladeX
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "SmsVO瀵硅薄", description = "鐭俊閰嶇疆琛�")
+public class SmsVO extends Sms {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍒嗙被鍚�
+ */
+ private String categoryName;
+
+ /**
+ * 鏄惁鍚敤
+ */
+ private String statusName;
+
+}
diff --git a/Source/UBCS/ubcs-ops/pom.xml b/Source/UBCS/ubcs-ops/pom.xml
new file mode 100644
index 0000000..4c4cffb
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-ops</artifactId>
+ <name>${project.artifactId}</name>
+ <version>3.0.1.RELEASE</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>ubcs-admin</module>
+ <module>ubcs-develop</module>
+ <module>ubcs-flow</module>
+ <module>ubcs-log</module>
+ <module>ubcs-report</module>
+ <module>ubcs-resource</module>
+ <module>ubcs-swagger</module>
+ <module>ubcs-xxljob</module>
+ <module>ubcs-xxljob-admin</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-metrics</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/BladeX/blade-ops/blade-admin/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-admin/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-admin/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-admin/Dockerfile
diff --git a/Source/BladeX/blade-ops/blade-admin/README.md b/Source/UBCS/ubcs-ops/ubcs-admin/README.md
similarity index 100%
rename from Source/BladeX/blade-ops/blade-admin/README.md
rename to Source/UBCS/ubcs-ops/ubcs-admin/README.md
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/pom.xml b/Source/UBCS/ubcs-ops/ubcs-admin/pom.xml
new file mode 100644
index 0000000..f37c2eb
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/pom.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-admin</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-undertow</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-prometheus</artifactId>
+ </dependency>
+ <!-- Nacos -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.alibaba.nacos</groupId>
+ <artifactId>nacos-client</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.alibaba.nacos</groupId>
+ <artifactId>nacos-client</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.nacos</groupId>
+ <artifactId>nacos-client</artifactId>
+ </dependency>
+ <!--Admin-Server-->
+ <dependency>
+ <groupId>de.codecentric</groupId>
+ <artifactId>spring-boot-admin-starter-server</artifactId>
+ </dependency>
+ <!--Security-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-security</artifactId>
+ </dependency>
+ <!--<dependency>
+ <groupId>org.springframework.security.oauth.boot</groupId>
+ <artifactId>spring-security-oauth2-autoconfigure</artifactId>
+ </dependency>-->
+ <!--Taobao-Sdk-->
+ <dependency>
+ <groupId>com.taobao</groupId>
+ <artifactId>taobao-sdk</artifactId>
+ <version>20201116</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/AdminApplication.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/AdminApplication.java
new file mode 100644
index 0000000..5f31c46
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/AdminApplication.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.admin;
+
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * admin鍚姩鍣�
+ *
+ * @author Chill
+ */
+@EnableAdminServer
+@EnableDiscoveryClient
+@SpringBootApplication
+public class AdminApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_ADMIN_NAME, AdminApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/AdminConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/AdminConfiguration.java
new file mode 100644
index 0000000..e0aed63
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/AdminConfiguration.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.admin.config;
+
+import com.vci.ubcs.admin.dingtalk.MonitorProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 鍚姩鍣�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@EnableConfigurationProperties(MonitorProperties.class)
+public class AdminConfiguration {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/DingTalkConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/DingTalkConfiguration.java
new file mode 100644
index 0000000..4b0a0e3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/DingTalkConfiguration.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.config;
+
+import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
+import com.vci.ubcs.admin.dingtalk.DingTalkNotifier;
+import com.vci.ubcs.admin.dingtalk.DingTalkService;
+import com.vci.ubcs.admin.dingtalk.MonitorProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.web.reactive.function.client.WebClient;
+
+/**
+ * 閽夐拤鑷姩閰嶇疆
+ *
+ * @author L.cm
+ */
+@Configuration(proxyBeanMethods = false)
+@ConditionalOnProperty(value = "monitor.ding-talk.enabled", havingValue = "true")
+public class DingTalkConfiguration {
+
+ @Bean
+ public DingTalkService dingTalkService(MonitorProperties properties,
+ WebClient.Builder builder) {
+ return new DingTalkService(properties, builder.build());
+ }
+
+ @Bean
+ public DingTalkNotifier dingTalkNotifier(MonitorProperties properties,
+ DingTalkService dingTalkService,
+ InstanceRepository repository,
+ Environment environment) {
+ return new DingTalkNotifier(dingTalkService, properties, environment, repository);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/SecurityConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/SecurityConfiguration.java
new file mode 100644
index 0000000..1b1003c
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/config/SecurityConfiguration.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.config;
+
+import de.codecentric.boot.admin.server.config.AdminServerProperties;
+import com.vci.ubcs.admin.security.InternalAuthorizationManager;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
+import org.springframework.security.config.web.server.ServerHttpSecurity;
+import org.springframework.security.web.server.SecurityWebFilterChain;
+import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler;
+
+import java.net.URI;
+
+/**
+ * 鐩戞帶瀹夊叏閰嶇疆
+ *
+ * @author L.cm
+ */
+@EnableWebFluxSecurity
+@Configuration(proxyBeanMethods = false)
+@EnableConfigurationProperties(AdminServerProperties.class)
+public class SecurityConfiguration {
+ private final String contextPath;
+
+ public SecurityConfiguration(AdminServerProperties adminServerProperties) {
+ this.contextPath = adminServerProperties.getContextPath();
+ }
+
+ @Bean
+ public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
+ // @formatter:off
+ RedirectServerAuthenticationSuccessHandler successHandler = new RedirectServerAuthenticationSuccessHandler();
+ successHandler.setLocation(URI.create(contextPath + "/"));
+ return http.headers().frameOptions().disable().and()
+ .authorizeExchange()
+ // 鏀惧紑闈欐�佹枃浠跺拰鐧婚檰
+ .pathMatchers(
+ contextPath + "/assets/**"
+ , contextPath + "/login"
+ , contextPath + "/v1/agent/**"
+ , contextPath + "/v1/catalog/**"
+ , contextPath + "/v1/health/**"
+ ).permitAll()
+ // 鍐呯綉鍙闂� actuator
+ .pathMatchers(contextPath + "/actuator", contextPath + "/actuator/**").access(new InternalAuthorizationManager())
+ .anyExchange().authenticated().and()
+ .formLogin().loginPage(contextPath + "/login")
+ .authenticationSuccessHandler(successHandler).and()
+ .logout().logoutUrl(contextPath + "/logout").and()
+ .httpBasic().disable()
+ .csrf().disable()
+ .build();
+ // @formatter:on
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkNotifier.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkNotifier.java
new file mode 100644
index 0000000..f19ec11
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkNotifier.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.dingtalk;
+
+import de.codecentric.boot.admin.server.domain.entities.Instance;
+import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
+import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
+import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent;
+import de.codecentric.boot.admin.server.domain.values.Registration;
+import de.codecentric.boot.admin.server.domain.values.StatusInfo;
+import de.codecentric.boot.admin.server.notify.AbstractEventNotifier;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.env.Environment;
+import org.springframework.lang.NonNull;
+import reactor.core.publisher.Mono;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * 鏈嶅姟涓婁笅绾垮憡璀�
+ *
+ * <p>
+ * 娉ㄦ剰锛欰bstractStatusChangeNotifier 杩欎釜浜嬩欢鏈夋瘺鐥�
+ * </p>
+ *
+ * @author L.cm
+ */
+@Slf4j
+public class DingTalkNotifier extends AbstractEventNotifier {
+ private final DingTalkService dingTalkService;
+ private final MonitorProperties properties;
+ private final Environment environment;
+ public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+ public DingTalkNotifier(DingTalkService dingTalkService, MonitorProperties properties,
+ Environment environment, InstanceRepository repository) {
+ super(repository);
+ this.dingTalkService = dingTalkService;
+ this.properties = properties;
+ this.environment = environment;
+ }
+
+ @NonNull
+ @Override
+ protected Mono<Void> doNotify(@NonNull InstanceEvent event, @NonNull Instance instance) {
+ if (event instanceof InstanceStatusChangedEvent) {
+ // 鏋勯�犺姹傜粨鏋�
+ return createAndPushMsg(event, instance);
+ }
+ return Mono.empty();
+ }
+
+ private Mono<Void> createAndPushMsg(InstanceEvent event, Instance instance) {
+ Registration registration = instance.getRegistration();
+ // 鏈嶅姟鍚�
+ String appName = registration.getName();
+ // 鏈嶅姟鍦板潃
+ String serviceUrl = registration.getServiceUrl();
+ StatusInfo status = instance.getStatusInfo();
+ // 鏃堕棿
+ LocalDateTime localDateTime = LocalDateTime.ofInstant(event.getTimestamp(), ZoneId.systemDefault());
+ MonitorProperties.DingTalk dingTalk = properties.getDingTalk();
+ String title = dingTalk.getService().getTitle();
+
+ String message = "## **" + title + "**\n" +
+ "#### **銆愭湇鍔°��** " + appName + "\n" +
+ "#### **銆愮幆澧冦��** " + environment.getActiveProfiles()[0] + "\n" +
+ "#### **銆愬湴鍧�銆�** " + serviceUrl + "\n" +
+ "#### **銆愮姸鎬併��** " + statusCn(status) + "\n" +
+ "#### **銆愭椂闂淬��** " + DATETIME_FORMATTER.format(localDateTime) + "\n" +
+ "#### **銆愯鎯呫��** " + dingTalk.getLink() + "\n";
+
+ return dingTalkService.pushMsg(title, message);
+ }
+
+ private String statusCn(StatusInfo status) {
+ if (status.isUp()) {
+ return "搴旂敤涓婄嚎锛圛S UP锛�";
+ } else if (status.isDown()) {
+ return "搴旂敤瀹曟満锛圛S DOWN锛�";
+ } else if (status.isOffline()) {
+ return "搴旂敤鎺夌嚎锛圛S OFFLINE锛�";
+ } else if (status.isUnknown()) {
+ return "鏈煡鐘舵�侊紙UNKNOWN锛�";
+ } else {
+ return "寮傚父鐘舵��";
+ }
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkService.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkService.java
new file mode 100644
index 0000000..e20c878
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/DingTalkService.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.dingtalk;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.util.Base64Utils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.reactive.function.BodyInserters;
+import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.util.UriUtils;
+import reactor.core.publisher.Mono;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 閽夐拤 鏈嶅姟
+ *
+ * @author L.cm
+ */
+@Slf4j
+@RequiredArgsConstructor
+public class DingTalkService {
+ private static final String DING_TALK_ROBOT_URL = "https://oapi.dingtalk.com/robot/send?access_token=";
+ private final MonitorProperties properties;
+ private final WebClient webClient;
+
+ /**
+ * 鍙戦�佹秷鎭�
+ *
+ * @param title title
+ * @param text 娑堟伅
+ */
+ public Mono<Void> pushMsg(String title, String text) {
+ log.info("閽夐拤娑堟伅锛歔鍒涘缓娑堟伅浣揮title:{}, text:{}", title, text);
+
+ HashMap<String, String> params = new HashMap<>(2);
+ params.put("title", title);
+ params.put("text", text);
+
+ Map<String, Object> body = new HashMap<>(2);
+ body.put("msgtype", "markdown");
+ body.put("markdown", params);
+ log.info("鍒涘缓娑堟伅浣� json锛歿}", body);
+
+ MonitorProperties.DingTalk dingTalk = properties.getDingTalk();
+ String accessToken = dingTalk.getAccessToken();
+ if (!StringUtils.hasText(accessToken)) {
+ log.error("DingTalk alert config accessToken ${monitor.ding-talk.access-token} is blank.");
+ return Mono.empty();
+ }
+
+ String urlString = DING_TALK_ROBOT_URL + dingTalk.getAccessToken();
+ // 鏈夌閽ヨ绛惧悕
+ String secret = dingTalk.getSecret();
+ if (StringUtils.hasText(secret)) {
+ long timestamp = System.currentTimeMillis();
+ urlString += String.format("×tamp=%s&sign=%s", timestamp, getSign(secret, timestamp));
+ }
+ return webClient.post()
+ .uri(URI.create(urlString))
+ .contentType(MediaType.APPLICATION_JSON)
+ .body(BodyInserters.fromValue(body))
+ .retrieve()
+ .bodyToMono(String.class)
+ .doOnSuccess((result) -> log.info("閽夐拤娑堟伅锛歔娑堟伅杩斿洖]result:{}", result))
+ .then();
+ }
+
+ private static String getSign(String secret, long timestamp) {
+ String stringToSign = timestamp + "\n" + secret;
+ byte[] hmacSha256Bytes = digestHmac(stringToSign, secret);
+ return UriUtils.encode(Base64Utils.encodeToString(hmacSha256Bytes), StandardCharsets.UTF_8);
+ }
+
+ public static byte[] digestHmac(String data, String key) {
+ SecretKey secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
+ try {
+ Mac mac = Mac.getInstance(secretKey.getAlgorithm());
+ mac.init(secretKey);
+ return mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
+ } catch (NoSuchAlgorithmException | InvalidKeyException e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/MonitorProperties.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/MonitorProperties.java
new file mode 100644
index 0000000..0397f1e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/dingtalk/MonitorProperties.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.dingtalk;
+
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+
+/**
+ * 鐩戞帶閰嶇疆
+ *
+ * @author L.cm
+ */
+@Getter
+@Setter
+@RefreshScope
+@ConfigurationProperties("monitor")
+public class MonitorProperties {
+ private DingTalk dingTalk = new DingTalk();
+
+ @Getter
+ @Setter
+ public static class DingTalk {
+ /**
+ * 鍚敤閽夐拤鍛婅锛岄粯璁や负 true
+ */
+ private boolean enabled = false;
+ /**
+ * 閽夐拤鏈哄櫒浜� token
+ */
+ private String accessToken;
+ /**
+ * 绛惧悕锛氬鏋滄湁 secret 鍒欒繘琛岀鍚嶏紝鍏煎鑰佹帴鍙�
+ */
+ private String secret;
+ /**
+ * 鍦板潃閰嶇疆
+ */
+ private String link;
+ private Service service = new Service();
+ }
+
+ @Getter
+ @Setter
+ public static class Service {
+ /**
+ * 鏈嶅姟 鐘舵�� title
+ */
+ private String title = "鏈嶅姟鐘舵�侀�氱煡";
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/security/InternalAuthorizationManager.java b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/security/InternalAuthorizationManager.java
new file mode 100644
index 0000000..f61fce9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/java/com/vci/ubcs/admin/security/InternalAuthorizationManager.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu 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: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.ubcs.admin.security;
+
+import org.springblade.core.launch.utils.INetUtil;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.security.authorization.AuthorizationDecision;
+import org.springframework.security.authorization.ReactiveAuthorizationManager;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.server.authorization.AuthorizationContext;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.net.InetSocketAddress;
+import java.util.Optional;
+
+/**
+ * 鍐呯綉璁よ瘉绠$悊锛屽唴缃戞斁琛岋紝澶栫綉璁よ瘉
+ *
+ * @author L.cm
+ */
+public class InternalAuthorizationManager implements ReactiveAuthorizationManager<AuthorizationContext> {
+ private static final String HEADER_X_FORWARDED_FOR = "X-Forwarded-For";
+
+ @Override
+ public Mono<AuthorizationDecision> check(Mono<Authentication> authentication, AuthorizationContext context) {
+ return Mono.just(getAuthorizationDecision(context));
+ }
+
+ private static AuthorizationDecision getAuthorizationDecision(AuthorizationContext context) {
+ return new AuthorizationDecision(isInternalNet(context));
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁鍐呯綉 ip 璇锋眰
+ *
+ * @param context AuthorizationContext
+ * @return 鏄惁鍐呯綉 ip
+ */
+ private static boolean isInternalNet(AuthorizationContext context) {
+ ServerHttpRequest request = Optional.ofNullable(context)
+ .map(AuthorizationContext::getExchange)
+ .map(ServerWebExchange::getRequest)
+ .orElse(null);
+ if (request == null) {
+ return false;
+ }
+ HttpHeaders headers = request.getHeaders();
+ // 濡傛灉娌℃湁 X-Forwarded-For 浠h〃涓� admin 鎷夊彇
+ if (!headers.containsKey(HEADER_X_FORWARDED_FOR)) {
+ return true;
+ }
+ return Optional.of(request)
+ .map(ServerHttpRequest::getRemoteAddress)
+ .map(InetSocketAddress::getAddress)
+ .map(INetUtil::isInternalIp)
+ .orElse(false);
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-admin/src/main/resources/bootstrap.yml b/Source/UBCS/ubcs-ops/ubcs-admin/src/main/resources/bootstrap.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-admin/src/main/resources/bootstrap.yml
rename to Source/UBCS/ubcs-ops/ubcs-admin/src/main/resources/bootstrap.yml
diff --git a/Source/BladeX/blade-ops/blade-develop/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-develop/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-develop/Dockerfile
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/pom.xml b/Source/UBCS/ubcs-ops/ubcs-develop/pom.xml
new file mode 100644
index 0000000..a678fb7
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<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>ubcs-ops</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-develop</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-develop</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-dict-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/DevelopApplication.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/DevelopApplication.java
new file mode 100644
index 0000000..d7f9fc7
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/DevelopApplication.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 com.vci.ubcs.develop;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * Develop鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class DevelopApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_DEVELOP_NAME, DevelopApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/CodeController.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/CodeController.java
new file mode 100644
index 0000000..996aed9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/CodeController.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.develop.entity.Code;
+import com.vci.ubcs.develop.entity.Datasource;
+import com.vci.ubcs.develop.entity.Model;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.develop.service.ICodeService;
+import com.vci.ubcs.develop.service.IDatasourceService;
+import com.vci.ubcs.develop.service.IModelPrototypeService;
+import com.vci.ubcs.develop.service.IModelService;
+import org.springblade.develop.support.BladeCodeGenerator;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/code")
+@Api(value = "浠g爜鐢熸垚", tags = "浠g爜鐢熸垚")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+public class CodeController extends BladeController {
+
+ private final ICodeService codeService;
+ private final IDatasourceService datasourceService;
+ private final IModelService modelService;
+ private final IModelPrototypeService modelPrototypeService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆code")
+ public R<Code> detail(Code code) {
+ Code detail = codeService.getOne(Condition.getQueryWrapper(code));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "codeName", value = "妯″潡鍚�", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "tableName", value = "琛ㄥ悕", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "modelName", value = "瀹炰綋鍚�", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆code")
+ public R<IPage<Code>> list(@ApiIgnore @RequestParam Map<String, Object> code, Query query) {
+ IPage<Code> pages = codeService.page(Condition.getPage(query), Condition.getQueryWrapper(code, Code.class));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆code")
+ public R submit(@Valid @RequestBody Code code) {
+ return R.status(codeService.submit(code));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(codeService.removeByIds(Func.toLongList(ids)));
+ }
+
+ /**
+ * 澶嶅埗
+ */
+ @PostMapping("/copy")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "澶嶅埗", notes = "浼犲叆id")
+ public R copy(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
+ Code code = codeService.getById(id);
+ code.setId(null);
+ code.setCodeName(code.getCodeName() + "-copy");
+ return R.status(codeService.save(code));
+ }
+
+ /**
+ * 浠g爜鐢熸垚
+ */
+ @PostMapping("/gen-code")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "浠g爜鐢熸垚", notes = "浼犲叆ids")
+ public R genCode(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ Collection<Code> codes = codeService.listByIds(Func.toLongList(ids));
+ codes.forEach(code -> {
+ BladeCodeGenerator generator = new BladeCodeGenerator();
+ // 璁剧疆鍩虹妯″瀷
+ Model model = modelService.getById(code.getModelId());
+ generator.setModelCode(model.getModelCode());
+ generator.setModelClass(model.getModelClass());
+ // 璁剧疆妯″瀷闆嗗悎
+ List<ModelPrototype> prototypes = modelPrototypeService.prototypeList(model.getId());
+ generator.setModel(JsonUtil.readMap(JsonUtil.toJson(model)));
+ generator.setPrototypes(JsonUtil.readListMap(JsonUtil.toJson(prototypes)));
+ if (StringUtil.isNotBlank(code.getSubModelId())) {
+ Model subModel = modelService.getById(Func.toLong(code.getSubModelId()));
+ List<ModelPrototype> subPrototypes = modelPrototypeService.prototypeList(subModel.getId());
+ generator.setSubModel(JsonUtil.readMap(JsonUtil.toJson(subModel)));
+ generator.setSubPrototypes(JsonUtil.readListMap(JsonUtil.toJson(subPrototypes)));
+ }
+ // 璁剧疆鏁版嵁婧�
+ Datasource datasource = datasourceService.getById(model.getDatasourceId());
+ generator.setDriverName(datasource.getDriverClass());
+ generator.setUrl(datasource.getUrl());
+ generator.setUsername(datasource.getUsername());
+ generator.setPassword(datasource.getPassword());
+ // 璁剧疆鍩虹閰嶇疆
+ generator.setCodeStyle(code.getCodeStyle());
+ generator.setCodeName(code.getCodeName());
+ generator.setServiceName(code.getServiceName());
+ generator.setPackageName(code.getPackageName());
+ generator.setPackageDir(code.getApiPath());
+ generator.setPackageWebDir(code.getWebPath());
+ generator.setTablePrefix(Func.toStrArray(code.getTablePrefix()));
+ generator.setIncludeTables(Func.toStrArray(code.getTableName()));
+ // 璁剧疆妯$増淇℃伅
+ generator.setTemplateType(code.getTemplateType());
+ generator.setAuthor(code.getAuthor());
+ generator.setSubModelId(code.getSubModelId());
+ generator.setSubFkId(code.getSubFkId());
+ generator.setTreeId(code.getTreeId());
+ generator.setTreePid(code.getTreePid());
+ generator.setTreeName(code.getTreeName());
+ // 璁剧疆鏄惁缁ф壙鍩虹涓氬姟瀛楁
+ generator.setHasSuperEntity(code.getBaseMode() == 2);
+ // 璁剧疆鏄惁寮�鍚寘瑁呭櫒妯″紡
+ generator.setHasWrapper(code.getWrapMode() == 2);
+ // 璁剧疆鏄惁寮�鍚繙绋嬭皟鐢ㄦā寮�
+ generator.setHasFeign(code.getFeignMode() == 2);
+ // 璁剧疆鎺у埗鍣ㄦ湇鍔″悕鍓嶇紑
+ generator.setHasServiceName(Boolean.TRUE);
+ // 鍚姩浠g爜鐢熸垚
+ generator.run();
+ });
+ return R.success("浠g爜鐢熸垚鎴愬姛");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/DatasourceController.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/DatasourceController.java
new file mode 100644
index 0000000..55986ea
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/DatasourceController.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.develop.entity.Datasource;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.develop.service.IDatasourceService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 鏁版嵁婧愰厤缃〃 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/datasource")
+@Api(value = "鏁版嵁婧愰厤缃〃", tags = "鏁版嵁婧愰厤缃〃鎺ュ彛")
+public class DatasourceController extends BladeController {
+
+ private final IDatasourceService datasourceService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆datasource")
+ public R<Datasource> detail(Datasource datasource) {
+ Datasource detail = datasourceService.getOne(Condition.getQueryWrapper(datasource));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 鏁版嵁婧愰厤缃〃
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆datasource")
+ public R<IPage<Datasource>> list(Datasource datasource, Query query) {
+ IPage<Datasource> pages = datasourceService.page(Condition.getPage(query), Condition.getQueryWrapper(datasource));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 鏁版嵁婧愰厤缃〃
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆datasource")
+ public R save(@Valid @RequestBody Datasource datasource) {
+ return R.status(datasourceService.save(datasource));
+ }
+
+ /**
+ * 淇敼 鏁版嵁婧愰厤缃〃
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆datasource")
+ public R update(@Valid @RequestBody Datasource datasource) {
+ return R.status(datasourceService.updateById(datasource));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 鏁版嵁婧愰厤缃〃
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆datasource")
+ public R submit(@Valid @RequestBody Datasource datasource) {
+ datasource.setUrl(datasource.getUrl().replace("&", "&"));
+ return R.status(datasourceService.saveOrUpdate(datasource));
+ }
+
+
+ /**
+ * 鍒犻櫎 鏁版嵁婧愰厤缃〃
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(datasourceService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 鏁版嵁婧愬垪琛�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "鏌ヨ鍒楄〃")
+ public R<List<Datasource>> select() {
+ List<Datasource> list = datasourceService.list();
+ return R.data(list);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelController.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelController.java
new file mode 100644
index 0000000..0fb67c8
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelController.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.develop.entity.Datasource;
+import com.vci.ubcs.develop.entity.Model;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+import com.vci.ubcs.develop.service.IDatasourceService;
+import com.vci.ubcs.develop.service.IModelPrototypeService;
+import com.vci.ubcs.develop.service.IModelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鏁版嵁妯″瀷琛� 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/model")
+@Api(value = "鏁版嵁妯″瀷琛�", tags = "鏁版嵁妯″瀷琛ㄦ帴鍙�")
+public class ModelController extends BladeController {
+
+ private final IModelService modelService;
+ private final IModelPrototypeService modelPrototypeService;
+ private final IDatasourceService datasourceService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆model")
+ public R<Model> detail(Model model) {
+ Model detail = modelService.getOne(Condition.getQueryWrapper(model));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 鏁版嵁妯″瀷琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆model")
+ public R<IPage<Model>> list(Model model, Query query) {
+ IPage<Model> pages = modelService.page(Condition.getPage(query), Condition.getQueryWrapper(model));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 鏁版嵁妯″瀷琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆model")
+ public R save(@Valid @RequestBody Model model) {
+ return R.status(modelService.save(model));
+ }
+
+ /**
+ * 淇敼 鏁版嵁妯″瀷琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆model")
+ public R update(@Valid @RequestBody Model model) {
+ return R.status(modelService.updateById(model));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 鏁版嵁妯″瀷琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆model")
+ public R submit(@Valid @RequestBody Model model) {
+ return R.status(modelService.saveOrUpdate(model));
+ }
+
+ /**
+ * 鍒犻櫎 鏁版嵁妯″瀷琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(modelService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 妯″瀷鍒楄〃
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "妯″瀷鍒楄〃", notes = "妯″瀷鍒楄〃")
+ public R<List<Model>> select() {
+ List<Model> list = modelService.list();
+ list.forEach(model -> model.setModelName(model.getModelTable() + StringPool.COLON + StringPool.SPACE + model.getModelName()));
+ return R.data(list);
+ }
+
+ /**
+ * 鑾峰彇鐗╃悊琛ㄥ垪琛�
+ */
+ @GetMapping("/table-list")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鐗╃悊琛ㄥ垪琛�", notes = "浼犲叆datasourceId")
+ public R<List<TableInfo>> tableList(Long datasourceId) {
+ Datasource datasource = datasourceService.getById(datasourceId);
+ ConfigBuilder config = getConfigBuilder(datasource);
+ List<TableInfo> tableInfoList = config.getTableInfoList().stream()
+ .filter(tableInfo -> !StringUtil.startsWithIgnoreCase(tableInfo.getName(), "ACT_"))
+ .map(tableInfo -> tableInfo.setComment(tableInfo.getName() + StringPool.COLON + tableInfo.getComment()))
+ .collect(Collectors.toList());
+ return R.data(tableInfoList);
+ }
+
+ /**
+ * 鑾峰彇鐗╃悊琛ㄤ俊鎭�
+ */
+ @GetMapping("/table-info")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "鐗╃悊琛ㄤ俊鎭�", notes = "浼犲叆model淇℃伅")
+ public R<TableInfo> tableInfo(Long modelId, String tableName, Long datasourceId) {
+ if (StringUtil.isBlank(tableName)) {
+ Model model = modelService.getById(modelId);
+ tableName = model.getModelTable();
+ }
+ TableInfo tableInfo = getTableInfo(tableName, datasourceId);
+ return R.data(tableInfo);
+ }
+
+ /**
+ * 鑾峰彇瀛楁淇℃伅
+ */
+ @GetMapping("/model-prototype")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "鐗╃悊琛ㄥ瓧娈典俊鎭�", notes = "浼犲叆modelId涓巇atasourceId")
+ public R modelPrototype(Long modelId, Long datasourceId) {
+ List<ModelPrototype> modelPrototypeList = modelPrototypeService.list(Wrappers.<ModelPrototype>query().lambda().eq(ModelPrototype::getModelId, modelId));
+ if (modelPrototypeList.size() > 0) {
+ return R.data(modelPrototypeList);
+ }
+ Model model = modelService.getById(modelId);
+ String tableName = model.getModelTable();
+ TableInfo tableInfo = getTableInfo(tableName, datasourceId);
+ if (tableInfo != null) {
+ return R.data(tableInfo.getFields());
+ } else {
+ return R.fail("鏈幏寰楃浉鍏宠〃淇℃伅");
+ }
+ }
+
+ /**
+ * 鑾峰彇琛ㄤ俊鎭�
+ *
+ * @param tableName 琛ㄥ悕
+ * @param datasourceId 鏁版嵁婧愪富閿�
+ */
+ private TableInfo getTableInfo(String tableName, Long datasourceId) {
+ Datasource datasource = datasourceService.getById(datasourceId);
+ ConfigBuilder config = getConfigBuilder(datasource);
+ List<TableInfo> tableInfoList = config.getTableInfoList();
+ TableInfo tableInfo = null;
+ Iterator<TableInfo> iterator = tableInfoList.stream().filter(table -> table.getName().equals(tableName)).collect(Collectors.toList()).iterator();
+ if (iterator.hasNext()) {
+ tableInfo = iterator.next();
+ tableInfo.setEntityName(tableInfo.getEntityName().replace(StringUtil.firstCharToUpper(tableName.split(StringPool.UNDERSCORE)[0]), StringPool.EMPTY));
+ }
+ return tableInfo;
+ }
+
+ /**
+ * 鑾峰彇琛ㄩ厤缃俊鎭�
+ *
+ * @param datasource 鏁版嵁婧愪俊鎭�
+ */
+ private ConfigBuilder getConfigBuilder(Datasource datasource) {
+ StrategyConfig strategyConfig = new StrategyConfig.Builder()
+ .entityBuilder()
+ .naming(NamingStrategy.underline_to_camel)
+ .columnNaming(NamingStrategy.underline_to_camel).build();
+ DataSourceConfig datasourceConfig = new DataSourceConfig.Builder(
+ datasource.getUrl(), datasource.getUsername(), datasource.getPassword()
+ ).build();
+ return new ConfigBuilder(null, datasourceConfig, strategyConfig, null, null, null);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelPrototypeController.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelPrototypeController.java
new file mode 100644
index 0000000..3b0fa72
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/controller/ModelPrototypeController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+import com.vci.ubcs.develop.service.IModelPrototypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 鏁版嵁鍘熷瀷琛� 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/model-prototype")
+@Api(value = "鏁版嵁鍘熷瀷琛�", tags = "鏁版嵁鍘熷瀷琛ㄦ帴鍙�")
+public class ModelPrototypeController extends BladeController {
+
+ private final IModelPrototypeService modelPrototypeService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆modelPrototype")
+ public R<ModelPrototype> detail(ModelPrototype modelPrototype) {
+ ModelPrototype detail = modelPrototypeService.getOne(Condition.getQueryWrapper(modelPrototype));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 鏁版嵁鍘熷瀷琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆modelPrototype")
+ public R<IPage<ModelPrototype>> list(ModelPrototype modelPrototype, Query query) {
+ IPage<ModelPrototype> pages = modelPrototypeService.page(Condition.getPage(query), Condition.getQueryWrapper(modelPrototype));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 鏁版嵁鍘熷瀷琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆modelPrototype")
+ public R save(@Valid @RequestBody ModelPrototype modelPrototype) {
+ return R.status(modelPrototypeService.save(modelPrototype));
+ }
+
+ /**
+ * 淇敼 鏁版嵁鍘熷瀷琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆modelPrototype")
+ public R update(@Valid @RequestBody ModelPrototype modelPrototype) {
+ return R.status(modelPrototypeService.updateById(modelPrototype));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 鏁版嵁鍘熷瀷琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆modelPrototype")
+ public R submit(@Valid @RequestBody ModelPrototype modelPrototype) {
+ return R.status(modelPrototypeService.saveOrUpdate(modelPrototype));
+ }
+
+ /**
+ * 鎵归噺鏂板鎴栦慨鏀� 鏁版嵁鍘熷瀷琛�
+ */
+ @PostMapping("/submit-list")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鎵归噺鏂板鎴栦慨鏀�", notes = "浼犲叆modelPrototype闆嗗悎")
+ public R submitList(@Valid @RequestBody List<ModelPrototype> modelPrototypes) {
+ return R.status(modelPrototypeService.submitList(modelPrototypes));
+ }
+
+ /**
+ * 鍒犻櫎 鏁版嵁鍘熷瀷琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(modelPrototypeService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 鏁版嵁鍘熷瀷鍒楄〃
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "鏁版嵁鍘熷瀷鍒楄〃", notes = "鏁版嵁鍘熷瀷鍒楄〃")
+ public R<List<ModelPrototype>> select(@ApiParam(value = "鏁版嵁妯″瀷Id", required = true) @RequestParam Long modelId) {
+ List<ModelPrototype> list = modelPrototypeService.list(Wrappers.<ModelPrototype>query().lambda().eq(ModelPrototype::getModelId, modelId));
+ list.forEach(prototype -> prototype.setComment(prototype.getJdbcName() + StringPool.COLON + StringPool.SPACE + prototype.getComment()));
+ return R.data(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/dto/ModelDTO.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/dto/ModelDTO.java
new file mode 100644
index 0000000..9683c90
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/dto/ModelDTO.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.dto;
+
+import com.vci.ubcs.develop.entity.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+
+import java.util.List;
+
+/**
+ * 浠g爜妯″瀷DTO
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ModelDTO extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 浠g爜寤烘ā鍘熷瀷
+ */
+ private List<ModelPrototype> prototypes;
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Code.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Code.java
new file mode 100644
index 0000000..61356d1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Code.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_code")
+@ApiModel(value = "Code瀵硅薄", description = "Code瀵硅薄")
+public class Code implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鏁版嵁妯″瀷涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鏁版嵁妯″瀷涓婚敭")
+ private Long modelId;
+
+ /**
+ * 妯″潡鍚嶇О
+ */
+ @ApiModelProperty(value = "鏈嶅姟鍚嶇О")
+ private String serviceName;
+
+ /**
+ * 妯″潡鍚嶇О
+ */
+ @ApiModelProperty(value = "妯″潡鍚嶇О")
+ private String codeName;
+
+ /**
+ * 琛ㄥ悕
+ */
+ @ApiModelProperty(value = "琛ㄥ悕")
+ private String tableName;
+
+ /**
+ * 瀹炰綋鍚�
+ */
+ @ApiModelProperty(value = "琛ㄥ墠缂�")
+ private String tablePrefix;
+
+ /**
+ * 涓婚敭鍚�
+ */
+ @ApiModelProperty(value = "涓婚敭鍚�")
+ private String pkName;
+
+ /**
+ * 鍚庣鍖呭悕
+ */
+ @ApiModelProperty(value = "鍚庣鍖呭悕")
+ private String packageName;
+
+ /**
+ * 妯$増绫诲瀷
+ */
+ @ApiModelProperty(value = "妯$増绫诲瀷")
+ private String templateType;
+
+ /**
+ * 浣滆�呬俊鎭�
+ */
+ @ApiModelProperty(value = "浣滆�呬俊鎭�")
+ private String author;
+
+ /**
+ * 瀛愯〃妯″瀷涓婚敭
+ */
+ @ApiModelProperty(value = "瀛愯〃妯″瀷涓婚敭")
+ private String subModelId;
+
+ /**
+ * 瀛愯〃缁戝畾澶栭敭
+ */
+ @ApiModelProperty(value = "瀛愯〃缁戝畾澶栭敭")
+ private String subFkId;
+
+ /**
+ * 鏍戜富閿瓧娈�
+ */
+ @ApiModelProperty(value = "鏍戜富閿瓧娈�")
+ private String treeId;
+
+ /**
+ * 鏍戠埗涓婚敭瀛楁
+ */
+ @ApiModelProperty(value = "鏍戠埗涓婚敭瀛楁")
+ private String treePid;
+
+ /**
+ * 鏍戝悕绉板瓧娈�
+ */
+ @ApiModelProperty(value = "鏍戝悕绉板瓧娈�")
+ private String treeName;
+
+ /**
+ * 鍩虹涓氬姟妯″紡
+ */
+ @ApiModelProperty(value = "鍩虹涓氬姟妯″紡")
+ private Integer baseMode;
+
+ /**
+ * 鍖呰鍣ㄦā寮�
+ */
+ @ApiModelProperty(value = "鍖呰鍣ㄦā寮�")
+ private Integer wrapMode;
+
+ /**
+ * 杩滅▼璋冪敤妯″紡
+ */
+ @ApiModelProperty(value = "杩滅▼璋冪敤妯″紡")
+ private Integer feignMode;
+
+ /**
+ * 浠g爜椋庢牸
+ */
+ @ApiModelProperty(value = "浠g爜椋庢牸")
+ private String codeStyle;
+
+ /**
+ * 鍚庣璺緞
+ */
+ @ApiModelProperty(value = "鍚庣璺緞")
+ private String apiPath;
+
+ /**
+ * 鍓嶇璺緞
+ */
+ @ApiModelProperty(value = "鍓嶇璺緞")
+ private String webPath;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Datasource.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Datasource.java
new file mode 100644
index 0000000..338111f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Datasource.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.springblade.core.mp.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 鏁版嵁婧愰厤缃〃瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_datasource")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Datasource瀵硅薄", description = "鏁版嵁婧愰厤缃〃")
+public class Datasource extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍚嶇О
+ */
+ @ApiModelProperty(value = "鍚嶇О")
+ private String name;
+ /**
+ * 椹卞姩绫�
+ */
+ @ApiModelProperty(value = "椹卞姩绫�")
+ private String driverClass;
+ /**
+ * 杩炴帴鍦板潃
+ */
+ @ApiModelProperty(value = "杩炴帴鍦板潃")
+ private String url;
+ /**
+ * 鐢ㄦ埛鍚�
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛鍚�")
+ private String username;
+ /**
+ * 瀵嗙爜
+ */
+ @ApiModelProperty(value = "瀵嗙爜")
+ private String password;
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Model.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Model.java
new file mode 100644
index 0000000..fd3e1ee
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/Model.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 鏁版嵁妯″瀷琛ㄥ疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_model")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Model瀵硅薄", description = "鏁版嵁妯″瀷琛�")
+public class Model extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鏁版嵁婧愪富閿�
+ */
+ @ApiModelProperty(value = "鏁版嵁婧愪富閿�")
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long datasourceId;
+ /**
+ * 妯″瀷鍚嶇О
+ */
+ @ApiModelProperty(value = "妯″瀷鍚嶇О")
+ private String modelName;
+ /**
+ * 妯″瀷缂栧彿
+ */
+ @ApiModelProperty(value = "妯″瀷缂栧彿")
+ private String modelCode;
+ /**
+ * 鐗╃悊琛ㄥ悕
+ */
+ @ApiModelProperty(value = "鐗╃悊琛ㄥ悕")
+ private String modelTable;
+ /**
+ * 妯″瀷绫诲悕
+ */
+ @ApiModelProperty(value = "妯″瀷绫诲悕")
+ private String modelClass;
+ /**
+ * 妯″瀷澶囨敞
+ */
+ @ApiModelProperty(value = "妯″瀷澶囨敞")
+ private String modelRemark;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/ModelPrototype.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/ModelPrototype.java
new file mode 100644
index 0000000..f507c18
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/entity/ModelPrototype.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 鏁版嵁鍘熷瀷琛ㄥ疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_model_prototype")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ModelPrototype瀵硅薄", description = "鏁版嵁鍘熷瀷琛�")
+public class ModelPrototype extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 妯″瀷涓婚敭
+ */
+ @ApiModelProperty(value = "妯″瀷涓婚敭")
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long modelId;
+ /**
+ * 鐗╃悊鍒楀悕
+ */
+ @ApiModelProperty(value = "鐗╃悊鍒楀悕")
+ private String jdbcName;
+ /**
+ * 鐗╃悊绫诲瀷
+ */
+ @ApiModelProperty(value = "鐗╃悊绫诲瀷")
+ private String jdbcType;
+ /**
+ * 瀹炰綋鍒楀悕
+ */
+ @ApiModelProperty(value = "瀹炰綋鍒楀悕")
+ private String propertyName;
+ /**
+ * 瀹炰綋绫诲瀷
+ */
+ @ApiModelProperty(value = "瀹炰綋绫诲瀷")
+ private String propertyType;
+ /**
+ * 瀹炰綋绫诲瀷寮曠敤
+ */
+ @ApiModelProperty(value = "瀹炰綋绫诲瀷寮曠敤")
+ private String propertyEntity;
+ /**
+ * 娉ㄩ噴璇存槑
+ */
+ @ApiModelProperty(value = "娉ㄩ噴璇存槑")
+ private String comment;
+ /**
+ * 鍒楄〃鏄剧ず
+ */
+ @ApiModelProperty(value = "鍒楄〃鏄剧ず")
+ private Integer isList;
+ /**
+ * 琛ㄥ崟鏄剧ず
+ */
+ @ApiModelProperty(value = "琛ㄥ崟鏄剧ず")
+ private Integer isForm;
+ /**
+ * 鐙崰涓�琛�
+ */
+ @ApiModelProperty(value = "鐙崰涓�琛�")
+ private Integer isRow;
+ /**
+ * 缁勪欢绫诲瀷
+ */
+ @ApiModelProperty(value = "缁勪欢绫诲瀷")
+ private String componentType;
+ /**
+ * 瀛楀吀缂栫爜
+ */
+ @ApiModelProperty(value = "瀛楀吀缂栫爜")
+ private String dictCode;
+ /**
+ * 鏄惁蹇呭~
+ */
+ @ApiModelProperty(value = "鏄惁蹇呭~")
+ private Integer isRequired;
+ /**
+ * 鏌ヨ閰嶇疆
+ */
+ @ApiModelProperty(value = "鏌ヨ閰嶇疆")
+ private Integer isQuery;
+ /**
+ * 鏌ヨ绫诲瀷
+ */
+ @ApiModelProperty(value = "鏌ヨ绫诲瀷")
+ private String queryType;
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/CodeMapper.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/CodeMapper.java
new file mode 100644
index 0000000..2abfe6f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/CodeMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.develop.entity.Code;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface CodeMapper extends BaseMapper<Code> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/DatasourceMapper.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/DatasourceMapper.java
new file mode 100644
index 0000000..09bf5bc
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/DatasourceMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.develop.entity.Datasource;
+
+/**
+ * 鏁版嵁婧愰厤缃〃 Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface DatasourceMapper extends BaseMapper<Datasource> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelMapper.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelMapper.java
new file mode 100644
index 0000000..53748fd
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.develop.entity.Model;
+
+/**
+ * 鏁版嵁妯″瀷琛� Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface ModelMapper extends BaseMapper<Model> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelPrototypeMapper.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelPrototypeMapper.java
new file mode 100644
index 0000000..63c9f43
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/mapper/ModelPrototypeMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+
+/**
+ * 鏁版嵁鍘熷瀷琛� Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface ModelPrototypeMapper extends BaseMapper<ModelPrototype> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/ICodeService.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/ICodeService.java
new file mode 100644
index 0000000..d2a14b1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/ICodeService.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.develop.entity.Code;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ICodeService extends IService<Code> {
+
+ /**
+ * 鎻愪氦
+ *
+ * @param code
+ * @return
+ */
+ boolean submit(Code code);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IDatasourceService.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IDatasourceService.java
new file mode 100644
index 0000000..fb07286
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IDatasourceService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service;
+
+import com.vci.ubcs.develop.entity.Datasource;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 鏁版嵁婧愰厤缃〃 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IDatasourceService extends BaseService<Datasource> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelPrototypeService.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelPrototypeService.java
new file mode 100644
index 0000000..85b942f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelPrototypeService.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service;
+
+import com.vci.ubcs.develop.entity.ModelPrototype;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+/**
+ * 鏁版嵁鍘熷瀷琛� 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IModelPrototypeService extends BaseService<ModelPrototype> {
+
+ /**
+ * 鎵归噺鎻愪氦
+ *
+ * @param modelPrototypes 鍘熷瀷闆嗗悎
+ * @return boolean
+ */
+ boolean submitList(List<ModelPrototype> modelPrototypes);
+
+ /**
+ * 鍘熷瀷鍒楄〃
+ *
+ * @param modelId 妯″瀷ID
+ * @return List<ModelPrototype>
+ */
+ List<ModelPrototype> prototypeList(Long modelId);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelService.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelService.java
new file mode 100644
index 0000000..130c355
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/IModelService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service;
+
+import com.vci.ubcs.develop.entity.Model;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 鏁版嵁妯″瀷琛� 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IModelService extends BaseService<Model> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/CodeServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/CodeServiceImpl.java
new file mode 100644
index 0000000..3078aa1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/CodeServiceImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.develop.entity.Code;
+import com.vci.ubcs.develop.mapper.CodeMapper;
+import com.vci.ubcs.develop.service.ICodeService;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class CodeServiceImpl extends ServiceImpl<CodeMapper, Code> implements ICodeService {
+
+ @Override
+ public boolean submit(Code code) {
+ code.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return saveOrUpdate(code);
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/DatasourceServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/DatasourceServiceImpl.java
new file mode 100644
index 0000000..b9ec65a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/DatasourceServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service.impl;
+
+import com.vci.ubcs.develop.entity.Datasource;
+import com.vci.ubcs.develop.mapper.DatasourceMapper;
+import com.vci.ubcs.develop.service.IDatasourceService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏁版嵁婧愰厤缃〃 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DatasourceServiceImpl extends BaseServiceImpl<DatasourceMapper, Datasource> implements IDatasourceService {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelPrototypeServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelPrototypeServiceImpl.java
new file mode 100644
index 0000000..db60063
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelPrototypeServiceImpl.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.develop.entity.ModelPrototype;
+import com.vci.ubcs.develop.mapper.ModelPrototypeMapper;
+import com.vci.ubcs.develop.service.IModelPrototypeService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 鏁版嵁鍘熷瀷琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class ModelPrototypeServiceImpl extends BaseServiceImpl<ModelPrototypeMapper, ModelPrototype> implements IModelPrototypeService {
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean submitList(List<ModelPrototype> modelPrototypes) {
+ modelPrototypes.forEach(modelPrototype -> {
+ if (modelPrototype.getId() == null) {
+ this.save(modelPrototype);
+ } else {
+ this.updateById(modelPrototype);
+ }
+ });
+ return true;
+ }
+
+ @Override
+ public List<ModelPrototype> prototypeList(Long modelId) {
+ return this.list(Wrappers.<ModelPrototype>lambdaQuery().eq(ModelPrototype::getModelId, modelId));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelServiceImpl.java
new file mode 100644
index 0000000..1f9f566
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/java/com/vci/ubcs/develop/service/impl/ModelServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.develop.service.impl;
+
+import com.vci.ubcs.develop.entity.Model;
+import com.vci.ubcs.develop.mapper.ModelMapper;
+import com.vci.ubcs.develop.service.IModelService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏁版嵁妯″瀷琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class ModelServiceImpl extends BaseServiceImpl<ModelMapper, Model> implements IModelService {
+
+}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/CodeMapper.xml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/CodeMapper.xml
new file mode 100644
index 0000000..2480563
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/CodeMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.develop.mapper.CodeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="codeResultMap" type="com.vci.ubcs.develop.entity.Code">
+ <id column="id" property="id"/>
+ <result column="datasource_id" property="modelId"/>
+ <result column="service_name" property="serviceName"/>
+ <result column="code_name" property="codeName"/>
+ <result column="table_name" property="tableName"/>
+ <result column="pk_name" property="pkName"/>
+ <result column="base_mode" property="baseMode"/>
+ <result column="wrap_mode" property="wrapMode"/>
+ <result column="table_prefix" property="tablePrefix"/>
+ <result column="package_name" property="packageName"/>
+ <result column="api_path" property="apiPath"/>
+ <result column="web_path" property="webPath"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/DatasourceMapper.xml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/DatasourceMapper.xml
new file mode 100644
index 0000000..c657039
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/DatasourceMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.develop.mapper.DatasourceMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="datasourceResultMap" type="com.vci.ubcs.develop.entity.Datasource">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="driver_class" property="driverClass"/>
+ <result column="url" property="url"/>
+ <result column="username" property="username"/>
+ <result column="password" property="password"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelMapper.xml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelMapper.xml
new file mode 100644
index 0000000..aa7ad6f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.develop.mapper.ModelMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="modelResultMap" type="com.vci.ubcs.develop.entity.Model">
+ <id column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="datasource_id" property="datasourceId"/>
+ <result column="model_name" property="modelName"/>
+ <result column="model_code" property="modelCode"/>
+ <result column="model_table" property="modelTable"/>
+ <result column="model_class" property="modelClass"/>
+ <result column="model_remark" property="modelRemark"/>
+ </resultMap>
+
+
+ <select id="selectModelPage" resultMap="modelResultMap">
+ select * from blade_model where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelPrototypeMapper.xml b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelPrototypeMapper.xml
new file mode 100644
index 0000000..c0cda9b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/mapper/ModelPrototypeMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.develop.mapper.ModelPrototypeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="modelPrototypeResultMap" type="com.vci.ubcs.develop.entity.ModelPrototype">
+ <id column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="jdbc_name" property="jdbcName"/>
+ <result column="jdbc_type" property="jdbcType"/>
+ <result column="comment" property="comment"/>
+ <result column="property_type" property="propertyType"/>
+ <result column="property_entity" property="propertyEntity"/>
+ <result column="property_name" property="propertyName"/>
+ <result column="is_form" property="isForm"/>
+ <result column="is_row" property="isRow"/>
+ <result column="component_type" property="componentType"/>
+ <result column="dict_code" property="dictCode"/>
+ <result column="is_required" property="isRequired"/>
+ <result column="is_list" property="isList"/>
+ <result column="is_query" property="isQuery"/>
+ <result column="query_type" property="queryType"/>
+ </resultMap>
+
+
+ <select id="selectModelPrototypePage" resultMap="modelPrototypeResultMap">
+ select * from blade_model_prototype where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/resources/templates/code.properties b/Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/templates/code.properties
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/src/main/resources/templates/code.properties
rename to Source/UBCS/ubcs-ops/ubcs-develop/src/main/resources/templates/code.properties
diff --git a/Source/UBCS/ubcs-ops/ubcs-develop/src/test/java/com/vci/test/CodeGenerator.java b/Source/UBCS/ubcs-ops/ubcs-develop/src/test/java/com/vci/test/CodeGenerator.java
new file mode 100644
index 0000000..c5d16f5
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-develop/src/test/java/com/vci/test/CodeGenerator.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.test;
+
+
+import org.springblade.develop.constant.DevelopConstant;
+import org.springblade.develop.support.BladeCodeGenerator;
+
+/**
+ * 浠g爜鐢熸垚鍣�
+ *
+ * @author Chill
+ */
+public class CodeGenerator {
+
+ /**
+ * 浠g爜鐢熸垚鐨勬ā鍧楀悕
+ */
+ public static String CODE_NAME = "璧勬簮绠$悊";
+ /**
+ * 浠g爜鎵�鍦ㄦ湇鍔″悕
+ */
+ public static String SERVICE_NAME = "blade-develop";
+ /**
+ * 浠g爜鐢熸垚鐨勫寘鍚�
+ */
+ public static String PACKAGE_NAME = "org.springblade.develop";
+ /**
+ * 鍓嶇浠g爜鐢熸垚椋庢牸
+ */
+ public static String CODE_STYLE = DevelopConstant.SABER_NAME;
+ /**
+ * 鍓嶇浠g爜鐢熸垚鍦板潃
+ */
+ public static String PACKAGE_WEB_DIR = "/Users/chill/Workspaces/product/Saber";
+ /**
+ * 闇�瑕佸幓鎺夌殑琛ㄥ墠缂�
+ */
+ public static String[] TABLE_PREFIX = {"blade_"};
+ /**
+ * 闇�瑕佺敓鎴愮殑琛ㄥ悕(涓よ�呭彧鑳藉彇鍏朵竴)
+ */
+ public static String[] INCLUDE_TABLES = {"pl_sys_datasource"};
+ /**
+ * 闇�瑕佹帓闄ょ殑琛ㄥ悕(涓よ�呭彧鑳藉彇鍏朵竴)
+ */
+ public static String[] EXCLUDE_TABLES = {};
+ /**
+ * 鏄惁鍖呭惈鍩虹涓氬姟瀛楁
+ */
+ public static Boolean HAS_SUPER_ENTITY = Boolean.TRUE;
+ /**
+ * 鏄惁鍖呭惈杩滅▼璋冪敤
+ */
+ private static Boolean HAS_FEIGN = Boolean.TRUE;
+ /**
+ * 鍩虹涓氬姟瀛楁
+ */
+ public static String[] SUPER_ENTITY_COLUMNS = {"id", "create_time", "create_user", "create_dept", "update_time", "update_user", "status", "is_deleted"};
+
+
+ /**
+ * RUN THIS
+ */
+ public static void main(String[] args) {
+ BladeCodeGenerator generator = new BladeCodeGenerator();
+ generator.setCodeName(CODE_NAME);
+ generator.setServiceName(SERVICE_NAME);
+ generator.setCodeStyle(CODE_STYLE);
+ generator.setPackageName(PACKAGE_NAME);
+ generator.setPackageWebDir(PACKAGE_WEB_DIR);
+ generator.setTablePrefix(TABLE_PREFIX);
+ generator.setIncludeTables(INCLUDE_TABLES);
+ generator.setExcludeTables(EXCLUDE_TABLES);
+ generator.setHasSuperEntity(HAS_SUPER_ENTITY);
+ generator.setHasFeign(HAS_FEIGN);
+ generator.setSuperEntityColumns(SUPER_ENTITY_COLUMNS);
+ generator.run();
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-develop/src/test/resources/templates/code.properties b/Source/UBCS/ubcs-ops/ubcs-develop/src/test/resources/templates/code.properties
similarity index 100%
rename from Source/BladeX/blade-ops/blade-develop/src/test/resources/templates/code.properties
rename to Source/UBCS/ubcs-ops/ubcs-develop/src/test/resources/templates/code.properties
diff --git a/Source/BladeX/blade-ops/blade-flow/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-flow/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-flow/Dockerfile
diff --git a/Source/BladeX/blade-ops/blade-flow/doc/nacos/blade-flow-dev.yaml b/Source/UBCS/ubcs-ops/ubcs-flow/doc/nacos/blade-flow-dev.yaml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/doc/nacos/blade-flow-dev.yaml
rename to Source/UBCS/ubcs-ops/ubcs-flow/doc/nacos/blade-flow-dev.yaml
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml b/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
new file mode 100644
index 0000000..ecbcb50
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-flow</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!-- Blade -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <!--<dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-transaction</artifactId>
+ </dependency>-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-dict-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-scope-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-user-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-flow-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <!-- 宸ヤ綔娴� -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-flowable</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <!--瑙e喅涓嶆敮鎸佺殑瀛楃闆嗛棶棰�-->
+ <dependency>
+ <groupId>com.oracle.database.nls</groupId>
+ <artifactId>orai18n</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/FlowApplication.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/FlowApplication.java
new file mode 100644
index 0000000..06ab3e3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/FlowApplication.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * Flowable鍚姩鍣�
+ *
+ * @author Chill
+ */
+//@SeataCloudApplication
+@UbcsCloudApplication
+public class FlowApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_FLOW_NAME, FlowApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/controller/WorkController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/controller/WorkController.java
new file mode 100644
index 0000000..a3d1c0a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/controller/WorkController.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.business.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.flow.business.service.FlowBusinessService;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.flowable.engine.TaskService;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 娴佺▼浜嬪姟閫氱敤鎺ュ彛
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("work")
+@Api(value = "娴佺▼浜嬪姟閫氱敤鎺ュ彛", tags = "娴佺▼浜嬪姟閫氱敤鎺ュ彛")
+public class WorkController {
+
+ private final TaskService taskService;
+ private final FlowEngineService flowEngineService;
+ private final FlowBusinessService flowBusinessService;
+
+ /**
+ * 鍙戣捣浜嬪姟鍒楄〃椤�
+ */
+ @GetMapping("start-list")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍙戣捣浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼绫诲瀷")
+ public R<IPage<FlowProcess>> startList(@ApiParam("娴佺▼绫诲瀷") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) {
+ IPage<FlowProcess> pages = flowEngineService.selectProcessPage(Condition.getPage(query), category, mode);
+ return R.data(pages);
+ }
+
+ /**
+ * 寰呯浜嬪姟鍒楄〃椤�
+ */
+ @GetMapping("claim-list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "寰呯浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
+ public R<IPage<BladeFlow>> claimList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
+ IPage<BladeFlow> pages = flowBusinessService.selectClaimPage(Condition.getPage(query), bladeFlow);
+ return R.data(pages);
+ }
+
+ /**
+ * 寰呭姙浜嬪姟鍒楄〃椤�
+ */
+ @GetMapping("todo-list")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "寰呭姙浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
+ public R<IPage<BladeFlow>> todoList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
+ IPage<BladeFlow> pages = flowBusinessService.selectTodoPage(Condition.getPage(query), bladeFlow);
+ return R.data(pages);
+ }
+
+ /**
+ * 宸插彂浜嬪姟鍒楄〃椤�
+ */
+ @GetMapping("send-list")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "宸插彂浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
+ public R<IPage<BladeFlow>> sendList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
+ IPage<BladeFlow> pages = flowBusinessService.selectSendPage(Condition.getPage(query), bladeFlow);
+ return R.data(pages);
+ }
+
+ /**
+ * 鍔炵粨浜嬪姟鍒楄〃椤�
+ */
+ @GetMapping("done-list")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鍔炵粨浜嬪姟鍒楄〃椤�", notes = "浼犲叆娴佺▼淇℃伅")
+ public R<IPage<BladeFlow>> doneList(@ApiParam("娴佺▼淇℃伅") BladeFlow bladeFlow, Query query) {
+ IPage<BladeFlow> pages = flowBusinessService.selectDonePage(Condition.getPage(query), bladeFlow);
+ return R.data(pages);
+ }
+
+ /**
+ * 绛炬敹浜嬪姟
+ *
+ * @param taskId 浠诲姟id
+ */
+ @PostMapping("claim-task")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "绛炬敹浜嬪姟", notes = "浼犲叆娴佺▼淇℃伅")
+ public R claimTask(@ApiParam("浠诲姟id") String taskId) {
+ taskService.claim(taskId, TaskUtil.getTaskUser());
+ return R.success("绛炬敹浜嬪姟鎴愬姛");
+ }
+
+ /**
+ * 瀹屾垚浠诲姟
+ *
+ * @param flow 璇峰亣淇℃伅
+ */
+ @PostMapping("complete-task")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "瀹屾垚浠诲姟", notes = "浼犲叆娴佺▼淇℃伅")
+ public R completeTask(@ApiParam("浠诲姟淇℃伅") @RequestBody BladeFlow flow) {
+ return R.status(flowBusinessService.completeTask(flow));
+ }
+
+ /**
+ * 鍒犻櫎浠诲姟
+ *
+ * @param taskId 浠诲姟id
+ * @param reason 鍒犻櫎鍘熷洜
+ */
+ @PostMapping("delete-task")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鍒犻櫎浠诲姟", notes = "浼犲叆娴佺▼淇℃伅")
+ public R deleteTask(@ApiParam("浠诲姟id") String taskId, @ApiParam("鍒犻櫎鍘熷洜") String reason) {
+ taskService.deleteTask(taskId, reason);
+ return R.success("鍒犻櫎浠诲姟鎴愬姛");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/FlowClient.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/FlowClient.java
new file mode 100644
index 0000000..d093953
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/FlowClient.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.business.feign;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.feign.IFlowClient;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import lombok.AllArgsConstructor;
+import org.flowable.engine.IdentityService;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 娴佺▼杩滅▼璋冪敤瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class FlowClient implements IFlowClient {
+
+ private final RuntimeService runtimeService;
+ private final IdentityService identityService;
+ private final TaskService taskService;
+
+ @Override
+ @PostMapping(START_PROCESS_INSTANCE_BY_ID)
+ public R<BladeFlow> startProcessInstanceById(String processDefinitionId, String businessKey, @RequestBody Map<String, Object> variables) {
+ // 璁剧疆娴佺▼鍚姩鐢ㄦ埛
+ identityService.setAuthenticatedUserId(TaskUtil.getTaskUser());
+ // 寮�鍚祦绋�
+ ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, businessKey, variables);
+ // 缁勮娴佺▼閫氱敤绫�
+ BladeFlow flow = new BladeFlow();
+ flow.setProcessInstanceId(processInstance.getId());
+ return R.data(flow);
+ }
+
+ @Override
+ @PostMapping(START_PROCESS_INSTANCE_BY_KEY)
+ public R<BladeFlow> startProcessInstanceByKey(String processDefinitionKey, String businessKey, @RequestBody Map<String, Object> variables) {
+ // 璁剧疆娴佺▼鍚姩鐢ㄦ埛
+ identityService.setAuthenticatedUserId(TaskUtil.getTaskUser());
+ // 寮�鍚祦绋�
+ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
+ // 缁勮娴佺▼閫氱敤绫�
+ BladeFlow flow = new BladeFlow();
+ flow.setProcessInstanceId(processInstance.getId());
+ return R.data(flow);
+ }
+
+ @Override
+ @PostMapping(COMPLETE_TASK)
+ public R completeTask(String taskId, String processInstanceId, String comment, @RequestBody Map<String, Object> variables) {
+ // 澧炲姞璇勮
+ if (StringUtil.isNoneBlank(processInstanceId, comment)) {
+ taskService.addComment(taskId, processInstanceId, comment);
+ }
+ // 闈炵┖鍒ゆ柇
+ if (Func.isEmpty(variables)) {
+ variables = Kv.create();
+ }
+ // 瀹屾垚浠诲姟
+ taskService.complete(taskId, variables);
+ return R.success("娴佺▼鎻愪氦鎴愬姛");
+ }
+
+ @Override
+ @GetMapping(TASK_VARIABLE)
+ public R<Object> taskVariable(String taskId, String variableName) {
+ return R.data(taskService.getVariable(taskId, variableName));
+ }
+
+ @Override
+ @GetMapping(TASK_VARIABLES)
+ public R<Map<String, Object>> taskVariables(String taskId) {
+ return R.data(taskService.getVariables(taskId));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/FlowBusinessService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/FlowBusinessService.java
new file mode 100644
index 0000000..86f758c
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/FlowBusinessService.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.business.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+
+/**
+ * 娴佺▼涓氬姟绫�
+ *
+ * @author Chill
+ */
+public interface FlowBusinessService {
+
+ /**
+ * 娴佺▼寰呯鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param bladeFlow 娴佺▼绫�
+ * @return
+ */
+ IPage<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
+
+ /**
+ * 娴佺▼寰呭姙鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param bladeFlow 娴佺▼绫�
+ * @return
+ */
+ IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
+
+ /**
+ * 娴佺▼宸插彂鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param bladeFlow 娴佺▼绫�
+ * @return
+ */
+ IPage<BladeFlow> selectSendPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
+
+ /**
+ * 娴佺▼鍔炵粨鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param bladeFlow 娴佺▼绫�
+ * @return
+ */
+ IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow);
+
+ /**
+ * 瀹屾垚浠诲姟
+ *
+ * @param leave 璇峰亣淇℃伅
+ * @return boolean
+ */
+ boolean completeTask(BladeFlow leave);
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
new file mode 100644
index 0000000..c78baca
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.business.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.flow.business.service.FlowBusinessService;
+import com.vci.ubcs.flow.core.constant.ProcessConstant;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import com.vci.ubcs.flow.engine.utils.FlowCache;
+import lombok.AllArgsConstructor;
+import org.flowable.engine.HistoryService;
+import org.flowable.engine.TaskService;
+import org.flowable.engine.history.HistoricProcessInstance;
+import org.flowable.engine.history.HistoricProcessInstanceQuery;
+import org.flowable.task.api.TaskQuery;
+import org.flowable.task.api.history.HistoricTaskInstance;
+import org.flowable.task.api.history.HistoricTaskInstanceQuery;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 娴佺▼涓氬姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@AllArgsConstructor
+public class FlowBusinessServiceImpl implements FlowBusinessService {
+
+ private final TaskService taskService;
+ private final HistoryService historyService;
+
+ @Override
+ public IPage<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
+ String taskUser = TaskUtil.getTaskUser();
+ String taskGroup = TaskUtil.getCandidateGroup();
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ // 涓汉绛夊緟绛炬敹鐨勪换鍔�
+ TaskQuery claimUserQuery = taskService.createTaskQuery().taskCandidateUser(taskUser)
+ .includeProcessVariables().active().orderByTaskCreateTime().desc();
+ // 瀹氬埗娴佺▼绛夊緟绛炬敹鐨勪换鍔�
+ TaskQuery claimRoleWithTenantIdQuery = taskService.createTaskQuery().taskTenantId(AuthUtil.getTenantId()).taskCandidateGroupIn(Func.toStrList(taskGroup))
+ .includeProcessVariables().active().orderByTaskCreateTime().desc();
+ // 閫氱敤娴佺▼绛夊緟绛炬敹鐨勪换鍔�
+ TaskQuery claimRoleWithoutTenantIdQuery = taskService.createTaskQuery().taskWithoutTenantId().taskCandidateGroupIn(Func.toStrList(taskGroup))
+ .includeProcessVariables().active().orderByTaskCreateTime().desc();
+
+ // 鏋勫缓鍒楄〃鏁版嵁
+ buildFlowTaskList(bladeFlow, flowList, claimUserQuery, FlowEngineConstant.STATUS_CLAIM);
+ buildFlowTaskList(bladeFlow, flowList, claimRoleWithTenantIdQuery, FlowEngineConstant.STATUS_CLAIM);
+ buildFlowTaskList(bladeFlow, flowList, claimRoleWithoutTenantIdQuery, FlowEngineConstant.STATUS_CLAIM);
+
+ // 璁$畻鎬绘暟
+ long count = claimUserQuery.count() + claimRoleWithTenantIdQuery.count() + claimRoleWithoutTenantIdQuery.count();
+ // 璁剧疆椤垫暟
+ page.setSize(count);
+ // 璁剧疆鎬绘暟
+ page.setTotal(count);
+ // 璁剧疆鏁版嵁
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
+ String taskUser = TaskUtil.getTaskUser();
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ // 宸茬鏀剁殑浠诲姟
+ TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(taskUser).active()
+ .includeProcessVariables().orderByTaskCreateTime().desc();
+
+ // 鏋勫缓鍒楄〃鏁版嵁
+ buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO);
+
+ // 璁$畻鎬绘暟
+ long count = todoQuery.count();
+ // 璁剧疆椤垫暟
+ page.setSize(count);
+ // 璁剧疆鎬绘暟
+ page.setTotal(count);
+ // 璁剧疆鏁版嵁
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public IPage<BladeFlow> selectSendPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
+ String taskUser = TaskUtil.getTaskUser();
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ HistoricProcessInstanceQuery historyQuery = historyService.createHistoricProcessInstanceQuery().startedBy(taskUser).orderByProcessInstanceStartTime().desc();
+
+ if (bladeFlow.getCategory() != null) {
+ historyQuery.processDefinitionCategory(bladeFlow.getCategory());
+ }
+ if (bladeFlow.getProcessDefinitionName() != null) {
+ historyQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
+ }
+ if (bladeFlow.getBeginDate() != null) {
+ historyQuery.startedAfter(bladeFlow.getBeginDate());
+ }
+ if (bladeFlow.getEndDate() != null) {
+ historyQuery.startedBefore(bladeFlow.getEndDate());
+ }
+
+ // 鏌ヨ鍒楄〃
+ List<HistoricProcessInstance> historyList = historyQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
+
+ historyList.forEach(historicProcessInstance -> {
+ BladeFlow flow = new BladeFlow();
+ // historicProcessInstance
+ flow.setCreateTime(historicProcessInstance.getStartTime());
+ flow.setEndTime(historicProcessInstance.getEndTime());
+ flow.setVariables(historicProcessInstance.getProcessVariables());
+ String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
+ if (businessKey.length > 1) {
+ flow.setBusinessTable(businessKey[0]);
+ flow.setBusinessId(businessKey[1]);
+ }
+ flow.setHistoryActivityName(historicProcessInstance.getName());
+ flow.setProcessInstanceId(historicProcessInstance.getId());
+ flow.setHistoryProcessInstanceId(historicProcessInstance.getId());
+ // ProcessDefinition
+ FlowProcess processDefinition = FlowCache.getProcessDefinition(historicProcessInstance.getProcessDefinitionId());
+ flow.setProcessDefinitionId(processDefinition.getId());
+ flow.setProcessDefinitionName(processDefinition.getName());
+ flow.setProcessDefinitionVersion(processDefinition.getVersion());
+ flow.setProcessDefinitionKey(processDefinition.getKey());
+ flow.setCategory(processDefinition.getCategory());
+ flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
+ flow.setProcessInstanceId(historicProcessInstance.getId());
+ // HistoricTaskInstance
+ List<HistoricTaskInstance> historyTasks = historyService.createHistoricTaskInstanceQuery().processInstanceId(historicProcessInstance.getId()).orderByHistoricTaskInstanceEndTime().desc().list();
+ if (Func.isNotEmpty(historyTasks)) {
+ HistoricTaskInstance historyTask = historyTasks.iterator().next();
+ flow.setTaskId(historyTask.getId());
+ flow.setTaskName(historyTask.getName());
+ flow.setTaskDefinitionKey(historyTask.getTaskDefinitionKey());
+ }
+ // Status
+ if (historicProcessInstance.getEndActivityId() != null) {
+ flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED);
+ } else {
+ flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED);
+ }
+ flow.setStatus(FlowEngineConstant.STATUS_FINISH);
+ flowList.add(flow);
+ });
+
+ // 璁$畻鎬绘暟
+ long count = historyQuery.count();
+ // 璁剧疆鎬绘暟
+ page.setTotal(count);
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
+ String taskUser = TaskUtil.getTaskUser();
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished()
+ .includeProcessVariables().orderByHistoricTaskInstanceEndTime().desc();
+
+ if (bladeFlow.getCategory() != null) {
+ doneQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory()));
+ }
+ if (bladeFlow.getProcessDefinitionName() != null) {
+ doneQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
+ }
+ if (bladeFlow.getBeginDate() != null) {
+ doneQuery.taskCompletedAfter(bladeFlow.getBeginDate());
+ }
+ if (bladeFlow.getEndDate() != null) {
+ doneQuery.taskCompletedBefore(bladeFlow.getEndDate());
+ }
+
+ // 鏌ヨ鍒楄〃
+ List<HistoricTaskInstance> doneList = doneQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
+ doneList.forEach(historicTaskInstance -> {
+ BladeFlow flow = new BladeFlow();
+ flow.setTaskId(historicTaskInstance.getId());
+ flow.setTaskDefinitionKey(historicTaskInstance.getTaskDefinitionKey());
+ flow.setTaskName(historicTaskInstance.getName());
+ flow.setAssignee(historicTaskInstance.getAssignee());
+ flow.setCreateTime(historicTaskInstance.getCreateTime());
+ flow.setExecutionId(historicTaskInstance.getExecutionId());
+ flow.setHistoryTaskEndTime(historicTaskInstance.getEndTime());
+ flow.setVariables(historicTaskInstance.getProcessVariables());
+
+ FlowProcess processDefinition = FlowCache.getProcessDefinition(historicTaskInstance.getProcessDefinitionId());
+ flow.setProcessDefinitionId(processDefinition.getId());
+ flow.setProcessDefinitionName(processDefinition.getName());
+ flow.setProcessDefinitionKey(processDefinition.getKey());
+ flow.setProcessDefinitionVersion(processDefinition.getVersion());
+ flow.setCategory(processDefinition.getCategory());
+ flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
+
+ flow.setProcessInstanceId(historicTaskInstance.getProcessInstanceId());
+ flow.setHistoryProcessInstanceId(historicTaskInstance.getProcessInstanceId());
+ HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance((historicTaskInstance.getProcessInstanceId()));
+ if (Func.isNotEmpty(historicProcessInstance)) {
+ String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
+ flow.setBusinessTable(businessKey[0]);
+ flow.setBusinessId(businessKey[1]);
+ if (historicProcessInstance.getEndActivityId() != null) {
+ flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED);
+ } else {
+ flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED);
+ }
+ }
+ flow.setStatus(FlowEngineConstant.STATUS_FINISH);
+ flowList.add(flow);
+ });
+ // 璁$畻鎬绘暟
+ long count = doneQuery.count();
+ // 璁剧疆鎬绘暟
+ page.setTotal(count);
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public boolean completeTask(BladeFlow flow) {
+ String taskId = flow.getTaskId();
+ String processInstanceId = flow.getProcessInstanceId();
+ String comment = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT);
+ // 澧炲姞璇勮
+ if (StringUtil.isNoneBlank(processInstanceId, comment)) {
+ taskService.addComment(taskId, processInstanceId, comment);
+ }
+ // 鍒涘缓鍙橀噺
+ Map<String, Object> variables = flow.getVariables();
+ if (variables == null) {
+ variables = Kv.create();
+ }
+ variables.put(ProcessConstant.PASS_KEY, flow.isPass());
+ // 瀹屾垚浠诲姟
+ taskService.complete(taskId, variables);
+ return true;
+ }
+
+ /**
+ * 鏋勫缓娴佺▼
+ *
+ * @param bladeFlow 娴佺▼閫氱敤绫�
+ * @param flowList 娴佺▼鍒楄〃
+ * @param taskQuery 浠诲姟鏌ヨ绫�
+ * @param status 鐘舵��
+ */
+ private void buildFlowTaskList(BladeFlow bladeFlow, List<BladeFlow> flowList, TaskQuery taskQuery, String status) {
+ if (bladeFlow.getCategory() != null) {
+ taskQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory()));
+ }
+ if (bladeFlow.getProcessDefinitionName() != null) {
+ taskQuery.processDefinitionName(bladeFlow.getProcessDefinitionName());
+ }
+ if (bladeFlow.getBeginDate() != null) {
+ taskQuery.taskCreatedAfter(bladeFlow.getBeginDate());
+ }
+ if (bladeFlow.getEndDate() != null) {
+ taskQuery.taskCreatedBefore(bladeFlow.getEndDate());
+ }
+ taskQuery.list().forEach(task -> {
+ BladeFlow flow = new BladeFlow();
+ flow.setTaskId(task.getId());
+ flow.setTaskDefinitionKey(task.getTaskDefinitionKey());
+ flow.setTaskName(task.getName());
+ flow.setAssignee(task.getAssignee());
+ flow.setCreateTime(task.getCreateTime());
+ flow.setClaimTime(task.getClaimTime());
+ flow.setExecutionId(task.getExecutionId());
+ flow.setVariables(task.getProcessVariables());
+
+ HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId());
+ if (Func.isNotEmpty(historicProcessInstance)) {
+ String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
+ flow.setBusinessTable(businessKey[0]);
+ flow.setBusinessId(businessKey[1]);
+ }
+
+ FlowProcess processDefinition = FlowCache.getProcessDefinition(task.getProcessDefinitionId());
+ flow.setCategory(processDefinition.getCategory());
+ flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
+ flow.setProcessDefinitionId(processDefinition.getId());
+ flow.setProcessDefinitionName(processDefinition.getName());
+ flow.setProcessDefinitionKey(processDefinition.getKey());
+ flow.setProcessDefinitionVersion(processDefinition.getVersion());
+ flow.setProcessInstanceId(task.getProcessInstanceId());
+ flow.setStatus(status);
+ flowList.add(flow);
+ });
+ }
+
+ /**
+ * 鑾峰彇鍘嗗彶娴佺▼
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @return HistoricProcessInstance
+ */
+ private HistoricProcessInstance getHistoricProcessInstance(String processInstanceId) {
+ return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/config/FlowableConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/config/FlowableConfiguration.java
new file mode 100644
index 0000000..5357274
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/config/FlowableConfiguration.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.config;
+
+import lombok.AllArgsConstructor;
+import org.flowable.spring.SpringProcessEngineConfiguration;
+import org.flowable.spring.boot.EngineConfigurationConfigurer;
+import org.flowable.spring.boot.FlowableProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Flowable閰嶇疆绫�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+@EnableConfigurationProperties(FlowableProperties.class)
+public class FlowableConfiguration implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
+ private final FlowableProperties flowableProperties;
+
+ @Override
+ public void configure(SpringProcessEngineConfiguration engineConfiguration) {
+ engineConfiguration.setActivityFontName(flowableProperties.getActivityFontName());
+ engineConfiguration.setLabelFontName(flowableProperties.getLabelFontName());
+ engineConfiguration.setAnnotationFontName(flowableProperties.getAnnotationFontName());
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
new file mode 100644
index 0000000..758abbe
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.constant;
+
+/**
+ * 娴佺▼甯搁噺.
+ *
+ * @author zhuangqian
+ */
+public interface FlowEngineConstant {
+
+ String FLOWABLE_BASE_PACKAGES = "org.flowable.ui";
+
+ String SUFFIX = ".bpmn20.xml";
+
+ String ACTIVE = "active";
+
+ String SUSPEND = "suspend";
+
+ String STATUS_TODO = "todo";
+
+ String STATUS_CLAIM = "claim";
+
+ String STATUS_SEND = "send";
+
+ String STATUS_DONE = "done";
+
+ String STATUS_FINISHED = "finished";
+
+ String STATUS_UNFINISHED = "unfinished";
+
+ String STATUS_FINISH = "finish";
+
+ String START_EVENT = "startEvent";
+
+ String END_EVENT = "endEvent";
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowFollowController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowFollowController.java
new file mode 100644
index 0000000..3384694
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowFollowController.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.flow.engine.entity.FlowExecution;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 娴佺▼鐘舵�佹帶鍒跺櫒
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@RequestMapping("follow")
+@AllArgsConstructor
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+public class FlowFollowController {
+
+ private final FlowEngineService flowEngineService;
+
+ /**
+ * 娴佺▼鐘舵�佸垪琛�
+ */
+ @GetMapping("list")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
+ public R<IPage<FlowExecution>> list(Query query, @ApiParam(value = "娴佺▼瀹炰緥id") String processInstanceId, @ApiParam(value = "娴佺▼key") String processDefinitionKey) {
+ IPage<FlowExecution> pages = flowEngineService.selectFollowPage(Condition.getPage(query), processInstanceId, processDefinitionKey);
+ return R.data(pages);
+ }
+
+ /**
+ * 鍒犻櫎娴佺▼瀹炰緥
+ */
+ @PostMapping("delete-process-instance")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭闆嗗悎")
+ public R deleteProcessInstance(@ApiParam(value = "娴佺▼瀹炰緥id") @RequestParam String processInstanceId, @ApiParam(value = "鍒犻櫎鍘熷洜") @RequestParam String deleteReason) {
+ boolean temp = flowEngineService.deleteProcessInstance(processInstanceId, deleteReason);
+ return R.status(temp);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java
new file mode 100644
index 0000000..ea24050
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 娴佺▼绠$悊鎺ュ彛
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@RequestMapping("manager")
+@AllArgsConstructor
+@Api(value = "娴佺▼绠$悊鎺ュ彛", tags = "娴佺▼绠$悊鎺ュ彛")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+public class FlowManagerController {
+
+ private final FlowEngineService flowEngineService;
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("list")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆娴佺▼绫诲瀷")
+ public R<IPage<FlowProcess>> list(@ApiParam("娴佺▼绫诲瀷") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) {
+ IPage<FlowProcess> pages = flowEngineService.selectProcessPage(Condition.getPage(query), category, mode);
+ return R.data(pages);
+ }
+
+
+ /**
+ * 鍙樻洿娴佺▼鐘舵��
+ *
+ * @param state 鐘舵��
+ * @param processId 娴佺▼id
+ */
+ @PostMapping("change-state")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍙樻洿娴佺▼鐘舵��", notes = "浼犲叆state,processId")
+ public R changeState(@RequestParam String state, @RequestParam String processId) {
+ String msg = flowEngineService.changeState(state, processId);
+ return R.success(msg);
+ }
+
+ /**
+ * 鍒犻櫎閮ㄧ讲娴佺▼
+ *
+ * @param deploymentIds 閮ㄧ讲娴佺▼id闆嗗悎
+ */
+ @PostMapping("delete-deployment")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒犻櫎閮ㄧ讲娴佺▼", notes = "閮ㄧ讲娴佺▼id闆嗗悎")
+ public R deleteDeployment(String deploymentIds) {
+ return R.status(flowEngineService.deleteDeployment(deploymentIds));
+ }
+
+ /**
+ * 妫�鏌ユ祦绋嬫枃浠舵牸寮�
+ *
+ * @param file 娴佺▼鏂囦欢
+ */
+ @PostMapping("check-upload")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "涓婁紶閮ㄧ讲娴佺▼鏂囦欢", notes = "浼犲叆鏂囦欢")
+ public R checkUpload(@RequestParam MultipartFile file) {
+ boolean temp = Objects.requireNonNull(file.getOriginalFilename()).endsWith(FlowEngineConstant.SUFFIX);
+ return R.data(Kv.create().set("name", file.getOriginalFilename()).set("success", temp));
+ }
+
+ /**
+ * 涓婁紶閮ㄧ讲娴佺▼鏂囦欢
+ *
+ * @param files 娴佺▼鏂囦欢
+ * @param category 绫诲瀷
+ */
+ @PostMapping("deploy-upload")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "涓婁紶閮ㄧ讲娴佺▼鏂囦欢", notes = "浼犲叆鏂囦欢")
+ public R deployUpload(@RequestParam List<MultipartFile> files,
+ @RequestParam String category,
+ @RequestParam(required = false, defaultValue = "") String tenantIds) {
+ return R.status(flowEngineService.deployUpload(files, category, Func.toStrList(tenantIds)));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
new file mode 100644
index 0000000..5e3e781
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.flow.engine.entity.FlowModel;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Map;
+
+/**
+ * 娴佺▼妯″瀷鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@RequestMapping("model")
+@AllArgsConstructor
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+public class FlowModelController {
+
+ private final FlowEngineService flowEngineService;
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "modelKey", value = "妯″瀷鏍囪瘑", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "妯″瀷鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
+ public R<IPage<FlowModel>> list(@ApiIgnore @RequestParam Map<String, Object> flow, Query query) {
+ IPage<FlowModel> pages = flowEngineService.page(Condition.getPage(query), Condition.getQueryWrapper(flow, FlowModel.class)
+ .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated")
+ .orderByDesc("last_updated"));
+ return R.data(pages);
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭闆嗗悎")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎") @RequestParam String ids) {
+ boolean temp = flowEngineService.removeByIds(Func.toStrList(ids));
+ return R.status(temp);
+ }
+
+ /**
+ * 閮ㄧ讲
+ */
+ @PostMapping("/deploy")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "閮ㄧ讲", notes = "浼犲叆妯″瀷id鍜屽垎绫�")
+ public R deploy(@ApiParam(value = "妯″瀷id") @RequestParam String modelId,
+ @ApiParam(value = "宸ヤ綔娴佸垎绫�") @RequestParam String category,
+ @ApiParam(value = "绉熸埛ID") @RequestParam(required = false, defaultValue = "") String tenantIds) {
+ boolean temp = flowEngineService.deployModel(modelId, category, Func.toStrList(tenantIds));
+ return R.status(temp);
+ }
+
+ @PostMapping("submit")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇濆瓨/缂栬緫")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "妯″瀷id"),
+ @ApiImplicitParam(name = "name", value = "妯″瀷鍚嶇О", required = true),
+ @ApiImplicitParam(name = "modelKey", value = "妯″瀷key", required = true),
+ @ApiImplicitParam(name = "description", value = "妯″瀷鎻忚堪"),
+ @ApiImplicitParam(name = "xml", value = "妯″瀷xml", required = true),
+ })
+ public R<FlowModel> submit(@RequestBody @ApiIgnore FlowModel model) {
+ return R.data(flowEngineService.submitModel(model));
+ }
+
+ @GetMapping("detail")
+ @ApiOperation(value = "璇︽儏")
+ @ApiOperationSupport(order = 5)
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "妯″瀷id", required = true),
+ })
+ public R<FlowModel> detail(String id) {
+ return R.data(flowEngineService.getById(id));
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessController.java
new file mode 100644
index 0000000..a9329c2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessController.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.controller;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 娴佺▼閫氱敤鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@Slf4j
+@RestController
+@AllArgsConstructor
+@RequestMapping("process")
+public class FlowProcessController {
+
+ private static final String IMAGE_NAME = "image";
+ private final FlowEngineService flowEngineService;
+
+ /**
+ * 鑾峰彇娴佽浆鍘嗗彶鍒楄〃
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param startActivityId 寮�濮嬭妭鐐筰d
+ * @param endActivityId 缁撴潫鑺傜偣id
+ */
+ @GetMapping(value = "history-flow-list")
+ public R<List<BladeFlow>> historyFlowList(@RequestParam String processInstanceId, String startActivityId, String endActivityId) {
+ return R.data(flowEngineService.historyFlowList(processInstanceId, startActivityId, endActivityId));
+ }
+
+ /**
+ * 娴佺▼鑺傜偣杩涚▼鍥�
+ *
+ * @param processDefinitionId 娴佺▼id
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ */
+ @GetMapping(value = "model-view")
+ public R modelView(String processDefinitionId, String processInstanceId) {
+ return R.data(flowEngineService.modelView(processDefinitionId, processInstanceId));
+ }
+
+ /**
+ * 娴佺▼鑺傜偣杩涚▼鍥�
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param httpServletResponse http鍝嶅簲
+ */
+ @GetMapping(value = "diagram-view")
+ public void diagramView(String processInstanceId, HttpServletResponse httpServletResponse) {
+ flowEngineService.diagramView(processInstanceId, httpServletResponse);
+ }
+
+ /**
+ * 娴佺▼鍥惧睍绀�
+ *
+ * @param processDefinitionId 娴佺▼id
+ * @param processInstanceId 瀹炰緥id
+ * @param resourceype 璧勬簮绫诲瀷
+ * @param response 鍝嶅簲
+ */
+ @GetMapping("resource-view")
+ public void resourceView(@RequestParam String processDefinitionId, String processInstanceId, @RequestParam(defaultValue = IMAGE_NAME) String resourceype, HttpServletResponse response) {
+ flowEngineService.resourceView(processDefinitionId, processInstanceId, resourceype, response);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowExecution.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowExecution.java
new file mode 100644
index 0000000..335abbe
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowExecution.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 杩愯瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+public class FlowExecution implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String id;
+ private String name;
+ private String startUserId;
+ private String startUser;
+ private Date startTime;
+ private String taskDefinitionId;
+ private String taskDefinitionKey;
+ private String category;
+ private String categoryName;
+ private String processInstanceId;
+ private String processDefinitionId;
+ private String processDefinitionKey;
+ private String activityId;
+ private int suspensionState;
+ private String executionId;
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowModel.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowModel.java
new file mode 100644
index 0000000..c643e87
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowModel.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 娴佺▼妯″瀷
+ *
+ * @author Chill
+ */
+@Data
+@TableName("ACT_DE_MODEL")
+public class FlowModel implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final int MODEL_TYPE_BPMN = 0;
+ public static final int MODEL_TYPE_FORM = 2;
+ public static final int MODEL_TYPE_APP = 3;
+ public static final int MODEL_TYPE_DECISION_TABLE = 4;
+ public static final int MODEL_TYPE_CMMN = 5;
+
+ private String id;
+ private String name;
+ private String modelKey;
+ private String description;
+ private Date created;
+ private Date lastUpdated;
+ private String createdBy;
+ private String lastUpdatedBy;
+ private Integer version;
+ private String modelEditorJson;
+ private String modelComment;
+ private Integer modelType;
+ private String tenantId;
+ private byte[] thumbnail;
+ private String modelEditorXml;
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowProcess.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowProcess.java
new file mode 100644
index 0000000..e252916
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowProcess.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.entity;
+
+import com.vci.ubcs.flow.engine.utils.FlowCache;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * FlowProcess
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+public class FlowProcess implements Serializable {
+
+ private String id;
+ private String tenantId;
+ private String name;
+ private String key;
+ private String category;
+ private String categoryName;
+ private Integer version;
+ private String deploymentId;
+ private String ResourceName;
+ private String diagramResourceName;
+ private Integer suspensionState;
+ private Date deploymentTime;
+
+ public FlowProcess(ProcessDefinitionEntityImpl entity) {
+ if (entity != null) {
+ this.id = entity.getId();
+ this.tenantId = entity.getTenantId();
+ this.name = entity.getName();
+ this.key = entity.getKey();
+ this.category = entity.getCategory();
+ this.categoryName = FlowCache.getCategoryName(entity.getCategory());
+ this.version = entity.getVersion();
+ this.deploymentId = entity.getDeploymentId();
+ this.ResourceName = entity.getResourceName();
+ this.diagramResourceName = entity.getDiagramResourceName();
+ this.suspensionState = entity.getSuspensionState();
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowMapper.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowMapper.java
new file mode 100644
index 0000000..8ac1cc3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowMapper.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.flow.engine.entity.FlowModel;
+
+import java.util.List;
+
+/**
+ * FlowMapper.
+ *
+ * @author Chill
+ */
+public interface FlowMapper extends BaseMapper<FlowModel> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ * @param page
+ * @param flowModel
+ * @return
+ */
+ List<FlowModel> selectFlowPage(IPage page, FlowModel flowModel);
+
+ /**
+ * 鑾峰彇妯″瀷
+ * @param parentModelId
+ * @return
+ */
+ List<FlowModel> findByParentModelId(String parentModelId);
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
new file mode 100644
index 0000000..2955619
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.engine.entity.FlowExecution;
+import com.vci.ubcs.flow.engine.entity.FlowModel;
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * FlowService
+ *
+ * @author Chill
+ */
+public interface FlowEngineService extends IService<FlowModel> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param flowModel 娴佺▼妯″瀷
+ * @return
+ */
+ IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel);
+
+ /**
+ * 娴佺▼绠$悊鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param category 鍒嗙被
+ * @param mode 褰㈡��
+ * @return
+ */
+ IPage<FlowProcess> selectProcessPage(IPage<FlowProcess> page, String category, Integer mode);
+
+ /**
+ * 娴佺▼绠$悊鍒楄〃
+ *
+ * @param page 鍒嗛〉宸ュ叿
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param processDefinitionKey 娴佺▼key
+ * @return
+ */
+ IPage<FlowExecution> selectFollowPage(IPage<FlowExecution> page, String processInstanceId, String processDefinitionKey);
+
+ /**
+ * 鑾峰彇娴佽浆鍘嗗彶鍒楄〃
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param startActivityId 寮�濮嬭妭鐐筰d
+ * @param endActivityId 缁撴潫鑺傜偣id
+ * @return
+ */
+ List<BladeFlow> historyFlowList(String processInstanceId, String startActivityId, String endActivityId);
+
+ /**
+ * 鍙樻洿娴佺▼鐘舵��
+ *
+ * @param state 鐘舵��
+ * @param processId 娴佺▼ID
+ * @return
+ */
+ String changeState(String state, String processId);
+
+ /**
+ * 鍒犻櫎閮ㄧ讲娴佺▼
+ *
+ * @param deploymentIds 閮ㄧ讲娴佺▼id闆嗗悎
+ * @return
+ */
+ boolean deleteDeployment(String deploymentIds);
+
+ /**
+ * 涓婁紶閮ㄧ讲娴佺▼
+ *
+ * @param files 娴佺▼閰嶇疆鏂囦欢
+ * @param category 娴佺▼鍒嗙被
+ * @param tenantIdList 绉熸埛id闆嗗悎
+ * @return
+ */
+ boolean deployUpload(List<MultipartFile> files, String category, List<String> tenantIdList);
+
+ /**
+ * 閮ㄧ讲娴佺▼
+ *
+ * @param modelId 妯″瀷id
+ * @param category 鍒嗙被
+ * @param tenantIdList 绉熸埛id闆嗗悎
+ * @return
+ */
+ boolean deployModel(String modelId, String category, List<String> tenantIdList);
+
+ /**
+ * 鍒犻櫎娴佺▼瀹炰緥
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @param deleteReason 鍒犻櫎鍘熷洜
+ * @return
+ */
+ boolean deleteProcessInstance(String processInstanceId, String deleteReason);
+
+
+ /**
+ * 淇濆瓨/鏇存柊妯″瀷
+ *
+ * @param model 妯″瀷
+ * @return 妯″瀷
+ */
+ FlowModel submitModel(FlowModel model);
+
+ /**
+ * 娴佺▼鑺傜偣杩涚▼鍥�
+ *
+ * @param processDefinitionId
+ * @param processInstanceId
+ * @return
+ */
+ Map<String, Object> modelView(String processDefinitionId, String processInstanceId);
+
+ /**
+ * 娴佺▼鑺傜偣杩涚▼鍥�
+ *
+ * @param processInstanceId
+ * @param httpServletResponse
+ */
+ void diagramView(String processInstanceId, HttpServletResponse httpServletResponse);
+
+ /**
+ * 娴佺▼鍥惧睍绀�
+ *
+ * @param processDefinitionId
+ * @param processInstanceId
+ * @param resourceType
+ * @param response
+ */
+ void resourceView(String processDefinitionId, String processInstanceId, String resourceType, HttpServletResponse response);
+
+ /**
+ * 鑾峰彇XML
+ *
+ * @param model
+ * @return
+ */
+ byte[] getModelEditorXML(FlowModel model);
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
new file mode 100644
index 0000000..7eb8c9b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -0,0 +1,559 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.enums.FlowModeEnum;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
+import com.vci.ubcs.flow.engine.entity.FlowExecution;
+import com.vci.ubcs.flow.engine.entity.FlowModel;
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import com.vci.ubcs.flow.engine.mapper.FlowMapper;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import com.vci.ubcs.flow.engine.utils.FlowCache;
+import com.vci.ubcs.system.user.cache.UserCache;
+import com.vci.ubcs.system.user.entity.User;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.flowable.bpmn.converter.BpmnXMLConverter;
+import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.bpmn.model.Process;
+import org.flowable.common.engine.impl.util.IoUtil;
+import org.flowable.common.engine.impl.util.io.StringStreamSource;
+import org.flowable.editor.language.json.converter.BpmnJsonConverter;
+import org.flowable.engine.*;
+import org.flowable.engine.history.HistoricActivityInstance;
+import org.flowable.engine.history.HistoricProcessInstance;
+import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
+import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
+import org.flowable.engine.repository.Deployment;
+import org.flowable.engine.repository.ProcessDefinition;
+import org.flowable.engine.repository.ProcessDefinitionQuery;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.engine.runtime.ProcessInstanceQuery;
+import org.flowable.engine.task.Comment;
+import org.flowable.image.ProcessDiagramGenerator;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.FileUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.*;
+
+/**
+ * 宸ヤ綔娴佹湇鍔″疄鐜扮被
+ *
+ * @author Chill
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class FlowEngineServiceImpl extends ServiceImpl<FlowMapper, FlowModel> implements FlowEngineService {
+ private static final String ALREADY_IN_STATE = "already in state";
+ private static final String USR_TASK = "userTask";
+ private static final String IMAGE_NAME = "image";
+ private static final String XML_NAME = "xml";
+ private static final Integer INT_1024 = 1024;
+ private static final BpmnJsonConverter BPMN_JSON_CONVERTER = new BpmnJsonConverter();
+ private static final BpmnXMLConverter BPMN_XML_CONVERTER = new BpmnXMLConverter();
+ private final ObjectMapper objectMapper;
+ private final RepositoryService repositoryService;
+ private final RuntimeService runtimeService;
+ private final HistoryService historyService;
+ private final TaskService taskService;
+ private final ProcessEngine processEngine;
+
+ @Override
+ public IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel) {
+ return page.setRecords(baseMapper.selectFlowPage(page, flowModel));
+ }
+
+ @Override
+ public IPage<FlowProcess> selectProcessPage(IPage<FlowProcess> page, String category, Integer mode) {
+ ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery().latestVersion().orderByProcessDefinitionKey().asc();
+ // 閫氱敤娴佺▼
+ if (mode == FlowModeEnum.COMMON.getMode()) {
+ processDefinitionQuery.processDefinitionWithoutTenantId();
+ }
+ // 瀹氬埗娴佺▼
+ else if (!AuthUtil.isAdministrator()) {
+ processDefinitionQuery.processDefinitionTenantId(AuthUtil.getTenantId());
+ }
+ if (StringUtils.isNotEmpty(category)) {
+ processDefinitionQuery.processDefinitionCategory(category);
+ }
+ List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
+ List<FlowProcess> flowProcessList = new ArrayList<>();
+ processDefinitionList.forEach(processDefinition -> {
+ String deploymentId = processDefinition.getDeploymentId();
+ Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
+ FlowProcess flowProcess = new FlowProcess((ProcessDefinitionEntityImpl) processDefinition);
+ flowProcess.setDeploymentTime(deployment.getDeploymentTime());
+ flowProcessList.add(flowProcess);
+ });
+ page.setTotal(processDefinitionQuery.count());
+ page.setRecords(flowProcessList);
+ return page;
+ }
+
+ @Override
+ public IPage<FlowExecution> selectFollowPage(IPage<FlowExecution> page, String processInstanceId, String processDefinitionKey) {
+ ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
+ if (StringUtil.isNotBlank(processInstanceId)) {
+ processInstanceQuery.processInstanceId(processInstanceId);
+ }
+ if (StringUtil.isNotBlank(processDefinitionKey)) {
+ processInstanceQuery.processDefinitionKey(processDefinitionKey);
+ }
+ List<FlowExecution> flowList = new ArrayList<>();
+ List<ProcessInstance> procInsList = processInstanceQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize()));
+ procInsList.forEach(processInstance -> {
+ ExecutionEntityImpl execution = (ExecutionEntityImpl) processInstance;
+ FlowExecution flowExecution = new FlowExecution();
+ flowExecution.setId(execution.getId());
+ flowExecution.setName(execution.getName());
+ flowExecution.setStartUserId(execution.getStartUserId());
+ User taskUser = UserCache.getUserByTaskUser(execution.getStartUserId());
+ if (taskUser != null) {
+ flowExecution.setStartUser(taskUser.getName());
+ }
+ flowExecution.setStartTime(execution.getStartTime());
+ flowExecution.setExecutionId(execution.getId());
+ flowExecution.setProcessInstanceId(execution.getProcessInstanceId());
+ flowExecution.setProcessDefinitionId(execution.getProcessDefinitionId());
+ flowExecution.setProcessDefinitionKey(execution.getProcessDefinitionKey());
+ flowExecution.setSuspensionState(execution.getSuspensionState());
+ FlowProcess processDefinition = FlowCache.getProcessDefinition(execution.getProcessDefinitionId());
+ flowExecution.setCategory(processDefinition.getCategory());
+ flowExecution.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
+ flowList.add(flowExecution);
+ });
+ page.setTotal(processInstanceQuery.count());
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public List<BladeFlow> historyFlowList(String processInstanceId, String startActivityId, String endActivityId) {
+ List<BladeFlow> flowList = new LinkedList<>();
+ List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().orderByHistoricActivityInstanceEndTime().asc().list();
+ boolean start = false;
+ Map<String, Integer> activityMap = new HashMap<>(16);
+ for (int i = 0; i < historicActivityInstanceList.size(); i++) {
+ HistoricActivityInstance historicActivityInstance = historicActivityInstanceList.get(i);
+ // 杩囨护寮�濮嬭妭鐐瑰墠鐨勮妭鐐�
+ if (StringUtil.isNotBlank(startActivityId) && startActivityId.equals(historicActivityInstance.getActivityId())) {
+ start = true;
+ }
+ if (StringUtil.isNotBlank(startActivityId) && !start) {
+ continue;
+ }
+ // 鏄剧ず寮�濮嬭妭鐐瑰拰缁撴潫鑺傜偣锛屽苟涓旀墽琛屼汉涓嶄负绌虹殑浠诲姟
+ if (StringUtils.equals(USR_TASK, historicActivityInstance.getActivityType())
+ || FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())
+ || FlowEngineConstant.END_EVENT.equals(historicActivityInstance.getActivityType())) {
+ // 缁欒妭鐐瑰鍔犲簭鍙�
+ Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
+ if (activityNum == null) {
+ activityMap.put(historicActivityInstance.getActivityId(), activityMap.size());
+ }
+ BladeFlow flow = new BladeFlow();
+ flow.setHistoryActivityId(historicActivityInstance.getActivityId());
+ flow.setHistoryActivityName(historicActivityInstance.getActivityName());
+ flow.setCreateTime(historicActivityInstance.getStartTime());
+ flow.setEndTime(historicActivityInstance.getEndTime());
+ String durationTime = DateUtil.secondToTime(Func.toLong(historicActivityInstance.getDurationInMillis(), 0L) / 1000);
+ flow.setHistoryActivityDurationTime(durationTime);
+ // 鑾峰彇娴佺▼鍙戣捣浜哄悕绉�
+ if (FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) {
+ List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).orderByProcessInstanceStartTime().asc().list();
+ if (processInstanceList.size() > 0) {
+ if (StringUtil.isNotBlank(processInstanceList.get(0).getStartUserId())) {
+ String taskUser = processInstanceList.get(0).getStartUserId();
+ User user = UserCache.getUser(TaskUtil.getUserId(taskUser));
+ if (user != null) {
+ flow.setAssignee(historicActivityInstance.getAssignee());
+ flow.setAssigneeName(user.getName());
+ }
+ }
+ }
+ }
+ // 鑾峰彇浠诲姟鎵ц浜哄悕绉�
+ if (StringUtil.isNotBlank(historicActivityInstance.getAssignee())) {
+ User user = UserCache.getUser(TaskUtil.getUserId(historicActivityInstance.getAssignee()));
+ if (user != null) {
+ flow.setAssignee(historicActivityInstance.getAssignee());
+ flow.setAssigneeName(user.getName());
+ }
+ }
+ // 鑾峰彇鎰忚璇勮鍐呭
+ if (StringUtil.isNotBlank(historicActivityInstance.getTaskId())) {
+ List<Comment> commentList = taskService.getTaskComments(historicActivityInstance.getTaskId());
+ if (commentList.size() > 0) {
+ flow.setComment(commentList.get(0).getFullMessage());
+ }
+ }
+ flowList.add(flow);
+ }
+ // 杩囨护缁撴潫鑺傜偣鍚庣殑鑺傜偣
+ if (StringUtils.isNotBlank(endActivityId) && endActivityId.equals(historicActivityInstance.getActivityId())) {
+ boolean temp = false;
+ Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
+ // 璇ユ椿鍔ㄨ妭鐐癸紝鍚庣画鑺傜偣鏄惁鍦ㄧ粨鏉熻妭鐐逛箣鍓嶏紝鍦ㄥ悗缁妭鐐逛腑鏄惁瀛樺湪
+ for (int j = i + 1; j < historicActivityInstanceList.size(); j++) {
+ HistoricActivityInstance hi = historicActivityInstanceList.get(j);
+ Integer activityNumA = activityMap.get(hi.getActivityId());
+ boolean numberTemp = activityNumA != null && activityNumA < activityNum;
+ boolean equalsTemp = StringUtils.equals(hi.getActivityId(), historicActivityInstance.getActivityId());
+ if (numberTemp || equalsTemp) {
+ temp = true;
+ }
+ }
+ if (!temp) {
+ break;
+ }
+ }
+ }
+ return flowList;
+ }
+
+ @Override
+ public String changeState(String state, String processId) {
+ try {
+ if (state.equals(FlowEngineConstant.ACTIVE)) {
+ repositoryService.activateProcessDefinitionById(processId, true, null);
+ return StringUtil.format("婵�娲籌D涓� [{}] 鐨勬祦绋嬫垚鍔�", processId);
+ } else if (state.equals(FlowEngineConstant.SUSPEND)) {
+ repositoryService.suspendProcessDefinitionById(processId, true, null);
+ return StringUtil.format("鎸傝捣ID涓� [{}] 鐨勬祦绋嬫垚鍔�", processId);
+ } else {
+ return "鏆傛棤娴佺▼鍙樻洿";
+ }
+ } catch (Exception e) {
+ if (e.getMessage().contains(ALREADY_IN_STATE)) {
+ return StringUtil.format("ID涓� [{}] 鐨勬祦绋嬪凡鏄鐘舵�侊紝鏃犻渶鎿嶄綔", processId);
+ }
+ return e.getMessage();
+ }
+ }
+
+ @Override
+ public boolean deleteDeployment(String deploymentIds) {
+ Func.toStrList(deploymentIds).forEach(deploymentId -> repositoryService.deleteDeployment(deploymentId, true));
+ return true;
+ }
+
+ @Override
+ public boolean deployUpload(List<MultipartFile> files, String category, List<String> tenantIdList) {
+ files.forEach(file -> {
+ try {
+ String fileName = file.getOriginalFilename();
+ InputStream fileInputStream = file.getInputStream();
+ byte[] bytes = FileUtil.copyToByteArray(fileInputStream);
+ if (Func.isNotEmpty(tenantIdList)) {
+ tenantIdList.forEach(tenantId -> {
+ Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).tenantId(tenantId).deploy();
+ deploy(deployment, category);
+ });
+ } else {
+ Deployment deployment = repositoryService.createDeployment().addBytes(fileName, bytes).deploy();
+ deploy(deployment, category);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ });
+ return true;
+ }
+
+ @Override
+ public boolean deployModel(String modelId, String category, List<String> tenantIdList) {
+ FlowModel model = this.getById(modelId);
+ if (model == null) {
+ throw new ServiceException("鏈壘鍒版ā鍨� id: " + modelId);
+ }
+ byte[] bytes = getBpmnXML(model);
+ String processName = model.getName();
+ if (!StringUtil.endsWithIgnoreCase(processName, FlowEngineConstant.SUFFIX)) {
+ processName += FlowEngineConstant.SUFFIX;
+ }
+ String finalProcessName = processName;
+ if (Func.isNotEmpty(tenantIdList)) {
+ tenantIdList.forEach(tenantId -> {
+ Deployment deployment = repositoryService.createDeployment().addBytes(finalProcessName, bytes).name(model.getName()).key(model.getModelKey()).tenantId(tenantId).deploy();
+ deploy(deployment, category);
+ });
+ } else {
+ Deployment deployment = repositoryService.createDeployment().addBytes(finalProcessName, bytes).name(model.getName()).key(model.getModelKey()).deploy();
+ deploy(deployment, category);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean deleteProcessInstance(String processInstanceId, String deleteReason) {
+ runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
+ return true;
+ }
+
+ private void deploy(Deployment deployment, String category) {
+ log.debug("娴佺▼閮ㄧ讲--------deploy: " + deployment + " 鍒嗙被---------->" + category);
+ List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
+ StringBuilder logBuilder = new StringBuilder(500);
+ List<Object> logArgs = new ArrayList<>();
+ // 璁剧疆娴佺▼鍒嗙被
+ for (ProcessDefinition processDefinition : list) {
+ if (StringUtil.isNotBlank(category)) {
+ repositoryService.setProcessDefinitionCategory(processDefinition.getId(), category);
+ }
+ logBuilder.append("閮ㄧ讲鎴愬姛,娴佺▼ID={} \n");
+ logArgs.add(processDefinition.getId());
+ }
+ if (list.size() == 0) {
+ throw new ServiceException("閮ㄧ讲澶辫触,鏈壘鍒版祦绋�");
+ } else {
+ log.info(logBuilder.toString(), logArgs.toArray());
+ }
+ }
+
+ @Override
+ public FlowModel submitModel(FlowModel model) {
+ FlowModel flowModel = new FlowModel();
+ flowModel.setId(model.getId());
+ flowModel.setVersion(Func.toInt(model.getVersion(), 0) + 1);
+ flowModel.setName(model.getName());
+ flowModel.setModelKey(model.getModelKey());
+ flowModel.setModelType(FlowModel.MODEL_TYPE_BPMN);
+ flowModel.setCreatedBy(TaskUtil.getTaskUser());
+ flowModel.setDescription(model.getDescription());
+ flowModel.setLastUpdated(Calendar.getInstance().getTime());
+ flowModel.setLastUpdatedBy(TaskUtil.getTaskUser());
+ flowModel.setTenantId(AuthUtil.getTenantId());
+ flowModel.setModelEditorXml(model.getModelEditorXml());
+ if (StringUtil.isBlank(model.getId())) {
+ flowModel.setCreated(Calendar.getInstance().getTime());
+ }
+ if (StringUtil.isNotBlank(model.getModelEditorXml())) {
+ flowModel.setModelEditorJson(getBpmnJson(model.getModelEditorXml()));
+ }
+ this.saveOrUpdate(flowModel);
+ return flowModel;
+ }
+
+ @Override
+ public Map<String, Object> modelView(String processDefinitionId, String processInstanceId) {
+ Map<String, Object> result = new HashMap<>();
+ // 鑺傜偣鏍囪
+ if (StringUtil.isNotBlank(processInstanceId)) {
+ result.put("flow", this.historyFlowList(processInstanceId, null, null));
+ HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery()
+ .processInstanceId(processInstanceId)
+ .singleResult();
+ processDefinitionId = processInstance.getProcessDefinitionId();
+ }
+ BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
+ // 娴佺▼鍥惧睍绀�
+ result.put("xml", new String(new BpmnXMLConverter().convertToXML(bpmnModel)));
+ return result;
+ }
+
+ @Override
+ public void diagramView(String processInstanceId, HttpServletResponse httpServletResponse) {
+ // 鑾峰緱褰撳墠娲诲姩鐨勮妭鐐�
+ String processDefinitionId;
+ // 濡傛灉娴佺▼宸茬粡缁撴潫锛屽垯寰楀埌缁撴潫鑺傜偣
+ if (this.isFinished(processInstanceId)) {
+ HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ processDefinitionId = pi.getProcessDefinitionId();
+ } else {
+ // 濡傛灉娴佺▼娌℃湁缁撴潫锛屽垯鍙栧綋鍓嶆椿鍔ㄨ妭鐐�
+ // 鏍规嵁娴佺▼瀹炰緥ID鑾峰緱褰撳墠澶勪簬娲诲姩鐘舵�佺殑ActivityId鍚堥泦
+ ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ processDefinitionId = pi.getProcessDefinitionId();
+ }
+ List<String> highLightedActivities = new ArrayList<>();
+
+ // 鑾峰緱娲诲姩鐨勮妭鐐�
+ List<HistoricActivityInstance> highLightedActivityList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
+
+ for (HistoricActivityInstance tempActivity : highLightedActivityList) {
+ String activityId = tempActivity.getActivityId();
+ highLightedActivities.add(activityId);
+ }
+
+ List<String> flows = new ArrayList<>();
+ // 鑾峰彇娴佺▼鍥�
+ BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
+ ProcessEngineConfiguration engConf = processEngine.getProcessEngineConfiguration();
+
+ ProcessDiagramGenerator diagramGenerator = engConf.getProcessDiagramGenerator();
+ InputStream in = diagramGenerator.generateDiagram(bpmnModel, "bmp", highLightedActivities, flows, engConf.getActivityFontName(),
+ engConf.getLabelFontName(), engConf.getAnnotationFontName(), engConf.getClassLoader(), 1.0, true);
+ OutputStream out = null;
+ byte[] buf = new byte[1024];
+ int length;
+ try {
+ out = httpServletResponse.getOutputStream();
+ while ((length = in.read(buf)) != -1) {
+ out.write(buf, 0, length);
+ }
+ } catch (IOException e) {
+ log.error("鎿嶄綔寮傚父", e);
+ } finally {
+ IoUtil.closeSilently(out);
+ IoUtil.closeSilently(in);
+ }
+ }
+
+ @Override
+ public void resourceView(String processDefinitionId, String processInstanceId, String resourceType, HttpServletResponse response) {
+ if (StringUtil.isAllBlank(processDefinitionId, processInstanceId)) {
+ return;
+ }
+ if (StringUtil.isBlank(processDefinitionId)) {
+ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+ processDefinitionId = processInstance.getProcessDefinitionId();
+ }
+ ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
+ String resourceName = "";
+ if (resourceType.equals(IMAGE_NAME)) {
+ resourceName = processDefinition.getDiagramResourceName();
+ } else if (resourceType.equals(XML_NAME)) {
+ resourceName = processDefinition.getResourceName();
+ }
+ try {
+ InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);
+ byte[] b = new byte[1024];
+ int len;
+ while ((len = resourceAsStream.read(b, 0, INT_1024)) != -1) {
+ response.getOutputStream().write(b, 0, len);
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ }
+
+ @Override
+ public byte[] getModelEditorXML(FlowModel model) {
+ return getBpmnXML(model);
+ }
+
+ /**
+ * 鏄惁宸插畬缁�
+ *
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @return bool
+ */
+ private boolean isFinished(String processInstanceId) {
+ return historyService.createHistoricProcessInstanceQuery().finished()
+ .processInstanceId(processInstanceId).count() > 0;
+ }
+
+
+ /**
+ * xml杞琤pmn json
+ *
+ * @param xml xml
+ * @return json
+ */
+ private String getBpmnJson(String xml) {
+ return BPMN_JSON_CONVERTER.convertToJson(getBpmnModel(xml)).toString();
+ }
+
+ /**
+ * xml杞琤pmnModel
+ *
+ * @param xml xml
+ * @return bpmnModel
+ */
+ private BpmnModel getBpmnModel(String xml) {
+ return BPMN_XML_CONVERTER.convertToBpmnModel(new StringStreamSource(xml), false, false);
+ }
+
+ private byte[] getBpmnXML(FlowModel model) {
+ BpmnModel bpmnModel = getBpmnModel(model);
+ return getBpmnXML(bpmnModel);
+ }
+
+ private byte[] getBpmnXML(BpmnModel bpmnModel) {
+ for (Process process : bpmnModel.getProcesses()) {
+ if (StringUtils.isNotEmpty(process.getId())) {
+ char firstCharacter = process.getId().charAt(0);
+ if (Character.isDigit(firstCharacter)) {
+ process.setId("a" + process.getId());
+ }
+ }
+ }
+ return BPMN_XML_CONVERTER.convertToXML(bpmnModel);
+ }
+
+ private BpmnModel getBpmnModel(FlowModel model) {
+ BpmnModel bpmnModel;
+ try {
+ Map<String, FlowModel> formMap = new HashMap<>(16);
+ Map<String, FlowModel> decisionTableMap = new HashMap<>(16);
+
+ List<FlowModel> referencedModels = baseMapper.findByParentModelId(model.getId());
+ for (FlowModel childModel : referencedModels) {
+ if (FlowModel.MODEL_TYPE_FORM == childModel.getModelType()) {
+ formMap.put(childModel.getId(), childModel);
+
+ } else if (FlowModel.MODEL_TYPE_DECISION_TABLE == childModel.getModelType()) {
+ decisionTableMap.put(childModel.getId(), childModel);
+ }
+ }
+ bpmnModel = getBpmnModel(model, formMap, decisionTableMap);
+ } catch (Exception e) {
+ log.error("Could not generate BPMN 2.0 model for {}", model.getId(), e);
+ throw new ServiceException("Could not generate BPMN 2.0 model");
+ }
+ return bpmnModel;
+ }
+
+ private BpmnModel getBpmnModel(FlowModel model, Map<String, FlowModel> formMap, Map<String, FlowModel> decisionTableMap) {
+ try {
+ ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(model.getModelEditorJson());
+ Map<String, String> formKeyMap = new HashMap<>(16);
+ for (FlowModel formModel : formMap.values()) {
+ formKeyMap.put(formModel.getId(), formModel.getModelKey());
+ }
+ Map<String, String> decisionTableKeyMap = new HashMap<>(16);
+ for (FlowModel decisionTableModel : decisionTableMap.values()) {
+ decisionTableKeyMap.put(decisionTableModel.getId(), decisionTableModel.getModelKey());
+ }
+ return BPMN_JSON_CONVERTER.convertToBpmnModel(editorJsonNode, formKeyMap, decisionTableKeyMap);
+ } catch (Exception e) {
+ log.error("Could not generate BPMN 2.0 model for {}", model.getId(), e);
+ throw new ServiceException("Could not generate BPMN 2.0 model");
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/utils/FlowCache.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/utils/FlowCache.java
new file mode 100644
index 0000000..1cd821d
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/utils/FlowCache.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.engine.utils;
+
+import com.vci.ubcs.flow.engine.entity.FlowProcess;
+import org.flowable.engine.RepositoryService;
+import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
+import org.flowable.engine.repository.ProcessDefinition;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.cache.DictCache;
+
+import static org.springblade.core.cache.constant.CacheConstant.FLOW_CACHE;
+
+/**
+ * 娴佺▼缂撳瓨
+ *
+ * @author Chill
+ */
+public class FlowCache {
+
+ private static final String FLOW_DEFINITION_ID = "definition:id:";
+ private static RepositoryService repositoryService;
+
+ private static RepositoryService getRepositoryService() {
+ if (repositoryService == null) {
+ repositoryService = SpringUtil.getBean(RepositoryService.class);
+ }
+ return repositoryService;
+ }
+
+ /**
+ * 鑾峰緱娴佺▼瀹氫箟瀵硅薄
+ *
+ * @param processDefinitionId 娴佺▼瀵硅薄id
+ * @return
+ */
+ public static FlowProcess getProcessDefinition(String processDefinitionId) {
+ return CacheUtil.get(FLOW_CACHE, FLOW_DEFINITION_ID, processDefinitionId, () -> {
+ ProcessDefinition processDefinition = getRepositoryService().createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
+ ProcessDefinitionEntityImpl processDefinitionEntity = BeanUtil.copy(processDefinition, ProcessDefinitionEntityImpl.class);
+ return new FlowProcess(processDefinitionEntity);
+ });
+ }
+
+ /**
+ * 鑾峰彇娴佺▼绫诲瀷鍚�
+ *
+ * @param category 娴佺▼绫诲瀷
+ * @return
+ */
+ public static String getCategoryName(String category) {
+ String[] categoryArr = category.split(StringPool.UNDERSCORE);
+ if (categoryArr.length <= 1) {
+ return StringPool.EMPTY;
+ } else {
+ return DictCache.getValue(category.split(StringPool.UNDERSCORE)[0], Func.toInt(category.split(StringPool.UNDERSCORE)[1]));
+ }
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application-test.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/main/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/application.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/mapper/FlowMapper.xml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/mapper/FlowMapper.xml
new file mode 100644
index 0000000..91e52fa
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-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="com.vci.ubcs.flow.engine.mapper.FlowMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="flowModelResultMap" type="com.vci.ubcs.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-ops/blade-flow/src/main/resources/processes/LeaveProcess.bpmn20.xml b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/processes/LeaveProcess.bpmn20.xml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/main/resources/processes/LeaveProcess.bpmn20.xml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/main/resources/processes/LeaveProcess.bpmn20.xml
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/BladeTest.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/BladeTest.java
new file mode 100644
index 0000000..c391239
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/BladeTest.java
@@ -0,0 +1,46 @@
+package com.vci.flow.test;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springblade.core.test.BladeBootTest;
+import org.springblade.core.test.BladeSpringExtension;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.flow.engine.entity.FlowModel;
+import com.vci.ubcs.flow.engine.service.FlowEngineService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+/**
+ * Blade鍗曞厓娴嬭瘯
+ *
+ * @author Chill
+ */
+@ExtendWith(BladeSpringExtension.class)
+@BladeBootTest(appName = "blade-flow", enableLoader = true)
+public class BladeTest {
+
+ @Autowired
+ private FlowEngineService service;
+
+ @Test
+ public void contextLoads() {
+ System.out.println("=====鏁版嵁杩佺Щ鍚姩=====");
+
+ // 鑾峰彇 ACT_DE_MODEL 琛ㄩ渶瑕佽浆鎹㈢殑鏁版嵁
+ List<FlowModel> list = service.list();
+ // 寰幆杞崲
+ list.forEach(flowModel -> {
+ if (StringUtil.isBlank(flowModel.getModelEditorXml())) {
+ service.update(Wrappers.<FlowModel>lambdaUpdate()
+ .set(FlowModel::getModelEditorXml, new String(service.getModelEditorXML(flowModel)))
+ .ge(FlowModel::getId, flowModel.getId())
+ );
+ }
+ });
+
+ System.out.println("=====鏁版嵁杩佺Щ瀹屾瘯=====");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java
new file mode 100644
index 0000000..172d3d2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.flow.test.launch;
+
+import com.vci.ubcs.common.constant.LauncherConstant;
+import org.springblade.core.auto.service.AutoService;
+import org.springblade.core.launch.service.LauncherService;
+import org.springblade.core.launch.utils.PropsUtil;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+
+import java.util.Properties;
+
+/**
+ * 鍚姩鍙傛暟鎷撳睍
+ *
+ * @author smallchil
+ */
+@AutoService(LauncherService.class)
+public class LauncherTestServiceImpl implements LauncherService {
+
+ @Override
+ public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
+ Properties props = System.getProperties();
+ PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
+ PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
+ PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-flow/src/test/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/test/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/test/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/test/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/test/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/test/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application-test.yml
diff --git a/Source/BladeX/blade-ops/blade-flow/src/test/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-flow/src/test/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-flow/src/test/resources/application.yml
diff --git a/Source/BladeX/blade-ops/blade-log/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-log/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-log/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-log/Dockerfile
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/pom.xml b/Source/UBCS/ubcs-ops/ubcs-log/pom.xml
new file mode 100644
index 0000000..8457e14
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/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>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-log</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-tenant</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/LogApplication.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/LogApplication.java
new file mode 100644
index 0000000..ce08be0
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/LogApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 鏃ュ織鏈嶅姟
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class LogApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_LOG_NAME, LogApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogApiController.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogApiController.java
new file mode 100644
index 0000000..6b54bf4
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogApiController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.core.log.model.LogApi;
+import com.vci.ubcs.core.log.service.ILogApiService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Map;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/api")
+public class LogApiController {
+
+ private final ILogApiService logService;
+
+ /**
+ * 鏌ヨ鍗曟潯
+ */
+ @GetMapping("/detail")
+ public R<LogApi> detail(LogApi log) {
+ return R.data(logService.getOne(Condition.getQueryWrapper(log)));
+ }
+
+ /**
+ * 鏌ヨ澶氭潯(鍒嗛〉)
+ */
+ @GetMapping("/list")
+ public R<IPage<LogApi>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
+ IPage<LogApi> pages = logService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(log, LogApi.class));
+ return R.data(pages);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogErrorController.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogErrorController.java
new file mode 100644
index 0000000..9dd38c6
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogErrorController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.core.log.model.LogError;
+import com.vci.ubcs.core.log.service.ILogErrorService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Map;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/error")
+public class LogErrorController {
+
+ private final ILogErrorService errorLogService;
+
+ /**
+ * 鏌ヨ鍗曟潯
+ */
+ @GetMapping("/detail")
+ public R<LogError> detail(LogError logError) {
+ return R.data(errorLogService.getOne(Condition.getQueryWrapper(logError)));
+ }
+
+ /**
+ * 鏌ヨ澶氭潯(鍒嗛〉)
+ */
+ @GetMapping("/list")
+ public R<IPage<LogError>> list(@ApiIgnore @RequestParam Map<String, Object> logError, Query query) {
+ IPage<LogError> pages = errorLogService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(logError, LogError.class));
+ return R.data(pages);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogUsualController.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogUsualController.java
new file mode 100644
index 0000000..aa50f15
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/controller/LogUsualController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.core.log.model.LogUsual;
+import com.vci.ubcs.core.log.service.ILogUsualService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Map;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/usual")
+public class LogUsualController {
+
+ private final ILogUsualService logService;
+
+ /**
+ * 鏌ヨ鍗曟潯
+ */
+ @GetMapping("/detail")
+ public R<LogUsual> detail(LogUsual log) {
+ return R.data(logService.getOne(Condition.getQueryWrapper(log)));
+ }
+
+ /**
+ * 鏌ヨ澶氭潯(鍒嗛〉)
+ */
+ @GetMapping("/list")
+ public R<IPage<LogUsual>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
+ IPage<LogUsual> pages = logService.page(Condition.getPage(query), Condition.getQueryWrapper(log, LogUsual.class));
+ return R.data(pages);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/feign/LogClient.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/feign/LogClient.java
new file mode 100644
index 0000000..399c48a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/feign/LogClient.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.feign;
+
+import com.vci.ubcs.core.log.model.LogApi;
+import com.vci.ubcs.core.log.model.LogError;
+import com.vci.ubcs.core.log.model.LogUsual;
+import com.vci.ubcs.core.log.service.ILogApiService;
+import com.vci.ubcs.core.log.service.ILogErrorService;
+import com.vci.ubcs.core.log.service.ILogUsualService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 鏃ュ織鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class LogClient implements ILogClient {
+
+ private final ILogUsualService usualLogService;
+
+ private final ILogApiService apiLogService;
+
+ private final ILogErrorService errorLogService;
+
+ @Override
+ @PostMapping(API_PREFIX + "/saveUsualLog")
+ public R<Boolean> saveUsualLog(@RequestBody LogUsual log) {
+ log.setParams(log.getParams().replace("&", "&"));
+ return R.data(usualLogService.save(log));
+ }
+
+ @Override
+ @PostMapping(API_PREFIX + "/saveApiLog")
+ public R<Boolean> saveApiLog(@RequestBody LogApi log) {
+ log.setParams(log.getParams().replace("&", "&"));
+ return R.data(apiLogService.save(log));
+ }
+
+ @Override
+ @PostMapping(API_PREFIX + "/saveErrorLog")
+ public R<Boolean> saveErrorLog(@RequestBody LogError log) {
+ log.setParams(log.getParams().replace("&", "&"));
+ return R.data(errorLogService.save(log));
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogApiMapper.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogApiMapper.java
new file mode 100644
index 0000000..6570b60
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogApiMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.core.log.model.LogApi;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface LogApiMapper extends BaseMapper<LogApi> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogErrorMapper.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogErrorMapper.java
new file mode 100644
index 0000000..1227bea
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogErrorMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.core.log.model.LogError;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface LogErrorMapper extends BaseMapper<LogError> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogUsualMapper.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogUsualMapper.java
new file mode 100644
index 0000000..e9191db
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/mapper/LogUsualMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.core.log.model.LogUsual;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface LogUsualMapper extends BaseMapper<LogUsual> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogApiService.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogApiService.java
new file mode 100644
index 0000000..fa70369
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogApiService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.core.log.model.LogApi;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ILogApiService extends IService<LogApi> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogErrorService.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogErrorService.java
new file mode 100644
index 0000000..8183b92
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogErrorService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.core.log.model.LogError;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ILogErrorService extends IService<LogError> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogUsualService.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogUsualService.java
new file mode 100644
index 0000000..67add94
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/ILogUsualService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.core.log.model.LogUsual;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ILogUsualService extends IService<LogUsual> {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogApiServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogApiServiceImpl.java
new file mode 100644
index 0000000..930521e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogApiServiceImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.core.log.mapper.LogApiMapper;
+import com.vci.ubcs.core.log.model.LogApi;
+import com.vci.ubcs.core.log.service.ILogApiService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApi> implements ILogApiService {
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogErrorServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogErrorServiceImpl.java
new file mode 100644
index 0000000..1f397f1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogErrorServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.core.log.mapper.LogErrorMapper;
+import com.vci.ubcs.core.log.model.LogError;
+import com.vci.ubcs.core.log.service.ILogErrorService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class LogErrorServiceImpl extends ServiceImpl<LogErrorMapper, LogError> implements ILogErrorService {
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogUsualServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogUsualServiceImpl.java
new file mode 100644
index 0000000..e448085
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/core/log/service/impl/LogUsualServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.core.log.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.core.log.mapper.LogUsualMapper;
+import com.vci.ubcs.core.log.model.LogUsual;
+import com.vci.ubcs.core.log.service.ILogUsualService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class LogUsualServiceImpl extends ServiceImpl<LogUsualMapper, LogUsual> implements ILogUsualService {
+
+}
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-log/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-log/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-log/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-log/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogApiMapper.xml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogApiMapper.xml
new file mode 100644
index 0000000..66c5865
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogApiMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.core.log.mapper.LogApiMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="logResultMap" type="org.springblade.core.log.model.LogApi">
+ <result column="id" property="id"/>
+ <result column="create_time" property="createTime"/>
+ <result column="service_id" property="serviceId"/>
+ <result column="server_host" property="serverHost"/>
+ <result column="server_ip" property="serverIp"/>
+ <result column="env" property="env"/>
+ <result column="type" property="type"/>
+ <result column="title" property="title"/>
+ <result column="method" property="method"/>
+ <result column="request_uri" property="requestUri"/>
+ <result column="user_agent" property="userAgent"/>
+ <result column="remote_ip" property="remoteIp"/>
+ <result column="method_class" property="methodClass"/>
+ <result column="method_name" property="methodName"/>
+ <result column="params" property="params"/>
+ <result column="time" property="time"/>
+ <result column="create_by" property="createBy"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogErrorMapper.xml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogErrorMapper.xml
new file mode 100644
index 0000000..a289602
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogErrorMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.core.log.mapper.LogErrorMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="errorLogResultMap" type="org.springblade.core.log.model.LogError">
+ <result column="id" property="id"/>
+ <result column="create_time" property="createTime"/>
+ <result column="service_id" property="serviceId"/>
+ <result column="server_host" property="serverHost"/>
+ <result column="server_ip" property="serverIp"/>
+ <result column="env" property="env"/>
+ <result column="method" property="method"/>
+ <result column="request_uri" property="requestUri"/>
+ <result column="user_agent" property="userAgent"/>
+ <result column="stack_trace" property="stackTrace"/>
+ <result column="exception_name" property="exceptionName"/>
+ <result column="message" property="message"/>
+ <result column="line_number" property="lineNumber"/>
+ <result column="method_class" property="methodClass"/>
+ <result column="file_name" property="fileName"/>
+ <result column="method_name" property="methodName"/>
+ <result column="params" property="params"/>
+ <result column="create_by" property="createBy"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogUsualMapper.xml b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogUsualMapper.xml
new file mode 100644
index 0000000..e4e5ad9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/resources/mapper/LogUsualMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.core.log.mapper.LogUsualMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="logResultMap" type="org.springblade.core.log.model.LogUsual">
+ <result column="id" property="id"/>
+ <result column="create_time" property="createTime"/>
+ <result column="service_id" property="serviceId"/>
+ <result column="server_host" property="serverHost"/>
+ <result column="server_ip" property="serverIp"/>
+ <result column="env" property="env"/>
+ <result column="log_level" property="logLevel"/>
+ <result column="log_data" property="logData"/>
+ <result column="method" property="method"/>
+ <result column="request_uri" property="requestUri"/>
+ <result column="user_agent" property="userAgent"/>
+ <result column="params" property="params"/>
+ <result column="create_by" property="createBy"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/BladeX/blade-ops/blade-report/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-report/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-report/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-report/Dockerfile
diff --git a/Source/UBCS/ubcs-ops/ubcs-report/pom.xml b/Source/UBCS/ubcs-ops/ubcs-report/pom.xml
new file mode 100644
index 0000000..83ff7b9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-report/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-report</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-tenant</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-report</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/ReportApplication.java b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/ReportApplication.java
new file mode 100644
index 0000000..cf6adec
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/ReportApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.report;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * UReport鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class ReportApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_REPORT_NAME, ReportApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
new file mode 100644
index 0000000..cd043c2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.report.config;
+
+import com.vci.ubcs.core.report.datasource.ReportDataSource;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+/**
+ * 鎶ヨ〃閰嶇疆绫�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@ConditionalOnProperty(value = "report.enabled", havingValue = "true", matchIfMissing = true)
+public class BladeReportConfiguration {
+
+ /**
+ * 鑷畾涔夋姤琛ㄥ彲閫夋暟鎹簮
+ */
+ @Bean
+ public ReportDataSource reportDataSource(DataSource dataSource) {
+ return new ReportDataSource(dataSource);
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-report/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-report/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-report/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application-test.yml
diff --git a/Source/BladeX/blade-ops/blade-report/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-report/src/main/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-report/src/main/resources/application.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-resource/Dockerfile
new file mode 100644
index 0000000..fb972e5
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/Dockerfile
@@ -0,0 +1,15 @@
+FROM bladex/alpine-java:openjdk8-openj9_cn_slim
+
+MAINTAINER bladejava@qq.com
+
+RUN mkdir -p /blade/Resource
+
+WORKDIR /blade/Resource
+
+EXPOSE 36007
+
+ADD ./target/blade-Resource.jar ./app.jar
+
+ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
+
+CMD ["--spring.profiles.active=dev"]
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/pom.xml b/Source/UBCS/ubcs-ops/ubcs-resource/pom.xml
new file mode 100644
index 0000000..f845521
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/pom.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-resource</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <!--Oss-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-oss</artifactId>
+ </dependency>
+ <!--Sms-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-sms</artifactId>
+ </dependency>
+ <!--MinIO-->
+ <dependency>
+ <groupId>io.minio</groupId>
+ <artifactId>minio</artifactId>
+ </dependency>
+ <!--Alioss-->
+ <dependency>
+ <groupId>com.aliyun.oss</groupId>
+ <artifactId>aliyun-sdk-oss</artifactId>
+ </dependency>
+ <!--AliSms-->
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>aliyun-java-sdk-core</artifactId>
+ </dependency>
+ <!--鑵捐COS-->
+ <dependency>
+ <groupId>com.qcloud</groupId>
+ <artifactId>cos_api</artifactId>
+ </dependency>
+ <!--鑵捐SMS-->
+ <dependency>
+ <groupId>com.github.qcloudsms</groupId>
+ <artifactId>qcloudsms</artifactId>
+ </dependency>
+ <!--QiNiu-->
+ <dependency>
+ <groupId>com.qiniu</groupId>
+ <artifactId>qiniu-java-sdk</artifactId>
+ </dependency>
+ <!--YunPian-->
+ <dependency>
+ <groupId>com.yunpian.sdk</groupId>
+ <artifactId>yunpian-java-sdk</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-resource-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-dict-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/ResourceApplication.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/ResourceApplication.java
new file mode 100644
index 0000000..0a8b77e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/ResourceApplication.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 com.vci.ubcs.resource;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 璧勬簮鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class ResourceApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_REPORT_NAME, ResourceApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/AliOssBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/AliOssBuilder.java
new file mode 100644
index 0000000..ea9dbda
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/AliOssBuilder.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.oss;
+
+import com.aliyun.oss.ClientConfiguration;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.common.auth.CredentialsProvider;
+import com.aliyun.oss.common.auth.DefaultCredentialProvider;
+import com.vci.ubcs.resource.entity.Oss;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.AliossTemplate;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.OssRule;
+
+/**
+ * 闃块噷浜戝瓨鍌ㄦ瀯寤虹被
+ *
+ * @author Chill
+ */
+public class AliOssBuilder {
+
+ @SneakyThrows
+ public static OssTemplate template(Oss oss, OssRule ossRule) {
+ // 鍒涘缓ClientConfiguration銆侰lientConfiguration鏄疧SSClient鐨勯厤缃被锛屽彲閰嶇疆浠g悊銆佽繛鎺ヨ秴鏃躲�佹渶澶ц繛鎺ユ暟绛夊弬鏁般��
+ ClientConfiguration conf = new ClientConfiguration();
+ // 璁剧疆OSSClient鍏佽鎵撳紑鐨勬渶澶TTP杩炴帴鏁帮紝榛樿涓�1024涓��
+ conf.setMaxConnections(1024);
+ // 璁剧疆Socket灞備紶杈撴暟鎹殑瓒呮椂鏃堕棿锛岄粯璁や负50000姣銆�
+ conf.setSocketTimeout(50000);
+ // 璁剧疆寤虹珛杩炴帴鐨勮秴鏃舵椂闂达紝榛樿涓�50000姣銆�
+ conf.setConnectionTimeout(50000);
+ // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栬繛鎺ョ殑瓒呮椂鏃堕棿锛堝崟浣嶏細姣锛夛紝榛樿涓嶈秴鏃躲��
+ conf.setConnectionRequestTimeout(1000);
+ // 璁剧疆杩炴帴绌洪棽瓒呮椂鏃堕棿銆傝秴鏃跺垯鍏抽棴杩炴帴锛岄粯璁や负60000姣銆�
+ conf.setIdleConnectionTime(60000);
+ // 璁剧疆澶辫触璇锋眰閲嶈瘯娆℃暟锛岄粯璁や负3娆°��
+ conf.setMaxErrorRetry(5);
+ OssProperties ossProperties = new OssProperties();
+ ossProperties.setEndpoint(oss.getEndpoint());
+ ossProperties.setAccessKey(oss.getAccessKey());
+ ossProperties.setSecretKey(oss.getSecretKey());
+ ossProperties.setBucketName(oss.getBucketName());
+ CredentialsProvider credentialsProvider = new DefaultCredentialProvider(ossProperties.getAccessKey(), ossProperties.getSecretKey());
+ OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), credentialsProvider, conf);
+ return new AliossTemplate(ossClient, ossProperties, ossRule);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/MinioOssBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/MinioOssBuilder.java
new file mode 100644
index 0000000..45a18f3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/MinioOssBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.oss;
+
+import com.vci.ubcs.resource.entity.Oss;
+import io.minio.MinioClient;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.MinioTemplate;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.OssRule;
+
+/**
+ * Minio浜戝瓨鍌ㄦ瀯寤虹被
+ *
+ * @author Chill
+ */
+public class MinioOssBuilder {
+
+ @SneakyThrows
+ public static OssTemplate template(Oss oss, OssRule ossRule) {
+ MinioClient minioClient = MinioClient.builder()
+ .endpoint(oss.getEndpoint())
+ .credentials(oss.getAccessKey(), oss.getSecretKey())
+ .build();
+ OssProperties ossProperties = new OssProperties();
+ ossProperties.setEndpoint(oss.getEndpoint());
+ ossProperties.setAccessKey(oss.getAccessKey());
+ ossProperties.setSecretKey(oss.getSecretKey());
+ ossProperties.setBucketName(oss.getBucketName());
+ return new MinioTemplate(minioClient, ossRule, ossProperties);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/OssBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/OssBuilder.java
new file mode 100644
index 0000000..c882801
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/OssBuilder.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.oss;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.service.IOssService;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.enums.OssEnum;
+import org.springblade.core.oss.enums.OssStatusEnum;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.BladeOssRule;
+import org.springblade.core.oss.rule.OssRule;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.WebUtil;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
+
+/**
+ * Oss浜戝瓨鍌ㄧ粺涓�鏋勫缓绫�
+ *
+ * @author Chill
+ */
+public class OssBuilder {
+
+ public static final String OSS_CODE = "oss:code:";
+ public static final String OSS_PARAM_KEY = "code";
+
+ private final OssProperties ossProperties;
+ private final IOssService ossService;
+
+ public OssBuilder(OssProperties ossProperties, IOssService ossService) {
+ this.ossProperties = ossProperties;
+ this.ossService = ossService;
+ }
+
+ /**
+ * OssTemplate閰嶇疆缂撳瓨姹�
+ */
+ private final Map<String, OssTemplate> templatePool = new ConcurrentHashMap<>();
+
+ /**
+ * oss閰嶇疆缂撳瓨姹�
+ */
+ private final Map<String, Oss> ossPool = new ConcurrentHashMap<>();
+
+ /**
+ * 鑾峰彇template
+ *
+ * @return OssTemplate
+ */
+ public OssTemplate template() {
+ return template(StringPool.EMPTY);
+ }
+
+ /**
+ * 鑾峰彇template
+ *
+ * @param code 璧勬簮缂栧彿
+ * @return OssTemplate
+ */
+ public OssTemplate template(String code) {
+ String tenantId = AuthUtil.getTenantId();
+ Oss oss = getOss(tenantId, code);
+ Oss ossCached = ossPool.get(tenantId);
+ OssTemplate template = templatePool.get(tenantId);
+ // 鑻ヤ负绌烘垨鑰呬笉涓�鑷达紝鍒欓噸鏂板姞杞�
+ if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
+ synchronized (OssBuilder.class) {
+ template = templatePool.get(tenantId);
+ if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
+ OssRule ossRule;
+ // 鑻ラ噰鐢ㄩ粯璁よ缃垯寮�鍚绉熸埛妯″紡, 鑻ユ槸鐢ㄦ埛鑷畾涔塷ss鍒欎笉寮�鍚�
+ if (oss.getEndpoint().equals(ossProperties.getEndpoint()) && oss.getAccessKey().equals(ossProperties.getAccessKey()) && ossProperties.getTenantMode()) {
+ ossRule = new BladeOssRule(Boolean.TRUE);
+ } else {
+ ossRule = new BladeOssRule(Boolean.FALSE);
+ }
+ if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
+ template = MinioOssBuilder.template(oss, ossRule);
+ } else if (oss.getCategory() == OssEnum.QINIU.getCategory()) {
+ template = QiniuOssBuilder.template(oss, ossRule);
+ } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
+ template = AliOssBuilder.template(oss, ossRule);
+ } else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
+ template = TencentOssBuilder.template(oss, ossRule);
+ }
+ templatePool.put(tenantId, template);
+ ossPool.put(tenantId, oss);
+ }
+ }
+ }
+ return template;
+ }
+
+ /**
+ * 鑾峰彇瀵硅薄瀛樺偍瀹炰綋
+ *
+ * @param tenantId 绉熸埛ID
+ * @return Oss
+ */
+ public Oss getOss(String tenantId, String code) {
+ String key = tenantId;
+ LambdaQueryWrapper<Oss> lqw = Wrappers.<Oss>query().lambda().eq(Oss::getTenantId, tenantId);
+ // 鑾峰彇浼犲弬鐨勮祫婧愮紪鍙峰苟鏌ヨ锛岃嫢鏈夊垯杩斿洖锛岃嫢娌℃湁鍒欒皟鍚敤鐨勯厤缃�
+ String ossCode = StringUtil.isBlank(code) ? WebUtil.getParameter(OSS_PARAM_KEY) : code;
+ if (StringUtil.isNotBlank(ossCode)) {
+ key = key.concat(StringPool.DASH).concat(ossCode);
+ lqw.eq(Oss::getOssCode, ossCode);
+ } else {
+ lqw.eq(Oss::getStatus, OssStatusEnum.ENABLE.getNum());
+ }
+ Oss oss = CacheUtil.get(RESOURCE_CACHE, OSS_CODE, key, () -> {
+ Oss o = ossService.getOne(lqw);
+ // 鑻ヤ负绌哄垯璋冪敤榛樿閰嶇疆
+ if ((Func.isEmpty(o))) {
+ Oss defaultOss = new Oss();
+ defaultOss.setId(0L);
+ defaultOss.setCategory(OssEnum.of(ossProperties.getName()).getCategory());
+ defaultOss.setEndpoint(ossProperties.getEndpoint());
+ defaultOss.setBucketName(ossProperties.getBucketName());
+ defaultOss.setAccessKey(ossProperties.getAccessKey());
+ defaultOss.setSecretKey(ossProperties.getSecretKey());
+ return defaultOss;
+ } else {
+ return o;
+ }
+ });
+ if (oss == null || oss.getId() == null) {
+ throw new ServiceException("鏈幏鍙栧埌瀵瑰簲鐨勫璞″瓨鍌ㄩ厤缃�");
+ } else {
+ return oss;
+ }
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/QiniuOssBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/QiniuOssBuilder.java
new file mode 100644
index 0000000..d0c6614
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/QiniuOssBuilder.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.oss;
+
+import com.qiniu.storage.BucketManager;
+import com.qiniu.storage.Configuration;
+import com.qiniu.storage.Region;
+import com.qiniu.storage.UploadManager;
+import com.qiniu.util.Auth;
+import com.vci.ubcs.resource.entity.Oss;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.QiniuTemplate;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.OssRule;
+
+/**
+ * 涓冪墰浜戝瓨鍌ㄦ瀯寤虹被
+ *
+ * @author Chill
+ */
+public class QiniuOssBuilder {
+
+ @SneakyThrows
+ public static OssTemplate template(Oss oss, OssRule ossRule) {
+ Configuration cfg = new Configuration(Region.autoRegion());
+ Auth auth = Auth.create(oss.getAccessKey(), oss.getSecretKey());
+ UploadManager uploadManager = new UploadManager(cfg);
+ BucketManager bucketManager = new BucketManager(auth, cfg);
+ OssProperties ossProperties = new OssProperties();
+ ossProperties.setEndpoint(oss.getEndpoint());
+ ossProperties.setAccessKey(oss.getAccessKey());
+ ossProperties.setSecretKey(oss.getSecretKey());
+ ossProperties.setBucketName(oss.getBucketName());
+ return new QiniuTemplate(auth, uploadManager, bucketManager, ossProperties, ossRule);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/TencentOssBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/TencentOssBuilder.java
new file mode 100644
index 0000000..d502b26
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/oss/TencentOssBuilder.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.oss;
+
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.region.Region;
+import com.vci.ubcs.resource.entity.Oss;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.OssRule;
+import org.springblade.core.oss.TencentCosTemplate;
+
+/**
+ * 鑵捐浜戝瓨鍌ㄦ瀯寤虹被
+ *
+ * @author Chill
+ */
+public class TencentOssBuilder {
+
+ @SneakyThrows
+ public static OssTemplate template(Oss oss, OssRule ossRule) {
+ // 鍒涘缓閰嶇疆绫�
+ OssProperties ossProperties = new OssProperties();
+ ossProperties.setEndpoint(oss.getEndpoint());
+ ossProperties.setAccessKey(oss.getAccessKey());
+ ossProperties.setSecretKey(oss.getSecretKey());
+ ossProperties.setBucketName(oss.getBucketName());
+ ossProperties.setAppId(oss.getAppId());
+ ossProperties.setRegion(oss.getRegion());
+ // 鍒濆鍖栫敤鎴疯韩浠戒俊鎭紙secretId, secretKey锛�
+ COSCredentials credentials = new BasicCOSCredentials(ossProperties.getAccessKey(), ossProperties.getSecretKey());
+ // 璁剧疆 bucket 鐨勫尯鍩�, COS 鍦板煙鐨勭畝绉拌鍙傜収 https://cloud.tencent.com/document/product/436/6224
+ Region region = new Region(ossProperties.getRegion());
+ // clientConfig 涓寘鍚簡璁剧疆 region, https(榛樿 http), 瓒呮椂, 浠g悊绛� set 鏂规硶, 浣跨敤鍙弬瑙佹簮鐮佹垨鑰呭父瑙侀棶棰� Java SDK 閮ㄥ垎銆�
+ ClientConfig clientConfig = new ClientConfig(region);
+ // 璁剧疆OSSClient鍏佽鎵撳紑鐨勬渶澶TTP杩炴帴鏁帮紝榛樿涓�1024涓��
+ clientConfig.setMaxConnectionsCount(1024);
+ // 璁剧疆Socket灞備紶杈撴暟鎹殑瓒呮椂鏃堕棿锛岄粯璁や负50000姣銆�
+ clientConfig.setSocketTimeout(50000);
+ // 璁剧疆寤虹珛杩炴帴鐨勮秴鏃舵椂闂达紝榛樿涓�50000姣銆�
+ clientConfig.setConnectionTimeout(50000);
+ // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栬繛鎺ョ殑瓒呮椂鏃堕棿锛堝崟浣嶏細姣锛夛紝榛樿涓嶈秴鏃躲��
+ clientConfig.setConnectionRequestTimeout(1000);
+ COSClient cosClient = new COSClient(credentials, clientConfig);
+ return new TencentCosTemplate(cosClient, ossProperties, ossRule);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/AliSmsBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/AliSmsBuilder.java
new file mode 100644
index 0000000..d1d0940
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/AliSmsBuilder.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.sms;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import com.vci.ubcs.resource.entity.Sms;
+import lombok.SneakyThrows;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.sms.SmsTemplate;
+import org.springblade.core.sms.AliSmsTemplate;
+import org.springblade.core.sms.props.SmsProperties;
+
+/**
+ * 闃块噷浜戠煭淇℃瀯寤虹被
+ *
+ * @author Chill
+ */
+public class AliSmsBuilder {
+
+ @SneakyThrows
+ public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
+ SmsProperties smsProperties = new SmsProperties();
+ smsProperties.setTemplateId(sms.getTemplateId());
+ smsProperties.setAccessKey(sms.getAccessKey());
+ smsProperties.setSecretKey(sms.getSecretKey());
+ smsProperties.setRegionId(sms.getRegionId());
+ smsProperties.setSignName(sms.getSignName());
+ IClientProfile profile = DefaultProfile.getProfile(smsProperties.getRegionId(), smsProperties.getAccessKey(), smsProperties.getSecretKey());
+ IAcsClient acsClient = new DefaultAcsClient(profile);
+ return new AliSmsTemplate(smsProperties, acsClient, bladeRedis);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/QiniuSmsBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/QiniuSmsBuilder.java
new file mode 100644
index 0000000..c0c88c3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/QiniuSmsBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.sms;
+
+import com.qiniu.sms.SmsManager;
+import com.qiniu.util.Auth;
+import com.vci.ubcs.resource.entity.Sms;
+import lombok.SneakyThrows;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.sms.SmsTemplate;
+import org.springblade.core.sms.props.SmsProperties;
+import org.springblade.core.sms.QiniuSmsTemplate;
+
+/**
+ * 涓冪墰浜戠煭淇℃瀯寤虹被
+ *
+ * @author Chill
+ */
+public class QiniuSmsBuilder {
+
+ @SneakyThrows
+ public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
+ SmsProperties smsProperties = new SmsProperties();
+ smsProperties.setTemplateId(sms.getTemplateId());
+ smsProperties.setAccessKey(sms.getAccessKey());
+ smsProperties.setSecretKey(sms.getSecretKey());
+ smsProperties.setSignName(sms.getSignName());
+ Auth auth = Auth.create(smsProperties.getAccessKey(), smsProperties.getSecretKey());
+ SmsManager smsManager = new SmsManager(auth);
+ return new QiniuSmsTemplate(smsProperties, smsManager, bladeRedis);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/SmsBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/SmsBuilder.java
new file mode 100644
index 0000000..3e67761
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/SmsBuilder.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.sms;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.service.ISmsService;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.sms.SmsTemplate;
+import org.springblade.core.sms.enums.SmsEnum;
+import org.springblade.core.sms.enums.SmsStatusEnum;
+import org.springblade.core.sms.props.SmsProperties;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.WebUtil;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
+
+/**
+ * Sms鐭俊鏈嶅姟缁熶竴鏋勫缓绫�
+ *
+ * @author Chill
+ */
+public class SmsBuilder {
+
+ public static final String SMS_CODE = "sms:code:";
+ public static final String SMS_PARAM_KEY = "code";
+
+ private final SmsProperties smsProperties;
+ private final ISmsService smsService;
+ private final BladeRedis bladeRedis;
+
+
+ public SmsBuilder(SmsProperties smsProperties, ISmsService smsService, BladeRedis bladeRedis) {
+ this.smsProperties = smsProperties;
+ this.smsService = smsService;
+ this.bladeRedis = bladeRedis;
+ }
+
+ /**
+ * SmsTemplate閰嶇疆缂撳瓨姹�
+ */
+ private final Map<String, SmsTemplate> templatePool = new ConcurrentHashMap<>();
+
+ /**
+ * Sms閰嶇疆缂撳瓨姹�
+ */
+ private final Map<String, Sms> smsPool = new ConcurrentHashMap<>();
+
+
+ /**
+ * 鑾峰彇template
+ *
+ * @return SmsTemplate
+ */
+ public SmsTemplate template() {
+ return template(StringPool.EMPTY);
+ }
+
+ /**
+ * 鑾峰彇template
+ *
+ * @param code 璧勬簮缂栧彿
+ * @return SmsTemplate
+ */
+ public SmsTemplate template(String code) {
+ String tenantId = AuthUtil.getTenantId();
+ Sms sms = getSms(tenantId, code);
+ Sms smsCached = smsPool.get(tenantId);
+ SmsTemplate template = templatePool.get(tenantId);
+ // 鑻ヤ负绌烘垨鑰呬笉涓�鑷达紝鍒欓噸鏂板姞杞�
+ if (Func.hasEmpty(template, smsCached) || !sms.getTemplateId().equals(smsCached.getTemplateId()) || !sms.getAccessKey().equals(smsCached.getAccessKey())) {
+ synchronized (SmsBuilder.class) {
+ template = templatePool.get(tenantId);
+ if (Func.hasEmpty(template, smsCached) || !sms.getTemplateId().equals(smsCached.getTemplateId()) || !sms.getAccessKey().equals(smsCached.getAccessKey())) {
+ if (sms.getCategory() == SmsEnum.YUNPIAN.getCategory()) {
+ template = YunpianSmsBuilder.template(sms, bladeRedis);
+ } else if (sms.getCategory() == SmsEnum.QINIU.getCategory()) {
+ template = QiniuSmsBuilder.template(sms, bladeRedis);
+ } else if (sms.getCategory() == SmsEnum.ALI.getCategory()) {
+ template = AliSmsBuilder.template(sms, bladeRedis);
+ } else if (sms.getCategory() == SmsEnum.TENCENT.getCategory()) {
+ template = TencentSmsBuilder.template(sms, bladeRedis);
+ }
+ templatePool.put(tenantId, template);
+ smsPool.put(tenantId, sms);
+ }
+ }
+ }
+ return template;
+ }
+
+
+ /**
+ * 鑾峰彇鐭俊瀹炰綋
+ *
+ * @param tenantId 绉熸埛ID
+ * @return Sms
+ */
+ public Sms getSms(String tenantId, String code) {
+ String key = tenantId;
+ LambdaQueryWrapper<Sms> lqw = Wrappers.<Sms>query().lambda().eq(Sms::getTenantId, tenantId);
+ // 鑾峰彇浼犲弬鐨勮祫婧愮紪鍙峰苟鏌ヨ锛岃嫢鏈夊垯杩斿洖锛岃嫢娌℃湁鍒欒皟鍚敤鐨勯厤缃�
+ String smsCode = StringUtil.isBlank(code) ? WebUtil.getParameter(SMS_PARAM_KEY) : code;
+ if (StringUtil.isNotBlank(smsCode)) {
+ key = key.concat(StringPool.DASH).concat(smsCode);
+ lqw.eq(Sms::getSmsCode, smsCode);
+ } else {
+ lqw.eq(Sms::getStatus, SmsStatusEnum.ENABLE.getNum());
+ }
+ Sms sms = CacheUtil.get(RESOURCE_CACHE, SMS_CODE, key, () -> {
+ Sms s = smsService.getOne(lqw);
+ // 鑻ヤ负绌哄垯璋冪敤榛樿閰嶇疆
+ if ((Func.isEmpty(s))) {
+ Sms defaultSms = new Sms();
+ defaultSms.setId(0L);
+ defaultSms.setTemplateId(smsProperties.getTemplateId());
+ defaultSms.setRegionId(smsProperties.getRegionId());
+ defaultSms.setCategory(SmsEnum.of(smsProperties.getName()).getCategory());
+ defaultSms.setAccessKey(smsProperties.getAccessKey());
+ defaultSms.setSecretKey(smsProperties.getSecretKey());
+ defaultSms.setSignName(smsProperties.getSignName());
+ return defaultSms;
+ } else {
+ return s;
+ }
+ });
+ if (sms == null || sms.getId() == null) {
+ throw new ServiceException("鏈幏鍙栧埌瀵瑰簲鐨勭煭淇¢厤缃�");
+ } else {
+ return sms;
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/TencentSmsBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/TencentSmsBuilder.java
new file mode 100644
index 0000000..0c0fe68
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/TencentSmsBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.sms;
+
+import com.github.qcloudsms.SmsMultiSender;
+import com.vci.ubcs.resource.entity.Sms;
+import lombok.SneakyThrows;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.sms.SmsTemplate;
+import org.springblade.core.sms.props.SmsProperties;
+import org.springblade.core.sms.TencentSmsTemplate;
+import org.springblade.core.tool.utils.Func;
+
+/**
+ * 鑵捐浜戠煭淇℃瀯寤虹被
+ *
+ * @author Chill
+ */
+public class TencentSmsBuilder {
+
+ @SneakyThrows
+ public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
+ SmsProperties smsProperties = new SmsProperties();
+ smsProperties.setTemplateId(sms.getTemplateId());
+ smsProperties.setAccessKey(sms.getAccessKey());
+ smsProperties.setSecretKey(sms.getSecretKey());
+ smsProperties.setSignName(sms.getSignName());
+ SmsMultiSender smsSender = new SmsMultiSender(Func.toInt(smsProperties.getAccessKey()), sms.getSecretKey());
+ return new TencentSmsTemplate(smsProperties, smsSender, bladeRedis);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/YunpianSmsBuilder.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/YunpianSmsBuilder.java
new file mode 100644
index 0000000..ab6843e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/builder/sms/YunpianSmsBuilder.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.builder.sms;
+
+import com.vci.ubcs.resource.entity.Sms;
+import com.yunpian.sdk.YunpianClient;
+import lombok.SneakyThrows;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.sms.SmsTemplate;
+import org.springblade.core.sms.props.SmsProperties;
+import org.springblade.core.sms.YunpianSmsTemplate;
+
+/**
+ * 浜戠墖鐭俊鏋勫缓绫�
+ *
+ * @author Chill
+ */
+public class YunpianSmsBuilder {
+
+ @SneakyThrows
+ public static SmsTemplate template(Sms sms, BladeRedis bladeRedis) {
+ SmsProperties smsProperties = new SmsProperties();
+ smsProperties.setTemplateId(sms.getTemplateId());
+ smsProperties.setAccessKey(sms.getAccessKey());
+ smsProperties.setSignName(sms.getSignName());
+ YunpianClient client = new YunpianClient(smsProperties.getAccessKey()).init();
+ return new YunpianSmsTemplate(smsProperties, client, bladeRedis);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeOssConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeOssConfiguration.java
new file mode 100644
index 0000000..b1b63f9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeOssConfiguration.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.config;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.oss.props.OssProperties;
+import com.vci.ubcs.resource.builder.oss.OssBuilder;
+import com.vci.ubcs.resource.service.IOssService;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Oss閰嶇疆绫�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+public class BladeOssConfiguration {
+
+ private final OssProperties ossProperties;
+
+ private final IOssService ossService;
+
+ @Bean
+ public OssBuilder ossBuilder() {
+ return new OssBuilder(ossProperties, ossService);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeSmsConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeSmsConfiguration.java
new file mode 100644
index 0000000..009421f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/config/BladeSmsConfiguration.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.config;
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.sms.props.SmsProperties;
+import com.vci.ubcs.resource.builder.sms.SmsBuilder;
+import com.vci.ubcs.resource.service.ISmsService;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Sms閰嶇疆绫�
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+public class BladeSmsConfiguration {
+
+ private final SmsProperties smsProperties;
+
+ private final ISmsService smsService;
+
+ private final BladeRedis bladeRedis;
+
+ @Bean
+ public SmsBuilder smsBuilder() {
+ return new SmsBuilder(smsProperties, smsService, bladeRedis);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/AttachController.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/AttachController.java
new file mode 100644
index 0000000..3a04595
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/AttachController.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.resource.entity.Attach;
+import com.vci.ubcs.resource.service.IAttachService;
+import com.vci.ubcs.resource.vo.AttachVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 闄勪欢琛� 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/attach")
+@Api(value = "闄勪欢", tags = "闄勪欢")
+public class AttachController extends BladeController {
+
+ private final IAttachService attachService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆attach")
+ public R<Attach> detail(Attach attach) {
+ Attach detail = attachService.getOne(Condition.getQueryWrapper(attach));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 闄勪欢琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆attach")
+ public R<IPage<Attach>> list(Attach attach, Query query) {
+ IPage<Attach> pages = attachService.page(Condition.getPage(query), Condition.getQueryWrapper(attach));
+ return R.data(pages);
+ }
+
+ /**
+ * 鑷畾涔夊垎椤� 闄勪欢琛�
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆attach")
+ public R<IPage<AttachVO>> page(AttachVO attach, Query query) {
+ IPage<AttachVO> pages = attachService.selectAttachPage(Condition.getPage(query), attach);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 闄勪欢琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆attach")
+ public R save(@Valid @RequestBody Attach attach) {
+ return R.status(attachService.save(attach));
+ }
+
+ /**
+ * 淇敼 闄勪欢琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆attach")
+ public R update(@Valid @RequestBody Attach attach) {
+ return R.status(attachService.updateById(attach));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 闄勪欢琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆attach")
+ public R submit(@Valid @RequestBody Attach attach) {
+ return R.status(attachService.saveOrUpdate(attach));
+ }
+
+
+ /**
+ * 鍒犻櫎 闄勪欢琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(attachService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/OssController.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/OssController.java
new file mode 100644
index 0000000..fd01d58
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/OssController.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.service.IOssService;
+import com.vci.ubcs.resource.vo.OssVO;
+import com.vci.ubcs.resource.wrapper.OssWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+
+import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+@RequestMapping("/oss")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+@Api(value = "瀵硅薄瀛樺偍鎺ュ彛", tags = "瀵硅薄瀛樺偍鎺ュ彛")
+public class OssController extends BladeController {
+
+ private final IOssService ossService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆oss")
+ public R<OssVO> detail(Oss oss) {
+ Oss detail = ossService.getOne(Condition.getQueryWrapper(oss));
+ return R.data(OssWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆oss")
+ public R<IPage<OssVO>> list(Oss oss, Query query) {
+ IPage<Oss> pages = ossService.page(Condition.getPage(query), Condition.getQueryWrapper(oss));
+ return R.data(OssWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 鑷畾涔夊垎椤�
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆oss")
+ public R<IPage<OssVO>> page(OssVO oss, Query query) {
+ IPage<OssVO> pages = ossService.selectOssPage(Condition.getPage(query), oss);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆oss")
+ public R save(@Valid @RequestBody Oss oss) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(ossService.save(oss));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆oss")
+ public R update(@Valid @RequestBody Oss oss) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(ossService.updateById(oss));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆oss")
+ public R submit(@Valid @RequestBody Oss oss) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(ossService.submit(oss));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(ossService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+ /**
+ * 鍚敤
+ */
+ @PostMapping("/enable")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "閰嶇疆鍚敤", notes = "浼犲叆id")
+ public R enable(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(ossService.enable(id));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/SmsController.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/SmsController.java
new file mode 100644
index 0000000..69a26fc
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/controller/SmsController.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.service.ISmsService;
+import com.vci.ubcs.resource.vo.SmsVO;
+import com.vci.ubcs.resource.wrapper.SmsWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+
+import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
+
+/**
+ * 鐭俊閰嶇疆琛� 鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+@RequestMapping("/sms")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+@Api(value = "鐭俊閰嶇疆琛�", tags = "鐭俊閰嶇疆琛ㄦ帴鍙�")
+public class SmsController extends BladeController {
+
+ private final ISmsService smsService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆sms")
+ public R<SmsVO> detail(Sms sms) {
+ Sms detail = smsService.getOne(Condition.getQueryWrapper(sms));
+ return R.data(SmsWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒嗛〉 鐭俊閰嶇疆琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆sms")
+ public R<IPage<SmsVO>> list(Sms sms, Query query) {
+ IPage<Sms> pages = smsService.page(Condition.getPage(query), Condition.getQueryWrapper(sms));
+ return R.data(SmsWrapper.build().pageVO(pages));
+ }
+
+
+ /**
+ * 鑷畾涔夊垎椤� 鐭俊閰嶇疆琛�
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆sms")
+ public R<IPage<SmsVO>> page(SmsVO sms, Query query) {
+ IPage<SmsVO> pages = smsService.selectSmsPage(Condition.getPage(query), sms);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 鐭俊閰嶇疆琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆sms")
+ public R save(@Valid @RequestBody Sms sms) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(smsService.save(sms));
+ }
+
+ /**
+ * 淇敼 鐭俊閰嶇疆琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆sms")
+ public R update(@Valid @RequestBody Sms sms) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(smsService.updateById(sms));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 鐭俊閰嶇疆琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆sms")
+ public R submit(@Valid @RequestBody Sms sms) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(smsService.submit(sms));
+ }
+
+
+ /**
+ * 鍒犻櫎 鐭俊閰嶇疆琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(smsService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 鍚敤
+ */
+ @PostMapping("/enable")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "閰嶇疆鍚敤", notes = "浼犲叆id")
+ public R enable(@ApiParam(value = "涓婚敭", required = true) @RequestParam Long id) {
+ CacheUtil.clear(RESOURCE_CACHE);
+ return R.status(smsService.enable(id));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
new file mode 100644
index 0000000..9252704
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.endpoint;
+
+import com.vci.ubcs.resource.entity.Attach;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.oss.model.OssFile;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.FileUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.resource.builder.oss.OssBuilder;
+import com.vci.ubcs.resource.service.IAttachService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 瀵硅薄瀛樺偍绔偣
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/oss/endpoint")
+@Api(value = "瀵硅薄瀛樺偍绔偣", tags = "瀵硅薄瀛樺偍绔偣")
+public class OssEndpoint {
+
+ /**
+ * 瀵硅薄瀛樺偍鏋勫缓绫�
+ */
+ private final OssBuilder ossBuilder;
+
+ /**
+ * 闄勪欢琛ㄦ湇鍔�
+ */
+ private final IAttachService attachService;
+
+ /**
+ * 鍒涘缓瀛樺偍妗�
+ *
+ * @param bucketName 瀛樺偍妗跺悕绉�
+ * @return Bucket
+ */
+ @SneakyThrows
+ @PostMapping("/make-bucket")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R makeBucket(@RequestParam String bucketName) {
+ ossBuilder.template().makeBucket(bucketName);
+ return R.success("鍒涘缓鎴愬姛");
+ }
+
+ /**
+ * 鍒涘缓瀛樺偍妗�
+ *
+ * @param bucketName 瀛樺偍妗跺悕绉�
+ * @return R
+ */
+ @SneakyThrows
+ @PostMapping("/remove-bucket")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R removeBucket(@RequestParam String bucketName) {
+ ossBuilder.template().removeBucket(bucketName);
+ return R.success("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * 鎷疯礉鏂囦欢
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @param destBucketName 鐩爣瀛樺偍妗跺悕绉�
+ * @param destFileName 鐩爣瀛樺偍妗跺璞″悕绉�
+ * @return R
+ */
+ @SneakyThrows
+ @PostMapping("/copy-file")
+ public R copyFile(@RequestParam String fileName, @RequestParam String destBucketName, String destFileName) {
+ ossBuilder.template().copyFile(fileName, destBucketName, destFileName);
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢淇℃伅
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @return InputStream
+ */
+ @SneakyThrows
+ @GetMapping("/stat-file")
+ public R<OssFile> statFile(@RequestParam String fileName) {
+ return R.data(ossBuilder.template().statFile(fileName));
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢鐩稿璺緞
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @return String
+ */
+ @SneakyThrows
+ @GetMapping("/file-path")
+ public R<String> filePath(@RequestParam String fileName) {
+ return R.data(ossBuilder.template().filePath(fileName));
+ }
+
+
+ /**
+ * 鑾峰彇鏂囦欢澶栭摼
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @return String
+ */
+ @SneakyThrows
+ @GetMapping("/file-link")
+ public R<String> fileLink(@RequestParam String fileName) {
+ return R.data(ossBuilder.template().fileLink(fileName));
+ }
+
+ /**
+ * 涓婁紶鏂囦欢
+ *
+ * @param file 鏂囦欢
+ * @return ObjectStat
+ */
+ @SneakyThrows
+ @PostMapping("/put-file")
+ public R<BladeFile> putFile(@RequestParam MultipartFile file) {
+ BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream());
+ return R.data(bladeFile);
+ }
+
+ /**
+ * 涓婁紶鏂囦欢
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @param file 鏂囦欢
+ * @return ObjectStat
+ */
+ @SneakyThrows
+ @PostMapping("/put-file-by-name")
+ public R<BladeFile> putFile(@RequestParam String fileName, @RequestParam MultipartFile file) {
+ BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
+ return R.data(bladeFile);
+ }
+
+ /**
+ * 涓婁紶鏂囦欢骞朵繚瀛樿嚦闄勪欢琛�
+ *
+ * @param file 鏂囦欢
+ * @return ObjectStat
+ */
+ @SneakyThrows
+ @PostMapping("/put-file-attach")
+ public R<BladeFile> putFileAttach(@RequestParam MultipartFile file) {
+ String fileName = file.getOriginalFilename();
+ BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
+ Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
+ bladeFile.setAttachId(attachId);
+ return R.data(bladeFile);
+ }
+
+ /**
+ * 涓婁紶鏂囦欢骞朵繚瀛樿嚦闄勪欢琛�
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @param file 鏂囦欢
+ * @return ObjectStat
+ */
+ @SneakyThrows
+ @PostMapping("/put-file-attach-by-name")
+ public R<BladeFile> putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file) {
+ BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
+ Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
+ bladeFile.setAttachId(attachId);
+ return R.data(bladeFile);
+ }
+
+ /**
+ * 鏋勫缓闄勪欢琛�
+ *
+ * @param fileName 鏂囦欢鍚�
+ * @param fileSize 鏂囦欢澶у皬
+ * @param bladeFile 瀵硅薄瀛樺偍鏂囦欢
+ * @return attachId
+ */
+ private Long buildAttach(String fileName, Long fileSize, BladeFile bladeFile) {
+ String fileExtension = FileUtil.getFileExtension(fileName);
+ Attach attach = new Attach();
+ attach.setDomainUrl(bladeFile.getDomain());
+ attach.setLink(bladeFile.getLink());
+ attach.setName(bladeFile.getName());
+ attach.setOriginalName(bladeFile.getOriginalName());
+ attach.setAttachSize(fileSize);
+ attach.setExtension(fileExtension);
+ attachService.save(attach);
+ return attach.getId();
+ }
+
+ /**
+ * 鍒犻櫎鏂囦欢
+ *
+ * @param fileName 瀛樺偍妗跺璞″悕绉�
+ * @return R
+ */
+ @SneakyThrows
+ @PostMapping("/remove-file")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R removeFile(@RequestParam String fileName) {
+ ossBuilder.template().removeFile(fileName);
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎鏂囦欢
+ *
+ * @param fileNames 瀛樺偍妗跺璞″悕绉伴泦鍚�
+ * @return R
+ */
+ @SneakyThrows
+ @PostMapping("/remove-files")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R removeFiles(@RequestParam String fileNames) {
+ ossBuilder.template().removeFiles(Func.toStrList(fileNames));
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/SmsEndpoint.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/SmsEndpoint.java
new file mode 100644
index 0000000..e698f52
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/SmsEndpoint.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.endpoint;
+
+import com.vci.ubcs.resource.utils.SmsUtil;
+import com.vci.ubcs.resource.builder.sms.SmsBuilder;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springblade.core.sms.model.SmsCode;
+import org.springblade.core.sms.model.SmsData;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.Func;
+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.HashMap;
+import java.util.Map;
+
+/**
+ * 鐭俊鏈嶅姟绔偣
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/sms/endpoint")
+@Api(value = "鐭俊鏈嶅姟绔偣", tags = "鐭俊鏈嶅姟绔偣")
+public class SmsEndpoint {
+
+ /**
+ * 鐭俊鏈嶅姟鏋勫缓绫�
+ */
+ private final SmsBuilder smsBuilder;
+
+ //================================= 鐭俊鏈嶅姟鏍¢獙 =================================
+
+ /**
+ * 鐭俊楠岃瘉鐮佸彂閫�
+ *
+ * @param phone 鎵嬫満鍙�
+ */
+ @SneakyThrows
+ @PostMapping("/send-validate")
+ public R sendValidate(@RequestParam String phone) {
+ Map<String, String> params = SmsUtil.getValidateParams();
+ SmsCode smsCode = smsBuilder.template().sendValidate(new SmsData(params).setKey(SmsUtil.PARAM_KEY), phone);
+ return smsCode.isSuccess() ? R.data(smsCode, SmsUtil.SEND_SUCCESS) : R.fail(SmsUtil.SEND_FAIL);
+ }
+
+ /**
+ * 鏍¢獙鐭俊
+ *
+ * @param smsCode 鐭俊鏍¢獙淇℃伅
+ */
+ @SneakyThrows
+ @PostMapping("/validate-message")
+ public R validateMessage(SmsCode smsCode) {
+ boolean validate = smsBuilder.template().validateMessage(smsCode);
+ return validate ? R.success(SmsUtil.VALIDATE_SUCCESS) : R.fail(SmsUtil.VALIDATE_FAIL);
+ }
+
+ //========== 閫氱敤鐭俊鑷畾涔夊彂閫�(鏀寔鑷畾涔塸arams鍙傛暟浼犻��, 鎺ㄨ崘鐢ㄤ簬娴嬭瘯, 涓嶆帹鑽愮敤浜庣敓浜х幆澧�) ==========
+
+ /**
+ * 鍙戦�佷俊鎭�
+ *
+ * @param params 鑷畾涔夌煭淇″弬鏁�
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ */
+ @SneakyThrows
+ @PostMapping("/send-message")
+ public R sendMessage(@RequestParam String code, @RequestParam String params, @RequestParam String phones) {
+ SmsData smsData = new SmsData(JsonUtil.readMap(params, String.class, String.class));
+ return send(code, smsData, phones);
+ }
+
+ //========== 鎸囧畾鐭俊鏈嶅姟鍙戦��(鍙牴鎹悇绉嶅満鏅嚜瀹氭嫇灞曞畾鍒�, 鎹熷け鐏垫椿鎬у鍔犲畨鍏ㄦ��, 鎺ㄨ崘鐢ㄤ簬鐢熶骇鐜) ==========
+
+ /**
+ * 鐭俊閫氱煡
+ *
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ */
+ @SneakyThrows
+ @PostMapping("/send-notice")
+ public R sendNotice(@RequestParam String phones) {
+ Map<String, String> params = new HashMap<>(3);
+ params.put("title", "閫氱煡鏍囬");
+ params.put("content", "閫氱煡鍐呭");
+ params.put("date", "閫氱煡鏃堕棿");
+ SmsData smsData = new SmsData(params);
+ return send(smsData, phones);
+ }
+
+ /**
+ * 璁㈠崟閫氱煡
+ *
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ */
+ @SneakyThrows
+ @PostMapping("/send-order")
+ public R sendOrder(@RequestParam String phones) {
+ Map<String, String> params = new HashMap<>(3);
+ params.put("orderNo", "璁㈠崟缂栧彿");
+ params.put("packageNo", "蹇�掑崟鍙�");
+ params.put("user", "鏀朵欢浜�");
+ SmsData smsData = new SmsData(params);
+ return send(smsData, phones);
+ }
+
+ /**
+ * 浼氳閫氱煡
+ *
+ * @param phones 鎵嬫満鍙烽泦鍚�
+ */
+ @SneakyThrows
+ @PostMapping("/send-meeting")
+ public R sendMeeting(@RequestParam String phones) {
+ Map<String, String> params = new HashMap<>(2);
+ params.put("roomId", "浼氳瀹�");
+ params.put("topic", "浼氳涓婚");
+ params.put("date", "浼氳鏃堕棿");
+ SmsData smsData = new SmsData(params);
+ return send(smsData, phones);
+ }
+
+ //================================= 閫氱敤鐭俊鍙戦�佹帴鍙� =================================
+
+ /**
+ * 閫氱敤鐭俊鍙戦�佹帴鍙�
+ *
+ * @param smsData 鐭俊鍐呭
+ * @param phones 鎵嬫満鍙峰垪琛�
+ * @return 鏄惁鍙戦�佹垚鍔�
+ */
+ private R send(SmsData smsData, String phones) {
+ SmsResponse response = smsBuilder.template().sendMessage(smsData, Func.toStrList(phones));
+ return response.isSuccess() ? R.success(SmsUtil.SEND_SUCCESS) : R.fail(SmsUtil.SEND_FAIL);
+ }
+
+ /**
+ * 閫氱敤鐭俊鍙戦�佹帴鍙�
+ *
+ * @param code 璧勬簮缂栧彿
+ * @param smsData 鐭俊鍐呭
+ * @param phones 鎵嬫満鍙峰垪琛�
+ * @return 鏄惁鍙戦�佹垚鍔�
+ */
+ private R send(String code, SmsData smsData, String phones) {
+ SmsResponse response = smsBuilder.template(code).sendMessage(smsData, Func.toStrList(phones));
+ return response.isSuccess() ? R.success(SmsUtil.SEND_SUCCESS) : R.fail(SmsUtil.SEND_FAIL);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/feign/SmsClient.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/feign/SmsClient.java
new file mode 100644
index 0000000..ae9f441
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/feign/SmsClient.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.feign;
+
+import com.vci.ubcs.resource.utils.SmsUtil;
+import lombok.AllArgsConstructor;
+import com.vci.ubcs.resource.builder.sms.SmsBuilder;
+import org.springblade.core.sms.model.SmsCode;
+import org.springblade.core.sms.model.SmsData;
+import org.springblade.core.sms.model.SmsResponse;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 鐭俊杩滅▼璋冪敤鏈嶅姟
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class SmsClient implements ISmsClient {
+
+ private final SmsBuilder smsBuilder;
+
+ @Override
+ @PostMapping(SEND_MESSAGE)
+ public R<SmsResponse> sendMessage(String code, String params, String phones) {
+ SmsData smsData = new SmsData(JsonUtil.readMap(params, String.class, String.class));
+ SmsResponse response = smsBuilder.template(code).sendMessage(smsData, Func.toStrList(phones));
+ return R.data(response);
+ }
+
+ @Override
+ @PostMapping(SEND_VALIDATE)
+ public R sendValidate(String code, String phone) {
+ Map<String, String> params = SmsUtil.getValidateParams();
+ SmsCode smsCode = smsBuilder.template(code).sendValidate(new SmsData(params).setKey(SmsUtil.PARAM_KEY), phone);
+ return smsCode.isSuccess() ? R.data(smsCode, SmsUtil.SEND_SUCCESS) : R.fail(SmsUtil.SEND_FAIL);
+ }
+
+ @Override
+ @PostMapping(VALIDATE_MESSAGE)
+ public R validateMessage(String code, String id, String value, String phone) {
+ SmsCode smsCode = new SmsCode().setId(id).setValue(value).setPhone(phone);
+ boolean validate = smsBuilder.template(code).validateMessage(smsCode);
+ return validate ? R.success(SmsUtil.VALIDATE_SUCCESS) : R.fail(SmsUtil.VALIDATE_FAIL);
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/AttachMapper.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/AttachMapper.java
new file mode 100644
index 0000000..1d7dde5
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/AttachMapper.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Attach;
+import com.vci.ubcs.resource.vo.AttachVO;
+
+import java.util.List;
+
+/**
+ * 闄勪欢琛� Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface AttachMapper extends BaseMapper<Attach> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param attach
+ * @return
+ */
+ List<AttachVO> selectAttachPage(IPage page, AttachVO attach);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/OssMapper.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/OssMapper.java
new file mode 100644
index 0000000..3def676
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/OssMapper.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.vo.OssVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface OssMapper extends BaseMapper<Oss> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param oss
+ * @return
+ */
+ List<OssVO> selectOssPage(IPage page, OssVO oss);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/SmsMapper.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/SmsMapper.java
new file mode 100644
index 0000000..52a818b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/mapper/SmsMapper.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.mapper;
+
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.vo.SmsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 鐭俊閰嶇疆琛� Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface SmsMapper extends BaseMapper<Sms> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param sms
+ * @return
+ */
+ List<SmsVO> selectSmsPage(IPage page, SmsVO sms);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IAttachService.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IAttachService.java
new file mode 100644
index 0000000..03b2684
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IAttachService.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Attach;
+import com.vci.ubcs.resource.vo.AttachVO;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 闄勪欢琛� 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IAttachService extends BaseService<Attach> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param attach
+ * @return
+ */
+ IPage<AttachVO> selectAttachPage(IPage<AttachVO> page, AttachVO attach);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IOssService.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IOssService.java
new file mode 100644
index 0000000..70a3aaf
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/IOssService.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.vo.OssVO;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface IOssService extends BaseService<Oss> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param oss
+ * @return
+ */
+ IPage<OssVO> selectOssPage(IPage<OssVO> page, OssVO oss);
+
+ /**
+ * 鎻愪氦oss淇℃伅
+ *
+ * @param oss
+ * @return
+ */
+ boolean submit(Oss oss);
+
+ /**
+ * 鍚姩閰嶇疆
+ *
+ * @param id
+ * @return
+ */
+ boolean enable(Long id);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/ISmsService.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/ISmsService.java
new file mode 100644
index 0000000..7612a60
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/ISmsService.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.vo.SmsVO;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 鐭俊閰嶇疆琛� 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface ISmsService extends BaseService<Sms> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param sms
+ * @return
+ */
+ IPage<SmsVO> selectSmsPage(IPage<SmsVO> page, SmsVO sms);
+
+ /**
+ * 鎻愪氦oss淇℃伅
+ *
+ * @param oss
+ * @return
+ */
+ boolean submit(Sms oss);
+
+ /**
+ * 鍚姩閰嶇疆
+ *
+ * @param id
+ * @return
+ */
+ boolean enable(Long id);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/AttachServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/AttachServiceImpl.java
new file mode 100644
index 0000000..d742c7a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/AttachServiceImpl.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.resource.entity.Attach;
+import com.vci.ubcs.resource.mapper.AttachMapper;
+import com.vci.ubcs.resource.service.IAttachService;
+import com.vci.ubcs.resource.vo.AttachVO;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 闄勪欢琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class AttachServiceImpl extends BaseServiceImpl<AttachMapper, Attach> implements IAttachService {
+
+ @Override
+ public IPage<AttachVO> selectAttachPage(IPage<AttachVO> page, AttachVO attach) {
+ return page.setRecords(baseMapper.selectAttachPage(page, attach));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/OssServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/OssServiceImpl.java
new file mode 100644
index 0000000..9757cab
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/OssServiceImpl.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.mapper.OssMapper;
+import com.vci.ubcs.resource.service.IOssService;
+import com.vci.ubcs.resource.vo.OssVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+public class OssServiceImpl extends BaseServiceImpl<OssMapper, Oss> implements IOssService {
+
+ @Override
+ public IPage<OssVO> selectOssPage(IPage<OssVO> page, OssVO oss) {
+ return page.setRecords(baseMapper.selectOssPage(page, oss));
+ }
+
+ @Override
+ public boolean submit(Oss oss) {
+ LambdaQueryWrapper<Oss> lqw = Wrappers.<Oss>query().lambda()
+ .eq(Oss::getOssCode, oss.getOssCode()).eq(Oss::getTenantId, AuthUtil.getTenantId());
+ Long cnt = baseMapper.selectCount(Func.isEmpty(oss.getId()) ? lqw : lqw.notIn(Oss::getId, oss.getId()));
+ if (cnt > 0L) {
+ throw new ServiceException("褰撳墠璧勬簮缂栧彿宸插瓨鍦�!");
+ }
+ return this.saveOrUpdate(oss);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean enable(Long id) {
+ // 鍏堢鐢�
+ boolean temp1 = this.update(Wrappers.<Oss>update().lambda().set(Oss::getStatus, 1));
+ // 鍦ㄥ惎鐢�
+ boolean temp2 = this.update(Wrappers.<Oss>update().lambda().set(Oss::getStatus, 2).eq(Oss::getId, id));
+ return temp1 && temp2;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/SmsServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/SmsServiceImpl.java
new file mode 100644
index 0000000..eb0d555
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/service/impl/SmsServiceImpl.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.mapper.SmsMapper;
+import com.vci.ubcs.resource.service.ISmsService;
+import com.vci.ubcs.resource.vo.SmsVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 鐭俊閰嶇疆琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+public class SmsServiceImpl extends BaseServiceImpl<SmsMapper, Sms> implements ISmsService {
+
+ @Override
+ public IPage<SmsVO> selectSmsPage(IPage<SmsVO> page, SmsVO sms) {
+ return page.setRecords(baseMapper.selectSmsPage(page, sms));
+ }
+
+ @Override
+ public boolean submit(Sms sms) {
+ LambdaQueryWrapper<Sms> lqw = Wrappers.<Sms>query().lambda()
+ .eq(Sms::getSmsCode, sms.getSmsCode()).eq(Sms::getTenantId, AuthUtil.getTenantId());
+ Long cnt = baseMapper.selectCount(Func.isEmpty(sms.getId()) ? lqw : lqw.notIn(Sms::getId, sms.getId()));
+ if (cnt > 0L) {
+ throw new ServiceException("褰撳墠璧勬簮缂栧彿宸插瓨鍦�!");
+ }
+ return this.saveOrUpdate(sms);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean enable(Long id) {
+ // 鍏堢鐢�
+ boolean temp1 = this.update(Wrappers.<Sms>update().lambda().set(Sms::getStatus, 1));
+ // 鍦ㄥ惎鐢�
+ boolean temp2 = this.update(Wrappers.<Sms>update().lambda().set(Sms::getStatus, 2).eq(Sms::getId, id));
+ return temp1 && temp2;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/OssWrapper.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/OssWrapper.java
new file mode 100644
index 0000000..619e2af
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/OssWrapper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.wrapper;
+
+import com.vci.ubcs.resource.entity.Oss;
+import com.vci.ubcs.resource.vo.OssVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.enums.DictEnum;
+
+import java.util.Objects;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author BladeX
+ */
+public class OssWrapper extends BaseEntityWrapper<Oss, OssVO> {
+
+ public static OssWrapper build() {
+ return new OssWrapper();
+ }
+
+ @Override
+ public OssVO entityVO(Oss oss) {
+ OssVO ossVO = Objects.requireNonNull(BeanUtil.copy(oss, OssVO.class));
+ String categoryName = DictCache.getValue(DictEnum.OSS, oss.getCategory());
+ String statusName = DictCache.getValue(DictEnum.YES_NO, oss.getStatus());
+ ossVO.setCategoryName(categoryName);
+ ossVO.setStatusName(statusName);
+ return ossVO;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/SmsWrapper.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/SmsWrapper.java
new file mode 100644
index 0000000..03e334e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/wrapper/SmsWrapper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.resource.wrapper;
+
+import com.vci.ubcs.resource.entity.Sms;
+import com.vci.ubcs.resource.vo.SmsVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.enums.DictEnum;
+
+import java.util.Objects;
+
+/**
+ * 鐭俊閰嶇疆琛ㄥ寘瑁呯被,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author BladeX
+ */
+public class SmsWrapper extends BaseEntityWrapper<Sms, SmsVO> {
+
+ public static SmsWrapper build() {
+ return new SmsWrapper();
+ }
+
+ @Override
+ public SmsVO entityVO(Sms sms) {
+ SmsVO smsVO = Objects.requireNonNull(BeanUtil.copy(sms, SmsVO.class));
+ String categoryName = DictCache.getValue(DictEnum.SMS, sms.getCategory());
+ String statusName = DictCache.getValue(DictEnum.YES_NO, sms.getStatus());
+ smsVO.setCategoryName(categoryName);
+ smsVO.setStatusName(statusName);
+ return smsVO;
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-resource/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-resource/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-resource/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application-test.yml
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-resource/src/main/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/application.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/AttachMapper.xml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/AttachMapper.xml
new file mode 100644
index 0000000..c1eec08
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/AttachMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.resource.mapper.AttachMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="attachResultMap" type="com.vci.ubcs.resource.entity.Attach">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="link" property="link"/>
+ <result column="domain_url" property="domainUrl"/>
+ <result column="name" property="name"/>
+ <result column="original_name" property="originalName"/>
+ <result column="extension" property="extension"/>
+ <result column="attach_size" property="attachSize"/>
+ </resultMap>
+
+
+ <select id="selectAttachPage" resultMap="attachResultMap">
+ select * from blade_attach where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/OssMapper.xml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/OssMapper.xml
new file mode 100644
index 0000000..790d23b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/OssMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.resource.mapper.OssMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="ossResultMap" type="com.vci.ubcs.resource.entity.Oss">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="oss_code" property="ossCode"/>
+ <result column="category" property="category"/>
+ <result column="endpoint" property="endpoint"/>
+ <result column="access_key" property="accessKey"/>
+ <result column="secret_key" property="secretKey"/>
+ <result column="bucket_name" property="bucketName"/>
+ <result column="app_id" property="appId"/>
+ <result column="region" property="region"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+
+ <select id="selectOssPage" resultMap="ossResultMap">
+ select * from pl_sys_oss where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/SmsMapper.xml b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/SmsMapper.xml
new file mode 100644
index 0000000..ea9ebc2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/resources/mapper/SmsMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.resource.mapper.SmsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="smsResultMap" type="com.vci.ubcs.resource.entity.Sms">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="sms_code" property="smsCode"/>
+ <result column="template_id" property="templateId"/>
+ <result column="category" property="category"/>
+ <result column="access_key" property="accessKey"/>
+ <result column="secret_key" property="secretKey"/>
+ <result column="region_id" property="regionId"/>
+ <result column="sign_name" property="signName"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+
+ <select id="selectSmsPage" resultMap="smsResultMap">
+ select * from pl_sys_sms where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/BladeX/blade-ops/blade-swagger/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-swagger/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-swagger/Dockerfile
diff --git a/Source/UBCS/ubcs-ops/ubcs-swagger/pom.xml b/Source/UBCS/ubcs-ops/ubcs-swagger/pom.xml
new file mode 100644
index 0000000..0e24fcd
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-swagger/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-swagger</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.github.xiaoymin</groupId>
+ <artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/java/com/vci/ubcs/swagger/SwaggerApplication.java b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/java/com/vci/ubcs/swagger/SwaggerApplication.java
new file mode 100644
index 0000000..b368940
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/java/com/vci/ubcs/swagger/SwaggerApplication.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 com.vci.ubcs.swagger;
+
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * swagger鑱氬悎鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class SwaggerApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_SWAGGER_NAME, SwaggerApplication.class, args);
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-test.yml
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/src/main/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application.yml
diff --git a/Source/BladeX/blade-ops/blade-swagger/src/main/resources/banner.txt b/Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/banner.txt
similarity index 100%
rename from Source/BladeX/blade-ops/blade-swagger/src/main/resources/banner.txt
rename to Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/banner.txt
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/Dockerfile
diff --git "a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md" "b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..180c757
--- /dev/null
+++ "b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB\345\256\230\346\226\271\346\226\207\346\241\243.md"
@@ -0,0 +1,1740 @@
+## 銆婂垎甯冨紡浠诲姟璋冨害骞冲彴XXL-JOB銆�
+
+[](https://github.com/xuxueli/xxl-job/actions)
+[](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/)
+[](https://github.com/xuxueli/xxl-job/releases)
+[](https://github.com/xuxueli/xxl-job/)
+[](https://hub.docker.com/r/xuxueli/xxl-job-admin/)
+[](http://www.gnu.org/licenses/gpl-3.0.html)
+[](https://www.xuxueli.com/page/donate.html)
+
+[TOCM]
+
+[TOC]
+
+## 涓�銆佺畝浠�
+
+### 1.1 姒傝堪
+XXL-JOB鏄竴涓垎甯冨紡浠诲姟璋冨害骞冲彴锛屽叾鏍稿績璁捐鐩爣鏄紑鍙戣繀閫熴�佸涔犵畝鍗曘�佽交閲忕骇銆佹槗鎵╁睍銆傜幇宸插紑鏀炬簮浠g爜骞舵帴鍏ュ瀹跺叕鍙哥嚎涓婁骇鍝佺嚎锛屽紑绠卞嵆鐢ㄣ��
+
+### 1.2 绀惧尯浜ゆ祦
+- [绀惧尯浜ゆ祦](https://www.xuxueli.com/page/community.html)
+
+### 1.3 鐗规��
+- 1銆佺畝鍗曪細鏀寔閫氳繃Web椤甸潰瀵逛换鍔¤繘琛孋RUD鎿嶄綔锛屾搷浣滅畝鍗曪紝涓�鍒嗛挓涓婃墜锛�
+- 2銆佸姩鎬侊細鏀寔鍔ㄦ�佷慨鏀逛换鍔$姸鎬併�佸惎鍔�/鍋滄浠诲姟锛屼互鍙婄粓姝㈣繍琛屼腑浠诲姟锛屽嵆鏃剁敓鏁堬紱
+- 3銆佽皟搴︿腑蹇僅A锛堜腑蹇冨紡锛夛細璋冨害閲囩敤涓績寮忚璁★紝鈥滆皟搴︿腑蹇冣�濊嚜鐮旇皟搴︾粍浠跺苟鏀寔闆嗙兢閮ㄧ讲锛屽彲淇濊瘉璋冨害涓績HA锛�
+- 4銆佹墽琛屽櫒HA锛堝垎甯冨紡锛夛細浠诲姟鍒嗗竷寮忔墽琛岋紝浠诲姟"鎵ц鍣�"鏀寔闆嗙兢閮ㄧ讲锛屽彲淇濊瘉浠诲姟鎵цHA锛�
+- 5銆佹敞鍐屼腑蹇�: 鎵ц鍣ㄤ細鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐屼换鍔�, 璋冨害涓績灏嗕細鑷姩鍙戠幇娉ㄥ唽鐨勪换鍔″苟瑙﹀彂鎵ц銆傚悓鏃讹紝涔熸敮鎸佹墜鍔ㄥ綍鍏ユ墽琛屽櫒鍦板潃锛�
+- 6銆佸脊鎬ф墿瀹圭缉瀹癸細涓�鏃︽湁鏂版墽琛屽櫒鏈哄櫒涓婄嚎鎴栬�呬笅绾匡紝涓嬫璋冨害鏃跺皢浼氶噸鏂板垎閰嶄换鍔★紱
+- 7銆佽矾鐢辩瓥鐣ワ細鎵ц鍣ㄩ泦缇ら儴缃叉椂鎻愪緵涓板瘜鐨勮矾鐢辩瓥鐣ワ紝鍖呮嫭锛氱涓�涓�佹渶鍚庝竴涓�佽疆璇€�侀殢鏈恒�佷竴鑷存�ASH銆佹渶涓嶇粡甯镐娇鐢ㄣ�佹渶杩戞渶涔呮湭浣跨敤銆佹晠闅滆浆绉汇�佸繖纰岃浆绉荤瓑锛�
+- 8銆佹晠闅滆浆绉伙細浠诲姟璺敱绛栫暐閫夋嫨"鏁呴殰杞Щ"鎯呭喌涓嬶紝濡傛灉鎵ц鍣ㄩ泦缇や腑鏌愪竴鍙版満鍣ㄦ晠闅滐紝灏嗕細鑷姩Failover鍒囨崲鍒颁竴鍙版甯哥殑鎵ц鍣ㄥ彂閫佽皟搴﹁姹傘��
+- 9銆侀樆濉炲鐞嗙瓥鐣ワ細璋冨害杩囦簬瀵嗛泦鎵ц鍣ㄦ潵涓嶅強澶勭悊鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細鍗曟満涓茶锛堥粯璁わ級銆佷涪寮冨悗缁皟搴︺�佽鐩栦箣鍓嶈皟搴︼紱
+- 10銆佷换鍔¤秴鏃舵帶鍒讹細鏀寔鑷畾涔変换鍔¤秴鏃舵椂闂达紝浠诲姟杩愯瓒呮椂灏嗕細涓诲姩涓柇浠诲姟锛�
+- 11銆佷换鍔″け璐ラ噸璇曪細鏀寔鑷畾涔変换鍔″け璐ラ噸璇曟鏁帮紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱鍏朵腑鍒嗙墖浠诲姟鏀寔鍒嗙墖绮掑害鐨勫け璐ラ噸璇曪紱
+- 12銆佷换鍔″け璐ュ憡璀︼紱榛樿鎻愪緵閭欢鏂瑰紡澶辫触鍛婅锛屽悓鏃堕鐣欐墿灞曟帴鍙o紝鍙柟渚跨殑鎵╁睍鐭俊銆侀拤閽夌瓑鍛婅鏂瑰紡锛�
+- 13銆佸垎鐗囧箍鎾换鍔★細鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戦泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
+- 14銆佸姩鎬佸垎鐗囷細鍒嗙墖骞挎挱浠诲姟浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
+- 15銆佷簨浠惰Е鍙戯細闄や簡"Cron鏂瑰紡"鍜�"浠诲姟渚濊禆鏂瑰紡"瑙﹀彂浠诲姟鎵ц涔嬪锛屾敮鎸佸熀浜庝簨浠剁殑瑙﹀彂浠诲姟鏂瑰紡銆傝皟搴︿腑蹇冩彁渚涜Е鍙戜换鍔″崟娆℃墽琛岀殑API鏈嶅姟锛屽彲鏍规嵁涓氬姟浜嬩欢鐏垫椿瑙﹀彂銆�
+- 16銆佷换鍔¤繘搴︾洃鎺э細鏀寔瀹炴椂鐩戞帶浠诲姟杩涘害锛�
+- 17銆丷olling瀹炴椂鏃ュ織锛氭敮鎸佸湪绾挎煡鐪嬭皟搴︾粨鏋滐紝骞朵笖鏀寔浠olling鏂瑰紡瀹炴椂鏌ョ湅鎵ц鍣ㄨ緭鍑虹殑瀹屾暣鐨勬墽琛屾棩蹇楋紱
+- 18銆丟LUE锛氭彁渚沇eb IDE锛屾敮鎸佸湪绾垮紑鍙戜换鍔¢�昏緫浠g爜锛屽姩鎬佸彂甯冿紝瀹炴椂缂栬瘧鐢熸晥锛岀渷鐣ラ儴缃蹭笂绾跨殑杩囩▼銆傛敮鎸�30涓増鏈殑鍘嗗彶鐗堟湰鍥炴函銆�
+- 19銆佽剼鏈换鍔★細鏀寔浠LUE妯″紡寮�鍙戝拰杩愯鑴氭湰浠诲姟锛屽寘鎷琒hell銆丳ython銆丯odeJS銆丳HP銆丳owerShell绛夌被鍨嬭剼鏈�;
+- 20銆佸懡浠よ浠诲姟锛氬師鐢熸彁渚涢�氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
+- 21銆佷换鍔′緷璧栵細鏀寔閰嶇疆瀛愪换鍔′緷璧栵紝褰撶埗浠诲姟鎵ц缁撴潫涓旀墽琛屾垚鍔熷悗灏嗕細涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鐨勬墽琛�, 澶氫釜瀛愪换鍔$敤閫楀彿鍒嗛殧锛�
+- 22銆佷竴鑷存�э細鈥滆皟搴︿腑蹇冣�濋�氳繃DB閿佷繚璇侀泦缇ゅ垎甯冨紡璋冨害鐨勪竴鑷存��, 涓�娆′换鍔¤皟搴﹀彧浼氳Е鍙戜竴娆℃墽琛岋紱
+- 23銆佽嚜瀹氫箟浠诲姟鍙傛暟锛氭敮鎸佸湪绾块厤缃皟搴︿换鍔″叆鍙傦紝鍗虫椂鐢熸晥锛�
+- 24銆佽皟搴︾嚎绋嬫睜锛氳皟搴︾郴缁熷绾跨▼瑙﹀彂璋冨害杩愯锛岀‘淇濊皟搴︾簿纭墽琛岋紝涓嶈鍫靛锛�
+- 25銆佹暟鎹姞瀵嗭細璋冨害涓績鍜屾墽琛屽櫒涔嬮棿鐨勯�氳杩涜鏁版嵁鍔犲瘑锛屾彁鍗囪皟搴︿俊鎭畨鍏ㄦ�э紱
+- 26銆侀偖浠舵姤璀︼細浠诲姟澶辫触鏃舵敮鎸侀偖浠舵姤璀︼紝鏀寔閰嶇疆澶氶偖浠跺湴鍧�缇ゅ彂鎶ヨ閭欢锛�
+- 27銆佹帹閫乵aven涓ぎ浠撳簱: 灏嗕細鎶婃渶鏂扮ǔ瀹氱増鎺ㄩ�佸埌maven涓ぎ浠撳簱, 鏂逛究鐢ㄦ埛鎺ュ叆鍜屼娇鐢�;
+- 28銆佽繍琛屾姤琛細鏀寔瀹炴椂鏌ョ湅杩愯鏁版嵁锛屽浠诲姟鏁伴噺銆佽皟搴︽鏁般�佹墽琛屽櫒鏁伴噺绛夛紱浠ュ強璋冨害鎶ヨ〃锛屽璋冨害鏃ユ湡鍒嗗竷鍥撅紝璋冨害鎴愬姛鍒嗗竷鍥剧瓑锛�
+- 29銆佸叏寮傛锛氫换鍔¤皟搴︽祦绋嬪叏寮傛鍖栬璁″疄鐜帮紝濡傚紓姝ヨ皟搴︺�佸紓姝ヨ繍琛屻�佸紓姝ュ洖璋冪瓑锛屾湁鏁堝瀵嗛泦璋冨害杩涜娴侀噺鍓婂嘲锛岀悊璁轰笂鏀寔浠绘剰鏃堕暱浠诲姟鐨勮繍琛岋紱
+- 30銆佽法骞冲彴锛氬師鐢熸彁渚涢�氱敤HTTP浠诲姟Handler锛圔ean浠诲姟锛�"HttpJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
+- 31銆佸浗闄呭寲锛氳皟搴︿腑蹇冩敮鎸佸浗闄呭寲璁剧疆锛屾彁渚涗腑鏂囥�佽嫳鏂囦袱绉嶅彲閫夎瑷�锛岄粯璁や负涓枃锛�
+- 32銆佸鍣ㄥ寲锛氭彁渚涘畼鏂筪ocker闀滃儚锛屽苟瀹炴椂鏇存柊鎺ㄩ�乨ockerhub锛岃繘涓�姝ュ疄鐜颁骇鍝佸紑绠卞嵆鐢紱
+- 33銆佺嚎绋嬫睜闅旂锛氳皟搴︾嚎绋嬫睜杩涜闅旂鎷嗗垎锛屾參浠诲姟鑷姩闄嶇骇杩涘叆"Slow"绾跨▼姹狅紝閬垮厤鑰楀敖璋冨害绾跨▼锛屾彁楂樼郴缁熺ǔ瀹氭�э紱
+- 34銆佺敤鎴风鐞嗭細鏀寔鍦ㄧ嚎绠$悊绯荤粺鐢ㄦ埛锛屽瓨鍦ㄧ鐞嗗憳銆佹櫘閫氱敤鎴蜂袱绉嶈鑹诧紱
+- 35銆佹潈闄愭帶鍒讹細鎵ц鍣ㄧ淮搴﹁繘琛屾潈闄愭帶鍒讹紝绠$悊鍛樻嫢鏈夊叏閲忔潈闄愶紝鏅�氱敤鎴烽渶瑕佸垎閰嶆墽琛屽櫒鏉冮檺鍚庢墠鍏佽鐩稿叧鎿嶄綔锛�
+
+
+### 1.4 鍙戝睍
+浜�2015骞翠腑锛屾垜鍦╣ithub涓婂垱寤篨XL-JOB椤圭洰浠撳簱骞舵彁浜ょ涓�涓猚ommit锛岄殢涔嬭繘琛岀郴缁熺粨鏋勮璁★紝UI閫夊瀷锛屼氦浜掕璁♀�︹��
+
+浜�2015-11鏈堬紝XXL-JOB缁堜簬RELEASE浜嗙涓�涓ぇ鐗堟湰V1.0锛� 闅忓悗鎴戝皢涔嬪彂甯冨埌OSCHINA锛孹XL-JOB鍦∣SCHINA涓婅幏寰椾簡@绾㈣柉鐨勭儹闂ㄦ帹鑽愶紝鍚屾湡鍒嗗埆杈惧埌浜哋SCHINA鐨勨�滅儹闂ㄥ姩寮光�濇帓琛岀涓�鍜実it.oschina鐨勫紑婧愯蒋浠舵湀鐑害鎺掕绗竴锛屽湪姝ょ壒鍒劅璋㈢孩钖紝鎰熻阿澶у鐨勫叧娉ㄥ拰鏀寔銆�
+
+浜�2015-12鏈堬紝鎴戝皢XXL-JOB鍙戣〃鍒版垜鍙稿唴閮ㄧ煡璇嗗簱锛屽苟涓斿緱鍒板唴閮ㄥ悓浜嬭鍙��
+
+浜�2016-01鏈堬紝鎴戝徃灞曞紑XXL-JOB鐨勫唴閮ㄦ帴鍏ュ拰瀹氬埗宸ヤ綔锛屽湪姝ゆ劅璋㈣鏌愬拰灏规煇涓や綅鍚屼簨鐨勮础鐚紝鍚屾椂涔熸劅璋㈠唴閮ㄥ叾浠栫粰涓庡叧娉ㄤ笌鏀寔鐨勫悓浜嬨��
+
+浜�2017-05-13锛屽湪涓婃捣涓惧姙鐨� "[绗�62鏈熷紑婧愪腑鍥芥簮鍒涗細](https://www.oschina.net/event/2236961)" 鐨� "鏀剧爜杩囨潵" 鐜妭锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛屽彴涓嬩簲鐧句綅鍦ㄥ満瑙備紬鍙嶅搷鐑儓锛圼鍥炬枃鍥為【](https://www.oschina.net/question/2686220_2242120) 锛夈��
+
+浜�2017-10-22锛屽張鎷嶄簯 Open Talk 鑱斿悎 Spring Cloud 涓浗绀惧尯涓惧姙鐨� "[杩涘嚮鐨勫井鏈嶅姟瀹炴垬娲句笂娴风珯](https://opentalk.upyun.com/303.html)"锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛岀幇鍦鸿浼楀弽鍝嶇儹鐑堝苟鍦ㄤ細鍚庝笌XXL-JOB鐢ㄦ埛鐑儓璁ㄨ浜ゆ祦銆�
+
+浜�2017-12-11锛孹XL-JOB鏈夊垢鍙備細銆奫InfoQ ArchSummit鍏ㄧ悆鏋舵瀯甯堝嘲浼歖(http://bj2017.archsummit.com/)銆嬶紝骞惰鎷嶆媿璐锋灦鏋勬�荤洃"鏉ㄦ尝鑰佸笀"鍦ㄤ笓棰� "[寰湇鍔″師鐞嗐�佸熀纭�鏋舵瀯鍜屽紑婧愬疄璺礭(http://bj2017.archsummit.com/training/2)" 涓幇鍦轰粙缁嶃��
+
+浜�2017-12-18锛孹XL-JOB鍙備笌"[2017骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(http://www.oschina.net/project/top_cn_2017?sort=1)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑绾︿節鍗冧釜鍥戒骇寮�婧愰」鐩腑瑙掗�愶紝鏈�缁堣繘鍏ヤ簡鍓�30寮恒��
+
+浜�2018-01-15锛孹XL-JOB鍙備笌"[2017鐮佷簯鏈�鐏紑婧愰」鐩甝(https://www.oschina.net/news/92438/2017-mayun-top-50)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑绾﹀叚鍗冧簲鐧句釜鐮佷簯椤圭洰涓閫愶紝鏈�缁堣繘鍘讳簡鍓�20寮恒��
+
+浜�2018-04-14锛宨TechPlus鍦ㄤ笂娴蜂妇鍔炵殑 "[2018浜掕仈缃戝紑鍙戣�呭ぇ浼歖(http://www.itdks.com/eventlist/detail/2065)"锛屾垜鐧诲彴瀵筙XL-JOB鍋氫簡婕旇锛岀幇鍦鸿浼楀弽鍝嶇儹鐑堝苟鍦ㄤ細鍚庝笌XXL-JOB鐢ㄦ埛鐑儓璁ㄨ浜ゆ祦銆�
+
+浜�2018-05-27锛屽湪涓婃捣涓惧姙鐨� "[绗�75鏈熷紑婧愪腑鍥芥簮鍒涗細](https://www.oschina.net/event/2278742)" 鐨� "鏋舵瀯" 涓婚涓撳満锛屾垜鐧诲彴杩涜鈥滃熀纭�鏋舵瀯涓庝腑闂翠欢鍥捐氨鈥濅富棰樻紨璁诧紝鍙颁笅涓婂崈浣嶅湪鍦鸿浼楀弽鍝嶇儹鐑堬紙[鍥炬枃鍥為【](https://www.oschina.net/question/3802184_2280606) 锛夈��
+
+浜�2018-12-05锛孹XL-JOB鍙備笌"[2018骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(https://www.oschina.net/project/top_cn_2018?sort=1)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑涓�涓囧涓紑婧愰」鐩腑瑙掗�愶紝鏈�缁堟帓鍚嶇19鍚嶃��
+
+浜�2019-12-10锛孹XL-JOB鍙備笌"[2019骞村害鏈�鍙楁杩庝腑鍥藉紑婧愯蒋浠禲(https://www.oschina.net/project/top_cn_2019)"璇勬瘮锛屽湪褰撴椂宸插綍鍏ョ殑涓�涓囧涓紑婧愰」鐩腑瑙掗�愶紝鏈�缁堟帓鍚�"寮�鍙戞鏋跺拰鍩虹缁勪欢绫�"绗�9鍚嶃��
+
+> 鎴戝徃澶т紬鐐硅瘎鐩墠宸叉帴鍏XL-JOB锛屽唴閮ㄥ埆鍚嶃�奆errari銆嬶紙Ferrari鍩轰簬XXL-JOB鐨刅1.1鐗堟湰瀹氬埗鑰屾垚锛屾柊鎺ュ叆搴旂敤鎺ㄨ崘鍗囩骇鏈�鏂扮増鏈級銆�
+鎹渶鏂扮粺璁�, 鑷�2016-01-21鎺ュ叆鑷�2017-12-01鏈熼棿锛岃绯荤粺宸茶皟搴︾害100涓囨锛岃〃鐜颁紭寮傘�傛柊鎺ュ叆搴旂敤鎺ㄨ崘浣跨敤鏈�鏂扮増鏈紝鍥犱负缁忚繃鏁板崄涓増鏈殑鏇存柊锛岀郴缁熺殑浠诲姟妯″瀷銆乁I浜や簰妯″瀷浠ュ強搴曞眰璋冨害閫氳妯″瀷閮芥湁浜嗚緝澶х殑浼樺寲鍜屾彁鍗囷紝鏍稿績鍔熻兘鏇村姞绋冲畾楂樻晥銆�
+
+鑷充粖锛孹XL-JOB宸叉帴鍏ュ瀹跺叕鍙哥殑绾夸笂浜у搧绾匡紝鎺ュ叆鍦烘櫙濡傜數鍟嗕笟鍔★紝O2O涓氬姟鍜屽ぇ鏁版嵁浣滀笟绛夛紝鎴鏈�鏂扮粺璁℃椂闂翠负姝紝XXL-JOB宸叉帴鍏ョ殑鍏徃鍖呮嫭涓嶉檺浜庯細
+
+ - 1銆佸ぇ浼楃偣璇勩�愮編鍥㈢偣璇勩��
+ - 2銆佸北涓滃鑰岀綉缁滅鎶�鏈夐檺鍏徃锛�
+ - 3銆佸畨寰芥収閫氫簰鑱旂鎶�鏈夐檺鍏徃锛�
+ - 4銆佷汉浜鸿仛璐㈤噾鏈嶏紱
+ - 5銆佷笂娴锋妫d俊鎭鎶�鑲′唤鏈夐檺鍏徃
+ - 6銆佽繍婊℃弧銆愯繍婊℃弧銆�
+ - 7銆佺背鍏舵灄 (涓浗鍖�)銆愮背鍏舵灄銆�
+ - 8銆佸濡堣仈鐩�
+ - 9銆佷節妯卞ぉ涓嬶紙鍖椾含锛変俊鎭妧鏈湁闄愬叕鍙�
+ - 10銆佷竾鏅媺鏂鎶�鏈夐檺鍏徃銆愪竴鍔犳墜鏈恒��
+ - 11銆佷笂娴蜂嚎淇濆仴搴风鐞嗘湁闄愬叕鍙�
+ - 12銆佹捣灏旈Θ鍘ㄣ�愭捣灏斻��
+ - 13銆佹渤鍗楀ぇ绾㈠寘鐢靛瓙鍟嗗姟鏈夐檺鍏徃
+ - 14銆佹垚閮介『鐐圭鎶�鏈夐檺鍏徃
+ - 15銆佹繁鍦冲競鎬′簹閫�
+ - 16銆佹繁鍦抽害浜氫俊绉戞妧鑲′唤鏈夐檺鍏徃
+ - 17銆佷笂娴峰崥鑾圭鎶�淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 18銆佷腑鍥藉钩瀹夌鎶�鏈夐檺鍏徃銆愪腑鍥藉钩瀹夈��
+ - 19銆佹澀宸炵煡鏃朵俊鎭鎶�鏈夐檺鍏徃
+ - 20銆佸崥鑾圭鎶�锛堜笂娴凤級鏈夐檺鍏徃
+ - 21銆佹垚閮戒緷鑳借偂浠芥湁闄愯矗浠诲叕鍙�
+ - 22銆佹箹鍗楅珮闃抽�氳仈淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 23銆佹繁鍦冲競閭﹀痉鏂囧寲鍙戝睍鏈夐檺鍏徃
+ - 24銆佺寤洪樋鎬濆彲缃戠粶鏁欒偛鏈夐檺鍏徃
+ - 25銆佷紭淇′簩鎵嬭溅銆愪紭淇°��
+ - 26銆佷笂娴锋偁娓稿爞鎶曡祫鍙戝睍鑲′唤鏈夐檺鍏徃銆愭偁娓稿爞銆�
+ - 27銆佸寳浜矇绗旇摑澶╃鎶�鏈夐檺鍏徃
+ - 28銆佷腑绉�绉戞妧(鏃犻敗)鏈夐檺鍏徃
+ - 29銆佹姹夌┖蹇冪鎶�鏈夐檺鍏徃
+ - 30銆佸寳浜殏铓侀鏆寸鎶�鏈夐檺鍏徃
+ - 31銆佸洓宸濅簰瀹滆揪绉戞妧鏈夐檺鍏徃
+ - 32銆侀挶鍖呰浜戯紙鍖椾含锛夌鎶�鏈夐檺鍏徃
+ - 33銆侀噸搴嗘鎵嶉泦鍥�
+ - 34銆佸挭鍜曚簰鍔ㄥū涔愭湁闄愬叕鍙搞�愪腑鍥界Щ鍔ㄣ��
+ - 35銆佸寳浜浜﹁吘绉戞妧鏈夐檺鍏徃
+ - 36銆佸闀垮紩鎿�(鍖椾含)淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 37銆佸寳浜嫳璐濇�濈鎶�鏈夐檺鍏徃
+ - 38銆佸垰娉伴泦鍥�
+ - 39銆佹繁鍦虫嘲涔呬俊鎭郴缁熻偂浠芥湁闄愬叕鍙�
+ - 40銆侀殢琛屼粯鏀粯鏈夐檺鍏徃
+ - 41銆佸箍宸炵�氬啘缃戠粶绉戞妧鏈夐檺鍏徃
+ - 42銆佷韩鐐圭鎶�鏈夐檺鍏徃
+ - 43銆佹澀宸炴瘮鏅虹鎶�鏈夐檺鍏徃
+ - 44銆佸湷涓寸晫绾跨綉缁滅鎶�鏈夐檺鍏徃
+ - 45銆佸箍宸炵煡璇嗗湀缃戠粶绉戞妧鏈夐檺鍏徃
+ - 46銆佸浗瑾夊晢涓氫笂娴锋湁闄愬叕鍙�
+ - 47銆佹捣灏旀秷璐归噾铻嶆湁闄愬叕鍙革紝鍡ㄤ粯銆佸鑺便�愭捣灏斻��
+ - 48銆佸箍宸炲反鍥鹃瞾淇℃伅绉戞妧鏈夐檺鍏徃
+ - 49銆佹繁鍦冲競楣忔捣杩愮數瀛愭暟鎹氦鎹㈡湁闄愬叕鍙�
+ - 50銆佹繁鍦冲競浜氶鐢靛瓙鍟嗗姟鏈夐檺鍏徃
+ - 51銆佷笂娴疯叮鍖荤綉缁滄湁闄愬叕鍙�
+ - 52銆佽仛閲戣祫鏈�
+ - 53銆佸寳浜埗姣嶉偊缃戠粶绉戞妧鏈夐檺鍏徃
+ - 54銆佷腑灞卞厓璧蒋浠剁鎶�鏈夐檺鍏徃
+ - 55銆佷腑鍟嗘儬姘�(鍖椾含)鐢靛瓙鍟嗗姟鏈夐檺鍏徃
+ - 56銆佸嚡浜泦鍥�
+ - 57銆佸崕澶忕エ鑱旓紙鍖椾含锛夌鎶�鏈夐檺鍏徃
+ - 58銆佹媿鎷嶈捶銆愭媿鎷嶈捶銆�
+ - 59銆佸寳浜皻寰锋満鏋勫湪绾挎暀鑲叉湁闄愬叕鍙�
+ - 60銆佷换瀛愯鑲′唤鏈夐檺鍏徃
+ - 61銆佸寳浜椂鎬佺數瀛愬晢鍔℃湁闄愬叕鍙�
+ - 62銆佹繁鍦冲嵎鐨綉缁滅鎶�鏈夐檺鍏徃
+ - 63銆佸寳浜畨鍗氶�氱鎶�鑲′唤鏈夐檺鍏徃
+ - 64銆佹湭鏉ユ棤绾跨綉
+ - 65銆佸帵闂ㄧ摲绂х綉缁滄湁闄愬叕鍙�
+ - 66銆佸寳浜�掕摑绉戣蒋浠惰偂浠芥湁闄愬叕鍙�
+ - 67銆侀儜宸炲垱娴疯蒋浠剁鎶�鍏徃
+ - 68銆佸寳浜浗妲愪俊鎭鎶�鏈夐檺鍏徃
+ - 69銆佹氮娼蒋浠堕泦鍥�
+ - 70銆佸绔嬫亽(鍖椾含)淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 71銆佸箍宸炴瀬杩呭淇℃伅绉戞妧鏈夐檺鍏徃
+ - 72銆佽但鍩猴紙涓浗锛夐泦鍥㈣偂浠芥湁闄愬叕鍙�
+ - 73銆佹捣鎶曟眹
+ - 74銆佷笂娴锋鼎鐩婂垱涓氬鍖栧櫒绠$悊鑲′唤鏈夐檺鍏徃
+ - 75銆佹眽绾虫.锛堝帵闂級鏁版嵁鑲′唤鏈夐檺鍏徃
+ - 76銆佸畨淇′俊鎵�
+ - 77銆佸矚鍎掕储瀵�
+ - 78銆佹嵎閬撹蒋浠�
+ - 79銆佹箹鍖椾韩涓冪綉缁滅鎶�鏈夐檺鍏徃
+ - 80銆佹箹鍗楀垱鍙戠鎶�璐d换鏈夐檺鍏徃
+ - 81銆佹繁鍦冲皬瀹夋椂浠d簰鑱旂綉閲戣瀺鏈嶅姟鏈夐檺鍏徃
+ - 82銆佹箹鍖椾韩涓冪綉缁滅鎶�鏈夐檺鍏徃
+ - 83銆侀挶鍖呰浜�(鍖椾含)绉戞妧鏈夐檺鍏徃
+ - 84銆�360閲戣瀺銆�360銆�
+ - 85銆佹槗浼佺
+ - 86銆佹懇璐濓紙涓婃捣锛夌敓鐗╃鎶�鏈夐檺鍏徃
+ - 87銆佸箍涓滆姱鏅烘収绉戞妧鏈夐檺鍏徃
+ - 88銆佽仈鎯抽泦鍥€�愯仈鎯炽��
+ - 89銆佹�吔鍏呯數
+ - 90銆佽鍦嗘苯杞�
+ - 91銆佹繁鍦冲簵搴楅�氱鎶�閭鍏徃
+ - 92銆佷含涓溿�愪含涓溿��
+ - 93銆佺背搴勭悊璐�
+ - 94銆佸挅鍟℃槗铻�
+ - 95銆佹ⅶ妗愯瘹閫�
+ - 96銆佹亽澶у湴浜с�愭亽澶с��
+ - 97銆佹槅鏄庨緳鎱�
+ - 98銆佷笂娴锋订鐟惰蒋浠�
+ - 99銆佹槗淇°�愮綉鏄撱��
+ - 100銆侀摐鏉胯
+ - 101銆佹澀宸炰簯鑻ョ綉缁滅鎶�鏈夐檺鍏徃
+ - 102銆佺壒鐧炬儬锛堜腑鍥斤級鏈夐檺鍏徃
+ - 103銆佸父灞变紬鍗¤繍鍔涗緵搴旈摼绠$悊鏈夐檺鍏徃
+ - 104銆佹繁鍦崇珛鍒涚數瀛愬晢鍔℃湁闄愬叕鍙�
+ - 105銆佹澀宸炴櫤璇虹鎶�鑲′唤鏈夐檺鍏徃
+ - 106銆佸寳浜簯婕句俊鎭鎶�鏈夐檺鍏徃
+ - 107銆佹繁鍦冲競澶氶摱绉戞妧鏈夐檺鍏徃
+ - 108銆佷翰瀹濆疂
+ - 109銆佷笂娴峰崥鍗¤蒋浠剁鎶�鏈夐檺鍏徃
+ - 110銆佹櫤鎱ф爲鍦ㄧ嚎鏁欒偛骞冲彴
+ - 111銆佺背鏃忛噾铻�
+ - 112銆佸寳浜景妫笘绾�
+ - 113銆佷簯鍗楁粐鍖婚��
+ - 114銆佸箍宸炲競鍒嗛缃戠粶绉戞妧鏈夐檺璐d换鍏徃
+ - 115銆佹禉姹熷井鑳界鎶�鏈夐檺鍏徃
+ - 116銆佷笂娴烽Θ椋炵數瀛愬晢鍔℃湁闄愬叕鍙�
+ - 117銆佷笂娴峰疂灏婄數瀛愬晢鍔℃湁闄愬叕鍙�
+ - 118銆佺洿瀹㈤�氱鎶�鎶�鏈湁闄愬叕鍙�
+ - 119銆佺搴︾鎶�鏈夐檺鍏徃
+ - 120銆佷笂娴锋暟鎱х郴缁熸妧鏈湁闄愬叕鍙�
+ - 121銆佹垜鐨勫尰鑽綉
+ - 122銆佸绮夊钩鍙�
+ - 123銆侀搧鐢蹭簩鎵嬫満
+ - 124銆佷笂娴锋捣鏂板緱鏁版嵁鎶�鏈湁闄愬叕鍙�
+ - 125銆佹繁鍦冲競鐝嶇埍缃戜俊鎭妧鏈湁闄愬叕鍙搞�愮弽鐖辩綉銆�
+ - 126銆佸皬铚滆渹
+ - 127銆佸悏鑽f暟绉戞妧
+ - 128銆佷笂娴锋伜鍩熶俊鎭鎶�鏈夐檺鍏徃
+ - 129銆佸箍宸炶崝鏀綉缁滄湁闄愬叕鍙搞�愯崝鏋滷M銆�
+ - 130銆佹澀宸為棯瀹濈鎶�鏈夐檺鍏徃
+ - 131銆佸寳浜簰鑱旀柊缃戠鎶�鍙戝睍鏈夐檺鍏徃
+ - 132銆佽獕閬撶鎶�
+ - 133銆佸北瑗垮厗鐩涙埧鍦颁骇寮�鍙戞湁闄愬叕鍙�
+ - 134銆佸寳浜摑鐫块�氳揪绉戞妧鏈夐檺鍏徃
+ - 135銆佹湀浜皬灞嬶紙涓浗锛夋湁闄愬叕鍙搞�愯摑鏈堜寒銆�
+ - 136銆侀潚宀涘浗鐟炰俊鎭妧鏈湁闄愬叕鍙�
+ - 137銆佸崥闆呬簯璁$畻锛堝寳浜級鏈夐檺鍏徃
+ - 138銆佸崕娉拌瘉鍒搁娓瓙鍏徃
+ - 139銆佹澀宸炰笢鏂归�氫俊杞欢鎶�鏈湁闄愬叕鍙�
+ - 140銆佹姹夊崥鏅熷畨鍏ㄦ妧鏈偂浠芥湁闄愬叕鍙�
+ - 141銆佹繁鍦冲競鍏害浜哄拰绉戞妧鏈夐檺鍏徃
+ - 142銆佹澀宸炶叮缁寸鎶�鏈夐檺鍏徃锛堝皬褰憋級
+ - 143銆佸畞娉㈠崟杞︿緺涔嬪绉戞妧鏈夐檺鍏徃銆愬崟杞︿緺銆�
+ - 144銆佷竵涓佷簯搴蜂俊鎭鎶�锛堝寳浜級鏈夐檺鍏徃
+ - 145銆佷簯閽辫
+ - 146銆佸崡浜腑鍏村姏缁�
+ - 147銆佷笂娴风熃鏄岄�氫俊鎶�鏈湁闄愬叕鍙�
+ - 148銆佹繁鍦宠惃绉戠鎶�
+ - 149銆佷腑閫氭湇鍒涚珛绉戞妧鏈夐檺璐d换鍏徃
+ - 150銆佹繁鍦冲競瀵瑰簞绉戞妧鏈夐檺鍏徃
+ - 151銆佷笂璇佹墍淇℃伅缃戠粶鏈夐檺鍏徃
+ - 152銆佹澀宸炵伀鐑т簯绉戞妧鏈夐檺鍏徃銆愬绀肩邯銆�
+ - 153銆佸ぉ娲ラ潚鑺掓灉绉戞妧鏈夐檺鍏徃銆愯姃鏋滃ご鏉°��
+ - 154銆侀暱椋炲厜绾ゅ厜缂嗚偂浠芥湁闄愬叕鍙�
+ - 155銆佷笘绾嚡姝岋紙鍖椾含锛夊尰鐤楃鎶�鏈夐檺鍏徃
+ - 156銆佹禉姹熼湒姊撴帶鑲℃湁闄愬叕鍙�
+ - 157銆佹睙瑗胯吘椋炵綉缁滄妧鏈湁闄愬叕鍙�
+ - 158銆佸畨杩呯墿娴佹湁闄愬叕鍙�
+ - 159銆佽倝鑱旂綉
+ - 160銆佸寳浜寳骞挎褰卞箍鍛婁紶濯掓湁闄愬叕鍙�
+ - 161銆佷笂娴锋暟鎱х郴缁熸妧鏈湁闄愬叕鍙�
+ - 162銆佸ぇ蹇楀ぉ鎴�
+ - 163銆佷笂娴蜂簯楣婂尰
+ - 164銆佷笂娴蜂簯楣婂尰
+ - 165銆佸ⅷ杩瑰ぉ姘斻�愬ⅷ杩瑰ぉ姘斻��
+ - 166銆佷笂娴烽�告淇℃伅绉戞妧鏈夐檺鍏徃
+ - 167銆佹矃鏈嬬墿鑱�
+ - 168銆佹澀宸炴亽鐢熶簯铻嶇綉缁滅鎶�鏈夐檺鍏徃
+ - 169銆佺豢绫宠仈鍒�
+ - 170銆侀噸搴嗘槗瀹犵鎶�鏈夐檺鍏徃
+ - 171銆佸畨寰藉紩鑸鎶�鏈夐檺鍏徃锛堜箰鑱岀綉锛�
+ - 172銆佷笂娴锋暟鑱斿尰淇′紒涓氬彂灞曟湁闄愬叕鍙�
+ - 173銆佽壇褰缓鏉�
+ - 174銆佹澀宸炴眰鏄悓鍒涚綉缁滅鎶�鏈夐檺鍏徃
+ - 175銆佽嵎椹浗闄�
+ - 176銆佺偣闆囩綉
+ - 177銆佹繁鍦冲競鍗庢槦鍏夌數鎶�鏈湁闄愬叕鍙�
+ - 178銆佸帵闂ㄧ宸為拱杞欢绉戞妧鏈夐檺鍏徃
+ - 179銆佹繁鍦冲競鎷涘晢淇¤浜哄淇濋櫓鏈夐檺鍏徃
+ - 180銆佷笂娴峰ソ灞嬬綉淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 181銆佹捣淇¢泦鍥€�愭捣淇°��
+ - 182銆佷俊鍑屽彲淇℃伅绉戞妧锛堜笂娴凤級鏈夐檺鍏徃
+ - 183銆侀暱鏄ュぉ鎴愮鎶�鍙戝睍鏈夐檺鍏徃
+ - 184銆佺敤鍙嬮噾铻嶄俊鎭妧鏈偂浠芥湁闄愬叕鍙搞�愮敤鍙嬨��
+ - 185銆佸寳浜挅鍟℃槗铻嶆湁闄愬叕鍙�
+ - 186銆佸浗鎶曠憺閾跺熀閲戠鐞嗘湁闄愬叕鍙�
+ - 187銆佹檵鏉�(涓婃捣)缃戠粶淇℃伅鎶�鏈湁闄愬叕鍙�
+ - 188銆佹繁鍦冲競闅忔墜绉戞妧鏈夐檺鍏徃銆愰殢鎵嬭銆�
+ - 189銆佹繁鍦虫按鍔$鎶�鏈夐檺鍏徃
+ - 190銆佹槗浼佺銆愭槗浼佺銆�
+ - 191銆佸寳浜浜戠鎶�
+ - 192銆佸崡浜渹娉颁簰鑱旂綉绉戞妧鏈夐檺鍏徃
+ - 193銆佺珷楸肩洿鎾�
+ - 194銆佸澶氬绉戞妧
+ - 195銆佸ぉ娲ュ競绁炲窞鍟嗛緳绉戞妧鑲′唤鏈夐檺鍏徃
+ - 196銆佸博蹇冪鎶�
+ - 197銆佽溅鐮佺鎶�锛堝寳浜級鏈夐檺鍏徃
+ - 198銆佽吹闃冲競鎶曡祫鎺ц偂闆嗗洟
+ - 199銆佸悍鏃楄偂浠�
+ - 200銆侀緳鑵惧嚭琛�
+ - 201銆佹澀宸炲崕閲忚蒋浠�
+ - 202銆佸悎鑲ラ《宀尰鐤楃鎶�鏈夐檺鍏徃
+ - 203銆侀噸搴嗚〃杈惧紡绉戞妧鏈夐檺鍏徃
+ - 204銆佷笂娴风背閬撲俊鎭鎶�鏈夐檺鍏徃
+ - 205銆佸寳浜泭鍙嬩細绉戞妧鏈夐檺鍏徃
+ - 206銆佸寳浜瀺璐數瀛愬晢鍔℃湁闄愬叕鍙�
+ - 207銆佷腑鍥藉姹囦氦鏄撲腑蹇�
+ - 208銆佷腑鍥藉杩愯偂浠芥湁闄愬叕鍙�
+ - 209銆佷腑鍥戒笂娴锋檽鍦堟暀鑲茬鎶�鏈夐檺鍏徃
+ - 210銆佹櫘鑱旇蒋浠惰偂浠芥湁闄愬叕鍙�
+ - 211銆佸寳浜钃濊蒋浠惰偂浠芥湁闄愬叕鍙�
+ - 212銆佹睙鑻忔柉璇虹墿鑱旂鎶�鏈夐檺鍏徃
+ - 213銆佸寳浜悳鐙�-鐙愬弸銆愭悳鐙愩��
+ - 214銆佹柊澶ч檰缃戝晢閲戣瀺
+ - 215銆佸北涓滅鐮佷腑绋庝俊鎭鎶�鏈夐檺鍏徃
+ - 216銆佹渤鍗楁眹椤虹綉缁滅鎶�鏈夐檺鍏徃
+ - 217銆佸寳浜崕澶忔�濇簮绉戞妧鍙戝睍鏈夐檺鍏徃
+ - 218銆佷笂娴蜂笢鏅俊鎭鎶�鏈夐檺鍏徃
+ - 219銆佷笂娴烽福鍕冪綉缁滅鎶�鏈夐檺鍏徃
+ - 220銆佸箍涓滃鑻戞暀鑲插彂灞曟湁闄愬叕鍙�
+ - 221銆佹繁鍦冲己鏃剁鎶�鏈夐檺鍏徃
+ - 222銆佷笂娴蜂簯鐮轰俊鎭鎶�鏈夐檺鍏徃
+ - 223銆侀噸搴嗘剦瀹㈣缃戠粶鏈夐檺鍏徃
+ - 224銆佹暟浜�
+ - 225銆佸浗瀹剁數缃戣繍妫�閮�
+ - 226銆佹澀宸炴壘瓒�
+ - 227銆佹旦椴镐簯璁$畻绉戞妧鑲′唤鏈夐檺鍏徃
+ - 228銆佺澶ц椋炪�愮澶ц椋炪��
+ - 229銆佹澀宸炶瑁呯綉缁滅鎶�鏈夐檺鍏徃
+ - 230銆佸嵆鏈夊垎鏈熼噾铻�
+ - 231銆佹繁鍦虫硶鍙稿痉淇℃伅绉戞妧鏈夐檺鍏徃
+ - 232銆佷笂娴峰崥澶嶄俊鎭鎶�鏈夐檺鍏徃
+ - 233銆佹澀宸炰簯鍢変簯璁$畻鏈夐檺鍏徃
+ - 234銆佹湁瀹舵皯瀹�(鏈夊缇庡)
+ - 235銆佸寳浜耽閿�閫氳蒋浠舵妧鏈湁闄愬叕鍙�
+ - 236銆佹禉姹熻仛鏈夎储閲戣瀺鏈嶅姟澶栧寘鏈夐檺鍏徃
+ - 237銆佹槗鏃忔櫤姹�(鍖椾含)绉戞妧鏈夐檺鍏徃
+ - 238銆佸悎鑲ラ《宀尰鐤楃鎶�寮�鍙戞湁闄愬叕鍙�
+ - 239銆佽溅鑸瑰疂(娣卞湷)鏃彥绉戞妧鏈夐檺鍏徃)
+ - 240銆佸箍宸炲瘜鍔涘湴浜ф湁闄愬叕鍙�
+ - 241銆佹阿璇撅紙涓婃捣锛夋暀鑲茬鎶�鏈夐檺鍏徃
+ - 242銆佹姹夋蔼缁嗚優缃戠粶鎶�鏈湁闄愬叕鍙�
+ - 243銆佹澀宸炴湁浜戠鎶�鏈夐檺鍏徃
+ - 244銆佷笂娴蜂粰璞嗘櫤鑳芥満鍣ㄤ汉鏈夐檺鍏徃
+ - 245銆佹媺鍗℃媺鏀粯鑲′唤鏈夐檺鍏徃銆愭媺鍗℃媺銆�
+ - 246銆佽檸褰╁嵃鑹鸿偂浠芥湁闄愬叕鍙�
+ - 247銆佸寳浜暟寰鎶�鏈夐檺鍏徃
+ - 248銆佸箍涓滄櫤鐟炵鎶�鏈夐檺鍏徃
+ - 249銆佹壘閽㈢綉
+ - 250銆佷節鏈虹綉
+ - 251銆佹澀宸炶窇璺戠綉缁滅鎶�鏈夐檺鍏徃
+ - 252銆佹繁鍦虫湭鏉ヤ簯闆�
+ - 253銆佹澀宸炴瘡鏃ョ粰鍔涚鎶�鏈夐檺鍏徃
+ - 254銆佷笂娴烽綈鐘囦俊鎭鎶�鏈夐檺鍏徃
+ - 255銆佹淮婊村嚭琛屻�愭淮婊淬��
+ - 256銆佸悎鑲ヤ簯璇婁俊鎭鎶�鏈夐檺鍏徃
+ - 257銆佷簯鐭ュ0鏅鸿兘绉戞妧鑲′唤鏈夐檺鍏徃
+ - 258銆佸崡浜潶閬撶鎶�鏈夐檺鍏徃
+ - 259銆佺埍涔愪紭锛堜簩鎵嬪钩鍙帮級
+ - 260銆佺尗鐪肩數褰憋紙绉佹湁鍖栭儴缃诧級銆愮尗鐪肩數褰便��
+ - 261銆佺編鍥㈠ぇ璞★紙绉佹湁鍖栭儴缃诧級銆愮編鍥㈠ぇ璞°��
+ - 262銆佷綔涓氬府鏁欒偛绉戞妧锛堝寳浜級鏈夐檺鍏徃銆愪綔涓氬府銆�
+ - 263銆佸寳浜皬骞寸硶浜掕仈缃戞妧鏈湁闄愬叕鍙�
+ - 264銆佸北涓滅煩闃佃蒋浠跺伐绋嬭偂浠芥湁闄愬叕鍙�
+ - 265銆侀檿瑗垮浗椹胯蒋浠剁鎶�鏈夐檺鍏徃
+ - 266銆佸悰寮�淇℃伅绉戞妧
+ - 267銆佹潙楦熺綉缁滅鎶�鏈夐檺璐d换鍏徃
+ - 268銆佷簯鍗楀浗闄呬俊鎵樻湁闄愬叕鍙�
+ - 269銆侀噾鏅烘暀鑲�
+ - 270銆佺彔娴峰競绛戝发绉戞妧鏈夐檺鍏徃
+ - 271銆佷笂娴风櫨鑳滆蒋浠惰偂浠芥湁闄愬叕鍙�
+ - 272銆佹繁鍦冲競绉戠浘绉戞妧鏈夐檺鍏徃
+ - 273銆佸搱鍟板嚭琛屻�愬搱鍟般��
+ - 274銆侀�旇檸鍏昏溅銆愰�旇檸銆�
+ - 275銆佸崱鎬濅紭娲句汉鍔涜祫婧愰泦鍥�
+ - 276銆佸崡浜涓烘櫤鎱ц蒋浠剁鎶�鏈夐檺鍏徃
+ - 277銆佹澀宸炲煄甯傚ぇ鑴戠鎶�鏈夐檺鍏徃
+ - 278銆佺尶杈呭銆愮尶杈呭銆�
+ - 279銆佹礇闃冲仴鍒涚綉缁滅鎶�鏈夐檺鍏徃
+ - 280銆侀瓟鍔涜�虫湹
+ - 281銆佷嚎闃充俊閫�
+ - 282銆佷笂娴锋嫑椴ょ鎶�鏈夐檺鍏徃
+ - 283銆佸洓宸濆晢鏃呮棤蹇х鎶�鏈嶅姟鏈夐檺鍏徃
+ - 284銆乁U璺戣吙
+ - 285銆佸寳浜�佽檸璇佸埜銆愯�佽檸璇佸埜銆�
+ - 286銆佹偁娲荤渷鍚э紙鍖椾含锛夌綉缁滅鎶�鏈夐檺鍏徃
+ - 287銆丗5鏈潵鍟嗗簵
+ - 288銆佹繁鍦崇幆闃抽�氫俊鎭妧鏈湁闄愬叕鍙�
+ - 289銆侀仩鍌抽浕淇�
+ - 鈥︹��
+
+> 鏇村鎺ュ叆鐨勫叕鍙革紝娆㈣繋鍦� [鐧昏鍦板潃](https://github.com/xuxueli/xxl-job/issues/1 ) 鐧昏锛岀櫥璁颁粎浠呬负浜嗕骇鍝佹帹骞裤��
+
+娆㈣繋澶у鐨勫叧娉ㄥ拰浣跨敤锛孹XL-JOB涔熷皢鎷ユ姳鍙樺寲锛屾寔缁彂灞曘��
+
+
+### 1.5 涓嬭浇
+
+#### 鏂囨。鍦板潃
+
+- [涓枃鏂囨。](https://www.xuxueli.com/xxl-job/)
+- [English Documentation](https://www.xuxueli.com/xxl-job/en/)
+
+#### 婧愮爜浠撳簱鍦板潃
+
+婧愮爜浠撳簱鍦板潃 | Release Download
+--- | ---
+[https://github.com/xuxueli/xxl-job](https://github.com/xuxueli/xxl-job) | [Download](https://github.com/xuxueli/xxl-job/releases)
+[http://gitee.com/xuxueli0323/xxl-job](http://gitee.com/xuxueli0323/xxl-job) | [Download](http://gitee.com/xuxueli0323/xxl-job/releases)
+
+
+#### 涓ぎ浠撳簱鍦板潃
+
+```
+<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
+<dependency>
+ <groupId>com.xuxueli</groupId>
+ <artifactId>xxl-job-core</artifactId>
+ <version>${鏈�鏂扮ǔ瀹氱増鏈瑌</version>
+</dependency>
+```
+
+
+### 1.6 鐜
+- Maven3+
+- Jdk1.7+
+- Mysql5.7+
+
+
+## 浜屻�佸揩閫熷叆闂�
+
+### 2.1 鍒濆鍖栤�滆皟搴︽暟鎹簱鈥�
+璇蜂笅杞介」鐩簮鐮佸苟瑙e帇锛岃幏鍙� "璋冨害鏁版嵁搴撳垵濮嬪寲SQL鑴氭湰" 骞舵墽琛屽嵆鍙��
+
+"璋冨害鏁版嵁搴撳垵濮嬪寲SQL鑴氭湰" 浣嶇疆涓�:
+
+ /xxl-job/doc/db/tables_xxl_job.sql
+
+璋冨害涓績鏀寔闆嗙兢閮ㄧ讲锛岄泦缇ゆ儏鍐典笅鍚勮妭鐐瑰姟蹇呰繛鎺ュ悓涓�涓猰ysql瀹炰緥;
+
+濡傛灉mysql鍋氫富浠�,璋冨害涓績闆嗙兢鑺傜偣鍔″繀寮哄埗璧颁富搴�;
+
+### 2.2 缂栬瘧婧愮爜
+瑙e帇婧愮爜,鎸夌収maven鏍煎紡灏嗘簮鐮佸鍏DE, 浣跨敤maven杩涜缂栬瘧鍗冲彲锛屾簮鐮佺粨鏋勫涓嬶細
+
+ xxl-job-admin锛氳皟搴︿腑蹇�
+ xxl-job-core锛氬叕鍏变緷璧�
+ xxl-job-executor-samples锛氭墽琛屽櫒Sample绀轰緥锛堥�夋嫨鍚堥�傜殑鐗堟湰鎵ц鍣紝鍙洿鎺ヤ娇鐢紝涔熷彲浠ュ弬鑰冨叾骞跺皢鐜版湁椤圭洰鏀归�犳垚鎵ц鍣級
+ 锛歺xl-job-executor-sample-springboot锛歋pringboot鐗堟湰锛岄�氳繃Springboot绠$悊鎵ц鍣紝鎺ㄨ崘杩欑鏂瑰紡锛�
+ 锛歺xl-job-executor-sample-spring锛歋pring鐗堟湰锛岄�氳繃Spring瀹瑰櫒绠$悊鎵ц鍣紝姣旇緝閫氱敤锛�
+ 锛歺xl-job-executor-sample-frameless锛氭棤妗嗘灦鐗堟湰锛�
+ 锛歺xl-job-executor-sample-jfinal锛欽Final鐗堟湰锛岄�氳繃JFinal绠$悊鎵ц鍣紱
+ 锛歺xl-job-executor-sample-nutz锛歂utz鐗堟湰锛岄�氳繃Nutz绠$悊鎵ц鍣紱
+ 锛歺xl-job-executor-sample-jboot锛歫boot鐗堟湰锛岄�氳繃jboot绠$悊鎵ц鍣紱
+
+
+### 2.3 閰嶇疆閮ㄧ讲鈥滆皟搴︿腑蹇冣��
+
+ 璋冨害涓績椤圭洰锛歺xl-job-admin
+ 浣滅敤锛氱粺涓�绠$悊浠诲姟璋冨害骞冲彴涓婅皟搴︿换鍔★紝璐熻矗瑙﹀彂璋冨害鎵ц锛屽苟涓旀彁渚涗换鍔$鐞嗗钩鍙般��
+
+#### 姝ラ涓�锛氳皟搴︿腑蹇冮厤缃細
+璋冨害涓績閰嶇疆鏂囦欢鍦板潃锛�
+
+ /xxl-job/xxl-job-admin/src/main/resources/application.properties
+
+
+璋冨害涓績閰嶇疆鍐呭璇存槑锛�
+
+ ### 璋冨害涓績JDBC閾炬帴锛氶摼鎺ュ湴鍧�璇蜂繚鎸佸拰 2.1绔犺妭 鎵�鍒涘缓鐨勮皟搴︽暟鎹簱鐨勫湴鍧�涓�鑷�
+ spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
+ spring.datasource.username=root
+ spring.datasource.password=root_pwd
+ spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+
+ ### 鎶ヨ閭
+ spring.mail.host=smtp.qq.com
+ spring.mail.port=25
+ spring.mail.username=xxx@qq.com
+ spring.mail.password=xxx
+ spring.mail.properties.mail.smtp.auth=true
+ spring.mail.properties.mail.smtp.starttls.enable=true
+ spring.mail.properties.mail.smtp.starttls.required=true
+ spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
+
+ ### 璋冨害涓績閫氳TOKEN [閫夊~]锛氶潪绌烘椂鍚敤锛�
+ xxl.job.accessToken=
+
+ ### 璋冨害涓績鍥介檯鍖栭厤缃� [閫夊~]锛� 榛樿涓虹┖锛岃〃绀轰腑鏂�; "en" 琛ㄧず鑻辨枃锛�
+ xxl.job.i18n=
+
+ ## 璋冨害绾跨▼姹犳渶澶х嚎绋嬮厤缃�愬繀濉��
+ xxl.job.triggerpool.fast.max=200
+ xxl.job.triggerpool.slow.max=100
+
+ ### 璋冨害涓績鏃ュ織琛ㄦ暟鎹繚瀛樺ぉ鏁� [蹇呭~]锛氳繃鏈熸棩蹇楄嚜鍔ㄦ竻鐞嗭紱闄愬埗澶т簬绛変簬7鏃剁敓鏁堬紝鍚﹀垯, 濡�-1锛屽叧闂嚜鍔ㄦ竻鐞嗗姛鑳斤紱
+ xxl.job.logretentiondays=30
+
+
+
+#### 姝ラ浜岋細閮ㄧ讲椤圭洰锛�
+濡傛灉宸茬粡姝g‘杩涜涓婅堪閰嶇疆锛屽彲灏嗛」鐩紪璇戞墦鍖呴儴缃层��
+
+璋冨害涓績璁块棶鍦板潃锛歨ttp://localhost:8080/xxl-job-admin (璇ュ湴鍧�鎵ц鍣ㄥ皢浼氫娇鐢ㄥ埌锛屼綔涓哄洖璋冨湴鍧�)
+
+榛樿鐧诲綍璐﹀彿 "admin/123456", 鐧诲綍鍚庤繍琛岀晫闈㈠涓嬪浘鎵�绀恒��
+
+
+
+鑷虫鈥滆皟搴︿腑蹇冣�濋」鐩凡缁忛儴缃叉垚鍔熴��
+
+#### 姝ラ涓夛細璋冨害涓績闆嗙兢锛堝彲閫夛級锛�
+璋冨害涓績鏀寔闆嗙兢閮ㄧ讲锛屾彁鍗囪皟搴︾郴缁熷鐏惧拰鍙敤鎬с��
+
+璋冨害涓績闆嗙兢閮ㄧ讲鏃讹紝鍑犵偣瑕佹眰鍜屽缓璁細
+- DB閰嶇疆淇濇寔涓�鑷达紱
+- 闆嗙兢鏈哄櫒鏃堕挓淇濇寔涓�鑷达紙鍗曟満闆嗙兢蹇借锛夛紱
+- 寤鸿锛氭帹鑽愰�氳繃nginx涓鸿皟搴︿腑蹇冮泦缇ゅ仛璐熻浇鍧囪 锛屽垎閰嶅煙鍚嶃�傝皟搴︿腑蹇冭闂�佹墽琛屽櫒鍥炶皟閰嶇疆銆佽皟鐢ˋPI鏈嶅姟绛夋搷浣滃潎閫氳繃璇ュ煙鍚嶈繘琛屻��
+
+
+#### 鍏朵粬锛欴ocker 闀滃儚鏂瑰紡鎼缓璋冨害涓績锛�
+
+- 涓嬭浇闀滃儚
+
+```
+// Docker鍦板潃锛歨ttps://hub.docker.com/r/xuxueli/xxl-job-admin/ (寤鸿鎸囧畾鐗堟湰鍙�)
+docker pull xuxueli/xxl-job-admin
+```
+
+- 鍒涘缓瀹瑰櫒骞惰繍琛�
+
+```
+docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
+
+/**
+* 濡傞渶鑷畾涔� mysql 绛夐厤缃紝鍙�氳繃 "PARAMS" 鎸囧畾锛屽弬鏁版牸寮� RAMS="--key=value --key2=value2" 锛�
+* 閰嶇疆椤瑰弬鑰冩枃浠讹細/xxl-job/xxl-job-admin/src/main/Autowireds/application.properties
+*/
+docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
+```
+
+
+### 2.4 閰嶇疆閮ㄧ讲鈥滄墽琛屽櫒椤圭洰鈥�
+
+ 鈥滄墽琛屽櫒鈥濋」鐩細xxl-job-executor-sample-springboot (鎻愪緵澶氱鐗堟湰鎵ц鍣ㄤ緵閫夋嫨锛岀幇浠� springboot 鐗堟湰涓轰緥锛屽彲鐩存帴浣跨敤锛屼篃鍙互鍙傝�冨叾骞跺皢鐜版湁椤圭洰鏀归�犳垚鎵ц鍣�)
+ 浣滅敤锛氳礋璐f帴鏀垛�滆皟搴︿腑蹇冣�濈殑璋冨害骞舵墽琛岋紱鍙洿鎺ラ儴缃叉墽琛屽櫒锛屼篃鍙互灏嗘墽琛屽櫒闆嗘垚鍒扮幇鏈変笟鍔¢」鐩腑銆�
+
+#### 姝ラ涓�锛歮aven渚濊禆
+纭pom鏂囦欢涓紩鍏ヤ簡 "xxl-job-core" 鐨刴aven渚濊禆锛�
+
+#### 姝ラ浜岋細鎵ц鍣ㄩ厤缃�
+鎵ц鍣ㄩ厤缃紝閰嶇疆鏂囦欢鍦板潃锛�
+
+ /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/Autowireds/application.properties
+
+鎵ц鍣ㄩ厤缃紝閰嶇疆鍐呭璇存槑锛�
+
+ ### 璋冨害涓績閮ㄧ讲璺熷湴鍧� [閫夊~]锛氬璋冨害涓績闆嗙兢閮ㄧ讲瀛樺湪澶氫釜鍦板潃鍒欑敤閫楀彿鍒嗛殧銆傛墽琛屽櫒灏嗕細浣跨敤璇ュ湴鍧�杩涜"鎵ц鍣ㄥ績璺虫敞鍐�"鍜�"浠诲姟缁撴灉鍥炶皟"锛涗负绌哄垯鍏抽棴鑷姩娉ㄥ唽锛�
+ xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
+
+ ### 鎵ц鍣ˋppName [閫夊~]锛氭墽琛屽櫒蹇冭烦娉ㄥ唽鍒嗙粍渚濇嵁锛涗负绌哄垯鍏抽棴鑷姩娉ㄥ唽
+ xxl.job.executor.appname=xxl-job-executor-sample
+
+ ### 鎵ц鍣↖P [閫夊~]锛氶粯璁や负绌鸿〃绀鸿嚜鍔ㄨ幏鍙朓P锛屽缃戝崱鏃跺彲鎵嬪姩璁剧疆鎸囧畾IP锛岃IP涓嶄細缁戝畾Host浠呬綔涓洪�氳瀹炵敤锛涘湴鍧�淇℃伅鐢ㄤ簬 "鎵ц鍣ㄦ敞鍐�" 鍜� "璋冨害涓績璇锋眰骞惰Е鍙戜换鍔�"锛�
+ xxl.job.executor.ip=
+
+ ### 鎵ц鍣ㄧ鍙e彿 [閫夊~]锛氬皬浜庣瓑浜�0鍒欒嚜鍔ㄨ幏鍙栵紱榛樿绔彛涓�9999锛屽崟鏈洪儴缃插涓墽琛屽櫒鏃讹紝娉ㄦ剰瑕侀厤缃笉鍚屾墽琛屽櫒绔彛锛�
+ xxl.job.executor.port=9999
+
+ ### 鎵ц鍣ㄩ�氳TOKEN [閫夊~]锛氶潪绌烘椂鍚敤锛�
+ xxl.job.accessToken=
+
+ ### 鎵ц鍣ㄨ繍琛屾棩蹇楁枃浠跺瓨鍌ㄧ鐩樿矾寰� [閫夊~] 锛氶渶瑕佸璇ヨ矾寰勬嫢鏈夎鍐欐潈闄愶紱涓虹┖鍒欎娇鐢ㄩ粯璁よ矾寰勶紱
+ xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
+
+ ### 鎵ц鍣ㄦ棩蹇楁枃浠朵繚瀛樺ぉ鏁� [閫夊~] 锛� 杩囨湡鏃ュ織鑷姩娓呯悊, 闄愬埗鍊煎ぇ浜庣瓑浜�3鏃剁敓鏁�; 鍚﹀垯, 濡�-1, 鍏抽棴鑷姩娓呯悊鍔熻兘锛�
+ xxl.job.executor.logretentiondays=30
+
+
+#### 姝ラ涓夛細鎵ц鍣ㄧ粍浠堕厤缃�
+
+鎵ц鍣ㄧ粍浠讹紝閰嶇疆鏂囦欢鍦板潃锛�
+
+ /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
+
+鎵ц鍣ㄧ粍浠讹紝閰嶇疆鍐呭璇存槑锛�
+
+```
+@Bean
+public XxlJobSpringExecutor xxlJobExecutor() {
+ logger.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppName(appName);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+}
+```
+
+#### 姝ラ鍥涳細閮ㄧ讲鎵ц鍣ㄩ」鐩細
+濡傛灉宸茬粡姝g‘杩涜涓婅堪閰嶇疆锛屽彲灏嗘墽琛屽櫒椤圭洰缂栬瘧鎵撻儴缃诧紝绯荤粺鎻愪緵澶氱鎵ц鍣⊿ample绀轰緥椤圭洰锛岄�夋嫨鍏朵腑涓�涓嵆鍙紝鍚勮嚜鐨勯儴缃叉柟寮忓涓嬨��
+
+ xxl-job-executor-sample-springboot锛氶」鐩紪璇戞墦鍖呮垚springboot绫诲瀷鐨勫彲鎵цJAR鍖咃紝鍛戒护鍚姩鍗冲彲锛�
+ xxl-job-executor-sample-spring锛氶」鐩紪璇戞墦鍖呮垚WAR鍖咃紝骞堕儴缃插埌tomcat涓��
+ xxl-job-executor-sample-jfinal锛氬悓涓�
+ xxl-job-executor-sample-nutz锛氬悓涓�
+ xxl-job-executor-sample-jboot锛氬悓涓�
+
+
+鑷虫鈥滄墽琛屽櫒鈥濋」鐩凡缁忛儴缃茬粨鏉熴��
+
+#### 姝ラ浜旓細鎵ц鍣ㄩ泦缇わ紙鍙�夛級锛�
+鎵ц鍣ㄦ敮鎸侀泦缇ら儴缃诧紝鎻愬崌璋冨害绯荤粺鍙敤鎬э紝鍚屾椂鎻愬崌浠诲姟澶勭悊鑳藉姏銆�
+
+鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屽嚑鐐硅姹傚拰寤鸿锛�
+- 鎵ц鍣ㄥ洖璋冨湴鍧�锛坸xl.job.admin.addresses锛夐渶瑕佷繚鎸佷竴鑷达紱鎵ц鍣ㄦ牴鎹閰嶇疆杩涜鎵ц鍣ㄨ嚜鍔ㄦ敞鍐岀瓑鎿嶄綔銆�
+- 鍚屼竴涓墽琛屽櫒闆嗙兢鍐匒ppName锛坸xl.job.executor.appname锛夐渶瑕佷繚鎸佷竴鑷达紱璋冨害涓績鏍规嵁璇ラ厤缃姩鎬佸彂鐜颁笉鍚岄泦缇ょ殑鍦ㄧ嚎鎵ц鍣ㄥ垪琛ㄣ��
+
+
+### 2.5 寮�鍙戠涓�涓换鍔♀�淗ello World鈥�
+鏈ず渚嬩互鏂板缓涓�涓� 鈥淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔′负渚嬨�傛洿澶氭湁鍏充换鍔$殑璇︾粏閰嶇疆锛岃鏌ョ湅鈥滅珷鑺備笁锛氫换鍔¤瑙b�濄��
+锛� 鈥淕LUE妯″紡(Java)鈥濈殑鎵ц浠g爜鎵樼鍒拌皟搴︿腑蹇冨湪绾跨淮鎶わ紝鐩告瘮鈥淏ean妯″紡浠诲姟鈥濋渶瑕佸湪鎵ц鍣ㄩ」鐩紑鍙戦儴缃蹭笂绾匡紝鏇村姞绠�渚胯交閲忥級
+
+> 鍓嶆彁锛氳纭鈥滆皟搴︿腑蹇冣�濆拰鈥滄墽琛屽櫒鈥濋」鐩凡缁忔垚鍔熼儴缃插苟鍚姩锛�
+
+#### 姝ラ涓�锛氭柊寤轰换鍔★細
+鐧诲綍璋冨害涓績锛岀偣鍑讳笅鍥炬墍绀衡�滄柊寤轰换鍔♀�濇寜閽紝鏂板缓绀轰緥浠诲姟銆傜劧鍚庯紝鍙傝�冧笅闈㈡埅鍥句腑浠诲姟鐨勫弬鏁伴厤缃紝鐐瑰嚮淇濆瓨銆�
+
+
+
+
+
+
+#### 姝ラ浜岋細鈥淕LUE妯″紡(Java)鈥� 浠诲姟寮�鍙戯細
+璇风偣鍑讳换鍔″彸渚� 鈥淕LUE鈥� 鎸夐挳锛岃繘鍏� 鈥淕LUE缂栬緫鍣ㄥ紑鍙戠晫闈⑩�� 锛岃涓嬪浘銆傗�淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔¢粯璁ゅ凡缁忓垵濮嬪寲浜嗙ず渚嬩换鍔′唬鐮侊紝鍗虫墦鍗癏ello World銆�
+锛� 鈥淕LUE妯″紡(Java)鈥� 杩愯妯″紡鐨勪换鍔″疄闄呬笂鏄竴娈电户鎵胯嚜IJobHandler鐨凧ava绫讳唬鐮侊紝瀹冨湪鎵ц鍣ㄩ」鐩腑杩愯锛屽彲浣跨敤@Autowired/@Autowire娉ㄥ叆鎵ц鍣ㄩ噷涓殑鍏朵粬鏈嶅姟锛岃缁嗕粙缁嶈鏌ョ湅绗笁绔犺妭锛�
+
+
+
+
+
+#### 姝ラ涓夛細瑙﹀彂鎵ц锛�
+璇风偣鍑讳换鍔″彸渚� 鈥滄墽琛屸�� 鎸夐挳锛屽彲鎵嬪姩瑙﹀彂涓�娆′换鍔℃墽琛岋紙閫氬父鎯呭喌涓嬶紝閫氳繃閰嶇疆Cron琛ㄨ揪寮忚繘琛屼换鍔¤皟搴﹀嚭鍙戯級銆�
+
+#### 姝ラ鍥涳細鏌ョ湅鏃ュ織锛�
+璇风偣鍑讳换鍔″彸渚� 鈥滄棩蹇椻�� 鎸夐挳锛屽彲鍓嶅線浠诲姟鏃ュ織鐣岄潰鏌ョ湅浠诲姟鏃ュ織銆�
+鍦ㄤ换鍔℃棩蹇楃晫闈腑锛屽彲鏌ョ湅璇ヤ换鍔$殑鍘嗗彶璋冨害璁板綍浠ュ強姣忎竴娆¤皟搴︾殑浠诲姟璋冨害淇℃伅銆佹墽琛屽弬鏁板拰鎵ц淇℃伅銆傝繍琛屼腑鐨勪换鍔$偣鍑诲彸渚х殑鈥滄墽琛屾棩蹇椻�濇寜閽紝鍙繘鍏ユ棩蹇楁帶鍒跺彴鏌ョ湅瀹炴椂鎵ц鏃ュ織銆�
+
+
+
+鍦ㄦ棩蹇楁帶鍒跺彴锛屽彲浠olling鏂瑰紡瀹炴椂鏌ョ湅浠诲姟鍦ㄦ墽琛屽櫒涓�渚ц繍琛岃緭鍑虹殑鏃ュ織淇℃伅锛屽疄鏃剁洃鎺т换鍔¤繘搴︼紱
+
+
+
+## 涓夈�佷换鍔¤瑙�
+
+### 閰嶇疆灞炴�ц缁嗚鏄庯細
+
+ - 鎵ц鍣細浠诲姟鐨勭粦瀹氱殑鎵ц鍣紝浠诲姟瑙﹀彂璋冨害鏃跺皢浼氳嚜鍔ㄥ彂鐜版敞鍐屾垚鍔熺殑鎵ц鍣�, 瀹炵幇浠诲姟鑷姩鍙戠幇鍔熻兘; 鍙︿竴鏂归潰涔熷彲浠ユ柟渚跨殑杩涜浠诲姟鍒嗙粍銆傛瘡涓换鍔″繀椤荤粦瀹氫竴涓墽琛屽櫒, 鍙湪 "鎵ц鍣ㄧ鐞�" 杩涜璁剧疆;
+ - 浠诲姟鎻忚堪锛氫换鍔$殑鎻忚堪淇℃伅锛屼究浜庝换鍔$鐞嗭紱
+ - 璺敱绛栫暐锛氬綋鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屾彁渚涗赴瀵岀殑璺敱绛栫暐锛屽寘鎷紱
+ FIRST锛堢涓�涓級锛氬浐瀹氶�夋嫨绗竴涓満鍣紱
+ LAST锛堟渶鍚庝竴涓級锛氬浐瀹氶�夋嫨鏈�鍚庝竴涓満鍣紱
+ ROUND锛堣疆璇級锛氾紱
+ RANDOM锛堥殢鏈猴級锛氶殢鏈洪�夋嫨鍦ㄧ嚎鐨勬満鍣紱
+ CONSISTENT_HASH锛堜竴鑷存�ASH锛夛細姣忎釜浠诲姟鎸夌収Hash绠楁硶鍥哄畾閫夋嫨鏌愪竴鍙版満鍣紝涓旀墍鏈変换鍔″潎鍖�鏁e垪鍦ㄤ笉鍚屾満鍣ㄤ笂銆�
+ LEAST_FREQUENTLY_USED锛堟渶涓嶇粡甯镐娇鐢級锛氫娇鐢ㄩ鐜囨渶浣庣殑鏈哄櫒浼樺厛琚�変妇锛�
+ LEAST_RECENTLY_USED锛堟渶杩戞渶涔呮湭浣跨敤锛夛細鏈�涔呬负浣跨敤鐨勬満鍣ㄤ紭鍏堣閫変妇锛�
+ FAILOVER锛堟晠闅滆浆绉伙級锛氭寜鐓ч『搴忎緷娆¤繘琛屽績璺虫娴嬶紝绗竴涓績璺虫娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
+ BUSYOVER锛堝繖纰岃浆绉伙級锛氭寜鐓ч『搴忎緷娆¤繘琛岀┖闂叉娴嬶紝绗竴涓┖闂叉娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
+ SHARDING_BROADCAST(鍒嗙墖骞挎挱)锛氬箍鎾Е鍙戝搴旈泦缇や腑鎵�鏈夋満鍣ㄦ墽琛屼竴娆′换鍔★紝鍚屾椂绯荤粺鑷姩浼犻�掑垎鐗囧弬鏁帮紱鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
+
+ - Cron锛氳Е鍙戜换鍔℃墽琛岀殑Cron琛ㄨ揪寮忥紱
+ - 杩愯妯″紡锛�
+ BEAN妯″紡锛氫换鍔′互JobHandler鏂瑰紡缁存姢鍦ㄦ墽琛屽櫒绔紱闇�瑕佺粨鍚� "JobHandler" 灞炴�у尮閰嶆墽琛屽櫒涓换鍔★紱
+ GLUE妯″紡(Java)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈电户鎵胯嚜IJobHandler鐨凧ava绫讳唬鐮佸苟 "groovy" 婧愮爜鏂瑰紡缁存姢锛屽畠鍦ㄦ墽琛屽櫒椤圭洰涓繍琛岋紝鍙娇鐢ˊAutowired/@Autowire娉ㄥ叆鎵ц鍣ㄩ噷涓殑鍏朵粬鏈嶅姟锛�
+ GLUE妯″紡(Shell)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "shell" 鑴氭湰锛�
+ GLUE妯″紡(Python)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "python" 鑴氭湰锛�
+ GLUE妯″紡(PHP)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "php" 鑴氭湰锛�
+ GLUE妯″紡(NodeJS)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "nodejs" 鑴氭湰锛�
+ GLUE妯″紡(PowerShell)锛氫换鍔′互婧愮爜鏂瑰紡缁存姢鍦ㄨ皟搴︿腑蹇冿紱璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "PowerShell" 鑴氭湰锛�
+ - JobHandler锛氳繍琛屾ā寮忎负 "BEAN妯″紡" 鏃剁敓鏁堬紝瀵瑰簲鎵ц鍣ㄤ腑鏂板紑鍙戠殑JobHandler绫烩�淍JobHandler鈥濇敞瑙h嚜瀹氫箟鐨剉alue鍊硷紱
+ - 闃诲澶勭悊绛栫暐锛氳皟搴﹁繃浜庡瘑闆嗘墽琛屽櫒鏉ヤ笉鍙婂鐞嗘椂鐨勫鐞嗙瓥鐣ワ紱
+ 鍗曟満涓茶锛堥粯璁わ級锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝璋冨害璇锋眰杩涘叆FIFO闃熷垪骞朵互涓茶鏂瑰紡杩愯锛�
+ 涓㈠純鍚庣画璋冨害锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝鍙戠幇鎵ц鍣ㄥ瓨鍦ㄨ繍琛岀殑璋冨害浠诲姟锛屾湰娆¤姹傚皢浼氳涓㈠純骞舵爣璁颁负澶辫触锛�
+ 瑕嗙洊涔嬪墠璋冨害锛氳皟搴﹁姹傝繘鍏ュ崟鏈烘墽琛屽櫒鍚庯紝鍙戠幇鎵ц鍣ㄥ瓨鍦ㄨ繍琛岀殑璋冨害浠诲姟锛屽皢浼氱粓姝㈣繍琛屼腑鐨勮皟搴︿换鍔″苟娓呯┖闃熷垪锛岀劧鍚庤繍琛屾湰鍦拌皟搴︿换鍔★紱
+ - 瀛愪换鍔★細姣忎釜浠诲姟閮芥嫢鏈変竴涓敮涓�鐨勪换鍔D(浠诲姟ID鍙互浠庝换鍔″垪琛ㄨ幏鍙�)锛屽綋鏈换鍔℃墽琛岀粨鏉熷苟涓旀墽琛屾垚鍔熸椂锛屽皢浼氳Е鍙戝瓙浠诲姟ID鎵�瀵瑰簲鐨勪换鍔$殑涓�娆′富鍔ㄨ皟搴︺��
+ - 浠诲姟瓒呮椂鏃堕棿锛氭敮鎸佽嚜瀹氫箟浠诲姟瓒呮椂鏃堕棿锛屼换鍔¤繍琛岃秴鏃跺皢浼氫富鍔ㄤ腑鏂换鍔★紱
+ - 澶辫触閲嶈瘯娆℃暟锛涙敮鎸佽嚜瀹氫箟浠诲姟澶辫触閲嶈瘯娆℃暟锛屽綋浠诲姟澶辫触鏃跺皢浼氭寜鐓ч璁剧殑澶辫触閲嶈瘯娆℃暟涓诲姩杩涜閲嶈瘯锛�
+ - 鎶ヨ閭欢锛氫换鍔¤皟搴﹀け璐ユ椂閭欢閫氱煡鐨勯偖绠卞湴鍧�锛屾敮鎸侀厤缃閭鍦板潃锛岄厤缃涓偖绠卞湴鍧�鏃剁敤閫楀彿鍒嗛殧锛�
+ - 璐熻矗浜猴細浠诲姟鐨勮礋璐d汉锛�
+ - 鎵ц鍙傛暟锛氫换鍔℃墽琛屾墍闇�鐨勫弬鏁帮紱
+
+
+### 3.1 BEAN妯″紡锛堢被褰㈠紡锛�
+
+鍩轰簬绫荤殑Bean妯″紡寮�鍙戞柟寮忥紝杩欐槸姣旇緝鍘熷鐨勪竴绉嶅紑鍙戞柟寮忋��
+
+- 浼樼偣锛氬吋瀹规�уソ銆佷笉闄愬埗椤圭洰鐜锛屽嵆浣挎槸鏃犳鏋堕」鐩紝濡俶ain鏂规硶鐩存帴鍚姩鐨勯」鐩篃鍙互鎻愪緵鏀寔锛屽彲浠ュ弬鑰冪ず渚嬮」鐩� "xxl-job-executor-sample-frameless"锛�
+- 缂虹偣锛氭瘡涓换鍔¢渶瑕佸崰鐢ㄤ竴涓狫ava绫伙紝姣旇緝娴垂璧勬簮锛涜�屼笖锛屼笉鏀寔鑷姩鎵弿浠诲姟娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒锛岄渶瑕佹墜鍔ㄦ敞鍏ャ��
+
+#### 姝ラ涓�锛氭墽琛屽櫒椤圭洰涓紝寮�鍙慗ob绫伙細
+
+ - 1銆佸紑鍙戜竴涓户鎵胯嚜"com.xxl.job.core.handler.IJobHandler"鐨凧obHandler绫汇��
+ - 2銆佹墜鍔ㄩ�氳繃濡備笅鏂瑰紡娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒銆�
+ ```
+ XxlJobExecutor.registJobHandler("demoJobHandler", new DemoJobHandler());
+ ```
+
+#### 姝ラ浜岋細璋冨害涓績锛屾柊寤鸿皟搴︿换鍔�
+鍚庣画姝ラ鍜� "3.2 BEAN妯″紡锛堟柟娉曞舰寮忥級"涓�鑷达紝鍙互鍓嶅線鍙傝�冦��
+
+
+### 3.2 BEAN妯″紡锛堟柟娉曞舰寮忥級
+
+鍩轰簬鏂规硶鐨凚ean妯″紡寮�鍙戞柟寮忥紝杩欐槸姣旇緝鎺ㄨ崘鐨勫紑鍙戞柟寮忋��
+
+- 浼樼偣锛氭瘡涓换鍔″彧闇�瑕佸紑鍙戜竴涓柟娉曪紝娣诲姞"@XxlJob"娉ㄨВ鍗冲彲銆傛洿鍔犳柟渚裤�佸揩閫熴�備細鑷姩鎵弿浠诲姟娉ㄥ叆鍒版墽琛屽櫒瀹瑰櫒銆�
+- 缂虹偣锛氳姹係pring瀹瑰櫒鐜锛�
+
+>鍩轰簬鏂规硶寮�鍙戠殑浠诲姟锛屽簳灞備細鐢熸垚JobHandler浠g悊锛屽拰鍩轰簬绫荤殑鏂瑰紡涓�鏍凤紝浠诲姟涔熶細浠obHandler鐨勫舰寮忓瓨鍦ㄤ簬鎵ц鍣ㄤ换鍔″鍣ㄤ腑銆�
+
+#### 姝ラ涓�锛氭墽琛屽櫒椤圭洰涓紝寮�鍙慗ob鏂规硶锛�
+
+ - 1銆佸湪Spring Bean瀹炰緥涓紝寮�鍙慗ob鏂规硶锛屾柟寮忔牸寮忚姹備负 "public ReturnT<String> execute(String param)"
+ - 2銆佷负Job鏂规硶娣诲姞娉ㄨВ "@XxlJob(value="鑷畾涔塲obhandler鍚嶇О", init = "JobHandler鍒濆鍖栨柟娉�", destroy = "JobHandler閿�姣佹柟娉�")"锛屾敞瑙alue鍊煎搴旂殑鏄皟搴︿腑蹇冩柊寤轰换鍔$殑JobHandler灞炴�х殑鍊笺��
+ - 3銆佹墽琛屾棩蹇楋細闇�瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛�
+
+```
+// 鍙弬鑰僑ample绀轰緥鎵ц鍣ㄤ腑鐨� "com.xxl.job.executor.service.jobhandler.SampleXxlJob" 锛屽涓嬶細
+@XxlJob("demoJobHandler")
+public ReturnT<String> execute(String param) {
+
+ XxlJobLogger.log("hello world.");
+ return ReturnT.SUCCESS;
+}
+```
+
+#### 姝ラ浜岋細璋冨害涓績锛屾柊寤鸿皟搴︿换鍔�
+鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "BEAN妯″紡"锛孞obHandler灞炴�у~鍐欎换鍔℃敞瑙b�淍XxlJob鈥濅腑瀹氫箟鐨勫�硷紱
+
+
+
+#### 鍘熺敓鍐呯疆Bean妯″紡浠诲姟
+涓烘柟渚跨敤鎴峰弬鑰冧笌蹇�熷疄鐢紝绀轰緥鎵ц鍣ㄥ唴鍘熺敓鎻愪緵澶氫釜Bean妯″紡浠诲姟Handler锛屽彲浠ョ洿鎺ラ厤缃疄鐢紝濡備笅锛�
+
+- demoJobHandler锛氱畝鍗曠ず渚嬩换鍔★紝浠诲姟鍐呴儴妯℃嫙鑰楁椂浠诲姟閫昏緫锛岀敤鎴峰彲鍦ㄧ嚎浣撻獙Rolling Log绛夊姛鑳斤紱
+- shardingJobHandler锛氬垎鐗囩ず渚嬩换鍔★紝浠诲姟鍐呴儴妯℃嫙澶勭悊鍒嗙墖鍙傛暟锛屽彲鍙傝�冪啛鎮夊垎鐗囦换鍔★紱
+- httpJobHandler锛氶�氱敤HTTP浠诲姟Handler锛涗笟鍔℃柟鍙渶瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
+- commandJobHandler锛氶�氱敤鍛戒护琛屼换鍔andler锛涗笟鍔℃柟鍙渶瑕佹彁渚涘懡浠よ鍗冲彲锛涘 鈥減wd鈥濆懡浠わ紱
+
+
+### 3.3 GLUE妯″紡(Java)
+浠诲姟浠ユ簮鐮佹柟寮忕淮鎶ゅ湪璋冨害涓績锛屾敮鎸侀�氳繃Web IDE鍦ㄧ嚎鏇存柊锛屽疄鏃剁紪璇戝拰鐢熸晥锛屽洜姝や笉闇�瑕佹寚瀹欽obHandler銆傚紑鍙戞祦绋嬪涓嬶細
+
+#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟锛�
+鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Java)"锛�
+
+
+
+#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
+閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
+
+鐗堟湰鍥炴函鍔熻兘锛堟敮鎸�30涓増鏈殑鐗堟湰鍥炴函锛夛細鍦℅LUE浠诲姟鐨刉eb IDE鐣岄潰锛岄�夋嫨鍙充笂瑙掍笅鎷夋鈥滅増鏈洖婧�濓紝浼氬垪鍑鸿GLUE鐨勬洿鏂板巻鍙诧紝閫夋嫨鐩稿簲鐗堟湰鍗冲彲鏄剧ず璇ョ増鏈唬鐮侊紝淇濆瓨鍚嶨LUE浠g爜鍗冲洖閫�鍒板搴旂殑鍘嗗彶鐗堟湰锛�
+
+
+
+### 3.4 GLUE妯″紡(Shell)
+
+#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
+鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Shell)"锛�
+
+#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
+閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
+
+璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "shell" 鑴氭湰锛�
+
+
+
+### 3.4 GLUE妯″紡(Python)
+
+#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
+鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(Python)"锛�
+
+#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
+閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
+
+璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "python" 鑴氭湰锛�
+
+
+
+### 3.5 GLUE妯″紡(NodeJS)
+
+#### 姝ラ涓�锛氳皟搴︿腑蹇冿紝鏂板缓璋冨害浠诲姟
+鍙傝�冧笂鏂団�滈厤缃睘鎬ц缁嗚鏄庘�濆鏂板缓鐨勪换鍔¤繘琛屽弬鏁伴厤缃紝杩愯妯″紡閫変腑 "GLUE妯″紡(NodeJS)"锛�
+
+#### 姝ラ浜岋細寮�鍙戜换鍔′唬鐮侊細
+閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戯紙涔熷彲浠ュ湪IDE涓紑鍙戝畬鎴愬悗锛屽鍒剁矘璐村埌缂栬緫涓級銆�
+
+璇ユā寮忕殑浠诲姟瀹為檯涓婃槸涓�娈� "nodeJS" 鑴氭湰锛�
+
+### 3.6 GLUE妯″紡(PHP)
+鍚屼笂
+
+### 3.7 GLUE妯″紡(PowerShell)
+鍚屼笂
+
+
+
+## 鍥涖�佹搷浣滄寚鍗�
+
+### 4.1 閰嶇疆鎵ц鍣�
+鐐瑰嚮杩涘叆"鎵ц鍣ㄧ鐞�"鐣岄潰, 濡備笅鍥�:
+
+
+ 1銆�"璋冨害涓績OnLine:"鍙充晶鏄剧ず鍦ㄧ嚎鐨�"璋冨害涓績"鍒楄〃, 浠诲姟鎵ц缁撴潫鍚�, 灏嗕細浠ailover鐨勬ā寮忚繘琛屽洖璋冭皟搴︿腑蹇冮�氱煡鎵ц缁撴灉, 閬垮厤鍥炶皟鐨勫崟鐐归闄�;
+ 2銆�"鎵ц鍣ㄥ垪琛�" 涓樉绀哄湪绾跨殑鎵ц鍣ㄥ垪琛�, 鍙�氳繃"OnLine 鏈哄櫒"鏌ョ湅瀵瑰簲鎵ц鍣ㄧ殑闆嗙兢鏈哄櫒銆�
+
+鐐瑰嚮鎸夐挳 "+鏂板鎵ц鍣�" 寮规濡備笅鍥�, 鍙柊澧炴墽琛屽櫒閰嶇疆:
+
+
+
+鎵ц鍣ㄥ睘鎬ц鏄�
+
+ AppName: 鏄瘡涓墽琛屽櫒闆嗙兢鐨勫敮涓�鏍囩ずAppName, 鎵ц鍣ㄤ細鍛ㄦ湡鎬т互AppName涓哄璞¤繘琛岃嚜鍔ㄦ敞鍐屻�傚彲閫氳繃璇ラ厤缃嚜鍔ㄥ彂鐜版敞鍐屾垚鍔熺殑鎵ц鍣�, 渚涗换鍔¤皟搴︽椂浣跨敤;
+ 鍚嶇О: 鎵ц鍣ㄧ殑鍚嶇О, 鍥犱负AppName闄愬埗瀛楁瘝鏁板瓧绛夌粍鎴�,鍙鎬т笉寮�, 鍚嶇О涓轰簡鎻愰珮鎵ц鍣ㄧ殑鍙鎬�;
+ 鎺掑簭: 鎵ц鍣ㄧ殑鎺掑簭, 绯荤粺涓渶瑕佹墽琛屽櫒鐨勫湴鏂�,濡備换鍔℃柊澧�, 灏嗕細鎸夌収璇ユ帓搴忚鍙栧彲鐢ㄧ殑鎵ц鍣ㄥ垪琛�;
+ 娉ㄥ唽鏂瑰紡锛氳皟搴︿腑蹇冭幏鍙栨墽琛屽櫒鍦板潃鐨勬柟寮忥紱
+ 鑷姩娉ㄥ唽锛氭墽琛屽櫒鑷姩杩涜鎵ц鍣ㄦ敞鍐岋紝璋冨害涓績閫氳繃搴曞眰娉ㄥ唽琛ㄥ彲浠ュ姩鎬佸彂鐜版墽琛屽櫒鏈哄櫒鍦板潃锛�
+ 鎵嬪姩褰曞叆锛氫汉宸ユ墜鍔ㄥ綍鍏ユ墽琛屽櫒鐨勫湴鍧�淇℃伅锛屽鍦板潃閫楀彿鍒嗛殧锛屼緵璋冨害涓績浣跨敤锛�
+ 鏈哄櫒鍦板潃锛�"娉ㄥ唽鏂瑰紡"涓�"鎵嬪姩褰曞叆"鏃舵湁鏁堬紝鏀寔浜哄伐缁存姢鎵ц鍣ㄧ殑鍦板潃淇℃伅锛�
+
+### 4.2 鏂板缓浠诲姟
+杩涘叆浠诲姟绠$悊鐣岄潰锛岀偣鍑烩�滄柊澧炰换鍔♀�濇寜閽紝鍦ㄥ脊鍑虹殑鈥滄柊澧炰换鍔♀�濈晫闈㈤厤缃换鍔″睘鎬у悗淇濆瓨鍗冲彲銆傝鎯呴〉鍙傝�冪珷鑺� "涓夈�佷换鍔¤瑙�"銆�
+
+### 4.3 缂栬緫浠诲姟
+杩涘叆浠诲姟绠$悊鐣岄潰锛岄�変腑鎸囧畾浠诲姟銆傜偣鍑昏浠诲姟鍙充晶鈥滅紪杈戔�濇寜閽紝鍦ㄥ脊鍑虹殑鈥滅紪杈戜换鍔♀�濈晫闈㈡洿鏂颁换鍔″睘鎬у悗淇濆瓨鍗冲彲锛屽彲浠ヤ慨鏀硅缃殑浠诲姟灞炴�т俊鎭細
+
+### 4.4 缂栬緫GLUE浠g爜
+
+璇ユ搷浣滀粎閽堝GLUE浠诲姟銆�
+
+閫変腑鎸囧畾浠诲姟锛岀偣鍑昏浠诲姟鍙充晶鈥淕LUE鈥濇寜閽紝灏嗕細鍓嶅線GLUE浠诲姟鐨刉eb IDE鐣岄潰锛屽湪璇ョ晫闈㈡敮鎸佸浠诲姟浠g爜杩涜寮�鍙戙�傚彲鍙傝�冪珷鑺� "3.3 GLUE妯″紡(Java)"銆�
+
+### 4.5 鍚姩/鍋滄浠诲姟
+鍙浠诲姟杩涜鈥滃惎鍔ㄢ�濆拰鈥滃仠姝⑩�濇搷浣溿��
+闇�瑕佹敞鎰忕殑鏄紝姝ゅ鐨勫惎鍔�/鍋滄浠呴拡瀵逛换鍔$殑鍚庣画璋冨害瑙﹀彂琛屼负锛屼笉浼氬奖鍝嶅埌宸茬粡瑙﹀彂鐨勮皟搴︿换鍔★紝濡傞渶缁堟宸茬粡瑙﹀彂鐨勮皟搴︿换鍔★紝鍙煡鐪嬧��4.9 缁堟杩愯涓殑浠诲姟鈥�
+
+
+
+### 4.6 鎵嬪姩瑙﹀彂涓�娆¤皟搴�
+鐐瑰嚮鈥滄墽琛屸�濇寜閽紝鍙墜鍔ㄨЕ鍙戜竴娆′换鍔¤皟搴︼紝涓嶅奖鍝嶅師鏈夎皟搴﹁鍒欍��
+
+
+
+### 4.7 鏌ョ湅璋冨害鏃ュ織
+鐐瑰嚮鈥滄棩蹇椻�濇寜閽紝鍙互鏌ョ湅浠诲姟鍘嗗彶璋冨害鏃ュ織銆傚湪鍘嗗彶璋冨叆鏃ュ織鐣岄潰鍙煡鐪嬫瘡娆′换鍔¤皟搴︾殑璋冨害缁撴灉銆佹墽琛岀粨鏋滅瓑锛岀偣鍑烩�滄墽琛屾棩蹇椻�濇寜閽彲鏌ョ湅鎵ц鍣ㄥ畬鏁存棩蹇椼��
+
+
+
+
+
+ 璋冨害鏃堕棿锛�"璋冨害涓績"瑙﹀彂鏈璋冨害骞跺悜"鎵ц鍣�"鍙戦�佷换鍔℃墽琛屼俊鍙风殑鏃堕棿锛�
+ 璋冨害缁撴灉锛�"璋冨害涓績"瑙﹀彂鏈璋冨害鐨勭粨鏋滐紝200琛ㄧず鎴愬姛锛�500鎴栧叾浠栬〃绀哄け璐ワ紱
+ 璋冨害澶囨敞锛�"璋冨害涓績"瑙﹀彂鏈璋冨害鐨勬棩蹇椾俊鎭紱
+ 鎵ц鍣ㄥ湴鍧�锛氭湰娆′换鍔℃墽琛岀殑鏈哄櫒鍦板潃
+ 杩愯妯″紡锛氳Е鍙戣皟搴︽椂浠诲姟鐨勮繍琛屾ā寮忥紝杩愯妯″紡鍙弬鑰冪珷鑺� "涓夈�佷换鍔¤瑙�"锛�
+ 浠诲姟鍙傛暟锛氭湰鍦颁换鍔℃墽琛岀殑鍏ュ弬
+ 鎵ц鏃堕棿锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀粨鏉熷悗鍥炶皟鐨勬椂闂达紱
+ 鎵ц缁撴灉锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀殑缁撴灉锛�200琛ㄧず鎴愬姛锛�500鎴栧叾浠栬〃绀哄け璐ワ紱
+ 鎵ц澶囨敞锛�"鎵ц鍣�"涓湰娆′换鍔℃墽琛岀殑鏃ュ織淇℃伅锛�
+ 鎿嶄綔锛�
+ "鎵ц鏃ュ織"鎸夐挳锛氱偣鍑诲彲鏌ョ湅鏈湴浠诲姟鎵ц鐨勮缁嗘棩蹇椾俊鎭紱璇﹁鈥�4.8 鏌ョ湅鎵ц鏃ュ織鈥濓紱
+ "缁堟浠诲姟"鎸夐挳锛氱偣鍑诲彲缁堟鏈湴璋冨害瀵瑰簲鎵ц鍣ㄤ笂鏈换鍔$殑鎵ц绾跨▼锛屽寘鎷湭鎵ц鐨勯樆濉炰换鍔′竴骞惰缁堟锛�
+
+### 4.8 鏌ョ湅鎵ц鏃ュ織
+鐐瑰嚮鎵ц鏃ュ織鍙充晶鐨� 鈥滄墽琛屾棩蹇椻�� 鎸夐挳锛屽彲璺宠浆鑷虫墽琛屾棩蹇楃晫闈紝鍙互鏌ョ湅涓氬姟浠g爜涓墦鍗扮殑瀹屾暣鏃ュ織锛屽涓嬪浘锛�
+
+
+
+### 4.9 缁堟杩愯涓殑浠诲姟
+浠呴拡瀵规墽琛屼腑鐨勪换鍔°��
+鍦ㄤ换鍔℃棩蹇楃晫闈紝鐐瑰嚮鍙充晶鐨勨�滅粓姝换鍔♀�濇寜閽紝灏嗕細鍚戞湰娆′换鍔″搴旂殑鎵ц鍣ㄥ彂閫佷换鍔$粓姝㈣姹傦紝灏嗕細缁堟鎺夋湰娆′换鍔★紝鍚屾椂浼氭竻绌烘帀鏁翠釜浠诲姟鎵ц闃熷垪銆�
+
+
+
+浠诲姟缁堟鏃堕�氳繃 "interrupt" 鎵ц绾跨▼鐨勬柟寮忓疄鐜�, 灏嗕細瑙﹀彂 "InterruptedException" 寮傚父銆傚洜姝ゅ鏋淛obHandler鍐呴儴catch鍒颁簡璇ュ紓甯稿苟娑堝寲鎺夌殑璇�, 浠诲姟缁堟鍔熻兘灏嗕笉鍙敤銆�
+
+鍥犳, 濡傛灉閬囧埌涓婅堪浠诲姟缁堟涓嶅彲鐢ㄧ殑鎯呭喌, 闇�瑕佸湪JobHandler涓簲璇ラ拡瀵� "InterruptedException" 寮傚父杩涜鐗规畩澶勭悊 (鍚戜笂鎶涘嚭) , 姝g‘閫昏緫濡備笅:
+```
+try{
+ // do something
+} catch (Exception e) {
+ if (e instanceof InterruptedException) {
+ throw e;
+ }
+ logger.warn("{}", e);
+}
+```
+
+鑰屼笖锛屽湪JobHandler涓紑鍚瓙绾跨▼鏃讹紝瀛愮嚎绋嬩篃涓嶅彲catch澶勭悊"InterruptedException"锛屽簲璇ヤ富鍔ㄥ悜涓婃姏鍑恒��
+
+浠诲姟缁堟鏃朵細鎵ц瀵瑰簲JobHandler鐨�"destroy()"鏂规硶锛屽彲浠ュ�熷姪璇ユ柟娉曞鐞嗕竴浜涜祫婧愬洖鏀剁殑閫昏緫銆�
+
+
+### 4.10 鍒犻櫎鎵ц鏃ュ織
+鍦ㄤ换鍔℃棩蹇楃晫闈紝閫変腑鎵ц鍣ㄥ拰浠诲姟涔嬪悗锛岀偣鍑诲彸渚х殑"鍒犻櫎"鎸夐挳灏嗕細鍑虹幇"鏃ュ織娓呯悊"寮规锛屽脊妗嗕腑鏀寔閫夋嫨涓嶅悓绫诲瀷鐨勬棩蹇楁竻鐞嗙瓥鐣ワ紝閫変腑鍚庣偣鍑�"纭畾"鎸夐挳鍗冲彲杩涜鏃ュ織娓呯悊鎿嶄綔锛�
+
+
+
+
+### 4.11 鍒犻櫎浠诲姟
+鐐瑰嚮鍒犻櫎鎸夐挳锛屽彲浠ュ垹闄ゅ搴斾换鍔°��
+
+
+
+### 4.12 鐢ㄦ埛绠$悊
+杩涘叆 "鐢ㄦ埛绠$悊" 鐣岄潰锛屽彲鏌ョ湅鍜岀鐞嗙敤鎴蜂俊鎭紱
+
+鐩墠鐢ㄦ埛鍒嗕负涓ょ瑙掕壊锛�
+- 绠$悊鍛橈細鎷ユ湁鍏ㄩ噺鏉冮檺锛屾敮鎸佸湪绾跨鐞嗙敤鎴蜂俊鎭紝涓虹敤鎴峰垎閰嶆潈闄愶紝鏉冮檺鍒嗛厤绮掑害涓烘墽琛屽櫒锛�
+- 鏅�氱敤鎴凤細浠呮嫢鏈夎鍒嗛厤鏉冮檺鐨勬墽琛屽櫒锛屽強鐩稿叧浠诲姟鐨勬搷浣滄潈闄愶紱
+
+
+
+
+
+
+## 浜斻�佹�讳綋璁捐
+### 5.1 婧愮爜鐩綍浠嬬粛
+ - /doc :鏂囨。璧勬枡
+ - /db :鈥滆皟搴︽暟鎹簱鈥濆缓琛ㄨ剼鏈�
+ - /xxl-job-admin :璋冨害涓績锛岄」鐩簮鐮�
+ - /xxl-job-core :鍏叡Jar渚濊禆
+ - /xxl-job-executor-samples :鎵ц鍣紝Sample绀轰緥椤圭洰锛堝ぇ瀹跺彲浠ュ湪璇ラ」鐩笂杩涜寮�鍙戯紝涔熷彲浠ュ皢鐜版湁椤圭洰鏀归�犵敓鎴愭墽琛屽櫒椤圭洰锛�
+
+### 5.2 鈥滆皟搴︽暟鎹簱鈥濋厤缃�
+XXL-JOB璋冨害妯″潡鍩轰簬鑷爺璋冨害缁勪欢骞舵敮鎸侀泦缇ら儴缃诧紝璋冨害鏁版嵁搴撹〃璇存槑濡備笅锛�
+
+ - xxl_job_lock锛氫换鍔¤皟搴﹂攣琛紱
+ - xxl_job_group锛氭墽琛屽櫒淇℃伅琛紝缁存姢浠诲姟鎵ц鍣ㄤ俊鎭紱
+ - xxl_job_info锛氳皟搴︽墿灞曚俊鎭〃锛� 鐢ㄤ簬淇濆瓨XXL-JOB璋冨害浠诲姟鐨勬墿灞曚俊鎭紝濡備换鍔″垎缁勩�佷换鍔″悕銆佹満鍣ㄥ湴鍧�銆佹墽琛屽櫒銆佹墽琛屽叆鍙傚拰鎶ヨ閭欢绛夌瓑锛�
+ - xxl_job_log锛氳皟搴︽棩蹇楄〃锛� 鐢ㄤ簬淇濆瓨XXL-JOB浠诲姟璋冨害鐨勫巻鍙蹭俊鎭紝濡傝皟搴︾粨鏋溿�佹墽琛岀粨鏋溿�佽皟搴﹀叆鍙傘�佽皟搴︽満鍣ㄥ拰鎵ц鍣ㄧ瓑绛夛紱
+ - xxl_job_log_report锛氳皟搴︽棩蹇楁姤琛細鐢ㄦ埛瀛樺偍XXL-JOB浠诲姟璋冨害鏃ュ織鐨勬姤琛紝璋冨害涓績鎶ヨ〃鍔熻兘椤甸潰浼氱敤鍒帮紱
+ - xxl_job_logglue锛氫换鍔LUE鏃ュ織锛氱敤浜庝繚瀛楪LUE鏇存柊鍘嗗彶锛岀敤浜庢敮鎸丟LUE鐨勭増鏈洖婧姛鑳斤紱
+ - xxl_job_registry锛氭墽琛屽櫒娉ㄥ唽琛紝缁存姢鍦ㄧ嚎鐨勬墽琛屽櫒鍜岃皟搴︿腑蹇冩満鍣ㄥ湴鍧�淇℃伅锛�
+ - xxl_job_user锛氱郴缁熺敤鎴疯〃锛�
+
+
+### 5.3 鏋舵瀯璁捐
+#### 5.3.1 璁捐鎬濇兂
+灏嗚皟搴﹁涓烘娊璞″舰鎴愨�滆皟搴︿腑蹇冣�濆叕鍏卞钩鍙帮紝鑰屽钩鍙拌嚜韬苟涓嶆壙鎷呬笟鍔¢�昏緫锛屸�滆皟搴︿腑蹇冣�濊礋璐e彂璧疯皟搴﹁姹傘��
+
+灏嗕换鍔℃娊璞℃垚鍒嗘暎鐨凧obHandler锛屼氦鐢扁�滄墽琛屽櫒鈥濈粺涓�绠$悊锛屸�滄墽琛屽櫒鈥濊礋璐f帴鏀惰皟搴﹁姹傚苟鎵ц瀵瑰簲鐨凧obHandler涓笟鍔¢�昏緫銆�
+
+鍥犳锛屸�滆皟搴︹�濆拰鈥滀换鍔♀�濅袱閮ㄥ垎鍙互鐩镐簰瑙h�︼紝鎻愰珮绯荤粺鏁翠綋绋冲畾鎬у拰鎵╁睍鎬э紱
+
+#### 5.3.2 绯荤粺缁勬垚
+- **璋冨害妯″潡锛堣皟搴︿腑蹇冿級**锛�
+ 璐熻矗绠$悊璋冨害淇℃伅锛屾寜鐓ц皟搴﹂厤缃彂鍑鸿皟搴﹁姹傦紝鑷韩涓嶆壙鎷呬笟鍔′唬鐮併�傝皟搴︾郴缁熶笌浠诲姟瑙h�︼紝鎻愰珮浜嗙郴缁熷彲鐢ㄦ�у拰绋冲畾鎬э紝鍚屾椂璋冨害绯荤粺鎬ц兘涓嶅啀鍙楅檺浜庝换鍔℃ā鍧楋紱
+ 鏀寔鍙鍖栥�佺畝鍗曚笖鍔ㄦ�佺殑绠$悊璋冨害淇℃伅锛屽寘鎷换鍔℃柊寤猴紝鏇存柊锛屽垹闄わ紝GLUE寮�鍙戝拰浠诲姟鎶ヨ绛夛紝鎵�鏈変笂杩版搷浣滈兘浼氬疄鏃剁敓鏁堬紝鍚屾椂鏀寔鐩戞帶璋冨害缁撴灉浠ュ強鎵ц鏃ュ織锛屾敮鎸佹墽琛屽櫒Failover銆�
+- **鎵ц妯″潡锛堟墽琛屽櫒锛�**锛�
+ 璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫銆備换鍔℃ā鍧椾笓娉ㄤ簬浠诲姟鐨勬墽琛岀瓑鎿嶄綔锛屽紑鍙戝拰缁存姢鏇村姞绠�鍗曞拰楂樻晥锛�
+ 鎺ユ敹鈥滆皟搴︿腑蹇冣�濈殑鎵ц璇锋眰銆佺粓姝㈣姹傚拰鏃ュ織璇锋眰绛夈��
+
+#### 5.3.3 鏋舵瀯鍥�
+
+
+
+### 5.4 璋冨害妯″潡鍓栨瀽
+#### 5.4.1 quartz鐨勪笉瓒�
+Quartz浣滀负寮�婧愪綔涓氳皟搴︿腑鐨勪郊浣艰�咃紝鏄綔涓氳皟搴︾殑棣栭�夈�備絾鏄泦缇ょ幆澧冧腑Quartz閲囩敤API鐨勬柟寮忓浠诲姟杩涜绠$悊锛屼粠鑰屽彲浠ラ伩鍏嶄笂杩伴棶棰橈紝浣嗘槸鍚屾牱瀛樺湪浠ヤ笅闂锛�
+
+- 闂涓�锛氳皟鐢ˋPI鐨勭殑鏂瑰紡鎿嶄綔浠诲姟锛屼笉浜烘�у寲锛�
+- 闂浜岋細闇�瑕佹寔涔呭寲涓氬姟QuartzJobBean鍒板簳灞傛暟鎹〃涓紝绯荤粺渚靛叆鎬х浉褰撲弗閲嶃��
+- 闂涓夛細璋冨害閫昏緫鍜孮uartzJobBean鑰﹀悎鍦ㄥ悓涓�涓」鐩腑锛岃繖灏嗗鑷翠竴涓棶棰橈紝鍦ㄨ皟搴︿换鍔℃暟閲忛�愭笎澧炲锛屽悓鏃惰皟搴︿换鍔¢�昏緫閫愭笎鍔犻噸鐨勬儏鍐典笅锛屾鏃惰皟搴︾郴缁熺殑鎬ц兘灏嗗ぇ澶у彈闄愪簬涓氬姟锛�
+- 闂鍥涳細quartz搴曞眰浠モ�滄姠鍗犲紡鈥濊幏鍙朌B閿佸苟鐢辨姠鍗犳垚鍔熻妭鐐硅礋璐h繍琛屼换鍔★紝浼氬鑷磋妭鐐硅礋杞芥偓娈婇潪甯稿ぇ锛涜�孹XL-JOB閫氳繃鎵ц鍣ㄥ疄鐜扳�滃崗鍚屽垎閰嶅紡鈥濊繍琛屼换鍔★紝鍏呭垎鍙戞尌闆嗙兢浼樺娍锛岃礋杞藉悇鑺傜偣鍧囪 銆�
+
+XXL-JOB寮ヨˉ浜唓uartz鐨勪笂杩颁笉瓒充箣澶勩��
+
+#### 5.4.2 鑷爺璋冨害妯″潡
+XXL-JOB鏈�缁堥�夋嫨鑷爺璋冨害缁勪欢锛堟棭鏈熻皟搴︾粍浠跺熀浜嶲uartz锛夛紱涓�鏂归潰鏄负浜嗙簿绠�绯荤粺闄嶄綆鍐椾綑渚濊禆锛屽彟涓�鏂归潰鏄负浜嗘彁渚涚郴缁熺殑鍙帶搴︿笌绋冲畾鎬э紱
+
+XXL-JOB涓�滆皟搴︽ā鍧椻�濆拰鈥滀换鍔℃ā鍧椻�濆畬鍏ㄨВ鑰︼紝璋冨害妯″潡杩涜浠诲姟璋冨害鏃讹紝灏嗕細瑙f瀽涓嶅悓鐨勪换鍔″弬鏁板彂璧疯繙绋嬭皟鐢紝璋冪敤鍚勮嚜鐨勮繙绋嬫墽琛屽櫒鏈嶅姟銆傝繖绉嶈皟鐢ㄦā鍨嬬被浼糝PC璋冪敤锛岃皟搴︿腑蹇冩彁渚涜皟鐢ㄤ唬鐞嗙殑鍔熻兘锛岃�屾墽琛屽櫒鎻愪緵杩滅▼鏈嶅姟鐨勫姛鑳姐��
+
+#### 5.4.3 璋冨害涓績HA锛堥泦缇わ級
+鍩轰簬鏁版嵁搴撶殑闆嗙兢鏂规锛屾暟鎹簱閫夌敤Mysql锛涢泦缇ゅ垎甯冨紡骞跺彂鐜涓繘琛屽畾鏃朵换鍔¤皟搴︽椂锛屼細鍦ㄥ悇涓妭鐐逛細涓婃姤浠诲姟锛屽瓨鍒版暟鎹簱涓紝鎵ц鏃朵細浠庢暟鎹簱涓彇鍑鸿Е鍙戝櫒鏉ユ墽琛岋紝濡傛灉瑙﹀彂鍣ㄧ殑鍚嶇О鍜屾墽琛屾椂闂寸浉鍚岋紝鍒欏彧鏈変竴涓妭鐐瑰幓鎵ц姝や换鍔°��
+
+#### 5.4.4 璋冨害绾跨▼姹�
+璋冨害閲囩敤绾跨▼姹犳柟寮忓疄鐜帮紝閬垮厤鍗曠嚎绋嬪洜闃诲鑰屽紩璧蜂换鍔¤皟搴﹀欢杩熴��
+
+
+#### 5.4.5 骞惰璋冨害
+XXL-JOB璋冨害妯″潡榛樿閲囩敤骞惰鏈哄埗锛屽湪澶氱嚎绋嬭皟搴︾殑鎯呭喌涓嬶紝璋冨害妯″潡琚樆濉炵殑鍑犵巼寰堜綆锛屽ぇ澶ф彁楂樹簡璋冨害绯荤粺鐨勬壙杞介噺銆�
+
+XXL-JOB鐨勬瘡涓皟搴︿换鍔¤櫧鐒跺湪璋冨害妯″潡鏄苟琛岃皟搴︽墽琛岀殑锛屼絾鏄换鍔¤皟搴︿紶閫掑埌浠诲姟妯″潡鐨勨�滄墽琛屽櫒鈥濈‘瀹炰覆琛屾墽琛岀殑锛屽悓鏃舵敮鎸佷换鍔$粓姝€��
+
+#### 5.4.6 杩囨湡澶勭悊绛栫暐
+浠诲姟璋冨害閿欒繃瑙﹀彂鏃堕棿鏃剁殑澶勭悊绛栫暐锛�
+- 鍙兘鍘熷洜锛氭湇鍔¢噸鍚紱璋冨害绾跨▼琚樆濉烇紝绾跨▼琚�楀敖锛涗笂娆¤皟搴︽寔缁樆濉烇紝涓嬫璋冨害琚敊杩囷紱
+- 澶勭悊绛栫暐锛�
+ - 杩囨湡瓒�5s锛氭湰娆″拷鐣ワ紝褰撳墠鏃堕棿寮�濮嬭绠椾笅娆¤Е鍙戞椂闂�
+ - 杩囨湡5s鍐咃細绔嬪嵆瑙﹀彂涓�娆★紝褰撳墠鏃堕棿寮�濮嬭绠椾笅娆¤Е鍙戞椂闂�
+
+
+#### 5.4.7 鏃ュ織鍥炶皟鏈嶅姟
+璋冨害妯″潡鐨勨�滆皟搴︿腑蹇冣�濅綔涓篧eb鏈嶅姟閮ㄧ讲鏃讹紝涓�鏂归潰鎵挎媴璋冨害涓績鍔熻兘锛屽彟涓�鏂归潰涔熶负鎵ц鍣ㄦ彁渚汚PI鏈嶅姟銆�
+
+璋冨害涓績鎻愪緵鐨�"鏃ュ織鍥炶皟鏈嶅姟API鏈嶅姟"浠g爜浣嶇疆濡備笅锛�
+```
+xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
+```
+
+鈥滄墽琛屽櫒鈥濆湪鎺ユ敹鍒颁换鍔℃墽琛岃姹傚悗锛屾墽琛屼换鍔★紝鍦ㄦ墽琛岀粨鏉熶箣鍚庝細灏嗘墽琛岀粨鏋滃洖璋冮�氱煡鈥滆皟搴︿腑蹇冣�濓細
+
+#### 5.4.8 浠诲姟HA锛團ailover锛�
+鎵ц鍣ㄥ鑻ラ泦缇ら儴缃诧紝璋冨害涓績灏嗕細鎰熺煡鍒板湪绾跨殑鎵�鏈夋墽琛屽櫒锛屽鈥�127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999鈥濄��
+
+褰撲换鍔�"璺敱绛栫暐"閫夋嫨"鏁呴殰杞Щ(FAILOVER)"鏃讹紝褰撹皟搴︿腑蹇冩瘡娆″彂璧疯皟搴﹁姹傛椂锛屼細鎸夌収椤哄簭瀵规墽琛屽櫒鍙戝嚭蹇冭烦妫�娴嬭姹傦紝绗竴涓娴嬩负瀛樻椿鐘舵�佺殑鎵ц鍣ㄥ皢浼氳閫夊畾骞跺彂閫佽皟搴﹁姹傘��
+
+璋冨害鎴愬姛鍚庯紝鍙湪鏃ュ織鐩戞帶鐣岄潰鏌ョ湅鈥滆皟搴﹀娉ㄢ�濓紝濡備笅锛�
+
+
+鈥滆皟搴﹀娉ㄢ�濆彲浠ョ湅鍑烘湰鍦拌皟搴﹁繍琛岃建杩癸紝鎵ц鍣ㄧ殑"娉ㄥ唽鏂瑰紡"銆�"鍦板潃鍒楄〃"鍜屼换鍔$殑"璺敱绛栫暐"銆�"鏁呴殰杞Щ(FAILOVER)"璺敱绛栫暐涓嬶紝璋冨害涓績棣栧厛瀵圭涓�涓湴鍧�杩涜蹇冭烦妫�娴嬶紝蹇冭烦澶辫触鍥犳鑷姩璺宠繃锛岀浜屼釜渚濈劧蹇冭烦妫�娴嬪け璐モ�︹��
+鐩磋嚦蹇冭烦妫�娴嬬涓変釜鍦板潃鈥�127.0.0.1:9999鈥濇垚鍔燂紝閫夊畾涓衡�滅洰鏍囨墽琛屽櫒鈥濓紱鐒跺悗瀵光�滅洰鏍囨墽琛屽櫒鈥濆彂閫佽皟搴﹁姹傦紝璋冨害娴佺▼缁撴潫锛岀瓑寰呮墽琛屽櫒鍥炶皟鎵ц缁撴灉銆�
+
+#### 5.4.9 璋冨害鏃ュ織
+璋冨害涓績姣忔杩涜浠诲姟璋冨害锛岄兘浼氳褰曚竴鏉′换鍔℃棩蹇楋紝浠诲姟鏃ュ織涓昏鍖呮嫭浠ヤ笅涓夐儴鍒嗗唴瀹癸細
+
+- 浠诲姟淇℃伅锛氬寘鎷�滄墽琛屽櫒鍦板潃鈥濄�佲�淛obHandler鈥濆拰鈥滄墽琛屽弬鏁扳�濈瓑灞炴�э紝鐐瑰嚮浠诲姟ID鎸夐挳鍙煡鐪嬶紝鏍规嵁杩欎簺鍙傛暟锛屽彲浠ョ簿纭殑瀹氫綅浠诲姟鎵ц鐨勫叿浣撴満鍣ㄥ拰浠诲姟浠g爜锛�
+- 璋冨害淇℃伅锛氬寘鎷�滆皟搴︽椂闂粹�濄�佲�滆皟搴︾粨鏋溾�濆拰鈥滆皟搴︽棩蹇椻�濈瓑锛屾牴鎹繖浜涘弬鏁帮紝鍙互浜嗚В鈥滆皟搴︿腑蹇冣�濆彂璧疯皟搴﹁姹傛椂鍏蜂綋鎯呭喌銆�
+- 鎵ц淇℃伅锛氬寘鎷�滄墽琛屾椂闂粹�濄�佲�滄墽琛岀粨鏋溾�濆拰鈥滄墽琛屾棩蹇椻�濈瓑锛屾牴鎹繖浜涘弬鏁帮紝鍙互浜嗚В鍦ㄢ�滄墽琛屽櫒鈥濈浠诲姟鎵ц鐨勫叿浣撴儏鍐碉紱
+
+璋冨害鏃ュ織锛岄拡瀵瑰崟娆¤皟搴︼紝灞炴�ц鏄庡涓嬶細
+- 鎵ц鍣ㄥ湴鍧�锛氫换鍔℃墽琛岀殑鏈哄櫒鍦板潃锛�
+- JobHandler锛欱ean妯″紡琛ㄧず浠诲姟鎵ц鐨凧obHandler鍚嶇О锛�
+- 浠诲姟鍙傛暟锛氫换鍔℃墽琛岀殑鍏ュ弬锛�
+- 璋冨害鏃堕棿锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勬椂闂达紱
+- 璋冨害缁撴灉锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勭粨鏋滐紝SUCCESS鎴朏AIL锛�
+- 璋冨害澶囨敞锛氳皟搴︿腑蹇冿紝鍙戣捣璋冨害鐨勫娉ㄤ俊鎭紝濡傚湴鍧�蹇冭烦妫�娴嬫棩蹇楃瓑锛�
+- 鎵ц鏃堕棿锛氭墽琛屽櫒锛屼换鍔℃墽琛岀粨鏉熷悗鍥炶皟鐨勬椂闂达紱
+- 鎵ц缁撴灉锛氭墽琛屽櫒锛屼换鍔℃墽琛岀殑缁撴灉锛孲UCCESS鎴朏AIL锛�
+- 鎵ц澶囨敞锛氭墽琛屽櫒锛屼换鍔℃墽琛岀殑澶囨敞淇℃伅锛屽寮傚父鏃ュ織绛夛紱
+- 鎵ц鏃ュ織锛氫换鍔℃墽琛岃繃绋嬩腑锛屼笟鍔′唬鐮佷腑鎵撳嵃鐨勫畬鏁存墽琛屾棩蹇楋紝瑙佲��4.8 鏌ョ湅鎵ц鏃ュ織鈥濓紱
+
+#### 5.4.10 浠诲姟渚濊禆
+鍘熺悊锛歑XL-JOB涓瘡涓换鍔¢兘瀵瑰簲鏈変竴涓换鍔D锛屽悓鏃讹紝姣忎釜浠诲姟鏀寔璁剧疆灞炴�р�滃瓙浠诲姟ID鈥濓紝鍥犳锛岄�氳繃鈥滀换鍔D鈥濆彲浠ュ尮閰嶄换鍔′緷璧栧叧绯汇��
+
+褰撶埗浠诲姟鎵ц缁撴潫骞朵笖鎵ц鎴愬姛鏃讹紝灏嗕細鏍规嵁鈥滃瓙浠诲姟ID鈥濆尮閰嶅瓙浠诲姟渚濊禆锛屽鏋滃尮閰嶅埌瀛愪换鍔★紝灏嗕細涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鐨勬墽琛屻��
+
+鍦ㄤ换鍔℃棩蹇楃晫闈紝鐐瑰嚮浠诲姟鐨勨�滄墽琛屽娉ㄢ�濈殑鈥滄煡鐪嬧�濇寜閽紝鍙互鐪嬪埌鍖归厤瀛愪换鍔′互鍙婅Е鍙戝瓙浠诲姟鎵ц鐨勬棩蹇椾俊鎭紝濡傛棤淇℃伅鍒欒〃绀烘湭瑙﹀彂瀛愪换鍔℃墽琛岋紝鍙弬鑰冧笅鍥俱��
+
+
+
+
+
+#### 5.4.11 鍏ㄥ紓姝ュ寲 & 杞婚噺绾�
+
+- 鍏ㄥ紓姝ュ寲璁捐锛歑XL-JOB绯荤粺涓笟鍔¢�昏緫鍦ㄨ繙绋嬫墽琛屽櫒鎵ц锛岃Е鍙戞祦绋嬪叏寮傛鍖栬璁°�傜浉姣旂洿鎺ュ湪璋冨害涓績鍐呴儴鎵ц涓氬姟閫昏緫锛屾瀬澶х殑闄嶄綆浜嗚皟搴︾嚎绋嬪崰鐢ㄦ椂闂达紱
+ - 寮傛璋冨害锛氳皟搴︿腑蹇冩瘡娆′换鍔¤Е鍙戞椂浠呭彂閫佷竴娆¤皟搴﹁姹傦紝璇ヨ皟搴﹁姹傞鍏堟帹閫佲�滃紓姝ヨ皟搴﹂槦鍒椻�濓紝鐒跺悗寮傛鎺ㄩ�佺粰杩滅▼鎵ц鍣�
+ - 寮傛鎵ц锛氭墽琛屽櫒浼氬皢璇锋眰瀛樺叆鈥滃紓姝ユ墽琛岄槦鍒椻�濆苟涓旂珛鍗冲搷搴旇皟搴︿腑蹇冿紝寮傛杩愯銆�
+- 杞婚噺绾ц璁★細XXL-JOB璋冨害涓績涓瘡涓狫OB閫昏緫闈炲父 鈥滆交鈥濓紝鍦ㄥ叏寮傛鍖栫殑鍩虹涓婏紝鍗曚釜JOB涓�娆¤繍琛屽钩鍧囪�楁椂鍩烘湰鍦� "10ms" 涔嬪唴锛堝熀鏈负涓�娆¤姹傜殑缃戠粶寮�閿�锛夛紱鍥犳锛屽彲浠ヤ繚璇佷娇鐢ㄦ湁闄愮殑绾跨▼鏀拺澶ч噺鐨凧OB骞跺彂杩愯锛�
+
+寰楃泭浜庝笂杩颁袱鐐逛紭鍖栵紝鐞嗚涓婇粯璁ら厤缃笅鐨勮皟搴︿腑蹇冿紝鍗曟満鑳藉鏀拺 5000 浠诲姟骞跺彂杩愯绋冲畾杩愯锛�
+
+瀹為檯鍦烘櫙涓紝鐢变簬璋冨害涓績涓庢墽琛屽櫒缃戠粶ping寤惰繜涓嶅悓銆丏B璇诲啓鑰楁椂涓嶅悓銆佷换鍔¤皟搴﹀瘑闆嗙▼搴︿笉鍚岋紝浼氬鑷翠换鍔¢噺涓婇檺浼氫笂涓嬫尝鍔ㄣ��
+
+濡傝嫢闇�瑕佹敮鎾戞洿澶氱殑浠诲姟閲忥紝鍙互閫氳繃 "璋冨ぇ璋冨害绾跨▼鏁�" 銆�"闄嶄綆璋冨害涓績涓庢墽琛屽櫒ping寤惰繜" 鍜� "鎻愬崌鏈哄櫒閰嶇疆" 鍑犵鏂瑰紡浼樺寲銆�
+
+#### 5.4.12 鍧囪 璋冨害
+
+璋冨害涓績鍦ㄩ泦缇ら儴缃叉椂浼氳嚜鍔ㄨ繘琛屼换鍔″钩鍧囧垎閰嶏紝瑙﹀彂缁勪欢姣忔鑾峰彇涓庣嚎绋嬫睜鏁伴噺锛堣皟搴︿腑蹇冩敮鎸佽嚜瀹氫箟璋冨害绾跨▼姹犲ぇ灏忥級鐩稿叧鏁伴噺鐨勪换鍔★紝閬垮厤澶ч噺浠诲姟闆嗕腑鍦ㄥ崟涓皟搴︿腑蹇冮泦缇よ妭鐐癸紱
+
+
+### 5.5 浠诲姟 "杩愯妯″紡" 鍓栨瀽
+#### 5.5.1 "Bean妯″紡" 浠诲姟
+寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
+鍘熺悊锛氭瘡涓狟ean妯″紡浠诲姟閮芥槸涓�涓猄pring鐨凚ean绫诲疄渚嬶紝瀹冭缁存姢鍦ㄢ�滄墽琛屽櫒鈥濋」鐩殑Spring瀹瑰櫒涓�備换鍔$被闇�瑕佸姞鈥淍JobHandler(value="鍚嶇О")鈥濇敞瑙o紝鍥犱负鈥滄墽琛屽櫒鈥濅細鏍规嵁璇ユ敞瑙h瘑鍒玈pring瀹瑰櫒涓殑浠诲姟銆備换鍔$被闇�瑕佺户鎵跨粺涓�鎺ュ彛鈥淚JobHandler鈥濓紝浠诲姟閫昏緫鍦╡xecute鏂规硶涓紑鍙戯紝鍥犱负鈥滄墽琛屽櫒鈥濆湪鎺ユ敹鍒拌皟搴︿腑蹇冪殑璋冨害璇锋眰鏃讹紝灏嗕細璋冪敤鈥淚JobHandler鈥濈殑execute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
+
+#### 5.5.2 "GLUE妯″紡(Java)" 浠诲姟
+寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
+鍘熺悊锛氭瘡涓� "GLUE妯″紡(Java)" 浠诲姟鐨勪唬鐮侊紝瀹為檯涓婃槸鈥滀竴涓户鎵胯嚜鈥淚JobHandler鈥濈殑瀹炵幇绫荤殑绫讳唬鐮佲�濓紝鈥滄墽琛屽櫒鈥濇帴鏀跺埌鈥滆皟搴︿腑蹇冣�濈殑璋冨害璇锋眰鏃讹紝浼氶�氳繃Groovy绫诲姞杞藉櫒鍔犺浇姝や唬鐮侊紝瀹炰緥鍖栨垚Java瀵硅薄锛屽悓鏃舵敞鍏ユ浠g爜涓0鏄庣殑Spring鏈嶅姟锛堣纭繚Glue浠g爜涓殑鏈嶅姟鍜岀被寮曠敤鍦ㄢ�滄墽琛屽櫒鈥濋」鐩腑瀛樺湪锛夛紝鐒跺悗璋冪敤璇ュ璞$殑execute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
+
+#### 5.5.3 GLUE妯″紡(Shell) + GLUE妯″紡(Python) + GLUE妯″紡(NodeJS)
+寮�鍙戞楠わ細鍙弬鑰� "绔犺妭涓�" 锛�
+鍘熺悊锛氳剼鏈换鍔$殑婧愮爜鎵樼鍦ㄨ皟搴︿腑蹇冿紝鑴氭湰閫昏緫鍦ㄦ墽琛屽櫒杩愯銆傚綋瑙﹀彂鑴氭湰浠诲姟鏃讹紝鎵ц鍣ㄤ細鍔犺浇鑴氭湰婧愮爜鍦ㄦ墽琛屽櫒鏈哄櫒涓婄敓鎴愪竴浠借剼鏈枃浠讹紝鐒跺悗閫氳繃Java浠g爜璋冪敤璇ヨ剼鏈紱骞朵笖瀹炴椂灏嗚剼鏈緭鍑烘棩蹇楀啓鍒颁换鍔℃棩蹇楁枃浠朵腑锛屼粠鑰屽湪璋冨害涓績鍙互瀹炴椂鐩戞帶鑴氭湰杩愯鎯呭喌锛�
+
+鐩墠鏀寔鐨勮剼鏈被鍨嬪涓嬶細
+
+ - shell鑴氭湰锛氫换鍔¤繍琛屾ā寮忛�夋嫨涓� "GLUE妯″紡(Shell)"鏃舵敮鎸� "shell" 鑴氭湰浠诲姟锛�
+ - python鑴氭湰锛氫换鍔¤繍琛屾ā寮忛�夋嫨涓� "GLUE妯″紡(Python)"鏃舵敮鎸� "python" 鑴氭湰浠诲姟锛�
+ - nodejs鑴氭湰锛氬姟杩愯妯″紡閫夋嫨涓� "GLUE妯″紡(NodeJS)"鏃舵敮鎸� "nodejs" 鑴氭湰浠诲姟锛�
+
+鑴氭湰浠诲姟閫氳繃 Exit Code 鍒ゆ柇浠诲姟鎵ц缁撴灉锛岀姸鎬佺爜鍙弬鑰冪珷鑺� "5.15 浠诲姟鎵ц缁撴灉璇存槑"锛�
+
+#### 5.5.4 鎵ц鍣�
+鎵ц鍣ㄥ疄闄呬笂鏄竴涓唴宓岀殑Server锛岄粯璁ょ鍙�9999锛堥厤缃」锛歺xl.job.executor.port锛夈��
+
+鍦ㄩ」鐩惎鍔ㄦ椂锛屾墽琛屽櫒浼氶�氳繃鈥淍JobHandler鈥濊瘑鍒玈pring瀹瑰櫒涓�淏ean妯″紡浠诲姟鈥濓紝浠ユ敞瑙g殑value灞炴�т负key绠$悊璧锋潵銆�
+
+鈥滄墽琛屽櫒鈥濇帴鏀跺埌鈥滆皟搴︿腑蹇冣�濈殑璋冨害璇锋眰鏃讹紝濡傛灉浠诲姟绫诲瀷涓衡�淏ean妯″紡鈥濓紝灏嗕細鍖归厤Spring瀹瑰櫒涓殑鈥淏ean妯″紡浠诲姟鈥濓紝鐒跺悗璋冪敤鍏秂xecute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆傚鏋滀换鍔$被鍨嬩负鈥淕LUE妯″紡鈥濓紝灏嗕細鍔犺浇GLue浠g爜锛屽疄渚嬪寲Java瀵硅薄锛屾敞鍏ヤ緷璧栫殑Spring鏈嶅姟锛堟敞鎰忥細Glue浠g爜涓敞鍏ョ殑Spring鏈嶅姟锛屽繀椤诲瓨鍦ㄤ笌璇モ�滄墽琛屽櫒鈥濋」鐩殑Spring瀹瑰櫒涓級锛岀劧鍚庤皟鐢╡xecute鏂规硶锛屾墽琛屼换鍔¢�昏緫銆�
+
+#### 5.5.5 浠诲姟鏃ュ織
+XXL-JOB浼氫负姣忔璋冨害璇锋眰鐢熸垚涓�涓崟鐙殑鏃ュ織鏂囦欢锛岄渶瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛屸�滆皟搴︿腑蹇冣�濇煡鐪嬫墽琛屾棩蹇楁椂灏嗕細鍔犺浇瀵瑰簲鐨勬棩蹇楁枃浠躲��
+
+(鍘嗗彶鐗堟湰閫氳繃閲嶅啓LOG4J鐨凙ppender瀹炵幇锛屽瓨鍦ㄤ緷璧栭檺鍒讹紝璇ユ柟寮忓湪鏂扮増鏈凡缁忚鎶涘純)
+
+鏃ュ織鏂囦欢瀛樻斁鐨勪綅缃彲鍦ㄢ�滄墽琛屽櫒鈥濋厤缃枃浠惰繘琛岃嚜瀹氫箟锛岄粯璁ょ洰褰曟牸寮忎负锛�/data/applogs/xxl-job/jobhandler/鈥滄牸寮忓寲鏃ユ湡鈥�/鈥滄暟鎹簱璋冨害鏃ュ織璁板綍鐨勪富閿甀D.log鈥濄��
+
+鍦↗obHandler涓紑鍚瓙绾跨▼鏃讹紝瀛愮嚎绋嬪皢浼氬皢浼氭妸鏃ュ織鎵撳嵃鍦ㄧ埗绾跨▼鍗矹obHandler鐨勬墽琛屾棩蹇椾腑锛屾柟渚挎棩蹇楄拷韪��
+
+### 5.6 閫氳妯″潡鍓栨瀽
+
+#### 5.6.1 涓�娆″畬鏁寸殑浠诲姟璋冨害閫氳娴佺▼
+ - 1銆佲�滆皟搴︿腑蹇冣�濆悜鈥滄墽琛屽櫒鈥濆彂閫乭ttp璋冨害璇锋眰: 鈥滄墽琛屽櫒鈥濅腑鎺ユ敹璇锋眰鐨勬湇鍔★紝瀹為檯涓婃槸涓�鍙板唴宓孲erver锛岄粯璁ょ鍙�9999;
+ - 2銆佲�滄墽琛屽櫒鈥濇墽琛屼换鍔¢�昏緫锛�
+ - 3銆佲�滄墽琛屽櫒鈥漢ttp鍥炶皟鈥滆皟搴︿腑蹇冣�濊皟搴︾粨鏋�: 鈥滆皟搴︿腑蹇冣�濅腑鎺ユ敹鍥炶皟鐨勬湇鍔★紝鏄拡瀵规墽琛屽櫒寮�鏀句竴濂桝PI鏈嶅姟;
+
+#### 5.6.2 閫氳鏁版嵁鍔犲瘑
+璋冨害涓績鍚戞墽琛屽櫒鍙戦�佺殑璋冨害璇锋眰鏃朵娇鐢≧equestModel鍜孯esponseModel涓や釜瀵硅薄灏佽璋冨害璇锋眰鍙傛暟鍜屽搷搴旀暟鎹�, 鍦ㄨ繘琛岄�氳涔嬪墠搴曞眰浼氬皢涓婅堪涓や釜瀵硅薄瀵硅薄搴忓垪鍖栵紝骞惰繘琛屾暟鎹崗璁互鍙婃椂闂存埑妫�楠�,浠庤�岃揪鍒版暟鎹姞瀵嗙殑鍔熻兘;
+
+### 5.7 浠诲姟娉ㄥ唽, 浠诲姟鑷姩鍙戠幇
+鑷獀1.5鐗堟湰涔嬪悗, 浠诲姟鍙栨秷浜�"浠诲姟鎵ц鏈哄櫒"灞炴��, 鏀逛负閫氳繃浠诲姟娉ㄥ唽鍜岃嚜鍔ㄥ彂鐜扮殑鏂瑰紡, 鍔ㄦ�佽幏鍙栬繙绋嬫墽琛屽櫒鍦板潃骞舵墽琛屻��
+
+ AppName: 姣忎釜鎵ц鍣ㄦ満鍣ㄩ泦缇ょ殑鍞竴鏍囩ず, 浠诲姟娉ㄥ唽浠� "鎵ц鍣�" 涓烘渶灏忕矑搴﹁繘琛屾敞鍐�; 姣忎釜浠诲姟閫氳繃鍏剁粦瀹氱殑鎵ц鍣ㄥ彲鎰熺煡瀵瑰簲鐨勬墽琛屽櫒鏈哄櫒鍒楄〃;
+ 娉ㄥ唽琛�: 瑙�"xxl_job_registry"琛�, "鎵ц鍣�" 鍦ㄨ繘琛屼换鍔℃敞鍐屾椂灏嗕細鍛ㄦ湡鎬х淮鎶や竴鏉℃敞鍐岃褰曪紝鍗虫満鍣ㄥ湴鍧�鍜孉ppName鐨勭粦瀹氬叧绯�; "璋冨害涓績" 浠庤�屽彲浠ュ姩鎬佹劅鐭ユ瘡涓狝ppName鍦ㄧ嚎鐨勬満鍣ㄥ垪琛�;
+ 鎵ц鍣ㄦ敞鍐�: 浠诲姟娉ㄥ唽Beat鍛ㄦ湡榛樿30s; 鎵ц鍣ㄤ互涓�鍊岯eat杩涜鎵ц鍣ㄦ敞鍐�, 璋冨害涓績浠ヤ竴鍊岯eat杩涜鍔ㄦ�佷换鍔″彂鐜�; 娉ㄥ唽淇℃伅鐨勫け鏁堟椂闂翠负涓夊�岯eat;
+ 鎵ц鍣ㄦ敞鍐屾憳闄わ細鎵ц鍣ㄩ攢姣佹椂锛屽皢浼氫富鍔ㄤ笂鎶ヨ皟搴︿腑蹇冨苟鎽橀櫎瀵瑰簲鐨勬墽琛屽櫒鏈哄櫒淇℃伅锛屾彁楂樺績璺虫敞鍐岀殑瀹炴椂鎬э紱
+
+
+涓轰繚璇佺郴缁�"杞婚噺绾�"骞朵笖闄嶄綆瀛︿範閮ㄧ讲鎴愭湰锛屾病鏈夐噰鐢╖ookeeper浣滀负娉ㄥ唽涓績锛岄噰鐢―B鏂瑰紡杩涜浠诲姟娉ㄥ唽鍙戠幇锛�
+
+### 5.8 浠诲姟鎵ц缁撴灉
+鑷獀1.6.2涔嬪悗锛屼换鍔℃墽琛岀粨鏋滈�氳繃 "IJobHandler" 鐨勮繑鍥炲�� "ReturnT" 杩涜鍒ゆ柇锛�
+褰撹繑鍥炲�肩鍚� "ReturnT.code == ReturnT.SUCCESS_CODE" 鏃惰〃绀轰换鍔℃墽琛屾垚鍔燂紝鍚﹀垯琛ㄧず浠诲姟鎵ц澶辫触锛岃�屼笖鍙互閫氳繃 "ReturnT.msg" 鍥炶皟閿欒淇℃伅缁欒皟搴︿腑蹇冿紱
+浠庤�岋紝鍦ㄤ换鍔¢�昏緫涓彲浠ユ柟渚跨殑鎺у埗浠诲姟鎵ц缁撴灉锛�
+
+### 5.9 鍒嗙墖骞挎挱 & 鍔ㄦ�佸垎鐗�
+鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戝搴旈泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍚屾椂绯荤粺鑷姩浼犻�掑垎鐗囧弬鏁帮紱鍙牴鎹垎鐗囧弬鏁板紑鍙戝垎鐗囦换鍔★紱
+
+"鍒嗙墖骞挎挱" 浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
+
+"鍒嗙墖骞挎挱" 鍜屾櫘閫氫换鍔″紑鍙戞祦绋嬩竴鑷达紝涓嶅悓涔嬪鍦ㄤ簬鍙互鍙互鑾峰彇鍒嗙墖鍙傛暟锛岃幏鍙栧垎鐗囧弬鏁拌繘琛屽垎鐗囦笟鍔″鐞嗐��
+
+- Java璇█浠诲姟鑾峰彇鍒嗙墖鍙傛暟鏂瑰紡锛欱EAN銆丟LUE妯″紡(Java)
+```
+// 鍙弬鑰僑ample绀轰緥鎵ц鍣ㄤ腑鐨勭ず渚嬩换鍔�"ShardingJobHandler"浜嗚В璇曠敤
+ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
+```
+- 鑴氭湰璇█浠诲姟鑾峰彇鍒嗙墖鍙傛暟鏂瑰紡锛欸LUE妯″紡(Shell)銆丟LUE妯″紡(Python)銆丟LUE妯″紡(Nodejs)
+```
+// 鑴氭湰浠诲姟鍏ュ弬鍥哄畾涓轰笁涓紝渚濇涓猴細浠诲姟浼犲弬銆佸垎鐗囧簭鍙枫�佸垎鐗囨�绘暟銆備互Shell妯″紡浠诲姟涓轰緥锛岃幏鍙栧垎鐗囧弬鏁颁唬鐮佸涓�
+echo "鍒嗙墖搴忓彿 index = $2"
+echo "鍒嗙墖鎬绘暟 total = $3"
+```
+
+鍒嗙墖鍙傛暟灞炴�ц鏄庯細
+
+ index锛氬綋鍓嶅垎鐗囧簭鍙�(浠�0寮�濮�)锛屾墽琛屽櫒闆嗙兢鍒楄〃涓綋鍓嶆墽琛屽櫒鐨勫簭鍙凤紱
+ total锛氭�诲垎鐗囨暟锛屾墽琛屽櫒闆嗙兢鐨勬�绘満鍣ㄦ暟閲忥紱
+
+璇ョ壒鎬ч�傜敤鍦烘櫙濡傦細
+- 1銆佸垎鐗囦换鍔″満鏅細10涓墽琛屽櫒鐨勯泦缇ゆ潵澶勭悊10w鏉℃暟鎹紝姣忓彴鏈哄櫒鍙渶瑕佸鐞�1w鏉℃暟鎹紝鑰楁椂闄嶄綆10鍊嶏紱
+- 2銆佸箍鎾换鍔″満鏅細骞挎挱鎵ц鍣ㄦ満鍣ㄨ繍琛宻hell鑴氭湰銆佸箍鎾泦缇よ妭鐐硅繘琛岀紦瀛樻洿鏂扮瓑
+
+### 5.10 璁块棶浠ょ墝锛圓ccessToken锛�
+涓烘彁鍗囩郴缁熷畨鍏ㄦ�э紝璋冨害涓績鍜屾墽琛屽櫒杩涜瀹夊叏鎬ф牎楠岋紝鍙屾柟AccessToken鍖归厤鎵嶅厑璁搁�氳锛�
+
+璋冨害涓績鍜屾墽琛屽櫒锛屽彲閫氳繃閰嶇疆椤� "xxl.job.accessToken" 杩涜AccessToken鐨勮缃��
+
+璋冨害涓績鍜屾墽琛屽櫒锛屽鏋滈渶瑕佹甯搁�氳锛屽彧鏈変袱绉嶈缃紱
+
+- 璁剧疆涓�锛氳皟搴︿腑蹇冨拰鎵ц鍣紝鍧囦笉璁剧疆AccessToken锛涘叧闂畨鍏ㄦ�ф牎楠岋紱
+- 璁剧疆浜岋細璋冨害涓績鍜屾墽琛屽櫒锛岃缃簡鐩稿悓鐨凙ccessToken锛�
+
+### 5.11 璋冨害涓績API鏈嶅姟
+
+璋冨害涓績鎻愪緵浜咥PI鏈嶅姟锛屼富瑕佸垎涓轰袱绉嶇被鍨嬶細
+#### 5.11.1 鎻愪緵缁欐墽琛屽櫒鐨凙PI鏈嶅姟锛�
+ 1銆佷换鍔$粨鏋滃洖璋冩湇鍔★紱
+ 2銆佹墽琛屽櫒娉ㄥ唽鏈嶅姟锛�
+ 3銆佹墽琛屽櫒娉ㄥ唽鎽橀櫎鏈嶅姟锛�
+ 4銆佽Е鍙戜换鍔″崟娆℃墽琛屾湇鍔★紝鏀寔浠诲姟鏍规嵁涓氬姟浜嬩欢瑙﹀彂锛�
+
+API鏈嶅姟浣嶇疆锛歝om.xxl.job.core.biz.AdminBiz.java
+API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細com.xxl.job.adminbiz.AdminBizTest.java
+
+#### 5.11.2 鎻愪緵缁欎笟鍔$殑API鏈嶅姟锛�
+ 1銆佷换鍔″垪琛ㄦ煡璇紱
+ 2銆佷换鍔℃柊澧烇紱
+ 3銆佷换鍔℃洿鏂帮紱
+ 4銆佷换鍔″垹闄わ紱
+ 5銆佷换鍔″惎鍔紱
+ 6銆佷换鍔″仠姝紱
+ 7銆佷换鍔¤Е鍙戯紱
+
+API鏈嶅姟浣嶇疆锛歝om.xxl.job.admin.controller.JobInfoController.java
+API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細鍙弬鑰冧换鍔$晫闈㈡搷浣滅殑ajax璇锋眰銆備换浣昦jax鎺ュ彛鍧囧彲閰嶇疆鎴愪负API鏈嶅姟锛屽彧闇�鍦ㄥ緟鍚敤鐨凙PI鏈嶅姟涓婃坊鍔� 鈥淍PermissionLimit(limit = false)鈥� 娉ㄨВ鍙栨秷鐧婚檰鎬佹嫤鎴嵆鍙紱
+
+### 5.12 鎵ц鍣ˋPI鏈嶅姟
+鎵ц鍣ㄦ彁渚涗簡API鏈嶅姟锛屼緵璋冨害涓績閫夋嫨浣跨敤锛岀洰鍓嶆彁渚涚殑API鏈嶅姟鏈夛細
+
+ 1銆佸績璺虫娴嬶細璋冨害涓績浣跨敤
+ 2銆佸繖纰屾娴嬶細璋冨害涓績浣跨敤
+ 3銆佽Е鍙戜换鍔℃墽琛岋細璋冨害涓績浣跨敤锛涙湰鍦拌繘琛屼换鍔″紑鍙戞椂锛屽彲浣跨敤璇PI鏈嶅姟妯℃嫙瑙﹀彂浠诲姟锛�
+ 4銆佽幏鍙朢olling Log锛氳皟搴︿腑蹇冧娇鐢�
+ 5銆佺粓姝换鍔★細璋冨害涓績浣跨敤
+
+API鏈嶅姟浣嶇疆锛歝om.xxl.job.core.biz.ExecutorBiz
+API鏈嶅姟璇锋眰鍙傝�冧唬鐮侊細com.xxl.job.executor.ExecutorBizTest
+
+### 5.13 鏁呴殰杞Щ & 澶辫触閲嶈瘯
+涓�娆″畬鏁翠换鍔℃祦绋嬪寘鎷�"璋冨害锛堣皟搴︿腑蹇冿級 + 鎵ц锛堟墽琛屽櫒锛�"涓や釜闃舵銆�
+
+- "鏁呴殰杞Щ"鍙戠敓鍦ㄨ皟搴﹂樁娈碉紝鍦ㄦ墽琛屽櫒闆嗙兢閮ㄧ讲鏃讹紝濡傛灉鏌愪竴鍙版墽琛屽櫒鍙戠敓鏁呴殰锛岃绛栫暐鏀寔鑷姩杩涜Failover鍒囨崲鍒颁竴鍙版甯哥殑鎵ц鍣ㄦ満鍣ㄥ苟涓斿畬鎴愯皟搴﹁姹傛祦绋嬨��
+- "澶辫触閲嶈瘯"鍙戠敓鍦�"璋冨害 + 鎵ц"涓や釜闃舵锛屾敮鎸侀�氳繃鑷畾涔変换鍔″け璐ラ噸璇曟鏁帮紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱
+
+### 5.14 鎵ц鍣ㄧ伆搴︿笂绾�
+璋冨害涓績涓庝笟鍔¤В鑰︼紝鍙渶閮ㄧ讲涓�娆″悗甯稿勾涓嶉渶瑕佺淮鎶ゃ�備絾鏄紝鎵ц鍣ㄤ腑鎵樼杩愯鐫�涓氬姟浣滀笟锛屼綔涓氫笂绾垮拰鍙樻洿闇�瑕侀噸鍚墽琛屽櫒锛屽挨鍏舵槸Bean妯″紡浠诲姟銆�
+鎵ц鍣ㄩ噸鍚彲鑳戒細涓柇杩愯涓殑浠诲姟銆備絾鏄紝XXL-JOB寰楃泭浜庤嚜寤烘墽琛屽櫒涓庤嚜寤烘敞鍐屼腑蹇冿紝鍙互閫氳繃鐏板害涓婄嚎鐨勬柟寮忥紝閬垮厤鍥犻噸鍚鑷寸殑浠诲姟涓柇鐨勯棶棰樸��
+
+姝ラ濡備笅锛�
+- 1銆佹墽琛屽櫒鏀逛负鎵嬪姩娉ㄥ唽锛屼笅绾夸竴鍗婃満鍣ㄥ垪琛紙A缁勶級锛岀嚎涓婅繍琛屽彟涓�鍗婃満鍣ㄥ垪琛紙B缁勶級锛�
+- 2銆佺瓑寰匒缁勬満鍣ㄤ换鍔¤繍琛岀粨鏉熷苟缂栬瘧涓婄嚎锛涙墽琛屽櫒娉ㄥ唽鍦板潃鏇挎崲涓篈缁勶紱
+- 3銆佺瓑寰匓缁勬満鍣ㄤ换鍔¤繍琛岀粨鏉熷苟缂栬瘧涓婄嚎锛涙墽琛屽櫒娉ㄥ唽鍦板潃鏇挎崲涓篈缁�+B缁勶紱
+鎿嶄綔缁撴潫锛�
+
+### 5.15 浠诲姟鎵ц缁撴灉璇存槑
+绯荤粺鏍规嵁浠ヤ笅鏍囧噯鍒ゆ柇浠诲姟鎵ц缁撴灉锛屽彲鍙傝�冧箣銆�
+
+-- | Bean/Glue(Java) | Glue(Shell) 绛夎剼鏈换鍔�
+--- | --- | ---
+鎴愬姛 | IJobHandler.SUCCESS | 0
+澶辫触 | IJobHandler.FAIL | -1锛堥潪0鐘舵�佺爜锛�
+
+### 5.16 浠诲姟瓒呮椂鎺у埗
+鏀寔璁剧疆浠诲姟瓒呮椂鏃堕棿锛屼换鍔¤繍琛岃秴鏃剁殑鎯呭喌涓嬶紝灏嗕細涓诲姩涓柇浠诲姟锛�
+
+闇�瑕佹敞鎰忕殑鏄紝浠诲姟瓒呮椂涓柇鏃朵笌浠诲姟缁堟鏈哄埗锛堝彲鏌ョ湅鈥�4.9 缁堟杩愯涓殑浠诲姟鈥濓級绫讳技锛屼篃鏄�氳繃 "interrupt" 涓柇浠诲姟锛屽洜姝や笟鍔′唬鐮侀渶瑕佸皢 "InterruptedException" 澶栨姏锛屽惁鍒欏姛鑳戒笉鍙敤銆�
+
+### 5.17 璺ㄥ钩鍙� & 璺ㄨ瑷�
+璺ㄥ钩鍙般�佽法璇█涓昏浣撶幇鍦ㄤ互涓嬩袱涓柟闈細
+- 1銆佹彁渚汮ava銆丳ython銆丳HP鈥︹�︾瓑鍗佹潵绉嶄换鍔℃ā寮忥紝鍙弬鑰冪珷鑺� 鈥�5.5 浠诲姟 "杩愯妯″紡" 鈥濓紱鐞嗚涓婂彲鎵╁睍浠绘剰璇█浠诲姟妯″紡锛�
+- 2銆佹彁渚涘熀浜嶩TTP鐨勪换鍔andler锛圔ean浠诲姟锛孞obHandler="HttpJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚汬TTP閾炬帴鍗冲彲锛屼笉闄愬埗璇█銆佸钩鍙帮紱
+
+### 5.18 浠诲姟澶辫触鍛婅
+榛樿鎻愪緵閭欢澶辫触鍛婅锛屽彲鎵╁睍鐭俊銆侀拤閽夌瓑鏂瑰紡锛屾墿灞曚唬鐮佷綅缃负 "JobFailMonitorHelper.failAlarm"锛�
+
+### 5.19 璋冨害涓績Docker闀滃儚鏋勫缓
+鍙互閫氳繃浠ヤ笅鍛戒护蹇�熸瀯寤鸿皟搴︿腑蹇冿紝骞跺惎鍔ㄨ繍琛岋紱
+```
+mvn clean package
+docker build -t xuxueli/xxl-job-admin ./xxl-job-admin
+docker run --name xxl-job-admin -p 8080:8080 -d xuxueli/xxl-job-admin
+```
+
+### 5.20 閬垮厤浠诲姟閲嶅鎵ц
+璋冨害瀵嗛泦鎴栬�呰�楁椂浠诲姟鍙兘浼氬鑷翠换鍔¢樆濉烇紝闆嗙兢鎯呭喌涓嬭皟搴︾粍浠跺皬姒傜巼鎯呭喌涓嬩細閲嶅瑙﹀彂锛�
+閽堝涓婅堪鎯呭喌锛屽彲浠ラ�氳繃缁撳悎 "鍗曟満璺敱绛栫暐锛堝锛氱涓�鍙般�佷竴鑷存�у搱甯岋級" + "闃诲绛栫暐锛堝锛氬崟鏈轰覆琛屻�佷涪寮冨悗缁皟搴︼級" 鏉ヨ閬匡紝鏈�缁堥伩鍏嶄换鍔¢噸澶嶆墽琛屻��
+
+### 5.21 鍛戒护琛屼换鍔�
+鍘熺敓鎻愪緵閫氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
+濡備换鍔″弬鏁� "pwd" 灏嗕細鎵ц鍛戒护骞惰緭鍑烘暟鎹紱
+
+### 5.22 鏃ュ織鑷姩娓呯悊
+XXL-JOB鏃ュ織涓昏鍖呭惈濡備笅涓ら儴鍒嗭紝鍧囨敮鎸佹棩蹇楄嚜鍔ㄦ竻鐞嗭紝璇存槑濡備笅锛�
+- 璋冨害涓績鏃ュ織琛ㄦ暟鎹細鍙�熷姪閰嶇疆椤� "xxl.job.logretentiondays" 璁剧疆鏃ュ織琛ㄦ暟鎹繚瀛樺ぉ鏁帮紝杩囨湡鏃ュ織鑷姩娓呯悊锛涜鎯呭彲鏌ョ湅涓婃枃閰嶇疆璇存槑锛�
+- 鎵ц鍣ㄦ棩蹇楁枃浠舵暟鎹細鍙�熷姪閰嶇疆椤� "xxl.job.executor.logretentiondays" 璁剧疆鏃ュ織鏂囦欢鏁版嵁淇濆瓨澶╂暟锛岃繃鏈熸棩蹇楄嚜鍔ㄦ竻鐞嗭紱璇︽儏鍙煡鐪嬩笂鏂囬厤缃鏄庯紱
+
+
+## 鍏�佺増鏈洿鏂版棩蹇�
+### 6.1 鐗堟湰 V1.1.x锛屾柊鐗规�2015-12-05]
+**銆愪簬V1.1.x鐗堟湰锛孹XL-JOB姝e紡搴旂敤浜庢垜鍙革紝鍐呴儴瀹氬埗鍒悕涓� 鈥淔errari鈥濓紝鏂版帴鍏ュ簲鐢ㄦ帹鑽愪娇鐢ㄦ渶鏂扮増鏈��**
+- 1銆佺畝鍗曪細鏀寔閫氳繃Web椤甸潰瀵逛换鍔¤繘琛孋RUD鎿嶄綔锛屾搷浣滅畝鍗曪紝涓�鍒嗛挓涓婃墜锛�
+- 2銆佸姩鎬侊細鏀寔鍔ㄦ�佷慨鏀逛换鍔$姸鎬侊紝鍔ㄦ�佹殏鍋�/鎭㈠浠诲姟锛屽嵆鏃剁敓鏁堬紱
+- 3銆佹湇鍔A锛氫换鍔′俊鎭寔涔呭寲鍒癿ysql涓紝Job鏈嶅姟澶╃劧鏀寔闆嗙兢锛屼繚璇佹湇鍔A锛�
+- 4銆佷换鍔A锛氭煇鍙癑ob鏈嶅姟鎸傛帀锛屼换鍔′細骞虫粦鍒嗛厤缁欏叾浠栫殑鏌愪竴鍙板瓨娲绘湇鍔★紝鍗充娇鎵�鏈夋湇鍔℃寕鎺夛紝閲嶅惎鏃舵垨琛ュ伩鎵ц涓㈠け浠诲姟锛�
+- 5銆佷竴涓换鍔″彧浼氬湪鍏朵腑涓�鍙版湇鍔″櫒涓婃墽琛岋紱
+- 6銆佷换鍔′覆琛屾墽琛岋紱
+- 7銆佹敮鎸佽嚜瀹氫箟鍙傛暟锛�
+- 8銆佹敮鎸佽繙绋嬩换鍔℃墽琛岀粓姝紱
+
+### 6.2 鐗堟湰 V1.2.x锛屾柊鐗规�2016-01-17]
+- 1銆佹敮鎸佷换鍔″垎缁勶紱
+- 2銆佹敮鎸佲�滄湰鍦颁换鍔♀�濄�佲�滆繙绋嬩换鍔♀�濓紱
+- 3銆佸簳灞傞�氳鏀寔涓ょ鏂瑰紡锛孲ervlet鏂瑰紡 + JETTY鏂瑰紡锛�
+- 4銆佹敮鎸佲�滀换鍔℃棩蹇椻�濓紱
+- 5銆佹敮鎸佲�滀覆琛屾墽琛屸�濓紝骞惰鎵ц锛�
+
+ 璇存槑锛歏1.2鐗堟湰灏嗙郴缁熸灦鏋勬寜鍔熻兘鎷嗗垎涓猴細
+
+ - 璋冨害妯″潡锛堣皟搴︿腑蹇冿級锛氳礋璐g鐞嗚皟搴︿俊鎭紝鎸夌収璋冨害閰嶇疆鍙戝嚭璋冨害璇锋眰锛�
+ - 鎵ц妯″潡锛堟墽琛屽櫒锛夛細璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫锛�
+ - 閫氳妯″潡锛氳礋璐h皟搴︽ā鍧楀拰浠诲姟妯″潡涔嬮棿鐨勪俊鎭�氳锛�
+ 浼樼偣锛�
+
+ - 瑙h�︼細浠诲姟妯″潡鎻愪緵浠诲姟鎺ュ彛锛岃皟搴︽ā鍧楃淮鎶よ皟搴︿俊鎭紝涓氬姟鐩镐簰鐙珛锛�
+ - 楂樻墿灞曟�э紱
+ - 绋冲畾鎬э紱
+
+### 6.3 鐗堟湰 V1.3.0锛屾柊鐗规�2016-05-19]
+- 1銆侀仐寮冣�滄湰鍦颁换鍔♀�濇ā寮忥紝鎺ㄨ崘浣跨敤鈥滆繙绋嬩换鍔♀�濓紝鏄撲簬绯荤粺瑙h�︼紝浠诲姟瀵瑰簲鐨凧obHandler缁熺О涓衡�滄墽琛屽櫒鈥濓紱
+- 2銆侀仐寮冣�渟ervlet鈥濇柟寮忓簳灞傜郴缁熼�氳锛屾帹鑽愪娇鐢↗ETTY鏂瑰紡锛岃皟搴�+鍥炶皟鍙屽悜閫氳锛岄噸鏋勯�氳閫昏緫锛�
+- 3銆乁I浜や簰浼樺寲锛氬乏渚ц彍鍗曞睍寮�鐘舵�佷紭鍖栵紝鑿滃崟椤归�変腑鐘舵�佷紭鍖栵紝浠诲姟鍒楄〃鎵撳紑琛ㄦ牸鏈夊帇缂╀紭鍖栵紱
+- 4銆併�愰噸瑕併�戔�滄墽琛屽櫒鈥濈粏鍒嗕负锛欱EAN銆丟LUE涓ょ寮�鍙戞ā寮忥紝绠�浠嬭涓嬫枃锛�
+
+ 鈥滄墽琛屽櫒鈥� 妯″紡绠�浠嬶細
+ - BEAN妯″紡鎵ц鍣細姣忎釜鎵ц鍣ㄩ兘鏄疭pring鐨勪竴涓狟ean瀹炰緥锛孹XL-JOB閫氳繃娉ㄨВ@JobHandler璇嗗埆鍜岃皟搴︽墽琛屽櫒锛�
+ -GLUE妯″紡鎵ц鍣細姣忎釜鎵ц鍣ㄥ搴斾竴娈典唬鐮侊紝鍦ㄧ嚎Web缂栬緫鍜岀淮鎶わ紝鍔ㄦ�佺紪璇戠敓鏁堬紝鎵ц鍣ㄨ礋璐e姞杞紾LUE浠g爜鍜屾墽琛岋紱
+
+### 6.4 鐗堟湰 V1.3.1锛屾柊鐗规�2016-05-23]
+- 1銆佹洿鏂伴」鐩洰褰曠粨鏋勶細
+ - /xxl-job-admin -------------------- 銆愯皟搴︿腑蹇冦�戯細璐熻矗绠$悊璋冨害淇℃伅锛屾寜鐓ц皟搴﹂厤缃彂鍑鸿皟搴﹁姹傦紱
+ - /xxl-job-core ----------------------- 鍏叡渚濊禆
+ - /xxl-job-executor-example ------ 銆愭墽琛屽櫒銆戯細璐熻矗鎺ユ敹璋冨害璇锋眰骞舵墽琛屼换鍔¢�昏緫锛�
+ - /db ---------------------------------- 寤鸿〃鑴氭湰
+ - /doc --------------------------------- 鐢ㄦ埛鎵嬪唽
+- 2銆佸湪鏂扮殑鐩綍缁撴瀯涓婏紝鍗囩骇浜嗙敤鎴锋墜鍐岋紱
+- 3銆佷紭鍖栦簡涓�浜涗氦浜掑拰UI锛�
+
+### 6.5 鐗堟湰 V1.3.2锛屾柊鐗规�2016-05-28]
+- 1銆佽皟搴﹂�昏緫杩涜浜嬪姟鍖呰9锛�
+- 2銆佹墽琛屽櫒寮傛鍥炶皟鎵ц鏃ュ織锛�
+- 3銆併�愰噸瑕併�戝湪 鈥滆皟搴︿腑蹇冣�� 鏀寔HA鐨勫熀纭�涓婏紝鎵╁睍鎵ц鍣ㄧ殑Failover鏀寔锛屾敮鎸侀厤缃鎵ц鏈熷湴鍧�锛�
+
+### 6.6 鐗堟湰 V1.4.0 鏂扮壒鎬2016-07-24]
+- 1銆佷换鍔′緷璧�: 閫氳繃浜嬩欢瑙﹀彂鏂瑰紡瀹炵幇, 浠诲姟鎵ц鎴愬姛骞跺洖璋冩椂浼氫富鍔ㄨЕ鍙戜竴娆″瓙浠诲姟鐨勮皟搴�, 澶氫釜瀛愪换鍔$敤閫楀彿鍒嗛殧;
+- 2銆佹墽琛屽櫒搴曞眰瀹炵幇浠g爜杩涜閲嶅害閲嶆瀯, 浼樺寲搴曞眰寤鸿〃鑴氭湰;
+- 3銆佹墽琛屽櫒涓换鍔$嚎绋嬪垎缁勯�昏緫浼樺寲: 涔嬪墠鏍规嵁鎵ц鍣↗obHandler杩涜绾跨▼鍒嗙粍,褰撳涓换鍔″鐢↗obhanlder浼氬鑷寸浉浜掗樆濉炪�傜幇鏀逛负鏍规嵁璋冨害涓績浠诲姟杩涜浠诲姟绾跨▼鍒嗙粍,浠诲姟涓庝换鍔℃墽琛岀浉浜掗殧绂�;
+- 4銆佹墽琛屽櫒璋冨害閫氳鏂规浼樺寲, 閫氳繃Hex + HC瀹炵幇寤鸿RPC閫氳鍗忚, 浼樺寲浜嗛�氳鍙傛暟鐨勭淮鎶ゅ拰瑙f瀽娴佺▼;
+- 5銆佽皟搴︿腑蹇�, 鏂板缓/缂栬緫浠诲姟, 鐣岄潰灞炴�ц皟鏁�:
+ - 5.1銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "浠诲姟鍚岼obName"灞炴�� ,璇ュ睘鎬ф敼涓虹郴缁熻嚜鍔ㄧ敓鎴�: 璇ュ瓧娈典箣鍓嶄富瑕佺敤浜庡湪 "璋冨害涓績" 鍞竴鏍囩ず涓�涓换鍔�, 鐜板疄鎰忎箟涓嶅ぇ, 鍥犳璁″垝娣″寲鎺夎瀛楁,鏀逛负绯荤粺鐢熸垚UUID,浠庤�岀畝鍖栦换鍔℃柊寤虹殑鎿嶄綔;
+ - 5.2銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "GLUE妯″紡" 澶嶉�夋浣嶇疆璋冩暣, 鏀逛负璐磋繎"JobHandler"杈撳叆妗嗗彸渚�;
+ - 5.3銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "鎶ヨ闃堝��" 灞炴��;
+ - 5.4銆佷换鍔℃柊澧�/缂栬緫鐣岄潰涓幓闄� "瀛愪换鍔ey" 灞炴��, 姣忎釜浠诲姟鍏ㄥ眬浠诲姟Key鍙互浠庝换鍔″垪琛ㄨ幏鍙�, 褰撴湰浠诲姟鎵ц缁撴潫涓旀垚鍔熷悗, 灏嗕細鏍规嵁瀛愪换鍔ey鍖归厤瀛愪换鍔″苟涓诲姩瑙﹀彂涓�娆″瓙浠诲姟鎵ц;
+- 6銆侀棶棰樹慨澶�:
+ - 6.1銆佹墽琛屽櫒jetty鍏抽棴浼樺寲,瑙e喅涓�澶勫彲鑳藉鑷磈etty鏃犳硶鍏抽棴鐨勯棶棰�;
+ - 6.2銆佹墽琛屽櫒浠诲姟缁堟鏃�,鎵ц闃熷垪鍥炶皟浼樺寲,瑙e喅涓�澶勫鑷翠换鍔℃棤娉曞洖璋冪殑闂锛�
+ - 6.3銆佽皟搴︿腑蹇冧腑鍒楄〃鍒嗛〉鍙傛暟浼樺寲,瑙e喅涓�澶勫洜鏈嶅姟鍣ㄩ檺鍒秔ost闀垮害鑰屽紩璧风殑闂;
+ - 6.4銆佹墽琛屽櫒Jobhandler娉ㄨВ浼樺寲,瑙e喅涓�澶勫洜浜嬪姟浠g悊瀵艰嚧鐨勫鍣ㄦ棤娉曞姞杞絁obHandler鐨勯棶棰�;
+ - 6.5銆佽繙绋嬭皟搴︿紭鍖�,绂佺敤retry绛栫暐,瑙e喅涓�澶勫彲鑳藉鑷撮噸澶嶈皟鐢ㄧ殑闂;
+
+Tips: 鍘嗗彶鐗堟湰(V1.3.x)鐩墠宸茬粡Release鑷崇ǔ瀹氱増鏈�, 杩涘叆缁存姢闃舵, 鍦板潃瑙佸垎鏀� [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 銆傛柊鐗规�у皢浼氬湪master鍒嗘敮鎸佺画鏇存柊銆�
+
+### 6.7 鐗堟湰 V1.4.1 鏂扮壒鎬2016-09-06]
+- 1銆侀」鐩垚鍔熸帹閫乵aven涓ぎ浠撳簱, 涓ぎ浠撳簱鍦板潃浠ュ強渚濊禆濡備笅:
+ ```
+ <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
+ <dependency>
+ <groupId>com.xuxueli</groupId>
+ <artifactId>xxl-job-core</artifactId>
+ <version>${鏈�鏂扮ǔ瀹氱増}</version>
+ </dependency>
+ ```
+- 2銆佷负閫傞厤涓ぎ浠撳簱瑙勫垯, 椤圭洰groupId浠巆om.xxl鏀逛负com.xuxueli銆�
+- 3銆佺郴缁熺増鏈笉鍦ㄧ淮鎶ゅ湪椤圭洰璺焢om涓�,鍚勪釜瀛愭ā鍧楀崟鐙厤缃増鏈厤缃�,瑙e喅瀛愭ā鍧楁棤娉曞崟鐙紪璇戠殑闂;
+- 4銆佸簳灞俁PC閫氳,浼犺緭鏁版嵁鐨勫瓧鑺傞暱搴︾粺璁¤鍒欎紭鍖�,鍙妭鐪�50%鏁版嵁浼犺緭閲�;
+- 5銆両JobHandler鍙栨秷浠诲姟杩斿洖鍊�,鍘熼�氳繃杩斿洖鍊煎垽鏂墽琛岀姸鎬�,閫昏緫鏀逛负:榛樿浠诲姟鎵ц鎴愬姛,浠呭湪鎹曡幏寮傚父鏃惰瀹氫换鍔℃墽琛屽け璐ャ��
+- 6銆佺郴缁熷叕鍏卞脊妗嗗姛鑳�,鎻掍欢鍖�;
+- 7銆佸簳灞傝〃缁撴瀯,琛ㄦ槑缁熶竴澶у啓;
+- 8銆佽皟搴︿腑蹇�,寮傚父澶勭悊鍣↗SON鍝嶅簲鐨凜ontentType淇敼,淇娴忚鍣ㄤ笉璇嗗埆鐨勯棶棰�;
+
+### 6.8 鐗堟湰 V1.4.2 鏂扮壒鎬2016-09-29]
+- 1銆佹帹閫佹柊鐗堟湰 V1.4.2 鑷充腑澶粨搴�, 澶х増鏈� V1.4 杩涘叆缁存姢闃舵;
+- 2銆佷换鍔℃柊澧炴椂,浠诲姟鍒楄〃鍋忕Щ闂淇;
+- 3銆佷慨澶嶄竴澶勫洜bootstrap涓嶆敮鎸佹ā鎬佹閲嶅彔鑰屽鑷寸殑鏍峰紡閿欎贡鐨勯棶棰�, 鍦ㄤ换鍔$紪杈戞椂浼氬嚭鐜拌闂;
+- 4銆佽皟搴﹁秴鏃跺拰Handler鍖归厤涓嶅埌鏃�,璋冨害鐘舵�佷紭鍖�;
+- 5銆佸洜catch寮傚父,瀵艰嚧浠诲姟涓嶅彲缁堟鐨勯棶棰�,缁欏嚭瑙e喅鏂规, 瑙佹枃妗�;
+
+### 6.9 鐗堟湰 V1.5.0 鐗规�2016-11-13]
+- 1銆佷换鍔℃敞鍐�: 鎵ц鍣ㄤ細鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐屼换鍔�, 璋冨害涓績灏嗕細鑷姩鍙戠幇娉ㄥ唽鐨勪换鍔″苟瑙﹀彂鎵ц銆�
+- 2銆�"鎵ц鍣�" 鏂板鍙傛暟 "AppName" : 鏄瘡涓墽琛屽櫒闆嗙兢鐨勫敮涓�鏍囩ずAppName, 骞跺懆鏈熸�т互AppName涓哄璞¤繘琛岃嚜鍔ㄦ敞鍐屻��
+- 3銆佽皟搴︿腑蹇冩柊澧炴爮鐩� "鎵ц鍣ㄧ鐞�" : 绠$悊鍦ㄧ嚎鐨勬墽琛屽櫒, 閫氳繃灞炴�ppName鑷姩鍙戠幇娉ㄥ唽鐨勬墽琛屽櫒銆傚彧鏈夎绠$悊鐨勬墽琛屽櫒鎵嶅厑璁歌浣跨敤;
+- 4銆�"浠诲姟缁�"灞炴�ф敼涓�"鎵ц鍣�": 姣忎釜浠诲姟闇�瑕佺粦瀹氭寚瀹氱殑鎵ц鍣�, 璋冨害鍦板潃閫氳繃缁戝畾鐨勬墽琛屽櫒鑾峰彇;
+- 5銆佹姏寮�"浠诲姟鏈哄櫒"灞炴��: 閫氳繃浠诲姟缁戝畾鐨勬墽琛屽櫒, 鑷姩鍙戠幇娉ㄥ唽鐨勮繙绋嬫墽琛屽櫒鍦板潃骞惰Е鍙戣皟搴﹁姹傘��
+- 6銆�"鍏叡渚濊禆"涓柊澧濪BGlueLoader,鍩轰簬鍘熺敓jdbc瀹炵幇GLUE婧愮爜鐨勫姞杞藉櫒,鍑忓皯绗笁鏂逛緷璧�(mybatis,spring-orm绛�);绮剧畝鍜屼紭鍖栨墽琛屽櫒娴嬮厤缃�(閽堝GLUE浠诲姟),闄嶄綆涓婃墜闅惧害;
+- 7銆佽〃缁撴瀯璋冩暣,搴曞眰閲嶆瀯浼樺寲;
+- 8銆�"璋冨害涓績"鑷姩娉ㄥ唽鍜屽彂鐜�,failover: 璋冨害涓績鍛ㄦ湡鎬ц嚜鍔ㄦ敞鍐�, 浠诲姟鍥炶皟鏃跺彲浠ユ劅鐭ュ湪绾跨殑鎵�鏈夎皟搴︿腑蹇冨湴鍧�, 閫氳繃failover鐨勬柟寮忚繘琛屼换鍔″洖璋�,閬垮厤鍥炶皟鍗曠偣椋庨櫓銆�
+
+### 6.10 鐗堟湰 V1.5.1 鐗规�2016-11-13]
+- 1銆佸簳灞備唬鐮侀噸鏋勫拰閫昏緫浼樺寲锛孭OM娓呯悊浠ュ強CleanCode锛�
+- 2銆丼ervlet/JSP Spec璁惧畾涓�3.0/2.2
+- 3銆丼pring鍗囩骇鑷�3.2.17.RELEASE鐗堟湰锛�
+- 4銆丣etty鍗囩骇鐗堟湰鑷�8.2.0.v20160908锛�
+- 5銆佸凡鎺ㄩ�乂1.5.0鍜孷1.5.1鑷矼aven涓ぎ浠撳簱锛�
+
+### 6.10 鐗堟湰 V1.5.2 鐗规�2017-02-28]
+- 1銆両P宸ュ叿绫昏幏鍙朓P閫昏緫浼樺寲锛孖P闈欐�佺紦瀛橈紱
+- 2銆佹墽琛屽櫒銆佽皟搴︿腑蹇冿紝鍧囨敮鎸佽嚜瀹氫箟娉ㄥ唽IP鍦板潃锛涜В鍐虫満鍣ㄥ缃戝崱鏃堕敊璇綉鍗℃敞鍐岀殑鎯呭喌锛�
+- 3銆佷换鍔¤法澶╂墽琛屾椂鐢熸垚澶氫唤鏃ュ織鏂囦欢鐨勯棶棰樹慨澶嶏紱
+- 4銆佸簳灞傛棩蹇楀簳灞傛棩蹇楄皟鏁达紝闈炴晱鎰熸棩蹇條evel璋冩暣涓篸ebug锛�
+- 5銆佸崌绾ф暟鎹簱杩炴帴姹燾3p0鐗堟湰锛�
+- 6銆佹墽琛屽櫒log4j閰嶇疆浼樺寲锛屽幓闄ゆ棤鏁堝睘鎬э紱
+- 7銆佸簳灞備唬鐮侀噸鏋勫拰閫昏緫浼樺寲浠ュ強CleanCode锛�
+- 8銆丟LUE渚濊禆娉ㄥ叆閫昏緫浼樺寲锛屾敮鎸佸埆鍚嶆敞鍏ワ紱
+
+### 6.11 鐗堟湰 V1.6.0 鐗规�2017-03-13]
+- 1銆侀�氳鏂规鍗囩骇锛屽師鍩轰簬HEX鐨勯�氳妯″瀷璋冩暣涓哄熀浜嶩TTP鐨凚-RPC鐨勯�氳妯″瀷锛�
+- 2銆佹墽琛屽櫒鏀寔鎵嬪姩璁剧疆鎵ц鍦板潃鍒楄〃锛屾彁渚涘紑鍏冲垏鎹娇鐢ㄦ敞鍐屽湴鍧�杩樻槸鎵嬪姩璁剧疆鐨勫湴鍧�锛�
+- 3銆佹墽琛屽櫒璺敱瑙勫垯锛氱涓�涓�佹渶鍚庝竴涓�佽疆璇€�侀殢鏈恒�佷竴鑷存�ASH銆佹渶涓嶇粡甯镐娇鐢ㄣ�佹渶杩戞渶涔呮湭浣跨敤銆佹晠闅滆浆绉伙紱
+- 4銆佽鑼冪嚎绋嬫ā鍨嬬粺涓�锛岀粺涓�绾跨▼閿�姣佹柟妗�(閫氳繃listener鎴杝top鏂规硶锛屽鍣ㄩ攢姣佹椂閿�姣佺嚎绋嬶紱Daemon鏂瑰紡鏈夋椂涓嶅お鐞嗘兂)锛�
+- 5銆佽鑼冪郴缁熼厤缃暟鎹紝閫氳繃閰嶇疆鏂囦欢缁熶竴绠$悊锛�
+- 6銆丆leanCode锛屾竻鐞嗘棤鏁堢殑鍘嗗彶鍙傛暟锛�
+- 7銆佸簳灞傛墿灞曟暟鎹粨鏋勪互鍙婄浉鍏宠〃缁撴瀯璋冩暣锛�
+- 8銆佹柊寤轰换鍔¢粯璁や负闈炶繍琛岀姸鎬侊紱
+- 9銆丟LUE妯″紡浠诲姟瀹炰緥鏇存柊閫昏緫浼樺寲锛屽師鏍规嵁瓒呮椂鏃堕棿鏇存柊鏀逛负鏍规嵁鐗堟湰鍙锋洿鏂帮紝婧愮爜鍙樺姩鐗堟湰鍙峰姞涓�锛�
+
+### 6.12 鐗堟湰 V1.6.1 鐗规�2017-03-25]
+- 1銆丷olling鏃ュ織锛�
+- 2銆乄ebIDE浜や簰閲嶆瀯锛�
+- 3銆侀�氳澧炲己鏍¢獙锛屾湁鏁堣繃婊ら潪姝e父璇锋眰锛�
+- 4銆佹潈闄愬寮烘牎楠岋紝閲囩敤鍔ㄦ�佺櫥褰昑OKEN锛堟帹鑽愭帴鍏ュ唴閮⊿SO锛夛紱
+- 5銆佹暟鎹簱閰嶇疆浼樺寲锛岃В鍐充贡鐮侀棶棰橈紱
+
+### 6.13 鐗堟湰 V1.6.2 鐗规�2017-04-25]
+- 1銆佽繍琛屾姤琛細鏀寔瀹炴椂鏌ョ湅杩愯鏁版嵁锛屽浠诲姟鏁伴噺銆佽皟搴︽鏁般�佹墽琛屽櫒鏁伴噺绛夛紱浠ュ強璋冨害鎶ヨ〃锛屽璋冨害鏃ユ湡鍒嗗竷鍥撅紝璋冨害鎴愬姛鍒嗗竷鍥剧瓑锛�
+- 2銆丣obHandler鏀寔璁剧疆浠诲姟杩斿洖鍊硷紝鍦ㄤ换鍔¢�昏緫涓彲浠ユ柟渚跨殑鎺у埗浠诲姟鎵ц缁撴灉锛�
+- 3銆佽祫婧愯矾寰勫寘鍚┖鏍兼垨涓枃鏃惰祫婧愭枃浠舵棤娉曞姞杞芥椂锛屾棤娉曞噯纭煡鐪嬪紓甯镐俊鎭殑闂澶勭悊銆�
+- 4銆佽矾鐢辩瓥瓒婁紭鍖栵細寰幆鍜孡FU璺敱绛栫暐璁℃暟鍣ㄨ嚜澧炴棤涓婇檺闂鍜岄娆¤矾鐢卞帇鍔涢泦涓湪棣栧彴鏈哄櫒鐨勯棶棰樹慨澶嶏紱
+
+### 6.14 鐗堟湰 V1.7.0 鐗规�2017-05-02]
+- 1銆佽剼鏈换鍔★細鏀寔浠LUE妯″紡寮�鍙戝拰杩愯鑴氭湰浠诲姟锛屽寘鎷琒hell銆丳ython鍜孏roovy绛夌被鍨嬭剼鏈�;
+- 2銆佹柊澧瀞pring-boot绫诲瀷鎵ц鍣╡xample椤圭洰锛�
+- 3銆佸崌绾etty鐗堟湰鑷�9.2锛�
+- 4銆佷换鍔¤繍琛屾棩蹇楃Щ闄og4j缁勪欢渚濊禆锛屾敼涓哄簳灞傝嚜涓诲疄鐜帮紝浠庤�屽彇娑堜簡瀵规棩蹇楃粍浠剁殑渚濊禆闄愬埗锛�
+- 5銆佹墽琛屽櫒绉婚櫎GlueLoader渚濊禆锛屾敼涓烘帹閫佹柟寮忓疄鐜帮紝浠庤�孏LUE婧愮爜鍔犺浇涓嶅啀渚濊禆JDBC锛�
+- 6銆佺櫥褰曟嫤鎴猂edirect鏃惰幏鍙栭」鐩悕锛岃В鍐抽潪鏍规嵁鐩綍鍙戝竷鏃惰烦杞�404闂锛�
+
+### 6.15 鐗堟湰 V1.7.1 鐗规�2017-05-08]
+- 1銆佽繍琛屾棩蹇楄鍐欑紪鐮佺粺涓�涓篣TF-8锛岃В鍐硍indows鐜涓嬫棩蹇椾贡鐮侀棶棰橈紱
+- 2銆侀�氳瓒呮椂鏃堕棿闄愬畾涓�10s锛岄伩鍏嶅紓甯告儏鍐典笅璋冨害绾跨▼鍗犵敤锛�
+- 3銆佹墽琛屽櫒锛宻erver鍚姩銆侀攢姣佸拰娉ㄥ唽閫昏緫璋冩暣锛�
+- 4銆丣ettyServer鍏抽棴閫昏緫浼樺寲锛屼慨澶嶆墽琛屽櫒鏃犳硶姝e父鍏抽棴瀵艰嚧绔彛鍗犵敤鍜岄绻佹墦鍗癱3p0鏃ュ織鐨勯棶棰橈紱
+- 5銆丣obHandler涓紑鍚瓙绾跨▼鏃讹紝鏀寔瀛愮嚎绋嬭緭鍑烘墽琛屾棩蹇楀苟閫氳繃Rolling鏌ョ湅銆�
+- 6銆佷换鍔℃棩蹇楁竻鐞嗗姛鑳斤紱
+- 7銆佸脊妗嗙粍浠剁粺涓�鏇挎崲涓簂ayer锛�
+- 8銆佸崌绾uartz鐗堟湰鑷�2.3.0锛�
+
+### 6.16 鐗堟湰 V1.7.2 鐗规�2017-05-17]
+- 1銆侀樆濉炲鐞嗙瓥鐣ワ細璋冨害杩囦簬瀵嗛泦鎵ц鍣ㄦ潵涓嶅強澶勭悊鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細鍗曟満涓茶锛堥粯璁わ級銆佷涪寮冨悗缁皟搴︺�佽鐩栦箣鍓嶈皟搴︼紱
+- 2銆佸け璐ュ鐞嗙瓥鐣ワ紱璋冨害澶辫触鏃剁殑澶勭悊绛栫暐锛岀瓥鐣ュ寘鎷細澶辫触鍛婅锛堥粯璁わ級銆佸け璐ラ噸璇曪紱
+- 3銆侀�氳鏃堕棿鎴宠秴鏃舵椂闂磋皟鏁翠负180s锛�
+- 4銆佹墽琛屽櫒涓庢暟鎹簱褰诲簳瑙h�︼紝浣嗘槸鎵ц鍣ㄩ渶瑕侀厤缃皟搴︿腑蹇冮泦缇ゅ湴鍧�銆傝皟搴︿腑蹇冩彁渚汚PI渚涙墽琛屽櫒鍥炶皟鍜屽績璺虫敞鍐屾湇鍔★紝鍙栨秷璋冨害涓績鍐呴儴jetty锛屽績璺冲懆鏈熻皟鏁翠负30s锛屽績璺冲け鏁堜负涓夊�嶅績璺筹紱
+- 5銆佹墽琛屽弬鏁扮紪杈戞椂涓㈠け闂淇锛�
+- 6銆佹柊澧炰换鍔℃祴璇旸emo锛屾柟渚垮湪寮�鍙戞椂杩涜浠诲姟閫昏緫娴嬭瘯锛�
+
+### 6.17 鐗堟湰 V1.8.0 鐗规�2017-07-17]
+- 1銆佷换鍔ron鏇存柊閫昏緫浼樺寲锛屾敼涓簉escheduleJob锛屽悓鏃堕槻姝ron閲嶅璁剧疆锛�
+- 2銆丄PI鍥炶皟鏈嶅姟澶辫触鐘舵�佺爜浼樺寲锛屾柟渚块棶棰樻帓鏌ワ紱
+- 3銆乆xlJobLogger鐨勬棩蹇楀鍙傛暟鏀寔锛�
+- 4銆佽矾鐢辩瓥鐣ユ柊澧� "蹇欑杞Щ" 妯″紡锛氭寜鐓ч『搴忎緷娆¤繘琛岀┖闂叉娴嬶紝绗竴涓┖闂叉娴嬫垚鍔熺殑鏈哄櫒閫夊畾涓虹洰鏍囨墽琛屽櫒骞跺彂璧疯皟搴︼紱
+- 5銆佽矾鐢辩瓥鐣ヤ唬鐮侀噸鏋勶紱
+- 6銆佹墽琛屽櫒閲嶅娉ㄥ唽闂淇锛�
+- 7銆佷换鍔$嚎绋嬭疆绌�30娆″悗鑷姩閿�姣侊紝闄嶄綆浣庨浠诲姟鐨勬棤鏁堢嚎绋嬫秷鑰椼��
+- 8銆佹墽琛屽櫒浠诲姟鎵ц缁撴灉鎵归噺鍥炶皟锛岄檷浣庡洖璋冮鐜囨彁鍗囨墽琛屽櫒鎬ц兘锛�
+- 9銆乻pringboot鐗堟湰鎵ц鍣紝鍙栨秷XML閰嶇疆锛屾敼涓虹被閰嶇疆鏂瑰紡锛�
+- 10銆佹墽琛屾棩蹇楋紝鏀寔鏍规嵁杩愯 "鐘舵��" 绛涢�夋棩蹇楋紱
+- 11銆佽皟搴︿腑蹇冧换鍔℃敞鍐屾娴嬮�昏緫浼樺寲锛�
+
+### 6.18 鐗堟湰 V1.8.1 鐗规�2017-07-30]
+- 1銆佸垎鐗囧箍鎾换鍔★細鎵ц鍣ㄩ泦缇ら儴缃叉椂锛屼换鍔¤矾鐢辩瓥鐣ラ�夋嫨"鍒嗙墖骞挎挱"鎯呭喌涓嬶紝涓�娆′换鍔¤皟搴﹀皢浼氬箍鎾Е鍙戦泦缇や腑鎵�鏈夋墽琛屽櫒鎵ц涓�娆′换鍔★紝鍙牴鎹垎鐗囧弬鏁板鐞嗗垎鐗囦换鍔★紱
+- 2銆佸姩鎬佸垎鐗囷細鍒嗙墖骞挎挱浠诲姟浠ユ墽琛屽櫒涓虹淮搴﹁繘琛屽垎鐗囷紝鏀寔鍔ㄦ�佹墿瀹规墽琛屽櫒闆嗙兢浠庤�屽姩鎬佸鍔犲垎鐗囨暟閲忥紝鍗忓悓杩涜涓氬姟澶勭悊锛涘湪杩涜澶ф暟鎹噺涓氬姟鎿嶄綔鏃跺彲鏄捐憲鎻愬崌浠诲姟澶勭悊鑳藉姏鍜岄�熷害銆�
+- 3銆佹墽琛屽櫒JobHandler绂佹鍛藉悕鍐茬獊锛�
+- 4銆佹墽琛屽櫒闆嗙兢鍦板潃鍒楄〃杩涜鑷劧鎺掑簭锛�
+- 5銆佽皟搴︿腑蹇冿紝DAO灞備唬鐮佺簿绠�浼樺寲骞朵笖鏂板娴嬭瘯鐢ㄤ緥瑕嗙洊锛�
+- 6銆佽皟搴︿腑蹇傾PI鏈嶅姟鏀逛负鑷爺RPC褰㈠紡锛岀粺涓�搴曞眰閫氳妯″瀷锛�
+- 7銆佹柊澧炶皟搴︿腑蹇傾PI鏈嶅姟娴嬭瘯Demo锛屾柟渚垮湪璋冨害涓績API鎵╁睍鍜屾祴璇曪紱
+- 8銆佷换鍔″垪琛ㄩ〉浜や簰浼樺寲锛屾洿鎹㈡墽琛屽櫒鍒嗙粍鏃惰嚜鍔ㄥ埛鏂颁换鍔″垪琛紝鏂板缓浠诲姟鏃堕粯璁ゅ畾浣嶅湪褰撳墠鎵ц鍣ㄤ綅缃紱
+- 9銆佽闂护鐗岋紙accessToken锛夛細涓烘彁鍗囩郴缁熷畨鍏ㄦ�э紝璋冨害涓績鍜屾墽琛屽櫒杩涜瀹夊叏鎬ф牎楠岋紝鍙屾柟AccessToken鍖归厤鎵嶅厑璁搁�氳锛�
+- 10銆乻pringboot鐗堟湰鎵ц鍣紝鍗囩骇鑷�1.5.6.RELEASE鐗堟湰锛�
+- 11銆佺粺涓�maven渚濊禆鐗堟湰绠$悊锛�
+
+### 6.19 鐗堟湰 V1.8.2 鐗规�2017-09-04]
+- 1銆侀」鐩富椤垫惌寤猴細鎻愪緵涓嫳鏂囨枃妗o細https://www.xuxueli.com/xxl-job
+- 2銆丣Final鎵ц鍣⊿ample绀轰緥椤圭洰锛�
+- 3銆佷簨浠惰Е鍙戯細闄や簡"Cron鏂瑰紡"鍜�"浠诲姟渚濊禆鏂瑰紡"瑙﹀彂浠诲姟鎵ц涔嬪锛屾敮鎸佸熀浜庝簨浠剁殑瑙﹀彂浠诲姟鏂瑰紡銆傝皟搴︿腑蹇冩彁渚涜Е鍙戜换鍔″崟娆℃墽琛岀殑API鏈嶅姟锛屽彲鏍规嵁涓氬姟浜嬩欢鐏垫椿瑙﹀彂銆�
+- 4銆佹墽琛屽櫒鎽橀櫎锛氭墽琛屽櫒閿�姣佹椂锛屼富鍔ㄩ�氱煡璋冨害涓績骞舵憳闄ゅ搴旀墽琛屽櫒鑺傜偣锛屾彁楂樻墽琛屽櫒鐘舵�佹劅鐭ョ殑鏃舵晥鎬с��
+- 5銆佹墽琛屽櫒鎵嬪姩璁剧疆IP鏃跺皢浼氱粦瀹欻ost锛�
+- 6銆佽鑼冮」鐩洰褰曪紝鏂逛究鎵╁睍澶氭墽琛屽櫒锛�
+- 7銆佽В鍐虫墽琛屽櫒鍥炶皟URL涓嶆敮鎸侀厤缃瓾TTPS鏃堕棶棰橈紱
+- 8銆佹墽琛屽櫒鍥炶皟绾跨▼閿�姣佸墠, 鎵归噺鍥炶皟闃熷垪涓暟鎹紝闃叉浠诲姟缁撴灉涓㈠け锛�
+- 9銆佽皟搴︿腑蹇冧换鍔$洃鎺х嚎绋嬮攢姣佹椂锛屾壒閲忓澶辫触浠诲姟鍛婅锛岄槻姝㈠憡璀︿俊鎭涪澶憋紱
+- 10銆佷换鍔℃棩蹇楁枃浠惰矾寰勬椂闂存埑鏍煎紡鍖栨椂SimpleDateFormat骞跺彂闂瑙e喅锛�
+
+### 6.20 鐗堟湰 V1.9.0 鐗规�2017-12-29]
+- 1銆佹柊澧濶utz鎵ц鍣⊿ample绀轰緥椤圭洰锛�
+- 2銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(NodeJS) "锛屾敮鎸丯odeJS鑴氭湰浠诲姟锛�
+- 3銆佽剼鏈换鍔hell銆丳ython鍜孨odejs绛夋敮鎸佽幏鍙栧垎鐗囧弬鏁帮紱
+- 4銆佸け璐ラ噸璇曪紝瀹屾暣鏀寔锛氳皟搴︿腑蹇冭皟搴﹀け璐ヤ笖鍚敤"澶辫触閲嶈瘯"绛栫暐鏃讹紝灏嗕細鑷姩閲嶈瘯涓�娆★紱鎵ц鍣ㄦ墽琛屽け璐ヤ笖鍥炶皟澶辫触閲嶈瘯鐘舵�侊紙鏂板澶辫触閲嶈瘯鐘舵�佽繑鍥炲�硷級鏃讹紝涔熷皢浼氳嚜鍔ㄩ噸璇曚竴娆★紱
+- 5銆佸け璐ュ憡璀︾瓥鐣ユ墿灞曪細榛樿鎻愪緵閭欢澶辫触鍛婅锛屽彲鎵╁睍鐭俊绛夛紝鎵╁睍浠g爜浣嶇疆涓� "JobFailMonitorHelper.failAlarm"锛�
+- 6銆佹墽琛屽櫒绔彛鏀寔鑷姩鐢熸垚(灏忎簬绛変簬0鏃�)锛岄伩鍏嶇鍙e畾涔夊啿绐侊紱
+- 7銆佽皟搴︽姤琛ㄤ紭鍖栵紝鏀寔鏃堕棿鍖洪棿绛涢�夛紱
+- 8銆丩og缁勪欢鏀寔杈撳嚭寮傚父鏍堜俊鎭紝搴曞眰瀹炵幇浼樺寲锛�
+- 9銆佸憡璀﹂偖浠舵牱寮忎紭鍖栵紝璋冩暣涓鸿〃鏍煎舰寮忥紝閭欢缁勪欢璋冩暣涓篶ommons-email绠�鍖栭偖浠舵搷浣滐紱
+- 10銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乯ackson绛夌瓑锛�
+- 11銆佷换鍔℃棩蹇楋紝璁板綍鍙戣捣璋冨害鐨勬満鍣ㄤ俊鎭紱
+- 12銆佷氦浜掍紭鍖栵紝濡傜櫥闄嗘敞閿�锛�
+- 13銆佷换鍔ron闀垮害鎵╁睍鏀寔鑷�128浣嶏紝鏀寔璐熻矗绫诲瀷Cron璁剧疆锛�
+- 14銆佹墽琛屽櫒鍦板潃褰曞叆浜や簰浼樺寲锛屽湴鍧�闀垮害鎵╁睍鏀寔鑷�512浣嶏紝鏀寔澶ц妯℃墽琛屽櫒闆嗙兢閰嶇疆锛�
+- 15銆佷换鍔″弬鏁扳�淚JobHandler.execute鈥濆叆鍙傛敼涓衡�淪tring params鈥濓紝澧炲己鍏ュ弬閫氱敤鎬с��
+- 16銆両JobHandler鎻愪緵init/destroy鏂规硶锛屾敮鎸佸湪鐩稿簲浠诲姟绾跨▼鍒濆鍖栧拰閿�姣佹椂杩涜闄勫姞鎿嶄綔锛�
+- 17銆佷换鍔℃敞瑙h皟鏁翠负 鈥淍JobHandler鈥濓紝涓庝换鍔℃娊璞℃帴鍙g粺涓�锛�
+- 18銆佷慨澶嶄换鍔$洃鎺х嚎绋嬭鑰楁椂浠诲姟闃诲鐨勯棶棰橈紱
+- 19銆佷慨澶嶄换鍔$洃鎺х嚎绋嬫棤娉曠洃鎺т换鍔¤Е鍙戝拰鎵ц鐘舵�佸潎鏈�0鐨勯棶棰橈紱
+- 20銆佹墽琛屽櫒鍔ㄦ�佷唬鐞嗗璞★紝鎷︽埅闈炰笟鍔℃柟娉曠殑鎵ц锛�
+- 21銆佷慨澶岼obThread鎹曡幏Error閿欒涓嶆洿鏂癑obLog鐨勯棶棰橈紱
+- 22銆佷慨澶嶄换鍔″垪琛ㄧ晫闈㈠乏渚ц彍鍗曞悎骞舵椂鏍峰紡閿欎贡闂锛�
+- 23銆佽皟搴︿腑蹇冮」鐩棩蹇楅厤缃敼涓簒ml鏂囦欢鏍煎紡锛�
+- 24銆丩og鍦板潃鏍煎紡鍏煎锛屾敮鎸侀潪"/"缁撳熬璺緞閰嶇疆锛�
+- 25銆佸簳灞傜郴缁熸棩蹇楃骇鍒鑼冭皟鏁达紝娓呯悊閬楃暀浠g爜锛�
+- 26銆佸缓琛⊿QL浼樺寲锛屾敮鎸佸悓姝ュ垱寤哄埗瀹氱紪鐮佺殑搴撳拰琛紱
+- 27銆佺郴缁熷畨鍏ㄦ�т紭鍖栵紝鐧婚檰Token鍐機ookie鏃惰繘琛孧D5鍔犲瘑锛屽悓鏃禖ookie鍚敤HttpOnly锛�
+- 28銆佹柊澧�"浠诲姟ID"灞炴�э紝绉婚櫎"JobKey"灞炴�э紝鍓嶈�呮壙鎷呮墍鏈夊姛鑳斤紝鏂逛究鍚庣画澧炲己浠诲姟渚濊禆鍔熻兘銆�
+- 29銆佷换鍔″惊鐜緷璧栭棶棰樹慨澶嶏紝閬垮厤瀛愪换鍔′笌鐖朵换鍔¢噸澶嶅鑷寸殑璋冨害姝诲惊鐜紱
+- 30銆佷换鍔″垪琛ㄦ柊澧炵瓫閫夋潯浠� "浠诲姟鎻忚堪"锛屽揩閫熸绱换鍔★紱
+- 31銆佹墽琛屽櫒Log鏂囦欢瀹氭湡娓呯悊鍔熻兘锛氭墽琛屽櫒鏂板閰嶇疆椤癸紙"xxl.job.executor.logretentiondays"锛夋棩蹇椾繚瀛樺ぉ鏁帮紝鏃ュ織鏂囦欢杩囨湡鑷姩鍒犻櫎銆�
+
+### 6.21 鐗堟湰 V1.9.1 鐗规�2018-02-22]
+- 1銆佸浗闄呭寲锛氳皟搴︿腑蹇冨疄鐜板浗闄呭寲锛屾敮鎸佷腑鏂囥�佽嫳鏂囦袱绉嶈瑷�锛岄粯璁や负涓枃銆�
+- 2銆佽皟搴︽姤琛ㄦ柊澧�"杩愯涓�"涓姸鎬侀」锛�
+- 3銆佽皟搴︽姤琛ㄤ紭鍖栵紝鎶ヨ〃SQL璋冧紭骞朵笖鏂板LocalCache缂撳瓨锛堢紦瀛樻椂闂�60s锛夛紝鎻愰珮澶ф暟鎹噺涓嬫姤琛ㄥ姞杞介�熷害锛�
+- 4銆佷慨澶嶆墦鍖呴儴缃叉椂璧勬簮鏂囦欢涔辩爜闂锛�
+- 5銆佷慨澶嶆柊鐗堟湰chrome婊氬姩鍒伴《閮ㄥけ鏁堥棶棰橈紱
+- 6銆佽皟搴︿腑蹇冮厤缃姞杞戒紭鍖栵紝鍙栨秷瀵归厤缃枃浠跺悕鐨勫己渚濊禆锛屾敮鎸佸姞杞界鐩橀厤缃紱
+- 7銆佷慨澶嶈剼鏈换鍔og鏂囦欢鏈甯竎lose鐨勯棶棰橈紱
+- 8銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乯ackson绛夌瓑锛�
+
+### 6.22 鐗堟湰 V1.9.2 鐗规�2018-10-05]
+- 1銆佷换鍔¤秴鏃舵帶鍒讹細鏂板浠诲姟灞炴�� "浠诲姟瓒呮椂鏃堕棿"锛屽苟鏀寔鑷畾涔夛紝浠诲姟杩愯瓒呮椂灏嗕細涓诲姩涓柇浠诲姟锛�
+- 2銆佷换鍔″け璐ラ噸璇曟鏁帮細鏂板浠诲姟灞炴�� "澶辫触閲嶈瘯娆℃暟"锛屽苟鏀寔鑷畾涔夛紝褰撲换鍔″け璐ユ椂灏嗕細鎸夌収棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇曪紱鍚屾椂鏀舵暃搴熷純鍏朵粬澶辫触閲嶈瘯绛栫暐锛屽璋冨害澶辫触銆佹墽琛屽け璐ャ�佺姸鎬佺爜澶辫触绛夛紱
+- 3銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(PHP) "锛屾敮鎸乸hp鑴氭湰浠诲姟锛�
+- 4銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(PowerShell) "锛屾敮鎸丳owerShell鑴氭湰浠诲姟锛�
+- 5銆佽皟搴﹀叏寮傛澶勭悊锛氫换鍔¤Е鍙戜箣鍚庯紝鎺ㄩ�佸埌璋冨害闃熷垪锛屽绾跨▼骞跺彂澶勭悊璋冨害璇锋眰锛屾彁楂樹换鍔¤皟搴﹂�熺巼鐨勫悓鏃讹紝閬垮厤鍥犵綉缁滈棶棰樺鑷磓uartz璋冨害绾跨▼闃诲鐨勯棶棰橈紱
+- 6銆佹墽琛屽櫒浠诲姟缁撴灉钀界洏浼樺寲锛氭墽琛屽櫒鍥炶皟澶辫触鏃跺皢浠诲姟缁撴灉鍐欑鐩橈紝寰呴噸鍚垨缃戠粶鎭㈠鏃堕噸璇曞洖璋冧换鍔$粨鏋滐紝闃叉浠诲姟鎵ц缁撴灉涓㈠け锛�
+- 7銆佷换鍔℃棩蹇楁煡璇㈤�熷害澶у箙鎻愬崌锛氱櫨涓囩骇鍒暟鎹噺鎼滅储閫熷害鎻愬崌1000鍊嶏紱
+- 8銆佽皟搴︿腑蹇冩彁渚汚PI鏈嶅姟锛屾敮鎸侀�氳繃API鏈嶅姟瀵逛换鍔¤繘琛屾煡璇€�佹柊澧炪�佹洿鏂般�佸惎鍋滅瓑鎿嶄綔锛�
+- 9銆佸簳灞傝嚜鐮擫og缁勪欢鍙傛暟鍗犱綅绗︽敼涓�"{}"锛屽苟淇鎵撳嵃鏈夊弬鏃ュ織鏃跺弬鏁颁笉鍖归厤瀵艰嚧鎶ラ敊鐨勯棶棰橈紱
+- 10銆佷换鍔″洖璋冪粨鏋滀紭鍖栵紝鏀寔灞曠ず鍦≧olling log涓紝鏂逛究闂鎺掓煡锛�
+- 11銆佸簳灞侺ocalCache缁勪欢鍏煎鎬т紭鍖栵紝鏀寔jdk9銆乯dk10鍙婁互涓婄増鏈紪璇戦儴缃诧紱
+- 12銆佸憡璀﹂偖浠跺浐瀹氫娇鐢� UTF-8 缂栫爜鏍煎紡锛屼慨澶嶇敱鏈哄櫒缂栫爜瀵艰嚧鐨勯偖浠朵贡鐮侀棶棰橈紱
+- 13銆佸憡璀﹂偖浠朵腑灞曠ず澶辫触鍛婅淇℃伅锛�
+- 14銆佸憡璀﹂偖绠辨敮鎸丼SL閰嶇疆锛�
+- 15銆乄indow鏈哄櫒涓婩ile.separator涓嶅吋瀹归棶棰樹慨澶嶏紱
+- 16銆佽剼鏈换鍔″紓甯窵og杈撳嚭浼樺寲锛�
+- 17銆佷换鍔$嚎绋嬪仠姝㈠彉閲忎慨楗扮浼樺寲锛�
+- 18銆佽剼鏈换鍔og鏂囦欢娴佸叧闂紭鍖栵紱
+- 19銆佷换鍔℃姤琛ㄦ垚鍔熴�佸け璐ュ拰杩涜涓粺璁¢棶棰樹慨澶嶏紱
+- 20銆佹牳蹇冧緷璧朇ore鍐呴儴鍥介檯鍖栧鐞嗭紱
+- 21銆侀粯璁uartz绾跨▼鏁拌皟鏁翠负50锛�
+- 22銆佹柊澧炲乏渚ц彍鍗�"杩愯鎶ヨ〃"锛�
+- 23銆佹墽琛屽櫒鎵嬪姩璁剧疆IP鏃跺彇娑堢粦瀹欻ost鐨勬搷浣滐紝璇P浠呬緵鎵ц鍣ㄦ敞鍐屼娇鐢紱淇鎸囧畾澶栫綉IP鏃舵棤娉曠粦瀹氭墽琛屽櫒Host鐨勯棶棰橈紱
+- 24銆佸彇娑堢埗瀛愪换鍔′笉鍙噸澶嶇殑闄愬埗锛屾敮鎸佸惊鐜换鍔¤Е鍙戠瓑鐗规畩鍦烘櫙锛�
+- 25銆佷换鍔¤皟搴﹀娉ㄤ腑鏍囨敞浠诲姟瑙﹀彂绫诲瀷锛屽Cron瑙﹀彂銆佺埗浠诲姟瑙﹀彂銆丄PI瑙﹀彂绛夌瓑锛屾柟渚挎帓鏌ヨ皟搴︽棩蹇楋紱
+- 26銆佸簳灞傛棩蹇楃粍浠禨impleDateFormat绾跨▼瀹夊叏闂淇锛�
+- 27銆佹墽琛屽櫒閫氳绾跨▼浼樺寲锛宑orePoolSize浠�256闄嶄綆鑷�32锛�
+- 28銆佷换鍔℃棩蹇楄〃鐘舵�佸瓧娈电被鍨嬩紭鍖栵紱
+- 29銆丟LUE鑴氭湰鏂囦欢鑷姩娓呯悊鍔熻兘锛屽強鏃舵竻鐞嗚繃鏈熻剼鏈枃浠讹紱
+- 30銆佹墽琛屽櫒娉ㄥ唽鏂瑰紡鍒囨崲浼樺寲锛屽垏鎹㈣嚜鍔ㄦ敞鍐屾椂涓诲姩鍚屾鍦ㄧ嚎鏈哄櫒锛岄伩鍏嶆墽琛屽櫒涓虹┖鐨勯棶棰橈紱
+- 31銆佽法骞冲彴锛氶櫎浜嗘彁渚汮ava銆丳ython銆丳HP绛夊崄鏉ョ浠诲姟妯″紡涔嬪锛屾柊澧炴彁渚涘熀浜嶩TTP鐨勪换鍔℃ā寮忥紱
+- 32銆佸簳灞俁PC搴忓垪鍖栧崗璁皟鏁翠负hessian2锛�
+- 33銆佷慨澶嶈〃瀛楁 鈥渢.order鈥濅笌鏁版嵁搴撳叧閿瓧鍐茬獊鏌ヨ澶辫触鐨勯棶棰橈紝
+- 34銆佷换鍔″睘鎬ф灇涓� "浠诲姟妯″紡銆侀樆濉炵瓥鐣�" 鍥介檯鍖栦紭鍖栵紱
+- 35銆佸垎鐗囦换鍔″け璐ラ噸璇曚紭鍖栵紝浠呴噸璇曞綋鍓嶅け璐ョ殑鍒嗙墖锛�
+- 36銆佷换鍔¤Е鍙戞椂鏀寔鍔ㄦ�佷紶鍙傦紝璋冨害涓績涓嶢PI鏈嶅姟鍧囨彁渚涙彁渚涘姩鎬佸弬鏁板姛鑳斤紱
+- 37銆佷换鍔℃墽琛屾棩蹇椼�佽皟搴︽棩蹇楀瓧娈电被鍨嬭皟鏁达紝鏀逛负text绫诲瀷骞跺彇娑堝瓧鏁伴檺鍒讹紱
+- 38銆丟LUE浠诲姟鑴氭湰瀛楁绫诲瀷璋冩暣锛屾敼涓簃ediumtext绫诲瀷锛屾彁楂楪LUE闀垮害涓婇檺锛�
+- 39銆佷换鍔$洃鎺х嚎绋婰og杈撳嚭浼樺寲锛岃繍琛屼腑浠诲姟鐨勭洃鎺og鏀逛负debug绾у埆锛屽噺灏戦潪鏍稿績鏃ュ織閲忥紱
+- 40銆侀」鐩緷璧栧叏閲忓崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆丣ackson銆乬roovy绛夌瓑锛�
+- 41銆乨ocker鏀寔锛氳皟搴︿腑蹇冩彁渚� Dockerfile 鏂逛究蹇�熸瀯寤篸ocker闀滃儚锛�
+
+### 6.23 鐗堟湰 V2.0.0 Release Notes[2018-11-04]
+- 1銆佽皟搴︿腑蹇冭縼绉诲埌 springboot锛�
+- 2銆佸簳灞傞�氳缁勪欢杩佺Щ鑷� xxl-rpc锛�
+- 3銆佸鍣ㄥ寲锛氭彁渚涘畼鏂筪ocker闀滃儚锛屽苟瀹炴椂鏇存柊鎺ㄩ�乨ockerhub锛坉ocker pull xuxueli/xxl-job-admin锛夛紝杩涗竴姝ュ疄鐜颁骇鍝佸紑绠卞嵆鐢紱
+- 4銆佹柊澧炴棤妗嗘灦鎵ц鍣⊿ample绀轰緥椤圭洰 "xxl-job-executor-sample-frameless"銆備笉渚濊禆绗笁鏂规鏋讹紝鍙渶main鏂规硶鍗冲彲鍚姩杩愯鎵ц鍣紱
+- 5銆佸懡浠よ浠诲姟锛氬師鐢熸彁渚涢�氱敤鍛戒护琛屼换鍔andler锛圔ean浠诲姟锛�"CommandJobHandler"锛夛紱涓氬姟鏂瑰彧闇�瑕佹彁渚涘懡浠よ鍗冲彲锛�
+- 6銆佷换鍔$姸鎬佷紭鍖栵紝浠呰繍琛岀姸鎬�"NORMAL"浠诲姟鍏宠仈鑷硄uartz锛岄檷浣巕uartz搴曞眰鏁版嵁瀛樺偍涓庤皟搴﹀帇鍔涳紱
+- 7銆佷换鍔$姸鎬佽鑼冿細鏂板浠诲姟榛樿鍋滄鐘舵�侊紝浠诲姟鏇存柊鏃朵繚鎸佷换鍔$姸鎬佷笉鍙橈紱
+- 8銆両P鑾峰彇閫昏緫浼樺寲锛屼紭鍏堥亶鍘嗙綉鍗℃潵鑾峰彇鍙敤IP锛�
+- 9銆佷换鍔℃柊澧炵殑API鏈嶅姟鎺ュ彛杩斿洖浠诲姟ID锛屾柟渚胯皟鐢ㄦ柟瀹炵敤锛�
+- 10銆佺粍浠跺寲浼樺寲锛岀Щ闄ゅ spring 鐨勪緷璧栵細闈瀞pring搴旂敤閫夌敤 "XxlJobExecutor" 銆乻pring搴旂敤閫夌敤 "XxlJobSpringExecutor" 浣滀负鎵ц鍣ㄧ粍浠讹紱
+- 11銆佷换鍔ollingLog灞曠ず閫昏緫浼樺寲锛屼慨澶嶈秴鏃朵换鍔℃棤娉曟煡鐪嬬殑闂锛�
+- 12銆佸椤筓I缁勪欢鍗囩骇鍒版渶鏂扮増鏈紝濡傦細CodeMirror銆丒charts銆丣query 绛夛紱
+- 13銆侀」鐩緷璧栧崌绾� groovy 鑷宠緝鏂扮ǔ瀹氱増鏈紱pom娓呯悊锛�
+- 14銆佸瓙浠诲姟澶辫触閲嶈瘯閲嶈瘯閫昏緫浼樺寲锛屽瓙浠诲姟澶辫触鏃跺皢浼氭寜鐓у叾棰勮鐨勫け璐ラ噸璇曟鏁颁富鍔ㄨ繘琛岄噸璇�
+
+### 6.23 鐗堟湰 v2.0.1 Release Notes[2018-11-09]
+- 1銆佸乏渚ц彍鍗曟姌鍙犲姩鐢婚棶棰樹慨澶嶏紱
+- 2銆佽皟搴︽姤琛ㄦ棩鏈熷垎甯冨浘榛樿鍊肩粺涓�锛�
+- 3銆乫reemarker瀵规暟瀛楅粯璁ゅ姞鍗冨垎浣嶉棶棰樹慨澶嶏紝瑙e喅鏃ュ織ID琚垎闅斿鑷存煡鐪嬫棩蹇楀け璐ラ棶棰橈紱
+- 4銆佸簳灞傞�氳缁勪欢鍗囩骇锛屼慨澶嶉�氳寮傚父鏃舵棤鏁堢瓑寰呯殑闂锛�
+- 5銆佹墽琛屽櫒鍚姩涔嬪悗jetty鍋滄鐨勯棶棰樹慨澶嶏紱
+
+### 6.24 鐗堟湰 v2.0.2 Release Notes[2019-04-20]
+- 1銆佸簳灞傞�氳鏂规浼樺寲锛氬崌绾ц緝鏂扮増鏈瑇xl-rpc锛岀敱"JETTY"鏂规璋冩暣涓�"NETTY_HTTP"鏂规锛屾墽琛屽櫒鍐呭祵netty-http-server鎻愪緵鏈嶅姟锛岃皟搴︿腑蹇冨鐢ㄥ鍣ㄧ鍙f彁渚涙湇鍔★紱
+- 2銆佷换鍔″憡璀﹂�昏緫璋冩暣锛屾敼涓洪�氳繃鎵弿澶辫触鏃ュ織鏂瑰紡瑙﹀彂銆備竴鏂归潰绮剧‘鎵弿澶辫触浠诲姟锛岄檷浣庢壂鎻忚寖鍥达紱鍙︿竴鏂归潰鍙栨秷鍐呭瓨闃熷垪锛岄檷浣庣嚎绋嬪唴瀛樻秷鑰楋紱
+- 3銆丵uartz瑙﹀彂绾跨▼姹犲簾寮冨苟鏇挎崲涓� "XxlJobThreadPool"锛岄檷浣庣嚎绋嬪垏鎹€�佸唴瀛樺崰鐢ㄥ甫鏉ョ殑娑堣�楋紝鎻愰珮璋冨害鎬ц兘锛�
+- 4銆佽皟搴︾嚎绋嬫睜闅旂锛屾媶鍒嗕负"Fast"鍜�"Slow"涓や釜绾跨▼姹狅紝1鍒嗛挓绐楀彛鏈熷唴浠诲姟鑰楁椂杈�500ms瓒呰繃10娆★紝璇ョ獥鍙f湡鍐呭垽瀹氫负鎱换鍔★紝鎱换鍔¤嚜鍔ㄩ檷绾ц繘鍏�"Slow"绾跨▼姹狅紝閬垮厤鑰楀敖璋冨害绾跨▼锛屾彁楂樼郴缁熺ǔ瀹氭�э紱
+- 5銆佹墽琛屽櫒鐑儴缃叉椂JobHandler閲嶆柊鍒濆鍖栵紝淇鐢辨瀵艰嚧鐨� "jobhandler naming conflicts." 闂锛�
+- 6銆佹柊澧濩lass鐨勫姞杞界紦瀛橈紝瑙e喅棰戠箒鍔犺浇Class浼氫娇jvm鐨勬柟娉曞尯绌洪棿涓嶈冻瀵艰嚧OOM鐨勯棶棰橈紱
+- 7銆佷换鍔℃敮鎸佹洿鎹㈢粦瀹氭墽琛屽櫒锛屾柟渚夸换鍔″垎缁勮浆绉诲拰绠$悊锛�
+- 8銆佽皟搴︿腑蹇冨憡璀﹂偖浠跺彂閫佺粍浠舵敼涓� 鈥渟pring-boot-starter-mail鈥濓紱
+- 9銆佽浣忓瘑鐮佸姛鑳戒紭鍖栵紝閫変腑鏃舵案涔呰浣忥紱闈為�変腑鏃跺叧闂祻瑙堝櫒鍗崇櫥鍑猴紱
+- 10銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽quartz銆乻pring銆乯ackson銆乬roovy銆亁xl-rpc绛夌瓑锛�
+- 11銆佺簿绠�椤圭洰锛屽彇娑堢涓夋柟渚濊禆锛屽 commons-collections4銆乧ommons-lang3 ;
+- 12銆佹墽琛屽櫒鍥炶皟鏃ュ織钀界洏鏂规澶嶇敤RPC搴忓垪鍖栨柟妗堬紝骞剁Щ闄ackson渚濊禆锛�
+- 13銆佸簳灞侺og璋冧紭锛屽簲鐢ㄦ甯哥粓姝㈠彇娑堝紓甯告爤淇℃伅鎵撳嵃锛�
+- 14銆佷氦浜掍紭鍖栵紝灏介噺閬垮厤鏂板紑椤甸潰绐楀彛锛涗粎WebIDE鏀寔鏂板紑椤碉紝骞舵彁渚涚獥鍙e揩閫熷叧闂寜閽紱浠诲姟鍚�佸仠銆佸垹闄ゃ�佽Е鍙戠瓑杞绘搷浣滄彁绀烘敼涓簍oast鏂瑰紡锛�
+- 15銆佷换鍔℃殏鍋溿�佸垹闄や紭鍖栵紝閬垮厤quartz delete涓嶅畬鏁村鑷翠换鍔¤剰鏁版嵁锛�
+- 16銆佷换鍔″洖璋冦�佸績璺虫敞鍐屾垚鍔熸棩蹇椾紭鍖栵紝闈炴牳蹇冨父瑙勬棩蹇楄皟鏁翠负debug绾у埆锛岄檷浣庡啑浣欐棩蹇楄緭鍑猴紱
+- 17銆佽皟鏁撮椤垫姤琛ㄩ粯璁ゅ尯闂翠负鏈懆锛岄伩鍏嶆棩蹇楅噺澶ぇ鏌ヨ缂撴參锛�
+- 18銆丩RU璺敱鏇存柊涓嶅強鏃堕棶棰樹慨澶嶏紱
+- 19銆佷换鍔″け璐ュ憡璀﹂偖浠跺彂閫侀�昏緫浼樺寲锛�
+- 20銆佽皟搴︽棩蹇楁帓搴忛�昏緫璋冩暣涓烘寜鐓ц皟搴︽椂闂村�掑簭锛屽吋瀹筎IDB绛変富閿笉杩炵画鏃ュ織瀛樺偍缁勪欢锛�
+- 21銆佹墽琛屽櫒浼橀泤鍋滄満浼樺寲锛�
+- 22銆佽繛鎺ユ睜閰嶇疆浼樺寲锛屽寮鸿繛鎺ユ湁鏁堟�ч獙璇侊紱
+- 23銆丣obHandler#msg闀垮害闄愬埗锛屼慨澶嶅紓甯告儏鍐典笅鏃ュ織瓒呴暱瀵艰嚧鍐呭瓨婧㈠嚭鐨勯棶棰橈紱
+- 24銆佸崌绾xl-rpc鑷宠緝鏂扮増鏈紝淇springboot 2.x鐗堟湰鍏煎鎬ч棶棰橈紱
+
+### 6.25 鐗堟湰 v2.1.0 Release Notes[2019-07-07]
+- 1銆佽嚜鐮旇皟搴︾粍浠讹紝绉婚櫎quartz渚濊禆锛氫竴鏂归潰鏄负浜嗙簿绠�绯荤粺闄嶄綆鍐椾綑渚濊禆锛屽彟涓�鏂归潰鏄负浜嗘彁渚涚郴缁熺殑鍙帶搴︿笌绋冲畾鎬э紱
+ - 瑙﹀彂锛氬崟鑺傜偣鍛ㄦ湡鎬цЕ鍙戯紝杩愯浜嬩欢濡俤elayqueue锛�
+ - 璋冨害锛氶泦缇ょ珵浜夛紝璐熻浇鏂瑰紡鍗忓悓澶勭悊锛岄攣绔炰簤-鏇存柊瑙﹀彂淇℃伅-鎺ㄩ�佹椂闂磋疆-閿侀噴鏀�-閿佺珵浜夛紱
+- 2銆佸簳灞傝〃缁撴瀯閲嶆瀯锛氱Щ闄�11寮爍uartz鐩稿叧琛紝骞跺鐜版湁琛ㄧ粨鏋勪紭鍖栨⒊鐞嗭紱
+- 3銆佷换鍔℃棩蹇椾富閿皟鏁翠负long鏁版嵁绫诲瀷锛岄槻姝㈡捣閲忔棩蹇楁儏鍐典笅鏁版嵁婧㈠嚭锛�
+- 4銆佸簳灞傜嚎绋嬫ā鍨嬮噸鏋勶細绉婚櫎Quartz绾跨▼姹狅紝闄嶄綆绯荤粺绾跨▼涓庡唴瀛樺紑閿�锛�
+- 5銆佺敤鎴风鐞嗭細鏀寔鍦ㄧ嚎绠$悊绯荤粺鐢ㄦ埛锛屽瓨鍦ㄧ鐞嗗憳銆佹櫘閫氱敤鎴蜂袱绉嶈鑹诧紱
+- 6銆佹潈闄愮鐞嗭細鎵ц鍣ㄧ淮搴﹁繘琛屾潈闄愭帶鍒讹紝绠$悊鍛樻嫢鏈夊叏閲忔潈闄愶紝鏅�氱敤鎴烽渶瑕佸垎閰嶆墽琛屽櫒鏉冮檺鍚庢墠鍏佽鐩稿叧鎿嶄綔锛�
+- 7銆佽皟搴︾嚎绋嬫睜鍙傛暟璋冧紭锛�
+- 8銆佹敞鍐岃〃绱㈠紩浼樺寲锛岀紦瑙i攣琛ㄩ棶棰橈紱
+- 9銆佹柊澧濲boot鎵ц鍣⊿ample绀轰緥椤圭洰锛�
+- 10銆佷换鍔″垪琛ㄤ紭鍖栵紝鏀寔鏍规嵁 "浠诲姟鐘舵��"銆�"璐熻矗浜�" 灞炴�х瓫閫変换鍔★紱
+- 11銆佷换鍔℃棩蹇楀垪琛ㄤ氦浜掍紭鍖栵紝鎿嶄綔鎸夐挳鍚堝苟涓哄垎鍓叉寜閽紱
+- 12銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乻pringboot銆乬roovy銆亁xl-rpc绛夌瓑锛涘苟娓呯悊鍐椾綑POM锛�
+- 13銆佸崌绾xl-rpc鑷宠緝鏂扮増鏈紝淇浠g悊鏈嶅姟鍒濆鍖栨椂杩滅▼鏈嶅姟涓嶅彲鐢ㄥ鑷撮暱杩炲啑浣欏垱寤虹殑闂;
+- 14銆侀椤佃皟搴︽姤琛ㄧ殑鏃ユ湡鎺掑簭鍦═IDB涓嬩贡搴忛棶棰樹慨澶嶏紱
+- 15銆佽皟搴︿腑蹇冧笌鎵ц鍣ㄥ弻鍚戦�氳瓒呮椂鏃堕棿璋冩暣涓�3s锛�
+- 16銆佽皟搴︾粍浠堕攢姣佹祦绋嬩紭鍖栵紝鍏堝仠姝㈣皟搴︾嚎绋嬶紝鐒跺悗绛夊緟鏃堕棿杞唴瀛橀噺浠诲姟澶勭悊瀹屾垚锛屾渶缁堥攢姣佹椂闂磋疆绾跨▼锛�
+- 17銆佹墽琛屽櫒鍥炶皟绾跨▼浼樺寲锛屽洖璋冨湴鍧�涓虹┖鏃堕攢姣侀棶棰樹慨澶嶏紱
+- 18銆丠ttpJobHandler浼樺寲锛屽搷搴旀暟鎹寚瀹歎TF-8鏍煎紡锛岄伩鍏嶄腑鏂囦贡鐮侊紱
+- 19銆佷唬鐮佷紭鍖栵紝ConcurrentHashMap鍙橀噺绫诲瀷鏀逛负ConcurrentMap锛岄伩鍏嶅洜涓嶅悓鐗堟湰瀹炵幇涓嶅悓瀵艰嚧鐨勫吋瀹规�ч棶棰橈紱
+
+
+### 6.26 鐗堟湰 v2.1.1 Release Notes[2019-11-24]
+- 1銆� 璋冨害涓績鏃ュ織鑷姩娓呯悊鍔熻兘锛堣嚦姝わ紝璋冨害涓績/鎵ц鍣ㄥ潎鏀寔鏃ュ織鑷姩娓呯悊锛岃繃鏈熷ぉ鏁板潎榛樿璁剧疆涓�30澶╋級锛氳皟搴︿腑蹇冩柊澧為厤缃」锛�"xxl.job.logretentiondays"锛夋棩蹇椾繚瀛樺ぉ鏁帮紝杩囨湡鏃ュ織鑷姩娓呯悊锛涜В鍐虫捣閲忔棩蹇楁儏鍐典笅鏃ュ織琛ㄦ參SQL闂锛涢檺鍒跺ぇ浜庣瓑浜�7鏃剁敓鏁堬紝鍚﹀垯鍏抽棴娓呯悊鍔熻兘锛岄粯璁や负30锛�
+- 2銆� 璋冨害鎶ヨ〃浼樺寲锛氭柊澧炴棩蹇楁姤琛ㄧ殑瀛樺偍琛紝涓夊ぉ鍐呯殑浠诲姟鏃ュ織浼氫互姣忓垎閽熶竴娆$殑棰戠巼寮傛鍚屾鑷虫姤琛ㄤ腑锛涗换鍔℃姤琛ㄤ粎璇诲彇鎶ヨ〃鏁版嵁锛屾瀬澶ф彁鍗囧姞杞介�熷害锛�
+- 3銆� Cron鍦ㄧ嚎鐢熸垚宸ュ叿锛氫换鍔℃柊澧炪�佺紪杈戞閫氳繃缁勪欢鍦ㄧ嚎鐢熸垚Cron琛ㄨ揪寮忥紱
+- 4銆� Cron涓嬫鎵ц鏃堕棿鏌ヨ锛氭敮鎸侀�氳繃鐣岄潰鍦ㄧ嚎鏌ョ湅鍚庣画杩炵画5娆℃墽琛屾椂闂达紱
+- 5銆� 璋冨害涓績鏂板搴旂敤鍋ュ悍妫�鏌ュ姛鑳斤紝鍊熷姪鈥渟pring-boot-starter-actuator鈥濓紝鐩稿鍦板潃 鈥�/actuator/health鈥濓紱
+- 6銆� DB鑴氭湰榛樿缂栫爜鏀逛负utf8mb4锛屼慨澶嶅瓧绗︿贡鐮侀棶棰�(寤鸿Mysql鐗堟湰5.7+)锛�
+- 7銆� 璋冨害涓績浠诲姟骞冲潎鍒嗛厤锛岃Е鍙戠粍浠舵瘡娆¤幏鍙栦笌绾跨▼姹犳暟閲忕浉鍏虫暟閲忕殑浠诲姟锛岄伩鍏嶅ぇ閲忎换鍔¢泦涓湪鍗曚釜璋冨害涓績闆嗙兢鑺傜偣锛�
+- 8銆� 浠诲姟瑙﹀彂缁勪欢浼樺寲锛岄鍔犺浇棰戠巼姝e父1s涓�娆★紝褰撻鍔犺浇杞┖鏃朵富鍔ㄤ紤鐪犱竴涓姞杞藉懆鏈燂紝鍔ㄦ�侀檷浣庡姞杞介鐜囦粠鑰岄檷浣嶥B鍘嬪姏锛�
+- 9銆� 璋冨害缁勪欢浼樺寲锛氶拡瀵规案杩滀笉浼氳Е鍙戠殑Cron绂佹閰嶇疆鍜屽惎鍔紱浠诲姟Cron鏈�鍚庝竴娆¤Е鍙戝悗鍐嶄篃涓嶄細瑙﹀彂鏃讹紝姣斿涓�娆℃�т换鍔★紝涓诲姩鍋滄鐩稿叧浠诲姟锛�
+- 10銆丏B閲嶈繛浼樺寲锛屼慨澶岲B瀹曟満閲嶈繛鍚庝换鍔¤皟搴﹀仠姝㈢殑闂锛岄噸杩炲悗鑷姩鍔犲叆璋冨害闆嗙兢瑙﹀彂浠诲姟璋冨害锛�
+- 11銆佹敞鍐岀洃鎺х嚎绋嬩紭鍖栵紝闄嶄綆姝婚攣鍑犵巼锛�
+- 12銆佽皟搴︿腑蹇冩棩蹇楀垹闄や紭鍖栵紝鏀逛负鍒嗛〉鑾峰彇ID骞舵牴鎹甀D鍒犻櫎鐨勬柟寮忥紝閬垮厤鎵归噺鍒犻櫎娴烽噺鏃ュ織瀵艰嚧姝婚攣闂锛�
+- 13銆佷换鍔¢噸璇曟椂鍙傛暟涓㈠け鐨勯棶棰樹慨澶嶏紱
+- 14銆佽皟搴︿腑蹇冪Щ闄QL涓殑 "now()" 鍑芥暟锛涢泦缇ら儴缃叉椂涓嶅啀渚濊禆DB鏃堕挓锛屼粎闇�瑕佷繚璇佽皟搴︿腑蹇冨簲鐢ㄨ妭鐐规椂閽熶竴鑷村嵆鍙紱
+- 15銆佷换鍔¤Е鍙戠粍浠跺姞杞介『搴忚皟鏁达紝閬垮厤灏忔鐜囨儏鍐典笅缁勪欢闅忔満鍔犺浇椤哄簭瀵艰嚧鐨処18N鐨凬PE闂;
+- 16銆丣obThread鑷攢姣佷紭鍖栵紝閬垮厤骞跺彂瑙﹀彂瀵艰嚧triggerQueue涓换鍔′涪澶遍棶棰橈紱
+- 17銆佽皟搴︿腑蹇冨瘑鐮侀檺鍒�18浣嶏紝淇淇敼瀵嗙爜瓒呰繃18浣嶆棤娉曠櫥闄嗙殑闂锛�
+- 18銆佷换鍔″憡璀︾粍浠跺垎椤靛弬鏁版棤鏁堥棶棰樹慨澶嶏紱
+- 19銆佸崌绾xl-rpc鐗堟湰锛氭湇鍔$绾跨▼浼樺寲锛岄檷浣庣嚎绋嬪唴瀛樺紑閿�锛汭pUtil浼樺寲锛氬鍔犺繛閫氭�ф牎锛岃繃婊ゆ槑纭潪娉曠殑缃戝崱锛�
+- 20銆佽皟搴︿腑蹇冨洖璋傾PI鏈嶅姟鏀逛负restful鏂瑰紡锛�
+- 21銆乁I浼樺寲锛屼换鍔″垪琛ㄥ拰鏃ュ織鍒楄〃鏁版嵁琛ㄦ牸瀹藉害姣斾緥璋冩暣锛岄伩鍏嶆暟鎹崲琛屾彁鍗囦綋楠岋紱
+- 22銆佺櫥褰曠晫闈㈠彇娑堥粯璁ゅ~鍐欑殑鐧诲綍璐﹀彿瀵嗙爜锛�
+- 23銆佹墽琛屽櫒琛ㄥ睘鎬ц皟鏁达紝"椤哄簭" 灞炴�ц皟鏁翠负鏁村瀷锛岃В鍐虫墽琛屽櫒鏁版嵁杈冨鏃舵棤娉曟纭帓搴忕殑闂锛�
+- 24銆佷换鍔″垪琛ㄤ氦浜掍紭鍖栵紝鏀寔鏌ョ湅浠诲姟鎵�灞炴墽琛屽櫒鐨勬敞鍐岃妭鐐癸紱
+- 25銆侀」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛屽spring銆乻pring-boot銆乵ybatis銆乻lf4j銆乬roovy绛夌瓑锛�
+
+### 6.27 鐗堟湰 v2.1.2 Release Notes[2019-12-12]
+- 1銆佹柟娉曚换鍔℃敮鎸侊細鐢卞師鏉ュ熀浜嶫obHandler绫讳换鍔″紑鍙戞柟寮忥紝浼樺寲涓烘敮鎸佸熀浜庢柟娉曠殑浠诲姟寮�鍙戞柟寮忥紱鍥犳锛屽彲浠ユ敮鎸佸崟涓被涓紑鍙戝涓换鍔℃柟娉曪紝杩涜绫诲鐢�
+```
+@XxlJob("demoJobHandler")
+public ReturnT<String> execute(String param) {
+ XxlJobLogger.log("hello world");
+ return ReturnT.SUCCESS;
+}
+```
+- 2銆佺Щ闄ommons-exec锛岄噰鐢ㄥ師鐢熸柟寮忓疄鐜帮紝闄嶄綆绗笁鏂逛緷璧栵紱
+- 3銆佹墽琛屽櫒鍥炶皟涔辩爜闂淇锛�
+- 4銆佽皟搴︿腑蹇僤ispatcher servlet鍔犺浇椤哄簭浼樺寲锛�
+- 5銆佹墽琛屽櫒鍥炶皟鍦板潃https鍏煎鏀寔锛�
+- 6銆佸涓」鐩緷璧栧崌绾ц嚦杈冩柊绋冲畾鐗堟湰锛�
+- 娉ㄦ剰锛氭渶鏂扮増鏈� "XxlJobSpringExecutor" 閫昏緫鏈夎皟鏁达紝鍘嗗彶椤圭洰涓缁勪欢鐨勯厤缃柟寮忚鍙傝�僑ample绀轰緥椤圭洰杩涜璋冩暣锛屽挨鍏舵敞鎰忛渶瑕佺Щ闄ょ粍浠剁殑init鍜宒estroy鏂规硶锛�
+
+
+### TODO LIST
+- 1銆佷换鍔″垎鐗囪矾鐢憋細鍒嗙墖閲囩敤涓�鑷存�ash绠楁硶璁$畻鍑哄敖閲忕ǔ瀹氱殑鍒嗙墖椤哄簭锛屽嵆浣挎敞鍐屾満鍣ㄥ瓨鍦ㄦ尝鍔ㄤ篃涓嶄細寮曡捣鍒嗘壒鍒嗙墖椤哄簭澶х殑娉㈠姩锛涚洰鍓嶉噰鐢↖P鑷劧鎺掑簭锛屽彲浠ユ弧瓒抽渶姹傦紝寰呭畾锛�
+- 2銆佷换鍔″崟鏈哄绾跨▼锛氭彁鍗囦换鍔″崟鏈哄苟琛屽鐞嗚兘鍔涳紱
+- 3銆佽皟搴︿换鍔′紭鍏堢骇锛�
+- 4銆佸鏁版嵁搴撴敮鎸侊紝鍦ㄩ噸鍐欏苟绉婚櫎Quartz鐨勫熀纭�涓婏紝DAO灞傞�氳繃JPA瀹炵幇锛屼笉闄愬埗鏁版嵁搴撶被鍨嬶紱
+- 5銆佹墽琛屽櫒Log娓呯悊鍔熻兘锛氳皟搴︿腑蹇僉og鍒犻櫎鏃跺悓姝ュ垹闄ゆ墽琛屽櫒涓殑Log鏂囦欢锛�
+- 6銆佷换鍔¤嚜鍔ㄦ敞鍐岋細Bean妯″紡浠诲姟锛孞obHandler鑷姩浠庢墽琛屽櫒涓煡璇㈠睍绀轰负涓嬫媺妗嗭紝閫夋嫨鍚庤嚜鍔ㄥ~鍏呬换鍔″悕绉扮瓑灞炴�э紱寰呰�冭檻锛屽洜涓轰换鍔¤嚜鍔ㄦ敞鍐屽皢浼氬鑷翠换鍔¢毦浠ョ鐞嗘帶鍒讹紱
+- 7銆丄PI浜嬩欢瑙﹀彂绫诲瀷浠诲姟锛堟洿绫讳技MQ娑堟伅锛夋敮鎸�"鍔ㄦ�佷紶鍙傘�佸欢鏃舵秷璐�"锛涜绫诲瀷浠诲姟涓嶈蛋璋冨害缁勪欢锛屽崟鐙缓绔婱Q娑堟伅琛紝璋冨害涓績绔炰簤瑙﹀彂锛涘緟瀹氾紝璇ュ姛鑳戒笌 XXL-MQ 鍐茬獊锛岃鍦烘櫙寤鸿鐢ㄥ悗鑰咃紱
+- 8銆佽皟搴︾嚎绋嬫睜鏀逛负鍗忕▼鏂瑰紡瀹炵幇锛屽ぇ骞呴檷浣庣郴缁熷唴瀛樻秷鑰楋紱
+- 9銆佷换鍔°�佹墽琛屽櫒鏁版嵁鍏ㄩ噺鏈湴缂撳瓨锛涙柊澧炴秷鎭〃骞挎挱閫氱煡锛�
+- 10銆佸繖纰岃浆绉讳紭鍖栵紝鍏ㄩ儴鏈哄櫒蹇欑鏃朵笉鍐嶇洿鎺ュけ璐ワ紱
+- 11銆佸け璐ラ噸璇曢棿闅旓紱
+- 12銆丼impleTrigger锛氶櫎Cron澶栵紝鏀寔璁剧疆鍥哄畾鏃堕棿闂撮殧瑙﹀彂锛�
+- 13銆佽皟搴︽棩蹇楀垪琛ㄥ姞涓婃墽琛屾椂闀垮垪锛屽苟鏀寔鎺掑簭锛�
+- 14銆丏AG娴佺▼浠诲姟锛氭浛鎹㈠瓙浠诲姟锛屾敮鎸佸弬鏁颁紶閫掞細閰嶇疆骞跺垪鐨�"a-b銆乥-c"璺緞鍒楄〃锛屾瀯鎴愪覆琛屻�佸苟琛屻�乨ag浠诲姟娴佺▼锛�"dagre-d3"缁樺浘锛涗换鍔′緷璧栵紝娴佺▼鍥撅紝瀛愪换鍔�+浼氱浠诲姟锛屽悇鑺傜偣鏃ュ織锛涙敮鎸佹牴鎹垚鍔熴�佸け璐ラ�夋嫨鍒嗘敮锛�
+- 15銆佹棩鏈熻繃婊わ細鏀寔澶氫釜鏃堕棿娈垫帓闄わ紱
+- 16銆佸憡璀﹂偖浠跺唴瀹癸紝鏀寔鑷畾涔夋ā鏉块厤缃紱
+- 17銆佹殏鍋滅姸鎬侊紝鏀寔Cron 涓虹┖锛�
+- 18銆佹柊澧炰换鍔¤繍琛屾ā寮� "GLUE妯″紡(GO) "锛屾敮鎸丟O浠诲姟锛�
+- 19銆佹敞鍐屼腑蹇冧紭鍖栵紝瀹炴椂鎬ф敞鍐屽彂鐜帮細蹇冭烦娉ㄥ唽闂撮殧10s锛宺efresh澶辫触鍒欓娆℃敞鍐屽苟绔嬪嵆鏇存柊娉ㄥ唽淇℃伅锛屽績璺崇被浼硷紱30s杩囨湡閿�姣侊紱
+- 20銆佹彁渚涙墽琛屽櫒Docker闀滃儚锛�
+- 21銆佽剼鏈换鍔★紝鏀寔鏁版嵁鍙傛暟锛屾柊鐗堟湰浠呮敮鎸佸崟鍙傛暟涓嶆敮鎸侀渶瑕佸吋瀹癸紱
+- 22銆丟LUE 妯″紡 Web Ide 鐗堟湰瀵规瘮鍔熻兘锛�
+- 23銆佹壒閲忚皟搴︼細璋冨害璇锋眰鍏ueue锛岃皟搴︾嚎绋嬫壒閲忚幏鍙栬皟搴﹁姹傚苟鍙戣捣杩滅▼璋冨害锛涙彁楂樼嚎绋嬫晥鐜囷紱
+- 24銆佸璇█鎵ц鍣細绾﹀畾璺ㄨ瑷�閫氳鏂规锛屼互鍙婇�氳鎺ュ彛锛�
+- 25銆佺Щ闄ommons-exec锛岄噰鐢ㄥ師鐢熷疄鐜帮紱
+- 26銆佽皟搴︿腑蹇僇DK鐗堟湰璋冩暣涓篔DK8锛屼粠鑰屽崌绾ц嚦鏈�鏂扮増鏈琒pringBoot锛�
+- 27銆佹墽琛屽櫒鏈嶅姟绔彛涓庢敞鍐岀鍙e垎绂伙紝鏀寔docker鍔ㄦ�侀殢鏈虹鍙o紱
+- 28銆佹墽琛屽櫒绔彛澶嶇敤锛屽鐢ㄥ鍣ㄧ鍙f彁渚涢�氳鏈嶅姟锛�
+- 29銆佽嚜瀹氫箟澶辫触閲嶈瘯鏃堕棿闂撮殧锛�
+- 30銆佸垎鐗囦换鍔″叏閮ㄦ垚鍔熷悗瑙﹀彂瀛愪换鍔★紱
+- 31銆佷换鍔″鍒跺姛鑳斤紱鐐瑰嚮澶嶅埗鏄脊鍑烘柊寤轰换鍔″脊妗嗭紝骞跺垵濮嬪寲琚鍒朵换鍔′俊鎭紱
+- 32銆丄ccessToken鎸夌収鎵ц鍣ㄧ淮搴﹁缃紱鎺у埗璋冨害銆佸洖璋冿紱
+- 33銆佷换鍔℃墽琛屼竴娆$殑鏃跺�欐寚瀹欼P锛�
+- 34銆侀�氳璋冩暣锛涘弻鍚慔TTP锛屽洖璋冨拰鍏朵粬API鑷畾涔堿ccessToken锛孯estful锛屾墽琛屽櫒澶嶇敤瀹瑰櫒绔彛锛�
+- 35銆佺埗瀛愪换鍔″弬鏁颁紶閫掞紱娴佺▼浠诲姟绛夛紝閫忎紶鍔ㄦ�佸弬鏁帮紱
+- 36銆佹柊澧炴墽琛屽櫒鎻忚堪銆佷换鍔℃弿杩板睘鎬э紱
+
+
+## 涓冦�佸叾浠�
+
+### 7.1 椤圭洰璐$尞
+娆㈣繋鍙備笌椤圭洰璐$尞锛佹瘮濡傛彁浜R淇涓�涓猙ug锛屾垨鑰呮柊寤� [Issue](https://github.com/xuxueli/xxl-job/issues/) 璁ㄨ鏂扮壒鎬ф垨鑰呭彉鏇淬��
+
+### 7.2 鐢ㄦ埛鎺ュ叆鐧昏
+鏇村鎺ュ叆鐨勫叕鍙革紝娆㈣繋鍦� [鐧昏鍦板潃](https://github.com/xuxueli/xxl-job/issues/1 ) 鐧昏锛岀櫥璁颁粎浠呬负浜嗕骇鍝佹帹骞裤��
+
+### 7.3 寮�婧愬崗璁拰鐗堟潈
+浜у搧寮�婧愬厤璐癸紝骞朵笖灏嗘寔缁彁渚涘厤璐圭殑绀惧尯鎶�鏈敮鎸併�備釜浜烘垨浼佷笟鍐呴儴鍙嚜鐢辩殑鎺ュ叆鍜屼娇鐢ㄣ��
+
+- Licensed under the GNU General Public License (GPL) v3.
+- Copyright (c) 2015-present, xuxueli.
+
+---
+### 鎹愯禒
+鏃犺鎹愯禒閲戦澶氬皯閮借冻澶熻〃杈炬偍杩欎唤蹇冩剰锛岄潪甯告劅璋� 锛氾級 [鍓嶅線鎹愯禒](https://www.xuxueli.com/page/donate.html )
diff --git "a/Source/BladeX/blade-ops/blade-xxljob-admin/doc/XXL-JOB\346\236\266\346\236\204\345\233\276.pptx" "b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB\346\236\266\346\236\204\345\233\276.pptx"
similarity index 100%
rename from "Source/BladeX/blade-ops/blade-xxljob-admin/doc/XXL-JOB\346\236\266\346\236\204\345\233\276.pptx"
rename to "Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/XXL-JOB\346\236\266\346\236\204\345\233\276.pptx"
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/doc/db/tables_xxl_job.sql b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/db/tables_xxl_job.sql
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/doc/db/tables_xxl_job.sql
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/db/tables_xxl_job.sql
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/doc/nacos/blade-xxljob-admin-dev.yaml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/nacos/blade-xxljob-admin-dev.yaml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/doc/nacos/blade-xxljob-admin-dev.yaml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/doc/nacos/blade-xxljob-admin-dev.yaml
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/pom.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/pom.xml
new file mode 100644
index 0000000..f3a5786
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/pom.xml
@@ -0,0 +1,125 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-xxljob-admin</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.test.skip>true</maven.test.skip>
+
+ <xxl-rpc.version>1.5.0</xxl-rpc.version>
+
+ <spring.version>4.3.25.RELEASE</spring.version>
+ <spring-boot.version>1.5.22.RELEASE</spring-boot.version>
+ <mybatis-spring-boot-starter.version>1.3.5</mybatis-spring-boot-starter.version>
+ <mysql-connector-java.version>5.1.48</mysql-connector-java.version>
+
+ <slf4j-api.version>1.7.29</slf4j-api.version>
+ <junit.version>4.12</junit.version>
+
+ <groovy.version>2.5.8</groovy.version>
+
+ <maven-source-plugin.version>3.2.0</maven-source-plugin.version>
+ <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
+ <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
+ <maven-war-plugin.version>3.2.3</maven-war-plugin.version>
+ </properties>
+
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </dependency>
+ <!-- freemarker-starter -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-freemarker</artifactId>
+ </dependency>
+
+ <!-- mail-starter -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-mail</artifactId>
+ </dependency>
+ <!-- starter-actuator -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ </dependency>
+ <!-- mybatis-starter锛歮ybatis + mybatis-spring + tomcat-jdbc锛坉efault锛� -->
+ <dependency>
+ <groupId>org.mybatis.spring.boot</groupId>
+ <artifactId>mybatis-spring-boot-starter</artifactId>
+ <version>${mybatis-spring-boot-starter.version}</version>
+ </dependency>
+ <!-- mysql -->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ </dependency>
+ <!-- xxl-job-core -->
+ <dependency>
+ <groupId>com.xuxueli</groupId>
+ <artifactId>xxl-job-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java
new file mode 100644
index 0000000..3ae7b79
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java
@@ -0,0 +1,17 @@
+package com.vci.ubcs.xxl.job.admin;
+
+import com.vci.ubcs.common.constant.LauncherConstant;
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+
+/**
+ * @author xuxueli 2018-10-28 00:38:13
+ */
+@UbcsCloudApplication
+public class JobAdminApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(LauncherConstant.APPLICATION_XXLJOB_ADMIN_NAME, JobAdminApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/IndexController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/IndexController.java
new file mode 100644
index 0000000..ee49cf2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/IndexController.java
@@ -0,0 +1,93 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.controller.annotation.PermissionLimit;
+import com.vci.ubcs.xxl.job.admin.service.LoginService;
+import com.vci.ubcs.xxl.job.admin.service.XxlJobService;
+import com.xxl.job.core.biz.model.ReturnT;
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * index controller
+ * @author xuxueli 2015-12-19 16:13:16
+ */
+@Controller
+public class IndexController {
+
+ @Resource
+ private XxlJobService xxlJobService;
+ @Resource
+ private LoginService loginService;
+
+
+ @RequestMapping("/")
+ public String index(Model model) {
+
+ Map<String, Object> dashboardMap = xxlJobService.dashboardInfo();
+ model.addAllAttributes(dashboardMap);
+
+ return "index";
+ }
+
+ @RequestMapping("/chartInfo")
+ @ResponseBody
+ public ReturnT<Map<String, Object>> chartInfo(Date startDate, Date endDate) {
+ ReturnT<Map<String, Object>> chartInfo = xxlJobService.chartInfo(startDate, endDate);
+ return chartInfo;
+ }
+
+ @RequestMapping("/toLogin")
+ @PermissionLimit(limit=false)
+ public String toLogin(HttpServletRequest request, HttpServletResponse response) {
+ if (loginService.ifLogin(request, response) != null) {
+ return "redirect:/";
+ }
+ return "login";
+ }
+
+ @RequestMapping(value="login", method=RequestMethod.POST)
+ @ResponseBody
+ @PermissionLimit(limit=false)
+ public ReturnT<String> loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
+ boolean ifRem = (ifRemember!=null && ifRemember.trim().length()>0 && "on".equals(ifRemember))?true:false;
+ return loginService.login(request, response, userName, password, ifRem);
+ }
+
+ @RequestMapping(value="logout", method=RequestMethod.POST)
+ @ResponseBody
+ @PermissionLimit(limit=false)
+ public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
+ return loginService.logout(request, response);
+ }
+
+ @RequestMapping("/help")
+ public String help() {
+
+ /*if (!PermissionInterceptor.ifLogin(request)) {
+ return "redirect:/toLogin";
+ }*/
+
+ return "help";
+ }
+
+ @InitBinder
+ public void initBinder(WebDataBinder binder) {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ dateFormat.setLenient(false);
+ binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobApiController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobApiController.java
new file mode 100644
index 0000000..c0942c4
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobApiController.java
@@ -0,0 +1,129 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.controller.annotation.PermissionLimit;
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.exception.XxlJobException;
+import com.vci.ubcs.xxl.job.admin.core.util.JacksonUtil;
+import com.xxl.job.core.biz.AdminBiz;
+import com.xxl.job.core.biz.model.HandleCallbackParam;
+import com.xxl.job.core.biz.model.RegistryParam;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.util.XxlJobRemotingUtil;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/5/10.
+ */
+@Controller
+@RequestMapping("/api")
+public class JobApiController {
+
+ @Resource
+ private AdminBiz adminBiz;
+
+
+ // ---------------------- base ----------------------
+
+ /**
+ * valid access token
+ */
+ private void validAccessToken(HttpServletRequest request){
+ if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null
+ && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0
+ && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_RPC_ACCESS_TOKEN))) {
+ throw new XxlJobException("The access token is wrong.");
+ }
+ }
+
+ /**
+ * parse Param
+ */
+ private Object parseParam(String data, Class<?> parametrized, Class<?>... parameterClasses){
+ Object param = null;
+ try {
+ if (parameterClasses != null) {
+ param = JacksonUtil.readValue(data, parametrized, parameterClasses);
+ } else {
+ param = JacksonUtil.readValue(data, parametrized);
+ }
+ } catch (Exception e) { }
+ if (param==null) {
+ throw new XxlJobException("The request data invalid.");
+ }
+ return param;
+ }
+
+ // ---------------------- admin biz ----------------------
+
+ /**
+ * callback
+ *
+ * @param data
+ * @return
+ */
+ @RequestMapping("/callback")
+ @ResponseBody
+ @PermissionLimit(limit=false)
+ public ReturnT<String> callback(HttpServletRequest request, @RequestBody(required = false) String data) {
+ // valid
+ validAccessToken(request);
+
+ // param
+ List<HandleCallbackParam> callbackParamList = (List<HandleCallbackParam>) parseParam(data, List.class, HandleCallbackParam.class);
+
+ // invoke
+ return adminBiz.callback(callbackParamList);
+ }
+
+
+
+ /**
+ * registry
+ *
+ * @param data
+ * @return
+ */
+ @RequestMapping("/registry")
+ @ResponseBody
+ @PermissionLimit(limit=false)
+ public ReturnT<String> registry(HttpServletRequest request, @RequestBody(required = false) String data) {
+ // valid
+ validAccessToken(request);
+
+ // param
+ RegistryParam registryParam = (RegistryParam) parseParam(data, RegistryParam.class);
+
+ // invoke
+ return adminBiz.registry(registryParam);
+ }
+
+ /**
+ * registry remove
+ *
+ * @param data
+ * @return
+ */
+ @RequestMapping("/registryRemove")
+ @ResponseBody
+ @PermissionLimit(limit=false)
+ public ReturnT<String> registryRemove(HttpServletRequest request, @RequestBody(required = false) String data) {
+ // valid
+ validAccessToken(request);
+
+ // param
+ RegistryParam registryParam = (RegistryParam) parseParam(data, RegistryParam.class);
+
+ // invoke
+ return adminBiz.registryRemove(registryParam);
+ }
+
+ // ---------------------- job biz ----------------------
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobCodeController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobCodeController.java
new file mode 100644
index 0000000..9eb9963
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobCodeController.java
@@ -0,0 +1,96 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogGlue;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobInfoDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobLogGlueDao;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.glue.GlueTypeEnum;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * job code controller
+ * @author xuxueli 2015-12-19 16:13:16
+ */
+@Controller
+@RequestMapping("/jobcode")
+public class JobCodeController {
+
+ @Resource
+ private XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ private XxlJobLogGlueDao xxlJobLogGlueDao;
+
+ @RequestMapping
+ public String index(HttpServletRequest request, Model model, int jobId) {
+ XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
+ List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.findByJobId(jobId);
+
+ if (jobInfo == null) {
+ throw new RuntimeException(I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
+ }
+ if (GlueTypeEnum.BEAN == GlueTypeEnum.match(jobInfo.getGlueType())) {
+ throw new RuntimeException(I18nUtil.getString("jobinfo_glue_gluetype_unvalid"));
+ }
+
+ // valid permission
+ JobInfoController.validPermission(request, jobInfo.getJobGroup());
+
+ // Glue绫诲瀷-瀛楀吀
+ model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());
+
+ model.addAttribute("jobInfo", jobInfo);
+ model.addAttribute("jobLogGlues", jobLogGlues);
+ return "jobcode/jobcode.index";
+ }
+
+ @RequestMapping("/save")
+ @ResponseBody
+ public ReturnT<String> save(Model model, int id, String glueSource, String glueRemark) {
+ // valid
+ if (glueRemark==null) {
+ return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_glue_remark")) );
+ }
+ if (glueRemark.length()<4 || glueRemark.length()>100) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_remark_limit"));
+ }
+ XxlJobInfo exists_jobInfo = xxlJobInfoDao.loadById(id);
+ if (exists_jobInfo == null) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
+ }
+
+ // update new code
+ exists_jobInfo.setGlueSource(glueSource);
+ exists_jobInfo.setGlueRemark(glueRemark);
+ exists_jobInfo.setGlueUpdatetime(new Date());
+
+ exists_jobInfo.setUpdateTime(new Date());
+ xxlJobInfoDao.update(exists_jobInfo);
+
+ // log old code
+ XxlJobLogGlue xxlJobLogGlue = new XxlJobLogGlue();
+ xxlJobLogGlue.setJobId(exists_jobInfo.getId());
+ xxlJobLogGlue.setGlueType(exists_jobInfo.getGlueType());
+ xxlJobLogGlue.setGlueSource(glueSource);
+ xxlJobLogGlue.setGlueRemark(glueRemark);
+
+ xxlJobLogGlue.setAddTime(new Date());
+ xxlJobLogGlue.setUpdateTime(new Date());
+ xxlJobLogGlueDao.save(xxlJobLogGlue);
+
+ // remove code backup more than 30
+ xxlJobLogGlueDao.removeOld(exists_jobInfo.getId(), 30);
+
+ return ReturnT.SUCCESS;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobGroupController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobGroupController.java
new file mode 100644
index 0000000..49eb991
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobGroupController.java
@@ -0,0 +1,165 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobRegistry;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobInfoDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobRegistryDao;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.enums.RegistryConfig;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * job group controller
+ * @author xuxueli 2016-10-02 20:52:56
+ */
+@Controller
+@RequestMapping("/jobgroup")
+public class JobGroupController {
+
+ @Resource
+ public XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ public XxlJobGroupDao xxlJobGroupDao;
+ @Resource
+ private XxlJobRegistryDao xxlJobRegistryDao;
+
+ @RequestMapping
+ public String index(Model model) {
+
+ // job group (executor)
+ List<XxlJobGroup> list = xxlJobGroupDao.findAll();
+
+ model.addAttribute("list", list);
+ return "jobgroup/jobgroup.index";
+ }
+
+ @RequestMapping("/save")
+ @ResponseBody
+ public ReturnT<String> save(XxlJobGroup xxlJobGroup){
+
+ // valid
+ if (xxlJobGroup.getAppName()==null || xxlJobGroup.getAppName().trim().length()==0) {
+ return new ReturnT<String>(500, (I18nUtil.getString("system_please_input")+"AppName") );
+ }
+ if (xxlJobGroup.getAppName().length()<4 || xxlJobGroup.getAppName().length()>64) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_appName_length") );
+ }
+ if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
+ return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobgroup_field_title")) );
+ }
+ if (xxlJobGroup.getAddressType()!=0) {
+ if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
+ }
+ String[] addresss = xxlJobGroup.getAddressList().split(",");
+ for (String item: addresss) {
+ if (item==null || item.trim().length()==0) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid") );
+ }
+ }
+ }
+
+ int ret = xxlJobGroupDao.save(xxlJobGroup);
+ return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
+ }
+
+ @RequestMapping("/update")
+ @ResponseBody
+ public ReturnT<String> update(XxlJobGroup xxlJobGroup){
+ // valid
+ if (xxlJobGroup.getAppName()==null || xxlJobGroup.getAppName().trim().length()==0) {
+ return new ReturnT<String>(500, (I18nUtil.getString("system_please_input")+"AppName") );
+ }
+ if (xxlJobGroup.getAppName().length()<4 || xxlJobGroup.getAppName().length()>64) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_appName_length") );
+ }
+ if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
+ return new ReturnT<String>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobgroup_field_title")) );
+ }
+ if (xxlJobGroup.getAddressType() == 0) {
+ // 0=鑷姩娉ㄥ唽
+ List<String> registryList = findRegistryByAppName(xxlJobGroup.getAppName());
+ String addressListStr = null;
+ if (registryList!=null && !registryList.isEmpty()) {
+ Collections.sort(registryList);
+ addressListStr = "";
+ for (String item:registryList) {
+ addressListStr += item + ",";
+ }
+ addressListStr = addressListStr.substring(0, addressListStr.length()-1);
+ }
+ xxlJobGroup.setAddressList(addressListStr);
+ } else {
+ // 1=鎵嬪姩褰曞叆
+ if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
+ }
+ String[] addresss = xxlJobGroup.getAddressList().split(",");
+ for (String item: addresss) {
+ if (item==null || item.trim().length()==0) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid") );
+ }
+ }
+ }
+
+ int ret = xxlJobGroupDao.update(xxlJobGroup);
+ return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
+ }
+
+ private List<String> findRegistryByAppName(String appNameParam){
+ HashMap<String, List<String>> appAddressMap = new HashMap<String, List<String>>();
+ List<XxlJobRegistry> list = xxlJobRegistryDao.findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
+ if (list != null) {
+ for (XxlJobRegistry item: list) {
+ if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
+ String appName = item.getRegistryKey();
+ List<String> registryList = appAddressMap.get(appName);
+ if (registryList == null) {
+ registryList = new ArrayList<String>();
+ }
+
+ if (!registryList.contains(item.getRegistryValue())) {
+ registryList.add(item.getRegistryValue());
+ }
+ appAddressMap.put(appName, registryList);
+ }
+ }
+ }
+ return appAddressMap.get(appNameParam);
+ }
+
+ @RequestMapping("/remove")
+ @ResponseBody
+ public ReturnT<String> remove(int id){
+
+ // valid
+ int count = xxlJobInfoDao.pageListCount(0, 10, id, -1, null, null, null);
+ if (count > 0) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_del_limit_0") );
+ }
+
+ List<XxlJobGroup> allList = xxlJobGroupDao.findAll();
+ if (allList.size() == 1) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobgroup_del_limit_1") );
+ }
+
+ int ret = xxlJobGroupDao.remove(id);
+ return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
+ }
+
+ @RequestMapping("/loadById")
+ @ResponseBody
+ public ReturnT<XxlJobGroup> loadById(int id){
+ XxlJobGroup jobGroup = xxlJobGroupDao.load(id);
+ return jobGroup!=null?new ReturnT<XxlJobGroup>(jobGroup):new ReturnT<XxlJobGroup>(ReturnT.FAIL_CODE, null);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobInfoController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobInfoController.java
new file mode 100644
index 0000000..e14c8ad
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobInfoController.java
@@ -0,0 +1,166 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.core.cron.CronExpression;
+import com.vci.ubcs.xxl.job.admin.core.exception.XxlJobException;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser;
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
+import com.vci.ubcs.xxl.job.admin.core.thread.JobTriggerPoolHelper;
+import com.vci.ubcs.xxl.job.admin.core.trigger.TriggerTypeEnum;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao;
+import com.vci.ubcs.xxl.job.admin.service.LoginService;
+import com.vci.ubcs.xxl.job.admin.service.XxlJobService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
+import com.xxl.job.core.glue.GlueTypeEnum;
+import com.xxl.job.core.util.DateUtil;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * index controller
+ * @author xuxueli 2015-12-19 16:13:16
+ */
+@Controller
+@RequestMapping("/jobinfo")
+public class JobInfoController {
+
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+ @Resource
+ private XxlJobService xxlJobService;
+
+ @RequestMapping
+ public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) {
+
+ // 鏋氫妇-瀛楀吀
+ model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 璺敱绛栫暐-鍒楄〃
+ model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); // Glue绫诲瀷-瀛楀吀
+ model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); // 闃诲澶勭悊绛栫暐-瀛楀吀
+
+ // 鎵ц鍣ㄥ垪琛�
+ List<XxlJobGroup> jobGroupList_all = xxlJobGroupDao.findAll();
+
+ // filter group
+ List<XxlJobGroup> jobGroupList = filterJobGroupByRole(request, jobGroupList_all);
+ if (jobGroupList==null || jobGroupList.size()==0) {
+ throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
+ }
+
+ model.addAttribute("JobGroupList", jobGroupList);
+ model.addAttribute("jobGroup", jobGroup);
+
+ return "jobinfo/jobinfo.index";
+ }
+
+ public static List<XxlJobGroup> filterJobGroupByRole(HttpServletRequest request, List<XxlJobGroup> jobGroupList_all){
+ List<XxlJobGroup> jobGroupList = new ArrayList<>();
+ if (jobGroupList_all!=null && jobGroupList_all.size()>0) {
+ XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
+ if (loginUser.getRole() == 1) {
+ jobGroupList = jobGroupList_all;
+ } else {
+ List<String> groupIdStrs = new ArrayList<>();
+ if (loginUser.getPermission()!=null && loginUser.getPermission().trim().length()>0) {
+ groupIdStrs = Arrays.asList(loginUser.getPermission().trim().split(","));
+ }
+ for (XxlJobGroup groupItem:jobGroupList_all) {
+ if (groupIdStrs.contains(String.valueOf(groupItem.getId()))) {
+ jobGroupList.add(groupItem);
+ }
+ }
+ }
+ }
+ return jobGroupList;
+ }
+ public static void validPermission(HttpServletRequest request, int jobGroup) {
+ XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
+ if (!loginUser.validPermission(jobGroup)) {
+ throw new RuntimeException(I18nUtil.getString("system_permission_limit") + "[username="+ loginUser.getUsername() +"]");
+ }
+ }
+
+ @RequestMapping("/pageList")
+ @ResponseBody
+ public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
+ @RequestParam(required = false, defaultValue = "10") int length,
+ int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
+
+ return xxlJobService.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
+ }
+
+ @RequestMapping("/add")
+ @ResponseBody
+ public ReturnT<String> add(XxlJobInfo jobInfo) {
+ return xxlJobService.add(jobInfo);
+ }
+
+ @RequestMapping("/update")
+ @ResponseBody
+ public ReturnT<String> update(XxlJobInfo jobInfo) {
+ return xxlJobService.update(jobInfo);
+ }
+
+ @RequestMapping("/remove")
+ @ResponseBody
+ public ReturnT<String> remove(int id) {
+ return xxlJobService.remove(id);
+ }
+
+ @RequestMapping("/stop")
+ @ResponseBody
+ public ReturnT<String> pause(int id) {
+ return xxlJobService.stop(id);
+ }
+
+ @RequestMapping("/start")
+ @ResponseBody
+ public ReturnT<String> start(int id) {
+ return xxlJobService.start(id);
+ }
+
+ @RequestMapping("/trigger")
+ @ResponseBody
+ //@PermissionLimit(limit = false)
+ public ReturnT<String> triggerJob(int id, String executorParam) {
+ // force cover job param
+ if (executorParam == null) {
+ executorParam = "";
+ }
+
+ JobTriggerPoolHelper.trigger(id, TriggerTypeEnum.MANUAL, -1, null, executorParam);
+ return ReturnT.SUCCESS;
+ }
+
+ @RequestMapping("/nextTriggerTime")
+ @ResponseBody
+ public ReturnT<List<String>> nextTriggerTime(String cron) {
+ List<String> result = new ArrayList<>();
+ try {
+ CronExpression cronExpression = new CronExpression(cron);
+ Date lastTime = new Date();
+ for (int i = 0; i < 5; i++) {
+ lastTime = cronExpression.getNextValidTimeAfter(lastTime);
+ if (lastTime != null) {
+ result.add(DateUtil.formatDateTime(lastTime));
+ } else {
+ break;
+ }
+ }
+ } catch (ParseException e) {
+ return new ReturnT<List<String>>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid"));
+ }
+ return new ReturnT<List<String>>(result);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobLogController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobLogController.java
new file mode 100644
index 0000000..e6d956e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/JobLogController.java
@@ -0,0 +1,230 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.core.exception.XxlJobException;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog;
+import com.vci.ubcs.xxl.job.admin.core.scheduler.XxlJobScheduler;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobInfoDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobLogDao;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.LogResult;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * index controller
+ * @author xuxueli 2015-12-19 16:13:16
+ */
+@Controller
+@RequestMapping("/joblog")
+public class JobLogController {
+ private static Logger logger = LoggerFactory.getLogger(JobLogController.class);
+
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+ @Resource
+ public XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ public XxlJobLogDao xxlJobLogDao;
+
+ @RequestMapping
+ public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) {
+
+ // 鎵ц鍣ㄥ垪琛�
+ List<XxlJobGroup> jobGroupList_all = xxlJobGroupDao.findAll();
+
+ // filter group
+ List<XxlJobGroup> jobGroupList = JobInfoController.filterJobGroupByRole(request, jobGroupList_all);
+ if (jobGroupList==null || jobGroupList.size()==0) {
+ throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
+ }
+
+ model.addAttribute("JobGroupList", jobGroupList);
+
+ // 浠诲姟
+ if (jobId > 0) {
+ XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
+ if (jobInfo == null) {
+ throw new RuntimeException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid"));
+ }
+
+ model.addAttribute("jobInfo", jobInfo);
+
+ // valid permission
+ JobInfoController.validPermission(request, jobInfo.getJobGroup());
+ }
+
+ return "joblog/joblog.index";
+ }
+
+ @RequestMapping("/getJobsByGroup")
+ @ResponseBody
+ public ReturnT<List<XxlJobInfo>> getJobsByGroup(int jobGroup){
+ List<XxlJobInfo> list = xxlJobInfoDao.getJobsByGroup(jobGroup);
+ return new ReturnT<List<XxlJobInfo>>(list);
+ }
+
+ @RequestMapping("/pageList")
+ @ResponseBody
+ public Map<String, Object> pageList(HttpServletRequest request,
+ @RequestParam(required = false, defaultValue = "0") int start,
+ @RequestParam(required = false, defaultValue = "10") int length,
+ int jobGroup, int jobId, int logStatus, String filterTime) {
+
+ // valid permission
+ JobInfoController.validPermission(request, jobGroup); // 浠呯鐞嗗憳鏀寔鏌ヨ鍏ㄩ儴锛涙櫘閫氱敤鎴蜂粎鏀寔鏌ヨ鏈夋潈闄愮殑 jobGroup
+
+ // parse param
+ Date triggerTimeStart = null;
+ Date triggerTimeEnd = null;
+ if (filterTime!=null && filterTime.trim().length()>0) {
+ String[] temp = filterTime.split(" - ");
+ if (temp.length == 2) {
+ triggerTimeStart = DateUtil.parseDateTime(temp[0]);
+ triggerTimeEnd = DateUtil.parseDateTime(temp[1]);
+ }
+ }
+
+ // page query
+ List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
+ int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
+
+ // package result
+ Map<String, Object> maps = new HashMap<String, Object>();
+ maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
+ maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
+ maps.put("data", list); // 鍒嗛〉鍒楄〃
+ return maps;
+ }
+
+ @RequestMapping("/logDetailPage")
+ public String logDetailPage(int id, Model model){
+
+ // base check
+ ReturnT<String> logStatue = ReturnT.SUCCESS;
+ XxlJobLog jobLog = xxlJobLogDao.load(id);
+ if (jobLog == null) {
+ throw new RuntimeException(I18nUtil.getString("joblog_logid_unvalid"));
+ }
+
+ model.addAttribute("triggerCode", jobLog.getTriggerCode());
+ model.addAttribute("handleCode", jobLog.getHandleCode());
+ model.addAttribute("executorAddress", jobLog.getExecutorAddress());
+ model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime());
+ model.addAttribute("logId", jobLog.getId());
+ return "joblog/joblog.detail";
+ }
+
+ @RequestMapping("/logDetailCat")
+ @ResponseBody
+ public ReturnT<LogResult> logDetailCat(String executorAddress, long triggerTime, long logId, int fromLineNum){
+ try {
+ ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(executorAddress);
+ ReturnT<LogResult> logResult = executorBiz.log(triggerTime, logId, fromLineNum);
+
+ // is end
+ if (logResult.getContent()!=null && logResult.getContent().getFromLineNum() > logResult.getContent().getToLineNum()) {
+ XxlJobLog jobLog = xxlJobLogDao.load(logId);
+ if (jobLog.getHandleCode() > 0) {
+ logResult.getContent().setEnd(true);
+ }
+ }
+
+ return logResult;
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ return new ReturnT<LogResult>(ReturnT.FAIL_CODE, e.getMessage());
+ }
+ }
+
+ @RequestMapping("/logKill")
+ @ResponseBody
+ public ReturnT<String> logKill(int id){
+ // base check
+ XxlJobLog log = xxlJobLogDao.load(id);
+ XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId());
+ if (jobInfo==null) {
+ return new ReturnT<String>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
+ }
+ if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
+ return new ReturnT<String>(500, I18nUtil.getString("joblog_kill_log_limit"));
+ }
+
+ // request of kill
+ ReturnT<String> runResult = null;
+ try {
+ ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(log.getExecutorAddress());
+ runResult = executorBiz.kill(jobInfo.getId());
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ runResult = new ReturnT<String>(500, e.getMessage());
+ }
+
+ if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
+ log.setHandleCode(ReturnT.FAIL_CODE);
+ log.setHandleMsg( I18nUtil.getString("joblog_kill_log_byman")+":" + (runResult.getMsg()!=null?runResult.getMsg():""));
+ log.setHandleTime(new Date());
+ xxlJobLogDao.updateHandleInfo(log);
+ return new ReturnT<String>(runResult.getMsg());
+ } else {
+ return new ReturnT<String>(500, runResult.getMsg());
+ }
+ }
+
+ @RequestMapping("/clearLog")
+ @ResponseBody
+ public ReturnT<String> clearLog(int jobGroup, int jobId, int type){
+
+ Date clearBeforeTime = null;
+ int clearBeforeNum = 0;
+ if (type == 1) {
+ clearBeforeTime = DateUtil.addMonths(new Date(), -1); // 娓呯悊涓�涓湀涔嬪墠鏃ュ織鏁版嵁
+ } else if (type == 2) {
+ clearBeforeTime = DateUtil.addMonths(new Date(), -3); // 娓呯悊涓変釜鏈堜箣鍓嶆棩蹇楁暟鎹�
+ } else if (type == 3) {
+ clearBeforeTime = DateUtil.addMonths(new Date(), -6); // 娓呯悊鍏釜鏈堜箣鍓嶆棩蹇楁暟鎹�
+ } else if (type == 4) {
+ clearBeforeTime = DateUtil.addYears(new Date(), -1); // 娓呯悊涓�骞翠箣鍓嶆棩蹇楁暟鎹�
+ } else if (type == 5) {
+ clearBeforeNum = 1000; // 娓呯悊涓�鍗冩潯浠ュ墠鏃ュ織鏁版嵁
+ } else if (type == 6) {
+ clearBeforeNum = 10000; // 娓呯悊涓�涓囨潯浠ュ墠鏃ュ織鏁版嵁
+ } else if (type == 7) {
+ clearBeforeNum = 30000; // 娓呯悊涓変竾鏉′互鍓嶆棩蹇楁暟鎹�
+ } else if (type == 8) {
+ clearBeforeNum = 100000; // 娓呯悊鍗佷竾鏉′互鍓嶆棩蹇楁暟鎹�
+ } else if (type == 9) {
+ clearBeforeNum = 0; // 娓呯悊鎵�鏈夋棩蹇楁暟鎹�
+ } else {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_clean_type_unvalid"));
+ }
+
+ List<Long> logIds = null;
+ do {
+ logIds = xxlJobLogDao.findClearLogIds(jobGroup, jobId, clearBeforeTime, clearBeforeNum, 1000);
+ if (logIds!=null && logIds.size()>0) {
+ xxlJobLogDao.clearLog(logIds);
+ }
+ } while (logIds!=null && logIds.size()>0);
+
+ return ReturnT.SUCCESS;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/UserController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/UserController.java
new file mode 100644
index 0000000..801b23b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/UserController.java
@@ -0,0 +1,172 @@
+package com.vci.ubcs.xxl.job.admin.controller;
+
+import com.vci.ubcs.xxl.job.admin.controller.annotation.PermissionLimit;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobUserDao;
+import com.vci.ubcs.xxl.job.admin.service.LoginService;
+import com.xxl.job.core.biz.model.ReturnT;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.DigestUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author xuxueli 2019-05-04 16:39:50
+ */
+@Controller
+@RequestMapping("/user")
+public class UserController {
+
+ @Resource
+ private XxlJobUserDao xxlJobUserDao;
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+
+ @RequestMapping
+ @PermissionLimit(adminuser = true)
+ public String index(Model model) {
+
+ // 鎵ц鍣ㄥ垪琛�
+ List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
+ model.addAttribute("groupList", groupList);
+
+ return "user/user.index";
+ }
+
+ @RequestMapping("/pageList")
+ @ResponseBody
+ @PermissionLimit(adminuser = true)
+ public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
+ @RequestParam(required = false, defaultValue = "10") int length,
+ String username, int role) {
+
+ // page list
+ List<XxlJobUser> list = xxlJobUserDao.pageList(start, length, username, role);
+ int list_count = xxlJobUserDao.pageListCount(start, length, username, role);
+
+ // package result
+ Map<String, Object> maps = new HashMap<String, Object>();
+ maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
+ maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
+ maps.put("data", list); // 鍒嗛〉鍒楄〃
+ return maps;
+ }
+
+ @RequestMapping("/add")
+ @ResponseBody
+ @PermissionLimit(adminuser = true)
+ public ReturnT<String> add(XxlJobUser xxlJobUser) {
+
+ // valid username
+ if (!StringUtils.hasText(xxlJobUser.getUsername())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") );
+ }
+ xxlJobUser.setUsername(xxlJobUser.getUsername().trim());
+ if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
+ }
+ // valid password
+ if (!StringUtils.hasText(xxlJobUser.getPassword())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") );
+ }
+ xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
+ if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
+ }
+ // md5 password
+ xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
+
+ // check repeat
+ XxlJobUser existUser = xxlJobUserDao.loadByUserName(xxlJobUser.getUsername());
+ if (existUser != null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("user_username_repeat") );
+ }
+
+ // write
+ xxlJobUserDao.save(xxlJobUser);
+ return ReturnT.SUCCESS;
+ }
+
+ @RequestMapping("/update")
+ @ResponseBody
+ @PermissionLimit(adminuser = true)
+ public ReturnT<String> update(HttpServletRequest request, XxlJobUser xxlJobUser) {
+
+ // avoid opt login seft
+ XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
+ if (loginUser.getUsername().equals(xxlJobUser.getUsername())) {
+ return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
+ }
+
+ // valid password
+ if (StringUtils.hasText(xxlJobUser.getPassword())) {
+ xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
+ if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
+ }
+ // md5 password
+ xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
+ } else {
+ xxlJobUser.setPassword(null);
+ }
+
+ // write
+ xxlJobUserDao.update(xxlJobUser);
+ return ReturnT.SUCCESS;
+ }
+
+ @RequestMapping("/remove")
+ @ResponseBody
+ @PermissionLimit(adminuser = true)
+ public ReturnT<String> remove(HttpServletRequest request, int id) {
+
+ // avoid opt login seft
+ XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
+ if (loginUser.getId() == id) {
+ return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
+ }
+
+ xxlJobUserDao.delete(id);
+ return ReturnT.SUCCESS;
+ }
+
+ @RequestMapping("/updatePwd")
+ @ResponseBody
+ public ReturnT<String> updatePwd(HttpServletRequest request, String password){
+
+ // valid password
+ if (password==null || password.trim().length()==0){
+ return new ReturnT<String>(ReturnT.FAIL.getCode(), "瀵嗙爜涓嶅彲涓虹┖");
+ }
+ password = password.trim();
+ if (!(password.length()>=4 && password.length()<=20)) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("system_lengh_limit")+"[4-20]" );
+ }
+
+ // md5 password
+ String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());
+
+ // update pwd
+ XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
+
+ // do write
+ XxlJobUser existUser = xxlJobUserDao.loadByUserName(loginUser.getUsername());
+ existUser.setPassword(md5Password);
+ xxlJobUserDao.update(existUser);
+
+ return ReturnT.SUCCESS;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/annotation/PermissionLimit.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/annotation/PermissionLimit.java
new file mode 100644
index 0000000..b6f3d33
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/annotation/PermissionLimit.java
@@ -0,0 +1,29 @@
+package com.vci.ubcs.xxl.job.admin.controller.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鏉冮檺闄愬埗
+ * @author xuxueli 2015-12-12 18:29:02
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PermissionLimit {
+
+ /**
+ * 鐧诲綍鎷︽埅 (榛樿鎷︽埅)
+ */
+ boolean limit() default true;
+
+ /**
+ * 瑕佹眰绠$悊鍛樻潈闄�
+ *
+ * @return
+ */
+ boolean adminuser() default false;
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/CookieInterceptor.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/CookieInterceptor.java
new file mode 100644
index 0000000..084702c
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/CookieInterceptor.java
@@ -0,0 +1,43 @@
+package com.vci.ubcs.xxl.job.admin.controller.interceptor;
+
+import com.vci.ubcs.xxl.job.admin.core.util.FtlUtil;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+
+/**
+ * push cookies to model as cookieMap
+ *
+ * @author xuxueli 2015-12-12 18:09:04
+ */
+@Component
+public class CookieInterceptor extends HandlerInterceptorAdapter {
+
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
+ ModelAndView modelAndView) throws Exception {
+
+ // cookie
+ if (modelAndView!=null && request.getCookies()!=null && request.getCookies().length>0) {
+ HashMap<String, Cookie> cookieMap = new HashMap<String, Cookie>();
+ for (Cookie ck : request.getCookies()) {
+ cookieMap.put(ck.getName(), ck);
+ }
+ modelAndView.addObject("cookieMap", cookieMap);
+ }
+
+ // static method
+ if (modelAndView != null) {
+ modelAndView.addObject("I18nUtil", FtlUtil.generateStaticModel(I18nUtil.class.getName()));
+ }
+
+ super.postHandle(request, response, handler, modelAndView);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
new file mode 100644
index 0000000..95ea42e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
@@ -0,0 +1,59 @@
+package com.vci.ubcs.xxl.job.admin.controller.interceptor;
+
+import com.vci.ubcs.xxl.job.admin.controller.annotation.PermissionLimit;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.service.LoginService;
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 鏉冮檺鎷︽埅
+ *
+ * @author xuxueli 2015-12-12 18:09:04
+ */
+@Component
+public class PermissionInterceptor extends HandlerInterceptorAdapter {
+
+ @Resource
+ private LoginService loginService;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+ if (!(handler instanceof HandlerMethod)) {
+ return super.preHandle(request, response, handler);
+ }
+
+ // if need login
+ boolean needLogin = true;
+ boolean needAdminuser = false;
+ HandlerMethod method = (HandlerMethod)handler;
+ PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
+ if (permission!=null) {
+ needLogin = permission.limit();
+ needAdminuser = permission.adminuser();
+ }
+
+ if (needLogin) {
+ XxlJobUser loginUser = loginService.ifLogin(request, response);
+ if (loginUser == null) {
+ response.sendRedirect(request.getContextPath() + "/toLogin");
+ //request.getRequestDispatcher("/toLogin").forward(request, response);
+ return false;
+ }
+ if (needAdminuser && loginUser.getRole()!=1) {
+ throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
+ }
+ request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
+ }
+
+ return super.preHandle(request, response, handler);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/WebMvcConfig.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/WebMvcConfig.java
new file mode 100644
index 0000000..11bdf0a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/interceptor/WebMvcConfig.java
@@ -0,0 +1,28 @@
+package com.vci.ubcs.xxl.job.admin.controller.interceptor;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+/**
+ * web mvc config
+ *
+ * @author xuxueli 2018-04-02 20:48:20
+ */
+@Configuration(proxyBeanMethods = false)
+public class WebMvcConfig extends WebMvcConfigurerAdapter {
+
+ @Autowired
+ private PermissionInterceptor permissionInterceptor;
+ @Autowired
+ private CookieInterceptor cookieInterceptor;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(permissionInterceptor).addPathPatterns("/**");
+ registry.addInterceptor(cookieInterceptor).addPathPatterns("/**");
+ super.addInterceptors(registry);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/resolver/WebExceptionResolver.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/resolver/WebExceptionResolver.java
new file mode 100644
index 0000000..ff5e667
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/controller/resolver/WebExceptionResolver.java
@@ -0,0 +1,64 @@
+package com.vci.ubcs.xxl.job.admin.controller.resolver;
+
+import com.vci.ubcs.xxl.job.admin.core.exception.XxlJobException;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.vci.ubcs.xxl.job.admin.core.util.JacksonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerExceptionResolver;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * common exception resolver
+ *
+ * @author xuxueli 2016-1-6 19:22:18
+ */
+@Component
+public class WebExceptionResolver implements HandlerExceptionResolver {
+ private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class);
+
+ @Override
+ public ModelAndView resolveException(HttpServletRequest request,
+ HttpServletResponse response, Object handler, Exception ex) {
+
+ if (!(ex instanceof XxlJobException)) {
+ logger.error("WebExceptionResolver:{}", ex);
+ }
+
+ // if json
+ boolean isJson = false;
+ HandlerMethod method = (HandlerMethod)handler;
+ ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class);
+ if (responseBody != null) {
+ isJson = true;
+ }
+
+ // error result
+ ReturnT<String> errorResult = new ReturnT<String>(ReturnT.FAIL_CODE, ex.toString().replaceAll("\n", "<br/>"));
+
+ // response
+ ModelAndView mv = new ModelAndView();
+ if (isJson) {
+ try {
+ response.setContentType("application/json;charset=utf-8");
+ response.getWriter().print(JacksonUtil.writeValueAsString(errorResult));
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return mv;
+ } else {
+
+ mv.addObject("exceptionMsg", errorResult.getMsg());
+ mv.setViewName("/common/common.exception");
+ return mv;
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/conf/XxlJobAdminConfig.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/conf/XxlJobAdminConfig.java
new file mode 100644
index 0000000..1d1d489
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/conf/XxlJobAdminConfig.java
@@ -0,0 +1,147 @@
+package com.vci.ubcs.xxl.job.admin.core.conf;
+
+import com.vci.ubcs.xxl.job.admin.core.scheduler.XxlJobScheduler;
+import com.vci.ubcs.xxl.job.admin.dao.*;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+
+/**
+ * xxl-job config
+ *
+ * @author xuxueli 2017-04-28
+ */
+
+@Component
+public class XxlJobAdminConfig implements InitializingBean, DisposableBean {
+
+ private static XxlJobAdminConfig adminConfig = null;
+ public static XxlJobAdminConfig getAdminConfig() {
+ return adminConfig;
+ }
+
+
+ // ---------------------- XxlJobScheduler ----------------------
+
+ private XxlJobScheduler xxlJobScheduler;
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ adminConfig = this;
+
+ xxlJobScheduler = new XxlJobScheduler();
+ xxlJobScheduler.init();
+ }
+
+ @Override
+ public void destroy() throws Exception {
+ xxlJobScheduler.destroy();
+ }
+
+
+ // ---------------------- XxlJobScheduler ----------------------
+
+ // conf
+ @Value("${xxl.job.i18n}")
+ private String i18n;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${spring.mail.username}")
+ private String emailUserName;
+
+ @Value("${xxl.job.triggerpool.fast.max}")
+ private int triggerPoolFastMax;
+
+ @Value("${xxl.job.triggerpool.slow.max}")
+ private int triggerPoolSlowMax;
+
+ @Value("${xxl.job.logretentiondays}")
+ private int logretentiondays;
+
+ // dao, service
+
+ @Resource
+ private XxlJobLogDao xxlJobLogDao;
+ @Resource
+ private XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ private XxlJobRegistryDao xxlJobRegistryDao;
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+ @Resource
+ private XxlJobLogReportDao xxlJobLogReportDao;
+ @Resource
+ private JavaMailSender mailSender;
+ @Resource
+ private DataSource dataSource;
+
+
+ public String getI18n() {
+ return i18n;
+ }
+
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ public String getEmailUserName() {
+ return emailUserName;
+ }
+
+ public int getTriggerPoolFastMax() {
+ if (triggerPoolFastMax < 200) {
+ return 200;
+ }
+ return triggerPoolFastMax;
+ }
+
+ public int getTriggerPoolSlowMax() {
+ if (triggerPoolSlowMax < 100) {
+ return 100;
+ }
+ return triggerPoolSlowMax;
+ }
+
+ public int getLogretentiondays() {
+ if (logretentiondays < 7) {
+ return -1; // Limit greater than or equal to 7, otherwise close
+ }
+ return logretentiondays;
+ }
+
+ public XxlJobLogDao getXxlJobLogDao() {
+ return xxlJobLogDao;
+ }
+
+ public XxlJobInfoDao getXxlJobInfoDao() {
+ return xxlJobInfoDao;
+ }
+
+ public XxlJobRegistryDao getXxlJobRegistryDao() {
+ return xxlJobRegistryDao;
+ }
+
+ public XxlJobGroupDao getXxlJobGroupDao() {
+ return xxlJobGroupDao;
+ }
+
+ public XxlJobLogReportDao getXxlJobLogReportDao() {
+ return xxlJobLogReportDao;
+ }
+
+ public JavaMailSender getMailSender() {
+ return mailSender;
+ }
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/cron/CronExpression.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/cron/CronExpression.java
new file mode 100644
index 0000000..4d0827a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/cron/CronExpression.java
@@ -0,0 +1,1666 @@
+/*
+ * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package com.vci.ubcs.xxl.job.admin.core.cron;
+
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.StringTokenizer;
+import java.util.TimeZone;
+import java.util.TreeSet;
+
+/**
+ * Provides a parser and evaluator for unix-like cron expressions. Cron
+ * expressions provide the ability to specify complex time combinations such as
+ * "At 8:00am every Monday through Friday" or "At 1:30am every
+ * last Friday of the month".
+ * <P>
+ * Cron expressions are comprised of 6 required fields and one optional field
+ * separated by white space. The fields respectively are described as follows:
+ *
+ * <table cellspacing="8">
+ * <tr>
+ * <th align="left">Field Name</th>
+ * <th align="left"> </th>
+ * <th align="left">Allowed Values</th>
+ * <th align="left"> </th>
+ * <th align="left">Allowed Special Characters</th>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Seconds</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>0-59</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * /</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Minutes</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>0-59</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * /</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Hours</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>0-23</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * /</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Day-of-month</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>1-31</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * ? / L W</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Month</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>0-11 or JAN-DEC</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * /</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Day-of-Week</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>1-7 or SUN-SAT</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * ? / L #</code></td>
+ * </tr>
+ * <tr>
+ * <td align="left"><code>Year (Optional)</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>empty, 1970-2199</code></td>
+ * <td align="left"> </th>
+ * <td align="left"><code>, - * /</code></td>
+ * </tr>
+ * </table>
+ * <P>
+ * The '*' character is used to specify all values. For example, "*"
+ * in the minute field means "every minute".
+ * <P>
+ * The '?' character is allowed for the day-of-month and day-of-week fields. It
+ * is used to specify 'no specific value'. This is useful when you need to
+ * specify something in one of the two fields, but not the other.
+ * <P>
+ * The '-' character is used to specify ranges For example "10-12" in
+ * the hour field means "the hours 10, 11 and 12".
+ * <P>
+ * The ',' character is used to specify additional values. For example
+ * "MON,WED,FRI" in the day-of-week field means "the days Monday,
+ * Wednesday, and Friday".
+ * <P>
+ * The '/' character is used to specify increments. For example "0/15"
+ * in the seconds field means "the seconds 0, 15, 30, and 45". And
+ * "5/15" in the seconds field means "the seconds 5, 20, 35, and
+ * 50". Specifying '*' before the '/' is equivalent to specifying 0 is
+ * the value to start with. Essentially, for each field in the expression, there
+ * is a set of numbers that can be turned on or off. For seconds and minutes,
+ * the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to
+ * 31, and for months 0 to 11 (JAN to DEC). The "/" character simply helps you turn
+ * on every "nth" value in the given set. Thus "7/6" in the
+ * month field only turns on month "7", it does NOT mean every 6th
+ * month, please note that subtlety.
+ * <P>
+ * The 'L' character is allowed for the day-of-month and day-of-week fields.
+ * This character is short-hand for "last", but it has different
+ * meaning in each of the two fields. For example, the value "L" in
+ * the day-of-month field means "the last day of the month" - day 31
+ * for January, day 28 for February on non-leap years. If used in the
+ * day-of-week field by itself, it simply means "7" or
+ * "SAT". But if used in the day-of-week field after another value, it
+ * means "the last xxx day of the month" - for example "6L"
+ * means "the last friday of the month". You can also specify an offset
+ * from the last day of the month, such as "L-3" which would mean the third-to-last
+ * day of the calendar month. <i>When using the 'L' option, it is important not to
+ * specify lists, or ranges of values, as you'll get confusing/unexpected results.</i>
+ * <P>
+ * The 'W' character is allowed for the day-of-month field. This character
+ * is used to specify the weekday (Monday-Friday) nearest the given day. As an
+ * example, if you were to specify "15W" as the value for the
+ * day-of-month field, the meaning is: "the nearest weekday to the 15th of
+ * the month". So if the 15th is a Saturday, the trigger will fire on
+ * Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the
+ * 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th.
+ * However if you specify "1W" as the value for day-of-month, and the
+ * 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not
+ * 'jump' over the boundary of a month's days. The 'W' character can only be
+ * specified when the day-of-month is a single day, not a range or list of days.
+ * <P>
+ * The 'L' and 'W' characters can also be combined for the day-of-month
+ * expression to yield 'LW', which translates to "last weekday of the
+ * month".
+ * <P>
+ * The '#' character is allowed for the day-of-week field. This character is
+ * used to specify "the nth" XXX day of the month. For example, the
+ * value of "6#3" in the day-of-week field means the third Friday of
+ * the month (day 6 = Friday and "#3" = the 3rd one in the month).
+ * Other examples: "2#1" = the first Monday of the month and
+ * "4#5" = the fifth Wednesday of the month. Note that if you specify
+ * "#5" and there is not 5 of the given day-of-week in the month, then
+ * no firing will occur that month. If the '#' character is used, there can
+ * only be one expression in the day-of-week field ("3#1,6#3" is
+ * not valid, since there are two expressions).
+ * <P>
+ * <!--The 'C' character is allowed for the day-of-month and day-of-week fields.
+ * This character is short-hand for "calendar". This means values are
+ * calculated against the associated calendar, if any. If no calendar is
+ * associated, then it is equivalent to having an all-inclusive calendar. A
+ * value of "5C" in the day-of-month field means "the first day included by the
+ * calendar on or after the 5th". A value of "1C" in the day-of-week field
+ * means "the first day included by the calendar on or after Sunday".-->
+ * <P>
+ * The legal characters and the names of months and days of the week are not
+ * case sensitive.
+ *
+ * <p>
+ * <b>NOTES:</b>
+ * <ul>
+ * <li>Support for specifying both a day-of-week and a day-of-month value is
+ * not complete (you'll need to use the '?' character in one of these fields).
+ * </li>
+ * <li>Overflowing ranges is supported - that is, having a larger number on
+ * the left hand side than the right. You might do 22-2 to catch 10 o'clock
+ * at night until 2 o'clock in the morning, or you might have NOV-FEB. It is
+ * very important to note that overuse of overflowing ranges creates ranges
+ * that don't make sense and no effort has been made to determine which
+ * interpretation CronExpression chooses. An example would be
+ * "0 0 14-6 ? * FRI-MON". </li>
+ * </ul>
+ * </p>
+ *
+ *
+ * @author Sharada Jambula, James House
+ * @author Contributions from Mads Henderson
+ * @author Refactoring from CronTrigger to CronExpression by Aaron Craven
+ *
+ * Borrowed from quartz v2.3.1
+ *
+ */
+public final class CronExpression implements Serializable, Cloneable {
+
+ private static final long serialVersionUID = 12423409423L;
+
+ protected static final int SECOND = 0;
+ protected static final int MINUTE = 1;
+ protected static final int HOUR = 2;
+ protected static final int DAY_OF_MONTH = 3;
+ protected static final int MONTH = 4;
+ protected static final int DAY_OF_WEEK = 5;
+ protected static final int YEAR = 6;
+ protected static final int ALL_SPEC_INT = 99; // '*'
+ protected static final int NO_SPEC_INT = 98; // '?'
+ protected static final Integer ALL_SPEC = ALL_SPEC_INT;
+ protected static final Integer NO_SPEC = NO_SPEC_INT;
+
+ protected static final Map<String, Integer> monthMap = new HashMap<String, Integer>(20);
+ protected static final Map<String, Integer> dayMap = new HashMap<String, Integer>(60);
+ static {
+ monthMap.put("JAN", 0);
+ monthMap.put("FEB", 1);
+ monthMap.put("MAR", 2);
+ monthMap.put("APR", 3);
+ monthMap.put("MAY", 4);
+ monthMap.put("JUN", 5);
+ monthMap.put("JUL", 6);
+ monthMap.put("AUG", 7);
+ monthMap.put("SEP", 8);
+ monthMap.put("OCT", 9);
+ monthMap.put("NOV", 10);
+ monthMap.put("DEC", 11);
+
+ dayMap.put("SUN", 1);
+ dayMap.put("MON", 2);
+ dayMap.put("TUE", 3);
+ dayMap.put("WED", 4);
+ dayMap.put("THU", 5);
+ dayMap.put("FRI", 6);
+ dayMap.put("SAT", 7);
+ }
+
+ private final String cronExpression;
+ private TimeZone timeZone = null;
+ protected transient TreeSet<Integer> seconds;
+ protected transient TreeSet<Integer> minutes;
+ protected transient TreeSet<Integer> hours;
+ protected transient TreeSet<Integer> daysOfMonth;
+ protected transient TreeSet<Integer> months;
+ protected transient TreeSet<Integer> daysOfWeek;
+ protected transient TreeSet<Integer> years;
+
+ protected transient boolean lastdayOfWeek = false;
+ protected transient int nthdayOfWeek = 0;
+ protected transient boolean lastdayOfMonth = false;
+ protected transient boolean nearestWeekday = false;
+ protected transient int lastdayOffset = 0;
+ protected transient boolean expressionParsed = false;
+
+ public static final int MAX_YEAR = Calendar.getInstance().get(Calendar.YEAR) + 100;
+
+ /**
+ * Constructs a new <CODE>CronExpression</CODE> based on the specified
+ * parameter.
+ *
+ * @param cronExpression String representation of the cron expression the
+ * new object should represent
+ * @throws java.text.ParseException
+ * if the string expression cannot be parsed into a valid
+ * <CODE>CronExpression</CODE>
+ */
+ public CronExpression(String cronExpression) throws ParseException {
+ if (cronExpression == null) {
+ throw new IllegalArgumentException("cronExpression cannot be null");
+ }
+
+ this.cronExpression = cronExpression.toUpperCase(Locale.US);
+
+ buildExpression(this.cronExpression);
+ }
+
+ /**
+ * Constructs a new {@code CronExpression} as a copy of an existing
+ * instance.
+ *
+ * @param expression
+ * The existing cron expression to be copied
+ */
+ public CronExpression(CronExpression expression) {
+ /*
+ * We don't call the other constructor here since we need to swallow the
+ * ParseException. We also elide some of the sanity checking as it is
+ * not logically trippable.
+ */
+ this.cronExpression = expression.getCronExpression();
+ try {
+ buildExpression(cronExpression);
+ } catch (ParseException ex) {
+ throw new AssertionError();
+ }
+ if (expression.getTimeZone() != null) {
+ setTimeZone((TimeZone) expression.getTimeZone().clone());
+ }
+ }
+
+ /**
+ * Indicates whether the given date satisfies the cron expression. Note that
+ * milliseconds are ignored, so two Dates falling on different milliseconds
+ * of the same second will always have the same result here.
+ *
+ * @param date the date to evaluate
+ * @return a boolean indicating whether the given date satisfies the cron
+ * expression
+ */
+ public boolean isSatisfiedBy(Date date) {
+ Calendar testDateCal = Calendar.getInstance(getTimeZone());
+ testDateCal.setTime(date);
+ testDateCal.set(Calendar.MILLISECOND, 0);
+ Date originalDate = testDateCal.getTime();
+
+ testDateCal.add(Calendar.SECOND, -1);
+
+ Date timeAfter = getTimeAfter(testDateCal.getTime());
+
+ return ((timeAfter != null) && (timeAfter.equals(originalDate)));
+ }
+
+ /**
+ * Returns the next date/time <I>after</I> the given date/time which
+ * satisfies the cron expression.
+ *
+ * @param date the date/time at which to begin the search for the next valid
+ * date/time
+ * @return the next valid date/time
+ */
+ public Date getNextValidTimeAfter(Date date) {
+ return getTimeAfter(date);
+ }
+
+ /**
+ * Returns the next date/time <I>after</I> the given date/time which does
+ * <I>not</I> satisfy the expression
+ *
+ * @param date the date/time at which to begin the search for the next
+ * invalid date/time
+ * @return the next valid date/time
+ */
+ public Date getNextInvalidTimeAfter(Date date) {
+ long difference = 1000;
+
+ //move back to the nearest second so differences will be accurate
+ Calendar adjustCal = Calendar.getInstance(getTimeZone());
+ adjustCal.setTime(date);
+ adjustCal.set(Calendar.MILLISECOND, 0);
+ Date lastDate = adjustCal.getTime();
+
+ Date newDate;
+
+ //FUTURE_TODO: (QUARTZ-481) IMPROVE THIS! The following is a BAD solution to this problem. Performance will be very bad here, depending on the cron expression. It is, however A solution.
+
+ //keep getting the next included time until it's farther than one second
+ // apart. At that point, lastDate is the last valid fire time. We return
+ // the second immediately following it.
+ while (difference == 1000) {
+ newDate = getTimeAfter(lastDate);
+ if(newDate == null)
+ break;
+
+ difference = newDate.getTime() - lastDate.getTime();
+
+ if (difference == 1000) {
+ lastDate = newDate;
+ }
+ }
+
+ return new Date(lastDate.getTime() + 1000);
+ }
+
+ /**
+ * Returns the time zone for which this <code>CronExpression</code>
+ * will be resolved.
+ */
+ public TimeZone getTimeZone() {
+ if (timeZone == null) {
+ timeZone = TimeZone.getDefault();
+ }
+
+ return timeZone;
+ }
+
+ /**
+ * Sets the time zone for which this <code>CronExpression</code>
+ * will be resolved.
+ */
+ public void setTimeZone(TimeZone timeZone) {
+ this.timeZone = timeZone;
+ }
+
+ /**
+ * Returns the string representation of the <CODE>CronExpression</CODE>
+ *
+ * @return a string representation of the <CODE>CronExpression</CODE>
+ */
+ @Override
+ public String toString() {
+ return cronExpression;
+ }
+
+ /**
+ * Indicates whether the specified cron expression can be parsed into a
+ * valid cron expression
+ *
+ * @param cronExpression the expression to evaluate
+ * @return a boolean indicating whether the given expression is a valid cron
+ * expression
+ */
+ public static boolean isValidExpression(String cronExpression) {
+
+ try {
+ new CronExpression(cronExpression);
+ } catch (ParseException pe) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public static void validateExpression(String cronExpression) throws ParseException {
+
+ new CronExpression(cronExpression);
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Expression Parsing Functions
+ //
+ ////////////////////////////////////////////////////////////////////////////
+
+ protected void buildExpression(String expression) throws ParseException {
+ expressionParsed = true;
+
+ try {
+
+ if (seconds == null) {
+ seconds = new TreeSet<Integer>();
+ }
+ if (minutes == null) {
+ minutes = new TreeSet<Integer>();
+ }
+ if (hours == null) {
+ hours = new TreeSet<Integer>();
+ }
+ if (daysOfMonth == null) {
+ daysOfMonth = new TreeSet<Integer>();
+ }
+ if (months == null) {
+ months = new TreeSet<Integer>();
+ }
+ if (daysOfWeek == null) {
+ daysOfWeek = new TreeSet<Integer>();
+ }
+ if (years == null) {
+ years = new TreeSet<Integer>();
+ }
+
+ int exprOn = SECOND;
+
+ StringTokenizer exprsTok = new StringTokenizer(expression, " \t",
+ false);
+
+ while (exprsTok.hasMoreTokens() && exprOn <= YEAR) {
+ String expr = exprsTok.nextToken().trim();
+
+ // throw an exception if L is used with other days of the month
+ if(exprOn == DAY_OF_MONTH && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
+ throw new ParseException("Support for specifying 'L' and 'LW' with other days of the month is not implemented", -1);
+ }
+ // throw an exception if L is used with other days of the week
+ if(exprOn == DAY_OF_WEEK && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
+ throw new ParseException("Support for specifying 'L' with other days of the week is not implemented", -1);
+ }
+ if(exprOn == DAY_OF_WEEK && expr.indexOf('#') != -1 && expr.indexOf('#', expr.indexOf('#') +1) != -1) {
+ throw new ParseException("Support for specifying multiple \"nth\" days is not implemented.", -1);
+ }
+
+ StringTokenizer vTok = new StringTokenizer(expr, ",");
+ while (vTok.hasMoreTokens()) {
+ String v = vTok.nextToken();
+ storeExpressionVals(0, v, exprOn);
+ }
+
+ exprOn++;
+ }
+
+ if (exprOn <= DAY_OF_WEEK) {
+ throw new ParseException("Unexpected end of expression.",
+ expression.length());
+ }
+
+ if (exprOn <= YEAR) {
+ storeExpressionVals(0, "*", YEAR);
+ }
+
+ TreeSet<Integer> dow = getSet(DAY_OF_WEEK);
+ TreeSet<Integer> dom = getSet(DAY_OF_MONTH);
+
+ // Copying the logic from the UnsupportedOperationException below
+ boolean dayOfMSpec = !dom.contains(NO_SPEC);
+ boolean dayOfWSpec = !dow.contains(NO_SPEC);
+
+ if (!dayOfMSpec || dayOfWSpec) {
+ if (!dayOfWSpec || dayOfMSpec) {
+ throw new ParseException(
+ "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.", 0);
+ }
+ }
+ } catch (ParseException pe) {
+ throw pe;
+ } catch (Exception e) {
+ throw new ParseException("Illegal cron expression format ("
+ + e.toString() + ")", 0);
+ }
+ }
+
+ protected int storeExpressionVals(int pos, String s, int type)
+ throws ParseException {
+
+ int incr = 0;
+ int i = skipWhiteSpace(pos, s);
+ if (i >= s.length()) {
+ return i;
+ }
+ char c = s.charAt(i);
+ if ((c >= 'A') && (c <= 'Z') && (!s.equals("L")) && (!s.equals("LW")) && (!s.matches("^L-[0-9]*[W]?"))) {
+ String sub = s.substring(i, i + 3);
+ int sval = -1;
+ int eval = -1;
+ if (type == MONTH) {
+ sval = getMonthNumber(sub) + 1;
+ if (sval <= 0) {
+ throw new ParseException("Invalid Month value: '" + sub + "'", i);
+ }
+ if (s.length() > i + 3) {
+ c = s.charAt(i + 3);
+ if (c == '-') {
+ i += 4;
+ sub = s.substring(i, i + 3);
+ eval = getMonthNumber(sub) + 1;
+ if (eval <= 0) {
+ throw new ParseException("Invalid Month value: '" + sub + "'", i);
+ }
+ }
+ }
+ } else if (type == DAY_OF_WEEK) {
+ sval = getDayOfWeekNumber(sub);
+ if (sval < 0) {
+ throw new ParseException("Invalid Day-of-Week value: '"
+ + sub + "'", i);
+ }
+ if (s.length() > i + 3) {
+ c = s.charAt(i + 3);
+ if (c == '-') {
+ i += 4;
+ sub = s.substring(i, i + 3);
+ eval = getDayOfWeekNumber(sub);
+ if (eval < 0) {
+ throw new ParseException(
+ "Invalid Day-of-Week value: '" + sub
+ + "'", i);
+ }
+ } else if (c == '#') {
+ try {
+ i += 4;
+ nthdayOfWeek = Integer.parseInt(s.substring(i));
+ if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
+ throw new Exception();
+ }
+ } catch (Exception e) {
+ throw new ParseException(
+ "A numeric value between 1 and 5 must follow the '#' option",
+ i);
+ }
+ } else if (c == 'L') {
+ lastdayOfWeek = true;
+ i++;
+ }
+ }
+
+ } else {
+ throw new ParseException(
+ "Illegal characters for this position: '" + sub + "'",
+ i);
+ }
+ if (eval != -1) {
+ incr = 1;
+ }
+ addToSet(sval, eval, incr, type);
+ return (i + 3);
+ }
+
+ if (c == '?') {
+ i++;
+ if ((i + 1) < s.length()
+ && (s.charAt(i) != ' ' && s.charAt(i + 1) != '\t')) {
+ throw new ParseException("Illegal character after '?': "
+ + s.charAt(i), i);
+ }
+ if (type != DAY_OF_WEEK && type != DAY_OF_MONTH) {
+ throw new ParseException(
+ "'?' can only be specified for Day-of-Month or Day-of-Week.",
+ i);
+ }
+ if (type == DAY_OF_WEEK && !lastdayOfMonth) {
+ int val = daysOfMonth.last();
+ if (val == NO_SPEC_INT) {
+ throw new ParseException(
+ "'?' can only be specified for Day-of-Month -OR- Day-of-Week.",
+ i);
+ }
+ }
+
+ addToSet(NO_SPEC_INT, -1, 0, type);
+ return i;
+ }
+
+ if (c == '*' || c == '/') {
+ if (c == '*' && (i + 1) >= s.length()) {
+ addToSet(ALL_SPEC_INT, -1, incr, type);
+ return i + 1;
+ } else if (c == '/'
+ && ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s
+ .charAt(i + 1) == '\t')) {
+ throw new ParseException("'/' must be followed by an integer.", i);
+ } else if (c == '*') {
+ i++;
+ }
+ c = s.charAt(i);
+ if (c == '/') { // is an increment specified?
+ i++;
+ if (i >= s.length()) {
+ throw new ParseException("Unexpected end of string.", i);
+ }
+
+ incr = getNumericValue(s, i);
+
+ i++;
+ if (incr > 10) {
+ i++;
+ }
+ checkIncrementRange(incr, type, i);
+ } else {
+ incr = 1;
+ }
+
+ addToSet(ALL_SPEC_INT, -1, incr, type);
+ return i;
+ } else if (c == 'L') {
+ i++;
+ if (type == DAY_OF_MONTH) {
+ lastdayOfMonth = true;
+ }
+ if (type == DAY_OF_WEEK) {
+ addToSet(7, 7, 0, type);
+ }
+ if(type == DAY_OF_MONTH && s.length() > i) {
+ c = s.charAt(i);
+ if(c == '-') {
+ ValueSet vs = getValue(0, s, i+1);
+ lastdayOffset = vs.value;
+ if(lastdayOffset > 30)
+ throw new ParseException("Offset from last day must be <= 30", i+1);
+ i = vs.pos;
+ }
+ if(s.length() > i) {
+ c = s.charAt(i);
+ if(c == 'W') {
+ nearestWeekday = true;
+ i++;
+ }
+ }
+ }
+ return i;
+ } else if (c >= '0' && c <= '9') {
+ int val = Integer.parseInt(String.valueOf(c));
+ i++;
+ if (i >= s.length()) {
+ addToSet(val, -1, -1, type);
+ } else {
+ c = s.charAt(i);
+ if (c >= '0' && c <= '9') {
+ ValueSet vs = getValue(val, s, i);
+ val = vs.value;
+ i = vs.pos;
+ }
+ i = checkNext(i, s, val, type);
+ return i;
+ }
+ } else {
+ throw new ParseException("Unexpected character: " + c, i);
+ }
+
+ return i;
+ }
+
+ private void checkIncrementRange(int incr, int type, int idxPos) throws ParseException {
+ if (incr > 59 && (type == SECOND || type == MINUTE)) {
+ throw new ParseException("Increment > 60 : " + incr, idxPos);
+ } else if (incr > 23 && (type == HOUR)) {
+ throw new ParseException("Increment > 24 : " + incr, idxPos);
+ } else if (incr > 31 && (type == DAY_OF_MONTH)) {
+ throw new ParseException("Increment > 31 : " + incr, idxPos);
+ } else if (incr > 7 && (type == DAY_OF_WEEK)) {
+ throw new ParseException("Increment > 7 : " + incr, idxPos);
+ } else if (incr > 12 && (type == MONTH)) {
+ throw new ParseException("Increment > 12 : " + incr, idxPos);
+ }
+ }
+
+ protected int checkNext(int pos, String s, int val, int type)
+ throws ParseException {
+
+ int end = -1;
+ int i = pos;
+
+ if (i >= s.length()) {
+ addToSet(val, end, -1, type);
+ return i;
+ }
+
+ char c = s.charAt(pos);
+
+ if (c == 'L') {
+ if (type == DAY_OF_WEEK) {
+ if(val < 1 || val > 7)
+ throw new ParseException("Day-of-Week values must be between 1 and 7", -1);
+ lastdayOfWeek = true;
+ } else {
+ throw new ParseException("'L' option is not valid here. (pos=" + i + ")", i);
+ }
+ TreeSet<Integer> set = getSet(type);
+ set.add(val);
+ i++;
+ return i;
+ }
+
+ if (c == 'W') {
+ if (type == DAY_OF_MONTH) {
+ nearestWeekday = true;
+ } else {
+ throw new ParseException("'W' option is not valid here. (pos=" + i + ")", i);
+ }
+ if(val > 31)
+ throw new ParseException("The 'W' option does not make sense with values larger than 31 (max number of days in a month)", i);
+ TreeSet<Integer> set = getSet(type);
+ set.add(val);
+ i++;
+ return i;
+ }
+
+ if (c == '#') {
+ if (type != DAY_OF_WEEK) {
+ throw new ParseException("'#' option is not valid here. (pos=" + i + ")", i);
+ }
+ i++;
+ try {
+ nthdayOfWeek = Integer.parseInt(s.substring(i));
+ if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
+ throw new Exception();
+ }
+ } catch (Exception e) {
+ throw new ParseException(
+ "A numeric value between 1 and 5 must follow the '#' option",
+ i);
+ }
+
+ TreeSet<Integer> set = getSet(type);
+ set.add(val);
+ i++;
+ return i;
+ }
+
+ if (c == '-') {
+ i++;
+ c = s.charAt(i);
+ int v = Integer.parseInt(String.valueOf(c));
+ end = v;
+ i++;
+ if (i >= s.length()) {
+ addToSet(val, end, 1, type);
+ return i;
+ }
+ c = s.charAt(i);
+ if (c >= '0' && c <= '9') {
+ ValueSet vs = getValue(v, s, i);
+ end = vs.value;
+ i = vs.pos;
+ }
+ if (i < s.length() && ((c = s.charAt(i)) == '/')) {
+ i++;
+ c = s.charAt(i);
+ int v2 = Integer.parseInt(String.valueOf(c));
+ i++;
+ if (i >= s.length()) {
+ addToSet(val, end, v2, type);
+ return i;
+ }
+ c = s.charAt(i);
+ if (c >= '0' && c <= '9') {
+ ValueSet vs = getValue(v2, s, i);
+ int v3 = vs.value;
+ addToSet(val, end, v3, type);
+ i = vs.pos;
+ return i;
+ } else {
+ addToSet(val, end, v2, type);
+ return i;
+ }
+ } else {
+ addToSet(val, end, 1, type);
+ return i;
+ }
+ }
+
+ if (c == '/') {
+ if ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s.charAt(i + 1) == '\t') {
+ throw new ParseException("'/' must be followed by an integer.", i);
+ }
+
+ i++;
+ c = s.charAt(i);
+ int v2 = Integer.parseInt(String.valueOf(c));
+ i++;
+ if (i >= s.length()) {
+ checkIncrementRange(v2, type, i);
+ addToSet(val, end, v2, type);
+ return i;
+ }
+ c = s.charAt(i);
+ if (c >= '0' && c <= '9') {
+ ValueSet vs = getValue(v2, s, i);
+ int v3 = vs.value;
+ checkIncrementRange(v3, type, i);
+ addToSet(val, end, v3, type);
+ i = vs.pos;
+ return i;
+ } else {
+ throw new ParseException("Unexpected character '" + c + "' after '/'", i);
+ }
+ }
+
+ addToSet(val, end, 0, type);
+ i++;
+ return i;
+ }
+
+ public String getCronExpression() {
+ return cronExpression;
+ }
+
+ public String getExpressionSummary() {
+ StringBuilder buf = new StringBuilder();
+
+ buf.append("seconds: ");
+ buf.append(getExpressionSetSummary(seconds));
+ buf.append("\n");
+ buf.append("minutes: ");
+ buf.append(getExpressionSetSummary(minutes));
+ buf.append("\n");
+ buf.append("hours: ");
+ buf.append(getExpressionSetSummary(hours));
+ buf.append("\n");
+ buf.append("daysOfMonth: ");
+ buf.append(getExpressionSetSummary(daysOfMonth));
+ buf.append("\n");
+ buf.append("months: ");
+ buf.append(getExpressionSetSummary(months));
+ buf.append("\n");
+ buf.append("daysOfWeek: ");
+ buf.append(getExpressionSetSummary(daysOfWeek));
+ buf.append("\n");
+ buf.append("lastdayOfWeek: ");
+ buf.append(lastdayOfWeek);
+ buf.append("\n");
+ buf.append("nearestWeekday: ");
+ buf.append(nearestWeekday);
+ buf.append("\n");
+ buf.append("NthDayOfWeek: ");
+ buf.append(nthdayOfWeek);
+ buf.append("\n");
+ buf.append("lastdayOfMonth: ");
+ buf.append(lastdayOfMonth);
+ buf.append("\n");
+ buf.append("years: ");
+ buf.append(getExpressionSetSummary(years));
+ buf.append("\n");
+
+ return buf.toString();
+ }
+
+ protected String getExpressionSetSummary(java.util.Set<Integer> set) {
+
+ if (set.contains(NO_SPEC)) {
+ return "?";
+ }
+ if (set.contains(ALL_SPEC)) {
+ return "*";
+ }
+
+ StringBuilder buf = new StringBuilder();
+
+ Iterator<Integer> itr = set.iterator();
+ boolean first = true;
+ while (itr.hasNext()) {
+ Integer iVal = itr.next();
+ String val = iVal.toString();
+ if (!first) {
+ buf.append(",");
+ }
+ buf.append(val);
+ first = false;
+ }
+
+ return buf.toString();
+ }
+
+ protected String getExpressionSetSummary(java.util.ArrayList<Integer> list) {
+
+ if (list.contains(NO_SPEC)) {
+ return "?";
+ }
+ if (list.contains(ALL_SPEC)) {
+ return "*";
+ }
+
+ StringBuilder buf = new StringBuilder();
+
+ Iterator<Integer> itr = list.iterator();
+ boolean first = true;
+ while (itr.hasNext()) {
+ Integer iVal = itr.next();
+ String val = iVal.toString();
+ if (!first) {
+ buf.append(",");
+ }
+ buf.append(val);
+ first = false;
+ }
+
+ return buf.toString();
+ }
+
+ protected int skipWhiteSpace(int i, String s) {
+ for (; i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t'); i++) {
+ }
+
+ return i;
+ }
+
+ protected int findNextWhiteSpace(int i, String s) {
+ for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); i++) {
+ }
+
+ return i;
+ }
+
+ protected void addToSet(int val, int end, int incr, int type)
+ throws ParseException {
+
+ TreeSet<Integer> set = getSet(type);
+
+ if (type == SECOND || type == MINUTE) {
+ if ((val < 0 || val > 59 || end > 59) && (val != ALL_SPEC_INT)) {
+ throw new ParseException(
+ "Minute and Second values must be between 0 and 59",
+ -1);
+ }
+ } else if (type == HOUR) {
+ if ((val < 0 || val > 23 || end > 23) && (val != ALL_SPEC_INT)) {
+ throw new ParseException(
+ "Hour values must be between 0 and 23", -1);
+ }
+ } else if (type == DAY_OF_MONTH) {
+ if ((val < 1 || val > 31 || end > 31) && (val != ALL_SPEC_INT)
+ && (val != NO_SPEC_INT)) {
+ throw new ParseException(
+ "Day of month values must be between 1 and 31", -1);
+ }
+ } else if (type == MONTH) {
+ if ((val < 1 || val > 12 || end > 12) && (val != ALL_SPEC_INT)) {
+ throw new ParseException(
+ "Month values must be between 1 and 12", -1);
+ }
+ } else if (type == DAY_OF_WEEK) {
+ if ((val == 0 || val > 7 || end > 7) && (val != ALL_SPEC_INT)
+ && (val != NO_SPEC_INT)) {
+ throw new ParseException(
+ "Day-of-Week values must be between 1 and 7", -1);
+ }
+ }
+
+ if ((incr == 0 || incr == -1) && val != ALL_SPEC_INT) {
+ if (val != -1) {
+ set.add(val);
+ } else {
+ set.add(NO_SPEC);
+ }
+
+ return;
+ }
+
+ int startAt = val;
+ int stopAt = end;
+
+ if (val == ALL_SPEC_INT && incr <= 0) {
+ incr = 1;
+ set.add(ALL_SPEC); // put in a marker, but also fill values
+ }
+
+ if (type == SECOND || type == MINUTE) {
+ if (stopAt == -1) {
+ stopAt = 59;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 0;
+ }
+ } else if (type == HOUR) {
+ if (stopAt == -1) {
+ stopAt = 23;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 0;
+ }
+ } else if (type == DAY_OF_MONTH) {
+ if (stopAt == -1) {
+ stopAt = 31;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 1;
+ }
+ } else if (type == MONTH) {
+ if (stopAt == -1) {
+ stopAt = 12;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 1;
+ }
+ } else if (type == DAY_OF_WEEK) {
+ if (stopAt == -1) {
+ stopAt = 7;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 1;
+ }
+ } else if (type == YEAR) {
+ if (stopAt == -1) {
+ stopAt = MAX_YEAR;
+ }
+ if (startAt == -1 || startAt == ALL_SPEC_INT) {
+ startAt = 1970;
+ }
+ }
+
+ // if the end of the range is before the start, then we need to overflow into
+ // the next day, month etc. This is done by adding the maximum amount for that
+ // type, and using modulus max to determine the value being added.
+ int max = -1;
+ if (stopAt < startAt) {
+ switch (type) {
+ case SECOND : max = 60; break;
+ case MINUTE : max = 60; break;
+ case HOUR : max = 24; break;
+ case MONTH : max = 12; break;
+ case DAY_OF_WEEK : max = 7; break;
+ case DAY_OF_MONTH : max = 31; break;
+ case YEAR : throw new IllegalArgumentException("Start year must be less than stop year");
+ default : throw new IllegalArgumentException("Unexpected type encountered");
+ }
+ stopAt += max;
+ }
+
+ for (int i = startAt; i <= stopAt; i += incr) {
+ if (max == -1) {
+ // ie: there's no max to overflow over
+ set.add(i);
+ } else {
+ // take the modulus to get the real value
+ int i2 = i % max;
+
+ // 1-indexed ranges should not include 0, and should include their max
+ if (i2 == 0 && (type == MONTH || type == DAY_OF_WEEK || type == DAY_OF_MONTH) ) {
+ i2 = max;
+ }
+
+ set.add(i2);
+ }
+ }
+ }
+
+ TreeSet<Integer> getSet(int type) {
+ switch (type) {
+ case SECOND:
+ return seconds;
+ case MINUTE:
+ return minutes;
+ case HOUR:
+ return hours;
+ case DAY_OF_MONTH:
+ return daysOfMonth;
+ case MONTH:
+ return months;
+ case DAY_OF_WEEK:
+ return daysOfWeek;
+ case YEAR:
+ return years;
+ default:
+ return null;
+ }
+ }
+
+ protected ValueSet getValue(int v, String s, int i) {
+ char c = s.charAt(i);
+ StringBuilder s1 = new StringBuilder(String.valueOf(v));
+ while (c >= '0' && c <= '9') {
+ s1.append(c);
+ i++;
+ if (i >= s.length()) {
+ break;
+ }
+ c = s.charAt(i);
+ }
+ ValueSet val = new ValueSet();
+
+ val.pos = (i < s.length()) ? i : i + 1;
+ val.value = Integer.parseInt(s1.toString());
+ return val;
+ }
+
+ protected int getNumericValue(String s, int i) {
+ int endOfVal = findNextWhiteSpace(i, s);
+ String val = s.substring(i, endOfVal);
+ return Integer.parseInt(val);
+ }
+
+ protected int getMonthNumber(String s) {
+ Integer integer = monthMap.get(s);
+
+ if (integer == null) {
+ return -1;
+ }
+
+ return integer;
+ }
+
+ protected int getDayOfWeekNumber(String s) {
+ Integer integer = dayMap.get(s);
+
+ if (integer == null) {
+ return -1;
+ }
+
+ return integer;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Computation Functions
+ //
+ ////////////////////////////////////////////////////////////////////////////
+
+ public Date getTimeAfter(Date afterTime) {
+
+ // Computation is based on Gregorian year only.
+ Calendar cl = new java.util.GregorianCalendar(getTimeZone());
+
+ // move ahead one second, since we're computing the time *after* the
+ // given time
+ afterTime = new Date(afterTime.getTime() + 1000);
+ // CronTrigger does not deal with milliseconds
+ cl.setTime(afterTime);
+ cl.set(Calendar.MILLISECOND, 0);
+
+ boolean gotOne = false;
+ // loop until we've computed the next time, or we've past the endTime
+ while (!gotOne) {
+
+ //if (endTime != null && cl.getTime().after(endTime)) return null;
+ if(cl.get(Calendar.YEAR) > 2999) { // prevent endless loop...
+ return null;
+ }
+
+ SortedSet<Integer> st = null;
+ int t = 0;
+
+ int sec = cl.get(Calendar.SECOND);
+ int min = cl.get(Calendar.MINUTE);
+
+ // get second.................................................
+ st = seconds.tailSet(sec);
+ if (st != null && st.size() != 0) {
+ sec = st.first();
+ } else {
+ sec = seconds.first();
+ min++;
+ cl.set(Calendar.MINUTE, min);
+ }
+ cl.set(Calendar.SECOND, sec);
+
+ min = cl.get(Calendar.MINUTE);
+ int hr = cl.get(Calendar.HOUR_OF_DAY);
+ t = -1;
+
+ // get minute.................................................
+ st = minutes.tailSet(min);
+ if (st != null && st.size() != 0) {
+ t = min;
+ min = st.first();
+ } else {
+ min = minutes.first();
+ hr++;
+ }
+ if (min != t) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, min);
+ setCalendarHour(cl, hr);
+ continue;
+ }
+ cl.set(Calendar.MINUTE, min);
+
+ hr = cl.get(Calendar.HOUR_OF_DAY);
+ int day = cl.get(Calendar.DAY_OF_MONTH);
+ t = -1;
+
+ // get hour...................................................
+ st = hours.tailSet(hr);
+ if (st != null && st.size() != 0) {
+ t = hr;
+ hr = st.first();
+ } else {
+ hr = hours.first();
+ day++;
+ }
+ if (hr != t) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.DAY_OF_MONTH, day);
+ setCalendarHour(cl, hr);
+ continue;
+ }
+ cl.set(Calendar.HOUR_OF_DAY, hr);
+
+ day = cl.get(Calendar.DAY_OF_MONTH);
+ int mon = cl.get(Calendar.MONTH) + 1;
+ // '+ 1' because calendar is 0-based for this field, and we are
+ // 1-based
+ t = -1;
+ int tmon = mon;
+
+ // get day...................................................
+ boolean dayOfMSpec = !daysOfMonth.contains(NO_SPEC);
+ boolean dayOfWSpec = !daysOfWeek.contains(NO_SPEC);
+ if (dayOfMSpec && !dayOfWSpec) { // get day by day of month rule
+ st = daysOfMonth.tailSet(day);
+ if (lastdayOfMonth) {
+ if(!nearestWeekday) {
+ t = day;
+ day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+ day -= lastdayOffset;
+ if(t > day) {
+ mon++;
+ if(mon > 12) {
+ mon = 1;
+ tmon = 3333; // ensure test of mon != tmon further below fails
+ cl.add(Calendar.YEAR, 1);
+ }
+ day = 1;
+ }
+ } else {
+ t = day;
+ day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+ day -= lastdayOffset;
+
+ java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
+ tcal.set(Calendar.SECOND, 0);
+ tcal.set(Calendar.MINUTE, 0);
+ tcal.set(Calendar.HOUR_OF_DAY, 0);
+ tcal.set(Calendar.DAY_OF_MONTH, day);
+ tcal.set(Calendar.MONTH, mon - 1);
+ tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
+
+ int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+ int dow = tcal.get(Calendar.DAY_OF_WEEK);
+
+ if(dow == Calendar.SATURDAY && day == 1) {
+ day += 2;
+ } else if(dow == Calendar.SATURDAY) {
+ day -= 1;
+ } else if(dow == Calendar.SUNDAY && day == ldom) {
+ day -= 2;
+ } else if(dow == Calendar.SUNDAY) {
+ day += 1;
+ }
+
+ tcal.set(Calendar.SECOND, sec);
+ tcal.set(Calendar.MINUTE, min);
+ tcal.set(Calendar.HOUR_OF_DAY, hr);
+ tcal.set(Calendar.DAY_OF_MONTH, day);
+ tcal.set(Calendar.MONTH, mon - 1);
+ Date nTime = tcal.getTime();
+ if(nTime.before(afterTime)) {
+ day = 1;
+ mon++;
+ }
+ }
+ } else if(nearestWeekday) {
+ t = day;
+ day = daysOfMonth.first();
+
+ java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
+ tcal.set(Calendar.SECOND, 0);
+ tcal.set(Calendar.MINUTE, 0);
+ tcal.set(Calendar.HOUR_OF_DAY, 0);
+ tcal.set(Calendar.DAY_OF_MONTH, day);
+ tcal.set(Calendar.MONTH, mon - 1);
+ tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
+
+ int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+ int dow = tcal.get(Calendar.DAY_OF_WEEK);
+
+ if(dow == Calendar.SATURDAY && day == 1) {
+ day += 2;
+ } else if(dow == Calendar.SATURDAY) {
+ day -= 1;
+ } else if(dow == Calendar.SUNDAY && day == ldom) {
+ day -= 2;
+ } else if(dow == Calendar.SUNDAY) {
+ day += 1;
+ }
+
+
+ tcal.set(Calendar.SECOND, sec);
+ tcal.set(Calendar.MINUTE, min);
+ tcal.set(Calendar.HOUR_OF_DAY, hr);
+ tcal.set(Calendar.DAY_OF_MONTH, day);
+ tcal.set(Calendar.MONTH, mon - 1);
+ Date nTime = tcal.getTime();
+ if(nTime.before(afterTime)) {
+ day = daysOfMonth.first();
+ mon++;
+ }
+ } else if (st != null && st.size() != 0) {
+ t = day;
+ day = st.first();
+ // make sure we don't over-run a short month, such as february
+ int lastDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+ if (day > lastDay) {
+ day = daysOfMonth.first();
+ mon++;
+ }
+ } else {
+ day = daysOfMonth.first();
+ mon++;
+ }
+
+ if (day != t || mon != tmon) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, day);
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' because calendar is 0-based for this field, and we
+ // are 1-based
+ continue;
+ }
+ } else if (dayOfWSpec && !dayOfMSpec) { // get day by day of week rule
+ if (lastdayOfWeek) { // are we looking for the last XXX day of
+ // the month?
+ int dow = daysOfWeek.first(); // desired
+ // d-o-w
+ int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
+ int daysToAdd = 0;
+ if (cDow < dow) {
+ daysToAdd = dow - cDow;
+ }
+ if (cDow > dow) {
+ daysToAdd = dow + (7 - cDow);
+ }
+
+ int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+
+ if (day + daysToAdd > lDay) { // did we already miss the
+ // last one?
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, 1);
+ cl.set(Calendar.MONTH, mon);
+ // no '- 1' here because we are promoting the month
+ continue;
+ }
+
+ // find date of last occurrence of this day in this month...
+ while ((day + daysToAdd + 7) <= lDay) {
+ daysToAdd += 7;
+ }
+
+ day += daysToAdd;
+
+ if (daysToAdd > 0) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, day);
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' here because we are not promoting the month
+ continue;
+ }
+
+ } else if (nthdayOfWeek != 0) {
+ // are we looking for the Nth XXX day in the month?
+ int dow = daysOfWeek.first(); // desired
+ // d-o-w
+ int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
+ int daysToAdd = 0;
+ if (cDow < dow) {
+ daysToAdd = dow - cDow;
+ } else if (cDow > dow) {
+ daysToAdd = dow + (7 - cDow);
+ }
+
+ boolean dayShifted = false;
+ if (daysToAdd > 0) {
+ dayShifted = true;
+ }
+
+ day += daysToAdd;
+ int weekOfMonth = day / 7;
+ if (day % 7 > 0) {
+ weekOfMonth++;
+ }
+
+ daysToAdd = (nthdayOfWeek - weekOfMonth) * 7;
+ day += daysToAdd;
+ if (daysToAdd < 0
+ || day > getLastDayOfMonth(mon, cl
+ .get(Calendar.YEAR))) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, 1);
+ cl.set(Calendar.MONTH, mon);
+ // no '- 1' here because we are promoting the month
+ continue;
+ } else if (daysToAdd > 0 || dayShifted) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, day);
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' here because we are NOT promoting the month
+ continue;
+ }
+ } else {
+ int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
+ int dow = daysOfWeek.first(); // desired
+ // d-o-w
+ st = daysOfWeek.tailSet(cDow);
+ if (st != null && st.size() > 0) {
+ dow = st.first();
+ }
+
+ int daysToAdd = 0;
+ if (cDow < dow) {
+ daysToAdd = dow - cDow;
+ }
+ if (cDow > dow) {
+ daysToAdd = dow + (7 - cDow);
+ }
+
+ int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
+
+ if (day + daysToAdd > lDay) { // will we pass the end of
+ // the month?
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, 1);
+ cl.set(Calendar.MONTH, mon);
+ // no '- 1' here because we are promoting the month
+ continue;
+ } else if (daysToAdd > 0) { // are we swithing days?
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, day + daysToAdd);
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' because calendar is 0-based for this field,
+ // and we are 1-based
+ continue;
+ }
+ }
+ } else { // dayOfWSpec && !dayOfMSpec
+ throw new UnsupportedOperationException(
+ "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.");
+ }
+ cl.set(Calendar.DAY_OF_MONTH, day);
+
+ mon = cl.get(Calendar.MONTH) + 1;
+ // '+ 1' because calendar is 0-based for this field, and we are
+ // 1-based
+ int year = cl.get(Calendar.YEAR);
+ t = -1;
+
+ // test for expressions that never generate a valid fire date,
+ // but keep looping...
+ if (year > MAX_YEAR) {
+ return null;
+ }
+
+ // get month...................................................
+ st = months.tailSet(mon);
+ if (st != null && st.size() != 0) {
+ t = mon;
+ mon = st.first();
+ } else {
+ mon = months.first();
+ year++;
+ }
+ if (mon != t) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, 1);
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' because calendar is 0-based for this field, and we are
+ // 1-based
+ cl.set(Calendar.YEAR, year);
+ continue;
+ }
+ cl.set(Calendar.MONTH, mon - 1);
+ // '- 1' because calendar is 0-based for this field, and we are
+ // 1-based
+
+ year = cl.get(Calendar.YEAR);
+ t = -1;
+
+ // get year...................................................
+ st = years.tailSet(year);
+ if (st != null && st.size() != 0) {
+ t = year;
+ year = st.first();
+ } else {
+ return null; // ran out of years...
+ }
+
+ if (year != t) {
+ cl.set(Calendar.SECOND, 0);
+ cl.set(Calendar.MINUTE, 0);
+ cl.set(Calendar.HOUR_OF_DAY, 0);
+ cl.set(Calendar.DAY_OF_MONTH, 1);
+ cl.set(Calendar.MONTH, 0);
+ // '- 1' because calendar is 0-based for this field, and we are
+ // 1-based
+ cl.set(Calendar.YEAR, year);
+ continue;
+ }
+ cl.set(Calendar.YEAR, year);
+
+ gotOne = true;
+ } // while( !done )
+
+ return cl.getTime();
+ }
+
+ /**
+ * Advance the calendar to the particular hour paying particular attention
+ * to daylight saving problems.
+ *
+ * @param cal the calendar to operate on
+ * @param hour the hour to set
+ */
+ protected void setCalendarHour(Calendar cal, int hour) {
+ cal.set(java.util.Calendar.HOUR_OF_DAY, hour);
+ if (cal.get(java.util.Calendar.HOUR_OF_DAY) != hour && hour != 24) {
+ cal.set(java.util.Calendar.HOUR_OF_DAY, hour + 1);
+ }
+ }
+
+ /**
+ * NOT YET IMPLEMENTED: Returns the time before the given time
+ * that the <code>CronExpression</code> matches.
+ */
+ public Date getTimeBefore(Date endTime) {
+ // FUTURE_TODO: implement QUARTZ-423
+ return null;
+ }
+
+ /**
+ * NOT YET IMPLEMENTED: Returns the final time that the
+ * <code>CronExpression</code> will match.
+ */
+ public Date getFinalFireTime() {
+ // FUTURE_TODO: implement QUARTZ-423
+ return null;
+ }
+
+ protected boolean isLeapYear(int year) {
+ return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
+ }
+
+ protected int getLastDayOfMonth(int monthNum, int year) {
+
+ switch (monthNum) {
+ case 1:
+ return 31;
+ case 2:
+ return (isLeapYear(year)) ? 29 : 28;
+ case 3:
+ return 31;
+ case 4:
+ return 30;
+ case 5:
+ return 31;
+ case 6:
+ return 30;
+ case 7:
+ return 31;
+ case 8:
+ return 31;
+ case 9:
+ return 30;
+ case 10:
+ return 31;
+ case 11:
+ return 30;
+ case 12:
+ return 31;
+ default:
+ throw new IllegalArgumentException("Illegal month number: "
+ + monthNum);
+ }
+ }
+
+
+ private void readObject(java.io.ObjectInputStream stream)
+ throws java.io.IOException, ClassNotFoundException {
+
+ stream.defaultReadObject();
+ try {
+ buildExpression(cronExpression);
+ } catch (Exception ignore) {
+ } // never happens
+ }
+
+ @Override
+ @Deprecated
+ public Object clone() {
+ return new CronExpression(this);
+ }
+}
+
+class ValueSet {
+ public int value;
+
+ public int pos;
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/exception/XxlJobException.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/exception/XxlJobException.java
new file mode 100644
index 0000000..5199bb3
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/exception/XxlJobException.java
@@ -0,0 +1,14 @@
+package com.vci.ubcs.xxl.job.admin.core.exception;
+
+/**
+ * @author xuxueli 2019-05-04 23:19:29
+ */
+public class XxlJobException extends RuntimeException {
+
+ public XxlJobException() {
+ }
+ public XxlJobException(String message) {
+ super(message);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobGroup.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobGroup.java
new file mode 100644
index 0000000..181a408
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobGroup.java
@@ -0,0 +1,76 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Created by xuxueli on 16/9/30.
+ */
+public class XxlJobGroup {
+
+ private int id;
+ private String appName;
+ private String title;
+ private int order;
+ private int addressType; // 鎵ц鍣ㄥ湴鍧�绫诲瀷锛�0=鑷姩娉ㄥ唽銆�1=鎵嬪姩褰曞叆
+ private String addressList; // 鎵ц鍣ㄥ湴鍧�鍒楄〃锛屽鍦板潃閫楀彿鍒嗛殧(鎵嬪姩褰曞叆)
+
+ // registry list
+ private List<String> registryList; // 鎵ц鍣ㄥ湴鍧�鍒楄〃(绯荤粺娉ㄥ唽)
+ public List<String> getRegistryList() {
+ if (addressList!=null && addressList.trim().length()>0) {
+ registryList = new ArrayList<String>(Arrays.asList(addressList.split(",")));
+ }
+ return registryList;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public void setAppName(String appName) {
+ this.appName = appName;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getOrder() {
+ return order;
+ }
+
+ public void setOrder(int order) {
+ this.order = order;
+ }
+
+ public int getAddressType() {
+ return addressType;
+ }
+
+ public void setAddressType(int addressType) {
+ this.addressType = addressType;
+ }
+
+ public String getAddressList() {
+ return addressList;
+ }
+
+ public void setAddressList(String addressList) {
+ this.addressList = addressList;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobInfo.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobInfo.java
new file mode 100644
index 0000000..7355fe5
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobInfo.java
@@ -0,0 +1,218 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.Date;
+
+/**
+ * xxl-job info
+ *
+ * @author xuxueli 2016-1-12 18:25:49
+ */
+public class XxlJobInfo {
+
+ private int id; // 涓婚敭ID
+
+ private int jobGroup; // 鎵ц鍣ㄤ富閿甀D
+ private String jobCron; // 浠诲姟鎵цCRON琛ㄨ揪寮�
+ private String jobDesc;
+
+ private Date addTime;
+ private Date updateTime;
+
+ private String author; // 璐熻矗浜�
+ private String alarmEmail; // 鎶ヨ閭欢
+
+ private String executorRouteStrategy; // 鎵ц鍣ㄨ矾鐢辩瓥鐣�
+ private String executorHandler; // 鎵ц鍣紝浠诲姟Handler鍚嶇О
+ private String executorParam; // 鎵ц鍣紝浠诲姟鍙傛暟
+ private String executorBlockStrategy; // 闃诲澶勭悊绛栫暐
+ private int executorTimeout; // 浠诲姟鎵ц瓒呮椂鏃堕棿锛屽崟浣嶇
+ private int executorFailRetryCount; // 澶辫触閲嶈瘯娆℃暟
+
+ private String glueType; // GLUE绫诲瀷 #com.xxl.job.core.glue.GlueTypeEnum
+ private String glueSource; // GLUE婧愪唬鐮�
+ private String glueRemark; // GLUE澶囨敞
+ private Date glueUpdatetime; // GLUE鏇存柊鏃堕棿
+
+ private String childJobId; // 瀛愪换鍔D锛屽涓�楀彿鍒嗛殧
+
+ private int triggerStatus; // 璋冨害鐘舵�侊細0-鍋滄锛�1-杩愯
+ private long triggerLastTime; // 涓婃璋冨害鏃堕棿
+ private long triggerNextTime; // 涓嬫璋冨害鏃堕棿
+
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getJobGroup() {
+ return jobGroup;
+ }
+
+ public void setJobGroup(int jobGroup) {
+ this.jobGroup = jobGroup;
+ }
+
+ public String getJobCron() {
+ return jobCron;
+ }
+
+ public void setJobCron(String jobCron) {
+ this.jobCron = jobCron;
+ }
+
+ public String getJobDesc() {
+ return jobDesc;
+ }
+
+ public void setJobDesc(String jobDesc) {
+ this.jobDesc = jobDesc;
+ }
+
+ public Date getAddTime() {
+ return addTime;
+ }
+
+ public void setAddTime(Date addTime) {
+ this.addTime = addTime;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ public String getAlarmEmail() {
+ return alarmEmail;
+ }
+
+ public void setAlarmEmail(String alarmEmail) {
+ this.alarmEmail = alarmEmail;
+ }
+
+ public String getExecutorRouteStrategy() {
+ return executorRouteStrategy;
+ }
+
+ public void setExecutorRouteStrategy(String executorRouteStrategy) {
+ this.executorRouteStrategy = executorRouteStrategy;
+ }
+
+ public String getExecutorHandler() {
+ return executorHandler;
+ }
+
+ public void setExecutorHandler(String executorHandler) {
+ this.executorHandler = executorHandler;
+ }
+
+ public String getExecutorParam() {
+ return executorParam;
+ }
+
+ public void setExecutorParam(String executorParam) {
+ this.executorParam = executorParam;
+ }
+
+ public String getExecutorBlockStrategy() {
+ return executorBlockStrategy;
+ }
+
+ public void setExecutorBlockStrategy(String executorBlockStrategy) {
+ this.executorBlockStrategy = executorBlockStrategy;
+ }
+
+ public int getExecutorTimeout() {
+ return executorTimeout;
+ }
+
+ public void setExecutorTimeout(int executorTimeout) {
+ this.executorTimeout = executorTimeout;
+ }
+
+ public int getExecutorFailRetryCount() {
+ return executorFailRetryCount;
+ }
+
+ public void setExecutorFailRetryCount(int executorFailRetryCount) {
+ this.executorFailRetryCount = executorFailRetryCount;
+ }
+
+ public String getGlueType() {
+ return glueType;
+ }
+
+ public void setGlueType(String glueType) {
+ this.glueType = glueType;
+ }
+
+ public String getGlueSource() {
+ return glueSource;
+ }
+
+ public void setGlueSource(String glueSource) {
+ this.glueSource = glueSource;
+ }
+
+ public String getGlueRemark() {
+ return glueRemark;
+ }
+
+ public void setGlueRemark(String glueRemark) {
+ this.glueRemark = glueRemark;
+ }
+
+ public Date getGlueUpdatetime() {
+ return glueUpdatetime;
+ }
+
+ public void setGlueUpdatetime(Date glueUpdatetime) {
+ this.glueUpdatetime = glueUpdatetime;
+ }
+
+ public String getChildJobId() {
+ return childJobId;
+ }
+
+ public void setChildJobId(String childJobId) {
+ this.childJobId = childJobId;
+ }
+
+ public int getTriggerStatus() {
+ return triggerStatus;
+ }
+
+ public void setTriggerStatus(int triggerStatus) {
+ this.triggerStatus = triggerStatus;
+ }
+
+ public long getTriggerLastTime() {
+ return triggerLastTime;
+ }
+
+ public void setTriggerLastTime(long triggerLastTime) {
+ this.triggerLastTime = triggerLastTime;
+ }
+
+ public long getTriggerNextTime() {
+ return triggerNextTime;
+ }
+
+ public void setTriggerNextTime(long triggerNextTime) {
+ this.triggerNextTime = triggerNextTime;
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLog.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLog.java
new file mode 100644
index 0000000..6deb994
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLog.java
@@ -0,0 +1,157 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.Date;
+
+/**
+ * xxl-job log, used to track trigger process
+ * @author xuxueli 2015-12-19 23:19:09
+ */
+public class XxlJobLog {
+
+ private long id;
+
+ // job info
+ private int jobGroup;
+ private int jobId;
+
+ // execute info
+ private String executorAddress;
+ private String executorHandler;
+ private String executorParam;
+ private String executorShardingParam;
+ private int executorFailRetryCount;
+
+ // trigger info
+ private Date triggerTime;
+ private int triggerCode;
+ private String triggerMsg;
+
+ // handle info
+ private Date handleTime;
+ private int handleCode;
+ private String handleMsg;
+
+ // alarm info
+ private int alarmStatus;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public int getJobGroup() {
+ return jobGroup;
+ }
+
+ public void setJobGroup(int jobGroup) {
+ this.jobGroup = jobGroup;
+ }
+
+ public int getJobId() {
+ return jobId;
+ }
+
+ public void setJobId(int jobId) {
+ this.jobId = jobId;
+ }
+
+ public String getExecutorAddress() {
+ return executorAddress;
+ }
+
+ public void setExecutorAddress(String executorAddress) {
+ this.executorAddress = executorAddress;
+ }
+
+ public String getExecutorHandler() {
+ return executorHandler;
+ }
+
+ public void setExecutorHandler(String executorHandler) {
+ this.executorHandler = executorHandler;
+ }
+
+ public String getExecutorParam() {
+ return executorParam;
+ }
+
+ public void setExecutorParam(String executorParam) {
+ this.executorParam = executorParam;
+ }
+
+ public String getExecutorShardingParam() {
+ return executorShardingParam;
+ }
+
+ public void setExecutorShardingParam(String executorShardingParam) {
+ this.executorShardingParam = executorShardingParam;
+ }
+
+ public int getExecutorFailRetryCount() {
+ return executorFailRetryCount;
+ }
+
+ public void setExecutorFailRetryCount(int executorFailRetryCount) {
+ this.executorFailRetryCount = executorFailRetryCount;
+ }
+
+ public Date getTriggerTime() {
+ return triggerTime;
+ }
+
+ public void setTriggerTime(Date triggerTime) {
+ this.triggerTime = triggerTime;
+ }
+
+ public int getTriggerCode() {
+ return triggerCode;
+ }
+
+ public void setTriggerCode(int triggerCode) {
+ this.triggerCode = triggerCode;
+ }
+
+ public String getTriggerMsg() {
+ return triggerMsg;
+ }
+
+ public void setTriggerMsg(String triggerMsg) {
+ this.triggerMsg = triggerMsg;
+ }
+
+ public Date getHandleTime() {
+ return handleTime;
+ }
+
+ public void setHandleTime(Date handleTime) {
+ this.handleTime = handleTime;
+ }
+
+ public int getHandleCode() {
+ return handleCode;
+ }
+
+ public void setHandleCode(int handleCode) {
+ this.handleCode = handleCode;
+ }
+
+ public String getHandleMsg() {
+ return handleMsg;
+ }
+
+ public void setHandleMsg(String handleMsg) {
+ this.handleMsg = handleMsg;
+ }
+
+ public int getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(int alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogGlue.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogGlue.java
new file mode 100644
index 0000000..716d37c
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogGlue.java
@@ -0,0 +1,75 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.Date;
+
+/**
+ * xxl-job log for glue, used to track job code process
+ * @author xuxueli 2016-5-19 17:57:46
+ */
+public class XxlJobLogGlue {
+
+ private int id;
+ private int jobId; // 浠诲姟涓婚敭ID
+ private String glueType; // GLUE绫诲瀷 #com.xxl.job.core.glue.GlueTypeEnum
+ private String glueSource;
+ private String glueRemark;
+ private Date addTime;
+ private Date updateTime;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getJobId() {
+ return jobId;
+ }
+
+ public void setJobId(int jobId) {
+ this.jobId = jobId;
+ }
+
+ public String getGlueType() {
+ return glueType;
+ }
+
+ public void setGlueType(String glueType) {
+ this.glueType = glueType;
+ }
+
+ public String getGlueSource() {
+ return glueSource;
+ }
+
+ public void setGlueSource(String glueSource) {
+ this.glueSource = glueSource;
+ }
+
+ public String getGlueRemark() {
+ return glueRemark;
+ }
+
+ public void setGlueRemark(String glueRemark) {
+ this.glueRemark = glueRemark;
+ }
+
+ public Date getAddTime() {
+ return addTime;
+ }
+
+ public void setAddTime(Date addTime) {
+ this.addTime = addTime;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogReport.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogReport.java
new file mode 100644
index 0000000..f7d58d0
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobLogReport.java
@@ -0,0 +1,54 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.Date;
+
+public class XxlJobLogReport {
+
+ private int id;
+
+ private Date triggerDay;
+
+ private int runningCount;
+ private int sucCount;
+ private int failCount;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Date getTriggerDay() {
+ return triggerDay;
+ }
+
+ public void setTriggerDay(Date triggerDay) {
+ this.triggerDay = triggerDay;
+ }
+
+ public int getRunningCount() {
+ return runningCount;
+ }
+
+ public void setRunningCount(int runningCount) {
+ this.runningCount = runningCount;
+ }
+
+ public int getSucCount() {
+ return sucCount;
+ }
+
+ public void setSucCount(int sucCount) {
+ this.sucCount = sucCount;
+ }
+
+ public int getFailCount() {
+ return failCount;
+ }
+
+ public void setFailCount(int failCount) {
+ this.failCount = failCount;
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobRegistry.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobRegistry.java
new file mode 100644
index 0000000..ab41d5b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobRegistry.java
@@ -0,0 +1,55 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import java.util.Date;
+
+/**
+ * Created by xuxueli on 16/9/30.
+ */
+public class XxlJobRegistry {
+
+ private int id;
+ private String registryGroup;
+ private String registryKey;
+ private String registryValue;
+ private Date updateTime;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getRegistryGroup() {
+ return registryGroup;
+ }
+
+ public void setRegistryGroup(String registryGroup) {
+ this.registryGroup = registryGroup;
+ }
+
+ public String getRegistryKey() {
+ return registryKey;
+ }
+
+ public void setRegistryKey(String registryKey) {
+ this.registryKey = registryKey;
+ }
+
+ public String getRegistryValue() {
+ return registryValue;
+ }
+
+ public void setRegistryValue(String registryValue) {
+ this.registryValue = registryValue;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobUser.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobUser.java
new file mode 100644
index 0000000..85c9951
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/model/XxlJobUser.java
@@ -0,0 +1,73 @@
+package com.vci.ubcs.xxl.job.admin.core.model;
+
+import org.springframework.util.StringUtils;
+
+/**
+ * @author xuxueli 2019-05-04 16:43:12
+ */
+public class XxlJobUser {
+
+ private int id;
+ private String username; // 璐﹀彿
+ private String password; // 瀵嗙爜
+ private int role; // 瑙掕壊锛�0-鏅�氱敤鎴枫��1-绠$悊鍛�
+ private String permission; // 鏉冮檺锛氭墽琛屽櫒ID鍒楄〃锛屽涓�楀彿鍒嗗壊
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public int getRole() {
+ return role;
+ }
+
+ public void setRole(int role) {
+ this.role = role;
+ }
+
+ public String getPermission() {
+ return permission;
+ }
+
+ public void setPermission(String permission) {
+ this.permission = permission;
+ }
+
+ // plugin
+ public boolean validPermission(int jobGroup){
+ if (this.role == 1) {
+ return true;
+ } else {
+ if (StringUtils.hasText(this.permission)) {
+ for (String permissionItem : this.permission.split(",")) {
+ if (String.valueOf(jobGroup).equals(permissionItem)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/RemoteHttpJobBean.java
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/RemoteHttpJobBean.java
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobThreadPool.java
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/old/XxlJobThreadPool.java
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
new file mode 100644
index 0000000..c555c3a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.xxl.job.admin.core.route;
+
+import com.vci.ubcs.xxl.job.admin.core.route.strategy.*;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public enum ExecutorRouteStrategyEnum {
+
+ FIRST(I18nUtil.getString("jobconf_route_first"), new ExecutorRouteFirst()),
+ LAST(I18nUtil.getString("jobconf_route_last"), new ExecutorRouteLast()),
+ ROUND(I18nUtil.getString("jobconf_route_round"), new ExecutorRouteRound()),
+ RANDOM(I18nUtil.getString("jobconf_route_random"), new ExecutorRouteRandom()),
+ CONSISTENT_HASH(I18nUtil.getString("jobconf_route_consistenthash"), new ExecutorRouteConsistentHash()),
+ LEAST_FREQUENTLY_USED(I18nUtil.getString("jobconf_route_lfu"), new ExecutorRouteLFU()),
+ LEAST_RECENTLY_USED(I18nUtil.getString("jobconf_route_lru"), new ExecutorRouteLRU()),
+ FAILOVER(I18nUtil.getString("jobconf_route_failover"), new ExecutorRouteFailover()),
+ BUSYOVER(I18nUtil.getString("jobconf_route_busyover"), new ExecutorRouteBusyover()),
+ SHARDING_BROADCAST(I18nUtil.getString("jobconf_route_shard"), null);
+
+ ExecutorRouteStrategyEnum(String title, ExecutorRouter router) {
+ this.title = title;
+ this.router = router;
+ }
+
+ private String title;
+ private ExecutorRouter router;
+
+ public String getTitle() {
+ return title;
+ }
+ public ExecutorRouter getRouter() {
+ return router;
+ }
+
+ public static ExecutorRouteStrategyEnum match(String name, ExecutorRouteStrategyEnum defaultItem){
+ if (name != null) {
+ for (ExecutorRouteStrategyEnum item: ExecutorRouteStrategyEnum.values()) {
+ if (item.name().equals(name)) {
+ return item;
+ }
+ }
+ }
+ return defaultItem;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouter.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouter.java
new file mode 100644
index 0000000..4b6e135
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/ExecutorRouter.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.xxl.job.admin.core.route;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public abstract class ExecutorRouter {
+ protected static Logger logger = LoggerFactory.getLogger(ExecutorRouter.class);
+
+ /**
+ * route address
+ *
+ * @param addressList
+ * @return ReturnT.content=address
+ */
+ public abstract ReturnT<String> route(TriggerParam triggerParam, List<String> addressList);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
new file mode 100644
index 0000000..80e2876
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
@@ -0,0 +1,47 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.scheduler.XxlJobScheduler;
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteBusyover extends ExecutorRouter {
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ StringBuffer idleBeatResultSB = new StringBuffer();
+ for (String address : addressList) {
+ // beat
+ ReturnT<String> idleBeatResult = null;
+ try {
+ ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
+ idleBeatResult = executorBiz.idleBeat(triggerParam.getJobId());
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ idleBeatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
+ }
+ idleBeatResultSB.append( (idleBeatResultSB.length()>0)?"<br><br>":"")
+ .append(I18nUtil.getString("jobconf_idleBeat") + "锛�")
+ .append("<br>address锛�").append(address)
+ .append("<br>code锛�").append(idleBeatResult.getCode())
+ .append("<br>msg锛�").append(idleBeatResult.getMsg());
+
+ // beat success
+ if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
+ idleBeatResult.setMsg(idleBeatResultSB.toString());
+ idleBeatResult.setContent(address);
+ return idleBeatResult;
+ }
+ }
+
+ return new ReturnT<String>(ReturnT.FAIL_CODE, idleBeatResultSB.toString());
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
new file mode 100644
index 0000000..3aad110
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
@@ -0,0 +1,85 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+/**
+ * 鍒嗙粍涓嬫満鍣ㄥ湴鍧�鐩稿悓锛屼笉鍚孞OB鍧囧寑鏁e垪鍦ㄤ笉鍚屾満鍣ㄤ笂锛屼繚璇佸垎缁勪笅鏈哄櫒鍒嗛厤JOB骞冲潎锛涗笖姣忎釜JOB鍥哄畾璋冨害鍏朵腑涓�鍙版満鍣紱
+ * a銆乿irtual node锛氳В鍐充笉鍧囪 闂
+ * b銆乭ash method replace hashCode锛歋tring鐨刪ashCode鍙兘閲嶅锛岄渶瑕佽繘涓�姝ユ墿澶ashCode鐨勫彇鍊艰寖鍥�
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteConsistentHash extends ExecutorRouter {
+
+ private static int VIRTUAL_NODE_NUM = 5;
+
+ /**
+ * get hash code on 2^32 ring (md5鏁e垪鐨勬柟寮忚绠梙ash鍊�)
+ * @param key
+ * @return
+ */
+ private static long hash(String key) {
+
+ // md5 byte
+ MessageDigest md5;
+ try {
+ md5 = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("MD5 not supported", e);
+ }
+ md5.reset();
+ byte[] keyBytes = null;
+ try {
+ keyBytes = key.getBytes("UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Unknown string :" + key, e);
+ }
+
+ md5.update(keyBytes);
+ byte[] digest = md5.digest();
+
+ // hash code, Truncate to 32-bits
+ long hashCode = ((long) (digest[3] & 0xFF) << 24)
+ | ((long) (digest[2] & 0xFF) << 16)
+ | ((long) (digest[1] & 0xFF) << 8)
+ | (digest[0] & 0xFF);
+
+ long truncateHashCode = hashCode & 0xffffffffL;
+ return truncateHashCode;
+ }
+
+ public String hashJob(int jobId, List<String> addressList) {
+
+ // ------A1------A2-------A3------
+ // -----------J1------------------
+ TreeMap<Long, String> addressRing = new TreeMap<Long, String>();
+ for (String address: addressList) {
+ for (int i = 0; i < VIRTUAL_NODE_NUM; i++) {
+ long addressHash = hash("SHARD-" + address + "-NODE-" + i);
+ addressRing.put(addressHash, address);
+ }
+ }
+
+ long jobHash = hash(String.valueOf(jobId));
+ SortedMap<Long, String> lastRing = addressRing.tailMap(jobHash);
+ if (!lastRing.isEmpty()) {
+ return lastRing.get(lastRing.firstKey());
+ }
+ return addressRing.firstEntry().getValue();
+ }
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ String address = hashJob(triggerParam.getJobId(), addressList);
+ return new ReturnT<String>(address);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
new file mode 100644
index 0000000..478d0d1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.scheduler.XxlJobScheduler;
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteFailover extends ExecutorRouter {
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+
+ StringBuffer beatResultSB = new StringBuffer();
+ for (String address : addressList) {
+ // beat
+ ReturnT<String> beatResult = null;
+ try {
+ ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
+ beatResult = executorBiz.beat();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ beatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
+ }
+ beatResultSB.append( (beatResultSB.length()>0)?"<br><br>":"")
+ .append(I18nUtil.getString("jobconf_beat") + "锛�")
+ .append("<br>address锛�").append(address)
+ .append("<br>code锛�").append(beatResult.getCode())
+ .append("<br>msg锛�").append(beatResult.getMsg());
+
+ // beat success
+ if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
+
+ beatResult.setMsg(beatResultSB.toString());
+ beatResult.setContent(address);
+ return beatResult;
+ }
+ }
+ return new ReturnT<String>(ReturnT.FAIL_CODE, beatResultSB.toString());
+
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
new file mode 100644
index 0000000..97379f2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteFirst extends ExecutorRouter {
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList){
+ return new ReturnT<String>(addressList.get(0));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
new file mode 100644
index 0000000..f8752e1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
@@ -0,0 +1,79 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鍗曚釜JOB瀵瑰簲鐨勬瘡涓墽琛屽櫒锛屼娇鐢ㄩ鐜囨渶浣庣殑浼樺厛琚�変妇
+ * a(*)銆丩FU(Least Frequently Used)锛氭渶涓嶇粡甯镐娇鐢紝棰戠巼/娆℃暟
+ * b銆丩RU(Least Recently Used)锛氭渶杩戞渶涔呮湭浣跨敤锛屾椂闂�
+ *
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteLFU extends ExecutorRouter {
+
+ private static ConcurrentMap<Integer, HashMap<String, Integer>> jobLfuMap = new ConcurrentHashMap<Integer, HashMap<String, Integer>>();
+ private static long CACHE_VALID_TIME = 0;
+
+ public String route(int jobId, List<String> addressList) {
+
+ // cache clear
+ if (System.currentTimeMillis() > CACHE_VALID_TIME) {
+ jobLfuMap.clear();
+ CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
+ }
+
+ // lfu item init
+ HashMap<String, Integer> lfuItemMap = jobLfuMap.get(jobId); // Key鎺掑簭鍙互鐢═reeMap+鏋勯�犲叆鍙侰ompare锛沄alue鎺掑簭鏆傛椂鍙兘閫氳繃ArrayList锛�
+ if (lfuItemMap == null) {
+ lfuItemMap = new HashMap<String, Integer>();
+ jobLfuMap.putIfAbsent(jobId, lfuItemMap); // 閬垮厤閲嶅瑕嗙洊
+ }
+
+ // put new
+ for (String address: addressList) {
+ if (!lfuItemMap.containsKey(address) || lfuItemMap.get(address) >1000000 ) {
+ lfuItemMap.put(address, new Random().nextInt(addressList.size())); // 鍒濆鍖栨椂涓诲姩Random涓�娆★紝缂撹В棣栨鍘嬪姏
+ }
+ }
+ // remove old
+ List<String> delKeys = new ArrayList<>();
+ for (String existKey: lfuItemMap.keySet()) {
+ if (!addressList.contains(existKey)) {
+ delKeys.add(existKey);
+ }
+ }
+ if (delKeys.size() > 0) {
+ for (String delKey: delKeys) {
+ lfuItemMap.remove(delKey);
+ }
+ }
+
+ // load least userd count address
+ List<Map.Entry<String, Integer>> lfuItemList = new ArrayList<Map.Entry<String, Integer>>(lfuItemMap.entrySet());
+ Collections.sort(lfuItemList, new Comparator<Map.Entry<String, Integer>>() {
+ @Override
+ public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
+ return o1.getValue().compareTo(o2.getValue());
+ }
+ });
+
+ Map.Entry<String, Integer> addressItem = lfuItemList.get(0);
+ String minAddress = addressItem.getKey();
+ addressItem.setValue(addressItem.getValue() + 1);
+
+ return addressItem.getKey();
+ }
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ String address = route(triggerParam.getJobId(), addressList);
+ return new ReturnT<String>(address);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
new file mode 100644
index 0000000..5637860
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
@@ -0,0 +1,76 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鍗曚釜JOB瀵瑰簲鐨勬瘡涓墽琛屽櫒锛屾渶涔呬负浣跨敤鐨勪紭鍏堣閫変妇
+ * a銆丩FU(Least Frequently Used)锛氭渶涓嶇粡甯镐娇鐢紝棰戠巼/娆℃暟
+ * b(*)銆丩RU(Least Recently Used)锛氭渶杩戞渶涔呮湭浣跨敤锛屾椂闂�
+ *
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteLRU extends ExecutorRouter {
+
+ private static ConcurrentMap<Integer, LinkedHashMap<String, String>> jobLRUMap = new ConcurrentHashMap<Integer, LinkedHashMap<String, String>>();
+ private static long CACHE_VALID_TIME = 0;
+
+ public String route(int jobId, List<String> addressList) {
+
+ // cache clear
+ if (System.currentTimeMillis() > CACHE_VALID_TIME) {
+ jobLRUMap.clear();
+ CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
+ }
+
+ // init lru
+ LinkedHashMap<String, String> lruItem = jobLRUMap.get(jobId);
+ if (lruItem == null) {
+ /**
+ * LinkedHashMap
+ * a銆乤ccessOrder锛歵rue=璁块棶椤哄簭鎺掑簭锛坓et/put鏃舵帓搴忥級锛沠alse=鎻掑叆椤哄簭鎺掓湡锛�
+ * b銆乺emoveEldestEntry锛氭柊澧炲厓绱犳椂灏嗕細璋冪敤锛岃繑鍥瀟rue鏃朵細鍒犻櫎鏈�鑰佸厓绱狅紱鍙皝瑁匧inkedHashMap骞堕噸鍐欒鏂规硶锛屾瘮濡傚畾涔夋渶澶у閲忥紝瓒呭嚭鏄繑鍥瀟rue鍗冲彲瀹炵幇鍥哄畾闀垮害鐨凩RU绠楁硶锛�
+ */
+ lruItem = new LinkedHashMap<String, String>(16, 0.75f, true);
+ jobLRUMap.putIfAbsent(jobId, lruItem);
+ }
+
+ // put new
+ for (String address: addressList) {
+ if (!lruItem.containsKey(address)) {
+ lruItem.put(address, address);
+ }
+ }
+ // remove old
+ List<String> delKeys = new ArrayList<>();
+ for (String existKey: lruItem.keySet()) {
+ if (!addressList.contains(existKey)) {
+ delKeys.add(existKey);
+ }
+ }
+ if (delKeys.size() > 0) {
+ for (String delKey: delKeys) {
+ lruItem.remove(delKey);
+ }
+ }
+
+ // load
+ String eldestKey = lruItem.entrySet().iterator().next().getKey();
+ String eldestValue = lruItem.get(eldestKey);
+ return eldestValue;
+ }
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ String address = route(triggerParam.getJobId(), addressList);
+ return new ReturnT<String>(address);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
new file mode 100644
index 0000000..0b5eb47
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteLast extends ExecutorRouter {
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ return new ReturnT<String>(addressList.get(addressList.size()-1));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
new file mode 100644
index 0000000..668d069
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteRandom extends ExecutorRouter {
+
+ private static Random localRandom = new Random();
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ String address = addressList.get(localRandom.nextInt(addressList.size()));
+ return new ReturnT<String>(address);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
new file mode 100644
index 0000000..1ce3f60
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
@@ -0,0 +1,39 @@
+package com.vci.ubcs.xxl.job.admin.core.route.strategy;
+
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouter;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * Created by xuxueli on 17/3/10.
+ */
+public class ExecutorRouteRound extends ExecutorRouter {
+
+ private static ConcurrentMap<Integer, Integer> routeCountEachJob = new ConcurrentHashMap<Integer, Integer>();
+ private static long CACHE_VALID_TIME = 0;
+ private static int count(int jobId) {
+ // cache clear
+ if (System.currentTimeMillis() > CACHE_VALID_TIME) {
+ routeCountEachJob.clear();
+ CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
+ }
+
+ // count++
+ Integer count = routeCountEachJob.get(jobId);
+ count = (count==null || count>1000000)?(new Random().nextInt(100)):++count; // 鍒濆鍖栨椂涓诲姩Random涓�娆★紝缂撹В棣栨鍘嬪姏
+ routeCountEachJob.put(jobId, count);
+ return count;
+ }
+
+ @Override
+ public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
+ String address = addressList.get(count(triggerParam.getJobId())%addressList.size());
+ return new ReturnT<String>(address);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/scheduler/XxlJobScheduler.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/scheduler/XxlJobScheduler.java
new file mode 100644
index 0000000..0c55d6e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/scheduler/XxlJobScheduler.java
@@ -0,0 +1,112 @@
+package com.vci.ubcs.xxl.job.admin.core.scheduler;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.thread.*;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
+import com.xxl.rpc.remoting.invoker.call.CallType;
+import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
+import com.xxl.rpc.remoting.invoker.route.LoadBalance;
+import com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpClient;
+import com.xxl.rpc.serialize.impl.HessianSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * @author xuxueli 2018-10-28 00:18:17
+ */
+
+public class XxlJobScheduler {
+ private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);
+
+
+ public void init() throws Exception {
+ // init i18n
+ initI18n();
+
+ // admin registry monitor run
+ JobRegistryMonitorHelper.getInstance().start();
+
+ // admin monitor run
+ JobFailMonitorHelper.getInstance().start();
+
+ // admin trigger pool start
+ JobTriggerPoolHelper.toStart();
+
+ // admin log report start
+ JobLogReportHelper.getInstance().start();
+
+ // start-schedule
+ JobScheduleHelper.getInstance().start();
+
+ logger.info(">>>>>>>>> init xxl-job admin success.");
+ }
+
+
+ public void destroy() throws Exception {
+
+ // stop-schedule
+ JobScheduleHelper.getInstance().toStop();
+
+ // admin log report stop
+ JobLogReportHelper.getInstance().toStop();
+
+ // admin trigger pool stop
+ JobTriggerPoolHelper.toStop();
+
+ // admin monitor stop
+ JobFailMonitorHelper.getInstance().toStop();
+
+ // admin registry stop
+ JobRegistryMonitorHelper.getInstance().toStop();
+
+ }
+
+ // ---------------------- I18n ----------------------
+
+ private void initI18n(){
+ for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) {
+ item.setTitle(I18nUtil.getString("jobconf_block_".concat(item.name())));
+ }
+ }
+
+ // ---------------------- executor-client ----------------------
+ private static ConcurrentMap<String, ExecutorBiz> executorBizRepository = new ConcurrentHashMap<String, ExecutorBiz>();
+ public static ExecutorBiz getExecutorBiz(String address) throws Exception {
+ // valid
+ if (address==null || address.trim().length()==0) {
+ return null;
+ }
+
+ // load-cache
+ address = address.trim();
+ ExecutorBiz executorBiz = executorBizRepository.get(address);
+ if (executorBiz != null) {
+ return executorBiz;
+ }
+
+ // set-cache
+ XxlRpcReferenceBean referenceBean = new XxlRpcReferenceBean();
+ referenceBean.setClient(NettyHttpClient.class);
+ referenceBean.setSerializer(HessianSerializer.class);
+ referenceBean.setCallType(CallType.SYNC);
+ referenceBean.setLoadBalance(LoadBalance.ROUND);
+ referenceBean.setIface(ExecutorBiz.class);
+ referenceBean.setVersion(null);
+ referenceBean.setTimeout(3000);
+ referenceBean.setAddress(address);
+ referenceBean.setAccessToken(XxlJobAdminConfig.getAdminConfig().getAccessToken());
+ referenceBean.setInvokeCallback(null);
+ referenceBean.setInvokerFactory(null);
+
+ executorBiz = (ExecutorBiz) referenceBean.getObject();
+
+ executorBizRepository.put(address, executorBiz);
+ return executorBiz;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobFailMonitorHelper.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobFailMonitorHelper.java
new file mode 100644
index 0000000..648bccf
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobFailMonitorHelper.java
@@ -0,0 +1,209 @@
+package com.vci.ubcs.xxl.job.admin.core.thread;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.core.trigger.TriggerTypeEnum;
+import com.xxl.job.core.biz.model.ReturnT;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.mail.javamail.MimeMessageHelper;
+
+import javax.mail.internet.MimeMessage;
+import java.text.MessageFormat;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * job monitor instance
+ *
+ * @author xuxueli 2015-9-1 18:05:56
+ */
+public class JobFailMonitorHelper {
+ private static Logger logger = LoggerFactory.getLogger(JobFailMonitorHelper.class);
+
+ private static JobFailMonitorHelper instance = new JobFailMonitorHelper();
+ public static JobFailMonitorHelper getInstance(){
+ return instance;
+ }
+
+ // ---------------------- monitor ----------------------
+
+ private Thread monitorThread;
+ private volatile boolean toStop = false;
+ public void start(){
+ monitorThread = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+
+ // monitor
+ while (!toStop) {
+ try {
+
+ List<Long> failLogIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findFailJobLogIds(1000);
+ if (failLogIds!=null && !failLogIds.isEmpty()) {
+ for (long failLogId: failLogIds) {
+
+ // lock log
+ int lockRet = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, 0, -1);
+ if (lockRet < 1) {
+ continue;
+ }
+ XxlJobLog log = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().load(failLogId);
+ XxlJobInfo info = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(log.getJobId());
+
+ // 1銆乫ail retry monitor
+ if (log.getExecutorFailRetryCount() > 0) {
+ JobTriggerPoolHelper.trigger(log.getJobId(), TriggerTypeEnum.RETRY, (log.getExecutorFailRetryCount()-1), log.getExecutorShardingParam(), log.getExecutorParam());
+ String retryMsg = "<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_type_retry") +"<<<<<<<<<<< </span><br>";
+ log.setTriggerMsg(log.getTriggerMsg() + retryMsg);
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(log);
+ }
+
+ // 2銆乫ail alarm monitor
+ int newAlarmStatus = 0; // 鍛婅鐘舵�侊細0-榛樿銆�-1=閿佸畾鐘舵�併��1-鏃犻渶鍛婅銆�2-鍛婅鎴愬姛銆�3-鍛婅澶辫触
+ if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
+ boolean alarmResult = true;
+ try {
+ alarmResult = failAlarm(info, log);
+ } catch (Exception e) {
+ alarmResult = false;
+ logger.error(e.getMessage(), e);
+ }
+ newAlarmStatus = alarmResult?2:3;
+ } else {
+ newAlarmStatus = 1;
+ }
+
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, -1, newAlarmStatus);
+ }
+ }
+
+ } catch (Exception e) {
+ if (!toStop) {
+ logger.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e);
+ }
+ }
+
+ try {
+ TimeUnit.SECONDS.sleep(10);
+ } catch (Exception e) {
+ if (!toStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ }
+
+ logger.info(">>>>>>>>>>> xxl-job, job fail monitor thread stop");
+
+ }
+ });
+ monitorThread.setDaemon(true);
+ monitorThread.setName("xxl-job, admin JobFailMonitorHelper");
+ monitorThread.start();
+ }
+
+ public void toStop(){
+ toStop = true;
+ // interrupt and wait
+ monitorThread.interrupt();
+ try {
+ monitorThread.join();
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+
+ // ---------------------- alarm ----------------------
+
+ // email alarm template
+ private static final String mailBodyTemplate = "<h5>" + I18nUtil.getString("jobconf_monitor_detail") + "锛�</span>" +
+ "<table border=\"1\" cellpadding=\"3\" style=\"border-collapse:collapse; width:80%;\" >\n" +
+ " <thead style=\"font-weight: bold;color: #ffffff;background-color: #ff8c00;\" >" +
+ " <tr>\n" +
+ " <td width=\"20%\" >"+ I18nUtil.getString("jobinfo_field_jobgroup") +"</td>\n" +
+ " <td width=\"10%\" >"+ I18nUtil.getString("jobinfo_field_id") +"</td>\n" +
+ " <td width=\"20%\" >"+ I18nUtil.getString("jobinfo_field_jobdesc") +"</td>\n" +
+ " <td width=\"10%\" >"+ I18nUtil.getString("jobconf_monitor_alarm_title") +"</td>\n" +
+ " <td width=\"40%\" >"+ I18nUtil.getString("jobconf_monitor_alarm_content") +"</td>\n" +
+ " </tr>\n" +
+ " </thead>\n" +
+ " <tbody>\n" +
+ " <tr>\n" +
+ " <td>{0}</td>\n" +
+ " <td>{1}</td>\n" +
+ " <td>{2}</td>\n" +
+ " <td>"+ I18nUtil.getString("jobconf_monitor_alarm_type") +"</td>\n" +
+ " <td>{3}</td>\n" +
+ " </tr>\n" +
+ " </tbody>\n" +
+ "</table>";
+
+ /**
+ * fail alarm
+ *
+ * @param jobLog
+ */
+ private boolean failAlarm(XxlJobInfo info, XxlJobLog jobLog){
+ boolean alarmResult = true;
+
+ // send monitor email
+ if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
+
+ // alarmContent
+ String alarmContent = "Alarm Job LogId=" + jobLog.getId();
+ if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) {
+ alarmContent += "<br>TriggerMsg=<br>" + jobLog.getTriggerMsg();
+ }
+ if (jobLog.getHandleCode()>0 && jobLog.getHandleCode() != ReturnT.SUCCESS_CODE) {
+ alarmContent += "<br>HandleCode=" + jobLog.getHandleMsg();
+ }
+
+ // email info
+ XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(Integer.valueOf(info.getJobGroup()));
+ String personal = I18nUtil.getString("admin_name_full");
+ String title = I18nUtil.getString("jobconf_monitor");
+ String content = MessageFormat.format(mailBodyTemplate,
+ group!=null?group.getTitle():"null",
+ info.getId(),
+ info.getJobDesc(),
+ alarmContent);
+
+ Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
+ for (String email: emailSet) {
+
+ // make mail
+ try {
+ MimeMessage mimeMessage = XxlJobAdminConfig.getAdminConfig().getMailSender().createMimeMessage();
+
+ MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
+ helper.setFrom(XxlJobAdminConfig.getAdminConfig().getEmailUserName(), personal);
+ helper.setTo(email);
+ helper.setSubject(title);
+ helper.setText(content, true);
+
+ XxlJobAdminConfig.getAdminConfig().getMailSender().send(mimeMessage);
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>> xxl-job, job fail alarm email send error, JobLogId:{}", jobLog.getId(), e);
+
+ alarmResult = false;
+ }
+
+ }
+ }
+
+ // do something, custom alarm strategy, such as sms
+
+
+ return alarmResult;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobLogReportHelper.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobLogReportHelper.java
new file mode 100644
index 0000000..24593f1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobLogReportHelper.java
@@ -0,0 +1,152 @@
+package com.vci.ubcs.xxl.job.admin.core.thread;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogReport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * job log report helper
+ *
+ * @author xuxueli 2019-11-22
+ */
+public class JobLogReportHelper {
+ private static Logger logger = LoggerFactory.getLogger(JobLogReportHelper.class);
+
+ private static JobLogReportHelper instance = new JobLogReportHelper();
+ public static JobLogReportHelper getInstance(){
+ return instance;
+ }
+
+
+ private Thread logrThread;
+ private volatile boolean toStop = false;
+ public void start(){
+ logrThread = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+
+ // last clean log time
+ long lastCleanLogTime = 0;
+
+
+ while (!toStop) {
+
+ // 1銆乴og-report refresh: refresh log report in 3 days
+ try {
+
+ for (int i = 0; i < 3; i++) {
+
+ // today
+ Calendar itemDay = Calendar.getInstance();
+ itemDay.add(Calendar.DAY_OF_MONTH, -i);
+ itemDay.set(Calendar.HOUR_OF_DAY, 0);
+ itemDay.set(Calendar.MINUTE, 0);
+ itemDay.set(Calendar.SECOND, 0);
+ itemDay.set(Calendar.MILLISECOND, 0);
+
+ Date todayFrom = itemDay.getTime();
+
+ itemDay.set(Calendar.HOUR_OF_DAY, 23);
+ itemDay.set(Calendar.MINUTE, 59);
+ itemDay.set(Calendar.SECOND, 59);
+ itemDay.set(Calendar.MILLISECOND, 999);
+
+ Date todayTo = itemDay.getTime();
+
+ // refresh log-report every minute
+ XxlJobLogReport xxlJobLogReport = new XxlJobLogReport();
+ xxlJobLogReport.setTriggerDay(todayFrom);
+ xxlJobLogReport.setRunningCount(0);
+ xxlJobLogReport.setSucCount(0);
+ xxlJobLogReport.setFailCount(0);
+
+ Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo);
+ if (triggerCountMap!=null && triggerCountMap.size()>0) {
+ int triggerDayCount = triggerCountMap.containsKey("triggerDayCount")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCount"))):0;
+ int triggerDayCountRunning = triggerCountMap.containsKey("triggerDayCountRunning")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountRunning"))):0;
+ int triggerDayCountSuc = triggerCountMap.containsKey("triggerDayCountSuc")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountSuc"))):0;
+ int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
+
+ xxlJobLogReport.setRunningCount(triggerDayCountRunning);
+ xxlJobLogReport.setSucCount(triggerDayCountSuc);
+ xxlJobLogReport.setFailCount(triggerDayCountFail);
+ }
+
+ // do refresh
+ int ret = XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().update(xxlJobLogReport);
+ if (ret < 1) {
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);
+ }
+ }
+
+ } catch (Exception e) {
+ if (!toStop) {
+ logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);
+ }
+ }
+
+ // 2銆乴og-clean: switch open & once each day
+ if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays()>0
+ && System.currentTimeMillis() - lastCleanLogTime > 24*60*60*1000) {
+
+ // expire-time
+ Calendar expiredDay = Calendar.getInstance();
+ expiredDay.add(Calendar.DAY_OF_MONTH, -1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays());
+ expiredDay.set(Calendar.HOUR_OF_DAY, 0);
+ expiredDay.set(Calendar.MINUTE, 0);
+ expiredDay.set(Calendar.SECOND, 0);
+ expiredDay.set(Calendar.MILLISECOND, 0);
+ Date clearBeforeTime = expiredDay.getTime();
+
+ // clean expired log
+ List<Long> logIds = null;
+ do {
+ logIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findClearLogIds(0, 0, clearBeforeTime, 0, 1000);
+ if (logIds!=null && logIds.size()>0) {
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);
+ }
+ } while (logIds!=null && logIds.size()>0);
+
+ // update clean time
+ lastCleanLogTime = System.currentTimeMillis();
+ }
+
+ try {
+ TimeUnit.MINUTES.sleep(1);
+ } catch (Exception e) {
+ if (!toStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ }
+
+ logger.info(">>>>>>>>>>> xxl-job, job log report thread stop");
+
+ }
+ });
+ logrThread.setDaemon(true);
+ logrThread.setName("xxl-job, admin JobLogReportHelper");
+ logrThread.start();
+ }
+
+ public void toStop(){
+ toStop = true;
+ // interrupt and wait
+ logrThread.interrupt();
+ try {
+ logrThread.join();
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
new file mode 100644
index 0000000..b7d4219
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
@@ -0,0 +1,111 @@
+package com.vci.ubcs.xxl.job.admin.core.thread;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobRegistry;
+import com.xxl.job.core.enums.RegistryConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * job registry instance
+ * @author xuxueli 2016-10-02 19:10:24
+ */
+public class JobRegistryMonitorHelper {
+ private static Logger logger = LoggerFactory.getLogger(JobRegistryMonitorHelper.class);
+
+ private static JobRegistryMonitorHelper instance = new JobRegistryMonitorHelper();
+ public static JobRegistryMonitorHelper getInstance(){
+ return instance;
+ }
+
+ private Thread registryThread;
+ private volatile boolean toStop = false;
+ public void start(){
+ registryThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ while (!toStop) {
+ try {
+ // auto registry group
+ List<XxlJobGroup> groupList = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().findByAddressType(0);
+ if (groupList!=null && !groupList.isEmpty()) {
+
+ // remove dead address (admin/executor)
+ List<Integer> ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDead(RegistryConfig.DEAD_TIMEOUT, new Date());
+ if (ids!=null && ids.size()>0) {
+ XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(ids);
+ }
+
+ // fresh online address (admin/executor)
+ HashMap<String, List<String>> appAddressMap = new HashMap<String, List<String>>();
+ List<XxlJobRegistry> list = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
+ if (list != null) {
+ for (XxlJobRegistry item: list) {
+ if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
+ String appName = item.getRegistryKey();
+ List<String> registryList = appAddressMap.get(appName);
+ if (registryList == null) {
+ registryList = new ArrayList<String>();
+ }
+
+ if (!registryList.contains(item.getRegistryValue())) {
+ registryList.add(item.getRegistryValue());
+ }
+ appAddressMap.put(appName, registryList);
+ }
+ }
+ }
+
+ // fresh group address
+ for (XxlJobGroup group: groupList) {
+ List<String> registryList = appAddressMap.get(group.getAppName());
+ String addressListStr = null;
+ if (registryList!=null && !registryList.isEmpty()) {
+ Collections.sort(registryList);
+ addressListStr = "";
+ for (String item:registryList) {
+ addressListStr += item + ",";
+ }
+ addressListStr = addressListStr.substring(0, addressListStr.length()-1);
+ }
+ group.setAddressList(addressListStr);
+ XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().update(group);
+ }
+ }
+ } catch (Exception e) {
+ if (!toStop) {
+ logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
+ }
+ }
+ try {
+ TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT);
+ } catch (InterruptedException e) {
+ if (!toStop) {
+ logger.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
+ }
+ }
+ }
+ logger.info(">>>>>>>>>>> xxl-job, job registry monitor thread stop");
+ }
+ });
+ registryThread.setDaemon(true);
+ registryThread.setName("xxl-job, admin JobRegistryMonitorHelper");
+ registryThread.start();
+ }
+
+ public void toStop(){
+ toStop = true;
+ // interrupt and wait
+ registryThread.interrupt();
+ try {
+ registryThread.join();
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobScheduleHelper.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobScheduleHelper.java
new file mode 100644
index 0000000..7a9e390
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobScheduleHelper.java
@@ -0,0 +1,354 @@
+package com.vci.ubcs.xxl.job.admin.core.thread;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.cron.CronExpression;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.trigger.TriggerTypeEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author xuxueli 2019-05-21
+ */
+public class JobScheduleHelper {
+ private static Logger logger = LoggerFactory.getLogger(JobScheduleHelper.class);
+
+ private static JobScheduleHelper instance = new JobScheduleHelper();
+ public static JobScheduleHelper getInstance(){
+ return instance;
+ }
+
+ public static final long PRE_READ_MS = 5000; // pre read
+
+ private Thread scheduleThread;
+ private Thread ringThread;
+ private volatile boolean scheduleThreadToStop = false;
+ private volatile boolean ringThreadToStop = false;
+ private volatile static Map<Integer, List<Integer>> ringData = new ConcurrentHashMap<>();
+
+ public void start(){
+
+ // schedule thread
+ scheduleThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ try {
+ TimeUnit.MILLISECONDS.sleep(5000 - System.currentTimeMillis()%1000 );
+ } catch (InterruptedException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ logger.info(">>>>>>>>> init xxl-job admin scheduler success.");
+
+ // pre-read count: treadpool-size * trigger-qps (each trigger cost 50ms, qps = 1000/50 = 20)
+ int preReadCount = (XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax() + XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax()) * 20;
+
+ while (!scheduleThreadToStop) {
+
+ // Scan Job
+ long start = System.currentTimeMillis();
+
+ Connection conn = null;
+ Boolean connAutoCommit = null;
+ PreparedStatement preparedStatement = null;
+
+ boolean preReadSuc = true;
+ try {
+
+ conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
+ connAutoCommit = conn.getAutoCommit();
+ conn.setAutoCommit(false);
+
+ preparedStatement = conn.prepareStatement( "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
+ preparedStatement.execute();
+
+ // tx start
+
+ // 1銆乸re read
+ long nowTime = System.currentTimeMillis();
+ List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(nowTime + PRE_READ_MS, preReadCount);
+ if (scheduleList!=null && scheduleList.size()>0) {
+ // 2銆乸ush time-ring
+ for (XxlJobInfo jobInfo: scheduleList) {
+
+ // time-ring jump
+ if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
+ // 2.1銆乼rigger-expire > 5s锛歱ass && make next-trigger-time
+ logger.warn(">>>>>>>>>>> xxl-job, schedule misfire, jobId = " + jobInfo.getId());
+
+ // fresh next
+ refreshNextValidTime(jobInfo, new Date());
+
+ } else if (nowTime > jobInfo.getTriggerNextTime()) {
+ // 2.2銆乼rigger-expire < 5s锛歞irect-trigger && make next-trigger-time
+
+ // 1銆乼rigger
+ JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.CRON, -1, null, null);
+ logger.debug(">>>>>>>>>>> xxl-job, schedule push trigger : jobId = " + jobInfo.getId() );
+
+ // 2銆乫resh next
+ refreshNextValidTime(jobInfo, new Date());
+
+ // next-trigger-time in 5s, pre-read again
+ if (jobInfo.getTriggerStatus()==1 && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
+
+ // 1銆乵ake ring second
+ int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
+
+ // 2銆乸ush time ring
+ pushTimeRing(ringSecond, jobInfo.getId());
+
+ // 3銆乫resh next
+ refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
+
+ }
+
+ } else {
+ // 2.3銆乼rigger-pre-read锛歵ime-ring trigger && make next-trigger-time
+
+ // 1銆乵ake ring second
+ int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
+
+ // 2銆乸ush time ring
+ pushTimeRing(ringSecond, jobInfo.getId());
+
+ // 3銆乫resh next
+ refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
+
+ }
+
+ }
+
+ // 3銆乽pdate trigger info
+ for (XxlJobInfo jobInfo: scheduleList) {
+ XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleUpdate(jobInfo);
+ }
+
+ } else {
+ preReadSuc = false;
+ }
+
+ // tx stop
+
+
+ } catch (Exception e) {
+ if (!scheduleThreadToStop) {
+ logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}", e);
+ }
+ } finally {
+
+ // commit
+ if (conn != null) {
+ try {
+ conn.commit();
+ } catch (SQLException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ try {
+ conn.setAutoCommit(connAutoCommit);
+ } catch (SQLException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ }
+
+ // close PreparedStatement
+ if (null != preparedStatement) {
+ try {
+ preparedStatement.close();
+ } catch (SQLException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ }
+ }
+ long cost = System.currentTimeMillis()-start;
+
+
+ // Wait seconds, align second
+ if (cost < 1000) { // scan-overtime, not wait
+ try {
+ // pre-read period: success > scan each second; fail > skip this period;
+ TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:PRE_READ_MS) - System.currentTimeMillis()%1000);
+ } catch (InterruptedException e) {
+ if (!scheduleThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ }
+
+ }
+
+ logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop");
+ }
+ });
+ scheduleThread.setDaemon(true);
+ scheduleThread.setName("xxl-job, admin JobScheduleHelper#scheduleThread");
+ scheduleThread.start();
+
+
+ // ring thread
+ ringThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ // align second
+ try {
+ TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000 );
+ } catch (InterruptedException e) {
+ if (!ringThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ while (!ringThreadToStop) {
+
+ try {
+ // second data
+ List<Integer> ringItemData = new ArrayList<>();
+ int nowSecond = Calendar.getInstance().get(Calendar.SECOND); // 閬垮厤澶勭悊鑰楁椂澶暱锛岃法杩囧埢搴︼紝鍚戝墠鏍¢獙涓�涓埢搴︼紱
+ for (int i = 0; i < 2; i++) {
+ List<Integer> tmpData = ringData.remove( (nowSecond+60-i)%60 );
+ if (tmpData != null) {
+ ringItemData.addAll(tmpData);
+ }
+ }
+
+ // ring trigger
+ logger.debug(">>>>>>>>>>> xxl-job, time-ring beat : " + nowSecond + " = " + Arrays.asList(ringItemData) );
+ if (ringItemData.size() > 0) {
+ // do trigger
+ for (int jobId: ringItemData) {
+ // do trigger
+ JobTriggerPoolHelper.trigger(jobId, TriggerTypeEnum.CRON, -1, null, null);
+ }
+ // clear
+ ringItemData.clear();
+ }
+ } catch (Exception e) {
+ if (!ringThreadToStop) {
+ logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e);
+ }
+ }
+
+ // next second, align second
+ try {
+ TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000);
+ } catch (InterruptedException e) {
+ if (!ringThreadToStop) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ }
+ logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop");
+ }
+ });
+ ringThread.setDaemon(true);
+ ringThread.setName("xxl-job, admin JobScheduleHelper#ringThread");
+ ringThread.start();
+ }
+
+ private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws ParseException {
+ Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(fromTime);
+ if (nextValidTime != null) {
+ jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
+ jobInfo.setTriggerNextTime(nextValidTime.getTime());
+ } else {
+ jobInfo.setTriggerStatus(0);
+ jobInfo.setTriggerLastTime(0);
+ jobInfo.setTriggerNextTime(0);
+ }
+ }
+
+ private void pushTimeRing(int ringSecond, int jobId){
+ // push async ring
+ List<Integer> ringItemData = ringData.get(ringSecond);
+ if (ringItemData == null) {
+ ringItemData = new ArrayList<Integer>();
+ ringData.put(ringSecond, ringItemData);
+ }
+ ringItemData.add(jobId);
+
+ logger.debug(">>>>>>>>>>> xxl-job, schedule push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData) );
+ }
+
+ public void toStop(){
+
+ // 1銆乻top schedule
+ scheduleThreadToStop = true;
+ try {
+ TimeUnit.SECONDS.sleep(1); // wait
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ if (scheduleThread.getState() != Thread.State.TERMINATED){
+ // interrupt and wait
+ scheduleThread.interrupt();
+ try {
+ scheduleThread.join();
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ // if has ring data
+ boolean hasRingData = false;
+ if (!ringData.isEmpty()) {
+ for (int second : ringData.keySet()) {
+ List<Integer> tmpData = ringData.get(second);
+ if (tmpData!=null && tmpData.size()>0) {
+ hasRingData = true;
+ break;
+ }
+ }
+ }
+ if (hasRingData) {
+ try {
+ TimeUnit.SECONDS.sleep(8);
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ // stop ring (wait job-in-memory stop)
+ ringThreadToStop = true;
+ try {
+ TimeUnit.SECONDS.sleep(1);
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ if (ringThread.getState() != Thread.State.TERMINATED){
+ // interrupt and wait
+ ringThread.interrupt();
+ try {
+ ringThread.join();
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ logger.info(">>>>>>>>>>> xxl-job, JobScheduleHelper stop");
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobTriggerPoolHelper.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
new file mode 100644
index 0000000..9afb09f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
@@ -0,0 +1,145 @@
+package com.vci.ubcs.xxl.job.admin.core.thread;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.trigger.TriggerTypeEnum;
+import com.vci.ubcs.xxl.job.admin.core.trigger.XxlJobTrigger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * job trigger thread pool helper
+ *
+ * @author xuxueli 2018-07-03 21:08:07
+ */
+public class JobTriggerPoolHelper {
+ private static Logger logger = LoggerFactory.getLogger(JobTriggerPoolHelper.class);
+
+
+ // ---------------------- trigger pool ----------------------
+
+ // fast/slow thread pool
+ private ThreadPoolExecutor fastTriggerPool = null;
+ private ThreadPoolExecutor slowTriggerPool = null;
+
+ public void start(){
+ fastTriggerPool = new ThreadPoolExecutor(
+ 10,
+ XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax(),
+ 60L,
+ TimeUnit.SECONDS,
+ new LinkedBlockingQueue<Runnable>(1000),
+ new ThreadFactory() {
+ @Override
+ public Thread newThread(Runnable r) {
+ return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-" + r.hashCode());
+ }
+ });
+
+ slowTriggerPool = new ThreadPoolExecutor(
+ 10,
+ XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax(),
+ 60L,
+ TimeUnit.SECONDS,
+ new LinkedBlockingQueue<Runnable>(2000),
+ new ThreadFactory() {
+ @Override
+ public Thread newThread(Runnable r) {
+ return new Thread(r, "xxl-job, admin JobTriggerPoolHelper-slowTriggerPool-" + r.hashCode());
+ }
+ });
+ }
+
+
+ public void stop() {
+ //triggerPool.shutdown();
+ fastTriggerPool.shutdownNow();
+ slowTriggerPool.shutdownNow();
+ logger.info(">>>>>>>>> xxl-job trigger thread pool shutdown success.");
+ }
+
+
+ // job timeout count
+ private volatile long minTim = System.currentTimeMillis()/60000; // ms > min
+ private volatile ConcurrentMap<Integer, AtomicInteger> jobTimeoutCountMap = new ConcurrentHashMap<>();
+
+
+ /**
+ * add trigger
+ */
+ public void addTrigger(final int jobId, final TriggerTypeEnum triggerType, final int failRetryCount, final String executorShardingParam, final String executorParam) {
+
+ // choose thread pool
+ ThreadPoolExecutor triggerPool_ = fastTriggerPool;
+ AtomicInteger jobTimeoutCount = jobTimeoutCountMap.get(jobId);
+ if (jobTimeoutCount!=null && jobTimeoutCount.get() > 10) { // job-timeout 10 times in 1 min
+ triggerPool_ = slowTriggerPool;
+ }
+
+ // trigger
+ triggerPool_.execute(new Runnable() {
+ @Override
+ public void run() {
+
+ long start = System.currentTimeMillis();
+
+ try {
+ // do trigger
+ XxlJobTrigger.trigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ } finally {
+
+ // check timeout-count-map
+ long minTim_now = System.currentTimeMillis()/60000;
+ if (minTim != minTim_now) {
+ minTim = minTim_now;
+ jobTimeoutCountMap.clear();
+ }
+
+ // incr timeout-count-map
+ long cost = System.currentTimeMillis()-start;
+ if (cost > 500) { // ob-timeout threshold 500ms
+ AtomicInteger timeoutCount = jobTimeoutCountMap.putIfAbsent(jobId, new AtomicInteger(1));
+ if (timeoutCount != null) {
+ timeoutCount.incrementAndGet();
+ }
+ }
+
+ }
+
+ }
+ });
+ }
+
+
+
+ // ---------------------- helper ----------------------
+
+ private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
+
+ public static void toStart() {
+ helper.start();
+ }
+ public static void toStop() {
+ helper.stop();
+ }
+
+ /**
+ * @param jobId
+ * @param triggerType
+ * @param failRetryCount
+ * >=0: use this param
+ * <0: use param from job info config
+ * @param executorShardingParam
+ * @param executorParam
+ * null: use job param
+ * not null: cover job param
+ */
+ public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam) {
+ helper.addTrigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/TriggerTypeEnum.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/TriggerTypeEnum.java
new file mode 100644
index 0000000..7e60757
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/TriggerTypeEnum.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.xxl.job.admin.core.trigger;
+
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+
+/**
+ * trigger type enum
+ *
+ * @author xuxueli 2018-09-16 04:56:41
+ */
+public enum TriggerTypeEnum {
+
+ MANUAL(I18nUtil.getString("jobconf_trigger_type_manual")),
+ CRON(I18nUtil.getString("jobconf_trigger_type_cron")),
+ RETRY(I18nUtil.getString("jobconf_trigger_type_retry")),
+ PARENT(I18nUtil.getString("jobconf_trigger_type_parent")),
+ API(I18nUtil.getString("jobconf_trigger_type_api"));
+
+ private TriggerTypeEnum(String title){
+ this.title = title;
+ }
+ private String title;
+ public String getTitle() {
+ return title;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/XxlJobTrigger.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/XxlJobTrigger.java
new file mode 100644
index 0000000..a833d79
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/trigger/XxlJobTrigger.java
@@ -0,0 +1,211 @@
+package com.vci.ubcs.xxl.job.admin.core.trigger;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog;
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
+import com.vci.ubcs.xxl.job.admin.core.scheduler.XxlJobScheduler;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
+import com.xxl.rpc.util.IpUtil;
+import com.xxl.rpc.util.ThrowableUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Date;
+
+/**
+ * xxl-job trigger
+ * Created by xuxueli on 17/7/13.
+ */
+public class XxlJobTrigger {
+ private static Logger logger = LoggerFactory.getLogger(XxlJobTrigger.class);
+
+ /**
+ * trigger job
+ *
+ * @param jobId
+ * @param triggerType
+ * @param failRetryCount
+ * >=0: use this param
+ * <0: use param from job info config
+ * @param executorShardingParam
+ * @param executorParam
+ * null: use job param
+ * not null: cover job param
+ */
+ public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam) {
+ // load data
+ XxlJobInfo jobInfo = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(jobId);
+ if (jobInfo == null) {
+ logger.warn(">>>>>>>>>>>> trigger fail, jobId invalid锛宩obId={}", jobId);
+ return;
+ }
+ if (executorParam != null) {
+ jobInfo.setExecutorParam(executorParam);
+ }
+ int finalFailRetryCount = failRetryCount>=0?failRetryCount:jobInfo.getExecutorFailRetryCount();
+ XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(jobInfo.getJobGroup());
+
+ // sharding param
+ int[] shardingParam = null;
+ if (executorShardingParam!=null){
+ String[] shardingArr = executorShardingParam.split("/");
+ if (shardingArr.length==2 && isNumeric(shardingArr[0]) && isNumeric(shardingArr[1])) {
+ shardingParam = new int[2];
+ shardingParam[0] = Integer.valueOf(shardingArr[0]);
+ shardingParam[1] = Integer.valueOf(shardingArr[1]);
+ }
+ }
+ if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null)
+ && group.getRegistryList()!=null && !group.getRegistryList().isEmpty()
+ && shardingParam==null) {
+ for (int i = 0; i < group.getRegistryList().size(); i++) {
+ processTrigger(group, jobInfo, finalFailRetryCount, triggerType, i, group.getRegistryList().size());
+ }
+ } else {
+ if (shardingParam == null) {
+ shardingParam = new int[]{0, 1};
+ }
+ processTrigger(group, jobInfo, finalFailRetryCount, triggerType, shardingParam[0], shardingParam[1]);
+ }
+
+ }
+
+ private static boolean isNumeric(String str){
+ try {
+ int result = Integer.valueOf(str);
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ /**
+ * @param group job group, registry list may be empty
+ * @param jobInfo
+ * @param finalFailRetryCount
+ * @param triggerType
+ * @param index sharding index
+ * @param total sharding index
+ */
+ private static void processTrigger(XxlJobGroup group, XxlJobInfo jobInfo, int finalFailRetryCount, TriggerTypeEnum triggerType, int index, int total){
+
+ // param
+ ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION); // block strategy
+ ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); // route strategy
+ String shardingParam = (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==executorRouteStrategyEnum)?String.valueOf(index).concat("/").concat(String.valueOf(total)):null;
+
+ // 1銆乻ave log-id
+ XxlJobLog jobLog = new XxlJobLog();
+ jobLog.setJobGroup(jobInfo.getJobGroup());
+ jobLog.setJobId(jobInfo.getId());
+ jobLog.setTriggerTime(new Date());
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().save(jobLog);
+ logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
+
+ // 2銆乮nit trigger-param
+ TriggerParam triggerParam = new TriggerParam();
+ triggerParam.setJobId(jobInfo.getId());
+ triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
+ triggerParam.setExecutorParams(jobInfo.getExecutorParam());
+ triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
+ triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout());
+ triggerParam.setLogId(jobLog.getId());
+ triggerParam.setLogDateTime(jobLog.getTriggerTime().getTime());
+ triggerParam.setGlueType(jobInfo.getGlueType());
+ triggerParam.setGlueSource(jobInfo.getGlueSource());
+ triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
+ triggerParam.setBroadcastIndex(index);
+ triggerParam.setBroadcastTotal(total);
+
+ // 3銆乮nit address
+ String address = null;
+ ReturnT<String> routeAddressResult = null;
+ if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
+ if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
+ if (index < group.getRegistryList().size()) {
+ address = group.getRegistryList().get(index);
+ } else {
+ address = group.getRegistryList().get(0);
+ }
+ } else {
+ routeAddressResult = executorRouteStrategyEnum.getRouter().route(triggerParam, group.getRegistryList());
+ if (routeAddressResult.getCode() == ReturnT.SUCCESS_CODE) {
+ address = routeAddressResult.getContent();
+ }
+ }
+ } else {
+ routeAddressResult = new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobconf_trigger_address_empty"));
+ }
+
+ // 4銆乼rigger remote executor
+ ReturnT<String> triggerResult = null;
+ if (address != null) {
+ triggerResult = runExecutor(triggerParam, address);
+ } else {
+ triggerResult = new ReturnT<String>(ReturnT.FAIL_CODE, null);
+ }
+
+ // 5銆乧ollection trigger info
+ StringBuffer triggerMsgSb = new StringBuffer();
+ triggerMsgSb.append(I18nUtil.getString("jobconf_trigger_type")).append("锛�").append(triggerType.getTitle());
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append("锛�").append(IpUtil.getIp());
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regtype")).append("锛�")
+ .append( (group.getAddressType() == 0)?I18nUtil.getString("jobgroup_field_addressType_0"):I18nUtil.getString("jobgroup_field_addressType_1") );
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append("锛�").append(group.getRegistryList());
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append("锛�").append(executorRouteStrategyEnum.getTitle());
+ if (shardingParam != null) {
+ triggerMsgSb.append("("+shardingParam+")");
+ }
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append("锛�").append(blockStrategy.getTitle());
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append("锛�").append(jobInfo.getExecutorTimeout());
+ triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append("锛�").append(finalFailRetryCount);
+
+ triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< </span><br>")
+ .append((routeAddressResult!=null&&routeAddressResult.getMsg()!=null)?routeAddressResult.getMsg()+"<br><br>":"").append(triggerResult.getMsg()!=null?triggerResult.getMsg():"");
+
+ // 6銆乻ave log trigger-info
+ jobLog.setExecutorAddress(address);
+ jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
+ jobLog.setExecutorParam(jobInfo.getExecutorParam());
+ jobLog.setExecutorShardingParam(shardingParam);
+ jobLog.setExecutorFailRetryCount(finalFailRetryCount);
+ //jobLog.setTriggerTime();
+ jobLog.setTriggerCode(triggerResult.getCode());
+ jobLog.setTriggerMsg(triggerMsgSb.toString());
+ XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(jobLog);
+
+ logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
+ }
+
+ /**
+ * run executor
+ * @param triggerParam
+ * @param address
+ * @return
+ */
+ public static ReturnT<String> runExecutor(TriggerParam triggerParam, String address){
+ ReturnT<String> runResult = null;
+ try {
+ ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
+ runResult = executorBiz.run(triggerParam);
+ } catch (Exception e) {
+ logger.error(">>>>>>>>>>> xxl-job trigger error, please check if the executor[{}] is running.", address, e);
+ runResult = new ReturnT<String>(ReturnT.FAIL_CODE, ThrowableUtil.toString(e));
+ }
+
+ StringBuffer runResultSB = new StringBuffer(I18nUtil.getString("jobconf_trigger_run") + "锛�");
+ runResultSB.append("<br>address锛�").append(address);
+ runResultSB.append("<br>code锛�").append(runResult.getCode());
+ runResultSB.append("<br>msg锛�").append(runResult.getMsg());
+
+ runResult.setMsg(runResultSB.toString());
+ return runResult;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/CookieUtil.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/CookieUtil.java
new file mode 100644
index 0000000..44313ca
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/CookieUtil.java
@@ -0,0 +1,98 @@
+package com.vci.ubcs.xxl.job.admin.core.util;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Cookie.Util
+ *
+ * @author xuxueli 2015-12-12 18:01:06
+ */
+public class CookieUtil {
+
+ // 榛樿缂撳瓨鏃堕棿,鍗曚綅/绉�, 2H
+ private static final int COOKIE_MAX_AGE = Integer.MAX_VALUE;
+ // 淇濆瓨璺緞,鏍硅矾寰�
+ private static final String COOKIE_PATH = "/";
+
+ /**
+ * 淇濆瓨
+ *
+ * @param response
+ * @param key
+ * @param value
+ * @param ifRemember
+ */
+ public static void set(HttpServletResponse response, String key, String value, boolean ifRemember) {
+ int age = ifRemember?COOKIE_MAX_AGE:-1;
+ set(response, key, value, null, COOKIE_PATH, age, true);
+ }
+
+ /**
+ * 淇濆瓨
+ *
+ * @param response
+ * @param key
+ * @param value
+ * @param maxAge
+ */
+ private static void set(HttpServletResponse response, String key, String value, String domain, String path, int maxAge, boolean isHttpOnly) {
+ Cookie cookie = new Cookie(key, value);
+ if (domain != null) {
+ cookie.setDomain(domain);
+ }
+ cookie.setPath(path);
+ cookie.setMaxAge(maxAge);
+ cookie.setHttpOnly(isHttpOnly);
+ response.addCookie(cookie);
+ }
+
+ /**
+ * 鏌ヨvalue
+ *
+ * @param request
+ * @param key
+ * @return
+ */
+ public static String getValue(HttpServletRequest request, String key) {
+ Cookie cookie = get(request, key);
+ if (cookie != null) {
+ return cookie.getValue();
+ }
+ return null;
+ }
+
+ /**
+ * 鏌ヨCookie
+ *
+ * @param request
+ * @param key
+ */
+ private static Cookie get(HttpServletRequest request, String key) {
+ Cookie[] arr_cookie = request.getCookies();
+ if (arr_cookie != null && arr_cookie.length > 0) {
+ for (Cookie cookie : arr_cookie) {
+ if (cookie.getName().equals(key)) {
+ return cookie;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鍒犻櫎Cookie
+ *
+ * @param request
+ * @param response
+ * @param key
+ */
+ public static void remove(HttpServletRequest request, HttpServletResponse response, String key) {
+ Cookie cookie = get(request, key);
+ if (cookie != null) {
+ set(response, key, "", null, COOKIE_PATH, 0, true);
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/FtlUtil.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/FtlUtil.java
new file mode 100644
index 0000000..274249e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/FtlUtil.java
@@ -0,0 +1,31 @@
+package com.vci.ubcs.xxl.job.admin.core.util;
+
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.ext.beans.BeansWrapperBuilder;
+import freemarker.template.Configuration;
+import freemarker.template.TemplateHashModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * ftl util
+ *
+ * @author xuxueli 2018-01-17 20:37:48
+ */
+public class FtlUtil {
+ private static Logger logger = LoggerFactory.getLogger(FtlUtil.class);
+
+ private static BeansWrapper wrapper = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS).build(); //BeansWrapper.getDefaultInstance();
+
+ public static TemplateHashModel generateStaticModel(String packageName) {
+ try {
+ TemplateHashModel staticModels = wrapper.getStaticModels();
+ TemplateHashModel fileStatics = (TemplateHashModel) staticModels.get(packageName);
+ return fileStatics;
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ return null;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/I18nUtil.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/I18nUtil.java
new file mode 100644
index 0000000..d378957
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/I18nUtil.java
@@ -0,0 +1,80 @@
+package com.vci.ubcs.xxl.job.admin.core.util;
+
+import com.vci.ubcs.xxl.job.admin.core.conf.XxlJobAdminConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.EncodedResource;
+import org.springframework.core.io.support.PropertiesLoaderUtils;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * i18n util
+ *
+ * @author xuxueli 2018-01-17 20:39:06
+ */
+public class I18nUtil {
+ private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
+
+ private static Properties prop = null;
+ public static Properties loadI18nProp(){
+ if (prop != null) {
+ return prop;
+ }
+ try {
+ // build i18n prop
+ String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
+ i18n = (i18n!=null && i18n.trim().length()>0)?("_"+i18n):i18n;
+ String i18nFile = MessageFormat.format("i18n/message{0}.properties", i18n);
+
+ // load prop
+ Resource Resource = new ClassPathResource(i18nFile);
+ EncodedResource encodedResource = new EncodedResource(Resource,"UTF-8");
+ prop = PropertiesLoaderUtils.loadProperties(encodedResource);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return prop;
+ }
+
+ /**
+ * get val of i18n key
+ *
+ * @param key
+ * @return
+ */
+ public static String getString(String key) {
+ return loadI18nProp().getProperty(key);
+ }
+
+ /**
+ * get mult val of i18n mult key, as json
+ *
+ * @param keys
+ * @return
+ */
+ public static String getMultString(String... keys) {
+ Map<String, String> map = new HashMap<String, String>();
+
+ Properties prop = loadI18nProp();
+ if (keys!=null && keys.length>0) {
+ for (String key: keys) {
+ map.put(key, prop.getProperty(key));
+ }
+ } else {
+ for (String key: prop.stringPropertyNames()) {
+ map.put(key, prop.getProperty(key));
+ }
+ }
+
+ String json = JacksonUtil.writeValueAsString(map);
+ return json;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/JacksonUtil.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/JacksonUtil.java
new file mode 100644
index 0000000..1157ceb
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/JacksonUtil.java
@@ -0,0 +1,92 @@
+package com.vci.ubcs.xxl.job.admin.core.util;
+
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * Jackson util
+ *
+ * 1銆乷bj need private and set/get锛�
+ * 2銆乨o not support inner class锛�
+ *
+ * @author xuxueli 2015-9-25 18:02:56
+ */
+public class JacksonUtil {
+ private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
+
+ private final static ObjectMapper objectMapper = new ObjectMapper();
+ public static ObjectMapper getInstance() {
+ return objectMapper;
+ }
+
+ /**
+ * bean銆乤rray銆丩ist銆丮ap --> json
+ *
+ * @param obj
+ * @return json string
+ * @throws Exception
+ */
+ public static String writeValueAsString(Object obj) {
+ try {
+ return getInstance().writeValueAsString(obj);
+ } catch (JsonGenerationException e) {
+ logger.error(e.getMessage(), e);
+ } catch (JsonMappingException e) {
+ logger.error(e.getMessage(), e);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return null;
+ }
+
+ /**
+ * string --> bean銆丮ap銆丩ist(array)
+ *
+ * @param jsonStr
+ * @param clazz
+ * @return obj
+ * @throws Exception
+ */
+ public static <T> T readValue(String jsonStr, Class<T> clazz) {
+ try {
+ return getInstance().readValue(jsonStr, clazz);
+ } catch (JsonParseException e) {
+ logger.error(e.getMessage(), e);
+ } catch (JsonMappingException e) {
+ logger.error(e.getMessage(), e);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return null;
+ }
+
+ /**
+ * string --> List<Bean>...
+ *
+ * @param jsonStr
+ * @param parametrized
+ * @param parameterClasses
+ * @param <T>
+ * @return
+ */
+ public static <T> T readValue(String jsonStr, Class<?> parametrized, Class<?>... parameterClasses) {
+ try {
+ JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses);
+ return getInstance().readValue(jsonStr, javaType);
+ } catch (JsonParseException e) {
+ logger.error(e.getMessage(), e);
+ } catch (JsonMappingException e) {
+ logger.error(e.getMessage(), e);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/LocalCacheUtil.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/LocalCacheUtil.java
new file mode 100644
index 0000000..3bd4d1f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/core/util/LocalCacheUtil.java
@@ -0,0 +1,133 @@
+package com.vci.ubcs.xxl.job.admin.core.util;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * local cache tool
+ *
+ * @author xuxueli 2018-01-22 21:37:34
+ */
+public class LocalCacheUtil {
+
+ private static ConcurrentMap<String, LocalCacheData> cacheRepository = new ConcurrentHashMap<String, LocalCacheData>(); // 绫诲瀷寤鸿鐢ㄦ娊璞$埗绫伙紝鍏煎鎬ф洿濂斤紱
+ private static class LocalCacheData{
+ private String key;
+ private Object val;
+ private long timeoutTime;
+
+ public LocalCacheData() {
+ }
+
+ public LocalCacheData(String key, Object val, long timeoutTime) {
+ this.key = key;
+ this.val = val;
+ this.timeoutTime = timeoutTime;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public Object getVal() {
+ return val;
+ }
+
+ public void setVal(Object val) {
+ this.val = val;
+ }
+
+ public long getTimeoutTime() {
+ return timeoutTime;
+ }
+
+ public void setTimeoutTime(long timeoutTime) {
+ this.timeoutTime = timeoutTime;
+ }
+ }
+
+
+ /**
+ * set cache
+ *
+ * @param key
+ * @param val
+ * @param cacheTime
+ * @return
+ */
+ public static boolean set(String key, Object val, long cacheTime){
+
+ // clean timeout cache, before set new cache (avoid cache too much)
+ cleanTimeoutCache();
+
+ // set new cache
+ if (key==null || key.trim().length()==0) {
+ return false;
+ }
+ if (val == null) {
+ remove(key);
+ }
+ if (cacheTime <= 0) {
+ remove(key);
+ }
+ long timeoutTime = System.currentTimeMillis() + cacheTime;
+ LocalCacheData localCacheData = new LocalCacheData(key, val, timeoutTime);
+ cacheRepository.put(localCacheData.getKey(), localCacheData);
+ return true;
+ }
+
+ /**
+ * remove cache
+ *
+ * @param key
+ * @return
+ */
+ public static boolean remove(String key){
+ if (key==null || key.trim().length()==0) {
+ return false;
+ }
+ cacheRepository.remove(key);
+ return true;
+ }
+
+ /**
+ * get cache
+ *
+ * @param key
+ * @return
+ */
+ public static Object get(String key){
+ if (key==null || key.trim().length()==0) {
+ return null;
+ }
+ LocalCacheData localCacheData = cacheRepository.get(key);
+ if (localCacheData!=null && System.currentTimeMillis()<localCacheData.getTimeoutTime()) {
+ return localCacheData.getVal();
+ } else {
+ remove(key);
+ return null;
+ }
+ }
+
+ /**
+ * clean timeout cache
+ *
+ * @return
+ */
+ public static boolean cleanTimeoutCache(){
+ if (!cacheRepository.keySet().isEmpty()) {
+ for (String key: cacheRepository.keySet()) {
+ LocalCacheData localCacheData = cacheRepository.get(key);
+ if (localCacheData!=null && System.currentTimeMillis()>=localCacheData.getTimeoutTime()) {
+ cacheRepository.remove(key);
+ }
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobGroupDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobGroupDao.java
new file mode 100644
index 0000000..32f94c7
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobGroupDao.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Created by xuxueli on 16/9/30.
+ */
+@Mapper
+public interface XxlJobGroupDao {
+
+ public List<XxlJobGroup> findAll();
+
+ public List<XxlJobGroup> findByAddressType(@Param("addressType") int addressType);
+
+ public int save(XxlJobGroup xxlJobGroup);
+
+ public int update(XxlJobGroup xxlJobGroup);
+
+ public int remove(@Param("id") int id);
+
+ public XxlJobGroup load(@Param("id") int id);
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobInfoDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobInfoDao.java
new file mode 100644
index 0000000..338799d
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobInfoDao.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * job info
+ * @author xuxueli 2016-1-12 18:03:45
+ */
+@Mapper
+public interface XxlJobInfoDao {
+
+ public List<XxlJobInfo> pageList(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("jobGroup") int jobGroup,
+ @Param("triggerStatus") int triggerStatus,
+ @Param("jobDesc") String jobDesc,
+ @Param("executorHandler") String executorHandler,
+ @Param("author") String author);
+ public int pageListCount(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("jobGroup") int jobGroup,
+ @Param("triggerStatus") int triggerStatus,
+ @Param("jobDesc") String jobDesc,
+ @Param("executorHandler") String executorHandler,
+ @Param("author") String author);
+
+ public int save(XxlJobInfo info);
+
+ public XxlJobInfo loadById(@Param("id") int id);
+
+ public int update(XxlJobInfo xxlJobInfo);
+
+ public int delete(@Param("id") long id);
+
+ public List<XxlJobInfo> getJobsByGroup(@Param("jobGroup") int jobGroup);
+
+ public int findAllCount();
+
+ public List<XxlJobInfo> scheduleJobQuery(@Param("maxNextTime") long maxNextTime, @Param("pagesize") int pagesize );
+
+ public int scheduleUpdate(XxlJobInfo xxlJobInfo);
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogDao.java
new file mode 100644
index 0000000..9ebfdd8
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogDao.java
@@ -0,0 +1,60 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * job log
+ * @author xuxueli 2016-1-12 18:03:06
+ */
+@Mapper
+public interface XxlJobLogDao {
+
+ // exist jobId not use jobGroup, not exist use jobGroup
+ public List<XxlJobLog> pageList(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("jobGroup") int jobGroup,
+ @Param("jobId") int jobId,
+ @Param("triggerTimeStart") Date triggerTimeStart,
+ @Param("triggerTimeEnd") Date triggerTimeEnd,
+ @Param("logStatus") int logStatus);
+ public int pageListCount(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("jobGroup") int jobGroup,
+ @Param("jobId") int jobId,
+ @Param("triggerTimeStart") Date triggerTimeStart,
+ @Param("triggerTimeEnd") Date triggerTimeEnd,
+ @Param("logStatus") int logStatus);
+
+ public XxlJobLog load(@Param("id") long id);
+
+ public long save(XxlJobLog xxlJobLog);
+
+ public int updateTriggerInfo(XxlJobLog xxlJobLog);
+
+ public int updateHandleInfo(XxlJobLog xxlJobLog);
+
+ public int delete(@Param("jobId") int jobId);
+
+ public Map<String, Object> findLogReport(@Param("from") Date from,
+ @Param("to") Date to);
+
+ public List<Long> findClearLogIds(@Param("jobGroup") int jobGroup,
+ @Param("jobId") int jobId,
+ @Param("clearBeforeTime") Date clearBeforeTime,
+ @Param("clearBeforeNum") int clearBeforeNum,
+ @Param("pagesize") int pagesize);
+ public int clearLog(@Param("logIds") List<Long> logIds);
+
+ public List<Long> findFailJobLogIds(@Param("pagesize") int pagesize);
+
+ public int updateAlarmStatus(@Param("logId") long logId,
+ @Param("oldAlarmStatus") int oldAlarmStatus,
+ @Param("newAlarmStatus") int newAlarmStatus);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogGlueDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogGlueDao.java
new file mode 100644
index 0000000..e6d0733
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogGlueDao.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogGlue;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * job log for glue
+ * @author xuxueli 2016-5-19 18:04:56
+ */
+@Mapper
+public interface XxlJobLogGlueDao {
+
+ public int save(XxlJobLogGlue xxlJobLogGlue);
+
+ public List<XxlJobLogGlue> findByJobId(@Param("jobId") int jobId);
+
+ public int removeOld(@Param("jobId") int jobId, @Param("limit") int limit);
+
+ public int deleteByJobId(@Param("jobId") int jobId);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogReportDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogReportDao.java
new file mode 100644
index 0000000..7ce15ff
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobLogReportDao.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogReport;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * job log
+ * @author xuxueli 2019-11-22
+ */
+@Mapper
+public interface XxlJobLogReportDao {
+
+ public int save(XxlJobLogReport xxlJobLogReport);
+
+ public int update(XxlJobLogReport xxlJobLogReport);
+
+ public List<XxlJobLogReport> queryLogReport(@Param("triggerDayFrom") Date triggerDayFrom,
+ @Param("triggerDayTo") Date triggerDayTo);
+
+ public XxlJobLogReport queryLogReportTotal();
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobRegistryDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobRegistryDao.java
new file mode 100644
index 0000000..d11b9a2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobRegistryDao.java
@@ -0,0 +1,38 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobRegistry;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by xuxueli on 16/9/30.
+ */
+@Mapper
+public interface XxlJobRegistryDao {
+
+ public List<Integer> findDead(@Param("timeout") int timeout,
+ @Param("nowTime") Date nowTime);
+
+ public int removeDead(@Param("ids") List<Integer> ids);
+
+ public List<XxlJobRegistry> findAll(@Param("timeout") int timeout,
+ @Param("nowTime") Date nowTime);
+
+ public int registryUpdate(@Param("registryGroup") String registryGroup,
+ @Param("registryKey") String registryKey,
+ @Param("registryValue") String registryValue,
+ @Param("updateTime") Date updateTime);
+
+ public int registrySave(@Param("registryGroup") String registryGroup,
+ @Param("registryKey") String registryKey,
+ @Param("registryValue") String registryValue,
+ @Param("updateTime") Date updateTime);
+
+ public int registryDelete(@Param("registryGroup") String registryGroup,
+ @Param("registryKey") String registryKey,
+ @Param("registryValue") String registryValue);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobUserDao.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobUserDao.java
new file mode 100644
index 0000000..2c5c313
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/dao/XxlJobUserDao.java
@@ -0,0 +1,31 @@
+package com.vci.ubcs.xxl.job.admin.dao;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * @author xuxueli 2019-05-04 16:44:59
+ */
+@Mapper
+public interface XxlJobUserDao {
+
+ public List<XxlJobUser> pageList(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("username") String username,
+ @Param("role") int role);
+ public int pageListCount(@Param("offset") int offset,
+ @Param("pagesize") int pagesize,
+ @Param("username") String username,
+ @Param("role") int role);
+
+ public XxlJobUser loadByUserName(@Param("username") String username);
+
+ public int save(XxlJobUser xxlJobUser);
+
+ public int update(XxlJobUser xxlJobUser);
+
+ public int delete(@Param("id") int id);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/LoginService.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/LoginService.java
new file mode 100644
index 0000000..9fb3a7a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/LoginService.java
@@ -0,0 +1,106 @@
+package com.vci.ubcs.xxl.job.admin.service;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser;
+import com.vci.ubcs.xxl.job.admin.core.util.CookieUtil;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.core.util.JacksonUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobUserDao;
+import com.xxl.job.core.biz.model.ReturnT;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.DigestUtils;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigInteger;
+
+/**
+ * @author xuxueli 2019-05-04 22:13:264
+ */
+@Configuration(proxyBeanMethods = false)
+public class LoginService {
+
+ public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
+
+ @Resource
+ private XxlJobUserDao xxlJobUserDao;
+
+
+ private String makeToken(XxlJobUser xxlJobUser){
+ String tokenJson = JacksonUtil.writeValueAsString(xxlJobUser);
+ String tokenHex = new BigInteger(tokenJson.getBytes()).toString(16);
+ return tokenHex;
+ }
+ private XxlJobUser parseToken(String tokenHex){
+ XxlJobUser xxlJobUser = null;
+ if (tokenHex != null) {
+ String tokenJson = new String(new BigInteger(tokenHex, 16).toByteArray()); // username_password(md5)
+ xxlJobUser = JacksonUtil.readValue(tokenJson, XxlJobUser.class);
+ }
+ return xxlJobUser;
+ }
+
+
+ public ReturnT<String> login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean ifRemember){
+
+ // param
+ if (username==null || username.trim().length()==0 || password==null || password.trim().length()==0){
+ return new ReturnT<String>(500, I18nUtil.getString("login_param_empty"));
+ }
+
+ // valid passowrd
+ XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
+ if (xxlJobUser == null) {
+ return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
+ }
+ String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
+ if (!passwordMd5.equals(xxlJobUser.getPassword())) {
+ return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
+ }
+
+ String loginToken = makeToken(xxlJobUser);
+
+ // do login
+ CookieUtil.set(response, LOGIN_IDENTITY_KEY, loginToken, ifRemember);
+ return ReturnT.SUCCESS;
+ }
+
+ /**
+ * logout
+ *
+ * @param request
+ * @param response
+ */
+ public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
+ CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
+ return ReturnT.SUCCESS;
+ }
+
+ /**
+ * logout
+ *
+ * @param request
+ * @return
+ */
+ public XxlJobUser ifLogin(HttpServletRequest request, HttpServletResponse response){
+ String cookieToken = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
+ if (cookieToken != null) {
+ XxlJobUser cookieUser = null;
+ try {
+ cookieUser = parseToken(cookieToken);
+ } catch (Exception e) {
+ logout(request, response);
+ }
+ if (cookieUser != null) {
+ XxlJobUser dbUser = xxlJobUserDao.loadByUserName(cookieUser.getUsername());
+ if (dbUser != null) {
+ if (cookieUser.getPassword().equals(dbUser.getPassword())) {
+ return dbUser;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/XxlJobService.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/XxlJobService.java
new file mode 100644
index 0000000..4f769e5
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/XxlJobService.java
@@ -0,0 +1,86 @@
+package com.vci.ubcs.xxl.job.admin.service;
+
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.xxl.job.core.biz.model.ReturnT;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * core job action for xxl-job
+ *
+ * @author xuxueli 2016-5-28 15:30:33
+ */
+public interface XxlJobService {
+
+ /**
+ * page list
+ *
+ * @param start
+ * @param length
+ * @param jobGroup
+ * @param jobDesc
+ * @param executorHandler
+ * @param author
+ * @return
+ */
+ public Map<String, Object> pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author);
+
+ /**
+ * add job
+ *
+ * @param jobInfo
+ * @return
+ */
+ public ReturnT<String> add(XxlJobInfo jobInfo);
+
+ /**
+ * update job
+ *
+ * @param jobInfo
+ * @return
+ */
+ public ReturnT<String> update(XxlJobInfo jobInfo);
+
+ /**
+ * remove job
+ * *
+ * @param id
+ * @return
+ */
+ public ReturnT<String> remove(int id);
+
+ /**
+ * start job
+ *
+ * @param id
+ * @return
+ */
+ public ReturnT<String> start(int id);
+
+ /**
+ * stop job
+ *
+ * @param id
+ * @return
+ */
+ public ReturnT<String> stop(int id);
+
+ /**
+ * dashboard info
+ *
+ * @return
+ */
+ public Map<String,Object> dashboardInfo();
+
+ /**
+ * chart info
+ *
+ * @param startDate
+ * @param endDate
+ * @return
+ */
+ public ReturnT<Map<String,Object>> chartInfo(Date startDate, Date endDate);
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/AdminBizImpl.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/AdminBizImpl.java
new file mode 100644
index 0000000..261c762
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/AdminBizImpl.java
@@ -0,0 +1,171 @@
+package com.vci.ubcs.xxl.job.admin.service.impl;
+
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog;
+import com.vci.ubcs.xxl.job.admin.core.thread.JobTriggerPoolHelper;
+import com.vci.ubcs.xxl.job.admin.core.trigger.TriggerTypeEnum;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobInfoDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobLogDao;
+import com.vci.ubcs.xxl.job.admin.dao.XxlJobRegistryDao;
+import com.xxl.job.core.biz.AdminBiz;
+import com.xxl.job.core.biz.model.HandleCallbackParam;
+import com.xxl.job.core.biz.model.RegistryParam;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.IJobHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author xuxueli 2017-07-27 21:54:20
+ */
+@Service
+public class AdminBizImpl implements AdminBiz {
+ private static Logger logger = LoggerFactory.getLogger(AdminBizImpl.class);
+
+ @Resource
+ public XxlJobLogDao xxlJobLogDao;
+ @Resource
+ private XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ private XxlJobRegistryDao xxlJobRegistryDao;
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+
+
+ @Override
+ public ReturnT<String> callback(List<HandleCallbackParam> callbackParamList) {
+ for (HandleCallbackParam handleCallbackParam: callbackParamList) {
+ ReturnT<String> callbackResult = callback(handleCallbackParam);
+ logger.debug(">>>>>>>>> JobApiController.callback {}, handleCallbackParam={}, callbackResult={}",
+ (callbackResult.getCode()==IJobHandler.SUCCESS.getCode()?"success":"fail"), handleCallbackParam, callbackResult);
+ }
+
+ return ReturnT.SUCCESS;
+ }
+
+ private ReturnT<String> callback(HandleCallbackParam handleCallbackParam) {
+ // valid log item
+ XxlJobLog log = xxlJobLogDao.load(handleCallbackParam.getLogId());
+ if (log == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, "log item not found.");
+ }
+ if (log.getHandleCode() > 0) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, "log repeate callback."); // avoid repeat callback, trigger child job etc
+ }
+
+ // trigger success, to trigger child job
+ String callbackMsg = null;
+ if (IJobHandler.SUCCESS.getCode() == handleCallbackParam.getExecuteResult().getCode()) {
+ XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
+ if (xxlJobInfo!=null && xxlJobInfo.getChildJobId()!=null && xxlJobInfo.getChildJobId().trim().length()>0) {
+ callbackMsg = "<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_child_run") +"<<<<<<<<<<< </span><br>";
+
+ String[] childJobIds = xxlJobInfo.getChildJobId().split(",");
+ for (int i = 0; i < childJobIds.length; i++) {
+ int childJobId = (childJobIds[i]!=null && childJobIds[i].trim().length()>0 && isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
+ if (childJobId > 0) {
+
+ JobTriggerPoolHelper.trigger(childJobId, TriggerTypeEnum.PARENT, -1, null, null);
+ ReturnT<String> triggerChildResult = ReturnT.SUCCESS;
+
+ // add msg
+ callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg1"),
+ (i+1),
+ childJobIds.length,
+ childJobIds[i],
+ (triggerChildResult.getCode()==ReturnT.SUCCESS_CODE?I18nUtil.getString("system_success"):I18nUtil.getString("system_fail")),
+ triggerChildResult.getMsg());
+ } else {
+ callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg2"),
+ (i+1),
+ childJobIds.length,
+ childJobIds[i]);
+ }
+ }
+
+ }
+ }
+
+ // handle msg
+ StringBuffer handleMsg = new StringBuffer();
+ if (log.getHandleMsg()!=null) {
+ handleMsg.append(log.getHandleMsg()).append("<br>");
+ }
+ if (handleCallbackParam.getExecuteResult().getMsg() != null) {
+ handleMsg.append(handleCallbackParam.getExecuteResult().getMsg());
+ }
+ if (callbackMsg != null) {
+ handleMsg.append(callbackMsg);
+ }
+
+ // success, save log
+ log.setHandleTime(new Date());
+ log.setHandleCode(handleCallbackParam.getExecuteResult().getCode());
+ log.setHandleMsg(handleMsg.toString());
+ xxlJobLogDao.updateHandleInfo(log);
+
+ return ReturnT.SUCCESS;
+ }
+
+ private boolean isNumeric(String str){
+ try {
+ int result = Integer.valueOf(str);
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public ReturnT<String> registry(RegistryParam registryParam) {
+
+ // valid
+ if (!StringUtils.hasText(registryParam.getRegistryGroup())
+ || !StringUtils.hasText(registryParam.getRegistryKey())
+ || !StringUtils.hasText(registryParam.getRegistryValue())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, "Illegal Argument.");
+ }
+
+ int ret = xxlJobRegistryDao.registryUpdate(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
+ if (ret < 1) {
+ xxlJobRegistryDao.registrySave(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
+
+ // fresh
+ freshGroupRegistryInfo(registryParam);
+ }
+ return ReturnT.SUCCESS;
+ }
+
+ @Override
+ public ReturnT<String> registryRemove(RegistryParam registryParam) {
+
+ // valid
+ if (!StringUtils.hasText(registryParam.getRegistryGroup())
+ || !StringUtils.hasText(registryParam.getRegistryKey())
+ || !StringUtils.hasText(registryParam.getRegistryValue())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, "Illegal Argument.");
+ }
+
+ int ret = xxlJobRegistryDao.registryDelete(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue());
+ if (ret > 0) {
+
+ // fresh
+ freshGroupRegistryInfo(registryParam);
+ }
+ return ReturnT.SUCCESS;
+ }
+
+ private void freshGroupRegistryInfo(RegistryParam registryParam){
+ // Under consideration, prevent affecting core tables
+ }
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/XxlJobServiceImpl.java
new file mode 100644
index 0000000..31c4818
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/service/impl/XxlJobServiceImpl.java
@@ -0,0 +1,372 @@
+package com.vci.ubcs.xxl.job.admin.service.impl;
+
+import com.vci.ubcs.xxl.job.admin.core.cron.CronExpression;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo;
+import com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogReport;
+import com.vci.ubcs.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
+import com.vci.ubcs.xxl.job.admin.core.thread.JobScheduleHelper;
+import com.vci.ubcs.xxl.job.admin.core.util.I18nUtil;
+import com.vci.ubcs.xxl.job.admin.dao.*;
+import com.vci.ubcs.xxl.job.admin.service.XxlJobService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
+import com.xxl.job.core.glue.GlueTypeEnum;
+import com.xxl.job.core.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.MessageFormat;
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * core job action for xxl-job
+ * @author xuxueli 2016-5-28 15:30:33
+ */
+@Service
+public class XxlJobServiceImpl implements XxlJobService {
+ private static Logger logger = LoggerFactory.getLogger(XxlJobServiceImpl.class);
+
+ @Resource
+ private XxlJobGroupDao xxlJobGroupDao;
+ @Resource
+ private XxlJobInfoDao xxlJobInfoDao;
+ @Resource
+ public XxlJobLogDao xxlJobLogDao;
+ @Resource
+ private XxlJobLogGlueDao xxlJobLogGlueDao;
+ @Resource
+ private XxlJobLogReportDao xxlJobLogReportDao;
+
+ @Override
+ public Map<String, Object> pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
+
+ // page list
+ List<XxlJobInfo> list = xxlJobInfoDao.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
+ int list_count = xxlJobInfoDao.pageListCount(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
+
+ // package result
+ Map<String, Object> maps = new HashMap<String, Object>();
+ maps.put("recordsTotal", list_count); // 鎬昏褰曟暟
+ maps.put("recordsFiltered", list_count); // 杩囨护鍚庣殑鎬昏褰曟暟
+ maps.put("data", list); // 鍒嗛〉鍒楄〃
+ return maps;
+ }
+
+ @Override
+ public ReturnT<String> add(XxlJobInfo jobInfo) {
+ // valid
+ XxlJobGroup group = xxlJobGroupDao.load(jobInfo.getJobGroup());
+ if (group == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose")+I18nUtil.getString("jobinfo_field_jobgroup")) );
+ }
+ if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") );
+ }
+ if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_jobdesc")) );
+ }
+ if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_author")) );
+ }
+ if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString("system_unvalid")) );
+ }
+ if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
+ }
+ if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype")+I18nUtil.getString("system_unvalid")) );
+ }
+ if (GlueTypeEnum.BEAN==GlueTypeEnum.match(jobInfo.getGlueType()) && (jobInfo.getExecutorHandler()==null || jobInfo.getExecutorHandler().trim().length()==0) ) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+"JobHandler") );
+ }
+
+ // fix "\r" in shell
+ if (GlueTypeEnum.GLUE_SHELL==GlueTypeEnum.match(jobInfo.getGlueType()) && jobInfo.getGlueSource()!=null) {
+ jobInfo.setGlueSource(jobInfo.getGlueSource().replaceAll("\r", ""));
+ }
+
+ // ChildJobId valid
+ if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
+ String[] childJobIds = jobInfo.getChildJobId().split(",");
+ for (String childJobIdItem: childJobIds) {
+ if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
+ XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
+ if (childJobInfo==null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE,
+ MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_not_found")), childJobIdItem));
+ }
+ } else {
+ return new ReturnT<String>(ReturnT.FAIL_CODE,
+ MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_unvalid")), childJobIdItem));
+ }
+ }
+
+ // join , avoid "xxx,,"
+ String temp = "";
+ for (String item:childJobIds) {
+ temp += item + ",";
+ }
+ temp = temp.substring(0, temp.length()-1);
+
+ jobInfo.setChildJobId(temp);
+ }
+
+ // add in db
+ jobInfo.setAddTime(new Date());
+ jobInfo.setUpdateTime(new Date());
+ jobInfo.setGlueUpdatetime(new Date());
+ xxlJobInfoDao.save(jobInfo);
+ if (jobInfo.getId() < 1) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_add")+I18nUtil.getString("system_fail")) );
+ }
+
+ return new ReturnT<String>(String.valueOf(jobInfo.getId()));
+ }
+
+ private boolean isNumeric(String str){
+ try {
+ int result = Integer.valueOf(str);
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public ReturnT<String> update(XxlJobInfo jobInfo) {
+
+ // valid
+ if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") );
+ }
+ if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_jobdesc")) );
+ }
+ if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_author")) );
+ }
+ if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString("system_unvalid")) );
+ }
+ if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
+ }
+
+ // ChildJobId valid
+ if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
+ String[] childJobIds = jobInfo.getChildJobId().split(",");
+ for (String childJobIdItem: childJobIds) {
+ if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
+ XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
+ if (childJobInfo==null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE,
+ MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_not_found")), childJobIdItem));
+ }
+ } else {
+ return new ReturnT<String>(ReturnT.FAIL_CODE,
+ MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_unvalid")), childJobIdItem));
+ }
+ }
+
+ // join , avoid "xxx,,"
+ String temp = "";
+ for (String item:childJobIds) {
+ temp += item + ",";
+ }
+ temp = temp.substring(0, temp.length()-1);
+
+ jobInfo.setChildJobId(temp);
+ }
+
+ // group valid
+ XxlJobGroup jobGroup = xxlJobGroupDao.load(jobInfo.getJobGroup());
+ if (jobGroup == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_jobgroup")+I18nUtil.getString("system_unvalid")) );
+ }
+
+ // stage job info
+ XxlJobInfo exists_jobInfo = xxlJobInfoDao.loadById(jobInfo.getId());
+ if (exists_jobInfo == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString("system_not_found")) );
+ }
+
+ // next trigger time (5s鍚庣敓鏁堬紝閬垮紑棰勮鍛ㄦ湡)
+ long nextTriggerTime = exists_jobInfo.getTriggerNextTime();
+ if (exists_jobInfo.getTriggerStatus() == 1 && !jobInfo.getJobCron().equals(exists_jobInfo.getJobCron()) ) {
+ try {
+ Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
+ if (nextValidTime == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
+ }
+ nextTriggerTime = nextValidTime.getTime();
+ } catch (ParseException e) {
+ logger.error(e.getMessage(), e);
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
+ }
+ }
+
+ exists_jobInfo.setJobGroup(jobInfo.getJobGroup());
+ exists_jobInfo.setJobCron(jobInfo.getJobCron());
+ exists_jobInfo.setJobDesc(jobInfo.getJobDesc());
+ exists_jobInfo.setAuthor(jobInfo.getAuthor());
+ exists_jobInfo.setAlarmEmail(jobInfo.getAlarmEmail());
+ exists_jobInfo.setExecutorRouteStrategy(jobInfo.getExecutorRouteStrategy());
+ exists_jobInfo.setExecutorHandler(jobInfo.getExecutorHandler());
+ exists_jobInfo.setExecutorParam(jobInfo.getExecutorParam());
+ exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
+ exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
+ exists_jobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount());
+ exists_jobInfo.setChildJobId(jobInfo.getChildJobId());
+ exists_jobInfo.setTriggerNextTime(nextTriggerTime);
+
+ exists_jobInfo.setUpdateTime(new Date());
+ xxlJobInfoDao.update(exists_jobInfo);
+
+
+ return ReturnT.SUCCESS;
+ }
+
+ @Override
+ public ReturnT<String> remove(int id) {
+ XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+ if (xxlJobInfo == null) {
+ return ReturnT.SUCCESS;
+ }
+
+ xxlJobInfoDao.delete(id);
+ xxlJobLogDao.delete(id);
+ xxlJobLogGlueDao.deleteByJobId(id);
+ return ReturnT.SUCCESS;
+ }
+
+ @Override
+ public ReturnT<String> start(int id) {
+ XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+
+ // next trigger time (5s鍚庣敓鏁堬紝閬垮紑棰勮鍛ㄦ湡)
+ long nextTriggerTime = 0;
+ try {
+ Date nextValidTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
+ if (nextValidTime == null) {
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
+ }
+ nextTriggerTime = nextValidTime.getTime();
+ } catch (ParseException e) {
+ logger.error(e.getMessage(), e);
+ return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
+ }
+
+ xxlJobInfo.setTriggerStatus(1);
+ xxlJobInfo.setTriggerLastTime(0);
+ xxlJobInfo.setTriggerNextTime(nextTriggerTime);
+
+ xxlJobInfo.setUpdateTime(new Date());
+ xxlJobInfoDao.update(xxlJobInfo);
+ return ReturnT.SUCCESS;
+ }
+
+ @Override
+ public ReturnT<String> stop(int id) {
+ XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+
+ xxlJobInfo.setTriggerStatus(0);
+ xxlJobInfo.setTriggerLastTime(0);
+ xxlJobInfo.setTriggerNextTime(0);
+
+ xxlJobInfo.setUpdateTime(new Date());
+ xxlJobInfoDao.update(xxlJobInfo);
+ return ReturnT.SUCCESS;
+ }
+
+ @Override
+ public Map<String, Object> dashboardInfo() {
+
+ int jobInfoCount = xxlJobInfoDao.findAllCount();
+ int jobLogCount = 0;
+ int jobLogSuccessCount = 0;
+ XxlJobLogReport xxlJobLogReport = xxlJobLogReportDao.queryLogReportTotal();
+ if (xxlJobLogReport != null) {
+ jobLogCount = xxlJobLogReport.getRunningCount() + xxlJobLogReport.getSucCount() + xxlJobLogReport.getFailCount();
+ jobLogSuccessCount = xxlJobLogReport.getSucCount();
+ }
+
+ // executor count
+ Set<String> executorAddressSet = new HashSet<String>();
+ List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
+
+ if (groupList!=null && !groupList.isEmpty()) {
+ for (XxlJobGroup group: groupList) {
+ if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
+ executorAddressSet.addAll(group.getRegistryList());
+ }
+ }
+ }
+
+ int executorCount = executorAddressSet.size();
+
+ Map<String, Object> dashboardMap = new HashMap<String, Object>();
+ dashboardMap.put("jobInfoCount", jobInfoCount);
+ dashboardMap.put("jobLogCount", jobLogCount);
+ dashboardMap.put("jobLogSuccessCount", jobLogSuccessCount);
+ dashboardMap.put("executorCount", executorCount);
+ return dashboardMap;
+ }
+
+ @Override
+ public ReturnT<Map<String, Object>> chartInfo(Date startDate, Date endDate) {
+
+ // process
+ List<String> triggerDayList = new ArrayList<String>();
+ List<Integer> triggerDayCountRunningList = new ArrayList<Integer>();
+ List<Integer> triggerDayCountSucList = new ArrayList<Integer>();
+ List<Integer> triggerDayCountFailList = new ArrayList<Integer>();
+ int triggerCountRunningTotal = 0;
+ int triggerCountSucTotal = 0;
+ int triggerCountFailTotal = 0;
+
+ List<XxlJobLogReport> logReportList = xxlJobLogReportDao.queryLogReport(startDate, endDate);
+
+ if (logReportList!=null && logReportList.size()>0) {
+ for (XxlJobLogReport item: logReportList) {
+ String day = DateUtil.formatDate(item.getTriggerDay());
+ int triggerDayCountRunning = item.getRunningCount();
+ int triggerDayCountSuc = item.getSucCount();
+ int triggerDayCountFail = item.getFailCount();
+
+ triggerDayList.add(day);
+ triggerDayCountRunningList.add(triggerDayCountRunning);
+ triggerDayCountSucList.add(triggerDayCountSuc);
+ triggerDayCountFailList.add(triggerDayCountFail);
+
+ triggerCountRunningTotal += triggerDayCountRunning;
+ triggerCountSucTotal += triggerDayCountSuc;
+ triggerCountFailTotal += triggerDayCountFail;
+ }
+ } else {
+ for (int i = -6; i <= 0; i++) {
+ triggerDayList.add(DateUtil.formatDate(DateUtil.addDays(new Date(), i)));
+ triggerDayCountRunningList.add(0);
+ triggerDayCountSucList.add(0);
+ triggerDayCountFailList.add(0);
+ }
+ }
+
+ Map<String, Object> result = new HashMap<String, Object>();
+ result.put("triggerDayList", triggerDayList);
+ result.put("triggerDayCountRunningList", triggerDayCountRunningList);
+ result.put("triggerDayCountSucList", triggerDayCountSucList);
+ result.put("triggerDayCountFailList", triggerDayCountFailList);
+
+ result.put("triggerCountRunningTotal", triggerCountRunningTotal);
+ result.put("triggerCountSucTotal", triggerCountSucTotal);
+ result.put("triggerCountFailTotal", triggerCountFailTotal);
+
+ return new ReturnT<Map<String, Object>>(result);
+ }
+
+}
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-test.yml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application.yml
new file mode 100644
index 0000000..fd9a6b1
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/application.yml
@@ -0,0 +1,61 @@
+server:
+ port: 36013
+ servlet:
+ context-path: /xxl-job-admin
+
+spring:
+ cloud:
+ nacos:
+ discovery:
+ metadata:
+ management:
+ context-path: ${server.servlet.context-path}/actuator
+ freemarker:
+ charset: UTF-8
+ request-context-attribute: request
+ settings:
+ number_format: 0.##########
+ suffix: .ftl
+ templateLoaderPath: classpath:/templates/
+ mail:
+ host: smtp.qq.com
+ password: xxx
+ port: 25
+ properties:
+ mail:
+ smtp:
+ auth: true
+ socketFactory:
+ class: javax.net.ssl.SSLSocketFactory
+ starttls:
+ enable: true
+ required: true
+ username: xxx@qq.com
+ mvc:
+ servlet:
+ load-on-startup: 0
+ static-path-pattern: /static/**
+ resources:
+ static-locations: classpath:/static/
+
+management:
+ health:
+ mail:
+ enabled: false
+ server:
+ servlet:
+ context-path: /actuator
+mybatis:
+ mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
+
+xxl:
+ job:
+ accessToken: ''
+ i18n: ''
+ logretentiondays: 30
+ triggerpool:
+ fast:
+ max: 200
+ slow:
+ max: 100
+
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/i18n/message.properties b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message.properties
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/i18n/message.properties
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message.properties
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message_en.properties b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message_en.properties
new file mode 100644
index 0000000..813761b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/i18n/message_en.properties
@@ -0,0 +1,262 @@
+admin_name=Scheduling Center
+admin_name_full=Distributed Task Scheduling Platform XXL-JOB
+admin_version=2.1.2
+admin_i18n=en
+
+## system
+system_tips=System message
+system_ok=Confirm
+system_close=Close
+system_save=Save
+system_cancel=Cancel
+system_search=Search
+system_status=Status
+system_opt=Operate
+system_please_input=please input
+system_please_choose=please choose
+system_success=success
+system_fail=fail
+system_add_suc=add success
+system_add_fail=add fail
+system_update_suc=update success
+system_update_fail=update fail
+system_all=All
+system_api_error=net error
+system_show=Show
+system_empty=Empty
+system_opt_suc=operate success
+system_opt_fail=operate fail
+system_opt_edit=Edit
+system_opt_del=Delete
+system_unvalid=illegal
+system_not_found=not exist
+system_nav=Navigation
+system_digits=digits
+system_lengh_limit=Length limit
+system_permission_limit=Permission limit
+system_welcome=Welcome
+
+## daterangepicker
+daterangepicker_ranges_recent_hour=recent one hour
+daterangepicker_ranges_today=today
+daterangepicker_ranges_yesterday=yesterday
+daterangepicker_ranges_this_month=this month
+daterangepicker_ranges_last_month=last month
+daterangepicker_ranges_recent_week=recent one week
+daterangepicker_ranges_recent_month=recent one month
+daterangepicker_custom_name=custom
+daterangepicker_custom_starttime=start time
+daterangepicker_custom_endtime=end time
+daterangepicker_custom_daysofweek=Sun,Mon,Tue,Wed,Thu,Fri,Sat
+daterangepicker_custom_monthnames=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
+
+## dataTable
+dataTable_sProcessing=processing...
+dataTable_sLengthMenu= _MENU_ records per page
+dataTable_sZeroRecords=No matching results
+dataTable_sInfo=page _PAGE_ ( Total _PAGES_ pages锛宊TOTAL_ records )
+dataTable_sInfoEmpty=No Record
+dataTable_sInfoFiltered=(Filtered by _MAX_ results)
+dataTable_sSearch=Search
+dataTable_sEmptyTable=Table data is empty
+dataTable_sLoadingRecords=Loading...
+dataTable_sFirst=FIRST PAGE
+dataTable_sPrevious=Previous Page
+dataTable_sNext=Next Page
+dataTable_sLast=LAST PAGE
+dataTable_sSortAscending=: Rank this column in ascending order
+dataTable_sSortDescending=: Rank this column in descending order
+
+## login
+login_btn=Login
+login_remember_me=Remember Me
+login_username_placeholder=Please enter username
+login_password_placeholder=Please enter password
+login_username_empty=Please enter username
+login_username_lt_4=Username length should not be less than 4
+login_password_empty=Please enter password
+login_password_lt_4=Password length should not be less than 4
+login_success=Login success
+login_fail=Login fail
+login_param_empty=Username or password is empty
+login_param_unvalid=Username or password error
+
+## logout
+logout_btn=Logout
+logout_confirm=Confirm logout?
+logout_success=Logout success
+logout_fail=Logout fail
+
+## change pwd
+change_pwd=Change password
+change_pwd_suc_to_logout=Change password successful, about to log out login
+change_pwd_field_newpwd=new password
+
+## dashboard
+job_dashboard_name=Run report
+job_dashboard_job_num=Job number
+job_dashboard_job_num_tip=The number of tasks running in the scheduling center
+job_dashboard_trigger_num=trigger number
+job_dashboard_trigger_num_tip=The number of trigger record scheduled by the scheduling center
+job_dashboard_jobgroup_num=Executor number
+job_dashboard_jobgroup_num_tip=The number of online executor machines perceived by the scheduling center
+job_dashboard_report=Scheduling report
+job_dashboard_report_loaddata_fail=Scheduling report load data error
+job_dashboard_date_report=Date distribution
+job_dashboard_rate_report=Percentage distribution
+
+## job info
+jobinfo_name=Job Manage
+jobinfo_job=Job
+jobinfo_field_add=Add Job
+jobinfo_field_update=Edit Job
+jobinfo_field_id=Job ID
+jobinfo_field_jobgroup=Executor
+jobinfo_field_jobdesc=Job description
+jobinfo_field_timeout=Job timeout period
+jobinfo_field_gluetype=GLUE Type
+jobinfo_field_executorparam=Param
+jobinfo_field_cron_unvalid=The Cron is illegal
+jobinfo_field_cron_never_fire=The Cron will never fire
+jobinfo_field_author=Author
+jobinfo_field_alarmemail=Alarm email
+jobinfo_field_alarmemail_placeholder=Please enter alarm mail, if there are more than one comma separated
+jobinfo_field_executorRouteStrategy=Route Strategy
+jobinfo_field_childJobId=Child Job ID
+jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
+jobinfo_field_executorBlockStrategy=Block Strategy
+jobinfo_field_executorFailRetryCount=Fail Retry Count
+jobinfo_field_executorFailRetryCount_placeholder=Fail Retry Count. effect if greater than zero
+jobinfo_script_location=Script location
+jobinfo_shard_index=Shard index
+jobinfo_shard_total=Shard total
+jobinfo_opt_stop=Stop
+jobinfo_opt_start=Start
+jobinfo_opt_log=Query Log
+jobinfo_opt_run=Run Once
+jobinfo_opt_registryinfo=Registry Info
+jobinfo_opt_next_time=Next trigger time
+jobinfo_glue_remark=Resource Remark
+jobinfo_glue_remark_limit=Resource Remark length is limited to 4~100
+jobinfo_glue_rollback=Version Backtrack
+jobinfo_glue_jobid_unvalid=Job ID is illegal
+jobinfo_glue_gluetype_unvalid=The job is not GLUE Type
+jobinfo_field_executorTimeout_placeholder=Job Timeout period锛宨n seconds. effect if greater than zero
+
+## job log
+joblog_name=Trigger Log
+joblog_status=Status
+joblog_status_all=All
+joblog_status_suc=Success
+joblog_status_fail=Fail
+joblog_status_running=Running
+joblog_field_triggerTime=Trigger Time
+joblog_field_triggerCode=Trigger Result
+joblog_field_triggerMsg=Trigger Msg
+joblog_field_handleTime=Handle Time
+joblog_field_handleCode=Handle Result
+joblog_field_handleMsg=Trigger Msg
+joblog_field_executorAddress=Executor Address
+joblog_clean=Clean
+joblog_clean_log=Clean Log
+joblog_clean_type=Clean Type
+joblog_clean_type_1=Clean up log data a month ago
+joblog_clean_type_2=Clean up log data three month ago
+joblog_clean_type_3=Clean up log data six month ago
+joblog_clean_type_4=Clean up log data a year ago
+joblog_clean_type_5=Clean up log data a thousand record ago
+joblog_clean_type_6=Clean up log data ten thousand record ago
+joblog_clean_type_7=Clean up log data thirty thousand record ago
+joblog_clean_type_8=Clean up log data hundred thousand record ago
+joblog_clean_type_9=Clean up all log data
+joblog_clean_type_unvalid=Clean type is illegal
+joblog_handleCode_200=Success
+joblog_handleCode_500=Fail
+joblog_handleCode_502=Timeout
+joblog_kill_log=Kill Job
+joblog_kill_log_limit=Trigger Fail, can not kill job
+joblog_kill_log_byman=Manual operation to active kill job
+joblog_rolling_log=Rolling log
+joblog_rolling_log_refresh=Refresh
+joblog_rolling_log_triggerfail=The job trigger fail, can not view the rolling log
+joblog_rolling_log_failoften=The request for the Rolling log is terminated, the number of failed requests exceeds the limit, Reload the log on the refresh page
+joblog_logid_unvalid=Log ID is illegal
+
+## job group
+jobgroup_name=Executor Manage
+jobgroup_list=Executor List
+jobgroup_add=Add Executor
+jobgroup_edit=Edit Executor
+jobgroup_del=Delete Executor
+jobgroup_field_order=Order
+jobgroup_field_title=Title
+jobgroup_field_addressType=Registry Type
+jobgroup_field_addressType_0=Automatic registration
+jobgroup_field_addressType_1=Manual registration
+jobgroup_field_addressType_limit=Manually registration type, the machine address must not be empty
+jobgroup_field_registryList=machine address
+jobgroup_field_registryList_unvalid=registry machine address is illegal
+jobgroup_field_registryList_placeholder=Please enter the machine address, if there are more than one comma separated
+jobgroup_field_appName_limit=Limit the beginning of a lowercase letter, consists of lowercase letters銆乶umber and hyphen.
+jobgroup_field_appName_length=AppName length is limited to 4~64
+jobgroup_field_title_length=Title length is limited to 4~12
+jobgroup_field_order_digits=Please enter a positive integer
+jobgroup_field_orderrange=Order is limited to 1~1000
+jobgroup_del_limit_0=Refuse to delete, the executor is being used
+jobgroup_del_limit_1=Refuses to delete, the system retains at least one executor
+jobgroup_empty=There is no valid executor. Please contact the administrator
+
+## job conf
+jobconf_block_SERIAL_EXECUTION=Serial execution
+jobconf_block_DISCARD_LATER=Discard Later
+jobconf_block_COVER_EARLY=Cover Early
+jobconf_route_first=First
+jobconf_route_last=Last
+jobconf_route_round=Round
+jobconf_route_random=Random
+jobconf_route_consistenthash=Consistent Hash
+jobconf_route_lfu=Least Frequently Used
+jobconf_route_lru=Least Recently Used
+jobconf_route_failover=Failover
+jobconf_route_busyover=Busyover
+jobconf_route_shard=Sharding Broadcast
+jobconf_idleBeat=Idle check
+jobconf_beat=Heartbeats
+jobconf_monitor=Task Scheduling Center monitor alarm
+jobconf_monitor_detail=monitor alarm details
+jobconf_monitor_alarm_title=Alarm Type
+jobconf_monitor_alarm_type=Trigger Fail
+jobconf_monitor_alarm_content=Alarm Content
+jobconf_trigger_admin_adress=Trigger machine address
+jobconf_trigger_exe_regtype=Execotor-Registry Type
+jobconf_trigger_exe_regaddress=Execotor-Registry Address
+jobconf_trigger_address_empty=Trigger Fail锛歳egistry address is empty
+jobconf_trigger_run=Trigger Job
+jobconf_trigger_child_run=Trigger child job
+jobconf_callback_child_msg1={0}/{1} [Job ID={2}], Trigger {3}, Trigger msg: {4} <br>
+jobconf_callback_child_msg2={0}/{1} [Job ID={2}], Trigger Fail, Trigger msg: Job ID is illegal <br>
+jobconf_trigger_type=Job trigger type
+jobconf_trigger_type_cron=Cron trigger
+jobconf_trigger_type_manual=Manual trigger
+jobconf_trigger_type_parent=Parent job trigger
+jobconf_trigger_type_api=Api trigger
+jobconf_trigger_type_retry=Fail retry trigger
+
+## user
+user_manage=User Manage
+user_username=Username
+user_password=Password
+user_role=Role
+user_role_admin=Admin User
+user_role_normal=Normal User
+user_permission=Permission
+user_add=Add User
+user_update=Edit User
+user_username_repeat=Username Repeat
+user_username_valid=Restrictions start with a lowercase letter and consist of lowercase letters and Numbers
+user_password_update_placeholder=Please input password, empty means not update
+user_update_loginuser_limit=Operation of current login account is not allowed
+
+## help
+job_help=Tutorial
+job_help_document=Official Document
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/logback.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/logback.xml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/logback.xml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/logback.xml
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
new file mode 100644
index 0000000..3164216
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobGroupDao">
+
+ <resultMap id="XxlJobGroup" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup" >
+ <result column="id" property="id" />
+ <result column="app_name" property="appName" />
+ <result column="title" property="title" />
+ <result column="order" property="order" />
+ <result column="address_type" property="addressType" />
+ <result column="address_list" property="addressList" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.app_name,
+ t.title,
+ t.`order`,
+ t.address_type,
+ t.address_list
+ </sql>
+
+ <select id="findAll" resultMap="XxlJobGroup">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_group AS t
+ ORDER BY t.order ASC
+ </select>
+
+ <select id="findByAddressType" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_group AS t
+ WHERE t.address_type = #{addressType}
+ ORDER BY t.order ASC
+ </select>
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_group ( `app_name`, `title`, `order`, `address_type`, `address_list`)
+ values ( #{appName}, #{title}, #{order}, #{addressType}, #{addressList});
+ </insert>
+
+ <update id="update" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobGroup" >
+ UPDATE xxl_job_group
+ SET `app_name` = #{appName},
+ `title` = #{title},
+ `order` = #{order},
+ `address_type` = #{addressType},
+ `address_list` = #{addressList}
+ WHERE id = #{id}
+ </update>
+
+ <delete id="remove" parameterType="java.lang.Integer" >
+ DELETE FROM xxl_job_group
+ WHERE id = #{id}
+ </delete>
+
+ <select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_group AS t
+ WHERE t.id = #{id}
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
new file mode 100644
index 0000000..d2f5675
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobInfoDao">
+
+ <resultMap id="XxlJobInfo" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo" >
+ <result column="id" property="id" />
+
+ <result column="job_group" property="jobGroup" />
+ <result column="job_cron" property="jobCron" />
+ <result column="job_desc" property="jobDesc" />
+
+ <result column="add_time" property="addTime" />
+ <result column="update_time" property="updateTime" />
+
+ <result column="author" property="author" />
+ <result column="alarm_email" property="alarmEmail" />
+
+ <result column="executor_route_strategy" property="executorRouteStrategy" />
+ <result column="executor_handler" property="executorHandler" />
+ <result column="executor_param" property="executorParam" />
+ <result column="executor_block_strategy" property="executorBlockStrategy" />
+ <result column="executor_timeout" property="executorTimeout" />
+ <result column="executor_fail_retry_count" property="executorFailRetryCount" />
+
+ <result column="glue_type" property="glueType" />
+ <result column="glue_source" property="glueSource" />
+ <result column="glue_remark" property="glueRemark" />
+ <result column="glue_updatetime" property="glueUpdatetime" />
+
+ <result column="child_jobid" property="childJobId" />
+
+ <result column="trigger_status" property="triggerStatus" />
+ <result column="trigger_last_time" property="triggerLastTime" />
+ <result column="trigger_next_time" property="triggerNextTime" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.job_group,
+ t.job_cron,
+ t.job_desc,
+ t.add_time,
+ t.update_time,
+ t.author,
+ t.alarm_email,
+ t.executor_route_strategy,
+ t.executor_handler,
+ t.executor_param,
+ t.executor_block_strategy,
+ t.executor_timeout,
+ t.executor_fail_retry_count,
+ t.glue_type,
+ t.glue_source,
+ t.glue_remark,
+ t.glue_updatetime,
+ t.child_jobid,
+ t.trigger_status,
+ t.trigger_last_time,
+ t.trigger_next_time
+ </sql>
+
+ <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_info AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobGroup gt 0">
+ AND t.job_group = #{jobGroup}
+ </if>
+ <if test="triggerStatus gte 0">
+ AND t.trigger_status = #{triggerStatus}
+ </if>
+ <if test="jobDesc != null and jobDesc != ''">
+ AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
+ </if>
+ <if test="executorHandler != null and executorHandler != ''">
+ AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
+ </if>
+ <if test="author != null and author != ''">
+ AND t.author like CONCAT(CONCAT('%', #{author}), '%')
+ </if>
+ </trim>
+ ORDER BY id DESC
+ LIMIT #{offset}, #{pagesize}
+ </select>
+
+ <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
+ SELECT count(1)
+ FROM xxl_job_info AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobGroup gt 0">
+ AND t.job_group = #{jobGroup}
+ </if>
+ <if test="triggerStatus gte 0">
+ AND t.trigger_status = #{triggerStatus}
+ </if>
+ <if test="jobDesc != null and jobDesc != ''">
+ AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
+ </if>
+ <if test="executorHandler != null and executorHandler != ''">
+ AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
+ </if>
+ <if test="author != null and author != ''">
+ AND t.author like CONCAT(CONCAT('%', #{author}), '%')
+ </if>
+ </trim>
+ </select>
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_info (
+ job_group,
+ job_cron,
+ job_desc,
+ add_time,
+ update_time,
+ author,
+ alarm_email,
+ executor_route_strategy,
+ executor_handler,
+ executor_param,
+ executor_block_strategy,
+ executor_timeout,
+ executor_fail_retry_count,
+ glue_type,
+ glue_source,
+ glue_remark,
+ glue_updatetime,
+ child_jobid,
+ trigger_status,
+ trigger_last_time,
+ trigger_next_time
+ ) VALUES (
+ #{jobGroup},
+ #{jobCron},
+ #{jobDesc},
+ #{addTime},
+ #{updateTime},
+ #{author},
+ #{alarmEmail},
+ #{executorRouteStrategy},
+ #{executorHandler},
+ #{executorParam},
+ #{executorBlockStrategy},
+ #{executorTimeout},
+ #{executorFailRetryCount},
+ #{glueType},
+ #{glueSource},
+ #{glueRemark},
+ #{glueUpdatetime},
+ #{childJobId},
+ #{triggerStatus},
+ #{triggerLastTime},
+ #{triggerNextTime}
+ );
+ <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
+ SELECT LAST_INSERT_ID()
+ /*SELECT @@IDENTITY AS id*/
+ </selectKey>-->
+ </insert>
+
+ <select id="loadById" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_info AS t
+ WHERE t.id = #{id}
+ </select>
+
+ <update id="update" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo" >
+ UPDATE xxl_job_info
+ SET
+ job_group = #{jobGroup},
+ job_cron = #{jobCron},
+ job_desc = #{jobDesc},
+ update_time = #{updateTime},
+ author = #{author},
+ alarm_email = #{alarmEmail},
+ executor_route_strategy = #{executorRouteStrategy},
+ executor_handler = #{executorHandler},
+ executor_param = #{executorParam},
+ executor_block_strategy = #{executorBlockStrategy},
+ executor_timeout = ${executorTimeout},
+ executor_fail_retry_count = ${executorFailRetryCount},
+ glue_type = #{glueType},
+ glue_source = #{glueSource},
+ glue_remark = #{glueRemark},
+ glue_updatetime = #{glueUpdatetime},
+ child_jobid = #{childJobId},
+ trigger_status = #{triggerStatus},
+ trigger_last_time = #{triggerLastTime},
+ trigger_next_time = #{triggerNextTime}
+ WHERE id = #{id}
+ </update>
+
+ <delete id="delete" parameterType="java.util.HashMap">
+ DELETE
+ FROM xxl_job_info
+ WHERE id = #{id}
+ </delete>
+
+ <select id="getJobsByGroup" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_info AS t
+ WHERE t.job_group = #{jobGroup}
+ </select>
+
+ <select id="findAllCount" resultType="int">
+ SELECT count(1)
+ FROM xxl_job_info
+ </select>
+
+
+ <select id="scheduleJobQuery" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_info AS t
+ WHERE t.trigger_status = 1
+ and t.trigger_next_time <![CDATA[ <= ]]> #{maxNextTime}
+ ORDER BY id ASC
+ LIMIT #{pagesize}
+ </select>
+
+ <update id="scheduleUpdate" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobInfo" >
+ UPDATE xxl_job_info
+ SET
+ trigger_last_time = #{triggerLastTime},
+ trigger_next_time = #{triggerNextTime},
+ trigger_status = #{triggerStatus}
+ WHERE id = #{id}
+ </update>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
new file mode 100644
index 0000000..303c67e
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobLogGlueDao">
+
+ <resultMap id="XxlJobLogGlue" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogGlue" >
+ <result column="id" property="id" />
+ <result column="job_id" property="jobId" />
+ <result column="glue_type" property="glueType" />
+ <result column="glue_source" property="glueSource" />
+ <result column="glue_remark" property="glueRemark" />
+ <result column="add_time" property="addTime" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.job_id,
+ t.glue_type,
+ t.glue_source,
+ t.glue_remark,
+ t.add_time,
+ t.update_time
+ </sql>
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_logglue (
+ `job_id`,
+ `glue_type`,
+ `glue_source`,
+ `glue_remark`,
+ `add_time`,
+ `update_time`
+ ) VALUES (
+ #{jobId},
+ #{glueType},
+ #{glueSource},
+ #{glueRemark},
+ #{addTime},
+ #{updateTime}
+ );
+ <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
+ SELECT LAST_INSERT_ID()
+ </selectKey>-->
+ </insert>
+
+ <select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_logglue AS t
+ WHERE t.job_id = #{jobId}
+ ORDER BY id DESC
+ </select>
+
+ <delete id="removeOld" >
+ DELETE FROM xxl_job_logglue
+ WHERE id NOT in(
+ SELECT id FROM(
+ SELECT id FROM xxl_job_logglue
+ WHERE `job_id` = #{jobId}
+ ORDER BY update_time desc
+ LIMIT 0, #{limit}
+ ) t1
+ ) AND `job_id` = #{jobId}
+ </delete>
+
+ <delete id="deleteByJobId" parameterType="java.lang.Integer" >
+ DELETE FROM xxl_job_logglue
+ WHERE `job_id` = #{jobId}
+ </delete>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
new file mode 100644
index 0000000..b7d7aa2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobLogDao">
+
+ <resultMap id="XxlJobLog" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog" >
+ <result column="id" property="id" />
+
+ <result column="job_group" property="jobGroup" />
+ <result column="job_id" property="jobId" />
+
+ <result column="executor_address" property="executorAddress" />
+ <result column="executor_handler" property="executorHandler" />
+ <result column="executor_param" property="executorParam" />
+ <result column="executor_sharding_param" property="executorShardingParam" />
+ <result column="executor_fail_retry_count" property="executorFailRetryCount" />
+
+ <result column="trigger_time" property="triggerTime" />
+ <result column="trigger_code" property="triggerCode" />
+ <result column="trigger_msg" property="triggerMsg" />
+
+ <result column="handle_time" property="handleTime" />
+ <result column="handle_code" property="handleCode" />
+ <result column="handle_msg" property="handleMsg" />
+
+ <result column="alarm_status" property="alarmStatus" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.job_group,
+ t.job_id,
+ t.executor_address,
+ t.executor_handler,
+ t.executor_param,
+ t.executor_sharding_param,
+ t.executor_fail_retry_count,
+ t.trigger_time,
+ t.trigger_code,
+ t.trigger_msg,
+ t.handle_time,
+ t.handle_code,
+ t.handle_msg,
+ t.alarm_status
+ </sql>
+
+ <select id="pageList" resultMap="XxlJobLog">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_log AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobId==0 and jobGroup gt 0">
+ AND t.job_group = #{jobGroup}
+ </if>
+ <if test="jobId gt 0">
+ AND t.job_id = #{jobId}
+ </if>
+ <if test="triggerTimeStart != null">
+ AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
+ </if>
+ <if test="triggerTimeEnd != null">
+ AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
+ </if>
+ <if test="logStatus == 1" >
+ AND t.handle_code = 200
+ </if>
+ <if test="logStatus == 2" >
+ AND (
+ t.trigger_code NOT IN (0, 200) OR
+ t.handle_code NOT IN (0, 200)
+ )
+ </if>
+ <if test="logStatus == 3" >
+ AND t.trigger_code = 200
+ AND t.handle_code = 0
+ </if>
+ </trim>
+ ORDER BY t.trigger_time DESC
+ LIMIT #{offset}, #{pagesize}
+ </select>
+
+ <select id="pageListCount" resultType="int">
+ SELECT count(1)
+ FROM xxl_job_log AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobId==0 and jobGroup gt 0">
+ AND t.job_group = #{jobGroup}
+ </if>
+ <if test="jobId gt 0">
+ AND t.job_id = #{jobId}
+ </if>
+ <if test="triggerTimeStart != null">
+ AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
+ </if>
+ <if test="triggerTimeEnd != null">
+ AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd}
+ </if>
+ <if test="logStatus == 1" >
+ AND t.handle_code = 200
+ </if>
+ <if test="logStatus == 2" >
+ AND (
+ t.trigger_code NOT IN (0, 200) OR
+ t.handle_code NOT IN (0, 200)
+ )
+ </if>
+ <if test="logStatus == 3" >
+ AND t.trigger_code = 200
+ AND t.handle_code = 0
+ </if>
+ </trim>
+ </select>
+
+ <select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_log AS t
+ WHERE t.id = #{id}
+ </select>
+
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_log (
+ `job_group`,
+ `job_id`,
+ `trigger_time`,
+ `trigger_code`,
+ `handle_code`
+ ) VALUES (
+ #{jobGroup},
+ #{jobId},
+ #{triggerTime},
+ #{triggerCode},
+ #{handleCode}
+ );
+ <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
+ SELECT LAST_INSERT_ID()
+ </selectKey>-->
+ </insert>
+
+ <update id="updateTriggerInfo" >
+ UPDATE xxl_job_log
+ SET
+ `trigger_time`= #{triggerTime},
+ `trigger_code`= #{triggerCode},
+ `trigger_msg`= #{triggerMsg},
+ `executor_address`= #{executorAddress},
+ `executor_handler`=#{executorHandler},
+ `executor_param`= #{executorParam},
+ `executor_sharding_param`= #{executorShardingParam},
+ `executor_fail_retry_count`= #{executorFailRetryCount}
+ WHERE `id`= #{id}
+ </update>
+
+ <update id="updateHandleInfo">
+ UPDATE xxl_job_log
+ SET
+ `handle_time`= #{handleTime},
+ `handle_code`= #{handleCode},
+ `handle_msg`= #{handleMsg}
+ WHERE `id`= #{id}
+ </update>
+
+ <delete id="delete" >
+ delete from xxl_job_log
+ WHERE job_id = #{jobId}
+ </delete>
+
+ <!--<select id="triggerCountByDay" resultType="java.util.Map" >
+ SELECT
+ DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay,
+ COUNT(handle_code) triggerDayCount,
+ SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
+ SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
+ FROM xxl_job_log
+ WHERE trigger_time BETWEEN #{from} and #{to}
+ GROUP BY triggerDay
+ ORDER BY triggerDay
+ </select>-->
+
+ <select id="findLogReport" resultType="java.util.Map" >
+ SELECT
+ COUNT(handle_code) triggerDayCount,
+ SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
+ SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
+ FROM xxl_job_log
+ WHERE trigger_time BETWEEN #{from} and #{to}
+ </select>
+
+ <select id="findClearLogIds" resultType="long" >
+ SELECT id FROM xxl_job_log
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobGroup gt 0">
+ AND job_group = #{jobGroup}
+ </if>
+ <if test="jobId gt 0">
+ AND job_id = #{jobId}
+ </if>
+ <if test="clearBeforeTime != null">
+ AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime}
+ </if>
+ <if test="clearBeforeNum gt 0">
+ AND id NOT in(
+ SELECT id FROM(
+ SELECT id FROM xxl_job_log AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="jobGroup gt 0">
+ AND t.job_group = #{jobGroup}
+ </if>
+ <if test="jobId gt 0">
+ AND t.job_id = #{jobId}
+ </if>
+ </trim>
+ ORDER BY t.trigger_time desc
+ LIMIT 0, #{clearBeforeNum}
+ ) t1
+ )
+ </if>
+ </trim>
+ order by id asc
+ LIMIT #{pagesize}
+ </select>
+
+ <delete id="clearLog" >
+ delete from xxl_job_log
+ WHERE id in
+ <foreach collection="logIds" item="item" open="(" close=")" separator="," >
+ #{item}
+ </foreach>
+ </delete>
+
+ <select id="findFailJobLogIds" resultType="long" >
+ SELECT id FROM `xxl_job_log`
+ WHERE !(
+ (trigger_code in (0, 200) and handle_code = 0)
+ OR
+ (handle_code = 200)
+ )
+ AND `alarm_status` = 0
+ ORDER BY id ASC
+ LIMIT #{pagesize}
+ </select>
+
+ <update id="updateAlarmStatus" >
+ UPDATE xxl_job_log
+ SET
+ `alarm_status` = #{newAlarmStatus}
+ WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus}
+ </update>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
new file mode 100644
index 0000000..4594ae7
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobLogReportDao">
+
+ <resultMap id="XxlJobLogReport" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogReport" >
+ <result column="id" property="id" />
+ <result column="trigger_day" property="triggerDay" />
+ <result column="running_count" property="runningCount" />
+ <result column="suc_count" property="sucCount" />
+ <result column="fail_count" property="failCount" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.trigger_day,
+ t.running_count,
+ t.suc_count,
+ t.fail_count
+ </sql>
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_log_report (
+ `trigger_day`,
+ `running_count`,
+ `suc_count`,
+ `fail_count`
+ ) VALUES (
+ #{triggerDay},
+ #{runningCount},
+ #{sucCount},
+ #{failCount}
+ );
+ <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
+ SELECT LAST_INSERT_ID()
+ </selectKey>-->
+ </insert>
+
+ <update id="update" >
+ UPDATE xxl_job_log_report
+ SET `running_count` = #{runningCount},
+ `suc_count` = #{sucCount},
+ `fail_count` = #{failCount}
+ WHERE `trigger_day` = #{triggerDay}
+ </update>
+
+ <select id="queryLogReport" resultMap="XxlJobLogReport">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_log_report AS t
+ WHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}
+ ORDER BY t.trigger_day ASC
+ </select>
+
+ <select id="queryLogReportTotal" resultMap="XxlJobLogReport">
+ SELECT
+ SUM(running_count) running_count,
+ SUM(suc_count) suc_count,
+ SUM(fail_count) fail_count
+ FROM xxl_job_log_report AS t
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
new file mode 100644
index 0000000..446b208
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobRegistryDao">
+
+ <resultMap id="XxlJobRegistry" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobRegistry" >
+ <result column="id" property="id" />
+ <result column="registry_group" property="registryGroup" />
+ <result column="registry_key" property="registryKey" />
+ <result column="registry_value" property="registryValue" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.registry_group,
+ t.registry_key,
+ t.registry_value,
+ t.update_time
+ </sql>
+
+ <select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
+ SELECT t.id
+ FROM xxl_job_registry AS t
+ WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
+ </select>
+
+ <delete id="removeDead" parameterType="java.lang.Integer" >
+ DELETE FROM xxl_job_registry
+ WHERE id in
+ <foreach collection="ids" item="item" open="(" close=")" separator="," >
+ #{item}
+ </foreach>
+ </delete>
+
+ <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_registry AS t
+ WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
+ </select>
+
+ <update id="registryUpdate" >
+ UPDATE xxl_job_registry
+ SET `update_time` = #{updateTime}
+ WHERE `registry_group` = #{registryGroup}
+ AND `registry_key` = #{registryKey}
+ AND `registry_value` = #{registryValue}
+ </update>
+
+ <insert id="registrySave" >
+ INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`)
+ VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime})
+ </insert>
+
+ <delete id="registryDelete" >
+ DELETE FROM xxl_job_registry
+ WHERE registry_group = #{registryGroup}
+ AND registry_key = #{registryKey}
+ AND registry_value = #{registryValue}
+ </delete>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
new file mode 100644
index 0000000..89e247a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.xxl.job.admin.dao.XxlJobUserDao">
+
+ <resultMap id="XxlJobUser" type="com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser" >
+ <result column="id" property="id" />
+ <result column="username" property="username" />
+ <result column="password" property="password" />
+ <result column="role" property="role" />
+ <result column="permission" property="permission" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ t.id,
+ t.username,
+ t.password,
+ t.role,
+ t.permission
+ </sql>
+
+ <select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobUser">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_user AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="username != null and username != ''">
+ AND t.username like CONCAT(CONCAT('%', #{username}), '%')
+ </if>
+ <if test="role gt -1">
+ AND t.role = #{role}
+ </if>
+ </trim>
+ ORDER BY username ASC
+ LIMIT #{offset}, #{pagesize}
+ </select>
+
+ <select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
+ SELECT count(1)
+ FROM xxl_job_user AS t
+ <trim prefix="WHERE" prefixOverrides="AND | OR" >
+ <if test="username != null and username != ''">
+ AND t.username like CONCAT(CONCAT('%', #{username}), '%')
+ </if>
+ <if test="role gt -1">
+ AND t.role = #{role}
+ </if>
+ </trim>
+ </select>
+
+ <select id="loadByUserName" parameterType="java.util.HashMap" resultMap="XxlJobUser">
+ SELECT <include refid="Base_Column_List" />
+ FROM xxl_job_user AS t
+ WHERE t.username = #{username}
+ </select>
+
+ <insert id="save" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser" useGeneratedKeys="true" keyProperty="id" >
+ INSERT INTO xxl_job_user (
+ username,
+ password,
+ role,
+ permission
+ ) VALUES (
+ #{username},
+ #{password},
+ #{role},
+ #{permission}
+ );
+ </insert>
+
+ <update id="update" parameterType="com.vci.ubcs.xxl.job.admin.core.model.XxlJobUser" >
+ UPDATE xxl_job_user
+ SET
+ <if test="password != null and password != ''">
+ password = #{password},
+ </if>
+ role = #{role},
+ permission = #{permission}
+ WHERE id = #{id}
+ </update>
+
+ <delete id="delete" parameterType="java.util.HashMap">
+ DELETE
+ FROM xxl_job_user
+ WHERE id = #{id}
+ </delete>
+
+</mapper>
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.css.map b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.css.map
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.css.map
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.css.map
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/favicon.ico b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/favicon.ico
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/favicon.ico
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/favicon.ico
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/common.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/common.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/common.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/common.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/index.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/index.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/index.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/index.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobcode.index.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobcode.index.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobcode.index.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobcode.index.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobgroup.index.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobgroup.index.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobgroup.index.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobgroup.index.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobinfo.index.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobinfo.index.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/jobinfo.index.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/jobinfo.index.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/joblog.detail.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.detail.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/joblog.detail.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.detail.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/joblog.index.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.index.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/joblog.index.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/joblog.index.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/login.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/login.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/login.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/login.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/user.index.1.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/user.index.1.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/js/user.index.1.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/js/user.index.1.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js
new file mode 100644
index 0000000..80e2f20
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js
@@ -0,0 +1,234 @@
+// CodeMirror, copyright (c) by Marijn Haverbeke and others
+// Distributed under an MIT license: https://codemirror.net/LICENSE
+
+(function(mod) {
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
+ mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike"));
+ else if (typeof define == "function" && define.amd) // AMD
+ define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod);
+ else // Plain browser env
+ mod(CodeMirror);
+})(function(CodeMirror) {
+ "use strict";
+
+ function keywords(str) {
+ var obj = {}, words = str.split(" ");
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
+ return obj;
+ }
+
+ // Helper for phpString
+ function matchSequence(list, end, escapes) {
+ if (list.length == 0) return phpString(end);
+ return function (stream, state) {
+ var patterns = list[0];
+ for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {
+ state.tokenize = matchSequence(list.slice(1), end);
+ return patterns[i][1];
+ }
+ state.tokenize = phpString(end, escapes);
+ return "string";
+ };
+ }
+ function phpString(closing, escapes) {
+ return function(stream, state) { return phpString_(stream, state, closing, escapes); };
+ }
+ function phpString_(stream, state, closing, escapes) {
+ // "Complex" syntax
+ if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) {
+ state.tokenize = null;
+ return "string";
+ }
+
+ // Simple syntax
+ if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) {
+ // After the variable name there may appear array or object operator.
+ if (stream.match("[", false)) {
+ // Match array operator
+ state.tokenize = matchSequence([
+ [["[", null]],
+ [[/\d[\w\.]*/, "number"],
+ [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"],
+ [/[\w\$]+/, "variable"]],
+ [["]", null]]
+ ], closing, escapes);
+ }
+ if (stream.match(/\-\>\w/, false)) {
+ // Match object operator
+ state.tokenize = matchSequence([
+ [["->", null]],
+ [[/[\w]+/, "variable"]]
+ ], closing, escapes);
+ }
+ return "variable-2";
+ }
+
+ var escaped = false;
+ // Normal string
+ while (!stream.eol() &&
+ (escaped || escapes === false ||
+ (!stream.match("{$", false) &&
+ !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) {
+ if (!escaped && stream.match(closing)) {
+ state.tokenize = null;
+ state.tokStack.pop(); state.tokStack.pop();
+ break;
+ }
+ escaped = stream.next() == "\\" && !escaped;
+ }
+ return "string";
+ }
+
+ var phpKeywords = "abstract and array as break case catch class clone const continue declare default " +
+ "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " +
+ "for foreach function global goto if implements interface instanceof namespace " +
+ "new or private protected public static switch throw trait try use var while xor " +
+ "die echo empty exit eval include include_once isset list require require_once return " +
+ "print unset __halt_compiler self static parent yield insteadof finally";
+ var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";
+ var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";
+ CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" "));
+ CodeMirror.registerHelper("wordChars", "php", /[\w$]/);
+
+ var phpConfig = {
+ name: "clike",
+ helperType: "php",
+ keywords: keywords(phpKeywords),
+ blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"),
+ defKeywords: keywords("class function interface namespace trait"),
+ atoms: keywords(phpAtoms),
+ builtin: keywords(phpBuiltin),
+ multiLineStrings: true,
+ hooks: {
+ "$": function(stream) {
+ stream.eatWhile(/[\w\$_]/);
+ return "variable-2";
+ },
+ "<": function(stream, state) {
+ var before;
+ if (before = stream.match(/<<\s*/)) {
+ var quoted = stream.eat(/['"]/);
+ stream.eatWhile(/[\w\.]/);
+ var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1));
+ if (quoted) stream.eat(quoted);
+ if (delim) {
+ (state.tokStack || (state.tokStack = [])).push(delim, 0);
+ state.tokenize = phpString(delim, quoted != "'");
+ return "string";
+ }
+ }
+ return false;
+ },
+ "#": function(stream) {
+ while (!stream.eol() && !stream.match("?>", false)) stream.next();
+ return "comment";
+ },
+ "/": function(stream) {
+ if (stream.eat("/")) {
+ while (!stream.eol() && !stream.match("?>", false)) stream.next();
+ return "comment";
+ }
+ return false;
+ },
+ '"': function(_stream, state) {
+ (state.tokStack || (state.tokStack = [])).push('"', 0);
+ state.tokenize = phpString('"');
+ return "string";
+ },
+ "{": function(_stream, state) {
+ if (state.tokStack && state.tokStack.length)
+ state.tokStack[state.tokStack.length - 1]++;
+ return false;
+ },
+ "}": function(_stream, state) {
+ if (state.tokStack && state.tokStack.length > 0 &&
+ !--state.tokStack[state.tokStack.length - 1]) {
+ state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]);
+ }
+ return false;
+ }
+ }
+ };
+
+ CodeMirror.defineMode("php", function(config, parserConfig) {
+ var htmlMode = CodeMirror.getMode(config, (parserConfig && parserConfig.htmlMode) || "text/html");
+ var phpMode = CodeMirror.getMode(config, phpConfig);
+
+ function dispatch(stream, state) {
+ var isPHP = state.curMode == phpMode;
+ if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null;
+ if (!isPHP) {
+ if (stream.match(/^<\?\w*/)) {
+ state.curMode = phpMode;
+ if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, ""))
+ state.curState = state.php;
+ return "meta";
+ }
+ if (state.pending == '"' || state.pending == "'") {
+ while (!stream.eol() && stream.next() != state.pending) {}
+ var style = "string";
+ } else if (state.pending && stream.pos < state.pending.end) {
+ stream.pos = state.pending.end;
+ var style = state.pending.style;
+ } else {
+ var style = htmlMode.token(stream, state.curState);
+ }
+ if (state.pending) state.pending = null;
+ var cur = stream.current(), openPHP = cur.search(/<\?/), m;
+ if (openPHP != -1) {
+ if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0];
+ else state.pending = {end: stream.pos, style: style};
+ stream.backUp(cur.length - openPHP);
+ }
+ return style;
+ } else if (isPHP && state.php.tokenize == null && stream.match("?>")) {
+ state.curMode = htmlMode;
+ state.curState = state.html;
+ if (!state.php.context.prev) state.php = null;
+ return "meta";
+ } else {
+ return phpMode.token(stream, state.curState);
+ }
+ }
+
+ return {
+ startState: function() {
+ var html = CodeMirror.startState(htmlMode)
+ var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null
+ return {html: html,
+ php: php,
+ curMode: parserConfig.startOpen ? phpMode : htmlMode,
+ curState: parserConfig.startOpen ? php : html,
+ pending: null};
+ },
+
+ copyState: function(state) {
+ var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),
+ php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur;
+ if (state.curMode == htmlMode) cur = htmlNew;
+ else cur = phpNew;
+ return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,
+ pending: state.pending};
+ },
+
+ token: dispatch,
+
+ indent: function(state, textAfter) {
+ if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) ||
+ (state.curMode == phpMode && /^\?>/.test(textAfter)))
+ return htmlMode.indent(state.html, textAfter);
+ return state.curMode.indent(state.curState, textAfter);
+ },
+
+ blockCommentStart: "/*",
+ blockCommentEnd: "*/",
+ lineComment: "//",
+
+ innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }
+ };
+ }, "htmlmixed", "clike");
+
+ CodeMirror.defineMIME("application/x-httpd-php", "php");
+ CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true});
+ CodeMirror.defineMIME("text/x-php", phpConfig);
+});
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/layer.js b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/layer.js
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/layer.js
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/layer.js
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon.png b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon.png
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon.png
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/icon.png
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/layer.css b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/layer.css
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/layer.css
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/layer.css
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/common/common.exception.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.exception.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/common/common.exception.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.exception.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/common/common.macro.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.macro.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/common/common.macro.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/common/common.macro.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/help.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/help.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/help.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/help.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobcode/jobcode.index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobcode/jobcode.index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobcode/jobcode.index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobcode/jobcode.index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/joblog/joblog.detail.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.detail.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/joblog/joblog.detail.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.detail.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/joblog/joblog.index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/joblog/joblog.index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/joblog/joblog.index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/login.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/login.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/login.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/login.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/user/user.index.ftl b/Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/user/user.index.ftl
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob-admin/src/main/resources/templates/user/user.index.ftl
rename to Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/resources/templates/user/user.index.ftl
diff --git a/Source/BladeX/blade-ops/blade-xxljob/Dockerfile b/Source/UBCS/ubcs-ops/ubcs-xxljob/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob/Dockerfile
rename to Source/UBCS/ubcs-ops/ubcs-xxljob/Dockerfile
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob/pom.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob/pom.xml
new file mode 100644
index 0000000..0b220a9
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-ops</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>blade-xxljob</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </dependency>
+ <!--Job-->
+ <dependency>
+ <groupId>com.xuxueli</groupId>
+ <artifactId>xxl-job-core</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.java b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.java
new file mode 100644
index 0000000..b793a5a
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.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 com.vci.ubcs.job.executor;
+
+import com.vci.ubcs.common.constant.LauncherConstant;
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+
+/**
+ * Job鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class JobApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(LauncherConstant.APPLICATION_XXLJOB_NAME, JobApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/config/XxlJobConfig.java b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/config/XxlJobConfig.java
new file mode 100644
index 0000000..1230f2f
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/config/XxlJobConfig.java
@@ -0,0 +1,74 @@
+package com.vci.ubcs.job.executor.config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * xxl-job config
+ *
+ * @author xuxueli 2017-04-28
+ */
+@Configuration(proxyBeanMethods = false)
+public class XxlJobConfig {
+ private final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appName;
+
+ @Value("${xxl.job.executor.ip}")
+ private String ip;
+
+ @Value("${xxl.job.executor.port}")
+ private int port;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private int logRetentionDays;
+
+
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ logger.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppName(appName);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+ }
+
+ /**
+ * 閽堝澶氱綉鍗°�佸鍣ㄥ唴閮ㄧ讲绛夋儏鍐碉紝鍙�熷姪 "spring-cloud-commons" 鎻愪緵鐨� "InetUtils" 缁勪欢鐏垫椿瀹氬埗娉ㄥ唽IP锛�
+ *
+ * 1銆佸紩鍏ヤ緷璧栵細
+ * <dependency>
+ * <groupId>org.springframework.cloud</groupId>
+ * <artifactId>spring-cloud-commons</artifactId>
+ * <version>${version}</version>
+ * </dependency>
+ *
+ * 2銆侀厤缃枃浠讹紝鎴栬�呭鍣ㄥ惎鍔ㄥ彉閲�
+ * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
+ *
+ * 3銆佽幏鍙朓P
+ * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+ */
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/controller/TestController.java b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/controller/TestController.java
new file mode 100644
index 0000000..52362fb
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/controller/TestController.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.job.executor.controller;
+
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 娴嬭瘯瀹氭椂璇锋眰
+ *
+ * @author job
+ */
+@RestController
+@RequestMapping("/test")
+public class TestController {
+
+ @GetMapping("testRequest")
+ public R testRequest(String name) {
+ return R.data("鎴戞槸娴嬭瘯璇锋眰" + name);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/jobhandler/SampleXxlJob.java b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/jobhandler/SampleXxlJob.java
new file mode 100644
index 0000000..ac95ad2
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/jobhandler/SampleXxlJob.java
@@ -0,0 +1,195 @@
+package com.vci.ubcs.job.executor.jobhandler;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.IJobHandler;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import com.xxl.job.core.util.ShardingUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * XxlJob寮�鍙戠ず渚嬶紙Bean妯″紡锛�
+ * <p>
+ * 寮�鍙戞楠わ細
+ * 1銆佸湪Spring Bean瀹炰緥涓紝寮�鍙慗ob鏂规硶锛屾柟寮忔牸寮忚姹備负 "public ReturnT<String> execute(String param)"
+ * 2銆佷负Job鏂规硶娣诲姞娉ㄨВ "@XxlJob(value="鑷畾涔塲obhandler鍚嶇О", init = "JobHandler鍒濆鍖栨柟娉�", destroy = "JobHandler閿�姣佹柟娉�")"锛屾敞瑙alue鍊煎搴旂殑鏄皟搴︿腑蹇冩柊寤轰换鍔$殑JobHandler灞炴�х殑鍊笺��
+ * 3銆佹墽琛屾棩蹇楋細闇�瑕侀�氳繃 "XxlJobLogger.log" 鎵撳嵃鎵ц鏃ュ織锛�
+ *
+ * @author xuxueli
+ */
+@Component
+public class SampleXxlJob {
+ private static final Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
+
+
+ /**
+ * 1銆佺畝鍗曚换鍔$ず渚嬶紙Bean妯″紡锛�
+ */
+ @XxlJob("demoJobHandler")
+ public ReturnT<String> demoJobHandler(String param) throws Exception {
+ XxlJobLogger.log("XXL-JOB, Hello World.");
+
+ for (int i = 0; i < 5; i++) {
+ XxlJobLogger.log("beat at:" + i);
+ TimeUnit.SECONDS.sleep(2);
+ }
+ return ReturnT.SUCCESS;
+ }
+
+
+ /**
+ * 2銆佸垎鐗囧箍鎾换鍔�
+ */
+ @XxlJob("shardingJobHandler")
+ public ReturnT<String> shardingJobHandler(String param) throws Exception {
+
+ // 鍒嗙墖鍙傛暟
+ ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
+ XxlJobLogger.log("鍒嗙墖鍙傛暟锛氬綋鍓嶅垎鐗囧簭鍙� = {}, 鎬诲垎鐗囨暟 = {}", shardingVO.getIndex(), shardingVO.getTotal());
+
+ // 涓氬姟閫昏緫
+ for (int i = 0; i < shardingVO.getTotal(); i++) {
+ if (i == shardingVO.getIndex()) {
+ XxlJobLogger.log("绗� {} 鐗�, 鍛戒腑鍒嗙墖寮�濮嬪鐞�", i);
+ } else {
+ XxlJobLogger.log("绗� {} 鐗�, 蹇界暐", i);
+ }
+ }
+
+ return ReturnT.SUCCESS;
+ }
+
+
+ /**
+ * 3銆佸懡浠よ浠诲姟
+ */
+ @XxlJob("commandJobHandler")
+ public ReturnT<String> commandJobHandler(String param) throws Exception {
+ String command = param;
+ int exitValue = -1;
+
+ BufferedReader bufferedReader = null;
+ try {
+ // command process
+ Process process = Runtime.getRuntime().exec(command);
+ BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());
+ bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
+
+ // command log
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ XxlJobLogger.log(line);
+ }
+
+ // command exit
+ process.waitFor();
+ exitValue = process.exitValue();
+ } catch (Exception e) {
+ XxlJobLogger.log(e);
+ } finally {
+ if (bufferedReader != null) {
+ bufferedReader.close();
+ }
+ }
+
+ if (exitValue == 0) {
+ return IJobHandler.SUCCESS;
+ } else {
+ return new ReturnT<String>(IJobHandler.FAIL.getCode(), "command exit value(" + exitValue + ") is failed");
+ }
+ }
+
+
+ /**
+ * 4銆佽法骞冲彴Http浠诲姟
+ */
+ @XxlJob("httpJobHandler")
+ public ReturnT<String> httpJobHandler(String param) throws Exception {
+
+ // request
+ HttpURLConnection connection = null;
+ BufferedReader bufferedReader = null;
+ try {
+ // connection
+ URL realUrl = new URL(param);
+ connection = (HttpURLConnection) realUrl.openConnection();
+
+ // connection setting
+ connection.setRequestMethod("GET");
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ connection.setUseCaches(false);
+ connection.setReadTimeout(5 * 1000);
+ connection.setConnectTimeout(3 * 1000);
+ connection.setRequestProperty("connection", "Keep-Alive");
+ connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
+ connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");
+
+ // do connection
+ connection.connect();
+
+ //Map<String, List<String>> map = connection.getHeaderFields();
+
+ // valid StatusCode
+ int statusCode = connection.getResponseCode();
+ if (statusCode != 200) {
+ throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid.");
+ }
+
+ // result
+ bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
+ StringBuilder result = new StringBuilder();
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ result.append(line);
+ }
+ String responseMsg = result.toString();
+
+ XxlJobLogger.log(responseMsg);
+ return ReturnT.SUCCESS;
+ } catch (Exception e) {
+ XxlJobLogger.log(e);
+ return ReturnT.FAIL;
+ } finally {
+ try {
+ if (bufferedReader != null) {
+ bufferedReader.close();
+ }
+ if (connection != null) {
+ connection.disconnect();
+ }
+ } catch (Exception e2) {
+ XxlJobLogger.log(e2);
+ }
+ }
+
+ }
+
+ /**
+ * 5銆佺敓鍛藉懆鏈熶换鍔$ず渚嬶細浠诲姟鍒濆鍖栦笌閿�姣佹椂锛屾敮鎸佽嚜瀹氫箟鐩稿叧閫昏緫锛�
+ */
+ @XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy")
+ public ReturnT<String> demoJobHandler2(String param) throws Exception {
+ XxlJobLogger.log("XXL-JOB, Hello World.");
+ return ReturnT.SUCCESS;
+ }
+
+ public void init() {
+ logger.info("init");
+ }
+
+ public void destroy() {
+ logger.info("destory");
+ }
+
+
+}
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/resources/application.yml b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob/src/main/resources/application.yml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/application.yml
diff --git a/Source/BladeX/blade-ops/blade-xxljob/src/main/resources/logback.xml b/Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/logback.xml
similarity index 100%
rename from Source/BladeX/blade-ops/blade-xxljob/src/main/resources/logback.xml
rename to Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/resources/logback.xml
diff --git a/Source/BladeX/blade-plugin-api/README.md b/Source/UBCS/ubcs-plugin-api/README.md
similarity index 100%
rename from Source/BladeX/blade-plugin-api/README.md
rename to Source/UBCS/ubcs-plugin-api/README.md
diff --git a/Source/BladeX/blade-plugin-api/pom.xml b/Source/UBCS/ubcs-plugin-api/pom.xml
similarity index 100%
rename from Source/BladeX/blade-plugin-api/pom.xml
rename to Source/UBCS/ubcs-plugin-api/pom.xml
diff --git a/Source/BladeX/blade-plugin/README.md b/Source/UBCS/ubcs-plugin/README.md
similarity index 100%
rename from Source/BladeX/blade-plugin/README.md
rename to Source/UBCS/ubcs-plugin/README.md
diff --git a/Source/BladeX/blade-plugin/pom.xml b/Source/UBCS/ubcs-plugin/pom.xml
similarity index 100%
rename from Source/BladeX/blade-plugin/pom.xml
rename to Source/UBCS/ubcs-plugin/pom.xml
diff --git a/Source/UBCS/ubcs-service-api/pom.xml b/Source/UBCS/ubcs-service-api/pom.xml
new file mode 100644
index 0000000..19b39a1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>UBCS</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-service-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>3.0.1.RELEASE</version>
+ <packaging>pom</packaging>
+ <description>BladeX 寰湇鍔PI闆嗗悎</description>
+
+ <modules>
+ <module>ubcs-desk-api</module>
+ <module>ubcs-dict-api</module>
+ <module>ubcs-scope-api</module>
+ <module>ubcs-system-api</module>
+ <module>ubcs-user-api</module>
+ <module>ubcs-code-api</module>
+ <module>ubcs-omd-api</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-mybatis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-tenant</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-openfeign</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger2</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-models</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-models</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ <finalName>${project.name}</finalName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
new file mode 100644
index 0000000..e141179
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -0,0 +1,61 @@
+<?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>ubcs-service-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <artifactId>ubcs-code-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <dependencies>
+
+ <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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeClassifyFullInfoBO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeClassifyFullInfoBO.java
new file mode 100644
index 0000000..f23c8e6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeClassifyFullInfoBO.java
@@ -0,0 +1,66 @@
+package com.vci.ubcs.code.bo;
+
+import com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java
new file mode 100644
index 0000000..188bd00
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java
@@ -0,0 +1,132 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
new file mode 100644
index 0000000..26a0a2c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
@@ -0,0 +1,669 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeButtonDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeButtonDTO.java
new file mode 100644
index 0000000..4d48ffa
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeButtonDTO.java
@@ -0,0 +1,85 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java
new file mode 100644
index 0000000..8a4f0f5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java
@@ -0,0 +1,226 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyProcessTempDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyProcessTempDTO.java
new file mode 100644
index 0000000..50bb9b2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyProcessTempDTO.java
@@ -0,0 +1,152 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTempMapItemDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTempMapItemDTO.java
new file mode 100644
index 0000000..786d4ca
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTempMapItemDTO.java
@@ -0,0 +1,184 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java
new file mode 100644
index 0000000..d764fd2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateAttrDTO.java
@@ -0,0 +1,1053 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java
new file mode 100644
index 0000000..725bdfd
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateButtonDTO.java
@@ -0,0 +1,155 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateDTO.java
new file mode 100644
index 0000000..11db13e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateDTO.java
@@ -0,0 +1,104 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateMapDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateMapDTO.java
new file mode 100644
index 0000000..c4896d6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyTemplateMapDTO.java
@@ -0,0 +1,96 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java
new file mode 100644
index 0000000..72ecc2e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyValueDTO.java
@@ -0,0 +1,104 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCompPreviewDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCompPreviewDTO.java
new file mode 100644
index 0000000..1d3df15
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCompPreviewDTO.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeDeleteBatchDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeDeleteBatchDTO.java
new file mode 100644
index 0000000..6399df5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeDeleteBatchDTO.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
new file mode 100644
index 0000000..8f8ff61
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
@@ -0,0 +1,134 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java
new file mode 100644
index 0000000..d61653c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeFixedValueDTO.java
@@ -0,0 +1,84 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeImprotDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeImprotDataDTO.java
new file mode 100644
index 0000000..441d807
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeImprotDataDTO.java
@@ -0,0 +1,66 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatRuleDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatRuleDTO.java
new file mode 100644
index 0000000..9da8c7e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatRuleDTO.java
@@ -0,0 +1,99 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java
new file mode 100644
index 0000000..994d4a6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderDTO.java
@@ -0,0 +1,92 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderSecDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderSecDTO.java
new file mode 100644
index 0000000..4f94789
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeOrderSecDTO.java
@@ -0,0 +1,44 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodePhaseAttrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodePhaseAttrDTO.java
new file mode 100644
index 0000000..bf7ebf2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodePhaseAttrDTO.java
@@ -0,0 +1,64 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeResembleRuleDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeResembleRuleDTO.java
new file mode 100644
index 0000000..126b597
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeResembleRuleDTO.java
@@ -0,0 +1,118 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java
new file mode 100644
index 0000000..293a9a2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java
@@ -0,0 +1,40 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
new file mode 100644
index 0000000..90ad197
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
@@ -0,0 +1,104 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java
new file mode 100644
index 0000000..225b060
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTemplatePhaseDTO.java
@@ -0,0 +1,80 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java
new file mode 100644
index 0000000..2edeb0e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingDataDTO.java
@@ -0,0 +1,120 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingLogeDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingLogeDTO.java
new file mode 100644
index 0000000..3460ca9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingLogeDTO.java
@@ -0,0 +1,179 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataDTO.java
new file mode 100644
index 0000000..6bedafb
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataDTO.java
@@ -0,0 +1,244 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataInfoDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataInfoDTO.java
new file mode 100644
index 0000000..bcb7de6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyDataInfoDTO.java
@@ -0,0 +1,126 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java
new file mode 100644
index 0000000..e54f5a6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java
@@ -0,0 +1,200 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java
new file mode 100644
index 0000000..7fdb561
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java
@@ -0,0 +1,82 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingTaskDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingTaskDTO.java
new file mode 100644
index 0000000..21d6be8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingTaskDTO.java
@@ -0,0 +1,197 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java
new file mode 100644
index 0000000..a56fef7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/PreApplyCodeOrderDTO.java
@@ -0,0 +1,106 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntAuthorityDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntAuthorityDTO.java
new file mode 100644
index 0000000..2fc60fd
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntAuthorityDTO.java
@@ -0,0 +1,124 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntBaseDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntBaseDTO.java
new file mode 100644
index 0000000..2c024b8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntBaseDTO.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntHeaderDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntHeaderDTO.java
new file mode 100644
index 0000000..97862a8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntHeaderDTO.java
@@ -0,0 +1,80 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java
new file mode 100644
index 0000000..1c49665
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoBseDTO.java
@@ -0,0 +1,46 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java
new file mode 100644
index 0000000..3a03ac5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntInfoDTO.java
@@ -0,0 +1,664 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntParamDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntParamDTO.java
new file mode 100644
index 0000000..83b678b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/SysIntParamDTO.java
@@ -0,0 +1,81 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/UpdateSysInfoStatusDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/UpdateSysInfoStatusDTO.java
new file mode 100644
index 0000000..3dd7233
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/UpdateSysInfoStatusDTO.java
@@ -0,0 +1,40 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/JsonRootDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/JsonRootDataDTO.java
new file mode 100644
index 0000000..a7abb8a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/JsonRootDataDTO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java
new file mode 100644
index 0000000..06d0875
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeClassifyDTO.java
@@ -0,0 +1,112 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java
new file mode 100644
index 0000000..7351eb4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeDataDTO.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java
new file mode 100644
index 0000000..a6d2ac7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/NodeLibraryDTO.java
@@ -0,0 +1,50 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/classfy.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/classfy.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/classfy.json
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/data.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/classify/data.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/classify/data.xml
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java
new file mode 100644
index 0000000..d2b8e7e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeJosnDTO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java
new file mode 100644
index 0000000..8ea3daf
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeObjectDTO.java
@@ -0,0 +1,71 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java
new file mode 100644
index 0000000..1e4c759
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodeProDTO.java
@@ -0,0 +1,47 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java
new file mode 100644
index 0000000..fe832e9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/NodedataDTO.java
@@ -0,0 +1,27 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/data.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/data.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/data.json
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/result.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/dto/datapush/data/result.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/data/result.json
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultJsonDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultJsonDTO.java
new file mode 100644
index 0000000..3e42ba1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultJsonDTO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java
new file mode 100644
index 0000000..e07d7a3
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeDataDTO.java
@@ -0,0 +1,28 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java
new file mode 100644
index 0000000..70b118d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/datapush/result/ResultNodeObjectDTO.java
@@ -0,0 +1,70 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
new file mode 100644
index 0000000..613af71
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
@@ -0,0 +1,169 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
new file mode 100644
index 0000000..f128e54
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
@@ -0,0 +1,651 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeButtonVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeButtonVO.java
new file mode 100644
index 0000000..8c12ef6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeButtonVO.java
@@ -0,0 +1,98 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyAttributeVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyAttributeVO.java
new file mode 100644
index 0000000..0d040e1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyAttributeVO.java
@@ -0,0 +1,63 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java
new file mode 100644
index 0000000..4cafaba
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java
@@ -0,0 +1,167 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTempMapItemVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTempMapItemVO.java
new file mode 100644
index 0000000..737d1cb
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTempMapItemVO.java
@@ -0,0 +1,210 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
new file mode 100644
index 0000000..bf9b047
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateAttrVO.java
@@ -0,0 +1,1071 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
new file mode 100644
index 0000000..a4a0926
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
@@ -0,0 +1,170 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateMapVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateMapVO.java
new file mode 100644
index 0000000..87c4828
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateMapVO.java
@@ -0,0 +1,96 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateVO.java
new file mode 100644
index 0000000..2a22128
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateVO.java
@@ -0,0 +1,105 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
new file mode 100644
index 0000000..c143673
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
@@ -0,0 +1,263 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java
new file mode 100644
index 0000000..65ffcfc
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyValueVO.java
@@ -0,0 +1,133 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
new file mode 100644
index 0000000..623b01c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
@@ -0,0 +1,83 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImProtRusultVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImProtRusultVO.java
new file mode 100644
index 0000000..17ac3fd
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImProtRusultVO.java
@@ -0,0 +1,41 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportResultVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportResultVO.java
new file mode 100644
index 0000000..74c749f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportResultVO.java
@@ -0,0 +1,123 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
new file mode 100644
index 0000000..a0f186f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
new file mode 100644
index 0000000..d6bbb76
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
@@ -0,0 +1,132 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotParmaDatVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotParmaDatVO.java
new file mode 100644
index 0000000..ac03baf
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotParmaDatVO.java
@@ -0,0 +1,41 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotResembleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotResembleVO.java
new file mode 100644
index 0000000..e75d645
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotResembleVO.java
@@ -0,0 +1,66 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotSaveDatVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotSaveDatVO.java
new file mode 100644
index 0000000..696e3d1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotSaveDatVO.java
@@ -0,0 +1,55 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java
new file mode 100644
index 0000000..56f6e33
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeKeyAttrRepeatRuleVO.java
@@ -0,0 +1,98 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodePhaseAttrVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodePhaseAttrVO.java
new file mode 100644
index 0000000..065e5d9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodePhaseAttrVO.java
@@ -0,0 +1,77 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeResembleRuleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeResembleRuleVO.java
new file mode 100644
index 0000000..78aa958
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeResembleRuleVO.java
@@ -0,0 +1,119 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleVO.java
new file mode 100644
index 0000000..57bceaf
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleVO.java
@@ -0,0 +1,72 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
new file mode 100644
index 0000000..9375366
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
@@ -0,0 +1,72 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSynonymVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSynonymVO.java
new file mode 100644
index 0000000..ed629df
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSynonymVO.java
@@ -0,0 +1,103 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java
new file mode 100644
index 0000000..9f39e97
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java
@@ -0,0 +1,83 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ColumnVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ColumnVO.java
new file mode 100644
index 0000000..ae69b40
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ColumnVO.java
@@ -0,0 +1,51 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+public class ColumnVO {
+
+ private String field;
+ private String title;
+ private int width=260;
+ private boolean sort;
+
+ public String getField() {
+ return field;
+ }
+
+ public void setField(String field) {
+ this.field = field;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getWidth() {
+ return width;
+ }
+
+ public void setWidth(int width) {
+ this.width = width;
+ }
+
+ public boolean isSort() {
+ return sort;
+ }
+
+ public void setSort(boolean sort) {
+ this.sort = sort;
+ }
+
+ @Override
+ public String toString() {
+ return "ColumnVO{" +
+ "field='" + field + '\'' +
+ ", title='" + title + '\'' +
+ ", width=" + width +
+ ", sort=" + sort +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ConfigAttrMappingVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ConfigAttrMappingVO.java
new file mode 100644
index 0000000..6e77cb7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/ConfigAttrMappingVO.java
@@ -0,0 +1,6 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+public class ConfigAttrMappingVO {
+ private String systemId;
+ private String ll;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DataResembleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DataResembleVO.java
new file mode 100644
index 0000000..e39cb0b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DataResembleVO.java
@@ -0,0 +1,36 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class DataResembleVO {
+ private String oid;
+ private List<Map<String,String>> dataList=new ArrayList<>();
+
+
+ public List<Map<String, String>> getDataList() {
+ return dataList;
+ }
+
+ public void setDataList(List<Map<String, String>> dataList) {
+ this.dataList = dataList;
+ }
+
+ public String getOid() {
+ return oid;
+ }
+
+ public void setOid(String oid) {
+ this.oid = oid;
+ }
+
+ @Override
+ public String toString() {
+ return "DataResembleVO{" +
+ "oid='" + oid + '\'' +
+ ", dataList=" + dataList +
+ '}';
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java
new file mode 100644
index 0000000..e347c95
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingDataVO.java
@@ -0,0 +1,120 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.model.BaseModel;
+
+/**
+ * 瑕佹帹閫佸緱鏁版嵁
+ * @author wangyi
+ * @date 2022-10-7
+ */
+public class DockingDataVO 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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingLogeVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingLogeVO.java
new file mode 100644
index 0000000..f743ebc
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingLogeVO.java
@@ -0,0 +1,177 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public class DockingLogeVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707121064918548L;
+
+ /**
+ * 鎺ュ彛鐘舵��
+ */
+ 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 "DockingLogeVO{" +
+ "interfacestatus='" + interfacestatus + '\'' +
+ ", paramstring='" + paramstring + '\'' +
+ ", returnstring='" + returnstring + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", systemoid='" + systemoid + '\'' +
+ ", type='" + type + '\'' +
+ ", msg='" + msg + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataInfoVO.java
new file mode 100644
index 0000000..e480cfc
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataInfoVO.java
@@ -0,0 +1,121 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public class DockingPreApplyDataInfoVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707120361431431L;
+
+ /**
+ * 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 "DockingPreApplyDataInfoVO{" +
+ "dataoid='" + dataoid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", key='" + key + '\'' +
+ ", mean='" + mean + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataVO.java
new file mode 100644
index 0000000..d684d82
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyDataVO.java
@@ -0,0 +1,256 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public class DockingPreApplyDataVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118846979001L;
+
+ /**
+ * 鐢宠oid
+ */
+ private String preapplyoid;
+
+ /**
+ * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
+ */
+ private String uniquecode;
+
+ /**
+ * 涓婚搴撶紪鍙�
+ */
+ private String type;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ private String systemid;
+
+ /**
+ * 姝e湪浣跨敤鏍囧織
+ */
+ private String useddflag;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被oid
+ */
+ private String classifyoid;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被鍚嶇О
+ */
+ private String classifyname;
+
+ /**
+ * 鐢宠鎴愬姛鍚庣殑缂栫爜锛岀紪杈戜腑銆佹湭鍙戝竷銆佸仠鐢ㄧ殑缂栫爜涓嶆樉绀猴紝鍙湁姝e紡鐨勭紪鐮佹墠鏄剧ず
+ */
+ 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;
+
+ private List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOs;
+
+ 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;
+ }
+
+ public List<DockingPreApplyDataInfoVO> getDockingPreApplyDataInfoVOs() {
+ return dockingPreApplyDataInfoVOs;
+ }
+
+ public void setDockingPreApplyDataInfoVOs(List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOs) {
+ this.dockingPreApplyDataInfoVOs = dockingPreApplyDataInfoVOs;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreApplyDataVO{" +
+ "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 + '\'' +
+ ", dockingPreApplyDataInfoVOs=" + dockingPreApplyDataInfoVOs +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java
new file mode 100644
index 0000000..95626b5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java
@@ -0,0 +1,199 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
+ * @author xiejun
+ * @date 2023-01-06
+ */
+public class DockingPreAttrMappingVO 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<DockingPreAttrRangeVO> dockingPreAttrRangeVOS;
+
+
+ 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<DockingPreAttrRangeVO> getDockingPreAttrRangeVOS() {
+ return dockingPreAttrRangeVOS;
+ }
+
+ public void setDockingPreAttrRangeVOS(List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS) {
+ this.dockingPreAttrRangeVOS = dockingPreAttrRangeVOS;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrMappingVO{" +
+ "jdefaultValue='" + jdefaultValue + '\'' +
+ ", jmetaListId='" + jmetaListId + '\'' +
+ ", jsourceClsfId='" + jsourceClsfId + '\'' +
+ ", jsourceClsfName='" + jsourceClsfName + '\'' +
+ ", jtargetAttrId='" + jtargetAttrId + '\'' +
+ ", jtargetClsfId='" + jtargetClsfId + '\'' +
+ ", jviewModeId='" + jviewModeId + '\'' +
+ ", jviewModeName='" + jviewModeName + '\'' +
+ ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
+ ", jtargetAttrName='" + jtargetAttrName + '\'' +
+ ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
+ ", jsourceAttrName='" + jsourceAttrName + '\'' +
+ ", dockingPreAttrRangeVOS=" + dockingPreAttrRangeVOS +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java
new file mode 100644
index 0000000..c2e11ba
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java
@@ -0,0 +1,83 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+public class DockingPreAttrRangeVO 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 getJmetaListId() {
+ return jmetaListId;
+ }
+
+ public void setJmetaListId(String jmetaListId) {
+ this.jmetaListId = jmetaListId;
+ }
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrRangeVO{" +
+ "jmetaListId='" + jmetaListId + '\'' +
+ ", jnumText='" + jnumText + '\'' +
+ ", jnumTextValue='" + jnumTextValue + '\'' +
+ ", jtargeNumText='" + jtargeNumText + '\'' +
+ ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingTaskVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingTaskVO.java
new file mode 100644
index 0000000..144bc70
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingTaskVO.java
@@ -0,0 +1,200 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public class DockingTaskVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119707777641L;
+
+ /**
+ * 绯荤粺鎺ュ彛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;
+
+ /**
+ * 涓氬姟绫诲瀷鏁版嵁id
+ */
+ private String btmid;
+
+ /**
+ * uniquecode
+ */
+ private String uniquecode;
+
+
+ /**
+ * 鏄惁鍙戦�佹垚鍔�
+ */
+ private String sendflag;
+
+ /**
+ * 鍙戦�佺被鍨�,lcstatus
+ */
+ 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.btmoid = 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 "DockingTaskVO{" +
+ "sysinfooid='" + sysinfooid + '\'' +
+ ", systemoid='" + systemoid + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", btmoid='" + btmoid + '\'' +
+ ", btmid='" + btmid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", sendflag='" + sendflag + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", dataoid='" + dataoid + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
new file mode 100644
index 0000000..8aff07b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
@@ -0,0 +1,109 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.web.pageModel.SmOperationVO;
+import com.vci.web.pageModel.UIFormDefineVO;
+import com.vci.web.pageModel.UITableDefineVO;
+
+import java.util.List;
+
+/**
+ * 涓绘暟鎹殑UI淇℃伅
+ * @author weidy
+ * @date 2022-2-21
+ */
+public class MdmUIInfoVO implements java.io.Serializable {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 4192521596336111375L;
+ /**
+ * 妯℃澘鐨勪俊鎭�
+ */
+ private CodeClassifyTemplateVO templateVO;
+
+ /**
+ * 琛ㄦ牸鐨勪俊鎭�
+ */
+ private UITableDefineVO tableDefineVO;
+
+ /**
+ * 琛ㄥ崟鐨勪俊鎭�
+ */
+ private UIFormDefineVO formDefineVO;
+
+ /**
+ * 鏌ラ噸灞炴�х殑鐩稿叧琛ㄦ牸鐨勪俊鎭�
+ */
+ private UITableDefineVO resembleTableVO;
+
+ /**
+ * 鎸夐挳鐨勫唴瀹�
+ */
+ private List<SmOperationVO> buttons;
+
+ /**
+ * 褰撳墠鍒嗙被鏄惁涓哄彾瀛愯妭鐐�
+ */
+ private boolean leaf;
+
+ public List<SmOperationVO> getButtons() {
+ return buttons;
+ }
+
+ public void setButtons(List<SmOperationVO> buttons) {
+ this.buttons = buttons;
+ }
+
+ public CodeClassifyTemplateVO getTemplateVO() {
+ return templateVO;
+ }
+
+ public void setTemplateVO(CodeClassifyTemplateVO templateVO) {
+ this.templateVO = templateVO;
+ }
+
+ public UITableDefineVO getTableDefineVO() {
+ return tableDefineVO;
+ }
+
+ public void setTableDefineVO(UITableDefineVO tableDefineVO) {
+ this.tableDefineVO = tableDefineVO;
+ }
+
+ public UIFormDefineVO getFormDefineVO() {
+ return formDefineVO;
+ }
+
+ public void setFormDefineVO(UIFormDefineVO formDefineVO) {
+ this.formDefineVO = formDefineVO;
+ }
+
+ public boolean isLeaf() {
+ return leaf;
+ }
+
+ public void setLeaf(boolean leaf) {
+ this.leaf = leaf;
+ }
+
+ public UITableDefineVO getResembleTableVO() {
+ return resembleTableVO;
+ }
+
+ public void setResembleTableVO(UITableDefineVO resembleTableVO) {
+ this.resembleTableVO = resembleTableVO;
+ }
+
+ @Override
+ public String toString() {
+ return "MdmUIInfoVO{" +
+ "templateVO=" + templateVO +
+ ", tableDefineVO=" + tableDefineVO +
+ ", formDefineVO=" + formDefineVO +
+ ", resembleTableVO=" + resembleTableVO +
+ ", buttons=" + buttons +
+ ", leaf=" + leaf +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntAuthorityVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntAuthorityVO.java
new file mode 100644
index 0000000..a091113
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntAuthorityVO.java
@@ -0,0 +1,123 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntAuthorityVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707119460615952L;
+
+ /**
+ * 楠岃瘉浠ょ墝
+ */
+ 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 "SysIntAuthorityVO{" +
+ "token='" + token +"'," +
+ "type='" + type +"'," +
+ "typeText='" + typeText +"'," +
+ "useraccount='" + useraccount +"'," +
+ "usercode='" + usercode +"'," +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntBaseVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntBaseVO.java
new file mode 100644
index 0000000..679b89e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntBaseVO.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntBaseVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117504109912L;
+
+
+
+ @Override
+ public String toString() {
+ return "SysIntBaseVO{" +
+ "}" + super.toString();
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntHeaderVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntHeaderVO.java
new file mode 100644
index 0000000..c3ddf8f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntHeaderVO.java
@@ -0,0 +1,80 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public class SysIntHeaderVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117938037102L;
+
+ /**
+ * 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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java
new file mode 100644
index 0000000..9e6e96a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntInfoVO.java
@@ -0,0 +1,746 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.List;
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public class SysIntInfoVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707117716142069L;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ private String authorityoid;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String authorityoidName;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ private String authorityType;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String authorityTypeText;
+
+ /**
+ * 楠岃瘉鐢ㄦ埛
+ */
+ private String userAccount;
+
+ /**
+ * 楠岃瘉瀵嗙爜
+ */
+ private String userCode;
+
+ /**
+ * 楠岃瘉浠ょ墝
+ */
+ private String token;
+
+ /**
+ * 鎺ュ彛鍑芥暟
+ */
+ private String interfaceFunction;
+
+ /**
+ * 鎺ュ彛鎻忚堪
+ */
+ private String description;
+
+
+ /**
+ * 鎺ュ彛绫诲瀷
+ */
+ private String interfacetype;
+
+
+ /**
+ * 鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String interfacetypeText;
+ /**
+ * 鍙傛暟绫诲瀷
+ */
+ private String paramtype;
+
+
+ /**
+ * 鍙傛暟绫诲瀷鏄剧ず鏂囨湰
+ */
+ private String paramtypeText;
+ /**
+ * 璇锋眰鏂瑰紡
+ */
+ private String requestmethod;
+
+
+ /**
+ * 璇锋眰鏂瑰紡鏄剧ず鏂囨湰
+ */
+ private String requestmethodText;
+ /**
+ * 鍒嗙被oid
+ */
+ private String classifyoid;
+
+ /**
+ * 鍚敤銆佸仠鐢╰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 sourceSysName;
+
+ /**
+ * 鏉ユ簮绯荤粺鏍囪瘑
+ */
+ private String sourceSysId;
+
+ /**
+ * 鏉ユ簮绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ private String sourcesystemoidName;
+
+ /**
+ * 鐩爣绯荤粺涓婚敭
+ */
+ private String targetsystemoid;
+
+ /**
+ * 鐩爣绯荤粺鍚嶇О
+ */
+ private String targetSysName;
+
+ /**
+ * 鐩爣绯荤粺鏍囪瘑
+ */
+ private String targetSysId;
+
+ /**
+ * 鐩爣绯荤粺涓婚敭鏄剧ず鏂囨湰
+ */
+ private String targetsystemoidName;
+
+ /**
+ * 绫昏矾寰�
+ */
+ private String classPath;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡
+ */
+ private String dataFlowType;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡鐨勬樉绀哄瓧娈�
+ */
+ private String dataFlowTypeText;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
+ */
+ private String btmTypeName;
+
+ /**
+ * 鍛藉悕绌洪棿
+ */
+ private String namespace;
+
+ /**
+ * soapAction
+ */
+ private String soapaction;
+
+ /**
+ * cxfaxis
+ */
+ private String cxfaxis;
+
+ /**
+ * 鍙傛暟鍚嶇О
+ */
+ private String targName;
+
+ /***
+ * 鎺ㄩ�佺被鍨� 1:鏁版嵁鎺ㄩ��/2鍒嗙被鎺ㄩ�侊紝榛樿鏁版嵁鎺ㄩ��
+ */
+ private String pushType;
+ /***
+ * 鎺ㄩ�佺被鍨嬫樉绀哄��
+ */
+ private String pushTypeText;
+
+ /**
+ * 鍒嗙被id
+ */
+ private String classifyid;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ private String classifyname;
+
+ /***
+ * 鍙傛暟淇℃伅瀵硅薄
+ */
+ private List<SysIntParamVO> sysIntParamVOs;
+ /***
+ * header淇℃伅瀵硅薄
+ */
+ private List<SysIntHeaderVO> sysIntHeaderVOs;
+
+ public String 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 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 getClassPath() {
+ return classPath;
+ }
+
+ public void setClassPath(String classPath) {
+ this.classPath = classPath;
+ }
+
+ /**
+ * 鑾峰彇 璁よ瘉鏂瑰紡
+ */
+ 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 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;
+ }
+
+ 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;
+ }
+
+ public String getAuthorityType() {
+ return authorityType;
+ }
+
+ public void setAuthorityType(String authorityType) {
+ this.authorityType = authorityType;
+ }
+
+ public String getUserAccount() {
+ return userAccount;
+ }
+
+ public void setUserAccount(String userAccount) {
+ this.userAccount = userAccount;
+ }
+
+ public String getUserCode() {
+ return userCode;
+ }
+
+ public void setUserCode(String userCode) {
+ this.userCode = userCode;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getInterfaceFunction() {
+ return interfaceFunction;
+ }
+
+ public void setInterfaceFunction(String interfaceFunction) {
+ this.interfaceFunction = interfaceFunction;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getAuthorityTypeText() {
+ return authorityTypeText;
+ }
+
+ public void setAuthorityTypeText(String authorityTypeText) {
+ this.authorityTypeText = authorityTypeText;
+ }
+
+ 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 getSysbaseid() {
+ return sysbaseid;
+ }
+
+ public void setSysbaseid(String sysbaseid) {
+ this.sysbaseid = sysbaseid;
+ }
+
+ public String getPushType() {
+ return pushType;
+ }
+
+ public void setPushType(String pushType) {
+ this.pushType = pushType;
+ }
+
+ public String getPushTypeText() {
+ return pushTypeText;
+ }
+
+ public void setPushTypeText(String pushTypeText) {
+ this.pushTypeText = pushTypeText;
+ }
+
+ public List<SysIntParamVO> getSysIntParamVOs() {
+ return sysIntParamVOs;
+ }
+
+ public void setSysIntParamVOs(List<SysIntParamVO> sysIntParamVOs) {
+ this.sysIntParamVOs = sysIntParamVOs;
+ }
+
+ public List<SysIntHeaderVO> getSysIntHeaderVOs() {
+ return sysIntHeaderVOs;
+ }
+
+ public void setSysIntHeaderVOs(List<SysIntHeaderVO> sysIntHeaderVOs) {
+ this.sysIntHeaderVOs = sysIntHeaderVOs;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntInfoVO{" +
+ "authorityoid='" + authorityoid + '\'' +
+ ", authorityoidName='" + authorityoidName + '\'' +
+ ", authorityType='" + authorityType + '\'' +
+ ", authorityTypeText='" + authorityTypeText + '\'' +
+ ", userAccount='" + userAccount + '\'' +
+ ", userCode='" + userCode + '\'' +
+ ", token='" + token + '\'' +
+ ", interfaceFunction='" + interfaceFunction + '\'' +
+ ", description='" + description + '\'' +
+ ", interfacetype='" + interfacetype + '\'' +
+ ", interfacetypeText='" + interfacetypeText + '\'' +
+ ", paramtype='" + paramtype + '\'' +
+ ", paramtypeText='" + paramtypeText + '\'' +
+ ", requestmethod='" + requestmethod + '\'' +
+ ", requestmethodText='" + requestmethodText + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", usedflag='" + usedflag + '\'' +
+ ", sysbaseoid='" + sysbaseoid + '\'' +
+ ", sysbaseid='" + sysbaseid + '\'' +
+ ", sysbasename='" + sysbasename + '\'' +
+ ", requesturl='" + requesturl + '\'' +
+ ", returntype='" + returntype + '\'' +
+ ", returntypeText='" + returntypeText + '\'' +
+ ", sourceSystemOid='" + sourceSystemOid + '\'' +
+ ", sourceSysName='" + sourceSysName + '\'' +
+ ", sourceSysId='" + sourceSysId + '\'' +
+ ", sourcesystemoidName='" + sourcesystemoidName + '\'' +
+ ", targetsystemoid='" + targetsystemoid + '\'' +
+ ", targetSysName='" + targetSysName + '\'' +
+ ", targetSysId='" + targetSysId + '\'' +
+ ", targetsystemoidName='" + targetsystemoidName + '\'' +
+ ", classPath='" + classPath + '\'' +
+ ", dataFlowType='" + dataFlowType + '\'' +
+ ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", btmTypeName='" + btmTypeName + '\'' +
+ ", namespace='" + namespace + '\'' +
+ ", soapaction='" + soapaction + '\'' +
+ ", cxfaxis='" + cxfaxis + '\'' +
+ ", targName='" + targName + '\'' +
+ ", pushType='" + pushType + '\'' +
+ ", pushTypeText='" + pushTypeText + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", sysIntParamVOs=" + sysIntParamVOs +
+ ", sysIntHeaderVOs=" + sysIntHeaderVOs +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntParamVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntParamVO.java
new file mode 100644
index 0000000..f71efe1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SysIntParamVO.java
@@ -0,0 +1,80 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public class SysIntParamVO extends BaseModelVO {
+
+ /**
+ * 绂佹淇敼杩欎釜鍊�
+ */
+ private static final long serialVersionUID = 4615707118871819648L;
+
+ /**
+ * 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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDataVO.java
new file mode 100644
index 0000000..998269f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDataVO.java
@@ -0,0 +1,119 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDatasVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDatasVO.java
new file mode 100644
index 0000000..6b7a8e9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ApplyDatasVO.java
@@ -0,0 +1,27 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfyVO.java
new file mode 100644
index 0000000..3428a1e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfyVO.java
@@ -0,0 +1,83 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfysVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfysVO.java
new file mode 100644
index 0000000..1435d12
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ClassfysVO.java
@@ -0,0 +1,30 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/InterParameterVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/InterParameterVO.java
new file mode 100644
index 0000000..a41591e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/InterParameterVO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ProppertyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ProppertyVO.java
new file mode 100644
index 0000000..b5f9e3c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/ProppertyVO.java
@@ -0,0 +1,56 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/RootDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/RootDataVO.java
new file mode 100644
index 0000000..780777a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/RootDataVO.java
@@ -0,0 +1,58 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionVO.java
new file mode 100644
index 0000000..f749e12
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionVO.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionsVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionsVO.java
new file mode 100644
index 0000000..bf3da16
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/SectionsVO.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/UserVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/UserVO.java
new file mode 100644
index 0000000..09dd685
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/apply/UserVO.java
@@ -0,0 +1,56 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java
new file mode 100644
index 0000000..b824ce1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/ClsfAttrMappingDO.java
@@ -0,0 +1,73 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataAttributeVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataAttributeVO.java
new file mode 100644
index 0000000..91860a3
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataAttributeVO.java
@@ -0,0 +1,112 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataObjectVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataObjectVO.java
new file mode 100644
index 0000000..4d2071e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/DataObjectVO.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/GeneralMappingUtil.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/GeneralMappingUtil.java
new file mode 100644
index 0000000..8be4a6f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/GeneralMappingUtil.java
@@ -0,0 +1,30 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryClsfDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryClsfDO.java
new file mode 100644
index 0000000..00f1794
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryClsfDO.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryDO.java
new file mode 100644
index 0000000..05514a2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/LibraryDO.java
@@ -0,0 +1,33 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/RowDatas.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/RowDatas.java
new file mode 100644
index 0000000..a93a87d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/RowDatas.java
@@ -0,0 +1,125 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/appcode.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/appcode.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/appcode.xml
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/clsfAttrMap.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/clsfAttrMap.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/clsfAttrMap.xml
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/tt.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/tt.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/tt.xml
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxx.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxx.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxx.json
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxxxxxxxx.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/attrmap/xxxxxxxxx.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/attrmap/xxxxxxxxx.json
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ClassifyVO.java
new file mode 100644
index 0000000..9b51c6a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ClassifyVO.java
@@ -0,0 +1,112 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/LibraryVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/LibraryVO.java
new file mode 100644
index 0000000..0373bf8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/LibraryVO.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryClassifyVO.java
new file mode 100644
index 0000000..5d6e451
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryClassifyVO.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryData.java
new file mode 100644
index 0000000..4134a08
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryData.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.code.vo.universalInter.classify;
+
+import com.vci.ubcs.code.vo.universalInter.apply.UserVO;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryLibraryVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryLibraryVO.java
new file mode 100644
index 0000000..28c0d19
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/QueryLibraryVO.java
@@ -0,0 +1,39 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultClassifyVO.java
new file mode 100644
index 0000000..630729f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultClassifyVO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultData.java
new file mode 100644
index 0000000..742a140
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/ResultData.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/classify.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/classify.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/classify.xml
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/xxx.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/classify/xxx.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/classify/xxx.json
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionVO.java
new file mode 100644
index 0000000..a296ae4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionVO.java
@@ -0,0 +1,60 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionsVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionsVO.java
new file mode 100644
index 0000000..e327212
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/CondtionsVO.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.code.vo.universalInter.data;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.vci.ubcs.code.vo.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataCondtionsVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataCondtionsVO.java
new file mode 100644
index 0000000..7ba8788
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataCondtionsVO.java
@@ -0,0 +1,20 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataObjectVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataObjectVO.java
new file mode 100644
index 0000000..5f2792b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/DataObjectVO.java
@@ -0,0 +1,72 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/PropertyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/PropertyVO.java
new file mode 100644
index 0000000..f6ff00f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/PropertyVO.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultDataVO.java
new file mode 100644
index 0000000..96bfa3c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultDataVO.java
@@ -0,0 +1,47 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultVO.java
new file mode 100644
index 0000000..2126f69
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/ResultVO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/result.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/result.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/result.json
diff --git a/Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/xx.xml
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/data/xx.xml
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/data/xx.xml
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfyVO.java
new file mode 100644
index 0000000..d755599
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfyVO.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfysVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfysVO.java
new file mode 100644
index 0000000..bf4d03f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultClassfysVO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDO.java
new file mode 100644
index 0000000..3aca1e6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDO.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java
new file mode 100644
index 0000000..050844f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataObjectDetailDO.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataVO.java
new file mode 100644
index 0000000..81d58c5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultDataVO.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultSystemVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultSystemVO.java
new file mode 100644
index 0000000..a6fdaee
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/JSONResultSystemVO.java
@@ -0,0 +1,52 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/tt.json
similarity index 100%
rename from Source/BladeX/blade-service-api/blade-code-api/src/main/java/org/springblade/code/vo/universalInter/result/json/tt.json
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/json/tt.json
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultClassfyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
new file mode 100644
index 0000000..6fa457e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultClassfyVO.java
@@ -0,0 +1,60 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java
new file mode 100644
index 0000000..c8d7d4a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataObjectDetailDO.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataVO.java
new file mode 100644
index 0000000..ffe4e11
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultDataVO.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultSystemVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultSystemVO.java
new file mode 100644
index 0000000..db89fd3
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/universalInter/result/xml/XMLResultSystemVO.java
@@ -0,0 +1,61 @@
+package com.vci.ubcs.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/UBCS/ubcs-service-api/ubcs-desk-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-desk-api/pom.xml
new file mode 100644
index 0000000..0493508
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-desk-api/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-desk-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/entity/Notice.java b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/entity/Notice.java
new file mode 100644
index 0000000..308fa8f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/entity/Notice.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_notice")
+@EqualsAndHashCode(callSuper = true)
+public class Notice extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鏍囬
+ */
+ @ApiModelProperty(value = "鏍囬")
+ private String title;
+
+ /**
+ * 閫氱煡绫诲瀷
+ */
+ @ApiModelProperty(value = "閫氱煡绫诲瀷")
+ private Integer category;
+
+ /**
+ * 鍙戝竷鏃ユ湡
+ */
+ @ApiModelProperty(value = "鍙戝竷鏃ユ湡")
+ private Date releaseTime;
+
+ /**
+ * 鍐呭
+ */
+ @ApiModelProperty(value = "鍐呭")
+ private String content;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/feign/INoticeClient.java b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/feign/INoticeClient.java
new file mode 100644
index 0000000..9246b61
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/feign/INoticeClient.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.feign;
+
+import com.vci.ubcs.desk.entity.Notice;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.mp.support.BladePage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * Notice Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_DESK_NAME
+)
+public interface INoticeClient {
+
+ String API_PREFIX = "/client";
+ String TOP = API_PREFIX + "/top";
+
+ /**
+ * 鑾峰彇notice鍒楄〃
+ *
+ * @param current
+ * @param size
+ * @return
+ */
+ @GetMapping(TOP)
+ BladePage<Notice> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/vo/NoticeVO.java b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/vo/NoticeVO.java
new file mode 100644
index 0000000..b800381
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-desk-api/src/main/java/com/vci/ubcs/desk/vo/NoticeVO.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.desk.vo;
+
+import com.vci.ubcs.desk.entity.Notice;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 閫氱煡鍏憡瑙嗗浘绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class NoticeVO extends Notice {
+
+ @ApiModelProperty(value = "閫氱煡绫诲瀷鍚�")
+ private String categoryName;
+
+ @ApiModelProperty(value = "绉熸埛缂栧彿")
+ private String tenantId;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-dict-api/pom.xml
new file mode 100644
index 0000000..767d1e9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-dict-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictBizCache.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictBizCache.java
new file mode 100644
index 0000000..06c34d1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictBizCache.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import com.vci.ubcs.system.enums.DictBizEnum;
+import com.vci.ubcs.system.feign.IDictBizClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.entity.DictBiz;
+
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 涓氬姟瀛楀吀缂撳瓨宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class DictBizCache {
+
+ private static final String DICT_ID = "dictBiz:id";
+ private static final String DICT_VALUE = "dictBiz:value";
+ private static final String DICT_LIST = "dictBiz:list";
+
+ private static IDictBizClient dictClient;
+
+ private static IDictBizClient getDictClient() {
+ if (dictClient == null) {
+ dictClient = SpringUtil.getBean(IDictBizClient.class);
+ }
+ return dictClient;
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return DictBiz
+ */
+ public static DictBiz getById(Long id) {
+ String keyPrefix = DICT_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix, id, () -> {
+ R<DictBiz> result = getDictClient().getById(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictBizEnum code, Integer dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, Integer dictKey) {
+ String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, String.valueOf(dictKey), () -> {
+ R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictBizEnum code, String dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, String dictKey) {
+ String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, dictKey, () -> {
+ R<String> result = getDictClient().getValue(code, dictKey);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀闆嗗悎
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return List<DictBiz>
+ */
+ public static List<DictBiz> getList(String code) {
+ String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> {
+ R<List<DictBiz>> result = getDictClient().getList(code);
+ return result.getData();
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictCache.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictCache.java
new file mode 100644
index 0000000..521b743
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/cache/DictCache.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import com.vci.ubcs.system.enums.DictEnum;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.feign.IDictClient;
+
+import java.util.List;
+import java.util.Optional;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 瀛楀吀缂撳瓨宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class DictCache {
+
+ private static final String DICT_ID = "dict:id:";
+ private static final String DICT_KEY = "dict:key:";
+ private static final String DICT_VALUE = "dict:value:";
+ private static final String DICT_LIST = "dict:list:";
+
+ private static final Boolean TENANT_MODE = Boolean.FALSE;
+
+ private static IDictClient dictClient;
+
+ private static IDictClient getDictClient() {
+ if (dictClient == null) {
+ dictClient = SpringUtil.getBean(IDictClient.class);
+ }
+ return dictClient;
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return Dict
+ */
+ public static Dict getById(Long id) {
+ return CacheUtil.get(DICT_CACHE, DICT_ID, id, () -> {
+ R<Dict> result = getDictClient().getById(id);
+ return result.getData();
+ }, TENANT_MODE);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictValue 瀛楀吀鍊�
+ * @return String
+ */
+ public static String getKey(DictEnum code, String dictValue) {
+ return getKey(code.getName(), dictValue);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀閿�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictValue 瀛楀吀鍊�
+ * @return String
+ */
+ public static String getKey(String code, String dictValue) {
+ return CacheUtil.get(DICT_CACHE, DICT_KEY + code + StringPool.COLON, dictValue, () -> {
+ List<Dict> list = getList(code);
+ Optional<String> key = list.stream().filter(
+ dict -> dict.getDictValue().equalsIgnoreCase(dictValue)
+ ).map(Dict::getDictKey).findFirst();
+ return key.orElse(StringPool.EMPTY);
+ }, TENANT_MODE);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictEnum code, Integer dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, Integer dictKey) {
+ return CacheUtil.get(DICT_CACHE, DICT_VALUE + code + StringPool.COLON, String.valueOf(dictKey), () -> {
+ R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
+ return result.getData();
+ }, TENANT_MODE);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictEnum code, String dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, String dictKey) {
+ return CacheUtil.get(DICT_CACHE, DICT_VALUE + code + StringPool.COLON, dictKey, () -> {
+ R<String> result = getDictClient().getValue(code, dictKey);
+ return result.getData();
+ }, TENANT_MODE);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀闆嗗悎
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return List<Dict>
+ */
+ public static List<Dict> getList(String code) {
+ return CacheUtil.get(DICT_CACHE, DICT_LIST, code, () -> {
+ R<List<Dict>> result = getDictClient().getList(code);
+ return result.getData();
+ }, TENANT_MODE);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/constant/DictConstant.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/constant/DictConstant.java
new file mode 100644
index 0000000..60039ee
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/constant/DictConstant.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.constant;
+
+/**
+ * 瀛楀吀甯搁噺.
+ *
+ * @author zhuangqian
+ */
+public interface DictConstant {
+
+ String SEX_CODE = "sex";
+
+ String NOTICE_CODE = "notice";
+
+ String MENU_CATEGORY_CODE = "menu_category";
+
+ String BUTTON_FUNC_CODE = "button_func";
+
+ String YES_NO_CODE = "yes_no";
+
+ String FLOW_CATEGORY_CODE = "flow_category";
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/dto/DictDTO.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/dto/DictDTO.java
new file mode 100644
index 0000000..99da697
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/dto/DictDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.system.entity.Dict;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DictDTO extends Dict {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/Dict.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/Dict.java
new file mode 100644
index 0000000..2bf366b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/Dict.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_dict")
+@ApiModel(value = "Dict瀵硅薄", description = "Dict瀵硅薄")
+public class Dict implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 瀛楀吀鐮�
+ */
+ @ApiModelProperty(value = "瀛楀吀鐮�")
+ private String code;
+
+ /**
+ * 瀛楀吀鍊�
+ */
+ @ApiModelProperty(value = "瀛楀吀鍊�")
+ private String dictKey;
+
+ /**
+ * 瀛楀吀鍚嶇О
+ */
+ @ApiModelProperty(value = "瀛楀吀鍚嶇О")
+ private String dictValue;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 瀛楀吀澶囨敞
+ */
+ @ApiModelProperty(value = "瀛楀吀澶囨敞")
+ private String remark;
+
+ /**
+ * 鏄惁宸插皝瀛�
+ */
+ @ApiModelProperty(value = "鏄惁宸插皝瀛�")
+ private Integer isSealed;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/DictBiz.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/DictBiz.java
new file mode 100644
index 0000000..42458b0
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/entity/DictBiz.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_dict_biz")
+@ApiModel(value = "DictBiz瀵硅薄", description = "DictBiz瀵硅薄")
+public class DictBiz implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绉熸埛ID
+ */
+ @ApiModelProperty(value = "绉熸埛ID")
+ private String tenantId;
+
+ /**
+ * 鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 瀛楀吀鐮�
+ */
+ @ApiModelProperty(value = "瀛楀吀鐮�")
+ private String code;
+
+ /**
+ * 瀛楀吀鍊�
+ */
+ @ApiModelProperty(value = "瀛楀吀鍊�")
+ private String dictKey;
+
+ /**
+ * 瀛楀吀鍚嶇О
+ */
+ @ApiModelProperty(value = "瀛楀吀鍚嶇О")
+ private String dictValue;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 瀛楀吀澶囨敞
+ */
+ @ApiModelProperty(value = "瀛楀吀澶囨敞")
+ private String remark;
+
+ /**
+ * 鏄惁宸插皝瀛�
+ */
+ @ApiModelProperty(value = "鏄惁宸插皝瀛�")
+ private Integer isSealed;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictBizEnum.java
new file mode 100644
index 0000000..4fab70f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictBizEnum.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 涓氬姟瀛楀吀鏋氫妇绫�
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public enum DictBizEnum {
+
+ /**
+ * 娴嬭瘯
+ */
+ TEST("test"),
+ ;
+
+ final String name;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictEnum.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictEnum.java
new file mode 100644
index 0000000..194c333
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/enums/DictEnum.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 绯荤粺瀛楀吀鏋氫妇绫�
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public enum DictEnum {
+
+ /**
+ * 鎬у埆
+ */
+ SEX("sex"),
+ /**
+ * 閫氱煡绫诲瀷
+ */
+ NOTICE("notice"),
+ /**
+ * 鑿滃崟绫诲瀷
+ */
+ MENU_CATEGORY("menu_category"),
+ /**
+ * 鎸夐挳鍔熻兘
+ */
+ BUTTON_FUNC("button_func"),
+ /**
+ * 鏄惁
+ */
+ YES_NO("yes_no"),
+ /**
+ * 娴佺▼绫诲瀷
+ */
+ FLOW("flow"),
+ /**
+ * 鏈烘瀯绫诲瀷
+ */
+ ORG_CATEGORY("org_category"),
+ /**
+ * 鏁版嵁鏉冮檺
+ */
+ DATA_SCOPE_TYPE("data_scope_type"),
+ /**
+ * 鎺ュ彛鏉冮檺
+ */
+ API_SCOPE_TYPE("api_scope_type"),
+ /**
+ * 鏉冮檺绫诲瀷
+ */
+ SCOPE_CATEGORY("scope_category"),
+ /**
+ * 瀵硅薄瀛樺偍绫诲瀷
+ */
+ OSS("oss"),
+ /**
+ * 鐭俊鏈嶅姟绫诲瀷
+ */
+ SMS("sms"),
+ /**
+ * 宀椾綅绫诲瀷
+ */
+ POST_CATEGORY("post_category"),
+ /**
+ * 琛屾斂鍖哄垝
+ */
+ REGION("region"),
+ /**
+ * 鐢ㄦ埛骞冲彴
+ */
+ USER_TYPE("user_type"),
+ ;
+
+ final String name;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java
new file mode 100644
index 0000000..8d10154
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.DictBiz;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_SYSTEM_NAME,
+ fallback = IDictBizClientFallback.class
+)
+public interface IDictBizClient {
+
+ String API_PREFIX = "/client";
+ String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
+ String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
+ String GET_LIST = API_PREFIX + "/dict-biz/get-list";
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return
+ */
+ @GetMapping(GET_BY_ID)
+ R<DictBiz> getById(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斿��
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ @GetMapping(GET_VALUE)
+ R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ @GetMapping(GET_LIST)
+ R<List<DictBiz>> getList(@RequestParam("code") String code);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java
new file mode 100644
index 0000000..08c4506
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.DictBiz;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class IDictBizClientFallback implements IDictBizClient {
+ @Override
+ public R<DictBiz> getById(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getValue(String code, String dictKey) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<DictBiz>> getList(String code) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClient.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClient.java
new file mode 100644
index 0000000..ec6381c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClient.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+
+import com.vci.ubcs.system.entity.Dict;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_SYSTEM_NAME,
+ fallback = IDictClientFallback.class
+)
+public interface IDictClient {
+
+ String API_PREFIX = "/client";
+ String GET_BY_ID = API_PREFIX + "/dict/get-by-id";
+ String GET_VALUE = API_PREFIX + "/dict/get-value";
+ String GET_LIST = API_PREFIX + "/dict/get-list";
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return
+ */
+ @GetMapping(GET_BY_ID)
+ R<Dict> getById(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斿��
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ @GetMapping(GET_VALUE)
+ R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ @GetMapping(GET_LIST)
+ R<List<Dict>> getList(@RequestParam("code") String code);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClientFallback.java
new file mode 100644
index 0000000..c38a839
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictClientFallback.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import com.vci.ubcs.system.entity.Dict;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class IDictClientFallback implements IDictClient {
+ @Override
+ public R<Dict> getById(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getValue(String code, String dictKey) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<Dict>> getList(String code) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictBizVO.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictBizVO.java
new file mode 100644
index 0000000..738acc0
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictBizVO.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+import com.vci.ubcs.system.entity.DictBiz;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DictBizVO瀵硅薄", description = "DictBizVO瀵硅薄")
+public class DictBizVO extends DictBiz implements INode<DictBizVO> {
+ private static final long serialVersionUID = 1L;
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<DictBizVO> children;
+
+ @Override
+ public List<DictBizVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇瀛楀吀
+ */
+ private String parentName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictVO.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictVO.java
new file mode 100644
index 0000000..4821549
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/vo/DictVO.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+import com.vci.ubcs.system.entity.Dict;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DictVO瀵硅薄", description = "DictVO瀵硅薄")
+public class DictVO extends Dict implements INode<DictVO> {
+ private static final long serialVersionUID = 1L;
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<DictVO> children;
+
+ @Override
+ public List<DictVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇瀛楀吀
+ */
+ private String parentName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
new file mode 100644
index 0000000..56f0aac
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-omd-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java
new file mode 100644
index 0000000..ed9fa81
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.cache;
+
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.enums.DictBizEnum;
+import com.vci.ubcs.omd.feign.IDictBizClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 涓氬姟瀛楀吀缂撳瓨宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class DictBizCache {
+
+ private static final String DICT_ID = "dictBiz:id";
+ private static final String DICT_VALUE = "dictBiz:value";
+ private static final String DICT_LIST = "dictBiz:list";
+
+ private static IDictBizClient dictClient;
+
+ private static IDictBizClient getDictClient() {
+ if (dictClient == null) {
+ dictClient = SpringUtil.getBean(IDictBizClient.class);
+ }
+ return dictClient;
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return DictBiz
+ */
+ public static DictBizM getById(Long id) {
+ String keyPrefix = DICT_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix, id, () -> {
+ R<DictBizM> result = getDictClient().getById(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictBizEnum code, Integer dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey Integer鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, Integer dictKey) {
+ String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, String.valueOf(dictKey), () -> {
+ R<String> result = getDictClient().getValue(code, String.valueOf(dictKey));
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿鏋氫妇
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(DictBizEnum code, String dictKey) {
+ return getValue(code.getName(), dictKey);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鍊�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey String鍨嬪瓧鍏搁敭
+ * @return String
+ */
+ public static String getValue(String code, String dictKey) {
+ String keyPrefix = DICT_VALUE.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix + code + StringPool.COLON, dictKey, () -> {
+ R<String> result = getDictClient().getValue(code, dictKey);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀闆嗗悎
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return List<DictBiz>
+ */
+ public static List<DictBizM> getList(String code) {
+ String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> {
+ R<List<DictBizM>> result = getDictClient().getList(code);
+ return result.getData();
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java
new file mode 100644
index 0000000..0d952f2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_dict_biz")
+@ApiModel(value = "DictBiz瀵硅薄", description = "DictBiz瀵硅薄")
+public class DictBizM implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绉熸埛ID
+ */
+ @ApiModelProperty(value = "绉熸埛ID")
+ private String tenantId;
+
+ /**
+ * 鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 瀛楀吀鐮�
+ */
+ @ApiModelProperty(value = "瀛楀吀鐮�")
+ private String code;
+
+ /**
+ * 瀛楀吀鍊�
+ */
+ @ApiModelProperty(value = "瀛楀吀鍊�")
+ private String dictKey;
+
+ /**
+ * 瀛楀吀鍚嶇О
+ */
+ @ApiModelProperty(value = "瀛楀吀鍚嶇О")
+ private String dictValue;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 瀛楀吀澶囨敞
+ */
+ @ApiModelProperty(value = "瀛楀吀澶囨敞")
+ private String remark;
+
+ /**
+ * 鏄惁宸插皝瀛�
+ */
+ @ApiModelProperty(value = "鏄惁宸插皝瀛�")
+ private Integer isSealed;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
new file mode 100644
index 0000000..8f093c4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 涓氬姟瀛楀吀鏋氫妇绫�
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public enum DictBizEnum {
+
+ /**
+ * 娴嬭瘯
+ */
+ TEST("test"),
+ ;
+
+ final String name;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java
new file mode 100644
index 0000000..777821c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+
+
+import com.vci.ubcs.omd.entity.DictBizM;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = "blade-omd",
+ fallback = IDictBizClientFallback.class
+)
+public interface IDictBizClient {
+
+ String API_PREFIX = "/client";
+ String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
+ String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
+ String GET_LIST = API_PREFIX + "/dict-biz/get-list";
+ String CHECK_VALUE = API_PREFIX + "/dict-biz/check-value";
+
+ /**
+ * 鑾峰彇瀛楀吀瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return
+ */
+ @GetMapping(GET_BY_ID)
+ R<DictBizM> getById(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斿��
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ @GetMapping(GET_VALUE)
+ R<String> getValue(@RequestParam("code") String code, @RequestParam("dictKey") String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ @GetMapping(GET_LIST)
+ R<List<DictBizM>> getList(@RequestParam("code") String code);
+
+ /**
+ * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
+ *
+ * @param dict 瀛楀吀鏁版嵁
+ * @return
+ */
+ @GetMapping(CHECK_VALUE)
+ R getCheck(@Valid @RequestBody DictBizM dict);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java
new file mode 100644
index 0000000..acacfe8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.omd.entity.DictBizM;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class IDictBizClientFallback implements IDictBizClient {
+ @Override
+ public R<DictBizM> getById(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getValue(String code, String dictKey) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<DictBizM>> getList(String code) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R getCheck(DictBizM dict) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java
new file mode 100644
index 0000000..4afbd3f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.omd.entity.DictBizM;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DictBizVO瀵硅薄", description = "DictBizVO瀵硅薄")
+public class DictBizMVO extends DictBizM implements INode<DictBizM> {
+ private static final long serialVersionUID = 1L;
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<DictBizM> children;
+
+ @Override
+ public List<DictBizM> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇瀛楀吀
+ */
+ private String parentName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-scope-api/pom.xml
new file mode 100644
index 0000000..0a2df20
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-scope-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-secure</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-datascope</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/ApiScopeCache.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/ApiScopeCache.java
new file mode 100644
index 0000000..2256c06
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/ApiScopeCache.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.feign.IApiScopeClient;
+
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鎺ュ彛鏉冮檺缂撳瓨
+ *
+ * @author Chill
+ */
+public class ApiScopeCache {
+
+ private static final String SCOPE_CACHE_CODE = "apiScope:code:";
+
+ private static IApiScopeClient apiScopeClient;
+
+ private static IApiScopeClient getApiScopeClient() {
+ if (apiScopeClient == null) {
+ apiScopeClient = SpringUtil.getBean(IApiScopeClient.class);
+ }
+ return apiScopeClient;
+ }
+
+ /**
+ * 鑾峰彇鎺ュ彛鏉冮檺鍦板潃
+ *
+ * @param roleId 瑙掕壊id
+ * @return permissions
+ */
+ public static List<String> permissionPath(String roleId) {
+ List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, roleId, List.class, Boolean.FALSE);
+ if (permissions == null) {
+ permissions = getApiScopeClient().permissionPath(roleId);
+ CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, roleId, permissions);
+ }
+ return permissions;
+ }
+
+ /**
+ * 鑾峰彇鎺ュ彛鏉冮檺淇℃伅
+ *
+ * @param permission 鏉冮檺缂栧彿
+ * @param roleId 瑙掕壊id
+ * @return permissions
+ */
+ public static List<String> permissionCode(String permission, String roleId) {
+ List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, List.class, Boolean.FALSE);
+ if (permissions == null) {
+ permissions = getApiScopeClient().permissionCode(permission, roleId);
+ CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, permissions);
+ }
+ return permissions;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/DataScopeCache.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/DataScopeCache.java
new file mode 100644
index 0000000..db0a742
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/cache/DataScopeCache.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.datascope.model.DataScopeModel;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.system.feign.IDataScopeClient;
+
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鏁版嵁鏉冮檺缂撳瓨
+ *
+ * @author Chill
+ */
+public class DataScopeCache {
+
+ private static final String SCOPE_CACHE_CODE = "dataScope:code:";
+ private static final String SCOPE_CACHE_CLASS = "dataScope:class:";
+ private static final String DEPT_CACHE_ANCESTORS = "dept:ancestors:";
+
+ private static IDataScopeClient dataScopeClient;
+
+ private static IDataScopeClient getDataScopeClient() {
+ if (dataScopeClient == null) {
+ dataScopeClient = SpringUtil.getBean(IDataScopeClient.class);
+ }
+ return dataScopeClient;
+ }
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param mapperId 鏁版嵁鏉冮檺mapperId
+ * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
+ * @return DataScopeModel
+ */
+ public static DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
+ DataScopeModel dataScope = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CLASS, mapperId + StringPool.COLON + roleId, DataScopeModel.class, Boolean.FALSE);
+ if (dataScope == null || !dataScope.getSearched()) {
+ dataScope = getDataScopeClient().getDataScopeByMapper(mapperId, roleId);
+ CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CLASS, mapperId + StringPool.COLON + roleId, dataScope);
+ }
+ return StringUtil.isNotBlank(dataScope.getResourceCode()) ? dataScope : null;
+ }
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
+ * @return DataScopeModel
+ */
+ public static DataScopeModel getDataScopeByCode(String code) {
+ DataScopeModel dataScope = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, code, DataScopeModel.class, Boolean.FALSE);
+ if (dataScope == null || !dataScope.getSearched()) {
+ dataScope = getDataScopeClient().getDataScopeByCode(code);
+ CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, code, dataScope);
+ }
+ return StringUtil.isNotBlank(dataScope.getResourceCode()) ? dataScope : null;
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬瀛愮骇
+ *
+ * @param deptId 閮ㄩ棬id
+ * @return deptIds
+ */
+ public static List<Long> getDeptAncestors(Long deptId) {
+ List ancestors = CacheUtil.get(SYS_CACHE, DEPT_CACHE_ANCESTORS, deptId, List.class);
+ if (CollectionUtil.isEmpty(ancestors)) {
+ ancestors = getDataScopeClient().getDeptAncestors(deptId);
+ CacheUtil.put(SYS_CACHE, DEPT_CACHE_ANCESTORS, deptId, ancestors);
+ }
+ return ancestors;
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/config/ScopeConfiguration.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/config/ScopeConfiguration.java
new file mode 100644
index 0000000..27ba4d3
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/config/ScopeConfiguration.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.config;
+
+
+import com.vci.ubcs.system.handler.DataScopeModelHandler;
+import lombok.AllArgsConstructor;
+import org.springblade.core.datascope.handler.ScopeModelHandler;
+import org.springblade.core.secure.config.RegistryConfiguration;
+import org.springblade.core.secure.handler.IPermissionHandler;
+import com.vci.ubcs.system.handler.ApiScopePermissionHandler;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 鍏叡灏佽鍖呴厤缃被
+ *
+ * @author Chill
+ */
+@Configuration(proxyBeanMethods = false)
+@AllArgsConstructor
+@AutoConfigureBefore(RegistryConfiguration.class)
+public class ScopeConfiguration {
+
+ @Bean
+ public ScopeModelHandler scopeModelHandler() {
+ return new DataScopeModelHandler();
+ }
+
+ @Bean
+ public IPermissionHandler permissionHandler() {
+ return new ApiScopePermissionHandler();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClient.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClient.java
new file mode 100644
index 0000000..053ceaa
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClient.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 鎺ュ彛鏉冮檺Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_SYSTEM_NAME,
+ fallback = IApiScopeClientFallback.class
+)
+public interface IApiScopeClient {
+
+ String API_PREFIX = "/client/api-scope";
+ String PERMISSION_PATH = API_PREFIX + "/permission-path";
+ String PERMISSION_CODE = API_PREFIX + "/permission-code";
+
+ /**
+ * 鑾峰彇鎺ュ彛鏉冮檺鍦板潃
+ *
+ * @param roleId 瑙掕壊id
+ * @return permissions
+ */
+ @GetMapping(PERMISSION_PATH)
+ List<String> permissionPath(@RequestParam("roleId") String roleId);
+
+ /**
+ * 鑾峰彇鎺ュ彛鏉冮檺淇℃伅
+ *
+ * @param permission 鏉冮檺缂栧彿
+ * @param roleId 瑙掕壊id
+ * @return permissions
+ */
+ @GetMapping(PERMISSION_CODE)
+ List<String> permissionCode(@RequestParam("permission") String permission, @RequestParam("roleId") String roleId);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClientFallback.java
new file mode 100644
index 0000000..001cd59
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IApiScopeClientFallback.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * IApiScopeClientFallback
+ *
+ * @author Chill
+ */
+@Component
+public class IApiScopeClientFallback implements IApiScopeClient {
+ @Override
+ public List<String> permissionPath(String roleId) {
+ return null;
+ }
+
+ @Override
+ public List<String> permissionCode(String permission, String roleId) {
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClient.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClient.java
new file mode 100644
index 0000000..fca2a12
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClient.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import org.springblade.core.datascope.model.DataScopeModel;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 鏁版嵁鏉冮檺Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_SYSTEM_NAME,
+ fallback = IDataScopeClientFallback.class
+)
+public interface IDataScopeClient {
+
+ String API_PREFIX = "/client/data-scope";
+ String GET_DATA_SCOPE_BY_MAPPER = API_PREFIX + "/by-mapper";
+ String GET_DATA_SCOPE_BY_CODE = API_PREFIX + "/by-code";
+ String GET_DEPT_ANCESTORS = API_PREFIX + "/dept-ancestors";
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param mapperId 鏁版嵁鏉冮檺mapperId
+ * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
+ * @return DataScopeModel
+ */
+ @GetMapping(GET_DATA_SCOPE_BY_MAPPER)
+ DataScopeModel getDataScopeByMapper(@RequestParam("mapperId") String mapperId, @RequestParam("roleId") String roleId);
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
+ * @return DataScopeModel
+ */
+ @GetMapping(GET_DATA_SCOPE_BY_CODE)
+ DataScopeModel getDataScopeByCode(@RequestParam("code") String code);
+
+ /**
+ * 鑾峰彇閮ㄩ棬瀛愮骇
+ *
+ * @param deptId 閮ㄩ棬id
+ * @return deptIds
+ */
+ @GetMapping(GET_DEPT_ANCESTORS)
+ List<Long> getDeptAncestors(@RequestParam("deptId") Long deptId);
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClientFallback.java
new file mode 100644
index 0000000..fd6018d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/feign/IDataScopeClientFallback.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import org.springblade.core.datascope.model.DataScopeModel;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * IDataScopeClientFallback
+ *
+ * @author Chill
+ */
+@Component
+public class IDataScopeClientFallback implements IDataScopeClient {
+ @Override
+ public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
+ return null;
+ }
+
+ @Override
+ public DataScopeModel getDataScopeByCode(String code) {
+ return null;
+ }
+
+ @Override
+ public List<Long> getDeptAncestors(Long deptId) {
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/ApiScopePermissionHandler.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/ApiScopePermissionHandler.java
new file mode 100644
index 0000000..509adbf
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/ApiScopePermissionHandler.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.handler;
+
+import com.vci.ubcs.system.cache.ApiScopeCache;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.handler.IPermissionHandler;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.WebUtil;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 鎺ュ彛鏉冮檺鏍¢獙绫�
+ *
+ * @author Chill
+ */
+public class ApiScopePermissionHandler implements IPermissionHandler {
+
+ @Override
+ public boolean permissionAll() {
+ HttpServletRequest request = WebUtil.getRequest();
+ BladeUser user = AuthUtil.getUser();
+ if (request == null || user == null) {
+ return false;
+ }
+ String uri = request.getRequestURI();
+ List<String> paths = ApiScopeCache.permissionPath(user.getRoleId());
+ if (paths == null || paths.size() == 0) {
+ return false;
+ }
+ return paths.stream().anyMatch(uri::contains);
+ }
+
+ @Override
+ public boolean hasPermission(String permission) {
+ HttpServletRequest request = WebUtil.getRequest();
+ BladeUser user = AuthUtil.getUser();
+ if (request == null || user == null) {
+ return false;
+ }
+ List<String> codes = ApiScopeCache.permissionCode(permission, user.getRoleId());
+ return codes != null && codes.size() != 0;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/DataScopeModelHandler.java b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/DataScopeModelHandler.java
new file mode 100644
index 0000000..4ca0c14
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-scope-api/src/main/java/com/vci/ubcs/system/handler/DataScopeModelHandler.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.handler;
+
+import com.vci.ubcs.system.cache.DataScopeCache;
+import org.springblade.core.datascope.handler.ScopeModelHandler;
+import org.springblade.core.datascope.model.DataScopeModel;
+
+import java.util.List;
+
+/**
+ * 閫氱敤鏁版嵁鏉冮檺瑙勫垯
+ *
+ * @author Chill
+ */
+public class DataScopeModelHandler implements ScopeModelHandler {
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param mapperId 鏁版嵁鏉冮檺mapperId
+ * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
+ * @return DataScopeModel
+ */
+ @Override
+ public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
+ return DataScopeCache.getDataScopeByMapper(mapperId, roleId);
+ }
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
+ * @return DataScopeModel
+ */
+ @Override
+ public DataScopeModel getDataScopeByCode(String code) {
+ return DataScopeCache.getDataScopeByCode(code);
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬瀛愮骇
+ *
+ * @param deptId 閮ㄩ棬id
+ * @return deptIds
+ */
+ @Override
+ public List<Long> getDeptAncestors(Long deptId) {
+ return DataScopeCache.getDeptAncestors(deptId);
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-system-api/pom.xml
new file mode 100644
index 0000000..dd0f493
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-system-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/ParamCache.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/ParamCache.java
new file mode 100644
index 0000000..c5bee3e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/ParamCache.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import com.vci.ubcs.system.feign.ISysClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import com.vci.ubcs.system.entity.Param;
+
+import static org.springblade.core.cache.constant.CacheConstant.PARAM_CACHE;
+
+/**
+ * 鍙傛暟缂撳瓨宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class ParamCache {
+
+ private static final String PARAM_ID = "param:id:";
+ private static final String PARAM_VALUE = "param:value:";
+
+ private static ISysClient sysClient;
+
+ private static ISysClient getSysClient() {
+ if (sysClient == null) {
+ sysClient = SpringUtil.getBean(ISysClient.class);
+ }
+ return sysClient;
+ }
+
+ /**
+ * 鑾峰彇鍙傛暟瀹炰綋
+ *
+ * @param id 涓婚敭
+ * @return Param
+ */
+ public static Param getById(Long id) {
+ return CacheUtil.get(PARAM_CACHE, PARAM_ID, id, () -> {
+ R<Param> result = getSysClient().getParam(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇鍙傛暟閰嶇疆
+ *
+ * @param paramKey 鍙傛暟鍊�
+ * @return String
+ */
+ public static String getValue(String paramKey) {
+ return CacheUtil.get(PARAM_CACHE, PARAM_VALUE, paramKey, () -> {
+ R<String> result = getSysClient().getParamValue(paramKey);
+ return result.getData();
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/RegionCache.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/RegionCache.java
new file mode 100644
index 0000000..f7b8c73
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/RegionCache.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+import com.vci.ubcs.system.feign.ISysClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import com.vci.ubcs.system.entity.Region;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 琛屾斂鍖哄垝缂撳瓨宸ュ叿绫�
+ *
+ * @author Chill
+ */
+public class RegionCache {
+ public static final int PROVINCE_LEVEL = 1;
+ public static final int CITY_LEVEL = 2;
+ public static final int DISTRICT_LEVEL = 3;
+ public static final int TOWN_LEVEL = 4;
+ public static final int VILLAGE_LEVEL = 5;
+
+ private static final String REGION_CODE = "region:code:";
+
+ private static ISysClient sysClient;
+
+ private static ISysClient getSysClient() {
+ if (sysClient == null) {
+ sysClient = SpringUtil.getBean(ISysClient.class);
+ }
+ return sysClient;
+ }
+
+ /**
+ * 鑾峰彇琛屾斂鍖哄垝瀹炰綋
+ *
+ * @param code 鍖哄垝缂栧彿
+ * @return Param
+ */
+ public static Region getByCode(String code) {
+ return CacheUtil.get(SYS_CACHE, REGION_CODE, code, () -> {
+ R<Region> result = getSysClient().getRegion(code);
+ return result.getData();
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/SysCache.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/SysCache.java
new file mode 100644
index 0000000..3c1e0cd
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/SysCache.java
@@ -0,0 +1,374 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.cache;
+
+
+import com.vci.ubcs.system.entity.*;
+import com.vci.ubcs.system.feign.ISysClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 绯荤粺缂撳瓨
+ *
+ * @author Chill
+ */
+public class SysCache {
+ private static final String MENU_ID = "menu:id:";
+ private static final String DEPT_ID = "dept:id:";
+ private static final String DEPT_NAME = "dept:name:";
+ private static final String DEPT_NAME_FUZZY = "dept:nameFuzzy:";
+ private static final String DEPT_NAME_ID = "deptName:id:";
+ private static final String DEPT_NAMES_ID = "deptNames:id:";
+ private static final String DEPT_CHILD_ID = "deptChild:id:";
+ private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:";
+ private static final String POST_ID = "post:id:";
+ private static final String POST_NAME = "post:name:";
+ private static final String POST_NAME_FUZZY = "post:nameFuzzy:";
+ private static final String POST_NAME_ID = "postName:id:";
+ private static final String POST_NAMES_ID = "postNames:id:";
+ private static final String ROLE_ID = "role:id:";
+ private static final String ROLE_NAME = "role:name:";
+ private static final String ROLE_NAME_ID = "roleName:id:";
+ private static final String ROLE_NAMES_ID = "roleNames:id:";
+ private static final String ROLE_ALIAS_ID = "roleAlias:id:";
+ private static final String ROLE_ALIASES_ID = "roleAliases:id:";
+ public static final String TENANT_ID = "tenant:id:";
+ public static final String TENANT_TENANT_ID = "tenant:tenantId:";
+ public static final String TENANT_PACKAGE_ID = "tenant:packageId:";
+
+ private static ISysClient sysClient;
+
+ private static ISysClient getSysClient() {
+ if (sysClient == null) {
+ sysClient = SpringUtil.getBean(ISysClient.class);
+ }
+ return sysClient;
+ }
+
+ /**
+ * 鑾峰彇鑿滃崟
+ *
+ * @param id 涓婚敭
+ * @return 鑿滃崟
+ */
+ public static Menu getMenu(Long id) {
+ return CacheUtil.get(SYS_CACHE, MENU_ID, id, () -> {
+ R<Menu> result = getSysClient().getMenu(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬
+ *
+ * @param id 涓婚敭
+ * @return 閮ㄩ棬
+ */
+ public static Dept getDept(Long id) {
+ return CacheUtil.get(SYS_CACHE, DEPT_ID, id, () -> {
+ R<Dept> result = getSysClient().getDept(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬id
+ *
+ * @param tenantId 绉熸埛id
+ * @param deptNames 閮ㄩ棬鍚�
+ * @return 閮ㄩ棬id
+ */
+ public static String getDeptIds(String tenantId, String deptNames) {
+ return CacheUtil.get(SYS_CACHE, DEPT_NAME, tenantId + StringPool.DASH + deptNames, () -> {
+ R<String> result = getSysClient().getDeptIds(tenantId, deptNames);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬id
+ *
+ * @param tenantId 绉熸埛id
+ * @param deptNames 閮ㄩ棬鍚嶆ā绯婃煡璇�
+ * @return 閮ㄩ棬id
+ */
+ public static String getDeptIdsByFuzzy(String tenantId, String deptNames) {
+ return CacheUtil.get(SYS_CACHE, DEPT_NAME_FUZZY, tenantId + StringPool.DASH + deptNames, () -> {
+ R<String> result = getSysClient().getDeptIdsByFuzzy(tenantId, deptNames);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚�
+ *
+ * @param id 涓婚敭
+ * @return 閮ㄩ棬鍚�
+ */
+ public static String getDeptName(Long id) {
+ return CacheUtil.get(SYS_CACHE, DEPT_NAME_ID, id, () -> {
+ R<String> result = getSysClient().getDeptName(id);
+ return result.getData();
+ });
+ }
+
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚嶉泦鍚�
+ *
+ * @param deptIds 涓婚敭闆嗗悎
+ * @return 閮ㄩ棬鍚�
+ */
+ public static List<String> getDeptNames(String deptIds) {
+ return CacheUtil.get(SYS_CACHE, DEPT_NAMES_ID, deptIds, () -> {
+ R<List<String>> result = getSysClient().getDeptNames(deptIds);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛愰儴闂ㄩ泦鍚�
+ *
+ * @param deptId 涓婚敭
+ * @return 瀛愰儴闂�
+ */
+ public static List<Dept> getDeptChild(Long deptId) {
+ return CacheUtil.get(SYS_CACHE, DEPT_CHILD_ID, deptId, () -> {
+ R<List<Dept>> result = getSysClient().getDeptChild(deptId);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瀛愰儴闂↖D闆嗗悎
+ *
+ * @param deptId 涓婚敭
+ * @return 瀛愰儴闂↖D
+ */
+ public static List<Long> getDeptChildIds(Long deptId) {
+ if (deptId == null) {
+ return null;
+ }
+ List<Long> deptIdList = CacheUtil.get(SYS_CACHE, DEPT_CHILDIDS_ID, deptId, List.class);
+ if (deptIdList == null) {
+ deptIdList = new ArrayList<>();
+ List<Dept> deptChild = getDeptChild(deptId);
+ if (deptChild != null) {
+ List<Long> collect = deptChild.stream().map(Dept::getId).collect(Collectors.toList());
+ deptIdList.addAll(collect);
+ }
+ deptIdList.add(deptId);
+ CacheUtil.put(SYS_CACHE, DEPT_CHILDIDS_ID, deptId, deptIdList);
+ }
+ return deptIdList;
+ }
+
+ /**
+ * 鑾峰彇宀椾綅
+ *
+ * @param id 涓婚敭
+ * @return
+ */
+ public static Post getPost(Long id) {
+ return CacheUtil.get(SYS_CACHE, POST_ID, id, () -> {
+ R<Post> result = getSysClient().getPost(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇宀椾綅id
+ *
+ * @param tenantId 绉熸埛id
+ * @param postNames 宀椾綅鍚�
+ * @return
+ */
+ public static String getPostIds(String tenantId, String postNames) {
+ return CacheUtil.get(SYS_CACHE, POST_NAME, tenantId + StringPool.DASH + postNames, () -> {
+ R<String> result = getSysClient().getPostIds(tenantId, postNames);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇宀椾綅id
+ *
+ * @param tenantId 绉熸埛id
+ * @param postNames 宀椾綅鍚嶆ā绯婃煡璇�
+ * @return
+ */
+ public static String getPostIdsByFuzzy(String tenantId, String postNames) {
+ return CacheUtil.get(SYS_CACHE, POST_NAME_FUZZY, tenantId + StringPool.DASH + postNames, () -> {
+ R<String> result = getSysClient().getPostIdsByFuzzy(tenantId, postNames);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇宀椾綅鍚�
+ *
+ * @param id 涓婚敭
+ * @return 宀椾綅鍚�
+ */
+ public static String getPostName(Long id) {
+ return CacheUtil.get(SYS_CACHE, POST_NAME_ID, id, () -> {
+ R<String> result = getSysClient().getPostName(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇宀椾綅鍚嶉泦鍚�
+ *
+ * @param postIds 涓婚敭闆嗗悎
+ * @return 宀椾綅鍚�
+ */
+ public static List<String> getPostNames(String postIds) {
+ return CacheUtil.get(SYS_CACHE, POST_NAMES_ID, postIds, () -> {
+ R<List<String>> result = getSysClient().getPostNames(postIds);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊
+ *
+ * @param id 涓婚敭
+ * @return Role
+ */
+ public static Role getRole(Long id) {
+ return CacheUtil.get(SYS_CACHE, ROLE_ID, id, () -> {
+ R<Role> result = getSysClient().getRole(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊id
+ *
+ * @param tenantId 绉熸埛id
+ * @param roleNames 瑙掕壊鍚�
+ * @return
+ */
+ public static String getRoleIds(String tenantId, String roleNames) {
+ return CacheUtil.get(SYS_CACHE, ROLE_NAME, tenantId + StringPool.DASH + roleNames, () -> {
+ R<String> result = getSysClient().getRoleIds(tenantId, roleNames);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param id 涓婚敭
+ * @return 瑙掕壊鍚�
+ */
+ public static String getRoleName(Long id) {
+ return CacheUtil.get(SYS_CACHE, ROLE_NAME_ID, id, () -> {
+ R<String> result = getSysClient().getRoleName(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊鍒悕
+ *
+ * @param id 涓婚敭
+ * @return 瑙掕壊鍒悕
+ */
+ public static String getRoleAlias(Long id) {
+ return CacheUtil.get(SYS_CACHE, ROLE_ALIAS_ID, id, () -> {
+ R<String> result = getSysClient().getRoleAlias(id);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊鍚嶉泦鍚�
+ *
+ * @param roleIds 涓婚敭闆嗗悎
+ * @return 瑙掕壊鍚�
+ */
+ public static List<String> getRoleNames(String roleIds) {
+ return CacheUtil.get(SYS_CACHE, ROLE_NAMES_ID, roleIds, () -> {
+ R<List<String>> result = getSysClient().getRoleNames(roleIds);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊鍒悕闆嗗悎
+ *
+ * @param roleIds 涓婚敭闆嗗悎
+ * @return 瑙掕壊鍒悕
+ */
+ public static List<String> getRoleAliases(String roleIds) {
+ return CacheUtil.get(SYS_CACHE, ROLE_ALIASES_ID, roleIds, () -> {
+ R<List<String>> result = getSysClient().getRoleAliases(roleIds);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇绉熸埛
+ *
+ * @param id 涓婚敭
+ * @return Tenant
+ */
+ public static Tenant getTenant(Long id) {
+ return CacheUtil.get(SYS_CACHE, TENANT_ID, id, () -> {
+ R<Tenant> result = getSysClient().getTenant(id);
+ return result.getData();
+ }, Boolean.FALSE);
+ }
+
+ /**
+ * 鑾峰彇绉熸埛
+ *
+ * @param tenantId 绉熸埛id
+ * @return Tenant
+ */
+ public static Tenant getTenant(String tenantId) {
+ return CacheUtil.get(SYS_CACHE, TENANT_TENANT_ID, tenantId, () -> {
+ R<Tenant> result = getSysClient().getTenant(tenantId);
+ return result.getData();
+ }, Boolean.FALSE);
+ }
+
+ /**
+ * 鑾峰彇绉熸埛浜у搧鍖�
+ *
+ * @param tenantId 绉熸埛id
+ * @return Tenant
+ */
+ public static TenantPackage getTenantPackage(String tenantId) {
+ return CacheUtil.get(SYS_CACHE, TENANT_PACKAGE_ID, tenantId, () -> {
+ R<TenantPackage> result = getSysClient().getTenantPackage(tenantId);
+ return result.getData();
+ }, Boolean.FALSE);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/DeptDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/DeptDTO.java
new file mode 100644
index 0000000..681b7b1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/DeptDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import com.vci.ubcs.system.entity.Dept;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DeptDTO extends Dept {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/MenuDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/MenuDTO.java
new file mode 100644
index 0000000..e7a9558
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/MenuDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+public class MenuDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private String alias;
+ private String path;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ParamDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ParamDTO.java
new file mode 100644
index 0000000..3d075db
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ParamDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import com.vci.ubcs.system.entity.Param;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ParamDTO extends Param {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/PostDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/PostDTO.java
new file mode 100644
index 0000000..04fbe07
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/PostDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.system.entity.Post;
+
+/**
+ * 宀椾綅琛ㄦ暟鎹紶杈撳璞″疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PostDTO extends Post {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleDTO.java
new file mode 100644
index 0000000..8339a65
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.system.entity.Role;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RoleDTO extends Role {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleMenuDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleMenuDTO.java
new file mode 100644
index 0000000..f2cf921
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/RoleMenuDTO.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.vci.ubcs.system.entity.RoleMenu;
+
+/**
+ * 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RoleMenuDTO extends RoleMenu {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ApiScope.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ApiScope.java
new file mode 100644
index 0000000..493f3c2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ApiScope.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_auth_scope_api")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ApiScope瀵硅薄", description = "ApiScope瀵硅薄")
+public class ApiScope extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鑿滃崟涓婚敭
+ */
+ @ApiModelProperty(value = "鑿滃崟涓婚敭")
+ private Long menuId;
+ /**
+ * 璧勬簮缂栧彿
+ */
+ @ApiModelProperty(value = "璧勬簮缂栧彿")
+ private String resourceCode;
+ /**
+ * 鎺ュ彛鏉冮檺鍚嶇О
+ */
+ @ApiModelProperty(value = "鎺ュ彛鏉冮檺鍚嶇О")
+ private String scopeName;
+ /**
+ * 鎺ュ彛鏉冮檺瀛楁
+ */
+ @ApiModelProperty(value = "鎺ュ彛鏉冮檺瀛楁")
+ private String scopePath;
+ /**
+ * 鎺ュ彛鏉冮檺绫诲瀷
+ */
+ @ApiModelProperty(value = "鎺ュ彛鏉冮檺绫诲瀷")
+ private Integer scopeType;
+ /**
+ * 鎺ュ彛鏉冮檺澶囨敞
+ */
+ @ApiModelProperty(value = "鎺ュ彛鏉冮檺澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/AuthClient.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/AuthClient.java
new file mode 100644
index 0000000..62dcde1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/AuthClient.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_sys_client")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Client瀵硅薄", description = "Client瀵硅薄")
+public class AuthClient extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 瀹㈡埛绔痠d
+ */
+ @ApiModelProperty(value = "瀹㈡埛绔痠d")
+ private String clientId;
+ /**
+ * 瀹㈡埛绔瘑閽�
+ */
+ @ApiModelProperty(value = "瀹㈡埛绔瘑閽�")
+ private String clientSecret;
+ /**
+ * 璧勬簮闆嗗悎
+ */
+ @ApiModelProperty(value = "璧勬簮闆嗗悎")
+ private String resourceIds;
+ /**
+ * 鎺堟潈鑼冨洿
+ */
+ @ApiModelProperty(value = "鎺堟潈鑼冨洿")
+ private String scope;
+ /**
+ * 鎺堟潈绫诲瀷
+ */
+ @ApiModelProperty(value = "鎺堟潈绫诲瀷")
+ private String authorizedGrantTypes;
+ /**
+ * 鍥炶皟鍦板潃
+ */
+ @ApiModelProperty(value = "鍥炶皟鍦板潃")
+ private String webServerRedirectUri;
+ /**
+ * 鏉冮檺
+ */
+ @ApiModelProperty(value = "鏉冮檺")
+ private String authorities;
+ /**
+ * 浠ょ墝杩囨湡绉掓暟
+ */
+ @ApiModelProperty(value = "浠ょ墝杩囨湡绉掓暟")
+ private Integer accessTokenValidity;
+ /**
+ * 鍒锋柊浠ょ墝杩囨湡绉掓暟
+ */
+ @ApiModelProperty(value = "鍒锋柊浠ょ墝杩囨湡绉掓暟")
+ private Integer refreshTokenValidity;
+ /**
+ * 闄勫姞璇存槑
+ */
+ @JsonIgnore
+ @ApiModelProperty(value = "闄勫姞璇存槑")
+ private String additionalInformation;
+ /**
+ * 鑷姩鎺堟潈
+ */
+ @ApiModelProperty(value = "鑷姩鎺堟潈")
+ private String autoapprove;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Combination.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Combination.java
new file mode 100644
index 0000000..a46d65c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Combination.java
@@ -0,0 +1,112 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)瀹炰綋绫�
+ *
+ * @author ldc
+ * @since 2023-03-20 14:56:26
+ */
+@Data
+@TableName("pl_sys_combination")
+@ApiModel(value = "Combination瀵硅薄", description = "Combination瀵硅薄")
+public class Combination implements Serializable {
+ private static final long serialVersionUID = 905936175743821305L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 缁勫悎鍚嶇О
+ */
+ @ApiModelProperty(value = "缁勫悎鍚嶇О")
+ private String name;
+
+ /**
+ * 鎻忚堪
+ */
+ @TableField("\"DESC\"")
+ @ApiModelProperty(value = "鎻忚堪")
+ private String desc;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @ApiModelProperty(value = "鍒涘缓浜�")
+ private String createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜�
+ */
+ @ApiModelProperty(value = "淇敼浜�")
+ private String updateUser;
+
+ /**
+ * 鎺堟潈浜�
+ */
+ @ApiModelProperty(value = "鎺堟潈浜�")
+ private String licensors;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Combination that = (Combination) o;
+ return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(desc, that.desc) && Objects.equals(createTime, that.createTime) && Objects.equals(createUser, that.createUser) && Objects.equals(updateTime, that.updateTime) && Objects.equals(updateUser, that.updateUser) && Objects.equals(licensors, that.licensors);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, name, desc, createTime, createUser, updateTime, updateUser, licensors);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/DataScope.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/DataScope.java
new file mode 100644
index 0000000..af86ec2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/DataScope.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_auth_scope_data")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DataScope瀵硅薄", description = "DataScope瀵硅薄")
+public class DataScope extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鑿滃崟涓婚敭
+ */
+ @ApiModelProperty(value = "鑿滃崟涓婚敭")
+ private Long menuId;
+ /**
+ * 璧勬簮缂栧彿
+ */
+ @ApiModelProperty(value = "璧勬簮缂栧彿")
+ private String resourceCode;
+ /**
+ * 鏁版嵁鏉冮檺鍚嶇О
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺鍚嶇О")
+ private String scopeName;
+ /**
+ * 鏁版嵁鏉冮檺鍙瀛楁
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺鍙瀛楁")
+ private String scopeField;
+ /**
+ * 鏁版嵁鏉冮檺绫诲悕
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺绫诲悕")
+ private String scopeClass;
+ /**
+ * 鏁版嵁鏉冮檺瀛楁
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺瀛楁")
+ private String scopeColumn;
+ /**
+ * 鏁版嵁鏉冮檺绫诲瀷
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺绫诲瀷")
+ private Integer scopeType;
+ /**
+ * 鏁版嵁鏉冮檺鍊煎煙
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺鍊煎煙")
+ private String scopeValue;
+ /**
+ * 鏁版嵁鏉冮檺澶囨敞
+ */
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Dept.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Dept.java
new file mode 100644
index 0000000..77a8b90
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Dept.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_dept")
+@ApiModel(value = "Dept瀵硅薄", description = "Dept瀵硅薄")
+public class Dept implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绉熸埛ID
+ */
+ @ApiModelProperty(value = "绉熸埛ID")
+ private String tenantId;
+
+ /**
+ * 鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 鏈烘瀯鍚�
+ */
+ @ApiModelProperty(value = "鏈烘瀯鍚�")
+ private String deptName;
+
+ /**
+ * 鏈烘瀯鍏ㄧО
+ */
+ @ApiModelProperty(value = "閮ㄩ棬鍏ㄧО")
+ private String fullName;
+
+ /**
+ * 绁栫骇鏈烘瀯涓婚敭
+ */
+ @ApiModelProperty(value = "绁栫骇鏈烘瀯涓婚敭")
+ private String ancestors;
+
+ /**
+ * 鏈烘瀯绫诲瀷
+ */
+ @ApiModelProperty(value = "鏈烘瀯绫诲瀷")
+ private Integer deptCategory;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Menu.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Menu.java
new file mode 100644
index 0000000..790f531
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Menu.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.tool.utils.Func;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_menu")
+@ApiModel(value = "Menu瀵硅薄", description = "Menu瀵硅薄")
+public class Menu implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鑿滃崟鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鑿滃崟鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 鑿滃崟缂栧彿
+ */
+ @ApiModelProperty(value = "鑿滃崟缂栧彿")
+ private String code;
+
+ /**
+ * 鑿滃崟鍚嶇О
+ */
+ @ApiModelProperty(value = "鑿滃崟鍚嶇О")
+ private String name;
+
+ /**
+ * 鑿滃崟鍒悕
+ */
+ @ApiModelProperty(value = "鑿滃崟鍒悕")
+ private String alias;
+
+ /**
+ * 璇锋眰鍦板潃
+ */
+ @ApiModelProperty(value = "璇锋眰鍦板潃")
+ private String path;
+
+ /**
+ * 鑿滃崟璧勬簮
+ */
+ @ApiModelProperty(value = "鑿滃崟璧勬簮")
+ private String source;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 鑿滃崟绫诲瀷
+ */
+ @ApiModelProperty(value = "鑿滃崟绫诲瀷")
+ private Integer category;
+
+ /**
+ * 鎿嶄綔鎸夐挳绫诲瀷
+ */
+ @ApiModelProperty(value = "鎿嶄綔鎸夐挳绫诲瀷")
+ private Integer action;
+
+ /**
+ * 鏄惁鎵撳紑鏂伴〉闈�
+ */
+ @ApiModelProperty(value = "鏄惁鎵撳紑鏂伴〉闈�")
+ private Integer isOpen;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ Menu other = (Menu) obj;
+ if (Func.equals(this.getId(), other.getId())) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, parentId, code);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Param.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Param.java
new file mode 100644
index 0000000..a72e25a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Param.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_oq_param")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Param瀵硅薄", description = "Param瀵硅薄")
+public class Param extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍙傛暟鍚�
+ */
+ @ApiModelProperty(value = "鍙傛暟鍚�")
+ private String paramName;
+
+ /**
+ * 鍙傛暟閿�
+ */
+ @ApiModelProperty(value = "鍙傛暟閿�")
+ private String paramKey;
+
+ /**
+ * 鍙傛暟鍊�
+ */
+ @ApiModelProperty(value = "鍙傛暟鍊�")
+ private String paramValue;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Post.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Post.java
new file mode 100644
index 0000000..ba72d5e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Post.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 宀椾綅琛ㄥ疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_post")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Post瀵硅薄", description = "宀椾綅琛�")
+public class Post extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绫诲瀷
+ */
+ @ApiModelProperty(value = "绫诲瀷")
+ private Integer category;
+ /**
+ * 宀椾綅缂栧彿
+ */
+ @ApiModelProperty(value = "宀椾綅缂栧彿")
+ private String postCode;
+ /**
+ * 宀椾綅鍚嶇О
+ */
+ @ApiModelProperty(value = "宀椾綅鍚嶇О")
+ private String postName;
+ /**
+ * 宀椾綅鎺掑簭
+ */
+ @ApiModelProperty(value = "宀椾綅鎺掑簭")
+ private Integer sort;
+ /**
+ * 宀椾綅鎻忚堪
+ */
+ @ApiModelProperty(value = "宀椾綅鎻忚堪")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Region.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Region.java
new file mode 100644
index 0000000..17bd660
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Region.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 琛屾斂鍖哄垝琛ㄥ疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_region")
+@ApiModel(value = "Region瀵硅薄", description = "琛屾斂鍖哄垝琛�")
+public class Region implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鍖哄垝缂栧彿
+ */
+ @TableId(value = "code", type = IdType.INPUT)
+ @ApiModelProperty(value = "鍖哄垝缂栧彿")
+ private String code;
+ /**
+ * 鐖跺尯鍒掔紪鍙�
+ */
+ @ApiModelProperty(value = "鐖跺尯鍒掔紪鍙�")
+ private String parentCode;
+ /**
+ * 绁栧尯鍒掔紪鍙�
+ */
+ @ApiModelProperty(value = "绁栧尯鍒掔紪鍙�")
+ private String ancestors;
+ /**
+ * 鍖哄垝鍚嶇О
+ */
+ @ApiModelProperty(value = "鍖哄垝鍚嶇О")
+ private String name;
+ /**
+ * 鐪佺骇鍖哄垝缂栧彿
+ */
+ @ApiModelProperty(value = "鐪佺骇鍖哄垝缂栧彿")
+ private String provinceCode;
+ /**
+ * 鐪佺骇鍚嶇О
+ */
+ @ApiModelProperty(value = "鐪佺骇鍚嶇О")
+ private String provinceName;
+ /**
+ * 甯傜骇鍖哄垝缂栧彿
+ */
+ @ApiModelProperty(value = "甯傜骇鍖哄垝缂栧彿")
+ private String cityCode;
+ /**
+ * 甯傜骇鍚嶇О
+ */
+ @ApiModelProperty(value = "甯傜骇鍚嶇О")
+ private String cityName;
+ /**
+ * 鍖虹骇鍖哄垝缂栧彿
+ */
+ @ApiModelProperty(value = "鍖虹骇鍖哄垝缂栧彿")
+ private String districtCode;
+ /**
+ * 鍖虹骇鍚嶇О
+ */
+ @ApiModelProperty(value = "鍖虹骇鍚嶇О")
+ private String districtName;
+ /**
+ * 闀囩骇鍖哄垝缂栧彿
+ */
+ @ApiModelProperty(value = "闀囩骇鍖哄垝缂栧彿")
+ private String townCode;
+ /**
+ * 闀囩骇鍚嶇О
+ */
+ @ApiModelProperty(value = "闀囩骇鍚嶇О")
+ private String townName;
+ /**
+ * 鏉戠骇鍖哄垝缂栧彿
+ */
+ @ApiModelProperty(value = "鏉戠骇鍖哄垝缂栧彿")
+ private String villageCode;
+ /**
+ * 鏉戠骇鍚嶇О
+ */
+ @ApiModelProperty(value = "鏉戠骇鍚嶇О")
+ private String villageName;
+ /**
+ * 灞傜骇
+ */
+ @ApiModelProperty(value = "灞傜骇")
+ private Integer regionLevel;
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Role.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Role.java
new file mode 100644
index 0000000..e69f157
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Role.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+@TableName("pl_org_role")
+@ApiModel(value = "Role瀵硅薄", description = "Role瀵硅薄")
+public class Role implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绉熸埛ID
+ */
+ @ApiModelProperty(value = "绉熸埛ID")
+ private String tenantId;
+
+ /**
+ * 鐖朵富閿�
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐖朵富閿�")
+ private Long parentId;
+
+ /**
+ * 瑙掕壊鍚�
+ */
+ @ApiModelProperty(value = "瑙掕壊鍚�")
+ private String roleName;
+
+ /**
+ * 鎺掑簭
+ */
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ /**
+ * 瑙掕壊鍒悕
+ */
+ @ApiModelProperty(value = "瑙掕壊鍒悕")
+ private String roleAlias;
+
+ /**
+ * 鏄惁宸插垹闄�
+ */
+ @TableLogic
+ @ApiModelProperty(value = "鏄惁宸插垹闄�")
+ private Integer isDeleted;
+
+ public Role(String tenantId, Long parentId, String roleName, Integer sort, String roleAlias, Integer isDeleted) {
+ this.tenantId = tenantId;
+ this.parentId = parentId;
+ this.roleName = roleName;
+ this.sort = sort;
+ this.roleAlias = roleAlias;
+ this.isDeleted = isDeleted;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleMenu.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleMenu.java
new file mode 100644
index 0000000..1483b7e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleMenu.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@NoArgsConstructor
+@TableName("pl_org_role_menu")
+@ApiModel(value = "RoleMenu瀵硅薄", description = "RoleMenu瀵硅薄")
+public class RoleMenu implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鑿滃崟id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鑿滃崟id")
+ private Long menuId;
+
+ /**
+ * 瑙掕壊id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "瑙掕壊id")
+ private Long roleId;
+
+ public RoleMenu(Long menuId, Long roleId) {
+ this.menuId = menuId;
+ this.roleId = roleId;
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleScope.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleScope.java
new file mode 100644
index 0000000..cb34c1f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/RoleScope.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_auth_role_scope")
+@ApiModel(value = "RoleScope瀵硅薄", description = "RoleScope瀵硅薄")
+public class RoleScope implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鏉冮檺绫诲瀷
+ */
+ @ApiModelProperty(value = "鏉冮檺绫诲瀷")
+ private Integer scopeCategory;
+
+ /**
+ * 鏉冮檺id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鏉冮檺id")
+ private Long scopeId;
+
+ /**
+ * 瑙掕壊id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "瑙掕壊id")
+ private Long roleId;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Strategy.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Strategy.java
new file mode 100644
index 0000000..3526db2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Strategy.java
@@ -0,0 +1,175 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)瀹炰綋绫�
+ *
+ * @author ldc
+ * @since 2023-03-20 15:00:22
+ */
+@Data
+@TableName("pl_sys_pwdstrategy")
+@ApiModel(value = "Strategy瀵硅薄", description = "Strategy瀵硅薄")
+public class Strategy implements Serializable {
+ private static final long serialVersionUID = 420195522547332354L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绛栫暐鍚嶇О
+ */
+ @ApiModelProperty(value = "绛栫暐鍚嶇О")
+ private String strategyName;
+
+ /**
+ * 瀵嗙爜鏈�灏忛暱搴�
+ */
+ @ApiModelProperty(value = "瀵嗙爜鏈�灏忛暱搴�")
+ private Long minPwdLen;
+
+ /**
+ * 瀵嗙爜鏈�澶ч暱搴�
+ */
+ @ApiModelProperty(value = "瀵嗙爜鏈�澶ч暱搴�")
+ private Long maxPwdLen;
+
+ /**
+ * 瀵嗙爜缁勫悎鏂瑰紡
+ */
+ @ApiModelProperty(value = "瀵嗙爜缁勫悎鏂瑰紡")
+ private String combinationIds;
+
+ /**
+ * 蹇呭~绉嶇被
+ */
+ @ApiModelProperty(value = "蹇呭~绉嶇被")
+ private Long requiredType;
+
+ /**
+ * 杩囨湡鏃堕棿
+ */
+ @ApiModelProperty(value = "杩囨湡鏃堕棿")
+ private Long expirationTime;
+
+ /**
+ * 鎻愰啋鏃堕棿
+ */
+ @ApiModelProperty(value = "鎻愰啋鏃堕棿")
+ private Long reminderTime;
+
+ /**
+ * 閿佸畾娆℃暟
+ */
+ @ApiModelProperty(value = "閿佸畾娆℃暟")
+ private Long lockingNum;
+
+ /**
+ * 閿佸畾鏃堕棿
+ */
+ @ApiModelProperty(value = "閿佸畾鏃堕棿")
+ private Long lockingTime;
+
+ /**
+ * 鎻忚堪
+ */
+ @ApiModelProperty(value = "鎻忚堪")
+ @TableField("\"DESC\"")
+ private String desc;
+
+ /**
+ * 鏄惁涓洪粯璁ょ瓥鐣�
+ */
+ @ApiModelProperty(value = "鏄惁涓洪粯璁ょ瓥鐣�,鏄惁涓洪粯璁わ紝1浠h〃榛樿锛�0浠h〃闈為粯璁�")
+ private Long isDefault;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @ApiModelProperty(value = "鍒涘缓浜�")
+ private String createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜�
+ */
+ @ApiModelProperty(value = "淇敼浜�")
+ private String updateUser;
+
+ /**
+ * 鎺堟潈浜�
+ */
+ @ApiModelProperty(value = "鎺堟潈浜�")
+ private String licensors;
+
+ /**
+ * 缁勫悎鍚嶇О
+ */
+ @ApiModelProperty(value = "缁勫悎鍚嶇О")
+ @TableField(exist = false)
+ private String combinationNames;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ if (!super.equals(o)) {
+ return false;
+ }
+ Strategy strategy = (Strategy) o;
+ return Objects.equals(id, strategy.id) && Objects.equals(strategyName, strategy.strategyName) && Objects.equals(minPwdLen, strategy.minPwdLen) && Objects.equals(maxPwdLen, strategy.maxPwdLen) && Objects.equals(combinationIds, strategy.combinationIds) && Objects.equals(requiredType, strategy.requiredType) && Objects.equals(expirationTime, strategy.expirationTime) && Objects.equals(reminderTime, strategy.reminderTime) && Objects.equals(lockingNum, strategy.lockingNum) && Objects.equals(lockingTime, strategy.lockingTime) && Objects.equals(desc, strategy.desc) && Objects.equals(isDefault, strategy.isDefault);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), id, strategyName, minPwdLen, maxPwdLen, combinationIds, requiredType, expirationTime, reminderTime, lockingNum, lockingTime, desc, isDefault);
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Tenant.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Tenant.java
new file mode 100644
index 0000000..8fc78f3
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/Tenant.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.NullSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_tenant")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "Tenant瀵硅薄", description = "Tenant瀵硅薄")
+public class Tenant extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绉熸埛ID
+ */
+ @ApiModelProperty(value = "绉熸埛ID")
+ private String tenantId;
+
+ /**
+ * 绉熸埛鍏ㄧО
+ */
+ @ApiModelProperty(value = "绉熸埛鍏ㄧО")
+ private String fullName;
+
+ /**
+ * 绉熸埛鍚嶇О
+ */
+ @ApiModelProperty(value = "绉熸埛鍚嶇О")
+ private String tenantName;
+ /**
+ * 鍩熷悕鍦板潃
+ */
+ @ApiModelProperty(value = "鍩熷悕鍦板潃")
+ private String domainUrl;
+ /**
+ * 绯荤粺鑳屾櫙
+ */
+ @ApiModelProperty(value = "绯荤粺鑳屾櫙")
+ private String backgroundUrl;
+ /**
+ * 鑱旂郴浜�
+ */
+ @ApiModelProperty(value = "鑱旂郴浜�")
+ private String linkman;
+ /**
+ * 鑱旂郴鐢佃瘽
+ */
+ @ApiModelProperty(value = "鑱旂郴鐢佃瘽")
+ private String contactNumber;
+ /**
+ * 鑱旂郴鍦板潃
+ */
+ @ApiModelProperty(value = "鑱旂郴鍦板潃")
+ private String address;
+
+ /**
+ * 浜у搧鍖匢D
+ */
+ @JsonSerialize(nullsUsing = NullSerializer.class)
+ @ApiModelProperty(value = "浜у搧鍖匢D")
+ private Long packageId;
+ /**
+ * 鏁版嵁婧怚D
+ */
+ @JsonSerialize(nullsUsing = NullSerializer.class)
+ @ApiModelProperty(value = "鏁版嵁婧怚D")
+ private Long datasourceId;
+ /**
+ * 鎺堟潈鐮�
+ */
+ @ApiModelProperty(value = "鎺堟潈鐮�")
+ private String licenseKey;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TenantPackage.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TenantPackage.java
new file mode 100644
index 0000000..06be789
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TenantPackage.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+/**
+ * 绉熸埛浜у搧琛ㄥ疄浣撶被
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_org_tenant_package")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "TenantPackage瀵硅薄", description = "绉熸埛浜у搧琛�")
+public class TenantPackage extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 浜у搧鍖呭悕绉�
+ */
+ @ApiModelProperty(value = "浜у搧鍖呭悕绉�")
+ private String packageName;
+ /**
+ * 鑿滃崟ID
+ */
+ @ApiModelProperty(value = "鑿滃崟ID")
+ private String menuId;
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenu.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenu.java
new file mode 100644
index 0000000..d83ca64
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenu.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 椤堕儴鑿滃崟琛ㄥ疄浣撶被
+ *
+ * @author BladeX
+ */
+@Data
+@TableName("pl_sys_top_menu")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "TopMenu瀵硅薄", description = "椤堕儴鑿滃崟琛�")
+public class TopMenu extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 椤堕儴鑿滃崟缂栧彿
+ */
+ @ApiModelProperty(value = "椤堕儴鑿滃崟缂栧彿")
+ private String code;
+ /**
+ * 椤堕儴鑿滃崟鍚�
+ */
+ @ApiModelProperty(value = "椤堕儴鑿滃崟鍚�")
+ private String name;
+ /**
+ * 椤堕儴鑿滃崟璧勬簮
+ */
+ @ApiModelProperty(value = "椤堕儴鑿滃崟璧勬簮")
+ private String source;
+ /**
+ * 椤堕儴鑿滃崟鎺掑簭
+ */
+ @ApiModelProperty(value = "椤堕儴鑿滃崟鎺掑簭")
+ private Integer sort;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenuSetting.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenuSetting.java
new file mode 100644
index 0000000..2c156ef
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/TopMenuSetting.java
@@ -0,0 +1,38 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+/**
+ * TopMenuSetting
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_sys_top_menu_setting")
+public class TopMenuSetting {
+
+ /**
+ * 涓婚敭id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 椤堕儴鑿滃崟id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long topMenuId;
+
+ /**
+ * 鑿滃崟id
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long menuId;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/UserPwdstrategy.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/UserPwdstrategy.java
new file mode 100644
index 0000000..fbe8bf9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/UserPwdstrategy.java
@@ -0,0 +1,77 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * (UserPwdStrtategy)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2023-03-20 14:59:29
+ */
+
+@Data
+@NoArgsConstructor
+@TableName("pl_sys_user_pwdstrategy")
+@ApiModel(value = "UserPwdStrtategy", description = "UserPwdStrtategy")
+public class UserPwdstrategy implements Serializable {
+
+ private static final long serialVersionUid = -556926788101426521L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "ID", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛id
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛id")
+ private Long userId;
+
+ /**
+ * 瀵嗙爜绛栫暐id
+ */
+ @ApiModelProperty(value = "瀵嗙爜绛栫暐id")
+ @TableField(value = "PWDSTRATEGY_ID")
+ private Long pwdstrategyId;
+
+ public UserPwdstrategy(Long userId, Long pwdStrategyId) {
+ this.userId = userId;
+ this.pwdstrategyId = pwdStrategyId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ UserPwdstrategy that = (UserPwdstrategy) o;
+ return Objects.equals(id, that.id) && Objects.equals(userId, that.userId) && Objects.equals(pwdstrategyId, that.pwdstrategyId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, userId, pwdstrategyId);
+ }
+
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ValueRange.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ValueRange.java
new file mode 100644
index 0000000..910c211
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/ValueRange.java
@@ -0,0 +1,104 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * (ValueRange)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2023-03-20 14:59:29
+ */
+@Data
+@TableName("pl_sys_value_range")
+@ApiModel(value = "ValueRange", description = "ValueRange")
+public class ValueRange implements Serializable {
+ private static final long serialVersionUID = -62275902377620042L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鍊�
+ */
+ @ApiModelProperty(value = "鍊�")
+ private String value;
+
+ /**
+ * 缁勫悎鏂瑰紡ID
+ */
+ @ApiModelProperty(value = "缁勫悎鏂瑰紡ID")
+ private Long combinationId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @ApiModelProperty(value = "鍒涘缓浜�")
+ private String createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @DateTimeFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @JsonFormat(
+ pattern = "yyyy-MM-dd HH:mm:ss"
+ )
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜�
+ */
+ @ApiModelProperty(value = "淇敼浜�")
+ private String updateUser;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ if (!super.equals(o)) {
+ return false;
+ }
+ ValueRange that = (ValueRange) o;
+ return Objects.equals(id, that.id) && Objects.equals(value, that.value) && Objects.equals(combinationId, that.combinationId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), id, value, combinationId);
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java
new file mode 100644
index 0000000..b72209a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import com.vci.ubcs.system.entity.*;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_SYSTEM_NAME,
+ fallback = ISysClientFallback.class
+)
+public interface ISysClient {
+
+ String API_PREFIX = "/client";
+ String MENU = API_PREFIX + "/menu";
+ String DEPT = API_PREFIX + "/dept";
+ String DEPT_IDS = API_PREFIX + "/dept-ids";
+ String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
+ String DEPT_NAME = API_PREFIX + "/dept-name";
+ String DEPT_NAMES = API_PREFIX + "/dept-names";
+ String DEPT_CHILD = API_PREFIX + "/dept-child";
+ String POST = API_PREFIX + "/post";
+ String POST_IDS = API_PREFIX + "/post-ids";
+ String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
+ String POST_NAME = API_PREFIX + "/post-name";
+ String POST_NAMES = API_PREFIX + "/post-names";
+ String ROLE = API_PREFIX + "/role";
+ String ROLE_IDS = API_PREFIX + "/role-ids";
+ String ROLE_NAME = API_PREFIX + "/role-name";
+ String ROLE_NAMES = API_PREFIX + "/role-names";
+ String ROLE_ALIAS = API_PREFIX + "/role-alias";
+ String ROLE_ALIASES = API_PREFIX + "/role-aliases";
+ String TENANT = API_PREFIX + "/tenant";
+ String TENANT_ID = API_PREFIX + "/tenant-id";
+ //鏌ヨ瓒呯骇绠$悊鍛�
+ String TENANT_MGR_ID = API_PREFIX + "/tenant-mgr-id";
+ String TENANT_PACKAGE = API_PREFIX + "/tenant-package";
+ String PARAM = API_PREFIX + "/param";
+ String PARAM_VALUE = API_PREFIX + "/param-value";
+ String REGION = API_PREFIX + "/region";
+ String STRATEGY = API_PREFIX + "/query-tenantid-name";
+ String STRATEGYBYID = API_PREFIX + "/query-userid";
+ String REGEX = API_PREFIX + "/combination-regex";
+ String REGEXONE = API_PREFIX + "/combination-regex-one";
+ /**
+ * 鑾峰彇鑿滃崟
+ *
+ * @param id 涓婚敭
+ * @return Menu
+ */
+ @GetMapping(MENU)
+ R<Menu> getMenu(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇閮ㄩ棬
+ *
+ * @param id 涓婚敭
+ * @return Dept
+ */
+ @GetMapping(DEPT)
+ R<Dept> getDept(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇閮ㄩ棬id
+ *
+ * @param tenantId 绉熸埛id
+ * @param deptNames 閮ㄩ棬鍚�
+ * @return 閮ㄩ棬id
+ */
+ @GetMapping(DEPT_IDS)
+ R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
+
+ /**
+ * 鑾峰彇閮ㄩ棬id
+ *
+ * @param tenantId 绉熸埛id
+ * @param deptNames 閮ㄩ棬鍚�
+ * @return 閮ㄩ棬id
+ */
+ @GetMapping(DEPT_IDS_FUZZY)
+ R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚�
+ *
+ * @param id 涓婚敭
+ * @return 閮ㄩ棬鍚�
+ */
+ @GetMapping(DEPT_NAME)
+ R<String> getDeptName(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚�
+ *
+ * @param deptIds 涓婚敭
+ * @return
+ */
+ @GetMapping(DEPT_NAMES)
+ R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
+
+ /**
+ * 鑾峰彇瀛愰儴闂↖D
+ *
+ * @param deptId
+ * @return
+ */
+ @GetMapping(DEPT_CHILD)
+ R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId);
+
+ /**
+ * 鑾峰彇宀椾綅
+ *
+ * @param id 涓婚敭
+ * @return Post
+ */
+ @GetMapping(POST)
+ R<Post> getPost(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇宀椾綅id
+ *
+ * @param tenantId 绉熸埛id
+ * @param postNames 宀椾綅鍚�
+ * @return 宀椾綅id
+ */
+ @GetMapping(POST_IDS)
+ R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
+
+ /**
+ * 鑾峰彇宀椾綅id
+ *
+ * @param tenantId 绉熸埛id
+ * @param postNames 宀椾綅鍚�
+ * @return 宀椾綅id
+ */
+ @GetMapping(POST_IDS_FUZZY)
+ R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
+
+ /**
+ * 鑾峰彇宀椾綅鍚�
+ *
+ * @param id 涓婚敭
+ * @return 宀椾綅鍚�
+ */
+ @GetMapping(POST_NAME)
+ R<String> getPostName(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇宀椾綅鍚�
+ *
+ * @param postIds 涓婚敭
+ * @return
+ */
+ @GetMapping(POST_NAMES)
+ R<List<String>> getPostNames(@RequestParam("postIds") String postIds);
+
+ /**
+ * 鑾峰彇瑙掕壊
+ *
+ * @param id 涓婚敭
+ * @return Role
+ */
+ @GetMapping(ROLE)
+ R<Role> getRole(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瑙掕壊id
+ *
+ * @param tenantId 绉熸埛id
+ * @param roleNames 瑙掕壊鍚�
+ * @return 瑙掕壊id
+ */
+ @GetMapping(ROLE_IDS)
+ R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param id 涓婚敭
+ * @return 瑙掕壊鍚�
+ */
+ @GetMapping(ROLE_NAME)
+ R<String> getRoleName(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瑙掕壊鍒悕
+ *
+ * @param id 涓婚敭
+ * @return 瑙掕壊鍒悕
+ */
+ @GetMapping(ROLE_ALIAS)
+ R<String> getRoleAlias(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param roleIds 涓婚敭
+ * @return
+ */
+ @GetMapping(ROLE_NAMES)
+ R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
+
+ /**
+ * 鑾峰彇瑙掕壊鍒悕
+ *
+ * @param roleIds 涓婚敭
+ * @return 瑙掕壊鍒悕
+ */
+ @GetMapping(ROLE_ALIASES)
+ R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
+
+ /**
+ * 鑾峰彇绉熸埛
+ *
+ * @param id 涓婚敭
+ * @return Tenant
+ */
+ @GetMapping(TENANT)
+ R<Tenant> getTenant(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇绉熸埛
+ *
+ * @param tenantId 绉熸埛id
+ * @return Tenant
+ */
+ @GetMapping(TENANT_ID)
+ R<Tenant> getTenant(@RequestParam("tenantId") String tenantId);
+
+ /**
+ * 鑾峰彇绉熸埛浜у搧鍖�
+ *
+ * @param tenantId 绉熸埛id
+ * @return Tenant
+ */
+ @GetMapping(TENANT_PACKAGE)
+ R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId);
+
+ /**
+ * 鑾峰彇鍙傛暟
+ *
+ * @param id 涓婚敭
+ * @return Param
+ */
+ @GetMapping(PARAM)
+ R<Param> getParam(@RequestParam("id") Long id);
+
+ /**
+ * 鑾峰彇鍙傛暟閰嶇疆
+ *
+ * @param paramKey 鍙傛暟key
+ * @return String
+ */
+ @GetMapping(PARAM_VALUE)
+ R<String> getParamValue(@RequestParam("paramKey") String paramKey);
+
+ /**
+ * 鑾峰彇琛屾斂鍖哄垝
+ *
+ * @param code 涓婚敭
+ * @return Region
+ */
+ @GetMapping(REGION)
+ R<Region> getRegion(@RequestParam("code") String code);
+
+ /**
+ * 鏍规嵁绉熸埛id浠ュ強鐢ㄦ埛鍚嶈幏鍙栧瘑鐮佺瓥鐣�
+ * @param tenantId
+ * @param name
+ * @return
+ */
+ @PostMapping(STRATEGY)
+ R<Strategy> getByTenantIdAndName(@RequestParam("tenantId") String tenantId, @RequestParam("name") String name);
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id鑾峰彇瀵嗙爜绛栫暐
+ * @param userId
+ * @return
+ */
+ @PostMapping(STRATEGYBYID)
+ R<Strategy> getByUserId(@RequestParam("id") Long userId);
+
+ /**
+ * 鏍规嵁缁勫悎鏂瑰紡id鑾峰彇鍊�
+ * @return
+ */
+ @PostMapping(REGEX)
+ R<String> getRegex(@RequestBody List<String> combinationIds);
+
+ /**
+ * 鏍规嵁缁勫悎鏂瑰紡id鑾峰彇鍊�
+ * @return
+ */
+ @PostMapping(REGEXONE)
+ R<List<String>> getRegexByList(@RequestBody List<String> combinationIds);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java
new file mode 100644
index 0000000..2cf5e43
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import com.vci.ubcs.system.entity.*;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class ISysClientFallback implements ISysClient {
+
+ @Override
+ public R<Menu> getMenu(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Dept> getDept(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getDeptIds(String tenantId, String deptNames) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getDeptName(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<String>> getDeptNames(String deptIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<Dept>> getDeptChild(Long deptId) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Post> getPost(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getPostIds(String tenantId, String postNames) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getPostName(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<String>> getPostNames(String postIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Role> getRole(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getRoleIds(String tenantId, String roleNames) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getRoleName(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getRoleAlias(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<String>> getRoleNames(String roleIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<String>> getRoleAliases(String roleIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Tenant> getTenant(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Tenant> getTenant(String tenantId) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<TenantPackage> getTenantPackage(String tenantId) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Param> getParam(Long id) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getParamValue(String paramKey) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Region> getRegion(String code) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Strategy> getByTenantIdAndName(String tenantId, String name) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Strategy> getByUserId(Long userId) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<String> getRegex(List<String> combinationIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<List<String>> getRegexByList(List<String> combinationIds) {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ApiScopeVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ApiScopeVO.java
new file mode 100644
index 0000000..65481f4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ApiScopeVO.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.ApiScope;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ApiScopeVO瀵硅薄", description = "ApiScopeVO瀵硅薄")
+public class ApiScopeVO extends ApiScope {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 瑙勫垯绫诲瀷鍚�
+ */
+ private String scopeTypeName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/CheckedTreeVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/CheckedTreeVO.java
new file mode 100644
index 0000000..feecf0e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/CheckedTreeVO.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * CheckedTreeVO
+ *
+ * @author Chill
+ */
+@Data
+public class CheckedTreeVO {
+
+ private List<String> menu;
+
+ private List<String> dataScope;
+
+ private List<String> apiScope;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DataScopeVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DataScopeVO.java
new file mode 100644
index 0000000..077bbde
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DataScopeVO.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.DataScope;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DataScopeVO瀵硅薄", description = "DataScopeVO瀵硅薄")
+public class DataScopeVO extends DataScope {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 瑙勫垯绫诲瀷鍚�
+ */
+ private String scopeTypeName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DeptVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DeptVO.java
new file mode 100644
index 0000000..0b07ad1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/DeptVO.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.system.entity.Dept;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "DeptVO瀵硅薄", description = "DeptVO瀵硅薄")
+public class DeptVO extends Dept implements INode<DeptVO> {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<DeptVO> children;
+
+ /**
+ * 鏄惁鏈夊瓙瀛欒妭鐐�
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private Boolean hasChildren;
+
+ @Override
+ public List<DeptVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇鏈烘瀯
+ */
+ private String parentName;
+
+ /**
+ * 鏈烘瀯绫诲瀷鍚嶇О
+ */
+ private String deptCategoryName;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantTreeVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantTreeVO.java
new file mode 100644
index 0000000..7f4337a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantTreeVO.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import lombok.Data;
+import org.springblade.core.tool.node.TreeNode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * GrantTreeVO
+ *
+ * @author Chill
+ */
+@Data
+public class GrantTreeVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private List<TreeNode> menu;
+
+ private List<TreeNode> dataScope;
+
+ private List<TreeNode> apiScope;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantVO.java
new file mode 100644
index 0000000..8059d66
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/GrantVO.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * GrantVO
+ *
+ * @author Chill
+ */
+@Data
+public class GrantVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "roleIds闆嗗悎")
+ private List<Long> roleIds;
+
+ @ApiModelProperty(value = "menuIds闆嗗悎")
+ private List<Long> menuIds;
+
+ @ApiModelProperty(value = "topMenuIds闆嗗悎")
+ private List<Long> topMenuIds;
+
+ @ApiModelProperty(value = "dataScopeIds闆嗗悎")
+ private List<Long> dataScopeIds;
+
+ @ApiModelProperty(value = "apiScopeIds闆嗗悎")
+ private List<Long> apiScopeIds;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/MenuVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/MenuVO.java
new file mode 100644
index 0000000..94e7ec2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/MenuVO.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.system.entity.Menu;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "MenuVO瀵硅薄", description = "MenuVO瀵硅薄")
+public class MenuVO extends Menu implements INode<MenuVO> {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<MenuVO> children;
+
+ /**
+ * 鏄惁鏈夊瓙瀛欒妭鐐�
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private Boolean hasChildren;
+
+ @Override
+ public List<MenuVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇鑿滃崟
+ */
+ private String parentName;
+
+ /**
+ * 鑿滃崟绫诲瀷
+ */
+ private String categoryName;
+
+ /**
+ * 鎸夐挳鍔熻兘
+ */
+ private String actionName;
+
+ /**
+ * 鏄惁鏂扮獥鍙f墦寮�
+ */
+ private String isOpenName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ParamVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ParamVO.java
new file mode 100644
index 0000000..d8b4f0d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/ParamVO.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.Param;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ParamVO瀵硅薄", description = "ParamVO瀵硅薄")
+public class ParamVO extends Param {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/PostVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/PostVO.java
new file mode 100644
index 0000000..fa901c7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/PostVO.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.Post;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 宀椾綅琛ㄨ鍥惧疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "PostVO瀵硅薄", description = "宀椾綅琛�")
+public class PostVO extends Post {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 宀椾綅鍒嗙被鍚�
+ */
+ private String categoryName;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RegionVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RegionVO.java
new file mode 100644
index 0000000..bb8075f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RegionVO.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.system.entity.Region;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+import org.springblade.core.tool.utils.Func;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 琛屾斂鍖哄垝琛ㄨ鍥惧疄浣撶被
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RegionVO瀵硅薄", description = "琛屾斂鍖哄垝琛�")
+public class RegionVO extends Region implements INode<RegionVO> {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 鐖惰妭鐐瑰悕绉�
+ */
+ private String parentName;
+
+ /**
+ * 鏄惁鏈夊瓙瀛欒妭鐐�
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private Boolean hasChildren;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<RegionVO> children;
+
+ @Override
+ public Long getId() {
+ return Func.toLong(this.getCode());
+ }
+
+ @Override
+ public Long getParentId() {
+ return Func.toLong(this.getParentCode());
+ }
+
+ @Override
+ public List<RegionVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleMenuVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleMenuVO.java
new file mode 100644
index 0000000..1c1c152
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleMenuVO.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.RoleMenu;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RoleMenuVO瀵硅薄", description = "RoleMenuVO瀵硅薄")
+public class RoleMenuVO extends RoleMenu {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleVO.java
new file mode 100644
index 0000000..a934b0a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/RoleVO.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.system.entity.Role;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RoleVO瀵硅薄", description = "RoleVO瀵硅薄")
+public class RoleVO extends Role implements INode<RoleVO> {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 鐖惰妭鐐笽D
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long parentId;
+
+ /**
+ * 瀛愬瓩鑺傜偣
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List<RoleVO> children;
+
+ @Override
+ public List<RoleVO> getChildren() {
+ if (this.children == null) {
+ this.children = new ArrayList<>();
+ }
+ return this.children;
+ }
+
+ /**
+ * 涓婄骇瑙掕壊
+ */
+ private String parentName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/TenantVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/TenantVO.java
new file mode 100644
index 0000000..0e9e15f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/TenantVO.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.Tenant;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "TenantVO瀵硅薄", description = "TenantVO瀵硅薄")
+public class TenantVO extends Tenant {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鏄惁寮�鍚笁鍛�
+ */
+ private Integer ssaEnable;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/UserPwdstrategyVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/UserPwdstrategyVO.java
new file mode 100644
index 0000000..590990a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/UserPwdstrategyVO.java
@@ -0,0 +1,29 @@
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.UserPwdstrategy;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * (UserPwdStrtategy)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2023-03-20 14:59:29
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "TenantVO瀵硅薄", description = "TenantVO瀵硅薄")
+public class UserPwdstrategyVO extends UserPwdstrategy {
+
+ private static final long serialVersionUID = 336389756425054417L;
+
+ @ApiModelProperty(value = "闇�瑕佷慨鏀规垨鑰呮柊澧炲瘑鐮佺瓥鐣ョ殑鐢ㄦ埛id")
+ private List<Long> userIds;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-user-api/pom.xml
new file mode 100644
index 0000000..77fc76b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service-api</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-user-api</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/cache/UserCache.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/cache/UserCache.java
new file mode 100644
index 0000000..3c9d670
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/cache/UserCache.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.cache;
+
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+
+import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
+import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
+
+/**
+ * 绯荤粺缂撳瓨
+ *
+ * @author Chill
+ */
+public class UserCache {
+ private static final String USER_CACHE_ID = "user:id:";
+ private static final String USER_CACHE_ACCOUNT = "user:account:";
+
+ private static IUserClient userClient;
+
+ private static IUserClient getUserClient() {
+ if (userClient == null) {
+ userClient = SpringUtil.getBean(IUserClient.class);
+ }
+ return userClient;
+ }
+
+ /**
+ * 鏍规嵁浠诲姟鐢ㄦ埛id鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param taskUserId 浠诲姟鐢ㄦ埛id
+ * @return
+ */
+ public static User getUserByTaskUser(String taskUserId) {
+ Long userId = Func.toLong(StringUtil.removePrefix(taskUserId, TASK_USR_PREFIX));
+ return getUser(userId);
+ }
+
+ /**
+ * 鑾峰彇鐢ㄦ埛
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return
+ */
+ public static User getUser(Long userId) {
+ return CacheUtil.get(USER_CACHE, USER_CACHE_ID, userId, () -> {
+ R<User> result = getUserClient().userInfoById(userId);
+ return result.getData();
+ });
+ }
+
+ /**
+ * 鑾峰彇鐢ㄦ埛
+ *
+ * @param tenantId 绉熸埛id
+ * @param account 璐﹀彿鍚�
+ * @return
+ */
+ public static User getUser(String tenantId, String account) {
+ return CacheUtil.get(USER_CACHE, USER_CACHE_ACCOUNT, tenantId + StringPool.DASH + account, () -> {
+ R<User> result = getUserClient().userByAccount(tenantId, account);
+ return result.getData();
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
new file mode 100644
index 0000000..7c5ecc7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user")
+@EqualsAndHashCode(callSuper = true)
+public class User extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鐢ㄦ埛缂栧彿
+ */
+ private String code;
+ /**
+ * 鐢ㄦ埛骞冲彴
+ */
+ private Integer userType;
+ /**
+ * 璐﹀彿
+ */
+ private String account;
+ /**
+ * 瀵嗙爜
+ */
+ private String password;
+ /**
+ * 鏄电О
+ */
+ private String name;
+ /**
+ * 鐪熷悕
+ */
+ private String realName;
+ /**
+ * 澶村儚
+ */
+ private String avatar;
+ /**
+ * 閭
+ */
+ private String email;
+ /**
+ * 鎵嬫満
+ */
+ private String phone;
+ /**
+ * 鐢熸棩
+ */
+ private Date birthday;
+ /**
+ * 鎬у埆
+ */
+ private Integer sex;
+ /**
+ * 瑙掕壊id
+ */
+ private String roleId;
+ /**
+ * 閮ㄩ棬id
+ */
+ private String deptId;
+ /**
+ * 瀵嗙爜绛栫暐
+ */
+ @TableField(exist = false)
+ private String pwdStrategy;
+ /**
+ * 宀椾綅id
+ */
+ private String postId;
+ /**
+ * 瀵嗙爜淇敼鏃堕棿
+ */
+ private Date pwdUpdateTime;
+ /**
+ * 鐢ㄦ埛瀵嗙骇
+ */
+ private String secretgrade;
+ /**
+ * 瀵嗙爜绛栫暐淇敼鐘舵��
+ */
+ private Long strategyUpdateStatus;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserApp.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserApp.java
new file mode 100644
index 0000000..73c992a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserApp.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user_app")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserApp瀵硅薄", description = "UserApp瀵硅薄")
+public class UserApp extends Model<UserApp> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐢ㄦ埛ID")
+ private Long userId;
+
+ /**
+ * 鐢ㄦ埛鎷撳睍淇℃伅
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
+ private String userExt;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserDept.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserDept.java
new file mode 100644
index 0000000..8ea6934
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserDept.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user_dept")
+@ApiModel(value = "UserDept瀵硅薄", description = "UserDept瀵硅薄")
+public class UserDept implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐢ㄦ埛ID")
+ private Long userId;
+
+ /**
+ * 閮ㄩ棬ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "閮ㄩ棬ID")
+ private Long deptId;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserInfo.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserInfo.java
new file mode 100644
index 0000000..d71dda9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserInfo.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.tool.support.Kv;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @author Chill
+ */
+@Data
+@ApiModel(description = "鐢ㄦ埛淇℃伅")
+public class UserInfo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 绗笁鏂规巿鏉僫d
+ */
+ @ApiModelProperty(value = "绗笁鏂规巿鏉僫d")
+ private String oauthId;
+
+ /**
+ * 鐢ㄦ埛鍩虹淇℃伅
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛")
+ private User user;
+
+ /**
+ * 鎷撳睍淇℃伅
+ */
+ @ApiModelProperty(value = "鎷撳睍淇℃伅")
+ private Kv detail;
+
+ /**
+ * 鏉冮檺鏍囪瘑闆嗗悎
+ */
+ @ApiModelProperty(value = "鏉冮檺闆嗗悎")
+ private List<String> permissions;
+
+ /**
+ * 瑙掕壊闆嗗悎
+ */
+ @ApiModelProperty(value = "瑙掕壊闆嗗悎")
+ private List<String> roles;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOauth.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOauth.java
new file mode 100644
index 0000000..3b1f7b5
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOauth.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user_oauth")
+public class UserOauth implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 绉熸埛ID
+ */
+ private String tenantId;
+
+ /**
+ * 绗笁鏂圭郴缁熺敤鎴稩D
+ */
+ private String uuid;
+
+ /**
+ * 鐢ㄦ埛ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+ private Long userId;
+
+ /**
+ * 鐢ㄦ埛鍚�
+ */
+ private String username;
+ /**
+ * 鐢ㄦ埛鏄电О
+ */
+ private String nickname;
+ /**
+ * 鐢ㄦ埛澶村儚
+ */
+ private String avatar;
+ /**
+ * 鐢ㄦ埛缃戝潃
+ */
+ private String blog;
+ /**
+ * 鎵�鍦ㄥ叕鍙�
+ */
+ private String company;
+ /**
+ * 浣嶇疆
+ */
+ private String location;
+ /**
+ * 鐢ㄦ埛閭
+ */
+ private String email;
+ /**
+ * 鐢ㄦ埛澶囨敞锛堝悇骞冲彴涓殑鐢ㄦ埛涓汉浠嬬粛锛�
+ */
+ private String remark;
+ /**
+ * 鎬у埆
+ */
+ private String gender;
+ /**
+ * 鐢ㄦ埛鏉ユ簮
+ */
+ private String source;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOther.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOther.java
new file mode 100644
index 0000000..fa211e9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserOther.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user_other")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserOther瀵硅薄", description = "UserOther瀵硅薄")
+public class UserOther extends Model<UserOther> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐢ㄦ埛ID")
+ private Long userId;
+
+ /**
+ * 鐢ㄦ埛鎷撳睍淇℃伅
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
+ private String userExt;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserWeb.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserWeb.java
new file mode 100644
index 0000000..1c6785a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/UserWeb.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_org_user_web")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserWeb瀵硅薄", description = "UserWeb瀵硅薄")
+public class UserWeb extends Model<UserWeb> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty(value = "鐢ㄦ埛ID")
+ private Long userId;
+
+ /**
+ * 鐢ㄦ埛鎷撳睍淇℃伅
+ */
+ @ApiModelProperty(value = "鐢ㄦ埛鎷撳睍淇℃伅")
+ private String userExt;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/enums/UserEnum.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/enums/UserEnum.java
new file mode 100644
index 0000000..8ce6759
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/enums/UserEnum.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 鐢ㄦ埛绫诲瀷鏋氫妇
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public enum UserEnum {
+
+ /**
+ * web
+ */
+ WEB("web", 1),
+
+ /**
+ * app
+ */
+ APP("app", 2),
+
+ /**
+ * other
+ */
+ OTHER("other", 3),
+ ;
+
+ final String name;
+ final int category;
+
+ /**
+ * 鍖归厤鏋氫妇鍊�
+ *
+ * @param name 鍚嶇О
+ * @return BladeUserEnum
+ */
+ public static UserEnum of(String name) {
+ if (name == null) {
+ return null;
+ }
+ UserEnum[] values = UserEnum.values();
+ for (UserEnum smsEnum : values) {
+ if (smsEnum.name.equals(name)) {
+ return smsEnum;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java
new file mode 100644
index 0000000..3333042
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.feign;
+
+
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.entity.UserInfo;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.user.entity.UserOauth;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * User Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_USER_NAME
+)
+public interface IUserClient {
+
+ String API_PREFIX = "/client";
+ String USER_INFO = API_PREFIX + "/user-info";
+ String USER_INFO_BY_TYPE = API_PREFIX + "/user-info-by-type";
+ String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id";
+ String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account";
+ String USER_AUTH_INFO = API_PREFIX + "/user-auth-info";
+ String SAVE_USER = API_PREFIX + "/save-user";
+ String SAVE_USER_LIST = API_PREFIX + "/save-user-list";
+ String REMOVE_USER = API_PREFIX + "/remove-user";
+ String UPDATE_USER = API_PREFIX+"/update-user";
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return
+ */
+ @GetMapping(USER_INFO_BY_ID)
+ R<User> userInfoById(@RequestParam("userId") Long userId);
+
+ /**
+ * 鏍规嵁璐﹀彿鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param tenantId 绉熸埛id
+ * @param account 璐﹀彿
+ * @return
+ */
+ @GetMapping(USER_INFO_BY_ACCOUNT)
+ R<User> userByAccount(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param tenantId 绉熸埛ID
+ * @param account 璐﹀彿
+ * @return
+ */
+ @GetMapping(USER_INFO)
+ R<UserInfo> userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param tenantId 绉熸埛ID
+ * @param account 璐﹀彿
+ * @param userType 鐢ㄦ埛骞冲彴
+ * @return
+ */
+ @GetMapping(USER_INFO_BY_TYPE)
+ R<UserInfo> userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account, @RequestParam("userType") String userType);
+
+ /**
+ * 鑾峰彇绗笁鏂瑰钩鍙颁俊鎭�
+ *
+ * @param userOauth 绗笁鏂规巿鏉冪敤鎴蜂俊鎭�
+ * @return UserInfo
+ */
+ @PostMapping(USER_AUTH_INFO)
+ R<UserInfo> userAuthInfo(@RequestBody UserOauth userOauth);
+
+ /**
+ * 鏂板缓鐢ㄦ埛
+ *
+ * @param user 鐢ㄦ埛瀹炰綋
+ * @return
+ */
+ @PostMapping(SAVE_USER)
+ R<Boolean> saveUser(@RequestBody User user);
+
+ /**
+ * 鏂板缓澶氫釜鐢ㄦ埛
+ * @param users
+ * @return
+ */
+ @PostMapping(SAVE_USER_LIST)
+ R<Boolean> saveUserList(@RequestBody List<User> users);
+
+ /**
+ * 鍒犻櫎鐢ㄦ埛
+ *
+ * @param tenantIds 绉熸埛id闆嗗悎
+ * @return
+ */
+ @PostMapping(REMOVE_USER)
+ R<Boolean> removeUser(@RequestParam("tenantIds") String tenantIds);
+
+ /**
+ * 淇敼鐢ㄦ埛鍩虹淇℃伅
+ * @param user
+ * @return
+ */
+ @PostMapping(UPDATE_USER)
+ R<Boolean> updateUser(@RequestBody User user);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserSearchClient.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserSearchClient.java
new file mode 100644
index 0000000..8e58ffc
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserSearchClient.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.feign;
+
+
+import com.vci.ubcs.system.user.entity.User;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * User Search Feign鎺ュ彛绫�
+ *
+ * @author Chill
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_USER_NAME
+)
+public interface IUserSearchClient {
+
+ String API_PREFIX = "/client";
+ String LIST_BY_USER = API_PREFIX + "/user/list-by-user";
+ String LIST_BY_DEPT = API_PREFIX + "/user/list-by-dept";
+ String LIST_BY_POST = API_PREFIX + "/user/list-by-post";
+ String LIST_BY_ROLE = API_PREFIX + "/user/list-by-role";
+
+ /**
+ * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param userId 鐢ㄦ埛ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping(LIST_BY_USER)
+ R<List<User>> listByUser(@RequestParam("userId") String userId);
+
+ /**
+ * 鏍规嵁閮ㄩ棬ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param deptId 閮ㄩ棬ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping(LIST_BY_DEPT)
+ R<List<User>> listByDept(@RequestParam("deptId") String deptId);
+
+ /**
+ * 鏍规嵁宀椾綅ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param postId 宀椾綅ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping(LIST_BY_POST)
+ R<List<User>> listByPost(@RequestParam("postId") String postId);
+
+ /**
+ * 鏍规嵁瑙掕壊ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param roleId 瑙掕壊ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping(LIST_BY_ROLE)
+ R<List<User>> listByRole(@RequestParam("roleId") String roleId);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java
new file mode 100644
index 0000000..fe96185
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/vo/UserVO.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.vci.ubcs.system.user.entity.User;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瑙嗗浘瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserVO瀵硅薄", description = "UserVO瀵硅薄")
+public class UserVO extends User {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ /**
+ * 瀵嗙爜
+ */
+ @JsonIgnore
+ private String password;
+
+ /**
+ * 瀵嗙爜绛栫暐
+ */
+ private String pwdStrategy;
+
+ /**
+ * 绉熸埛鍚�
+ */
+ private String tenantName;
+
+ /**
+ * 鐢ㄦ埛骞冲彴鍚�
+ */
+ private String userTypeName;
+
+ /**
+ * 瑙掕壊鍚�
+ */
+ private String roleName;
+
+ /**
+ * 閮ㄩ棬鍚�
+ */
+ private String deptName;
+
+ /**
+ * 宀椾綅鍚�
+ */
+ private String postName;
+
+ /**
+ * 鎬у埆
+ */
+ private String sexName;
+
+ /**
+ * 鎷撳睍淇℃伅
+ */
+ private String userExt;
+
+}
diff --git a/Source/UBCS/ubcs-service/pom.xml b/Source/UBCS/ubcs-service/pom.xml
new file mode 100644
index 0000000..de84b5e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<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>UBCS</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-service</artifactId>
+ <name>${project.artifactId}</name>
+ <version>3.0.1.RELEASE</version>
+ <packaging>pom</packaging>
+ <description>BladeX 寰湇鍔¢泦鍚�</description>
+
+ <modules>
+ <module>ubcs-desk</module>
+ <module>ubcs-system</module>
+ <module>ubcs-user</module>
+ <module>ubcs-code</module>
+ <module>ubcs-omd</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-metrics</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-tenant</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-api-crypto</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-dict-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-scope-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/pom.xml b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
new file mode 100644
index 0000000..76c2d09
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -0,0 +1,170 @@
+<?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>ubcs-service</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <artifactId>ubcs-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>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-openfeign</artifactId>
+ </exclusion>
+<!-- <exclusion>-->
+<!-- <groupId>com.vci</groupId>-->
+<!-- <artifactId>vci-starter-corba</artifactId>-->
+<!-- </exclusion>-->
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ </exclusion>
+ </exclusions>
+ </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>ubcs-code-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java
new file mode 100644
index 0000000..50230ec
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code;
+
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * Code鍚姩鍣�
+ *
+ * @author ludc
+ */
+@SpringBootApplication
+@EnableFeignClients(basePackages = {"com.vci.*","org.springblade"})
+@ComponentScan({"com.vci.*"})
+@EnableScheduling
+@EnableCaching
+public class CodeApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_NAME_CODE, CodeApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingClassSyncScheduling.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingClassSyncScheduling.java
new file mode 100644
index 0000000..6fc7456
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingClassSyncScheduling.java
@@ -0,0 +1,57 @@
+package com.vci.ubcs.code.Scheduling;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingDataSyncScheduling.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingDataSyncScheduling.java
new file mode 100644
index 0000000..699196e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingDataSyncScheduling.java
@@ -0,0 +1,56 @@
+package com.vci.ubcs.code.Scheduling;
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingScheduling.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingScheduling.java
new file mode 100644
index 0000000..430cebf
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingScheduling.java
@@ -0,0 +1,57 @@
+package com.vci.ubcs.code.Scheduling;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
new file mode 100644
index 0000000..b553c41
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
@@ -0,0 +1,20 @@
+package com.vci.ubcs.code.algorithm;
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
+
+/**
+ * 娴佹按绠楁硶鐨勭ず渚�
+ */
+@MdmSerialAlgorithm(text = "娴佹按绠楁硶鐨勭ず渚�",description = "璇蜂笉瑕佷娇鐢ㄨ繖涓被锛岃繖涓被鍙槸绀轰緥锛岀敤浜庢煡鐪嬪浣曠紪鍐欐祦姘寸畻娉�")
+public class CustomSerialAlgorithmExample {
+
+ /**
+ * 鐢熸垚娴佹按鍙风殑鏂规硶
+ * @return 娴佹按鍙风殑淇℃伅
+ */
+ @MdmSerialAlgorithmMethod
+ public String serialGenerate(){
+ return "";
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMap.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMap.java
new file mode 100644
index 0000000..8b443ed
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMap.java
@@ -0,0 +1,28 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMapMethod.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMapMethod.java
new file mode 100644
index 0000000..b462cf9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmIntegrationMapMethod.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
new file mode 100644
index 0000000..7e7fe98
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
@@ -0,0 +1,37 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
new file mode 100644
index 0000000..752206b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
new file mode 100644
index 0000000..634fea2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
@@ -0,0 +1,169 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmDuckingConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmDuckingConstant.java
new file mode 100644
index 0000000..b8f9f3a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmDuckingConstant.java
@@ -0,0 +1,146 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java
new file mode 100644
index 0000000..1662da4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java
@@ -0,0 +1,105 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEnumIdConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEnumIdConstant.java
new file mode 100644
index 0000000..8d53109
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEnumIdConstant.java
@@ -0,0 +1,78 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLifeCycleConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLifeCycleConstant.java
new file mode 100644
index 0000000..48c12f5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLifeCycleConstant.java
@@ -0,0 +1,26 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLinkTypeConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLinkTypeConstant.java
new file mode 100644
index 0000000..53239d2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmLinkTypeConstant.java
@@ -0,0 +1,13 @@
+package com.vci.ubcs.code.constant;
+
+/**
+ * 涓绘暟鎹噷鐨勯摼鎺ョ被鍨嬪悕绉�
+ * @author weidy
+ * @date 2022-1-18
+ */
+public class MdmLinkTypeConstant {
+ /**
+ * 缂栫爜瑙勫垯鐨勬槑缁�
+ */
+ public static final String CODE_RULE_ITEM = "codeRuleItem";
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySyncController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySyncController.java
new file mode 100644
index 0000000..754d0fa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySyncController.java
@@ -0,0 +1,169 @@
+package com.vci.ubcs.code.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
+import com.vci.ubcs.code.service.UniversalInterfaceI;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
new file mode 100644
index 0000000..17b1034
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
@@ -0,0 +1,190 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeBasicSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
new file mode 100644
index 0000000..ef2c081
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
@@ -0,0 +1,136 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
new file mode 100644
index 0000000..8b517df
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -0,0 +1,255 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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.lang.StringUtils;
+import com.vci.ubcs.code.dto.CodeClassifyDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java
new file mode 100644
index 0000000..98cf7d8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java
@@ -0,0 +1,129 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTempMapItemController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTempMapItemController.java
new file mode 100644
index 0000000..1d52df8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTempMapItemController.java
@@ -0,0 +1,116 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTempMapItemDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTempMapItemVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
new file mode 100644
index 0000000..a7e1e1e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
@@ -0,0 +1,165 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java
new file mode 100644
index 0000000..dc761b5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java
@@ -0,0 +1,114 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java
new file mode 100644
index 0000000..8db523a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java
@@ -0,0 +1,190 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.lifecycle.CodeClassifyTemplateLC;
+import com.vci.ubcs.code.service.CodeClassifyTemplateServiceI;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateMapController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateMapController.java
new file mode 100644
index 0000000..4a9131d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateMapController.java
@@ -0,0 +1,116 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTemplateMapDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateMapVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java
new file mode 100644
index 0000000..adaafe4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyValueController.java
@@ -0,0 +1,146 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeDuckingController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeDuckingController.java
new file mode 100644
index 0000000..0c79c8c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeDuckingController.java
@@ -0,0 +1,293 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.model.DockingDataDO;
+import com.vci.ubcs.code.model.DockingLogeDO;
+import com.vci.ubcs.code.model.DockingTaskDO;
+import com.vci.ubcs.code.model.SysIntHeaderDO;
+import com.vci.ubcs.code.service.CodeDuckingServiceI;
+import com.vci.ubcs.code.service.CodeDuckingSyncServiceI;
+import com.vci.ubcs.code.service.DockingPreApplyDataServiceI;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataDTO;
+import com.vci.ubcs.code.dto.DockingPreAttrMappingDTO;
+import com.vci.ubcs.code.dto.PreApplyCodeOrderDTO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyDataVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+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;
+
+/**
+ * 涓绘暟鎹紪鐮侀�氱敤闆嗘垚鎺у埗鍣�
+ *
+ * @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", MdmDuckingConstant.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", MdmDuckingConstant.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
new file mode 100644
index 0000000..afe623b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
@@ -0,0 +1,142 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeFixedValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatRuleController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatRuleController.java
new file mode 100644
index 0000000..8f03f37
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatRuleController.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.service.CodeKeyAttrRepeatRuleServiceI;
+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.ubcs.code.dto.CodeKeyAttrRepeatRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java
new file mode 100644
index 0000000..2aaebcd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodePhaseAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java
new file mode 100644
index 0000000..fb40034
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeResembleRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
new file mode 100644
index 0000000..22f7d61
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
@@ -0,0 +1,167 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
new file mode 100644
index 0000000..17166e6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
@@ -0,0 +1,35 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.service.CodeSerialAlgorithmServiceI;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java
new file mode 100644
index 0000000..bd6e209
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java
@@ -0,0 +1,116 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeSynonymDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java
new file mode 100644
index 0000000..c1225f7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java
@@ -0,0 +1,138 @@
+package com.vci.ubcs.code.controller;
+
+
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeAllCodeDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeAllCodeDaoI.java
new file mode 100644
index 0000000..e68becc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeAllCodeDaoI.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.model.CodeAllCodeDO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeBasicSecDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeBasicSecDaoI.java
new file mode 100644
index 0000000..00c969d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeBasicSecDaoI.java
@@ -0,0 +1,148 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.model.CodeBasicSecDO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeButtonDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeButtonDaoI.java
new file mode 100644
index 0000000..b74049f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeButtonDaoI.java
@@ -0,0 +1,142 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.model.CodeButtonDO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyDaoI.java
new file mode 100644
index 0000000..a9f722e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyDaoI.java
@@ -0,0 +1,232 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.model.CodeClassifyDO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyProcessTempDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyProcessTempDaoI.java
new file mode 100644
index 0000000..fcc58b6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyProcessTempDaoI.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyProcessTempDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTempMapItemDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTempMapItemDaoI.java
new file mode 100644
index 0000000..e69e7c4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTempMapItemDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyTempMapItemDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateAttrDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateAttrDaoI.java
new file mode 100644
index 0000000..1789a0a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateAttrDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateButtonDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateButtonDaoI.java
new file mode 100644
index 0000000..e41a53b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateButtonDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateButtonDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateDaoI.java
new file mode 100644
index 0000000..43db3ef
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateDaoI.java
@@ -0,0 +1,170 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateMapDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateMapDaoI.java
new file mode 100644
index 0000000..020d4c2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyTemplateMapDaoI.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateMapDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyValueDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyValueDaoI.java
new file mode 100644
index 0000000..7489f56
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeClassifyValueDaoI.java
@@ -0,0 +1,147 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeClassifyValueDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeFixedValueDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeFixedValueDaoI.java
new file mode 100644
index 0000000..4e4f1ed
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeFixedValueDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeFixedValueDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeKeyAttrRepeatRuleDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeKeyAttrRepeatRuleDaoI.java
new file mode 100644
index 0000000..f33c9a3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeKeyAttrRepeatRuleDaoI.java
@@ -0,0 +1,148 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeKeyAttrRepeatRuleDO;
+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 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodePhaseAttrDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodePhaseAttrDaoI.java
new file mode 100644
index 0000000..0df1d3e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodePhaseAttrDaoI.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodePhaseAttrDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeResembleRuleDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeResembleRuleDaoI.java
new file mode 100644
index 0000000..21e4f56
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeResembleRuleDaoI.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeResembleRuleDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeRuleDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeRuleDaoI.java
new file mode 100644
index 0000000..f3b108d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeRuleDaoI.java
@@ -0,0 +1,155 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeRuleDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSerialValueDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSerialValueDaoI.java
new file mode 100644
index 0000000..4fa1333
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSerialValueDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeSerialValueDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSynonymDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSynonymDaoI.java
new file mode 100644
index 0000000..2766a1f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeSynonymDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeSynonymDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeTemplatePhaseDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeTemplatePhaseDaoI.java
new file mode 100644
index 0000000..71b7584
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/CodeTemplatePhaseDaoI.java
@@ -0,0 +1,142 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.CodeTemplatePhaseDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingDataDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingDataDaoI.java
new file mode 100644
index 0000000..5f2b1dd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingDataDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingDataDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public interface DockingDataDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingDataDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingDataDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingDataDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingDataDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingDataDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingDataDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingDataDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingDataDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingDataDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingDataDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingLogeDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingLogeDaoI.java
new file mode 100644
index 0000000..483e7eb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingLogeDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingLogeDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public interface DockingLogeDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingLogeDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingLogeDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingLogeDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingLogeDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingLogeDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingLogeDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingLogeDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇楁暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingLogeDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingLogeDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingLogeDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataDaoI.java
new file mode 100644
index 0000000..e1ca103
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingPreApplyDataDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public interface DockingPreApplyDataDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingPreApplyDataDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingPreApplyDataDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingPreApplyDataDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingPreApplyDataDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingPreApplyDataDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingPreApplyDataDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingPreApplyDataDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataInfoDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataInfoDaoI.java
new file mode 100644
index 0000000..a69cf67
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreApplyDataInfoDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingPreApplyDataInfoDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁鎿嶄綔灞�
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public interface DockingPreApplyDataInfoDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingPreApplyDataInfoDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingPreApplyDataInfoDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingPreApplyDataInfoDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataInfoDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingPreApplyDataInfoDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingPreApplyDataInfoDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingPreApplyDataInfoDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingPreApplyDataInfoDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataInfoDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreApplyDataInfoDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrMappingDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrMappingDaoI.java
new file mode 100644
index 0000000..4be3f38
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrMappingDaoI.java
@@ -0,0 +1,133 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingPreAttrMappingDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 灞炴�ф槧灏勯厤缃暟鎹俊鎭暟鎹搷浣滃眰
+ *
+ * @author xiejun
+ * @date 2023-01-06
+ */
+public interface DockingPreAttrMappingDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingPreAttrMappingDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingPreAttrMappingDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingPreAttrMappingDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrMappingDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingPreAttrMappingDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingPreAttrMappingDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingPreAttrMappingDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingPreAttrMappingDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrMappingDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrMappingDO> 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);
+
+ /**
+ * 鏍规嵁oid鏌ヨ鏁版嵁
+ * @param oids 瀵硅薄鐨勪富閿泦鍚�
+ * @return 鍙楀奖鍝嶇殑琛屾暟
+ */
+ public List<DockingPreAttrMappingDO> selectByOid(String oids);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrRangeDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrRangeDaoI.java
new file mode 100644
index 0000000..9b812c9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingPreAttrRangeDaoI.java
@@ -0,0 +1,126 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingPreAttrRangeDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+public interface DockingPreAttrRangeDaoI {
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingPreAttrRangeDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingPreAttrRangeDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingPreAttrRangeDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrRangeDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingPreAttrRangeDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingPreAttrRangeDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingPreAttrRangeDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingPreAttrRangeDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrRangeDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrRangeDO> 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);
+
+ /**
+ * 鏍规嵁灞炴�т富閿壒閲忚幏鍙栧璞�
+ * @param attrOid 涓婚敭
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingPreAttrRangeDO> selectByAttrOid(String attrOid);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingTaskDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingTaskDaoI.java
new file mode 100644
index 0000000..7e929d5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/DockingTaskDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.DockingTaskDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-28
+ */
+public interface DockingTaskDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(DockingTaskDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<DockingTaskDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ DockingTaskDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingTaskDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<DockingTaskDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<DockingTaskDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(DockingTaskDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔℃暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<DockingTaskDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingTaskDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<DockingTaskDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntAuthorityDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntAuthorityDaoI.java
new file mode 100644
index 0000000..f4bfb62
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntAuthorityDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.SysIntAuthorityDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntAuthorityDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(SysIntAuthorityDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<SysIntAuthorityDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ SysIntAuthorityDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntAuthorityDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<SysIntAuthorityDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<SysIntAuthorityDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(SysIntAuthorityDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<SysIntAuthorityDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntAuthorityDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntAuthorityDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntBaseDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntBaseDaoI.java
new file mode 100644
index 0000000..a756c95
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntBaseDaoI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.SysIntBaseDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹搷浣滃眰
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntBaseDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(SysIntBaseDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<SysIntBaseDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ SysIntBaseDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntBaseDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<SysIntBaseDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<SysIntBaseDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(SysIntBaseDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<SysIntBaseDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntBaseDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntBaseDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntHeaderDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntHeaderDaoI.java
new file mode 100644
index 0000000..e9284cf
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntHeaderDaoI.java
@@ -0,0 +1,143 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.SysIntHeaderDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public interface SysIntHeaderDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(SysIntHeaderDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<SysIntHeaderDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ SysIntHeaderDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntHeaderDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<SysIntHeaderDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<SysIntHeaderDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(SysIntHeaderDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<SysIntHeaderDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntHeaderDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntHeaderDO> 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);
+
+ //==
+
+ /**
+ * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param sysinfoOid 涓婚敭
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntHeaderDO> selectBySysinfoOid(String sysinfoOid);
+
+ /**
+ * 鎵归噺淇敼杩欎釜sysinfo鐨刪eader锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
+ * @param records
+ */
+ BaseResult updateSysinfoHeader(List<SysIntHeaderDO> records);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntInfoDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntInfoDaoI.java
new file mode 100644
index 0000000..5d486be
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntInfoDaoI.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.dao;
+
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.SysIntInfoDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁鎿嶄綔灞�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntInfoDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(SysIntInfoDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<SysIntInfoDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ SysIntInfoDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntInfoDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<SysIntInfoDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<SysIntInfoDO> selectAll(Map conditonMap);
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(SysIntInfoDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄闆嗗悎
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<SysIntInfoDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntInfoDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntInfoDO> 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntParamDaoI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntParamDaoI.java
new file mode 100644
index 0000000..5acd1a3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/SysIntParamDaoI.java
@@ -0,0 +1,144 @@
+package com.vci.ubcs.code.dao;
+
+
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.model.SysIntParamDO;
+import com.vci.web.pageModel.BatchCBO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-04-11
+ */
+public interface SysIntParamDaoI {
+
+ /**
+ * 浣跨敤涓婚敭鍒犻櫎
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO deleteByPrimaryKey(String oid);
+
+ /**
+ * 娣诲姞鏁版嵁
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO insert(SysIntParamDO record);
+
+ /**
+ * 鎵归噺娣诲姞鏁版嵁
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉鏁�
+ */
+ BatchCBO batchInsert(List<SysIntParamDO> records);
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ * @param oid 鏁版嵁涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ */
+ SysIntParamDO selectByPrimaryKey(String oid);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param oids 涓婚敭锛屽寘鍚崟寮曞彿,浣嗘槸涓嶈兘瓒呰繃1000
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntParamDO> selectByPrimaryKeys(String oids);
+
+ /**
+ * 鏍规嵁涓婚敭鎵归噺鏌ヨ瀵硅薄
+ * @param oids 瀵硅薄涓婚敭,浣跨敤閫楀彿鍒嗛殧锛屼絾鏄笉鑳借秴杩�1000
+ * @return 涓氬姟瀵硅薄
+ */
+ List<SysIntParamDO> selectByPrimaryKeyCollection(Collection<String> oids);
+
+ /**
+ * 鏌ヨ鎵�鏈夊垎绫�
+ * @return 鏌ヨ缁撴灉
+ */
+ List<SysIntParamDO> selectAll();
+
+ /**
+ * 鏇存柊瀵硅薄
+ * @param record 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�
+ * @return 鎵ц缁撴灉
+ */
+ BatchCBO updateByPrimaryKey(SysIntParamDO record);
+
+ /**
+ * 鎵归噺鏇存柊
+ * @param records 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞¢泦鍚�
+ * @return 鎵ц缁撴灉琛屾暟
+ */
+ BatchCBO batchUpdate(List<SysIntParamDO> records);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏌ヨ鏁版嵁
+ * @param conditionMap 鏌ヨ鏉′欢锛�
+ * @param pageHelper 鍖呮嫭鍒嗛〉锛屾帓搴�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntParamDO> selectByCondition(Map<String,String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈡�绘暟
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @return 鎬绘暟
+ */
+ Long countByCondition(Map<String,String> conditionMap);
+
+ /**
+ * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+ * @param queryWrapper 鏌ヨ灏佽鍣�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntParamDO> 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);
+
+ //==
+
+ /**
+ * 鏍规嵁sysinfo涓婚敭鎵归噺鑾峰彇瀵硅薄
+ * @param sysinfoOid 涓婚敭
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ List<SysIntParamDO> selectBySysinfoOid(String sysinfoOid);
+
+ /**
+ * 鎵归噺淇敼杩欎釜sysinfo鐨刾aram锛屽厛鍒犻櫎sysinfo鎵�鏈夌殑header,鍐嶆柊寤烘墍鏈夌殑
+ * @param records
+ */
+ BaseResult updateSysinfoParam(List<SysIntParamDO> records);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeAllCodeDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeAllCodeDaoImpl.java
new file mode 100644
index 0000000..36b0728
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeAllCodeDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeAllCodeDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeBasicSecDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeBasicSecDaoImpl.java
new file mode 100644
index 0000000..d5fbca3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeBasicSecDaoImpl.java
@@ -0,0 +1,271 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeBasicSecDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeButtonDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeButtonDaoImpl.java
new file mode 100644
index 0000000..b4c14e4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeButtonDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeButtonDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyDaoImpl.java
new file mode 100644
index 0000000..ea58eb0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyDaoImpl.java
@@ -0,0 +1,520 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodeClassifyDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyProcessTempDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyProcessTempDaoImpl.java
new file mode 100644
index 0000000..7a96b90
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyProcessTempDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyProcessTempDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java
new file mode 100644
index 0000000..517c338
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTempMapItemDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyTempMapItemDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java
new file mode 100644
index 0000000..53ba6b3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateAttrDaoImpl.java
@@ -0,0 +1,214 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.CodeClassifyTemplateAttrDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java
new file mode 100644
index 0000000..abee77a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateButtonDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyTemplateButtonDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateDaoImpl.java
new file mode 100644
index 0000000..00b27bf
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateDaoImpl.java
@@ -0,0 +1,321 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodeClassifyTemplateDaoI;
+import com.vci.ubcs.code.lifecycle.CodeClassifyTemplateLC;
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java
new file mode 100644
index 0000000..4193ff2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyTemplateMapDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyTemplateMapDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyValueDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyValueDaoImpl.java
new file mode 100644
index 0000000..9a38d58
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeClassifyValueDaoImpl.java
@@ -0,0 +1,257 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyValueDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeFixedValueDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeFixedValueDaoImpl.java
new file mode 100644
index 0000000..25b4647
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeFixedValueDaoImpl.java
@@ -0,0 +1,222 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeFixedValueDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java
new file mode 100644
index 0000000..3c755dc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeKeyAttrRepeatRuleDaoImpl.java
@@ -0,0 +1,264 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeKeyAttrRepeatRuleDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodePhaseAttrDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodePhaseAttrDaoImpl.java
new file mode 100644
index 0000000..85d50ae
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodePhaseAttrDaoImpl.java
@@ -0,0 +1,246 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.CodePhaseAttrDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeResembleRuleDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeResembleRuleDaoImpl.java
new file mode 100644
index 0000000..899453d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeResembleRuleDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeResembleRuleDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeRuleDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeRuleDaoImpl.java
new file mode 100644
index 0000000..b8794f5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeRuleDaoImpl.java
@@ -0,0 +1,276 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeRuleDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSerialValueDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSerialValueDaoImpl.java
new file mode 100644
index 0000000..4913b0e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSerialValueDaoImpl.java
@@ -0,0 +1,214 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.CodeSerialValueDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSynonymDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSynonymDaoImpl.java
new file mode 100644
index 0000000..7688a39
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeSynonymDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeSynonymDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeTemplatePhaseDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeTemplatePhaseDaoImpl.java
new file mode 100644
index 0000000..927308b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/CodeTemplatePhaseDaoImpl.java
@@ -0,0 +1,247 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.CodeTemplatePhaseDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingDataDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingDataDaoImpl.java
new file mode 100644
index 0000000..fe585cd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingDataDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.DockingDataDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingLogeDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingLogeDaoImpl.java
new file mode 100644
index 0000000..724af81
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingLogeDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.DockingLogeDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataDaoImpl.java
new file mode 100644
index 0000000..9947029
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataDaoImpl.java
@@ -0,0 +1,214 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.DockingPreApplyDataDaoI;
+import com.vci.ubcs.code.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.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java
new file mode 100644
index 0000000..1b64884
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreApplyDataInfoDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.DockingPreApplyDataInfoDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrMappingDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrMappingDaoImpl.java
new file mode 100644
index 0000000..0fbca7e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrMappingDaoImpl.java
@@ -0,0 +1,205 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.DockingPreAttrMappingDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrRangeDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrRangeDaoImpl.java
new file mode 100644
index 0000000..75020cc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingPreAttrRangeDaoImpl.java
@@ -0,0 +1,204 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.DockingPreAttrRangeDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingTaskDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingTaskDaoImpl.java
new file mode 100644
index 0000000..2d5544b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/DockingTaskDaoImpl.java
@@ -0,0 +1,214 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.DockingTaskDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntAuthorityDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntAuthorityDaoImpl.java
new file mode 100644
index 0000000..8a2b550
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntAuthorityDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.SysIntAuthorityDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntBaseDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntBaseDaoImpl.java
new file mode 100644
index 0000000..01e2d7b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntBaseDaoImpl.java
@@ -0,0 +1,215 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.dao.SysIntBaseDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntHeaderDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntHeaderDaoImpl.java
new file mode 100644
index 0000000..4830b5d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntHeaderDaoImpl.java
@@ -0,0 +1,262 @@
+package com.vci.ubcs.code.dao.impl;
+
+
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.dao.SysIntHeaderDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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-11
+ */
+@Repository
+public class SysIntHeaderDaoImpl implements SysIntHeaderDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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 鏁版嵁瀵硅薄鍒楄〃
+ */
+ @Override
+ 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
+ */
+ @Override
+ 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(MdmDuckingConstant.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntInfoDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntInfoDaoImpl.java
new file mode 100644
index 0000000..bb00549
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntInfoDaoImpl.java
@@ -0,0 +1,214 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.dao.SysIntInfoDaoI;
+import com.vci.ubcs.code.model.SysIntInfoDO;
+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.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntParamDaoImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntParamDaoImpl.java
new file mode 100644
index 0000000..6dff1a9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/dao/impl/SysIntParamDaoImpl.java
@@ -0,0 +1,258 @@
+package com.vci.ubcs.code.dao.impl;
+
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.dao.SysIntParamDaoI;
+import com.vci.ubcs.code.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.context.annotation.Lazy;
+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-11
+ */
+@Repository
+public class SysIntParamDaoImpl implements SysIntParamDaoI {
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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(MdmDuckingConstant.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java
new file mode 100644
index 0000000..f357f42
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeButtonUseEnum.java
@@ -0,0 +1,140 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java
new file mode 100644
index 0000000..bb42e1e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyProcessUseEnum.java
@@ -0,0 +1,150 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java
new file mode 100644
index 0000000..0fb8b5b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeCutTypeEnum.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java
new file mode 100644
index 0000000..62689ff
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeGetValueTypeEnum.java
@@ -0,0 +1,130 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java
new file mode 100644
index 0000000..17ad387
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeLevelTypeEnum.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java
new file mode 100644
index 0000000..f1b3399
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeMapRuleTypeEnum.java
@@ -0,0 +1,145 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java
new file mode 100644
index 0000000..8678584
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecLengthTypeEnum.java
@@ -0,0 +1,130 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java
new file mode 100644
index 0000000..e202eac
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java
@@ -0,0 +1,157 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * 鐮佹鐨勭被鍨�
+ * @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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java
new file mode 100644
index 0000000..27a026b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeUseButtonPositionTypeEnum.java
@@ -0,0 +1,130 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java
new file mode 100644
index 0000000..5e4309c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationAuthorityTypeEnum.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.enumpack;
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * Description: 绯荤粺闆嗘垚楠岃瘉鏂瑰紡
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,text = "绯荤粺闆嗘垚楠岃瘉鏂瑰紡",description = "")
+public enum SysIntegrationAuthorityTypeEnum implements BaseEnum {
+ /**
+ * 鐢ㄦ埛鏂瑰紡
+ */
+ LOGIN("login","鐢ㄦ埛鐧诲綍"),
+ /**
+ * 浠ょ墝鏂瑰紡
+ */
+ TOKEN("token","浠ょ墝");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 SysIntegrationAuthorityTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static SysIntegrationAuthorityTypeEnum forValue(String value) {
+ for (SysIntegrationAuthorityTypeEnum wenum : SysIntegrationAuthorityTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java
new file mode 100644
index 0000000..54abf18
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java
@@ -0,0 +1,124 @@
+package com.vci.ubcs.code.enumpack;
+
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * Description:鏁版嵁娴佸悜鏂瑰紡
+ *
+ * @author LiHang
+ * @date Created on 2022/3/14
+ */
+public enum SysIntegrationDataFlowTypeEnum implements BaseEnum {
+ /**
+ * 鎺ㄩ��
+ */
+ PUSH("push","鎺ㄩ��"),
+ /**
+ * 閫氱煡鍜屾煡璇�
+ */
+ NOTICE_AND_QUERY("noticeAndQuery","閫氱煡鍜屾煡璇�");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 SysIntegrationDataFlowTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static SysIntegrationDataFlowTypeEnum forValue(String value) {
+ for (SysIntegrationDataFlowTypeEnum wenum : SysIntegrationDataFlowTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java
new file mode 100644
index 0000000..6aede7d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationParamAndReturnTypeEnum.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.code.enumpack;
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * Description: 绯荤粺闆嗘垚鎺ュ彛鍙傛暟涓庤繑鍥炲�肩被鍨�
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛鍙傛暟涓庤繑鍥炲�肩被鍨�",description = "")
+public enum SysIntegrationParamAndReturnTypeEnum implements BaseEnum {
+ /**
+ * Json鏍煎紡
+ */
+ JSON("json","Json"),
+ /**
+ * Xml鏍煎紡
+ */
+ XML("xml","xml");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 SysIntegrationParamAndReturnTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static SysIntegrationParamAndReturnTypeEnum forValue(String value) {
+ for (SysIntegrationParamAndReturnTypeEnum wenum : SysIntegrationParamAndReturnTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java
new file mode 100644
index 0000000..7a5623e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestMethodEnum.java
@@ -0,0 +1,136 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * Description:绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_METHOD_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛璇锋眰鏂瑰紡绫诲瀷",description = "")
+public enum SysIntegrationRequestMethodEnum implements BaseEnum {
+ /**
+ * post璇锋眰
+ */
+ POST("post","post"),
+ /**
+ * get璇锋眰
+ */
+ GET("get","get"),
+ /**
+ * put璇锋眰
+ */
+ PUT("put","put"),
+ /**
+ * delete璇锋眰
+ */
+ DELETE("delete","delete");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 SysIntegrationRequestMethodEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static SysIntegrationRequestMethodEnum forValue(String value) {
+ for (SysIntegrationRequestMethodEnum wenum : SysIntegrationRequestMethodEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java
new file mode 100644
index 0000000..eb7bb78
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationRequestTypeEnum.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+/**
+ * Description:绯荤粺闆嗘垚鎺ュ彛鐨勭被鍨�
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_TYPE,text = "绯荤粺闆嗘垚鎺ュ彛鐨勭被鍨�",description = "")
+public enum SysIntegrationRequestTypeEnum implements BaseEnum {
+ /**
+ * HTTP鏂瑰紡
+ */
+ HTTP("http","Http"),
+ /**
+ * WebService鏂瑰紡
+ */
+ WEB_SERVICE("webService","webService"),
+ WEB_SERVICE_ERP("webService","webService"),
+ WEB_SERVICE_CXF("webService","webService"),
+ WEB_SERVICE_AXIS("webService","webService"),
+ /**
+ * 绫昏矾寰�
+ */
+ CLASSPATH("classPath","绫昏矾寰�");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 SysIntegrationRequestTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static SysIntegrationRequestTypeEnum forValue(String value) {
+ for (SysIntegrationRequestTypeEnum wenum : SysIntegrationRequestTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java
new file mode 100644
index 0000000..6aaa998
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/sysIntegrationPushTypeEnum.java
@@ -0,0 +1,122 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+import com.vci.starter.web.annotation.VciEnum;
+import com.vci.starter.web.enumpck.BaseEnum;
+
+@VciEnum(name = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,text = "绯荤粺鎺ュ彛鎺ㄩ�佹柟寮�",description = "")
+public enum sysIntegrationPushTypeEnum implements BaseEnum {
+ /**
+ * 鍒嗙被鎺ㄩ�佹柟寮�
+ */
+ JSON("1","鏁版嵁鎺ㄩ��"),
+ /**
+ * Xml鏍煎紡
+ */
+ XML("2","鍒嗙被鎺ㄩ��");
+
+ /**
+ * 鏋氫妇鐨勫��
+ */
+ 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 sysIntegrationPushTypeEnum(String value, String text) {
+ this.value = value;
+ this.text = text;
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+ *
+ * @param text 鍚嶇О
+ * @return 鏋氫妇鍊�
+ */
+ public static String getValueByText(String text) {
+ for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.values()) {
+ if (wenum.getText().equalsIgnoreCase(text)) {
+ return wenum.getValue();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鍚嶇О
+ */
+ public static String getTextByValue(String value) {
+ for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum.getText();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+ *
+ * @param value 鏋氫妇鍊�
+ * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+ */
+ public static sysIntegrationPushTypeEnum forValue(String value) {
+ for (sysIntegrationPushTypeEnum wenum : sysIntegrationPushTypeEnum.values()) {
+ if (wenum.getValue().equalsIgnoreCase(value)) {
+ return wenum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeAllCodeLC.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeAllCodeLC.java
new file mode 100644
index 0000000..bcb1756
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeAllCodeLC.java
@@ -0,0 +1,165 @@
+package com.vci.ubcs.code.lifecycle;
+
+
+import com.vci.ubcs.code.constant.MdmLifeCycleConstant;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeClassifyTemplateLC.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeClassifyTemplateLC.java
new file mode 100644
index 0000000..eb3f7a9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeClassifyTemplateLC.java
@@ -0,0 +1,144 @@
+package com.vci.ubcs.code.lifecycle;
+
+
+import com.vci.ubcs.code.constant.MdmLifeCycleConstant;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeDefaultLC.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeDefaultLC.java
new file mode 100644
index 0000000..3f097b4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeDefaultLC.java
@@ -0,0 +1,159 @@
+package com.vci.ubcs.code.lifecycle;
+
+
+import com.vci.ubcs.code.constant.MdmLifeCycleConstant;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java
new file mode 100644
index 0000000..76fc837
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java
@@ -0,0 +1,144 @@
+package com.vci.ubcs.code.lifecycle;
+
+
+import com.vci.ubcs.code.constant.MdmLifeCycleConstant;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeALlCodeMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeALlCodeMapper.xml
new file mode 100644
index 0000000..6db3079
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeALlCodeMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.springblade.code.mapper.CodeAllCodeMapper">
+
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java
new file mode 100644
index 0000000..f990f5a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.code.mapper;
+
+/**
+ * 鎵�鏈夌殑鐮佸�兼暟鎹搷浣滃眰
+ *
+ * @author weidy
+ * @date 2022-03-01
+ */
+public interface CodeAllCodeMapper {
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeAllCodeDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeAllCodeDO.java
new file mode 100644
index 0000000..6f02d47
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeAllCodeDO.java
@@ -0,0 +1,170 @@
+package com.vci.ubcs.code.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+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 com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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)
+@TableName("PL_CODE_CODEALLCODE")
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeBasicSecDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeBasicSecDO.java
new file mode 100644
index 0000000..fff2e32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeBasicSecDO.java
@@ -0,0 +1,728 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.ubcs.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.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.web.constant.EnumIdConstant;
+
+/**
+ * 鍩虹鐮佹鐨勪俊鎭�
+ * 鏂逛究鍦ㄥ悓涓�涓〉闈㈤噷鏄剧ず鎵�鏈夌殑鐮佹
+ * @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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeButtonDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeButtonDO.java
new file mode 100644
index 0000000..69b5204
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeButtonDO.java
@@ -0,0 +1,125 @@
+package com.vci.ubcs.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 com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyDO.java
new file mode 100644
index 0000000..92aa3de
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyDO.java
@@ -0,0 +1,276 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessPhaseDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessPhaseDO.java
new file mode 100644
index 0000000..c16cf32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessPhaseDO.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessTempDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessTempDO.java
new file mode 100644
index 0000000..9106c71
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyProcessTempDO.java
@@ -0,0 +1,169 @@
+package com.vci.ubcs.code.model;
+
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTempMapItemDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTempMapItemDO.java
new file mode 100644
index 0000000..9666532
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTempMapItemDO.java
@@ -0,0 +1,181 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateAttrDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateAttrDO.java
new file mode 100644
index 0000000..c76f89c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateAttrDO.java
@@ -0,0 +1,858 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateButtonDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateButtonDO.java
new file mode 100644
index 0000000..250990c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateButtonDO.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateDO.java
new file mode 100644
index 0000000..833b789
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateDO.java
@@ -0,0 +1,93 @@
+package com.vci.ubcs.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 com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateMapDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateMapDO.java
new file mode 100644
index 0000000..3b8020f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyTemplateMapDO.java
@@ -0,0 +1,114 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyValueDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyValueDO.java
new file mode 100644
index 0000000..df65b80
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeClassifyValueDO.java
@@ -0,0 +1,108 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeFixedValueDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeFixedValueDO.java
new file mode 100644
index 0000000..bec52f5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeFixedValueDO.java
@@ -0,0 +1,93 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeImprotDataGridVO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeImprotDataGridVO.java
new file mode 100644
index 0000000..c604143
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeImprotDataGridVO.java
@@ -0,0 +1,4 @@
+package com.vci.ubcs.code.model;
+
+public class CodeImprotDataGridVO {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeKeyAttrRepeatRuleDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeKeyAttrRepeatRuleDO.java
new file mode 100644
index 0000000..a731ca2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeKeyAttrRepeatRuleDO.java
@@ -0,0 +1,120 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodePhaseAttrDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodePhaseAttrDO.java
new file mode 100644
index 0000000..7cb8954
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodePhaseAttrDO.java
@@ -0,0 +1,93 @@
+package com.vci.ubcs.code.model;
+
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeResembleRuleDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeResembleRuleDO.java
new file mode 100644
index 0000000..d61b8ff
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeResembleRuleDO.java
@@ -0,0 +1,137 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeRuleDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeRuleDO.java
new file mode 100644
index 0000000..2b23e6f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeRuleDO.java
@@ -0,0 +1,79 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmLifeCycleConstant;
+
+/**
+ * 缂栫爜瑙勫垯
+ * @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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSerialValueDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSerialValueDO.java
new file mode 100644
index 0000000..8d114ea
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSerialValueDO.java
@@ -0,0 +1,88 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSynonymDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSynonymDO.java
new file mode 100644
index 0000000..03468a9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeSynonymDO.java
@@ -0,0 +1,121 @@
+package com.vci.ubcs.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 com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeTemplatePhaseDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeTemplatePhaseDO.java
new file mode 100644
index 0000000..c8e73e5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/CodeTemplatePhaseDO.java
@@ -0,0 +1,81 @@
+package com.vci.ubcs.code.model;
+
+
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingDataDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingDataDO.java
new file mode 100644
index 0000000..76e7313
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingDataDO.java
@@ -0,0 +1,148 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 瑕佹帹閫佸緱鏁版嵁
+ * @author wangyi
+ * @date 2022-10-7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_DATA,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingDataDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+
+ /**
+ * uniquecode
+ */
+ @Column(columnDefinition = "uniquecode")
+ private String uniquecode;
+
+ /**
+ * 绯荤粺鎺ュ彛oid
+ */
+ @Column(columnDefinition = "鍒嗙被oid")
+ private String classifyoid;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷oid")
+ private String btmoid;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷id")
+ private String btmid;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "鎺ㄩ�佺被鍨�")
+ private String sendtype;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "鏄惁鍒嗚В浠诲姟")
+ private String sendflag;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "鍒嗙被id")
+ private String classifyid;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(columnDefinition = "鍒嗙被鍚嶇О")
+ private String classifyname;
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ 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 + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", btmoid='" + btmoid + '\'' +
+ ", btmid='" + btmid + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", sendflag='" + sendflag + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingLogeDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingLogeDO.java
new file mode 100644
index 0000000..fd71e8f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingLogeDO.java
@@ -0,0 +1,228 @@
+package com.vci.ubcs.code.model;
+
+
+import com.vci.starter.web.annotation.Column;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.annotation.VciFieldType;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+import static com.vci.starter.web.enumpck.VciFieldTypeEnum.VTClob;
+
+/**
+ * 璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇�
+ * @author wangyi
+ * @date 2022-3-7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_LOGE,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙f棩蹇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingLogeDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+ /**
+ * 绯荤粺id
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺id")
+ private String systemoid;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
+ private String systemcode;
+
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺鍚嶇О")
+ private String systemname;
+
+ /**
+ * 鍒嗙被oid
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被oid")
+ private String classifyoid;
+
+ /**
+ * 鍒嗙被id
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被id")
+ private String classifyid;
+
+ /**
+ * 鍒嗙被name
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被name")
+ private String classifyname;
+
+ /**
+ * 鍞竴鏍囪瘑
+ */
+ @Column(columnDefinition = "鍞竴鏍囪瘑")
+ private String uniquecode;
+
+ /**
+ * 鎺ュ彛绫诲瀷锛氭帹閫佹帴鍙�/鏌ヨ鎺ュ彛,鏆傛椂涓嶇敤
+ */
+ @Column(columnDefinition = "鎺ュ彛绫诲瀷")
+ private String type;
+
+ /**
+ * 杩旇繕鎻愮ず
+ */
+ @Column(columnDefinition = "杩旇繕鎻愮ず")
+ private String msg;
+
+ /**
+ * 鍙傛暟锛氶�氱煡鎺ュ彛鏄垜浠紶鍑虹殑鍙傛暟/鏌ヨ鎺ュ彛鏄埆浜轰紶鍏ョ殑鍙傛暟
+ */
+ @VciFieldType(VTClob)
+ @Column(columnDefinition = "鍙傛暟")
+ private String paramstring;
+
+ /**
+ * 浼犻�抶ml
+ */
+ @Column(columnDefinition = "浼犻�抶ml",length = 4000)
+ private String sendXml;
+
+ /**
+ * 杩斿洖锛氶�氱煡鎺ュ彛鏄垜浠敹鍒扮殑鍙嶉锛屾煡璇㈡帴鍙f槸鍒汉鏀跺埌鐨勫弽棣�
+ */
+ @VciFieldType(VTClob)
+ @Column(columnDefinition = "杩斿洖")
+ private String returnstring;
+
+ /**
+ * 鎺ュ彛鐘舵�侊細鎴愬姛/澶辫触
+ */
+ @Column(nullable = false,columnDefinition = "鎺ュ彛鐘舵��")
+ private String interfacestatus;
+ private Object MdmBtmTypeConstant;
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ public String getSendXml() {
+ return sendXml;
+ }
+
+ public void setSendXml(String sendXml) {
+ this.sendXml = sendXml;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ 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 getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ 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 getInterfacestatus() {
+ return interfacestatus;
+ }
+
+ public void setInterfacestatus(String interfacestatus) {
+ this.interfacestatus = interfacestatus;
+ }
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingLogeDO{" +
+ "systemoid='" + systemoid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", type='" + type + '\'' +
+ ", msg='" + msg + '\'' +
+ ", paramstring='" + paramstring + '\'' +
+ ", sendXml='" + sendXml + '\'' +
+ ", returnstring='" + returnstring + '\'' +
+ ", interfacestatus='" + interfacestatus + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataDO.java
new file mode 100644
index 0000000..4e14ee1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataDO.java
@@ -0,0 +1,266 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅锛屽拰DockingPSMDataInfoDO涓�瀵瑰鐨勫叧绯�
+ * @author wangyi
+ * @date 2022-3-7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_APPLY_DATA,text = "璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingPreApplyDataDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+
+ /**
+ * 鐢宠oid
+ */
+ @Column(nullable = false,columnDefinition = "鐢宠oid")
+ private String preapplyoid;
+
+ /**
+ * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
+ */
+ @Column(nullable = false,columnDefinition = "鍞竴鏍囪瘑")
+ private String uniquecode;
+
+ /**
+ * 涓婚搴撶紪鍙�
+ */
+ @Column(nullable = false,columnDefinition = "涓婚搴撶紪鍙�")
+ private String type;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
+ private String systemid;
+
+ /**
+ * 姝e湪浣跨敤鏍囧織
+ */
+ @Column(nullable = true,columnDefinition = "姝e湪浣跨敤鏍囧織")
+ private String useddflag;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被oid
+ */
+ @Column(columnDefinition = "鍏宠仈鍒嗙被oid")
+ private String classifyoid;
+
+ /**
+ * 鍏宠仈鍒嗙被鎿嶄綔杩囧悗锛岃褰曠殑鍏宠仈鍒嗙被鍚嶇О
+ */
+ @Column(columnDefinition = "鍏宠仈鍒嗙被鍚嶇О")
+ private String classifyname;
+
+ /**
+ * 鐢宠鎴愬姛鍚庣殑缂栫爜,鎴栬�呭凡缁忓瓨鍦ㄧ殑缂栫爜
+ */
+ @Column(columnDefinition = "鏄惁瀹屾垚鐢宠缂栫爜")
+ private String num;
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Column(columnDefinition = "瑙勬牸鍨嬪彿")
+ private String model;
+ /**
+ * 闆朵欢绫诲瀷
+ */
+ @Column(columnDefinition = "闆朵欢绫诲瀷")
+ private String parttype;
+ /**
+ * 璁¢噺鍗曚綅
+ */
+ @Column(columnDefinition = "璁¢噺鍗曚綅")
+ private String unit;
+
+ /**
+ * 鍗曢噸
+ */
+ @Column(columnDefinition = "鍗曢噸")
+ private String weight;
+
+ /**
+ * 鏄惁閲嶈浠�
+ */
+ @Column(columnDefinition = "鏄惁閲嶈浠�")
+ private String importantPart;
+
+ /**
+ * 鏄惁鍏抽敭浠�
+ */
+ @Column(columnDefinition = "鏄惁鍏抽敭浠�")
+ private String keyPart;
+ /**
+ * 鏁版嵁澶勭悊杩斿洖鐘舵�佺爜
+ */
+ @Column(columnDefinition = "鏁版嵁澶勭悊杩斿洖鐘舵�佺爜")
+ private String datacode;
+
+ /**
+ * 鏁版嵁澶勭悊杩斿洖淇℃伅
+ */
+ @Column(columnDefinition = "鏁版嵁澶勭悊杩斿洖淇℃伅")
+ private String datamsg;
+ private Object MdmBtmTypeConstant;
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String unique) {
+ this.uniquecode = unique;
+ }
+
+ public String getClassifyoid() {
+ return classifyoid;
+ }
+
+ public void setClassifyoid(String classifyoid) {
+ this.classifyoid = classifyoid;
+ }
+
+ public String getUseddflag() {
+ return useddflag;
+ }
+
+ public void setUseddflag(String useddflag) {
+ this.useddflag = useddflag;
+ }
+
+ 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 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 getPreapplyoid() {
+ return preapplyoid;
+ }
+
+ public void setPreapplyoid(String preapplyoid) {
+ this.preapplyoid = preapplyoid;
+ }
+
+ 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 "DockingPreApplyDataDO{" +
+ "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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataInfoDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataInfoDO.java
new file mode 100644
index 0000000..4d90faa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreApplyDataInfoDO.java
@@ -0,0 +1,103 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @author wangyi
+ * @date 2022-3-7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_APPLY_DATA_INFO,text = "璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingPreApplyDataInfoDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+
+ /**
+ * data鐨刼id
+ */
+ @Column(nullable = false,columnDefinition = "data鐨刼id")
+ private String dataoid;
+
+ /**
+ * 鍞竴鏍囪瘑锛屽伐鑹洪噷杈圭殑鍥惧彿
+ */
+ @Column(nullable = false,columnDefinition = "鍞竴鏍囪瘑")
+ private String uniquecode;
+
+ /**
+ * 灞炴�ey
+ */
+ @Column(nullable = true,columnDefinition = "灞炴�ey")
+ private String key;
+
+ /**
+ * 灞炴�ey鍚箟
+ */
+ @Column(nullable = true,columnDefinition = "灞炴�ey鍚箟")
+ private String mean;
+
+ /**
+ * 灞炴�alue
+ */
+ @Column(nullable = true,columnDefinition = "灞炴�alue",length = 4000)
+ private String value;
+
+ public String getDataoid() {
+ return dataoid;
+ }
+
+ public void setDataoid(String dataoid) {
+ this.dataoid = dataoid;
+ }
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ 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 "DockingPSMDataInfoDO{" +
+ "dataoid='" + dataoid + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", key='" + key + '\'' +
+ ", mean='" + mean + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrMappingDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrMappingDO.java
new file mode 100644
index 0000000..c640b05
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrMappingDO.java
@@ -0,0 +1,207 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
+ * @author xiejun
+ * @date 2023-01-06
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_JINTEGMAPCONFIG,text = "闆嗘垚灞炴�ф槧灏勫叧绯诲璞�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingPreAttrMappingDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6020487634341415429L;
+
+ /***
+ * 榛樿鍊�
+ */
+ @Column(nullable = true,columnDefinition = "榛樿鍊�")
+ private String jdefaultValue;
+
+ /***
+ * 榛樿鍊�
+ */
+ /**
+ * 姝e湪浣跨敤鏍囧織
+ */
+ @Column(nullable = true,columnDefinition = "婧愮郴缁熺殑灞炴�id")
+ private String jmetaListId;
+ /**
+ * 婧愬垎绫籭d
+ */
+ @Column(nullable = false,columnDefinition = "婧愮郴缁熺殑鍒嗙被oid")
+ private String jsourceClsfId;
+ /**
+ * 婧愬垎绫诲悕绉�
+ */
+ @Column(nullable = true,columnDefinition = "婧愮郴缁熺殑鍒嗙被鍚嶇О")
+ private String jsourceClsfName;
+ /**
+ * 婧愬睘鎬id
+ */
+ @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�х郴id")
+ private String jtargetAttrId;
+
+ /**
+ * 鐩爣灞炴�id
+ */
+ @Column(nullable = true,columnDefinition = "鐩爣绯荤粺鍒嗙被oid")
+ private String jtargetClsfId;
+
+ /***
+ * 妯℃澘Id
+ */
+ @Column(nullable = true,columnDefinition = "妯℃澘瑙嗗浘鐨刼id")
+ private String jviewModeId;
+ /***
+ * 妯℃澘鍚嶇О
+ */
+ @Column(nullable = true,columnDefinition = "妯℃澘鍚嶇О")
+ private String jviewModeName;
+
+ /***
+ * 鐩爣灞炴�у唴閮ㄥ悕绉�
+ */
+ @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�у唴閮ㄥ��")
+ private String jtargetAttrKey;
+
+ /***
+ * 鐩爣灞炴�у悕绉�
+ */
+ @Column(nullable = true,columnDefinition = "鐩爣绯荤粺灞炴�у悕绉�")
+ private String jtargetAttrName;
+
+ /***
+ * 鐩爣灞炴�у唴閮ㄥ悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "婧愮郴缁熷睘鎬у唴閮ㄥ悕绉�")
+ private String jsourceAttrKey;
+
+ /***
+ * 鐩爣灞炴�у悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "婧愮郴缁熷睘鎬у悕绉�")
+ private String jsourceAttrName;
+
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrMappingDO{" +
+ "jdefaultValue='" + jdefaultValue + '\'' +
+ ", jmetaListId='" + jmetaListId + '\'' +
+ ", jsourceClsfId='" + jsourceClsfId + '\'' +
+ ", jsourceClsfName='" + jsourceClsfName + '\'' +
+ ", jtargetAttrId='" + jtargetAttrId + '\'' +
+ ", jtargetClsfId='" + jtargetClsfId + '\'' +
+ ", jviewModeId='" + jviewModeId + '\'' +
+ ", jviewModeName='" + jviewModeName + '\'' +
+ ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
+ ", jtargetAttrName='" + jtargetAttrName + '\'' +
+ ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
+ ", jsourceAttrName='" + jsourceAttrName + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrRangeDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrRangeDO.java
new file mode 100644
index 0000000..cf35960
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingPreAttrRangeDO.java
@@ -0,0 +1,95 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_PRE_JRANGE,text = "闆嗘垚灞炴�у彇鍊艰寖鍥村璞�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingPreAttrRangeDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 6020487634341415410L;
+ /***
+ *灞炴�d
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�id")
+ private String jmetaListId;
+
+ /**
+ * 灞炴�ф灇涓炬樉绀哄悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "婧愬睘鎬ф灇涓炬樉绀哄悕绉�")
+ private String jnumText;
+ /**
+ * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�")
+ private String jnumTextValue;
+
+ /**
+ * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+ */
+ @Column(nullable = true,columnDefinition = "灞炴�ф灇涓炬樉绀哄悕绉�")
+ private String jtargeNumText;
+ /**
+ * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+ */
+ @Column(nullable = false,columnDefinition = "灞炴�ф灇涓惧唴閮ㄥ悕绉�")
+ private String jtargeNumTextValue;
+
+ public String getJmetaListId() {
+ return jmetaListId;
+ }
+
+ public void setJmetaListId(String jmetaListId) {
+ this.jmetaListId = jmetaListId;
+ }
+
+ 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;
+ }
+
+ @Override
+ public String toString() {
+ return "DockingPreAttrRangeDO{" +
+ "jmetaListId='" + jmetaListId + '\'' +
+ ", jnumText='" + jnumText + '\'' +
+ ", jnumTextValue='" + jnumTextValue + '\'' +
+ ", jtargeNumText='" + jtargeNumText + '\'' +
+ ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingTaskDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingTaskDO.java
new file mode 100644
index 0000000..d082e03
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/DockingTaskDO.java
@@ -0,0 +1,224 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * 鏁版嵁鍙戝竷銆佷慨鏀瑰悗锛岃褰曚笅闇�瑕侀�氱煡鐨勭郴缁�
+ * 姣斿锛歄A绯荤粺鐢宠浜嗕汉鍛樿繖涓垎绫荤殑鏁版嵁锛屼汉鍛樿繖涓垎绫讳笅鍙戝竷浜嗕竴鏉℃柊鏁版嵁锛岄渶瑕佹妸鏉℃暟鎹帹閫佺粰OA绯荤粺锛屼細鍦ㄨ繖涓笟鍔$被鍨嬩笅浜х敓涓�鏉℃暟鎹�傜劧鍚庡畾鏃跺櫒鎸夋椂鍙戦�佷换鍔°��
+ * 濡傛灉鏈変袱涓郴缁熺敵璇蜂簡浜哄憳鏁版嵁锛屽氨浼氫骇鐢熶袱鏉℃暟鎹�
+ * @author wangyi
+ * @date 2022-3-7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.DOCKING_TASK,text = "璧勬簮瀵规帴閫氱煡銆佹煡璇㈡帴鍙e緟鎺ㄩ�佷换鍔�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class DockingTaskDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 5020487634341415429L;
+
+ /**
+ * 绯荤粺鎺ュ彛oid
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺鎺ュ彛oid")
+ private String sysinfooid;
+
+ /**
+ * 绯荤粺id
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺oid")
+ private String systemoid;
+
+ /**
+ * 绯荤粺缂栧彿
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺缂栧彿")
+ private String systemcode;
+
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "绯荤粺鍚嶇О")
+ private String systemname;
+
+ /**
+ * 鍒嗙被oid
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被oid")
+ private String classifyoid;
+
+ /**
+ * 鍒嗙被id
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被id")
+ private String classifyid;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ @Column(nullable = false,columnDefinition = "鍒嗙被鍚嶇О")
+ private String classifyname;
+
+ /**
+ * 涓氬姟绫诲瀷鏁版嵁oid
+ */
+ @Column(nullable = false,columnDefinition = "涓氬姟绫诲瀷鏁版嵁oid")
+ private String btmoid;
+
+ /**
+ * 涓氬姟绫诲瀷鏁版嵁id
+ */
+ @Column(nullable = false,columnDefinition = "涓氬姟绫诲瀷鏁版嵁id")
+ private String btmid;
+
+ /**
+ * 鍞竴鏍囪瘑
+ */
+ @Column(columnDefinition = "鍞竴鏍囪瘑")
+ private String uniquecode;
+
+ /**
+ * 鍙戦�佺被鍨�
+ */
+ @Column(nullable = false,columnDefinition = "鍙戦�佺被鍨�")
+ private String sendtype;
+
+ /**
+ * 鏄惁鍙戦�佹垚鍔�
+ */
+ @Column(nullable = false,columnDefinition = "鏄惁鍙戦�佹垚鍔�")
+ private String sendflag;
+
+ /**
+ * dockingdata鐨刼id
+ */
+ @Column(nullable = false,columnDefinition = "dockingdata鐨刼id")
+ private String dataoid;
+
+ public String getSendtype() {
+ return sendtype;
+ }
+
+ public void setSendtype(String sendtype) {
+ this.sendtype = sendtype;
+ }
+
+ 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 getSysinfooid() {
+ return sysinfooid;
+ }
+
+ public void setSysinfooid(String sysinfooid) {
+ this.sysinfooid = sysinfooid;
+ }
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+ public String getDataoid() {
+ return dataoid;
+ }
+
+ public void setDataoid(String dataoid) {
+ this.dataoid = dataoid;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DockingTaskDO{" +
+ "sysinfooid='" + sysinfooid + '\'' +
+ ", systemoid='" + systemoid + '\'' +
+ ", systemcode='" + systemcode + '\'' +
+ ", systemname='" + systemname + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", btmoid='" + btmoid + '\'' +
+ ", btmid='" + btmid + '\'' +
+ ", sendflag='" + sendflag + '\'' +
+ ", uniquecode='" + uniquecode + '\'' +
+ ", sendtype='" + sendtype + '\'' +
+ ", dataoid='" + dataoid + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntAuthorityDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntAuthorityDO.java
new file mode 100644
index 0000000..8f905d1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntAuthorityDO.java
@@ -0,0 +1,159 @@
+package com.vci.ubcs.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 com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+
+/**
+ * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_AUTHORITY,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class SysIntAuthorityDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1144067849291882385L;
+
+ /**
+ * 璁よ瘉缂栧彿
+ */
+ @Column(columnDefinition = "璁よ瘉缂栧彿")
+ private String id;
+
+ /**
+ * 璁よ瘉鍚嶇О
+ */
+ @Column(columnDefinition = "璁よ瘉鍚嶇О")
+ private String name;
+
+ /**
+ * 绯荤粺鎻忚堪
+ */
+ @Column(columnDefinition = "璁よ瘉鎻忚堪")
+ private String description;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ @Column(columnDefinition = "璁よ瘉鏂瑰紡",nullable = false)
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,showTextField = "typeText")
+ private String type;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String typeText;
+
+ /**
+ * 楠岃瘉鐢ㄦ埛
+ */
+ @Column(columnDefinition = "楠岃瘉鐢ㄦ埛")
+ private String userAccount;
+
+ /**
+ * 楠岃瘉瀵嗙爜
+ */
+ @Column(columnDefinition = "楠岃瘉瀵嗙爜")
+ private String userCode;
+
+ /**
+ * 楠岃瘉浠ょ墝
+ */
+ @Column(columnDefinition = "楠岃瘉浠ょ墝")
+ private String token;
+
+ @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;
+ }
+
+ 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;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntegrationAuthorityDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", type='" + type + '\'' +
+ ", typeText='" + typeText + '\'' +
+ ", userAccount='" + userAccount + '\'' +
+ ", userCode='" + userCode + '\'' +
+ ", token='" + token + '\'' +
+ '}' + super.toString();
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntBaseDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntBaseDO.java
new file mode 100644
index 0000000..ecfab07
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntBaseDO.java
@@ -0,0 +1,78 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * Description:绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ *
+ * @author: LiHang
+ * @date: Created on 2022/3/7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_BASE,text = "绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class SysIntBaseDO extends BaseModel {
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -5910713918419137900L;
+ /**
+ * 绯荤粺缂栧彿
+ */
+ @Column(columnDefinition = "绯荤粺缂栧彿",nullable = false)
+ private String id;
+
+ /**
+ * 绯荤粺鍚嶇О
+ */
+ @Column(columnDefinition = "绯荤粺鍚嶇О",nullable = false)
+ 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 "SysIntegrationBaseDO{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ '}' + super.toString();
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntHeaderDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntHeaderDO.java
new file mode 100644
index 0000000..00b68ad
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntHeaderDO.java
@@ -0,0 +1,90 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ *
+ * @author: wangyi
+ * @date: Created on 2022/3/7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_HEADER,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class SysIntHeaderDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1144067849291882385L;
+
+ /**
+ * SysIntInfoDO 鐨刼id
+ */
+ @Column(columnDefinition = "鎺ュ彛oid")
+ private String infoOid;
+
+ /**
+ * 鍙傛暟key
+ */
+ @Column(columnDefinition = "鍙傛暟key")
+ private String headerkey;
+
+ /**
+ * 鍙傛暟value
+ */
+ @Column(columnDefinition = "鍙傛暟value")
+ private String headeralue;
+
+ /**
+ * 鏄惁浣跨敤
+ */
+ @Column(columnDefinition = "鏄惁浣跨敤")
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntInfoDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntInfoDO.java
new file mode 100644
index 0000000..ec6305b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntInfoDO.java
@@ -0,0 +1,656 @@
+package com.vci.ubcs.code.model;
+
+import com.vci.starter.web.annotation.*;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+import com.vci.starter.web.model.BaseModel;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmEnumIdConstant;
+
+/**requesturl
+ * Description: 绯荤粺闆嗘垚鎺ュ彛鍩虹淇℃伅
+ *
+ * @author LiHang
+ * @date Created on 2022/3/7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_INFO,text = "绯荤粺闆嗘垚鍩虹淇℃伅",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class SysIntInfoDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = -6867365039736279037L;
+
+ /**
+ * 鍚敤銆佸仠鐢╰rue/false锛屼笉鐢ㄥ钩鍙扮殑鏋氫妇锛屽噺灏戝骞冲彴鐨勮�﹀悎
+ */
+ @Column(columnDefinition = "鍚敤鍋滅敤")
+ private String usedflag;
+
+ /**
+ * 鍒嗙被oid
+ */
+ @Column(columnDefinition = "鍒嗙被oid")
+ private String classifyoid;
+
+ /**
+ * 鍒嗙被id
+ */
+ @Column(columnDefinition = "鍒嗙被id")
+ private String classifyid;
+
+ /**
+ * 鍒嗙被鍚嶇О
+ */
+ @Column(columnDefinition = "鍒嗙被鍚嶇О")
+ private String classifyname;
+
+ /**
+ * 鎺ㄩ�佺郴缁無id
+ */
+ @Column(columnDefinition = "鎺ㄩ�佺郴缁無id")
+ private String sysbaseoid;
+
+ /**
+ * 鎺ㄩ�佺郴缁熺紪鍙�
+ */
+ @Column(columnDefinition = "鎺ㄩ�佺郴缁熺紪鍙�")
+ private String sysbaseid;
+
+ /**
+ * 鎺ㄩ�佺郴缁熷悕绉�
+ */
+ @Column(columnDefinition = "鎺ㄩ�佺郴缁熷悕绉�")
+ private String sysbasename;
+
+ /**
+ * 鎺ュ彛鍑芥暟
+ */
+ @Column(columnDefinition = "鎺ュ彛鍑芥暟")
+ private String interfaceFunction;
+
+ /**
+ * 鍛藉悕绌洪棿
+ */
+ @Column(columnDefinition = "鍛藉悕绌洪棿")
+ private String namespace;
+
+ /**
+ * soapAction
+ */
+ @Column(columnDefinition = "soapAction")
+ private String soapaction;
+
+ /**
+ * 鍙傛暟鍚嶇О
+ */
+ @Column(columnDefinition = "鍙傛暟鍚嶇О")
+ private String targName;
+
+ /**
+ * cxfaxis
+ */
+ @Column(columnDefinition = "cxfaxis")
+ private String cxfaxis;
+
+ /**
+ * 璇锋眰鍦板潃
+ */
+ @Column(columnDefinition = "璇锋眰鍦板潃")
+ private String requestUrl;
+
+ /**
+ * 鎺ュ彛绫诲瀷
+ */
+ @Column(columnDefinition = "鎺ュ彛绫诲瀷")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_TYPE,showTextField = "interfaceTypeText")
+ private String interfaceType;
+
+ /**
+ * 鎺ュ彛绫诲瀷鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String interfaceTypeText;
+
+ /**
+ * 鍙傛暟绫诲瀷
+ */
+ @Column(columnDefinition = "鍙傛暟绫诲瀷")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,showTextField = "paramTypeText")
+ private String paramType;
+
+ /**
+ * 鍙傛暟绫诲瀷鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String paramTypeText;
+
+ /**
+ * 杩斿洖鍊肩被鍨�
+ */
+ @Column(columnDefinition = "杩斿洖鍊肩被鍨�")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PARAM_AND_RETURN_TYPE,showTextField = "returnTypeText")
+ private String returnType;
+
+ /**
+ * 杩斿洖鍊肩被鍨嬫樉绀烘枃鏈�
+ */
+ @Transient()
+ private String returnTypeText;
+
+ //===================================浠ヤ笅鏆傛椂涓嶇敤
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨�
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勭紪鍙�")
+ private String btmTypeId;
+
+ /**
+ * 瀛樺偍鐨勪笟鍔$被鍨嬬殑涓枃鍚嶇О
+ */
+ @Column(columnDefinition = "涓氬姟绫诲瀷鐨勫悕绉�")
+ private String btmTypeName;
+
+ /**
+ * 鏉ユ簮绯荤粺涓婚敭
+ */
+ @Column(columnDefinition = "鏉ユ簮绯荤粺涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.SYS_INT_BASE)
+ private String sourceSystemOid;
+
+ /**
+ * 婧愮郴缁熷悕绉�
+ */
+ //@Transient(referColumn = "sourceSystemOid.name")
+ private String sourceSysName;
+
+ /**
+ * 婧愮郴缁熸爣璇�
+ */
+ //@Transient(referColumn = "sourceSystemOid.id")
+ private String sourceSysId;
+
+ /**
+ * 鐩爣绯荤粺涓婚敭
+ */
+ @Column(columnDefinition = "鐩爣绯荤粺涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.SYS_INT_BASE)
+ private String targetSystemOid;
+
+ /**
+ * 鐩爣绯荤粺鍚嶇О
+ */
+ //@Transient(referColumn = "targetSystemOid.name")
+ private String targetSysName;
+
+ /**
+ * 鐩爣绯荤粺鏍囪瘑
+ */
+ //@Transient(referColumn = "targetSystemOid.id")
+ private String targetSysId;
+
+ /**
+ * 璇锋眰鏂瑰紡
+ */
+ @Column(columnDefinition = "璇锋眰鏂瑰紡")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_REQUEST_METHOD_TYPE,showTextField = "requestMethodText")
+ private String requestMethod;
+
+ /**
+ * 璇锋眰鏂瑰紡鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String requestMethodText;
+
+ /**
+ * 璁よ瘉鏂瑰紡涓婚敭
+ */
+ @Column(columnDefinition = "璁よ瘉鏂瑰紡涓婚敭")
+ @VciUseRefer(MdmBtmTypeConstant.SYS_INT_AUTHORITY)
+ private String authorityOid;
+
+ /**
+ * 璁よ瘉鏂瑰紡
+ */
+ @Transient(referColumn = "authorityOid.type")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_AUTHORITY_TYPE,showTextField = "authorityTypeText")
+ private String authorityType;
+
+ /**
+ * 璁よ瘉鏂瑰紡鏄剧ず鏂囨湰
+ */
+ @Transient()
+ private String authorityTypeText;
+
+ /**
+ * 楠岃瘉鐢ㄦ埛
+ */
+ @Transient(referColumn = "authorityOid.userAccount")
+ private String userAccount;
+
+ /**
+ * 楠岃瘉瀵嗙爜
+ */
+ @Transient(referColumn = "authorityOid.userCode")
+ private String userCode;
+
+ /**
+ * 楠岃瘉浠ょ墝
+ */
+ @Transient(referColumn = "authorityOid.token")
+ private String token;
+
+ /**
+ * 鎺ュ彛鎻忚堪
+ */
+ @Column(columnDefinition = "鎺ュ彛鎻忚堪")
+ private String description;
+
+ /**
+ * 绫昏矾寰�
+ */
+ @Column(columnDefinition = "绫昏矾寰�")
+ private String classPath;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡
+ */
+ @Column(columnDefinition = "鏁版嵁娴佸悜鏂瑰紡")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_DATA_FLOW_TYPE,showTextField = "dataFlowTypeText")
+ private String dataFlowType;
+
+ /**
+ * 鏁版嵁娴佸悜鏂瑰紡鐨勬樉绀哄瓧娈�
+ */
+ @Transient()
+ private String dataFlowTypeText;
+
+ /***
+ * 鎺ㄩ�佺被鍨� 1:鏁版嵁鎺ㄩ��/2鍒嗙被鎺ㄩ�侊紝榛樿鏁版嵁鎺ㄩ��
+ */
+ @Column(columnDefinition = "鎺ㄩ�佺被鍨�")
+ @VciUseEnum(value = MdmEnumIdConstant.SYS_INTEGRATION_PUSH_TYPE,showTextField = "pushTypeText")
+ private String pushType;
+ /***
+ * 鎺ㄩ�佺被鍨嬫樉绀哄��
+ */
+ @Transient()
+ private String pushTypeText;
+
+ public String getClassifyid() {
+ return classifyid;
+ }
+
+ public void setClassifyid(String classifyid) {
+ this.classifyid = classifyid;
+ }
+
+ public String getClassifyname() {
+ return classifyname;
+ }
+
+ public void setClassifyname(String classifyname) {
+ this.classifyname = classifyname;
+ }
+
+ public 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 getClassPath() {
+ return classPath;
+ }
+
+ public void setClassPath(String classPath) {
+ this.classPath = classPath;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getSourceSystemOid() {
+ return sourceSystemOid;
+ }
+
+ public void setSourceSystemOid(String sourceSystemOid) {
+ this.sourceSystemOid = sourceSystemOid;
+ }
+
+ public String getSourceSysName() {
+ return sourceSysName;
+ }
+
+ public void setSourceSysName(String sourceSysName) {
+ this.sourceSysName = sourceSysName;
+ }
+
+ public String getSourceSysId() {
+ return sourceSysId;
+ }
+
+ public void setSourceSysId(String sourceSysId) {
+ this.sourceSysId = sourceSysId;
+ }
+
+ public String getTargetSystemOid() {
+ return targetSystemOid;
+ }
+
+ public void setTargetSystemOid(String targetSystemOid) {
+ this.targetSystemOid = targetSystemOid;
+ }
+
+ public String getTargetSysName() {
+ return targetSysName;
+ }
+
+ public void setTargetSysName(String targetSysName) {
+ this.targetSysName = targetSysName;
+ }
+
+ public String getTargetSysId() {
+ return targetSysId;
+ }
+
+ public void setTargetSysId(String targetSysId) {
+ this.targetSysId = targetSysId;
+ }
+
+ public String 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 getRequestUrl() {
+ return requestUrl;
+ }
+
+ public void setRequestUrl(String requestUrl) {
+ this.requestUrl = requestUrl;
+ }
+
+ 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 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 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 getAuthorityOid() {
+ return authorityOid;
+ }
+
+ public void setAuthorityOid(String authorityOid) {
+ this.authorityOid = authorityOid;
+ }
+
+ public String getUserAccount() {
+ return userAccount;
+ }
+
+ public void setUserAccount(String userAccount) {
+ this.userAccount = userAccount;
+ }
+
+ public String getUserCode() {
+ return userCode;
+ }
+
+ public void setUserCode(String userCode) {
+ this.userCode = userCode;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getInterfaceFunction() {
+ return interfaceFunction;
+ }
+
+ public void setInterfaceFunction(String interfaceFunction) {
+ this.interfaceFunction = interfaceFunction;
+ }
+
+ public String getAuthorityType() {
+ return authorityType;
+ }
+
+ public void setAuthorityType(String authorityType) {
+ this.authorityType = authorityType;
+ }
+
+ public String getAuthorityTypeText() {
+ return authorityTypeText;
+ }
+
+ public void setAuthorityTypeText(String authorityTypeText) {
+ this.authorityTypeText = authorityTypeText;
+ }
+
+ public String 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 String getPushType() {
+ return pushType;
+ }
+
+ public void setPushType(String pushType) {
+ this.pushType = pushType;
+ }
+
+ public String getPushTypeText() {
+ return pushTypeText;
+ }
+
+ public void setPushTypeText(String pushTypeText) {
+ this.pushTypeText = pushTypeText;
+ }
+
+ @Override
+ public String toString() {
+ return "SysIntInfoDO{" +
+ "usedflag='" + usedflag + '\'' +
+ ", classifyoid='" + classifyoid + '\'' +
+ ", classifyid='" + classifyid + '\'' +
+ ", classifyname='" + classifyname + '\'' +
+ ", sysbaseoid='" + sysbaseoid + '\'' +
+ ", sysbaseid='" + sysbaseid + '\'' +
+ ", sysbasename='" + sysbasename + '\'' +
+ ", interfaceFunction='" + interfaceFunction + '\'' +
+ ", namespace='" + namespace + '\'' +
+ ", soapaction='" + soapaction + '\'' +
+ ", targName='" + targName + '\'' +
+ ", cxfaxis='" + cxfaxis + '\'' +
+ ", requestUrl='" + requestUrl + '\'' +
+ ", interfaceType='" + interfaceType + '\'' +
+ ", interfaceTypeText='" + interfaceTypeText + '\'' +
+ ", paramType='" + paramType + '\'' +
+ ", paramTypeText='" + paramTypeText + '\'' +
+ ", returnType='" + returnType + '\'' +
+ ", returnTypeText='" + returnTypeText + '\'' +
+ ", btmTypeId='" + btmTypeId + '\'' +
+ ", btmTypeName='" + btmTypeName + '\'' +
+ ", sourceSystemOid='" + sourceSystemOid + '\'' +
+ ", sourceSysName='" + sourceSysName + '\'' +
+ ", sourceSysId='" + sourceSysId + '\'' +
+ ", targetSystemOid='" + targetSystemOid + '\'' +
+ ", targetSysName='" + targetSysName + '\'' +
+ ", targetSysId='" + targetSysId + '\'' +
+ ", requestMethod='" + requestMethod + '\'' +
+ ", requestMethodText='" + requestMethodText + '\'' +
+ ", authorityOid='" + authorityOid + '\'' +
+ ", authorityType='" + authorityType + '\'' +
+ ", authorityTypeText='" + authorityTypeText + '\'' +
+ ", userAccount='" + userAccount + '\'' +
+ ", userCode='" + userCode + '\'' +
+ ", token='" + token + '\'' +
+ ", description='" + description + '\'' +
+ ", classPath='" + classPath + '\'' +
+ ", dataFlowType='" + dataFlowType + '\'' +
+ ", dataFlowTypeText='" + dataFlowTypeText + '\'' +
+ ", pushType='" + pushType + '\'' +
+ ", pushTypeText='" + pushTypeText + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntParamDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntParamDO.java
new file mode 100644
index 0000000..834eaad
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/SysIntParamDO.java
@@ -0,0 +1,89 @@
+package com.vci.ubcs.code.model;
+
+
+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;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
+/**
+ * Description: 绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ *
+ * @author: wangyi
+ * @date: Created on 2022/3/7
+ */
+@VciBtmType(name = MdmBtmTypeConstant.SYS_INT_PARAMTERY,text = "绯荤粺闆嗘垚鎺ュ彛鐨勮璇�",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE,startStatus = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+public class SysIntParamDO extends BaseModel {
+
+ /**
+ * 搴忓垪鍖�
+ */
+ private static final long serialVersionUID = 1144067849291882385L;
+
+ /**
+ * SysIntInfoDO 鐨刼id
+ */
+ @Column(columnDefinition = "鎺ュ彛oid")
+ private String infoOid;
+
+ /**
+ * 鍙傛暟key
+ */
+ @Column(columnDefinition = "鍙傛暟key")
+ private String paramkey;
+
+ /**
+ * 鍙傛暟value
+ */
+ @Column(columnDefinition = "鍙傛暟value")
+ private String paramvalue;
+
+ /**
+ * 鏄惁浣跨敤
+ */
+ @Column(columnDefinition = "鏄惁浣跨敤")
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/TaskDuckingDO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/TaskDuckingDO.java
new file mode 100644
index 0000000..cc25b94
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/model/TaskDuckingDO.java
@@ -0,0 +1,236 @@
+package com.vci.ubcs.code.model;
+
+/**
+ * V5鍙戦�佹秷鎭璞�
+ * @author wangyi
+ * @date 2022-03-14
+ */
+public class TaskDuckingDO {
+
+ /**
+ * 娉ㄥ唽绯荤粺缂栫爜
+ */
+ public String registerCode;
+
+ /**
+ * 绗笁鏂圭郴缁熷緟鍔炰富閿�
+ */
+ public String taskId;
+
+ /**
+ * 寰呭姙鏍囬
+ */
+ public String title;
+
+ /**
+ * 寰呭姙鍙戣捣浜哄鍚�
+ */
+ public String senderName;
+
+ /**
+ * 绫诲埆
+ */
+ public String classify;
+
+ /**
+ * 鍐呭绫诲瀷
+ */
+ public String contentType;
+
+ /**
+ * 鐘舵��0寰呭姙锛�1宸插姙
+ */
+ public String state;
+
+ /**
+ * H5绌块�忓湴鍧�
+ */
+ public String h5url;
+ /**
+ * PC绌块�忓湴鍧�
+ */
+ public String url;
+ /**
+ * 鐧诲綍鍚嶇О/浜哄憳缂栫爜/鎵嬫満鍙�/鐢靛瓙閭欢
+ */
+ public String noneBindingSender;
+ /**
+ * 鐧诲綍鍚嶇О/浜哄憳缂栫爜/鎵嬫満鍙�/鐢靛瓙閭欢
+ */
+ public String noneBindingReceiver;
+
+ /**
+ * 绗笁鏂圭郴缁熷彂閫佽�呬富閿�
+ */
+ public String thirdSenderId;
+
+ /**
+ * 绗笁鏂圭郴缁熸帴鏀朵汉涓婚敭
+ */
+ public String thirdReceiverId;
+
+ /**
+ * 寰呭姙鍙戣捣鏃ユ湡锛屾牸寮弝yyy-MM-dd HH:mm
+ */
+ public String creationDate;
+
+ /**
+ * 鍘熺敓app鐨勪笅杞藉湴鍧�
+ */
+ public String content;
+
+ /**
+ * 澶勭悊鍚庣姸鎬侊細0/1/2/3鍚屾剰宸插姙/涓嶅悓鎰忓凡鍔�/鍙栨秷/椹冲洖
+ */
+ public String subState;
+
+ public String getRegisterCode() {
+ return registerCode;
+ }
+
+ public void setRegisterCode(String registerCode) {
+ this.registerCode = registerCode;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getSenderName() {
+ return senderName;
+ }
+
+ public void setSenderName(String senderName) {
+ this.senderName = senderName;
+ }
+
+ public String getClassify() {
+ return classify;
+ }
+
+ public void setClassify(String classify) {
+ this.classify = classify;
+ }
+
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getH5url() {
+ return h5url;
+ }
+
+ public void setH5url(String h5url) {
+ this.h5url = h5url;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getNoneBindingSender() {
+ return noneBindingSender;
+ }
+
+ public void setNoneBindingSender(String noneBindingSender) {
+ this.noneBindingSender = noneBindingSender;
+ }
+
+ public String getNoneBindingReceiver() {
+ return noneBindingReceiver;
+ }
+
+ public void setNoneBindingReceiver(String noneBindingReceiver) {
+ this.noneBindingReceiver = noneBindingReceiver;
+ }
+
+ public String getThirdSenderId() {
+ return thirdSenderId;
+ }
+
+ public void setThirdSenderId(String thirdSenderId) {
+ this.thirdSenderId = thirdSenderId;
+ }
+
+ public String getThirdReceiverId() {
+ return thirdReceiverId;
+ }
+
+ public void setThirdReceiverId(String thirdReceiverId) {
+ this.thirdReceiverId = thirdReceiverId;
+ }
+
+ public String getCreationDate() {
+ return creationDate;
+ }
+
+ public void setCreationDate(String creationDate) {
+ this.creationDate = creationDate;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getSubState() {
+ return subState;
+ }
+
+ public void setSubState(String subState) {
+ this.subState = subState;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "registerCode='" + registerCode + '\'' +
+ ", taskId='" + taskId + '\'' +
+ ", title='" + title + '\'' +
+ ", senderName='" + senderName + '\'' +
+ ", classify='" + classify + '\'' +
+ ", contentType='" + contentType + '\'' +
+ ", state='" + state + '\'' +
+ ", h5url='" + h5url + '\'' +
+ ", url='" + url + '\'' +
+ ", noneBindingSender='" + noneBindingSender + '\'' +
+ ", noneBindingReceiver='" + noneBindingReceiver + '\'' +
+ ", thirdSenderId='" + thirdSenderId + '\'' +
+ ", thirdReceiverId='" + thirdReceiverId + '\'' +
+ ", creationDate='" + creationDate + '\'' +
+ ", content='" + content + '\'' +
+ ", subState='" + subState + '\'' +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeBasicSecServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeBasicSecServiceI.java
new file mode 100644
index 0000000..56bf538
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeBasicSecServiceI.java
@@ -0,0 +1,182 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeBasicSecDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.dto.CodeBasicSecDTO;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeButtonServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeButtonServiceI.java
new file mode 100644
index 0000000..4341567
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeButtonServiceI.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeButtonDO;
+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.ubcs.code.dto.CodeButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyProcessTempServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyProcessTempServiceI.java
new file mode 100644
index 0000000..2ef38e0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyProcessTempServiceI.java
@@ -0,0 +1,124 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyProcessTempDO;
+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 com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyServiceI.java
new file mode 100644
index 0000000..643cb25
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyServiceI.java
@@ -0,0 +1,240 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyDO;
+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 com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeClassifyDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTempMapItemServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTempMapItemServiceI.java
new file mode 100644
index 0000000..412a5e3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTempMapItemServiceI.java
@@ -0,0 +1,101 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyTempMapItemDO;
+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.ubcs.code.dto.CodeClassifyTempMapItemDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTempMapItemVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateAttrServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateAttrServiceI.java
new file mode 100644
index 0000000..ab3566c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateAttrServiceI.java
@@ -0,0 +1,133 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+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 com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateButtonServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateButtonServiceI.java
new file mode 100644
index 0000000..89cb39a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateButtonServiceI.java
@@ -0,0 +1,133 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyTemplateButtonDO;
+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 com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateMapServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateMapServiceI.java
new file mode 100644
index 0000000..ebf50b1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateMapServiceI.java
@@ -0,0 +1,100 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyTemplateMapDO;
+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.ubcs.code.dto.CodeClassifyTemplateMapDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateMapVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateServiceI.java
new file mode 100644
index 0000000..15ecf35
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyTemplateServiceI.java
@@ -0,0 +1,199 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyValueServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyValueServiceI.java
new file mode 100644
index 0000000..126c9cc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeClassifyValueServiceI.java
@@ -0,0 +1,152 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeClassifyValueDO;
+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 com.vci.ubcs.code.dto.CodeClassifyValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingServiceI.java
new file mode 100644
index 0000000..1a96edf
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingServiceI.java
@@ -0,0 +1,92 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.DockingDataDO;
+import com.vci.ubcs.code.model.DockingLogeDO;
+import com.vci.ubcs.code.model.DockingTaskDO;
+import com.vci.ubcs.code.model.SysIntHeaderDO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingSyncServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingSyncServiceI.java
new file mode 100644
index 0000000..2d5e4a9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeDuckingSyncServiceI.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeFixedValueServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeFixedValueServiceI.java
new file mode 100644
index 0000000..e0474db
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeFixedValueServiceI.java
@@ -0,0 +1,124 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeFixedValueDO;
+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.ubcs.code.dto.CodeFixedValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeKeyAttrRepeatRuleServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeKeyAttrRepeatRuleServiceI.java
new file mode 100644
index 0000000..4bfe145
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeKeyAttrRepeatRuleServiceI.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeKeyAttrRepeatRuleDO;
+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.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeKeyAttrRepeatRuleDTO;
+import com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodePhaseAttrServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodePhaseAttrServiceI.java
new file mode 100644
index 0000000..a73a44a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodePhaseAttrServiceI.java
@@ -0,0 +1,107 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodePhaseAttrDO;
+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.ubcs.code.dto.CodePhaseAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeResembleRuleServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeResembleRuleServiceI.java
new file mode 100644
index 0000000..bb24062
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeResembleRuleServiceI.java
@@ -0,0 +1,100 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.model.CodeResembleRuleDO;
+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.ubcs.code.dto.CodeResembleRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeRuleServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeRuleServiceI.java
new file mode 100644
index 0000000..7d3cc14
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeRuleServiceI.java
@@ -0,0 +1,175 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeRuleDO;
+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.ubcs.code.dto.CodeRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSerialAlgorithmServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSerialAlgorithmServiceI.java
new file mode 100644
index 0000000..2191718
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSerialAlgorithmServiceI.java
@@ -0,0 +1,18 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+
+/**
+ * 娴佹按绠楁硶绫�
+ * @author weidy
+ * @date 2022-2-17
+ */
+public interface CodeSerialAlgorithmServiceI {
+
+ /**
+ * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+ * @return 娴佹按绠楁硶鐨勪俊鎭�
+ */
+ DataGrid<CodeSerialAlgorithmVO> gridSerialAlgorithm();
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSynonymServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSynonymServiceI.java
new file mode 100644
index 0000000..3695252
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeSynonymServiceI.java
@@ -0,0 +1,101 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.CodeSynonymDO;
+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.ubcs.code.dto.CodeSynonymDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeTemplatePhaseServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeTemplatePhaseServiceI.java
new file mode 100644
index 0000000..1f78233
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/CodeTemplatePhaseServiceI.java
@@ -0,0 +1,137 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+import com.vci.ubcs.code.model.CodeTemplatePhaseDO;
+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 com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
+
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataInfoServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataInfoServiceI.java
new file mode 100644
index 0000000..e25310c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataInfoServiceI.java
@@ -0,0 +1,100 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.model.DockingPreApplyDataInfoDO;
+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.ubcs.code.dto.DockingPreApplyDataInfoDTO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyDataInfoVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public interface DockingPreApplyDataInfoServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<DockingPreApplyDataInfoVO> gridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataInfoDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoDO2VOs(Collection<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataInfoDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataInfoVO dockingPreApplyDataInfoDO2VO(DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataInfoVO addSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
+
+ /**
+ * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataInfoVO editSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteDockingPreApplyDataInfo(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oid 涓婚敭
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataInfoVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<DockingPreApplyDataInfoVO> listDockingPreApplyDataInfoByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<DockingPreApplyDataInfoVO> refDataGridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataServiceI.java
new file mode 100644
index 0000000..29261f9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreApplyDataServiceI.java
@@ -0,0 +1,152 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.DockingPreApplyDataDO;
+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.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataInfoDTO;
+import com.vci.ubcs.code.dto.PreApplyCodeOrderDTO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyDataVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟鎺ュ彛
+ *
+ * @author weidy
+ * @date 2022-04-05
+ */
+public interface DockingPreApplyDataServiceI {
+
+
+ /***
+ * 鎵归噺缁存姢鍒嗙被璁剧疆
+ * @param dockingPreApplyDataDTO
+ * @return
+ * @throws VciBaseException
+ */
+ List<DockingPreApplyDataVO> batchSetDataClassId(DockingPreApplyDataDTO dockingPreApplyDataDTO)throws VciBaseException;
+
+ /***
+ * 鏍规嵁閫夋嫨棰濋鐢宠鐨勬暟鎹嬀閫夋暟鎹�
+ * @param codeClassifyOid
+ * @param templateOid
+ * @param btmType
+ * @param dataOids
+ * @return
+ * @throws VciBaseException
+ */
+ DataGrid<Map<String,String>> gridApplyData(String codeClassifyOid,String templateOid,String btmType,String dataOids)throws VciBaseException;
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataVO addSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
+
+ /**
+ * 鍒犻櫎璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteDockingPreApplyData(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oid 涓婚敭
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ DockingPreApplyDataVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<DockingPreApplyDataVO> listDockingPreApplyDataByOids(Collection<String> oidCollections) throws VciBaseException;
+
+ /**
+ * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<DockingPreApplyDataVO> refDataGridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ //==================
+ /**
+ * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<DockingPreApplyDataVO> gridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 鎻掑叆data鍜宒atainfo,浼氳嚜鍔ㄦ妸data閲岀殑oid,unique璧嬪�煎埌datainfo閲岃竟鍘�
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @param dockingPreApplyDataInfoDTOList 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁璇︾粏淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ void addSaveDataAndInfo(DockingPreApplyDataDTO dockingPreApplyDataDTO, List<DockingPreApplyDataInfoDTO> dockingPreApplyDataInfoDTOList) throws VciBaseException;
+
+ /**
+ * 淇敼 datas
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ BaseResult editSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
+
+ /**
+ * 鏍规嵁data鐨刼id鏌ヨdata淇℃伅鍜宒atainfo淇℃伅锛屽苟涓旀嫾鎺atainfo涓簃ap
+ * @param dockingPreApplyDataDTO
+ * @return
+ * @throws VciBaseException
+ */
+ BaseResult<Map<String,String>> getDataInfoMap(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException;
+
+ /**
+ * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
+ * 1銆佽皟鐢╡ngineService.addSaveCode(orderDTO)鍏堟彃鍏ラ鐢宠鏁版嵁鍒板搴斾富棰樺簱闈欐�佹暟鎹�
+ * 2銆佷慨鏀筪ockingPreApplyData鐨勫垎绫籵id鍜屽垎绫诲悕绉�
+ */
+ BaseResult applyData(List<PreApplyCodeOrderDTO> preApplyCodeOrderDTOList);
+
+ /**
+ * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
+ * 1銆佽皟鐢╡ngineService.addSaveCode(orderDTO)鍏堟彃鍏ラ鐢宠鏁版嵁鍒板搴斾富棰樺簱闈欐�佹暟鎹�
+ * 2銆佷慨鏀筪ockingPreApplyData鐨勫垎绫籵id鍜屽垎绫诲悕绉�
+ */
+ BaseResult batchApplyDatas(List<CodeOrderDTO> CodeOrderDTOs);
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreAttrMappingSeviceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreAttrMappingSeviceI.java
new file mode 100644
index 0000000..e642b89
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/DockingPreAttrMappingSeviceI.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.ubcs.code.dto.DockingPreAttrMappingDTO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface DockingPreAttrMappingSeviceI {
+ /***
+ * 灞炴�ф槧灏勯厤缃垪琛�
+ * @param clsfId
+ * @param type
+ * @param conditionMap
+ * @param pageHelper
+ * @return
+ * @throws VciBaseException
+ */
+ DataGrid<DockingPreAttrMappingVO> gridAttrMappings(String clsfId,int type,Map<String, String> conditionMap, PageHelper pageHelper)throws VciBaseException;
+ /***
+ * 鏋氫妇鏄犲皠閰嶇疆鍒楄〃
+ * @param attrkey
+ * @param type
+ * @param conditionMap
+ * @param pageHelper
+ * @return
+ * @throws VciBaseException
+ */
+ DataGrid<DockingPreAttrRangeVO> gridAttrRanges(String attrkey, int type, Map<String, String> conditionMap, PageHelper pageHelper)throws VciBaseException;
+ /**
+ * 淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
+ * @param dockingPreAttrMappingDTOS 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+ */
+ public List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingDTO> dockingPreAttrMappingDTOS)throws VciBaseException;
+
+ /***
+ * 鏍规嵁鏉′欢鏌ヨ灞炴�ф槧灏勯厤缃俊鎭�
+ * @param conditionMap
+ * @return
+ * @throws VciBaseException
+ */
+ List<DockingPreAttrMappingVO> selectAttrMappings(Map<String, String> conditionMap)throws VciBaseException;
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineServiceI.java
new file mode 100644
index 0000000..8f6fa21
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineServiceI.java
@@ -0,0 +1,362 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.starter.web.pagemodel.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.web.dto.BaseModelDTO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.pageModel.UIFormItemVO;
+import com.vci.web.pageModel.UITableFieldVO;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
+import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import org.springblade.code.vo.pagemodel.*;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹紩鎿庢湇鍔�
+ * @author weidy
+ * @date 2022-2-21
+ */
+public interface MdmEngineServiceI {
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳
+ * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
+ * @param functionId 鍔熻兘鐨勭紪鍙�
+ * @return UI鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫昏幏鍙杣i鐩稿叧鐨勫唴瀹癸紙涓嶅寘鍚寜閽級
+ * @param codeClassifyOid 涓婚搴撶殑鍒嗙被鐨勪富閿�
+ * @return UI鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getTableDefineByClassifyOid(String codeClassifyOid);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟
+ * @param codeClassifyOid 鍒嗙被涓婚敭
+ * @param phase 闃舵鐨勫悕绉�
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
+ */
+ MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String phase);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 妯℃澘鐨勬樉绀哄璞�
+ */
+ CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param hasAttr 鍖呭惈灞炴��
+ * @return 妯℃澘鐨勬樉绀哄璞�
+ */
+ CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr);
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+ * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid);
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+ * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
+ * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫荤殑涓婚敭
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid,String codeClassifyOid);
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid);
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ MdmUIInfoVO getTableDefineByTemplateOid(String templateOid);
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
+ */
+ List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid);
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
+ */
+ List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid);
+
+ /**
+ * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鐨勫璞�
+ * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級
+ */
+ DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
+ * @param btmType 涓氬姟绫诲瀷
+ * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴��
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 鏁版嵁鍒楄〃
+ */
+ DataGrid<Map<String,String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅
+ * @param btmType 涓氬姟绫诲瀷
+ * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞�
+ * @return sql鐨勭浉鍏充俊鎭�
+ */
+ CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper);
+
+ /**
+ * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭
+ * @param dataMap 鏁版嵁鐨勫唴瀹�
+ * @param templateVO 妯℃澘鐨勬樉绀�
+ */
+ void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO);
+
+ /**
+ * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+ * @param dataMap 鏁版嵁鐨勬槧灏�
+ * @param templateVO 妯℃澘鐨勫睘鎬�
+ * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
+ * @param form 鏄惁涓鸿〃鍗曪紝琛ㄥ崟涓嶄細杞崲鏃堕棿鏍煎紡
+ */
+ void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
+ Collection<String> onlySelectAttrIdList,boolean form);
+
+ /**
+ * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
+ * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
+ * @return 涓嬫媺閫夐」
+ */
+ List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO);
+
+ /**
+ * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭�
+ * @param oid 涓婚敭
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鏁版嵁鐨勫唴瀹�
+ */
+ BaseResult<Map<String, String>> getDataByOid(String oid, String templateOid);
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 缂栫爜瑙勫垯鐨勫唴瀹�
+ */
+ CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
+ * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @return 瑙勫垯鐨勫唴瀹�
+ */
+ CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO);
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
+ * @param classifySecOid 鐮佹鐨勪富閿�
+ * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐮佸�肩殑鍐呭
+ */
+ List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid);
+
+ /**
+ * 鐢宠鍗曚竴缂栫爜
+ * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+ * @return 杩斿洖缂栫爜鐨勫唴瀹�
+ */
+ String addSaveCode(CodeOrderDTO orderDTO);
+
+ /**
+ * 淇敼涓婚搴撴暟鎹�
+ * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
+ */
+ void editSaveCode(CodeOrderDTO orderDTO);
+
+ /**
+ * 鍗囩増鐨勪富棰樺簱鏁版嵁
+ * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭
+ */
+ void upSaveCode(CodeOrderDTO orderDTO);
+
+ /**
+ * 淇濆瓨鍙緭鍙�夌殑淇℃伅
+ * @param templateVO 妯℃澘鐨勫璞�
+ * @param cboList 鏁版嵁鐨勫唴瀹�
+ */
+ void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList);
+
+ /**
+ * 鍒犻櫎涓婚搴撴暟鎹�
+ * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿�
+ */
+ void deleteCode(CodeDeleteBatchDTO deleteBatchDTO);
+
+ /**
+ * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
+ * @param value 褰撳墠鐨勫��
+ * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param trim 鏄惁鍘婚櫎绌烘牸
+ * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓
+ * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙�
+ * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ * @param conditionMap 鏌ヨ鏉′欢
+ */
+ void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatRuleVO keyRuleVO, String attrId,
+ boolean trim, boolean ignoreCase, boolean ignoreWidth,
+ boolean trimAll, Map<String, String> conditionMap);
+
+ /**
+ * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
+ * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
+ * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
+ */
+ void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO);
+
+ /**
+ * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴��
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param phase 闃舵鐨勫悕绉�
+ * @return 灞炴�х殑鑻辨枃鍚嶇О
+ */
+ List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase);
+
+ /**
+ * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鏍�
+ */
+ List<Tree> hasSelfClassifyTree(String codeClassifyOid);
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param codeTemplateOid 妯℃澘鐨勪富閿�
+ * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫��
+ */
+ Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid);
+
+ /**
+ * 棰勮缁勫悎瑙勫垯
+ * @param orderDTO 鐢宠缂栫爜鐨勪俊鎭�
+ * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖
+ */
+ Map<String,String> previewCompRule(CodeOrderDTO orderDTO);
+
+ /**
+ * 淇敼鐘舵��
+ * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
+ */
+ void changeStatus(BaseModelDTO baseModelDTO);
+
+ /**
+ * 鐩镐技椤规煡璇�
+ * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
+ * @return 鏁版嵁鍒楄〃
+ */
+ DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO);
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ * @param codeClassifyOid 鍒嗙被涓婚敭
+ * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+ */
+ CodeResembleRuleVO getUseResembleRuleByClassifyOid(String codeClassifyOid);
+ /**
+ * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒�
+ * @param fullInfoBO 绫诲叏閮ㄤ俊鎭�
+ * @param currentClassifyVO 褰撳墠鐨勫垎绫�
+ * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull
+ */
+ CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO);
+
+ /**
+ * 浣跨敤娴佺▼妯℃澘鑾峰彇鍦ㄩ〉闈笂鏄剧ず鐨勫睘鎬�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param executionId 娴佺▼鎵цid
+ * @param processUse 妯℃澘娴佺▼鐢ㄩ��
+ * @return 鐩稿叧灞炴��
+ */
+ List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse);
+
+ /**
+ * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃
+ * @param oid 涓氬姟鏁版嵁涓婚敭
+ * @param btmName 涓氬姟绫诲瀷
+ * @param pass 鏄惁閫氳繃
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult markDataPassing(String oid, String btmName, Boolean pass);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹�
+ * @param btmType 涓氬姟绫诲瀷
+ * @param queryObject 鏌ヨ瀵硅薄
+ * @return 琛ㄦ牸鐨勬樉绀哄璞″��
+ */
+ DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject);
+
+ /**
+ * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹�
+ * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
+ * @return 鎵ц缁撴灉
+ */
+ BaseResult batchUpdateCode(List<CodeOrderDTO> orderDTOList);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔�
+ * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮�
+ * @param functionId 鍔熻兘鐨勭紪鍙�
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�)
+ */
+ MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId);
+
+ /**
+ * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔�
+ * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
+ */
+ MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath);
+
+ /**
+ * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
+ *
+ * @param attrVO 妯℃澘灞炴��
+ * @param btmType 涓氬姟绫诲瀷
+ * @return 琛ㄥ崟鐨勫瓧娈�
+ */
+ UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) ;
+
+ UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit);
+ void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOServiceI.java
new file mode 100644
index 0000000..4c5f349
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOServiceI.java
@@ -0,0 +1,128 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.vo.universalInter.attrmap.DataObjectVO;
+import com.vci.ubcs.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
+import com.vci.starter.poi.bo.SheetDataSet;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.code.dto.CodeExportAttrDTO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import org.springblade.code.vo.pagemodel.*;
+
+import java.io.File;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓绘暟鎹鍏ュ鍑烘湇鍔�
+ * @author weidy
+ * @date 2022-3-6
+ */
+public interface MdmIOServiceI {
+
+ /**
+ * 瀵煎嚭涓婚搴撶殑鏁版嵁
+ * @param exportAttrDTO 瀵煎嚭鐩稿叧鐨勯厤缃紝蹇呴』瑕佹湁涓婚搴撳垎绫荤殑涓婚敭
+ * @return 瀵煎嚭鐨別xcel鐨勬枃浠�
+ */
+ String exportCode(CodeExportAttrDTO exportAttrDTO);
+
+ /**
+ * 鐢熸垚瀵煎叆鐨勬枃浠�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ String createImportExcel(String codeClassifyOid,boolean isHistory);
+
+
+ /**
+ * 鐢熸垚瀵煎叆鐨勬枃浠�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ String downloadTopImportExcel(String codeClassifyOid);
+
+
+ /**
+ * 鎵归噺鐢宠缂栫爜鏁版嵁
+ * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file);
+
+ /***
+ *鎵归噺鐢宠缂栫爜鏁版嵁
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ CodeImProtRusultVO batchTopImportCode(String codeClassifyOid,String classifyAttr, File file);
+ /***
+ * 鎵归噺鐢宠缂栫爜鏁版嵁
+ * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
+ * @param templateVO//妯℃澘瀵硅薄
+ * @param dataSet//鏁版嵁瀵硅薄
+ * @param isNumType 鏄惁妫�楠屾灇涓�/鍙傜収
+ * @return
+ */
+ List<String> batchImportCode(CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, SheetDataSet dataSet, Map<String,String> errorMap, boolean isNumType);
+
+ /**
+ * 瀵煎叆鍘嗗彶鏁版嵁
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid,String classifyAttr, File file);
+ /**
+ * 闆嗘垚鎵归噺鐢宠鏁版嵁
+ * @param orderDTO 鍒嗙被鐨勪富閿�
+ * @param dataObjectVO 鏁版嵁淇℃伅
+ * @param resultDataObjectDetailDOs 閿欒淇℃伅
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs);
+ /**
+ * 闆嗘垚鎵归噺鏇存敼鏁版嵁
+ * @param codeClassifyVO;
+ * @param dataObjectVO 鏁版嵁淇℃伅
+ * @param resultDataObjectDetailDOs 閿欒淇℃伅
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs);
+ /***
+ * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆鐨勬暟鎹�
+ * @param oid
+ * @param redisOid
+ * @return
+ */
+ public DataGrid<Map<String,String>> gridRowResemble(String oid, String redisOid);
+ /***
+ * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆鐨勬暟鎹�
+ * @param codeClssifyOid
+ * @param redisOid
+ * @return
+ */
+ DataGrid<Map<String,String>> gridDatas(String codeClssifyOid,String redisOid);
+ /***
+ * 鏍规嵁瀵煎叆缂撳瓨id鑾峰彇鍒嗙被
+ * @param redisOid
+ * @return
+ */
+ public List<CodeImportTemplateVO> gridclassifys(String redisOid);
+
+ /**
+ * 鎵归噺鐢宠
+ * @param codeImprotSaveDatVOList
+ * @param isImprot
+ * @return
+ */
+ public BaseResult batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeServiceI.java
new file mode 100644
index 0000000..e8eac6b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeServiceI.java
@@ -0,0 +1,38 @@
+package com.vci.ubcs.code.service;
+
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 缂栫爜瑙勫垯鐢熸垚鐨勬湇鍔�
+ * @author weidy
+ * @date 2022-3-6
+ */
+public interface MdmProductCodeServiceI {
+
+ /**
+ * 鐢熸垚缂栫爜--骞朵笖淇濆瓨鏁版嵁-鏂规硶鍔犻攣锛屽洜姝や笉鑳借繑鍥瀊atchCBO
+ * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param ruleVO 缂栫爜瑙勫垯鐨勬樉绀哄璞�
+ * @param secDTOList 鍚勪釜鐮佹鐨勫��
+ * @param dataCBOList 涓氬姟鏁版嵁
+ */
+ List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
+ CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<ClientBusinessObject> dataCBOList);
+
+ /**
+ * 鍥炴敹鐮佸��
+ * @param btmId 涓氬姟鏁版嵁鐨勪笟鍔$被鍨�
+ * @param businessOidCollection 涓氬姟鏁版嵁鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁鍐呭
+ */
+ BatchCBO recycleCode(String btmId, Collection<String> businessOidCollection);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntAuthorityServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntAuthorityServiceI.java
new file mode 100644
index 0000000..a742647
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntAuthorityServiceI.java
@@ -0,0 +1,101 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.SysIntAuthorityDO;
+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.ubcs.code.dto.SysIntAuthorityDTO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntAuthorityVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹湇鍔℃帴鍙�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntAuthorityServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntAuthorityVO> gridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntAuthorityDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<SysIntAuthorityVO> sysIntAuthorityDO2VOs(Collection<SysIntAuthorityDO> sysIntAuthorityDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntAuthorityDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ SysIntAuthorityVO sysIntAuthorityDO2VO(SysIntAuthorityDO sysIntAuthorityDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntAuthorityVO addSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntAuthorityVO editSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteSysIntAuthority(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param oid 涓婚敭
+ * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntAuthorityVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<SysIntAuthorityVO> listSysIntAuthorityByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鎺ュ彛鐨勮璇佸垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntAuthorityVO> refDataGridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntBaseServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntBaseServiceI.java
new file mode 100644
index 0000000..fae18b0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntBaseServiceI.java
@@ -0,0 +1,101 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.SysIntBaseDO;
+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.ubcs.code.dto.SysIntBaseDTO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntBaseVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭湇鍔℃帴鍙�
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntBaseServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntBaseVO> gridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntBaseDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<SysIntBaseVO> sysIntBaseDO2VOs(Collection<SysIntBaseDO> sysIntBaseDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntBaseDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ SysIntBaseVO sysIntBaseDO2VO(SysIntBaseDO sysIntBaseDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntBaseVO addSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntBaseVO editSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteSysIntBase(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param oid 涓婚敭
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntBaseVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<SysIntBaseVO> listSysIntBaseByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鐨勭郴缁熶俊鎭垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntBaseVO> refDataGridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntInfoServiceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntInfoServiceI.java
new file mode 100644
index 0000000..6c35a8b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/SysIntInfoServiceI.java
@@ -0,0 +1,159 @@
+package com.vci.ubcs.code.service;
+
+
+import com.vci.ubcs.code.model.SysIntHeaderDO;
+import com.vci.ubcs.code.model.SysIntInfoDO;
+import com.vci.ubcs.code.model.SysIntParamDO;
+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.ubcs.code.dto.SysIntInfoDTO;
+import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntInfoVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏈嶅姟鎺ュ彛
+ *
+ * @author lihang
+ * @date 2022-03-07
+ */
+public interface SysIntInfoServiceI {
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntInfoVO> gridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ List<SysIntInfoDO> selectAll(Map conditonMap);
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntInfoDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ List<SysIntInfoVO> sysIntInfoDO2VOs(Collection<SysIntInfoDO> sysIntInfoDOs) throws VciBaseException;
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntInfoDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO) throws VciBaseException;
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntInfoVO addSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntInfoVO editSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
+
+
+ /**
+ * 鍒犻櫎绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ BaseResult deleteSysIntInfo(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
+
+ /**
+ * 涓婚敭鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param oid 涓婚敭
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ SysIntInfoVO getObjectByOid(String oid) throws VciBaseException;
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ Collection<SysIntInfoVO> listSysIntInfoByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鍩虹淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ DataGrid<SysIntInfoVO> refDataGridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+ /**
+ * 褰撳墠鎺ュ彛淇℃伅鏄惁鏈変娇鐢ㄧ洰鏍囦俊鎭�
+ * @param sysOid 绯荤粺Oid
+ * @param authorityOid 璁よ瘉鏂瑰紡Oid
+ * @return true = 鍦ㄤ娇鐢� 锛沠alse = 鏈娇鐢�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ boolean isAlreadyUse (String sysOid,String authorityOid) throws VciBaseException;
+
+ //=========浠ヤ笅绯荤粺鍙傛暟鍜岄獙璇佷俊鎭�
+
+ /**
+ * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛鎵�鏈塸aram
+ * @param sysInfoOid
+ * @return
+ */
+ List<SysIntParamDO> getParamsBySystemInfoOid(String sysInfoOid);
+
+ /**
+ * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塸aram
+ * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塸aram
+ * @return
+ */
+ BaseResult updateParams(String sysInfoOid,List<SysIntParamDO> params);
+
+ /**
+ * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛鎵�鏈塰eader
+ * @param sysInfoOid
+ * @return
+ */
+ List<SysIntHeaderDO> getHeadersBySystemInfoOid(String sysInfoOid);
+
+ /**
+ * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塰eader
+ * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塰eader
+ * @return
+ */
+ BaseResult updateHeaders(String sysInfoOid,List<SysIntHeaderDO> params);
+
+ /**
+ * 鏍规嵁鍒嗙被oid鏌ヨ鎵�鏈夎鎺ㄩ�佽繖涓垎绫绘暟鎹殑鎺ュ彛淇℃伅
+ * @param classifyOids
+ * @return
+ */
+ List<SysIntInfoDO> getSysInfoByClassifyOid(String[] classifyOids);
+
+ /***
+ * 鏇存柊鎺ュ彛閰嶇疆淇℃伅鐘舵��
+ * @param sysInfoStatusDTO
+ * @return
+ */
+ public BaseResult updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO);
+ BaseResult pushData(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException;
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java
new file mode 100644
index 0000000..18dedfd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java
@@ -0,0 +1,47 @@
+package com.vci.ubcs.code.service;
+
+import javax.jws.WebService;
+
+/**
+ * 缁熶竴鎺ュ彛
+ *
+ * @author xiejun
+ * @date 2022-11-27
+ */
+@WebService(targetNamespace = "http://code.web.vci.com/",name = "universalInterface")
+public interface UniversalInterfaceI {
+ /**
+ *缁熶竴鐢宠缂栫爜鎺ュ彛
+ * @param data 浼犻�掔殑鏁版嵁鍙傛暟
+ * @param dataType 鏍囪瘑data鏄痻ml鏍煎紡杩樻槸json鏍煎紡锛屾帴鍙h繑鍥炴暟鎹篃鏄寜鐓ц繖涓牸寮忥紝浠ヤ笅鎺ュ彛绫诲悓
+ * @return xml鏍煎紡/json鏍煎紡
+ * @throws Throwable
+ */
+ public String applyCode(String data,String dataType)throws Throwable;
+
+ /***
+ * 缁熶竴鏇存柊鎺ュ彛
+ * @param data
+ * @param dataType
+ * @return
+ * @throws Throwable
+ */
+ public String syncEditData(String data,String dataType)throws Throwable;
+
+ /***
+ * 鏌ヨ鍒嗙被鍙�
+ * @param data
+ * @param dataType
+ * @throws Throwable
+ */
+ public String queryClassify(String data,String dataType)throws Throwable;
+
+ /***
+ * 鏌ヨ鏁版嵁
+ * @param data
+ * @param dataType
+ * @throws Throwable
+ */
+ public String queryData(String data,String dataType)throws Throwable;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
new file mode 100644
index 0000000..0b47f4a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -0,0 +1,836 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodeBasicSecDaoI;
+import com.vci.ubcs.code.dao.CodeClassifyValueDaoI;
+import com.vci.ubcs.code.dao.CodeFixedValueDaoI;
+import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
+import com.vci.ubcs.code.lifecycle.CodeRuleLC;
+import com.vci.ubcs.code.model.CodeBasicSecDO;
+import com.vci.ubcs.code.model.CodeClassifyValueDO;
+import com.vci.ubcs.code.model.CodeFixedValueDO;
+import com.vci.ubcs.code.service.CodeBasicSecServiceI;
+import com.vci.ubcs.code.service.CodeClassifyValueServiceI;
+import com.vci.ubcs.code.service.CodeFixedValueServiceI;
+import com.vci.ubcs.code.service.CodeRuleServiceI;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+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.UIFormReferVO;
+import com.vci.web.service.BdSelectInputCharServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeBasicSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+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 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
+ @Lazy
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
new file mode 100644
index 0000000..941b9dc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
@@ -0,0 +1,324 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeButtonDaoI;
+import com.vci.ubcs.code.model.CodeButtonDO;
+import com.vci.ubcs.code.service.CodeButtonServiceI;
+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 com.vci.ubcs.code.dto.CodeButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
new file mode 100644
index 0000000..148bf9f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
@@ -0,0 +1,359 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyProcessTempDaoI;
+import com.vci.ubcs.code.model.CodeClassifyProcessTempDO;
+import com.vci.ubcs.code.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.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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.*;
+
+/**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyProcessTempServiceImpl implements CodeClassifyProcessTempServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyProcessTempDaoI codeClassifyProcessTempMapper;
+
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
new file mode 100644
index 0000000..d67c98a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -0,0 +1,1024 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeClassifyDaoI;
+import com.vci.ubcs.code.dao.CodeClassifyTemplateDaoI;
+import com.vci.ubcs.code.model.CodeClassifyDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+import com.vci.ubcs.code.service.CodeClassifyServiceI;
+import com.vci.ubcs.code.service.CodeDuckingServiceI;
+import com.vci.ubcs.code.service.CodeKeyAttrRepeatRuleServiceI;
+import com.vci.ubcs.code.service.CodeRuleServiceI;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+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.lang.StringUtils;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeClassifyDTO;
+import com.vci.ubcs.code.po.CodeClassifyPO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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.FrameWorkBusLangCodeConstant.*;
+import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
+
+/**
+ * 涓婚搴撳垎绫绘湇鍔�
+ * @author weidy
+ * @date 2022-01-20
+ */
+@Service
+public class CodeClassifyServiceImpl implements CodeClassifyServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyDaoI codeClassifyMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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 codeClassifyId
+ * @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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTempMapItemServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTempMapItemServiceImpl.java
new file mode 100644
index 0000000..0c7fcfe
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTempMapItemServiceImpl.java
@@ -0,0 +1,297 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeClassifyTempMapItemDaoI;
+import com.vci.ubcs.code.model.CodeClassifyTempMapItemDO;
+import com.vci.ubcs.code.service.CodeClassifyTempMapItemServiceI;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTempMapItemDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTempMapItemVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
new file mode 100644
index 0000000..f2dd153
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -0,0 +1,728 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodeClassifyTemplateAttrDaoI;
+import com.vci.ubcs.code.dao.CodeClassifyTemplateDaoI;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+import com.vci.ubcs.code.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.ubcs.code.service.CodeTemplatePhaseServiceI;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java
new file mode 100644
index 0000000..5e0b607
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateButtonServiceImpl.java
@@ -0,0 +1,382 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeClassifyTemplateButtonDaoI;
+import com.vci.ubcs.code.model.CodeClassifyTemplateButtonDO;
+import com.vci.ubcs.code.service.CodeButtonServiceI;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateMapServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateMapServiceImpl.java
new file mode 100644
index 0000000..73537e5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateMapServiceImpl.java
@@ -0,0 +1,278 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.dao.CodeClassifyTemplateMapDaoI;
+import com.vci.ubcs.code.model.CodeClassifyTemplateMapDO;
+import com.vci.ubcs.code.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.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateMapDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateMapVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*;
+
+/**
+ * 涓婚搴撴ā鏉挎槧灏勮鍒欐湇鍔�
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeClassifyTemplateMapServiceImpl implements CodeClassifyTemplateMapServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeClassifyTemplateMapDaoI codeClassifyTemplateMapMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateServiceImpl.java
new file mode 100644
index 0000000..2128f3e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateServiceImpl.java
@@ -0,0 +1,1091 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.code.dao.*;
+import com.vci.ubcs.code.dao.*;
+import com.vci.ubcs.code.lifecycle.CodeClassifyTemplateLC;
+import com.vci.code.model.*;
+import com.vci.code.service.*;
+import com.vci.corba.common.VCIError;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+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.ubcs.code.model.*;
+import com.vci.ubcs.code.service.*;
+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.springblade.code.dao.*;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateDTO;
+import org.springblade.code.model.*;
+import org.springblade.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
new file mode 100644
index 0000000..f6ebffb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -0,0 +1,481 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeBasicSecDaoI;
+import com.vci.ubcs.code.dao.CodeClassifyValueDaoI;
+import com.vci.ubcs.code.model.CodeBasicSecDO;
+import com.vci.ubcs.code.model.CodeClassifyValueDO;
+import com.vci.ubcs.code.service.CodeClassifyValueServiceI;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+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 com.vci.ubcs.code.dto.CodeClassifyValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
+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 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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingServiceImpl.java
new file mode 100644
index 0000000..563766c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingServiceImpl.java
@@ -0,0 +1,1111 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import cn.hutool.json.XML;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.code.dao.*;
+import com.vci.code.model.*;
+import com.vci.code.service.*;
+import com.vci.code.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.ubcs.code.dao.*;
+import com.vci.ubcs.code.model.*;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.utils.*;
+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.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springblade.code.dao.*;
+import com.vci.ubcs.code.dto.DockingPreApplyDataDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataInfoDTO;
+import org.springblade.code.model.*;
+import org.springblade.code.service.*;
+import org.springblade.code.utils.*;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntInfoVO;
+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.*;
+
+/**
+ * 涓婚搴撻泦鎴愭湇鍔�
+ * @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
+ @Lazy
+ private CodeClassifyDaoI codeClassifyDaoI;
+
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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(MdmDuckingConstant.XML_CODE_FAIL,"瑙f瀽xmlData澶辫触,e: "+e.getMessage(),null);
+ }
+
+ List<XmlData> xmlDataList = Collections.synchronizedList(new ArrayList<XmlData>());
+ String systemid = datasMap.getOrDefault(MdmDuckingConstant.XML_SYSTEMID,"").toString();
+ List<Map<String,Object>> dataMapList = (ArrayList<Map<String,Object>>)datasMap.get(MdmDuckingConstant.XML_DATAS);
+
+ //璁板綍杩欐鏁版嵁淇℃伅,骞朵笖鎶妜mldata鍐欏叆鏂囦欢
+ String currentDate = DateUtils.getCurrentDate(DateUtils.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(MdmDuckingConstant.XML_UNIQUE,"").toString();
+ String type = dataMap.getOrDefault(MdmDuckingConstant.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 = MdmDuckingConstant.XML_STATE_400;
+ XmlData xmlData = new XmlData();
+ xmlData.setState(MdmDuckingConstant.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(MdmDuckingConstant.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 = MdmDuckingConstant.XML_STATE_200;
+
+ }else if(FRAMEWORK_RELEASE_SUBMIT.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:宸叉彁浜わ紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = MdmDuckingConstant.XML_STATE_400;
+
+ }else if(FRAMEWORK_RELEASE_AUDITING.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:瀹℃牳涓紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = MdmDuckingConstant.XML_STATE_400;
+
+ }else if(FRAMEWORK_RELEASE_EDITING.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:缂栬緫涓紝data: " + dataMap.get(unique) + ",num: " + num;
+ datacode = MdmDuckingConstant.XML_STATE_400;
+
+ }else if(FRAMEWORK_DATA_DISABLED.equals(lcstatus)){
+ datamsglog = datamsg+"锛岀紪鐮佹暟鎹姸鎬�:鍋滅敤锛宒ata: " + dataMap.get(unique) + ",num: " + num;
+ datacode = MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.XML_KEY,"");
+ String mean = attrMap.getOrDefault(MdmDuckingConstant.XML_MEAN,"");
+ String text = attrMap.getOrDefault(MdmDuckingConstant.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(MdmDuckingConstant.XML_MPM_MODEL.equals(key)){//鍙朚PM瑙勬牸
+ mpm_model = text;
+ dockingPreApplyDataDO.setModel(mpm_model);
+ }
+ if(MdmDuckingConstant.XML_MPM_PARTTYPE.equals(key)){//鍙朚PM闆朵欢鍨嬪彿
+ mpm_parttype = text;
+ dockingPreApplyDataDO.setParttype(mpm_parttype);
+ }
+ if(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.equalsIgnoreCase(classifyoid)){//杩欎釜瀵瑰簲sysintinfo涓殑涓婚搴搃d锛屽鏋滄槸鍒嗙被鏁版嵁锛屽氨鏄疍OCKING_DEFAULT_CLASSIFY=CODECLASSIFY
+ rootClassifyoid = MdmDuckingConstant.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(MdmDuckingConstant.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, MdmDuckingConstant.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(!MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.URLTYPE_GET)) {//GET璇锋眰
+ String sendurl = url + "?" + MdmDuckingConstant.PARAM_XMLDATA + "=" + sendString;
+ //鎷兼帴param
+ for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
+ sendurl = sendurl + "&" + sysIntParamDO.getParamkey() + "=" + sysIntParamDO.getParamvalue();
+ }
+ paramString=sendurl;
+ backString = HttpUtils.get(sendurl);
+ } else if (type.equals(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.DATATYPE_JSON)){
+ backXml = XmlUtil.readSendJsonData(backString);//鐩墠鍙鍙栦富鏁版嵁json杩斿洖淇℃伅
+ }else {
+ if(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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: "+ MdmDuckingConstant.DOCKING_CACHE2_DELETE+",oid: "+oid+",obj: "+obj);
+ redisService.setCacheObject(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
new file mode 100644
index 0000000..d24fc98
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -0,0 +1,636 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.dao.CodeClassifyDaoI;
+import com.vci.ubcs.code.dao.DockingDataDaoI;
+import com.vci.ubcs.code.dao.DockingLogeDaoI;
+import com.vci.ubcs.code.dao.DockingTaskDaoI;
+import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodeJosnDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodeObjectDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodeProDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodedataDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
+import com.vci.code.model.*;
+import com.vci.ubcs.code.service.CodeDuckingSyncServiceI;
+import com.vci.ubcs.code.service.MdmEngineServiceI;
+import com.vci.ubcs.code.service.SysIntInfoServiceI;
+import com.vci.ubcs.code.utils.HttpUtils;
+import com.vci.ubcs.code.utils.WsErpClientUtil;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+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.ubcs.code.model.*;
+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.springblade.code.model.*;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntInfoVO;
+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;
+
+
+/**
+ * 涓婚搴撻泦鎴愭湇鍔�
+ * @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(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
+ List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ if(CollectionUtils.isEmpty(dockingTaskDOList)){
+ dockingTaskDOList=new ArrayList<>();
+ }
+ dockingTaskDOList.add(newDockingTaskDO);
+ typeDockingTaskDOMap.put(MdmDuckingConstant.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(MdmDuckingConstant.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", MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ }else {
+ queryWrapperForDO.addQueryMap("btmTypeId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(MdmDuckingConstant.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(MdmDuckingConstant.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, MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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", MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.URLTYPE_HTTP)) {
+ if (requestmethod.equals(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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(MdmDuckingConstant.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
new file mode 100644
index 0000000..59260ff
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
@@ -0,0 +1,377 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeFixedValueDaoI;
+import com.vci.ubcs.code.model.CodeFixedValueDO;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeFixedValueDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java
new file mode 100644
index 0000000..7151c81
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatRuleServiceImpl.java
@@ -0,0 +1,344 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeKeyAttrRepeatRuleDaoI;
+import com.vci.ubcs.code.model.CodeKeyAttrRepeatRuleDO;
+import com.vci.ubcs.code.service.CodeKeyAttrRepeatRuleServiceI;
+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 com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeKeyAttrRepeatRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java
new file mode 100644
index 0000000..647ce9f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseAttrServiceImpl.java
@@ -0,0 +1,301 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodePhaseAttrDaoI;
+import com.vci.ubcs.code.model.CodePhaseAttrDO;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodePhaseAttrDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodePhaseAttrVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
new file mode 100644
index 0000000..51b54bc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
@@ -0,0 +1,279 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.CodeResembleRuleDaoI;
+import com.vci.ubcs.code.model.CodeResembleRuleDO;
+import com.vci.ubcs.code.service.CodeResembleRuleServiceI;
+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.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 com.vci.ubcs.code.dto.CodeResembleRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
new file mode 100644
index 0000000..af3abc8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -0,0 +1,685 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodeBasicSecDaoI;
+import com.vci.ubcs.code.dao.CodeRuleDaoI;
+import com.vci.ubcs.code.lifecycle.CodeRuleLC;
+import com.vci.ubcs.code.model.CodeAllCodeDO;
+import com.vci.ubcs.code.model.CodeBasicSecDO;
+import com.vci.ubcs.code.model.CodeClassifyDO;
+import com.vci.ubcs.code.model.CodeRuleDO;
+import com.vci.ubcs.code.service.CodeBasicSecServiceI;
+import com.vci.ubcs.code.service.CodeClassifyServiceI;
+import com.vci.ubcs.code.service.CodeRuleServiceI;
+import com.vci.corba.common.VCIError;
+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.KeyValue;
+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.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeBasicSecDTO;
+import com.vci.ubcs.code.dto.CodeRuleDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+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.FrameWorkBusLangCodeConstant.*;
+
+/**
+ * 涓绘暟鎹紪鐮佽鍒欐湇鍔�
+ *
+ * @author weidy
+ * @date 2022-01-24
+ */
+@Service
+public class CodeRuleServiceImpl implements CodeRuleServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeRuleDaoI codeRuleMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
new file mode 100644
index 0000000..e389694
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.service.CodeSerialAlgorithmServiceI;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.util.ApplicationContextProvider;
+import org.apache.commons.lang3.StringUtils;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
new file mode 100644
index 0000000..41930f0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
@@ -0,0 +1,278 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.dao.CodeSynonymDaoI;
+import com.vci.ubcs.code.model.CodeSynonymDO;
+import com.vci.ubcs.code.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.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeSynonymDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*;
+
+/**
+ * 鍚屼箟璇嶉厤缃湇鍔�
+ * @author weidy
+ * @date 2022-02-17
+ */
+@Service
+public class CodeSynonymServiceImpl implements CodeSynonymServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private CodeSynonymDaoI codeSynonymMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTemplatePhaseServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTemplatePhaseServiceImpl.java
new file mode 100644
index 0000000..bb8f9f4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTemplatePhaseServiceImpl.java
@@ -0,0 +1,509 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.CodePhaseAttrDaoI;
+import com.vci.ubcs.code.dao.CodeTemplatePhaseDaoI;
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+import com.vci.ubcs.code.model.CodePhaseAttrDO;
+import com.vci.ubcs.code.model.CodeTemplatePhaseDO;
+import com.vci.ubcs.code.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.ubcs.code.service.CodePhaseAttrServiceI;
+import com.vci.ubcs.code.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 com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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
+ @Lazy
+ 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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataInfoServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataInfoServiceImpl.java
new file mode 100644
index 0000000..bb7c943
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataInfoServiceImpl.java
@@ -0,0 +1,277 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.dao.DockingPreApplyDataInfoDaoI;
+import com.vci.ubcs.code.model.DockingPreApplyDataInfoDO;
+import com.vci.ubcs.code.service.DockingPreApplyDataInfoServiceI;
+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 com.vci.ubcs.code.dto.DockingPreApplyDataInfoDTO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyDataInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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-05
+ */
+@Service
+public class DockingPreApplyDataInfoServiceImpl implements DockingPreApplyDataInfoServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingPreApplyDataInfoDaoI dockingPreApplyDataInfoMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<DockingPreApplyDataInfoVO> gridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<DockingPreApplyDataInfoDO> doList = dockingPreApplyDataInfoMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<DockingPreApplyDataInfoVO> dataGrid=new DataGrid<DockingPreApplyDataInfoVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(dockingPreApplyDataInfoDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreApplyDataInfoMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataInfoDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoDO2VOs(Collection<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOs) throws VciBaseException{
+ List<DockingPreApplyDataInfoVO> voList = new ArrayList<DockingPreApplyDataInfoVO>();
+ if(!CollectionUtils.isEmpty(dockingPreApplyDataInfoDOs)){
+ for(DockingPreApplyDataInfoDO s: dockingPreApplyDataInfoDOs){
+ DockingPreApplyDataInfoVO vo = dockingPreApplyDataInfoDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataInfoDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DockingPreApplyDataInfoVO dockingPreApplyDataInfoDO2VO(DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) throws VciBaseException{
+ DockingPreApplyDataInfoVO vo = new DockingPreApplyDataInfoVO();
+ if(dockingPreApplyDataInfoDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public DockingPreApplyDataInfoVO addSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = new DockingPreApplyDataInfoDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
+ dockingPreApplyDataInfoMapper.insert(dockingPreApplyDataInfoDO);
+ return dockingPreApplyDataInfoDO2VO(dockingPreApplyDataInfoDO);
+ }
+
+ /**
+ * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public DockingPreApplyDataInfoVO editSave(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataInfoDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
+ //灏咲TO杞崲涓篋O
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = selectByOid(dockingPreApplyDataInfoDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
+ dockingPreApplyDataInfoMapper.updateByPrimaryKey(dockingPreApplyDataInfoDO);
+ return dockingPreApplyDataInfoDO2VO(dockingPreApplyDataInfoDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param dockingPreApplyDataInfoDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param dockingPreApplyDataInfoDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO, DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO) {
+ DockingPreApplyDataInfoDO tsDO = new DockingPreApplyDataInfoDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(dockingPreApplyDataInfoDO.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 dockingPreApplyDataInfoDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteDockingPreApplyDataInfo(DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataInfoDTO,"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄",dockingPreApplyDataInfoDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鐨勪富閿�");
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = selectByOid(dockingPreApplyDataInfoDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(dockingPreApplyDataInfoDTO,dockingPreApplyDataInfoDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = dockingPreApplyDataInfoMapper.deleteByPrimaryKey(dockingPreApplyDataInfoDO.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 DockingPreApplyDataInfoVO getObjectByOid(String oid) throws VciBaseException{
+ return dockingPreApplyDataInfoDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private DockingPreApplyDataInfoDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = dockingPreApplyDataInfoMapper.selectByPrimaryKey(oid.trim());
+ if(dockingPreApplyDataInfoDO == null || StringUtils.isBlank(dockingPreApplyDataInfoDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return dockingPreApplyDataInfoDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<DockingPreApplyDataInfoVO> listDockingPreApplyDataInfoByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = listDockingPreApplyDataInfoDOByOidCollections(oidCollections);
+ return dockingPreApplyDataInfoDO2VOs(dockingPreApplyDataInfoDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<DockingPreApplyDataInfoDO> listDockingPreApplyDataInfoDOByOidCollections(Collection<String> oidCollections){
+ List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = new ArrayList<DockingPreApplyDataInfoDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<DockingPreApplyDataInfoDO> tempDOList = dockingPreApplyDataInfoMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ dockingPreApplyDataInfoDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return dockingPreApplyDataInfoDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<DockingPreApplyDataInfoVO> refDataGridDockingPreApplyDataInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridDockingPreApplyDataInfo(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataServiceImpl.java
new file mode 100644
index 0000000..f40b909
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyDataServiceImpl.java
@@ -0,0 +1,1119 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.cloud.commons.io.FileUtils;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.dao.DockingPreApplyDataDaoI;
+import com.vci.ubcs.code.dao.DockingPreApplyDataInfoDaoI;
+import com.vci.ubcs.code.lifecycle.CodeDefaultLC;
+import com.vci.ubcs.code.model.DockingPreApplyDataDO;
+import com.vci.ubcs.code.model.DockingPreApplyDataInfoDO;
+import com.vci.code.service.*;
+import com.vci.ubcs.code.utils.AttributeMapConfig;
+import com.vci.ubcs.code.utils.EnumVO;
+import com.vci.starter.poi.bo.SheetDataSet;
+import com.vci.starter.poi.bo.SheetRowData;
+import com.vci.starter.poi.bo.WriteExcelData;
+import com.vci.starter.poi.bo.WriteExcelOption;
+import com.vci.starter.poi.util.ExcelUtil;
+import com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.enumpck.ResultCodeEnum;
+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.*;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.pageModel.UITableFieldVO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.lang.StringUtils;
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataDTO;
+import com.vci.ubcs.code.dto.DockingPreApplyDataInfoDTO;
+import com.vci.ubcs.code.dto.PreApplyCodeOrderDTO;
+import org.springblade.code.service.*;
+import org.springblade.code.vo.pagemodel.*;
+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 plm.bs.bom.clientobject.ClientBusinessObject;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*;
+
+/**
+ * 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏈嶅姟
+ * @author weidy
+ * @date 2022-04-05
+ */
+@Service
+public class DockingPreApplyDataServiceImpl implements DockingPreApplyDataServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingPreApplyDataDaoI dockingPreApplyDataMapper;
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingPreApplyDataInfoDaoI dockingPreApplyDataInfoMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private DockingPreApplyDataInfoServiceI dockingPreApplyDataInfoServiceI;
+
+ /**
+ * 妯℃澘鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeClassifyTemplateServiceI templateService;
+ /**
+ * 鍒嗙被鎿嶄綔鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceImpl codeClassifyService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private CodeClassifyServiceI codeClassifyServiceI;
+
+ /**
+ * 棰勭敵璇锋暟鎹紝灞炴�ф槧灏勬ā鏉垮瓨鏀捐矾寰�
+ */
+ @Value("${docking.templateDir:D:\\desktop}")
+ public String preApplyTemplate;
+
+ @Value("${docking.tuhao:tuhao}")
+ public String tuhao;
+ /**
+ * 涓绘暟鎹紩鎿庢湇鍔�
+ */
+ @Autowired(required = false)
+ @Lazy
+ private MdmEngineServiceI engineService;
+
+ /**
+ * 涓绘暟鎹紩鎿庢湇鍔�
+ */
+ @Autowired(required = false)
+ @Lazy
+ private MdmIOServiceI mdmIOService;
+
+ @Autowired
+ private RedisService redisService;
+
+ @Autowired
+ private DockingPreAttrMappingSeviceI dockingPreAttrMappingSeviceI;
+
+ /***
+ * 鑾峰彇MAP鏋氫妇鍊�
+ */
+
+ @Autowired
+ private AttributeMapConfig attributeMapConfig;
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ public List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs, boolean iscontainAttr) throws VciBaseException {
+ List<DockingPreApplyDataVO> voList = new ArrayList<DockingPreApplyDataVO>();
+ if(!CollectionUtils.isEmpty(dockingPreApplyDataDOs)){
+ for(DockingPreApplyDataDO s: dockingPreApplyDataDOs){
+ DockingPreApplyDataVO vo = dockingPreApplyDataDO2VO(s,iscontainAttr);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ private DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO,boolean iscontainAttr) throws VciBaseException{
+ DockingPreApplyDataVO vo = new DockingPreApplyDataVO();
+ if(dockingPreApplyDataDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ if(iscontainAttr) {
+ List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOS = redisService.getCacheList(vo.getOid() + "_attr");
+ if (CollectionUtils.isEmpty(dockingPreApplyDataInfoDOS)) {
+ //鏌ヨ鏁版嵁鐨勫睘鎬у搴斿�间俊鎭�
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreApplyDataInfoDO.class);
+ queryWrapperForDO.addQueryMap("dataoid",dockingPreApplyDataDO.getOid());
+ dockingPreApplyDataInfoDOS= boService.selectByQueryWrapper(queryWrapperForDO,DockingPreApplyDataInfoDO.class);
+ }
+ List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOS = dockingPreApplyDataInfoServiceI.dockingPreApplyDataInfoDO2VOs(dockingPreApplyDataInfoDOS);
+ vo.setDockingPreApplyDataInfoVOs(dockingPreApplyDataInfoVOS);
+ }
+ }
+ return vo;
+ }
+
+
+ @Override
+ public List<DockingPreApplyDataVO> batchSetDataClassId(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
+ List<String> oidList= VciBaseUtil.str2List(dockingPreApplyDataDTO.getOid());
+ String classOid=dockingPreApplyDataDTO.getClassifyoid();
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOS=dockingPreApplyDataMapper.selectByPrimaryKeyCollection(oidList);
+ dockingPreApplyDataDOS.stream().forEach(dockingPreApplyDataDO -> {
+ dockingPreApplyDataDO.setClassifyoid(classOid);
+ });
+ dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOS);
+ List<DockingPreApplyDataVO> dockingPreApplyDataVOS= dockingPreApplyDataDO2VOs(dockingPreApplyDataDOS);
+ return dockingPreApplyDataVOS;
+ }
+
+ /***
+ * 杩斿洖淇℃伅
+ * @param codeClassifyOid
+ * @param templateOid
+ * @param btmType
+ * @param dataOids
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public DataGrid<Map<String, String>> gridApplyData(String codeClassifyOid, String templateOid, String btmType, String dataOids) throws VciBaseException {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鏁版嵁瀵硅薄",codeClassifyOid,"鍒嗙被涓婚敭");
+ VciBaseUtil.alertNotNull(templateOid,"鏁版嵁瀵硅薄",templateOid,"鍒嗙被妯℃澘");
+ VciBaseUtil.alertNotNull(dataOids,"鏁版嵁瀵硅薄",dataOids,"鏁版嵁涓婚敭");
+ CodeClassifyVO topClassifyVO = codeClassifyService.getTopClassifyVO(codeClassifyOid);
+ String btmTypeId = topClassifyVO.getBtmtypeid();
+ if (StringUtils.isBlank(btmTypeId)) {
+ return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
+ }
+ boolean iccheckHasChild=codeClassifyService.checkHasChild(codeClassifyOid);
+ if(iccheckHasChild){
+ throw new VciBaseException("璇烽�夋嫨鍙跺瓙鍒嗙被鑺傜偣鐢宠鏁版嵁锛�");
+ }
+ CodeClassifyTemplateVO templateVO= engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+ Map<String, String> classifyDevlevMap= engineService.previewClassify(codeClassifyOid,templateOid);
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS=templateVO.getAttributes();
+ Map<String,CodeClassifyTemplateAttrVO> attrTemplateAttrMap=templateAttrVOS.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
+ Map<String,String> condtionMappingMap=new HashMap<>();
+ condtionMappingMap.put("jviewModeId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(VciBaseUtil.str2List(templateOid).toArray(new String[]{})) + ")");
+ //condtionMappingMap.put("jSourceClsfId",codeClassifyOid);
+ //鑾峰彇灞炴�ф槧灏勫叧绯�
+ List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingSeviceI.selectAttrMappings(condtionMappingMap);
+ if(CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){
+ return new DataGrid<>("鏈幏鍙栧埌鐩稿叧灞炴�ф槧灏勯厤缃�");
+ }
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOS=this.dockingPreApplyDataMapper.selectByPrimaryKeyCollection(VciBaseUtil.str2List(dataOids));
+ List<DockingPreApplyDataVO> dockingPreApplyDataVOS= dockingPreApplyDataDO2VOs(dockingPreApplyDataDOS,true);
+ List<Map> maps=new ArrayList<>();
+
+ dockingPreApplyDataVOS.stream().forEach(dockingPreApplyDataVO -> {
+ List<DockingPreApplyDataInfoVO> dockingPreApplyDataInfoVOS= dockingPreApplyDataVO.getDockingPreApplyDataInfoVOs();
+ Map<String/**oid**/, DockingPreApplyDataInfoVO/**瀵硅薄**/> attrMappingMap=new HashMap<>();
+ if(!CollectionUtils.isEmpty(dockingPreApplyDataInfoVOS)) {
+ attrMappingMap = dockingPreApplyDataInfoVOS.stream().collect(Collectors.toMap(s -> s.getKey(), t -> t, (o1, o2) -> o2));
+ }
+ Map<String,String> attributMap=new HashMap<>();
+ Map<String, DockingPreApplyDataInfoVO> finalAttrMappingMap = attrMappingMap;
+ dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> {
+ String innerName=dockingPreAttrMappingVO.getJsourceAttrKey();
+ String jtargetAttrKey=dockingPreAttrMappingVO.getJtargetAttrKey().toLowerCase(Locale.ROOT);
+ final String[] defaulValue = {dockingPreAttrMappingVO.getJdefaultValue()};
+ CodeClassifyTemplateAttrVO templateAttr= attrTemplateAttrMap.get(innerName);
+
+ if(innerName.equalsIgnoreCase(tuhao.toLowerCase(Locale.ROOT))){//灞炴�ф槧灏勪腑鏄浘鍙风殑搴斿綋鍗曠嫭鍔�
+ attributMap.put(tuhao,dockingPreApplyDataVO.getUniquecode());
+ }else{
+ if (StringUtils.isNotBlank(jtargetAttrKey) && finalAttrMappingMap.containsKey(jtargetAttrKey)) {
+ DockingPreApplyDataInfoVO dataInfoVO = finalAttrMappingMap.get(jtargetAttrKey);
+ String value = dataInfoVO.getValue();
+ List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList = dockingPreAttrMappingVO.getDockingPreAttrRangeVOS();
+ //Map<String/**闆嗘垚灞炴�у彇鍊艰寖鍥寸殑鍐呴儴鍊�**/, String/**涓绘暟鎹睘鎬у彇鍊艰寖鍥村唴閮ㄥ��**/> attrNameIdMap=new HashMap<>();
+ if (StringUtils.isNotBlank(value)) {
+ defaulValue[0] = value;
+ }
+ if (!CollectionUtils.isEmpty(dockingPreAttrRangeVOList)) {
+ // attrNameIdMap = dockingPreAttrRangeVOList.stream().collect(Collectors.toMap(s -> s.getJtargeNumTextValue(), t -> t.getJnumTextValue().toLowerCase(Locale.ROOT),(o1, o2)->o2));
+ dockingPreAttrRangeVOList.stream().forEach(dockingPreAttrRangeVO -> {
+ String jtargeNumTextValue = dockingPreAttrRangeVO.getJtargeNumTextValue();
+ List<String> valueList = VciBaseUtil.str2List(jtargeNumTextValue);
+ if (valueList.contains(value)) {
+ defaulValue[0] = dockingPreAttrRangeVO.getJnumTextValue();
+ }
+ });
+ }
+ }
+ //鍒ゆ柇妯℃澘灞炴�ц缃鍒欓粯璁ゅ��
+ if (StringUtils.isBlank(defaulValue[0]) && templateAttr != null && StringUtils.isNotBlank(templateAttr.getClassifyinvokelevel())) {
+ defaulValue[0] = classifyDevlevMap.get(innerName);
+ }
+
+ //鍒ゆ柇妯℃澘灞炴�ч粯璁ゅ��
+ if (StringUtils.isBlank(defaulValue[0]) && templateAttr != null && StringUtils.isNotBlank(templateAttr.getDefaultvalue())) {
+ defaulValue[0] = templateAttr.getDefaultvalue();
+ }
+ if (((StringUtils.isNotBlank(templateAttr.getEnumString())
+ && !"[]".equalsIgnoreCase(templateAttr.getEnumString())) ||
+ StringUtils.isNotBlank(templateAttr.getEnumid()))) {
+ UITableFieldVO fieldVO = engineService.templateAttr2TableField(templateAttr, false);
+ List<KeyValue> keyValueList = fieldVO.getData();
+ String text = "";
+ if (!CollectionUtils.isEmpty(keyValueList)) {
+ Map<String, String> enumMap = keyValueList.stream().collect(Collectors.toMap(s -> s.getKey(), t -> t.getValue().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
+ if (enumMap.containsKey(defaulValue[0])) {
+ text = enumMap.get(defaulValue[0]);
+ }
+ }
+ attributMap.put(fieldVO.getField(), text);
+ }
+ attributMap.put(innerName, defaulValue[0]);
+ }
+ });
+ maps.add(attributMap);
+ });
+ DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
+ List<Map<String, String>> dataList = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(maps)) {
+ maps.stream().forEach(map -> {
+ Map<String, String> data = new HashMap<>();
+ map.forEach((key, value) -> {
+ data.put((String) key, (String) value);
+ });
+ dataList.add(data);
+ });
+ }
+ dataGrid.setData(dataList);
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<DockingPreApplyDataVO> dockingPreApplyDataDO2VOs(Collection<DockingPreApplyDataDO> dockingPreApplyDataDOs) throws VciBaseException{
+ List<DockingPreApplyDataVO> voList = new ArrayList<DockingPreApplyDataVO>();
+ if(!CollectionUtils.isEmpty(dockingPreApplyDataDOs)){
+ for(DockingPreApplyDataDO s: dockingPreApplyDataDOs){
+ DockingPreApplyDataVO vo = dockingPreApplyDataDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param dockingPreApplyDataDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DockingPreApplyDataVO dockingPreApplyDataDO2VO(DockingPreApplyDataDO dockingPreApplyDataDO) throws VciBaseException{
+ DockingPreApplyDataVO vo = new DockingPreApplyDataVO();
+ if(dockingPreApplyDataDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public DockingPreApplyDataVO addSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ DockingPreApplyDataDO dockingPreApplyDataDO = new DockingPreApplyDataDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,dockingPreApplyDataDO);
+ dockingPreApplyDataMapper.insert(dockingPreApplyDataDO);
+ return dockingPreApplyDataDO2VO(dockingPreApplyDataDO);
+ }
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param dockingPreApplyDataDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param dockingPreApplyDataDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(DockingPreApplyDataDTO dockingPreApplyDataDTO, DockingPreApplyDataDO dockingPreApplyDataDO) {
+ DockingPreApplyDataDO tsDO = new DockingPreApplyDataDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(dockingPreApplyDataDO.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 dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteDockingPreApplyData(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鐨勪富閿�");
+ DockingPreApplyDataDO dockingPreApplyDataDO = selectByOid(dockingPreApplyDataDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(dockingPreApplyDataDTO,dockingPreApplyDataDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = dockingPreApplyDataMapper.deleteByPrimaryKey(dockingPreApplyDataDO.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 DockingPreApplyDataVO getObjectByOid(String oid) throws VciBaseException{
+ return dockingPreApplyDataDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private DockingPreApplyDataDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(oid.trim());
+ if(dockingPreApplyDataDO == null || StringUtils.isBlank(dockingPreApplyDataDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return dockingPreApplyDataDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<DockingPreApplyDataVO> listDockingPreApplyDataByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOList = listDockingPreApplyDataDOByOidCollections(oidCollections);
+ return dockingPreApplyDataDO2VOs(dockingPreApplyDataDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<DockingPreApplyDataDO> listDockingPreApplyDataDOByOidCollections(Collection<String> oidCollections){
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOList = new ArrayList<DockingPreApplyDataDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<DockingPreApplyDataDO> tempDOList = dockingPreApplyDataMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ dockingPreApplyDataDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return dockingPreApplyDataDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<DockingPreApplyDataVO> refDataGridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridDockingPreApplyData(conditionMap,pageHelper);
+ }
+
+ //==================
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<DockingPreApplyDataVO> gridDockingPreApplyData(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+
+ //鍙煡璇㈠惎鐢ㄧ殑data锛岃繖鏍峰氨涓嶇敤鍘绘壘鏈�澶х増鏈彿浜嗗啀鏌ヨ
+ conditionMap.put("useddflag","true");
+ List<DockingPreApplyDataDO> doList = dockingPreApplyDataMapper.selectByCondition(conditionMap,pageHelper);
+ Map<String,List<EnumVO>> mpmEnumMap= this.attributeMapConfig.getMpmEnumMap();
+ Map<String,List<String>> typeCodemap =new HashedMap();
+ doList.stream().forEach(dockingPreApplyDataDO -> {
+ String enumValue= dockingPreApplyDataDO.getParttype();
+ String type=dockingPreApplyDataDO.getType();
+ String code=dockingPreApplyDataDO.getNum();
+ if(!CollectionUtils.isEmpty(mpmEnumMap)){
+ if(mpmEnumMap.containsKey("partType")){
+ List<EnumVO> partTypeEnumMapList= mpmEnumMap.get("partType");
+ Map<String, String> enumFieldValueMap = partTypeEnumMapList.stream().collect(Collectors.toMap(EnumVO::getEnumValue, EnumVO::getEnumText, (key1, key2) -> key2));
+ if(enumFieldValueMap.containsKey(enumValue)){
+ String enumText= enumFieldValueMap.get(enumValue);
+ dockingPreApplyDataDO.setParttype(enumText);
+ }
+ }
+ }
+ if(StringUtils.isNotBlank(code)) {
+ List<String> codeList = new ArrayList<>();
+ codeList.add(code);
+ if (typeCodemap.containsKey(type)) {
+ List<String> oldCodeList = typeCodemap.get(type);
+ codeList.addAll(oldCodeList);
+ }
+ typeCodemap.put(type, codeList);
+ }
+ });
+ List<ClientBusinessObject> cbos=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(typeCodemap)) {
+ typeCodemap.forEach((type,codes)->{
+ Map<String,String> contionMap=new HashedMap();
+ contionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codes.toArray(new String[]{})) + ")");
+ List<ClientBusinessObject> newcbos=boService.queryCBO(type,contionMap);
+ cbos.addAll(newcbos);
+ });
+ }
+ Map<String, ClientBusinessObject> codeCbosMap = cbos.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+ doList.stream().forEach(s->{
+ String code =s.getNum();
+ if(codeCbosMap.containsKey(code)){
+ ClientBusinessObject cbo= codeCbosMap.get(code);
+ if(!cbo.getLcStatus().equals(CodeDefaultLC.RELEASED.getValue())){//濡傛灉涓嶆槸鍙戝竷鐘舵�佸垯闅愯棌缂栫爜
+ s.setNum("******");
+ s.setId("******");
+ s.setPreapplyoid("******");
+ }
+ }else{
+
+ }
+ });
+
+ DataGrid<DockingPreApplyDataVO> dataGrid=new DataGrid<DockingPreApplyDataVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(dockingPreApplyDataDO2VOs(doList,false));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreApplyDataMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎻掑叆data鍜宒atainfo,浼氳嚜鍔ㄦ妸data閲岀殑oid,unique璧嬪�煎埌datainfo閲岃竟鍘�
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public void addSaveDataAndInfo(DockingPreApplyDataDTO dockingPreApplyDataDTO, List<DockingPreApplyDataInfoDTO> dockingPreApplyDataInfoDTOList) throws VciBaseException{
+ String unique = "";
+ //灏咲TO杞崲涓篋O
+ DockingPreApplyDataDO dockingPreApplyDataDO = new DockingPreApplyDataDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataDTO,dockingPreApplyDataDO);
+
+ String dataoid = dockingPreApplyDataDO.getOid();
+ if(StringUtils.isEmpty(dockingPreApplyDataDO.getOid())) {
+ dataoid = redisService.getUUIDEveryDay();
+ dockingPreApplyDataDO.setOid(dataoid);
+ }
+
+ //鏌ヨ浠ュ墠鐨勬暟鎹紝鍑嗗淇敼usedflasg
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreApplyDataDO.class);
+ queryWrapperForDO.addQueryMap("uniquecode",dockingPreApplyDataDO.getUniquecode());
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOList = boService.selectByQueryWrapper(queryWrapperForDO,DockingPreApplyDataDO.class);
+
+ //鎵ц鏁版嵁淇濆瓨鎿嶄綔
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+ BatchCBO batchUpdateData = new BatchCBO();
+ //淇敼浠ュ墠鐨勬暟鎹畊seddflag=false
+ if (dockingPreApplyDataDOList.size() != 0) {
+ for (DockingPreApplyDataDO dockingPreApplyDataDOi : dockingPreApplyDataDOList) {
+ dockingPreApplyDataDOi.setUseddflag(MdmDuckingConstant.PRE_APPLY_DATA_USER_FALSE);
+ }
+ batchUpdateData = dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOList);
+ }
+
+ //鏂板鐜板湪鐨刣ata
+ dockingPreApplyDataDO.setUseddflag(MdmDuckingConstant.PRE_APPLY_DATA_USER_TRUE);//鏄渶鏂扮殑
+ BatchCBO batchInsertData = dockingPreApplyDataMapper.insert(dockingPreApplyDataDO);
+ batchUpdateData.copyFromOther(batchInsertData);
+
+ //鏂板dataInfo
+ List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = new ArrayList<DockingPreApplyDataInfoDO>();
+ for (DockingPreApplyDataInfoDTO dockingPreApplyDataInfoDTO : dockingPreApplyDataInfoDTOList) {
+ DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO = new DockingPreApplyDataInfoDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreApplyDataInfoDTO, dockingPreApplyDataInfoDO);
+ dockingPreApplyDataInfoDO.setDataoid(dataoid);
+
+ if (StringUtils.isNotEmpty(dockingPreApplyDataDO.getUniquecode())) {
+ dockingPreApplyDataInfoDO.setUniquecode(dockingPreApplyDataDO.getUniquecode());
+ }
+ if (StringUtils.isEmpty(dockingPreApplyDataInfoDO.getOid())) {
+ String datainfooid = redisService.getUUIDEveryDay();
+ dockingPreApplyDataInfoDO.setOid(datainfooid);
+ }
+
+ dockingPreApplyDataInfoDOList.add(dockingPreApplyDataInfoDO);
+ }
+
+ if(dockingPreApplyDataInfoDOList.size()!=0) {
+ BatchCBO batchInsertDataInfo = dockingPreApplyDataInfoMapper.batchInsert(dockingPreApplyDataInfoDOList);
+ batchUpdateData.copyFromOther(batchInsertDataInfo);
+ redisService.setCacheList(dockingPreApplyDataDO.getOid(),dockingPreApplyDataInfoDOList);
+ }
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchUpdateData);//涓�璧锋墽琛屼繚瀛�
+ }
+
+ /**
+ * 淇敼璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅
+ * @param dockingPreApplyDataDTO 璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public BaseResult editSave(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(dockingPreApplyDataDTO,"鏁版嵁瀵硅薄",dockingPreApplyDataDTO.getOid(),"璁板綍宸ヨ壓鎺ㄩ�佽繃鏉ョ殑鏁版嵁淇℃伅涓婚敭");
+ //灏咲TO杞崲涓篋O
+ DockingPreApplyDataDO dockingPreApplyDataDO = selectByOid(dockingPreApplyDataDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(dockingPreApplyDataDTO,dockingPreApplyDataDO);
+ dockingPreApplyDataMapper.updateByPrimaryKey(dockingPreApplyDataDO);
+ return BaseResult.success(dockingPreApplyDataDO2VO(dockingPreApplyDataDO));
+ }
+
+ /**
+ * 鏍规嵁data鐨刼id鏌ヨdata淇℃伅鍜宒atainfo淇℃伅锛屽苟涓旀嫾鎺atainfo涓簃ap
+ * @param dockingPreApplyDataDTO
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public BaseResult<Map<String,String>> getDataInfoMap(DockingPreApplyDataDTO dockingPreApplyDataDTO) throws VciBaseException{
+
+ String dataoid = dockingPreApplyDataDTO.getOid();
+
+ //鏌ヨdata鐨則ype
+ DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(dataoid);
+
+ if(dockingPreApplyDataDO == null){
+ String msg = "棰勭敵璇风紪鐮侊紝閫氳繃oid鏌ヨDockingPreApplyDataDO鏈壘鍒版暟鎹�!";
+ logger.error(msg);
+ return BaseResult.fail(msg,null);
+ }
+
+ String type = dockingPreApplyDataDO.getType();
+
+ //鏌ヨdatainfo涓簃ap
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingPreApplyDataInfoDO.class);
+ queryWrapper.addQueryMap("dataoid",dataoid);
+ List<DockingPreApplyDataInfoDO> dockingPreApplyDataInfoDOList = dockingPreApplyDataInfoMapper.selectByWrapper(queryWrapper);
+ Map<String,String> dataInfoMap = new HashMap<String,String>();//鎵�鏈夌殑鍊�
+ for (DockingPreApplyDataInfoDO dockingPreApplyDataInfoDO :dockingPreApplyDataInfoDOList){
+ dataInfoMap.put(dockingPreApplyDataInfoDO.getKey(),dockingPreApplyDataInfoDO.getValue());
+ }
+//鎶奷atainfomap鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲涓烘渶缁堝瓨鍏ョ殑鏁版嵁map
+// String systemid = dockingPreApplyDataDO.getSystemid();//绯荤粺缂栧彿
+//
+// PreApplyDataTrans preApplyDataTrans = getPreApplyDataTransBySystemIdAndType(systemid,type);
+// if(preApplyDataTrans == null){
+// String msg = "璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉挎垚鍔�,浣嗘槸娌℃湁鍖归厤鐨勬ā鏉垮睘鎬�,systemid: "+systemid+",type: "+type;
+// logger.error(msg);
+// preApplyDataTrans = new PreApplyDataTrans(systemid,type,new HashMap<String,String>());
+// }
+//
+// Map<String, String> attrMap = preApplyDataTrans.getAttrMap();
+//
+// Map<String, String> outMap = getShowMap(attrMap,dataInfoMap);
+
+ return BaseResult.success(dataInfoMap,"鏌ヨ鎴愬姛");
+ }
+
+ /**
+ * 鏍规嵁systemid鏌ヨ閰嶇疆鐨勫睘鎬фā鏉�
+ * @param systemid 绯荤粺id
+ * @param type 鍒嗙被
+ * @return
+ */
+ public PreApplyDataTrans getPreApplyDataTransBySystemIdAndType(String systemid,String type){
+ String templateXml = null;
+ String fileUrl = "";
+ try {
+ String templatename = systemid;
+ fileUrl = preApplyTemplate+ File.separator+templatename+".xml";
+ templateXml = FileUtils.readFileToString(new File(fileUrl),"utf-8");
+ }catch (Exception e){
+ e.printStackTrace();
+ logger.error("璇诲彇棰勭敵璇峰睘鎬ф槧灏勬ā鏉垮け璐�,fileUrl: "+fileUrl);
+ return null;
+ }
+
+ /**
+ * 閫氳繃閰嶇疆鐨勬ā鏉挎枃浠讹紝杞崲涓哄墠绔鎳傚拰mdmEngineController/getDataByOid鎺ュ彛绫讳技鐨勬暟鎹�
+ */
+ List<PreApplyDataTrans> preApplyDataTransList = null;
+ try {
+ preApplyDataTransList = readAttrTransfTemplate(templateXml);
+ }catch (Exception e){
+ logger.error("璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉垮け璐�,");
+ return null;
+ }
+
+ PreApplyDataTrans preApplyDataTrans = null;
+ for(PreApplyDataTrans preApplyDataTransi:preApplyDataTransList){
+ String preApplyDataTrans_type = preApplyDataTransi.getType();
+ if(type.equals(preApplyDataTrans_type)){
+ preApplyDataTrans = preApplyDataTransi;
+ break;
+ }
+ }
+ return preApplyDataTrans;
+ }
+
+ /**
+ * 鎶婇鐢宠鐨勫睘鎬ф牴鎹ā鏉縳ml杞寲涓烘渶缁堢殑灞炴�ap
+ * @param attrMap
+ * @param dataInfoMap
+ * @return
+ */
+ public Map<String, String> getShowMap(Map<String, String> attrMap,Map<String, String> dataInfoMap){
+ Map<String, String> outMap = new HashMap<String, String>();//杞崲鐨刱ey鍚庣殑map
+ for (String systemkey:attrMap.keySet()){
+ String mdmKey = attrMap.getOrDefault(systemkey,"");
+ String value = dataInfoMap.getOrDefault(mdmKey,"");
+ if(StringUtils.isNotEmpty(value)){
+ outMap.put(systemkey,value);
+ }
+ }
+ return outMap;
+ }
+ /**
+ * 鎵归噺澶勭悊棰勭敵璇风紪鐮�
+ * 蹇呴』瑕佹湁鍒嗙被oid鍜宒ata
+ */
+ @Override
+ public BaseResult applyData(List<PreApplyCodeOrderDTO> preApplyCodeOrderDTOList) {
+
+ List<Map> retMapList = new ArrayList<Map>();//淇濆瓨杩斿洖鐨勯敊璇痮id鍜屼俊鎭�
+ for (PreApplyCodeOrderDTO preApplyCodeOrderDTO : preApplyCodeOrderDTOList) {
+
+ CodeOrderDTO codeOrderDTO = new CodeOrderDTO();
+ try {
+ //鏍规嵁鍒嗙被oid鏌ヨ妯℃澘oid锛岀紪鐮佽鍒檕id
+ String codeClassfyOid = preApplyCodeOrderDTO.getCodeClassifyOid();
+
+ //鏌ヨdata鐨則ype
+ String dataoid = preApplyCodeOrderDTO.getDataoid();
+ DockingPreApplyDataDO dockingPreApplyDataDO = dockingPreApplyDataMapper.selectByPrimaryKey(dataoid);
+
+ //鏌ヨ缂栫爜瑙勫垯oid
+ String ruleOid = null;
+ try {
+ CodeRuleVO codeRuleVO = engineService.getCodeRuleByClassifyOid(codeClassfyOid);
+ ruleOid = codeRuleVO.getOid();
+ }catch (Exception e){
+ Map retMap = new HashMap<String,String>();
+ retMap.put("oid",codeOrderDTO.getOid());
+ retMap.put("msg","閫夋嫨鐨勫垎绫讳互鍙婁笂绾у垎绫绘病鏈夐厤缃紪鐮佽鍒�");
+ retMapList.add(retMap);
+ logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁鍒嗙被oid鏌ヨ缂栫爜瑙勫垯澶辫触,鍒嗙被oid: "+codeClassfyOid);
+ continue;
+ }
+
+ //鏌ヨ浣跨敤鐨勬ā鏉縪id
+ String templateOid = null;
+ try {
+ CodeClassifyTemplateVO codeClassifyTemplateVO = engineService.getUsedTemplateByClassifyOid(codeClassfyOid);
+ templateOid = codeClassifyTemplateVO.getOid();
+ }catch (Exception e){
+ Map retMap = new HashMap<String,String>();
+ retMap.put("oid",codeOrderDTO.getOid());
+ retMap.put("msg","閫夋嫨鐨勫垎绫讳互鍙婁笂绾у垎绫绘病鏈夐厤缃厤缃ā鏉�");
+ retMapList.add(retMap);
+ logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁鍒嗙被oid鏌ヨ浣跨敤鐨勬ā鏉垮け璐�,鍒嗙被oid: "+codeClassfyOid);
+ continue;
+ }
+
+ //鏍规嵁dataoid鏌ヨdataInfoMap
+ Map dataInfoMap = null;
+
+ DockingPreApplyDataDTO dockingPreApplyDataDTO = new DockingPreApplyDataDTO();
+ dockingPreApplyDataDTO.setOid(preApplyCodeOrderDTO.getDataoid());
+ BaseResult baseResult_dataMap = getDataInfoMap(dockingPreApplyDataDTO);
+ if(ResultCodeEnum.SUCCESS.code==baseResult_dataMap.getCode()){
+ Object datao = baseResult_dataMap.getObj();
+ if(datao!=null){
+ dataInfoMap = (Map<String, String>)datao;
+ }
+ }
+ if(dataInfoMap==null){
+ Map retMap = new HashMap<String,String>();
+ retMap.put("oid",codeOrderDTO.getOid());
+ retMap.put("msg","鏌ヨ鍒版帴鏀剁殑棰勭敵璇锋暟鎹负绌�");
+ retMapList.add(retMap);
+ logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鏍规嵁DockingPreApplyData_oid鏌ヨ鏁版嵁鎺ユ敹鐨勯鐢宠鏁版嵁澶辫触,DockingPreApplyData_oid: "+preApplyCodeOrderDTO.getDataoid());
+ continue;
+ }
+
+ //鎶奷atainfomap鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲涓烘渶缁堝瓨鍏ョ殑鏁版嵁map
+ String systemid = dockingPreApplyDataDO.getSystemid();//绯荤粺缂栧彿
+ String type = dockingPreApplyDataDO.getType();//type
+
+ PreApplyDataTrans preApplyDataTrans = getPreApplyDataTransBySystemIdAndType(systemid,type);
+ if(preApplyDataTrans == null){
+ String msg = "璇诲彇棰勭敵璇锋暟鎹厤缃ā鏉挎垚鍔�,浣嗘槸娌℃湁鍖归厤鐨勬ā鏉垮睘鎬�,systemid: "+systemid+",type: "+type;
+ logger.error(msg);
+ preApplyDataTrans = new PreApplyDataTrans(systemid,type,new HashMap<String,String>());
+ }
+
+ Map<String, String> attrMap = preApplyDataTrans.getAttrMap();
+
+ Map<String, String> data = getShowMap(attrMap,dataInfoMap);
+ if(data.size()==0){
+ Map retMap = new HashMap<String,String>();
+ retMap.put("oid",codeOrderDTO.getOid());
+ retMap.put("msg","鎺ユ敹鐨勯鐢宠鏁版嵁鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲灞炴�уけ璐�");
+ retMapList.add(retMap);
+ logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: 鎺ユ敹鐨勯鐢宠鏁版嵁鏍规嵁閰嶇疆鐨勬ā鏉縳ml杞寲灞炴�уけ璐�!");
+ continue;
+ }
+
+ String name = data.getOrDefault("name","");
+
+ //鎵ц鏁版嵁淇濆瓨
+ codeOrderDTO.setCodeClassifyOid(codeClassfyOid);
+ codeOrderDTO.setTemplateOid(templateOid);
+ codeOrderDTO.setCodeRuleOid(ruleOid);
+ codeOrderDTO.setSecDTOList(preApplyCodeOrderDTO.getSecDTOList());//鐮佹
+ codeOrderDTO.setEditInProcess(preApplyCodeOrderDTO.isEditInProcess());
+ codeOrderDTO.setUpVersion(preApplyCodeOrderDTO.isUpVersion());
+ codeOrderDTO.setName(name);
+ codeOrderDTO.setData(data);
+ engineService.addSaveCode(codeOrderDTO);
+
+ //鍐嶄慨鏀筪ata閲岃竟鐨刢lassifyoid鍜宑lassifuname
+ String classifyoid = preApplyCodeOrderDTO.getCodeClassifyOid();
+ //鏌ヨ鍒嗙被
+ CodeClassifyVO codeClassifyVO = codeClassifyServiceI.getObjectByOid(classifyoid);
+ //璁剧疆鍒嗙被oid,name,flag
+ dockingPreApplyDataDO.setClassifyoid(codeClassifyVO.getOid());
+ dockingPreApplyDataDO.setClassifyname(codeClassifyVO.getName());
+ dockingPreApplyDataMapper.updateByPrimaryKey(dockingPreApplyDataDO);
+ } catch (Exception e) {
+ Map retMap = new HashMap<String,String>();
+ retMap.put("oid",preApplyCodeOrderDTO.getDataoid());
+ retMap.put("msg","澶勭悊澶辫触!");
+ retMapList.add(retMap);
+ logger.error("鎵归噺澶勭悊棰勭敵璇锋暟鎹け璐�,鏁版嵁: "+preApplyCodeOrderDTO.toString()+",msg: "+e.getMessage());
+ }
+ }
+ BaseResult result = BaseResult.success(retMapList);
+ return result;
+ }
+
+ @Override
+ public BaseResult batchApplyDatas(List<CodeOrderDTO> codeOrderDTOs) {
+ if(!CollectionUtils.isEmpty(codeOrderDTOs)){
+ CodeOrderDTO orderDTO=codeOrderDTOs.get(0);
+ Map<String,String> rowsOidMap=new HashMap<>();
+ SheetDataSet dataSet=new SheetDataSet();
+ List<SheetRowData> sheetRowDatas=new ArrayList<>();
+ CodeClassifyTemplateVO codeClassifyTemplateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+ List<String> colName=new ArrayList<>();
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS=codeClassifyTemplateVO.getAttributes();
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateAttrVOS.stream().filter(s -> !MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<String/**鑻辨枃鍚嶇О**/, String/**涓枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(),(o1, o2)->o2));
+ for (int i=0;i<codeOrderDTOs.size();i++) {
+ CodeOrderDTO codeOrderDTO=codeOrderDTOs.get(i);
+ String dataoid = codeOrderDTO.getOid();
+ rowsOidMap.put(i+"",dataoid);//瀛樺偍鏁版嵁oid锛屼竴閬嶈缃�
+
+ SheetRowData sheetRowData=new SheetRowData();
+ Map<String, String> dataMap= codeOrderDTO.getData();
+ sheetRowData.setRowIndex(i+"");
+ Map<Integer,String> indexValueMap=new HashMap<>();
+ int index=0;
+ colName=new ArrayList<>();
+ for (String field: attrNameIdMap.keySet()) {
+ String outAttrName=attrNameIdMap.get(field);
+ colName.add(outAttrName);
+ String value="";
+ if(dataMap.containsKey(field)){
+ value=StringUtils.isBlank(dataMap.get(field))?"":dataMap.get(field);
+ }else{
+ value="";
+ }
+ indexValueMap.put(index++,value);
+ }
+ sheetRowData.setData(indexValueMap);
+ sheetRowDatas.add(sheetRowData);
+ }
+ dataSet.setRowData(sheetRowDatas);
+ dataSet.setColName(colName);
+ Map<String,String> errorMap=new HashMap<>();
+ List<String> codeList=mdmIOService.batchImportCode(orderDTO,codeClassifyTemplateVO,dataSet,errorMap,false);
+ List<SheetRowData> needSaveCboList = dataSet.getRowData().stream().filter(cbo -> {
+ String rowIndex =cbo.getRowIndex();
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ LinkedList<String> needOIdList=new LinkedList<>();
+ Map<String,String> codeIdMap=new HashMap<>();
+ for(int i=0;i<needSaveCboList.size();i++) {
+ SheetRowData cbo = needSaveCboList.get(i);
+ String rouIndex = cbo.getRowIndex();
+ if (rowsOidMap.containsKey(rouIndex)) {
+ String dataOid = rowsOidMap.get(rouIndex);
+ needOIdList.add(dataOid);
+ codeIdMap.put(dataOid,codeList.get(i));
+ }
+ }
+ if(!CollectionUtils.isEmpty(needOIdList)) {
+ CodeClassifyVO codeClassifyVO = codeClassifyServiceI.getObjectByOid(orderDTO.getCodeClassifyOid());
+ List<DockingPreApplyDataDO> dockingPreApplyDataDOS = dockingPreApplyDataMapper.selectByPrimaryKeys(VciBaseUtil.array2String(needOIdList.toArray(new String[]{})));
+ dockingPreApplyDataDOS.stream().forEach(dockingPreApplyDataDO -> {
+ //璁剧疆鍒嗙被oid,name,flag
+ String dataOid=dockingPreApplyDataDO.getOid();
+ dockingPreApplyDataDO.setClassifyoid(codeClassifyVO.getOid());
+ dockingPreApplyDataDO.setClassifyname(codeClassifyVO.getName());
+ if(codeIdMap.containsKey(dataOid)) {//瀛樺叆鏁版嵁缂栫爜
+ String code= codeIdMap.get(dataOid);
+ dockingPreApplyDataDO.setId(code);
+ dockingPreApplyDataDO.setPreapplyoid(code);
+ dockingPreApplyDataDO.setNum(code);
+ }
+
+ dockingPreApplyDataDO.setDatamsg("璧嬬爜鎴愬姛");
+ dockingPreApplyDataDO.setUseddflag("true");
+ });
+ dockingPreApplyDataMapper.batchUpdate(dockingPreApplyDataDOS);
+ }
+ //濡傛灉鏈夐敊璇垯瀵煎嚭execl
+ if(errorMap.size()>0){
+ List<String> needRowIndexList = new ArrayList<>();
+ String errorFile=returnErrorToExcel(dataSet.getRowData(),errorMap, needRowIndexList,dataSet.getColName());
+ if(StringUtils.isNotBlank(errorFile)){
+ //鏀惧埌map閲�
+ BaseResult result = BaseResult.fail("鏈夐儴鍒嗘暟鎹敵璇峰け璐ワ紝璇锋牳瀵�");
+ result.setObj(ControllerUtil.putErrorFile(errorFile));
+ return result;
+ }else {
+ return BaseResult.success("鐢宠鎴愬姛!");
+ }
+
+ }
+
+ }
+
+ return BaseResult.success("鐢宠鎴愬姛!");
+ }
+
+ /**
+ * 閿欒淇℃伅杩斿洖excel
+ * @param rowDataList 鎵�鏈夌殑瀵煎叆鏁版嵁
+ * @param errorMap 閿欒鐨勪俊鎭�
+ * @param needRowIndexList 闇�瑕佸啓鍏ョ殑鏁版嵁鐨勮鍙�
+ * @param titleRowData 鏍囬琛�
+ *
+ * @return 閿欒鐨別xcel鏂囦欢锛屾病鏈夐敊璇細杩斿洖绌�
+ */
+ private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
+ Map<String,String> errorMap,
+ List<String> needRowIndexList,List<String> titleRowData){
+ if(CollectionUtils.isEmpty(errorMap)){
+ return "";
+ }
+ Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
+ LinkedList<WriteExcelData> errorDataList = new LinkedList<>();
+ errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ //閿欒淇℃伅鍦ㄦ渶鍚�
+ errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
+ }
+ Integer[] newRowIndex = new Integer[]{1};
+ errorMap.forEach((index,error)->{
+ //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
+ SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
+ if(rowData!=null){
+ errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
+ rowData.getData().forEach((colIndex,value)->{
+ errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
+ });
+ newRowIndex[0]++;
+ }
+ });
+ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption(errorDataList);
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName,eo);
+ return excelFileName;
+ }
+
+ /**
+ * 瑙f瀽棰勭敵璇锋暟鎹拰鍒嗙被鐨勫睘鎬ц浆鎹㈡ā鏉縮s
+ */
+ public List<PreApplyDataTrans> readAttrTransfTemplate(String templateXml) throws Exception{
+ templateXml = StringUtils.isEmpty(templateXml)?"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<datas systemid=\"oa0001\">\n" +
+ "\t<data type=\"wupin\">\n" +
+ "\t\t<attr systemkey=\"code01\" mdmkey=\"key01\"/>\n" +
+ "\t\t<attr systemkey=\"code02\" mdmkey=\"key02\"/>\n" +
+ "\t</data>\n" +
+ "</datas>":templateXml;
+
+ List<PreApplyDataTrans> preApplyDataTransList = new ArrayList<PreApplyDataTrans>();
+ Document document = DocumentHelper.parseText(templateXml);
+ Element datas_element = document.getRootElement();
+ List<Element> data_elements = datas_element.elements(MdmDuckingConstant.XML_DATA);
+ for (Element data_element:data_elements){
+ Attribute systemid_attr = data_element.attribute(MdmDuckingConstant.XML_SYSTEMID);
+ String systemid = systemid_attr==null?"":systemid_attr.getValue();//systemid
+
+ Attribute type_attr = data_element.attribute(MdmDuckingConstant.XML_TYPE);
+ String type = type_attr==null?"":type_attr.getValue();//type
+
+ List<Element> attr_elements = data_element.elements(MdmDuckingConstant.XML_ATTR);
+ Map<String,String> attrMap = new HashMap<String,String>();
+ for (Element attr_element:attr_elements){
+ Map<String,Object> dataMap = new HashMap<String,Object>();
+
+ Attribute systemkey_attr = attr_element.attribute(MdmDuckingConstant.XML_SYSTEMKEY);
+ String systemkey = systemkey_attr==null?"":systemkey_attr.getValue();//systemkey
+
+ Attribute mdmkey_attr = attr_element.attribute(MdmDuckingConstant.XML_MDMKEY);
+ String mdmkey = mdmkey_attr==null?"":mdmkey_attr.getValue();//mdmkey
+
+ attrMap.put(systemkey,mdmkey);
+ PreApplyDataTrans p = new PreApplyDataTrans(systemid,type,attrMap);
+ preApplyDataTransList.add(p);
+ }
+ }
+ return preApplyDataTransList;
+ }
+
+
+ class PreApplyDataTrans{
+ private String systemid;
+ private String type;
+ private Map<String,String> attrMap;
+
+ public PreApplyDataTrans(String systemid, String type, Map<String, String> attrMap) {
+ this.systemid = systemid;
+ this.type = type;
+ this.attrMap = attrMap;
+ }
+
+ public String getSystemid() {
+ return systemid;
+ }
+
+ public void setSystemid(String systemid) {
+ this.systemid = systemid;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public Map<String, String> getAttrMap() {
+ return attrMap;
+ }
+
+ public void setAttrMap(Map<String, String> attrMap) {
+ this.attrMap = attrMap;
+ }
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingSeviceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingSeviceImpl.java
new file mode 100644
index 0000000..760c143
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingSeviceImpl.java
@@ -0,0 +1,531 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dao.DockingPreAttrMappingDaoI;
+import com.vci.ubcs.code.dao.DockingPreAttrRangeDaoI;
+import com.vci.ubcs.code.model.DockingPreAttrMappingDO;
+import com.vci.ubcs.code.model.DockingPreAttrRangeDO;
+import com.vci.ubcs.code.service.CodeClassifyTemplateAttrServiceI;
+import com.vci.ubcs.code.service.DockingPreAttrMappingSeviceI;
+import com.vci.ubcs.code.service.MdmEngineServiceI;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.exception.VciBaseException;
+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.OsEnumItemVO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.OsEnumServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.DockingPreAttrMappingDTO;
+import com.vci.ubcs.code.dto.DockingPreAttrRangeDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+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 javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class DockingPreAttrMappingSeviceImpl implements DockingPreAttrMappingSeviceI {
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 闆嗘垚灞炴�ф槧灏勯厤缃湇鍔�
+ */
+ @Resource
+ private DockingPreAttrMappingDaoI dockingPreAttrMappingDaoI;
+ /**
+ * 闆嗘垚灞炴�у彇鍊艰寖鍥撮厤缃湇鍔�
+ */
+ @Resource
+ private DockingPreAttrRangeDaoI dockingPreAttrRangeDODaoI;
+ /**
+ * 鍒嗙被鎿嶄綔鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceImpl codeClassifyService;
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 涓绘暟鎹紩鎿庣殑鏈嶅姟
+ */
+ @Autowired
+ private MdmEngineServiceI engineService;
+ /**
+ *鏋氫妇鏈嶅姟
+ */
+ @Autowired
+ private OsEnumServiceI osEnumService;
+ @Autowired
+ private CodeClassifyTemplateAttrServiceI codeClassifyTemplateAttrServiceI;
+
+ /***
+ * 灞炴�ф槧灏勫垪琛�
+ * @param conditionMap
+ * @param pageHelper
+ * @param type
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public DataGrid<DockingPreAttrMappingVO> gridAttrMappings(String clsfId, int type, Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+
+ }
+ VciBaseUtil.alertNotNull(clsfId,"鍒嗙被涓婚敭");
+ VciBaseUtil.alertNotNull(type,"鎿嶄綔绫诲瀷");
+ //VciBaseUtil.alertNotNull(templateOid,"妯℃澘涓婚敭");
+ if(conditionMap==null){
+ conditionMap=new HashMap<>();
+ }
+
+ /***
+ * 1.棣栧厛鍘绘ā鏉块噷鏌ヨ鏄惁鏈夊鍒犲睘鎬�
+ * 2.濡傛灉鏈夌殑璇濋渶瑕佹牎楠屽睘鎬х殑鍚嶇О鏄惁鏈夊彉鏇�
+ */
+ List<ClientBusinessObject> tempCBO=new ArrayList<>();
+ ClientBusinessObject clssCBO=new ClientBusinessObject();
+ // List<String> templateIds = VciBaseUtil.str2List(templateOid);
+ Map<String,String> cboOidMap=new HashMap<>();
+ String btmName= MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR;
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(clsfId);
+
+ if(StringUtils.isBlank(templateVO.getOid())){
+ return new DataGrid<>();
+ }
+ String templateOid=templateVO.getOid();
+ String clsfBtmName=MdmBtmTypeConstant.CODE_CLASSIFY;
+ String orderbyFiled="";
+ if(type==1) {//浠h〃鐨勬槸wrj
+ orderbyFiled="ordernum";
+ cboOidMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateVO.getOid()) + ")");
+ btmName=MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR;
+ clsfBtmName=MdmBtmTypeConstant.CODE_CLASSIFY;
+ }else{
+ orderbyFiled="codeattrseq";
+ cboOidMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOid) + ")");
+ btmName=MdmBtmTypeConstant.DOCKING_PRE_JMETAATRR;
+ clsfBtmName=MdmBtmTypeConstant.DOCKING_PRE_JCLASS;
+ }
+ //鎸夋ā鏉块『搴忓睍绀哄睘鎬�
+ PageHelper tempPageHelper=new PageHelper();
+ tempPageHelper = new PageHelper(-1);
+ tempPageHelper.addDefaultAsc(orderbyFiled);
+ tempCBO = boService.queryCBO(btmName,cboOidMap,tempPageHelper);
+ if(CollectionUtils.isEmpty(tempCBO)){
+ throw new VciBaseException("鏍规嵁妯℃澘涓婚敭鏈煡璇㈠埌鐩稿簲鐨勫睘鎬т俊鎭�");
+ }
+ clssCBO= boService.selectCBOByOid(clsfId,clsfBtmName);
+ if(clssCBO==null||StringUtils.isBlank(clssCBO.getOid())){
+ throw new VciBaseException("鏍规嵁鍒嗙被涓婚敭鏈煡璇㈠埌鍒嗙被淇℃伅");
+ }
+ pageHelper.addDefaultDesc("createTime");
+ //鏍规嵁婧愬垎绫籭d鍜屾ā鏉縤d鏌ヨ妯℃澘鏄犲皠鏁版嵁
+ // conditionMap.put("jsourceClsfId",clsfId);
+ conditionMap.put("jviewModeId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOid) + ")");
+
+ List<DockingPreAttrMappingDO> doList = dockingPreAttrMappingDaoI.selectByCondition(conditionMap,pageHelper);
+ Map<String/**涓枃鍚嶇О**/, DockingPreAttrMappingDO/**鏁版嵁瀵硅薄**/> dockingAttrmappingOidToMap = doList.stream().collect(Collectors.toMap(s -> s.getJmetaListId(), t -> t,(o1, o2)->o2));
+ List<DockingPreAttrMappingDO> newDockingPreAttrMappingDOS=new ArrayList<>();
+ ClientBusinessObject finalClssCBO = clssCBO;
+ tempCBO.stream().forEach(cbo ->{
+ DockingPreAttrMappingDO dockingPreAttrMappingDO=new DockingPreAttrMappingDO();
+ String oid=cbo.getOid();//灞炴�id
+ if(dockingAttrmappingOidToMap.containsKey(oid)){
+ dockingPreAttrMappingDO=dockingAttrmappingOidToMap.get(oid);
+ }else{
+ dockingPreAttrMappingDO.setOid(redisService.getUUIDEveryDay());
+ dockingPreAttrMappingDO.setJmetaListId(oid);//婧愮郴缁熺殑灞炴�id
+ dockingPreAttrMappingDO.setJdefaultValue("");//榛樿鍊�
+ dockingPreAttrMappingDO.setJsourceAttrKey(cbo.getId());//婧愮郴缁熷睘鎬у唴閮ㄥ悕绉�
+ dockingPreAttrMappingDO.setJsourceAttrName(cbo.getName());//婧愮郴缁熷睘鎬у悕绉�
+ dockingPreAttrMappingDO.setJsourceClsfId(clsfId);//婧愮郴缁熺殑鍒嗙被oid
+ dockingPreAttrMappingDO.setJsourceClsfName(finalClssCBO.getName());//婧愮郴缁熺殑鍒嗙被鍚嶇О
+ dockingPreAttrMappingDO.setJviewModeId(templateOid);//鏆傛椂涓嶅瓨,妯℃澘瑙嗗浘鐨刼id
+ dockingPreAttrMappingDO.setJviewModeName(templateVO.getName());//鏆傛椂涓嶅瓨锛屾ā鏉垮悕绉�
+ dockingPreAttrMappingDO.setJtargetAttrId("");//鐩爣绯荤粺灞炴�х郴id
+ dockingPreAttrMappingDO.setJtargetAttrName("");//鐩爣绯荤粺灞炴�у悕绉�
+ dockingPreAttrMappingDO.setJtargetAttrKey("");//鐩爣绯荤粺灞炴�у唴閮ㄥ��
+ dockingPreAttrMappingDO.setJtargetClsfId("");//鐩爣绯荤粺鍒嗙被oid
+ }
+ newDockingPreAttrMappingDOS.add(dockingPreAttrMappingDO);
+ } );
+
+ DataGrid<DockingPreAttrMappingVO> dataGrid=new DataGrid<DockingPreAttrMappingVO>();
+ if (!CollectionUtils.isEmpty(newDockingPreAttrMappingDOS)) {
+ dataGrid.setData(dockingPreAttrMappingDO2VOs(newDockingPreAttrMappingDOS));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreAttrMappingDaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /***
+ * 鑾峰彇灞炴�ф灇涓�
+ * @param conditionMap
+ * @param pageHelper
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public DataGrid<DockingPreAttrRangeVO> gridAttrRanges(String attrOid, int type, Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+ VciBaseUtil.alertNotNull(attrOid,"灞炴�т富閿�");
+ VciBaseUtil.alertNotNull(type,"鎿嶄綔绫诲瀷");
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ if(conditionMap==null){
+ conditionMap=new HashMap<>();
+ }
+ pageHelper.addDefaultDesc("createTime");
+ conditionMap.put("jmetaListId",attrOid);
+ List<DockingPreAttrRangeDO> doList =dockingPreAttrRangeDODaoI.selectByCondition(conditionMap,pageHelper);
+ Map<String/**鏋氫妇鍐呴儴鍚嶇О**/, DockingPreAttrRangeDO/**鏁版嵁瀵硅薄**/> dockingPreAttrRangeValueMap = doList.stream().collect(Collectors.toMap(s -> s.getJnumTextValue(), t -> t,(o1, o2)->o2));
+ CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO= codeClassifyTemplateAttrServiceI.getObjectByOid(attrOid);
+ String attrkey= codeClassifyTemplateAttrVO.getId();
+ Map<String,String> cboOidMap=new HashMap<>();
+ List<DockingPreAttrRangeDO> newDockingPreAttrRangeDO=new ArrayList<>();
+ if(type==1){
+ List<OsEnumItemVO> osEnumItemVOList= osEnumService.listEnumByAttriteKey(attrkey);
+ if(!CollectionUtils.isEmpty(osEnumItemVOList)) {
+ osEnumItemVOList.stream().forEach(osEnumItemVO -> {
+ DockingPreAttrRangeDO dockingPreAttrRangeDO = dockingPreAttrRangeValueMap.get(osEnumItemVO.getId());
+ if (!dockingPreAttrRangeValueMap.containsKey(osEnumItemVO.getId())) {
+ dockingPreAttrRangeDO = new DockingPreAttrRangeDO();
+ dockingPreAttrRangeDO.setOid(redisService.getUUIDEveryDay());
+ dockingPreAttrRangeDO.setJmetaListId(attrOid);//灞炴�id
+ dockingPreAttrRangeDO.setJnumText(osEnumItemVO.getName());//灞炴�ф灇涓炬樉绀哄��
+ dockingPreAttrRangeDO.setJnumTextValue(osEnumItemVO.getId());//鏋氫妇鍐呴儴鍊�
+ dockingPreAttrRangeDO.setJtargeNumText("");//閰嶇疆鐨勬樉绀哄��
+ dockingPreAttrRangeDO.setJtargeNumTextValue("");//閰嶇疆鐨勫唴閮ㄥ��
+ }
+ newDockingPreAttrRangeDO.add(dockingPreAttrRangeDO);
+ });
+ }
+ }
+ DataGrid<DockingPreAttrRangeVO> dataGrid=new DataGrid<>();
+ if (!CollectionUtils.isEmpty(newDockingPreAttrRangeDO)) {
+ dataGrid.setData(dockingPreAttrRangeDO2VOs(newDockingPreAttrRangeDO));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(dockingPreAttrRangeDODaoI.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /***
+ *淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
+ * @param dockingPreAttrMappingDTOS 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingDTO> dockingPreAttrMappingDTOS) throws VciBaseException {
+ List<DockingPreAttrMappingVO> dockingPreAttrMappingVOS=new ArrayList<>();
+ if(CollectionUtils.isEmpty(dockingPreAttrMappingDTOS)){
+ return new ArrayList<>();
+ }
+ /**
+ * 1.浼犻�掕繃鏉ョ殑鏈夊彲鑳戒富鏁版嵁妯℃澘鏂板灞炴�э紝杩欐牱鐨勯渶瑕佹坊鍔狅紝涔熸湁鍙兘鍒犻櫎鐨勫睘鎬э紝杩欐牱鐨勬槧灏勯渶瑕佸垹闄�
+ * 涔熸湁鏇存柊鐨勮繖鏍峰垯鏇存柊
+ */
+ List<DockingPreAttrMappingDO> newDockingPreAttrMappingDOS=new ArrayList<>();
+ List<String>oidList=new ArrayList<>();
+ List<String>attrIdList=new ArrayList<>();
+ List<String> attributeOidList=new ArrayList<>();
+ List<DockingPreAttrRangeDO> newDockingPreAttrRangeDTOList=new ArrayList<>();
+ dockingPreAttrMappingDTOS.stream().forEach(dockingPreAttrMappingDTO -> {
+ List<DockingPreAttrRangeDTO>dockingPreAttrRangeDTOList=dockingPreAttrMappingDTO.getDockingPreAttrRangeDTOS();
+ DockingPreAttrMappingDO dockingPreAttrMappingDO=new DockingPreAttrMappingDO();
+ oidList.add(dockingPreAttrMappingDTO.getOid());
+ if(!CollectionUtils.isEmpty(dockingPreAttrRangeDTOList)) {
+ attrIdList.add(dockingPreAttrMappingDTO.getJmetaListId());
+ List<DockingPreAttrRangeDO> dockingPreAttrRangeDOList = dockingPreAttrRangeDTO2DOs(dockingPreAttrRangeDTOList);
+ newDockingPreAttrRangeDTOList.addAll(dockingPreAttrRangeDOList);
+ }
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrMappingDTO, dockingPreAttrMappingDO);
+ newDockingPreAttrMappingDOS.add(dockingPreAttrMappingDO);
+ });
+ List<DockingPreAttrRangeDO> dockingPreAttrRangeDOList=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(attrIdList)) {
+ //鑾峰彇瀛樺湪鐨勫睘鎬у彇鍊艰寖鍥�.
+ dockingPreAttrRangeDOList = dockingPreAttrRangeDODaoI.selectByAttrOid(StringUtils.join(attrIdList, ","));
+ }
+ //鑾峰彇瀛樺湪鐨勫睘鎬ф槧灏�.
+ List<DockingPreAttrMappingDO> dataAttrMapping = dockingPreAttrMappingDaoI.selectByOid(StringUtils.join(oidList, ","));
+ Map<String/**oid**/,DockingPreAttrMappingDO/**灞炴�у璞�**/> allSaveAttrMappingMap = newDockingPreAttrMappingDOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
+ Map<String/**oid**/,DockingPreAttrMappingDO/**瀵硅薄**/> oldAttrMappingMap =dataAttrMapping.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ BatchCBO batchCbos = new BatchCBO();
+ //闇�瑕佹柊澧炵殑灞炴�ф槧灏�
+ List<DockingPreAttrMappingDO> needSaveCboList = newDockingPreAttrMappingDOS.stream().filter(cbo -> {
+ String oid =cbo.getOid();
+ return !oldAttrMappingMap.containsKey(oid);
+ }).collect(Collectors.toList());
+ if(needSaveCboList.size()>0) {
+ BatchCBO addCOB = dockingPreAttrMappingDaoI.batchInsert(needSaveCboList);
+ batchCbos.copyFromOther(addCOB);
+ }
+ Map<String/**oid**/,DockingPreAttrMappingDO/**瀵硅薄**/> saveAttrMappingMap = needSaveCboList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛岄渶瑕佹洿鏂扮殑灞炴�ф槧灏�
+ List<DockingPreAttrMappingDO> needEditCboList = newDockingPreAttrMappingDOS.stream().filter(cbo -> {
+ String oid =cbo.getOid();
+ return !saveAttrMappingMap.containsKey(oid);
+ }).collect(Collectors.toList());
+ if(needEditCboList.size()>0) {
+ List<DockingPreAttrMappingDO> editCboList=new ArrayList<>();
+ needEditCboList.stream().forEach(cbo->{
+ String oid=cbo.getOid();
+ if(oldAttrMappingMap.containsKey(oid)){
+ DockingPreAttrMappingDO dockingPreAttrMappingDO= oldAttrMappingMap.get(oid);
+ dockingPreAttrMappingDO.setJtargetAttrKey(cbo.getJtargetAttrKey());
+ dockingPreAttrMappingDO.setJtargetAttrName(cbo.getJtargetAttrName());
+ dockingPreAttrMappingDO.setJtargetAttrId(cbo.getJtargetAttrId());
+ dockingPreAttrMappingDO.setJtargetClsfId(cbo.getJtargetClsfId());
+ dockingPreAttrMappingDO.setJdefaultValue(cbo.getJdefaultValue());
+ editCboList.add(dockingPreAttrMappingDO);
+ }
+ });
+ BatchCBO editCOB = dockingPreAttrMappingDaoI.batchUpdate(editCboList);
+ batchCbos.copyFromOther(editCOB);
+ }
+ //闇�瑕佸垹闄ょ殑灞炴�ф槧灏�
+ List<String> deleteIdList=new ArrayList<>();
+ dataAttrMapping.stream().forEach(cbo -> {
+ String oid =cbo.getOid();
+ if(!allSaveAttrMappingMap.containsKey(oid)){
+ deleteIdList.add(oid);
+ }
+ });
+ if(deleteIdList.size()>0) {
+ BatchCBO deleteCBO = dockingPreAttrMappingDaoI.batchDeleteByOids(deleteIdList);
+ batchCbos.copyFromOther(deleteCBO);
+ }
+ //鍙栧�艰寖鍥村鐞�
+ if(!CollectionUtils.isEmpty(newDockingPreAttrRangeDTOList)) {
+ Map<String/**oid**/, DockingPreAttrRangeDO/**灞炴�у璞�**/> allSaveAttrAttrRangeDOMap =newDockingPreAttrRangeDTOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
+ Map<String/**oid**/, DockingPreAttrRangeDO/**瀵硅薄**/> oldSaveAttrAttrRangeDOMap = dockingPreAttrRangeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
+ //闇�瑕佹柊澧炵殑灞炴�у彇鍊艰寖鍥�
+ List<DockingPreAttrRangeDO> needSaveRangeCboList = newDockingPreAttrRangeDTOList.stream().filter(cbo -> {
+ String oid = cbo.getOid();
+ return !oldSaveAttrAttrRangeDOMap.containsKey(oid);
+ }).collect(Collectors.toList());
+ if(needSaveRangeCboList.size()>0) {
+ BatchCBO addRangeCOB = dockingPreAttrRangeDODaoI.batchInsert(needSaveRangeCboList);
+ batchCbos.copyFromOther(addRangeCOB);
+ }
+ //闇�瑕佹洿鏂扮殑灞炴�у彇鍊艰寖鍥�
+ Map<String/**oid**/, DockingPreAttrRangeDO/**瀵硅薄**/> saveRangeMap = needSaveRangeCboList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t, (o1, o2) -> o2));
+ List<DockingPreAttrRangeDO> needEditRangeCboList = newDockingPreAttrRangeDTOList.stream().filter(cbo -> {
+ String oid = cbo.getOid();
+ return !saveRangeMap.containsKey(oid);
+ }).collect(Collectors.toList());
+
+ if(needEditRangeCboList.size()>0) {
+ List<DockingPreAttrRangeDO> editCboList=new ArrayList<>();
+ needEditRangeCboList.stream().forEach(cbo->{
+ String oid=cbo.getOid();
+ if(oldSaveAttrAttrRangeDOMap.containsKey(oid)){
+ DockingPreAttrRangeDO dockingPreAttrRangeDO= oldSaveAttrAttrRangeDOMap.get(oid);
+ dockingPreAttrRangeDO.setJtargeNumText(cbo.getJtargeNumText());
+ dockingPreAttrRangeDO.setJtargeNumTextValue(cbo.getJtargeNumTextValue());
+ editCboList.add(dockingPreAttrRangeDO);
+ }
+ });
+ BatchCBO editRangeCOB = dockingPreAttrRangeDODaoI.batchUpdate(editCboList);
+ batchCbos.copyFromOther(editRangeCOB);
+ }
+ //闇�瑕佸垹闄ょ殑灞炴�у彇鍊艰寖鍥�
+ List<String> deleteRangeIdList = new ArrayList<>();
+ dockingPreAttrRangeDOList.stream().forEach(cbo -> {
+ String oid = cbo.getOid();
+ if (!allSaveAttrAttrRangeDOMap.containsKey(oid)) {
+ deleteRangeIdList.add(oid);
+ }
+ });
+ if(deleteIdList.size()>0) {
+ BatchCBO deleteRangeCBO = dockingPreAttrRangeDODaoI.batchDeleteByOids(deleteIdList);
+ batchCbos.copyFromOther(deleteRangeCBO);
+ }
+ }
+
+ WebUtil.setPersistence(true);
+ this.boService.persistenceBatch(batchCbos);//鏇存敼鏁版嵁
+ return dockingPreAttrMappingVOS;
+ }
+
+ /***
+ * 鏍规嵁鏉′欢鏌ヨ灞炴�ф槧灏勪俊鎭�
+ * @param conditionMap
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public List<DockingPreAttrMappingVO> selectAttrMappings(Map<String, String> conditionMap) throws VciBaseException {
+ List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
+ VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingPreAttrMappingDO.class);
+ queryWrapperForDO.setConditionMap(conditionMap);
+ List<DockingPreAttrMappingDO> dockingPreAttrMappingDOS=dockingPreAttrMappingDaoI.selectByWrapper(queryWrapperForDO);
+ List<String> attributOids=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(dockingPreAttrMappingDOS)){
+ dockingPreAttrMappingDOS.stream().forEach(dockingPreAttrMappingDO -> {
+ String attrOid= dockingPreAttrMappingDO.getJmetaListId();
+ attributOids.add(attrOid);
+ });
+ dockingPreAttrMappingVOList= dockingPreAttrMappingDO2VOs(dockingPreAttrMappingDOS);
+ Map<String/**oid**/,DockingPreAttrMappingVO/**瀵硅薄**/> attrMappingMap = dockingPreAttrMappingVOList.stream().collect(Collectors.toMap(s -> s.getJmetaListId(), t -> t,(o1, o2)->o2));
+
+ VciQueryWrapperForDO queryWrapperForDO2 = new VciQueryWrapperForDO(DockingPreAttrRangeDO.class);
+ Map<String,String> condtionMap=new HashMap<>();
+ condtionMap.put("jmetaListId", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(attributOids.toArray(new String[]{})) + ")");
+ queryWrapperForDO.setConditionMap(conditionMap);
+ List<DockingPreAttrRangeDO> dockingPreAttrRangeDOS=dockingPreAttrRangeDODaoI.selectByWrapper(queryWrapperForDO2);
+ Map<String,List<DockingPreAttrRangeVO>> attribueOidMap=new HashMap<>();
+ if(!CollectionUtils.isEmpty(dockingPreAttrRangeDOS)){
+ dockingPreAttrRangeDOS.stream().forEach(dockingPreAttrRangeDO -> {
+ String attributeOid= dockingPreAttrRangeDO.getJmetaListId();
+ List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS=new ArrayList<>();
+ dockingPreAttrRangeVOS.add(dockingPreAttrRangeDO2VO(dockingPreAttrRangeDO));
+ if(attribueOidMap.containsKey(attributeOid)){
+ List<DockingPreAttrRangeVO> oldDockingPreAttrRangeVOS= attribueOidMap.get(attributeOid);
+ dockingPreAttrRangeVOS.addAll(oldDockingPreAttrRangeVOS);
+ }
+ attribueOidMap.put(attributeOid,dockingPreAttrRangeVOS);
+ });
+ }
+ if(!CollectionUtils.isEmpty(attribueOidMap)){
+ attribueOidMap.keySet().forEach(attoributeOid->{
+ List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList= attribueOidMap.get(attoributeOid);
+ if(attrMappingMap.containsKey(attoributeOid)){
+ DockingPreAttrMappingVO dockingPreAttrMappingVO= attrMappingMap.get(attoributeOid);
+ dockingPreAttrMappingVO.setDockingPreAttrRangeVOS(dockingPreAttrRangeVOList);
+ }
+ });
+ }
+ }
+ return dockingPreAttrMappingVOList;
+ }
+
+ /***
+ * 灞炴�ф灇涓惧璞¤浆鎹�
+ * @param doList
+ * @return
+ */
+ private List<DockingPreAttrRangeDO> dockingPreAttrRangeDTO2DOs(List<DockingPreAttrRangeDTO> doList) {
+ List<DockingPreAttrRangeDO> voList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(doList)){
+ for(DockingPreAttrRangeDTO s: doList){
+ DockingPreAttrRangeDO doBO = dockingPreAttrRangeDTO2DO(s);
+ if(doBO != null){
+ voList.add(doBO);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /***
+ * 灞炴�ф灇涓炬槧灏�
+ * @param dockingPreAttrRangeDTO
+ * @return
+ */
+ private DockingPreAttrRangeDO dockingPreAttrRangeDTO2DO(DockingPreAttrRangeDTO dockingPreAttrRangeDTO) {
+ DockingPreAttrRangeDO dockingPreAttrRangeDO = new DockingPreAttrRangeDO();
+ if(dockingPreAttrRangeDTO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrRangeDTO,dockingPreAttrRangeDO);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ }
+ return dockingPreAttrRangeDO;
+ }
+
+ /***
+ * 灞炴�ф灇涓惧璞¤浆鎹�
+ * @param doList
+ * @return
+ */
+ private List<DockingPreAttrRangeVO> dockingPreAttrRangeDO2VOs(List<DockingPreAttrRangeDO> doList) {
+ List<DockingPreAttrRangeVO> voList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(doList)){
+ for(DockingPreAttrRangeDO s: doList){
+ DockingPreAttrRangeVO vo = dockingPreAttrRangeDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /***
+ * 灞炴�ф灇涓炬槧灏�
+ * @param dockingPreAttrRangeDO
+ * @return
+ */
+ private DockingPreAttrRangeVO dockingPreAttrRangeDO2VO(DockingPreAttrRangeDO dockingPreAttrRangeDO) {
+ DockingPreAttrRangeVO vo = new DockingPreAttrRangeVO();
+ if(dockingPreAttrRangeDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrRangeDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ }
+ return vo;
+ }
+
+ /***
+ * 灞炴�ф槧灏勫璞¤浆鎹�
+ * @param doList
+ * @return
+ */
+ private List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOs(List<DockingPreAttrMappingDO> doList) {
+ List<DockingPreAttrMappingVO> voList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(doList)){
+ for(DockingPreAttrMappingDO s: doList){
+ DockingPreAttrMappingVO vo = dockingPreAttrMappingDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ private DockingPreAttrMappingVO dockingPreAttrMappingDO2VO(DockingPreAttrMappingDO dockingPreAttrMappingDO) {
+ DockingPreAttrMappingVO vo = new DockingPreAttrMappingVO();
+ if(dockingPreAttrMappingDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(dockingPreAttrMappingDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ }
+ return vo;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
new file mode 100644
index 0000000..11c8248
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -0,0 +1,2758 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
+import com.vci.ubcs.code.enumpack.CodeUseButtonPositionTypeEnum;
+import com.vci.ubcs.code.lifecycle.CodeDefaultLC;
+import com.vci.ubcs.code.model.CodeClassifyTemplateAttrDO;
+import com.vci.ubcs.code.model.CodeClassifyTemplateDO;
+import com.vci.code.service.*;
+import com.vci.ubcs.code.utils.DateUtils;
+import com.vci.corba.common.VCIError;
+import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.frameworkcore.pagemodel.SmUserVO;
+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.constant.RegExpConstant;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import com.vci.starter.web.enumpck.UserSecretEnum;
+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.toolmodel.DateConverter;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.web.dto.BaseModelDTO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.pageModel.*;
+import com.vci.web.service.*;
+import com.vci.web.service.impl.FormulaServiceImpl;
+import com.vci.web.service.impl.OsEnumServiceImpl;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
+import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import org.springblade.code.service.*;
+import org.springblade.code.vo.pagemodel.*;
+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 java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
+
+import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.web.constant.EnumIdConstant.LC_STATUS_SUBFIX;
+
+/**
+ * 涓绘暟鎹紩鎿庢湇鍔�
+ *
+ * @author weidy
+ * @date 2022-2-22
+ */
+@Service
+public class MdmEngineServiceImpl implements MdmEngineServiceI {
+
+ /**
+ * 蹇呰緭
+ */
+ public static final String REQUIRED_CHAR = "*";
+ /**
+ * 鏇挎崲瀛楃
+ */
+ public static final String SPECIAL_CHAR = "VCI";
+ /**
+ * 妯℃澘鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeClassifyTemplateServiceI templateService;
+
+ /**
+ * 妯℃澘鎸夐挳鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateButtonServiceI templateButtonService;
+
+ /**
+ * 鍒嗙被鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeClassifyServiceI classifyService;
+
+ /**
+ * 涓氬姟鏁版嵁鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 鍏紡鐨勬湇鍔�
+ */
+ @Autowired
+ private FormulaServiceImpl formulaService;
+
+ /**
+ * 鏋氫妇鐨勬湇鍔�
+ */
+ @Autowired
+ private OsEnumServiceI enumService;
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ /**
+ * 缂栫爜瑙勫垯鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeRuleServiceI ruleService;
+
+ /**
+ * 鍒嗙被鐮佸�肩殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyValueServiceI classifyValueService;
+
+ /**
+ * 鍏抽敭灞炴�х殑閰嶇疆
+ */
+ @Autowired
+ private CodeKeyAttrRepeatRuleServiceI keyRuleService;
+
+
+ /**
+ * 鍔熻兘鎸夐挳鐨勬湇鍔�
+ */
+ @Autowired
+ private SmOperationServiceI operationService;
+
+ /**
+ * 鐢熸垚缂栫爜鐨勬湇鍔�
+ */
+ @Autowired
+ private MdmProductCodeServiceI productCodeService;
+
+ /**
+ * 闃舵鐨勬湇鍔�
+ */
+ @Autowired
+ private CodePhaseAttrServiceI phaseAttrService;
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 瀵嗙骇鐨勬湇鍔�
+ */
+ @Autowired
+ private WebSecretServiceI secretService;
+
+ /**
+ * 鍙緭鍙��
+ */
+ @Autowired
+ private BdSelectInputCharServiceI charService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 鐩镐技椤规煡璇㈣鍒�
+ */
+ @Autowired
+ private CodeResembleRuleServiceI resembleRuleService;
+
+ /**
+ * 灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private OsAttributeServiceI attributeService;
+
+ /**
+ * 鐢ㄦ埛鏌ヨ鐨勬湇鍔�
+ */
+ @Autowired
+ private SmUserQueryServiceI userQueryService;
+
+ /**
+ * 妯℃澘灞炴�х殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyTemplateAttrServiceI templateAttrService;
+
+ /**
+ * 鎷疯礉鐨勭増鏈�
+ */
+ public static final String COPY_FROM_VERSION = "copyfromversion";
+
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳
+ *
+ * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
+ * @param functionId 鍔熻兘鐨勭紪鍙�
+ * @return UI鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) {
+ VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�");
+ MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
+ uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
+ if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
+ List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
+ if (operationVOS == null) {
+ operationVOS = new ArrayList<>();
+ }
+ //鏌ヨ鎵╁睍鎸夐挳
+ List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid);
+ if (!CollectionUtils.isEmpty(buttonVOS)) {
+ for (int i = 0; i < buttonVOS.size(); i++) {
+ CodeButtonVO buttonVO = buttonVOS.get(i);
+ SmOperationVO operationVO = new SmOperationVO();
+ operationVO.setModuleNo(functionId);
+ operationVO.setUniqueFlag(buttonVO.getId());
+ operationVO.setName(buttonVO.getName());
+ operationVO.setAlias(operationVO.getName());
+ operationVO.setExecuteJs(buttonVO.getExecutejs());
+ operationVO.setIconCls(buttonVO.getIconcls());
+ operationVOS.add(operationVO);
+ }
+ }
+ uiInfoVO.setButtons(operationVOS);
+ }
+ return uiInfoVO;
+ }
+
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫昏幏鍙杣i鐩稿叧鐨勫唴瀹癸紙涓嶅寘鍚寜閽級
+ *
+ * @param codeClassifyOid 涓婚搴撶殑鍒嗙被鐨勪富閿�
+ * @return UI鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getTableDefineByClassifyOid(String codeClassifyOid) {
+ VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�");
+ return getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
+ }
+
+ /**
+ * 浣跨敤妯℃澘鏄剧ず瀵硅薄杞崲涓鸿〃鏍肩殑淇℃伅锛堝寘鍚墿灞曠殑鎸夐挳锛�
+ *
+ * @param templateVO 妯℃澘鐨勪俊鎭�
+ * @return UI鐩稿叧鐨勫唴瀹癸紙浠呭寘鍚〃鏍间俊鎭級
+ */
+ private MdmUIInfoVO getTableDefineByTemplateVO(CodeClassifyTemplateVO templateVO) {
+ //鍏堢湅杩欎釜鍒嗙被鏈韩鏄惁鏈夋ā鏉�
+ MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+ uiInfoVO.setTemplateVO(templateVO);
+ //鎴戜滑闇�瑕佸皢妯℃澘杞崲涓鸿〃鏍肩浉鍏崇殑鏄剧ず淇℃伅
+ uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(),false));
+ //闇�瑕佸幓鐪嬫墿灞曠殑鎸夐挳,鍙湁鍒楄〃閲岄潰鏈韩鎵嶆坊鍔犺繘鍘伙紝宸ュ叿鏍忎笂鐨勫崟鐙幏鍙�
+ List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true);
+ if (!CollectionUtils.isEmpty(buttonVOS)) {
+ //鎴戜滑瑕佸垎寮�涓烘寜閽紝杩樻槸鍦ㄦ搷浣滃垪閲岄潰
+ List<CodeClassifyTemplateButtonVO> tableButtonVOs = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TABLE.getValue().equalsIgnoreCase(s.getButtonuse())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(tableButtonVOs)) {
+ UITableFieldVO optionFieldVO = new UITableFieldVO();
+ optionFieldVO.setField("options");
+ optionFieldVO.setTitle("鎿嶄綔");
+ optionFieldVO.setFieldType("text");
+ optionFieldVO.setOptionField(true);
+ List<KeyValue> buttons = new ArrayList<>();
+ Map<String, String> optionJsMap = new HashMap<>();
+ tableButtonVOs.stream().forEach(buttonVO -> {
+ KeyValue kv = new KeyValue();
+ kv.setKey(buttonVO.getId());
+ kv.setValue(buttonVO.getClassifybuttonoidName());
+ kv.setAttributes(VciBaseUtil.objectToMap(buttonVO));
+ buttons.add(kv);
+ optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecutejs());
+ });
+ optionFieldVO.setOptionJsMap(optionJsMap);
+ uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO);
+ }
+ }
+ return uiInfoVO;
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 妯℃澘鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) {
+ return getUsedTemplateByClassifyOid(codeClassifyOid, true);
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param hasAttr 鍖呭惈灞炴��
+ * @return 妯℃澘鐨勬樉绀哄璞�
+ */
+ @Override
+ public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) {
+ List<CodeClassifyTemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr);
+ return templateVOs.get(templateVOs.size() - 1);
+ }
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+ *
+ * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid) {
+ return getFormDefineByTemplateOid(codeClassifyTemplateOid, null);
+ }
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+ *
+ * @param codeClassifyTemplateOid 妯℃澘鐨勪富閿�
+ * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫讳富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyTemplateOid, String codeClassifyOid) {
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeClassifyTemplateOid);
+ MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+ uiInfoVO.setTemplateVO(templateVO);
+ uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
+ wrapperResemble(templateVO, uiInfoVO);
+ return uiInfoVO;
+ }
+
+ /**
+ * 灏佽鐩镐技椤规煡璇㈢殑鍒楄〃
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param uiInfoVO 椤甸潰鐨勪俊鎭�
+ */
+ private void wrapperResemble(CodeClassifyTemplateVO templateVO, MdmUIInfoVO uiInfoVO) {
+ List<CodeClassifyTemplateAttrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())
+ || VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) {
+ UITableDefineVO resembleTable = new UITableDefineVO();
+ resembleTable.setOid(templateVO.getOid());
+ resembleTable.setBtmType(templateVO.getBtmTypeId());
+ resembleTable.setDisplayQueryArea(false);
+ resembleTable.setPageVO(new UITablePageVO());
+ //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
+ List<UITableFieldVO> fieldVOList = new ArrayList<>();
+ resembleAttrList.forEach(attrVO -> {
+ UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false);
+ tableFieldVO.setHidden(false);
+ fieldVOList.add(tableFieldVO);
+ });
+ List<List<UITableFieldVO>> cols = new ArrayList<>();
+ cols.add(fieldVOList);
+ resembleTable.setCols(cols);
+ uiInfoVO.setResembleTableVO(resembleTable);
+ }
+ }
+
+ /**
+ * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+ *
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param executionId 娴佺▼鎵цid
+ * @param processUse 娴佺▼妯℃澘鐨勭敤閫�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse) {
+ VciBaseUtil.alertNotNull(templateOid, "妯℃澘涓婚敭", executionId, "娴佺▼鐨勬墽琛孖d", processUse, "娴佺▼妯℃澘鐢ㄩ��");
+ while (StringUtils.countMatches(executionId, ".") > 1) {
+ executionId = executionId.substring(0, executionId.lastIndexOf("."));
+ }
+ String sql = "select distinct (t.codetempattrOidArr)\n" +
+ "from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE) + " t\n" +
+ "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" +
+ "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'";
+ List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql);
+ if (CollectionUtils.isEmpty(tempAttrOidArr) || StringUtils.isBlank(tempAttrOidArr.get(0).getAttributeValue("codetempattroidarr"))) {
+ return new ArrayList<>();
+ }
+ return VciBaseUtil.str2List(tempAttrOidArr.get(0).getAttributeValue("codetempattroidarr"));
+ }
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid) {
+ MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+ CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
+ uiInfoVO.setTemplateVO(templateVO);
+ uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
+ wrapperResemble(templateVO, uiInfoVO);
+ return uiInfoVO;
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟
+ *
+ * @param codeClassifyOid 鍒嗙被涓婚敭
+ * @param phase 闃舵鐨勫悕绉�
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
+ */
+ @Override
+ public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String phase) {
+ MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+ CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
+ uiInfoVO.setTemplateVO(templateVO);
+ UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO,true);
+ List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase);
+ uiTableDefineVO.getCols().stream().forEach(list -> {
+ List<UITableFieldVO> visiableTableField=new ArrayList<>();
+ if(StringUtils.isNotBlank(phase)) {
+ visiableTableField = list.stream().filter(col ->
+ phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
+ (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
+ || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
+ )).collect(Collectors.toList());
+ }else{
+ visiableTableField= list.stream().filter(col ->
+ templateVO.getAttributes().stream().anyMatch(s ->
+ (!s.getReadonlyflag().equalsIgnoreCase("true")&& StringUtils.equalsIgnoreCase(col.getField(), s.getId())) ||
+ (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId()))
+ || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId()))
+ )).collect(Collectors.toList());
+ }
+
+ visiableTableField.stream().forEach(vo -> {
+ uiTableDefineVO.setHasEditor(true);
+ if ("refer".equalsIgnoreCase(vo.getFieldType())) {
+ setReferConfig2EditConfig(vo);
+ } else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
+ setComboxConfig2EditConfig(vo);
+ } else if (StringUtils.isNotBlank(vo.getDateFormate())){
+ vo.setEdit("date");
+ }else {
+ vo.setEdit(vo.getFieldType());
+ }
+ });
+ });
+ uiInfoVO.setTableDefineVO(uiTableDefineVO);
+ wrapperResemble(templateVO, uiInfoVO);
+ return uiInfoVO;
+ }
+
+ /**
+ * 鍔犺浇鎴愬弬鐓х殑淇敼閰嶇疆
+ * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄
+ */
+ private void setReferConfig2EditConfig(UITableFieldVO vo) {
+ if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())){
+ vo.getReferConfig().getWhere().keySet().forEach(key -> {
+ vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'");
+ });
+ }
+ if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())){
+ String parentValue = vo.getReferConfig().getParentValue();
+ parentValue ="\\" + parentValue.replaceAll("'","{vci-quote}").replaceAll("=","{vci-equals}");
+ vo.getReferConfig().setParentValue(parentValue);
+ }
+ String referConfig = vo.getReferConfig().toString()
+ .replaceAll("=",":")
+ .replaceAll("UITableCustomDefineVO","")
+ .replaceAll("UIFieldSortVO","")
+ .replaceAll("UITablePageVO","")
+ .replaceAll("UITableFieldVO","")
+ .replaceAll("UIFormReferVO","")
+ .replaceAll("\\{vci-equals}","=")
+ .replaceAll("\\{vci-quote}","\\\\'")
+ .replaceAll("'null'","null");
+ referConfig = referConfig + ",fieldMap:{" + vo.getQueryField() + ":'" + vo.getReferConfig().getValueField() + "'}";
+ vo.setEditConfig("{referConfig:" + referConfig + "}");
+ vo.setEdit(vo.getFieldType());
+ }
+
+ /**
+ * 鍔犺浇鎴愪笅鎷夋鐨勪慨鏀归厤缃�
+ * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄
+ */
+ private void setComboxConfig2EditConfig(UITableFieldVO vo) {
+ vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'");
+ if (!CollectionUtils.isEmpty(vo.getData())){
+ vo.setEditConfig(vo.getEditConfig()+", comboxConfig:");
+ for (int i = 0; i < vo.getData().size(); i++) {
+ KeyValue data = vo.getData().get(i);
+ if (i == vo.getData().size() -1){
+ vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'}]}");
+ }else if (i == 0){
+ vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
+ }else{
+ vo.setEditConfig(vo.getEditConfig() + "{attributes:"+data.getAttributes()+",key:'"+data.getKey()+"',value:'"+data.getValue()+"'},");
+ }
+ }
+ vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'");
+ }
+ vo.setEditConfig(vo.getEditConfig() + "}");
+ vo.setEdit(vo.getFieldType());
+ }
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹�
+ *
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return ui鐩稿叧鐨勫唴瀹�
+ */
+ @Override
+ public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid) {
+ return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid));
+ }
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
+ */
+ @Override
+ public List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid) {
+ CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
+ return listButtonInToolbarByTemplateOid(templateVO.getOid());
+ }
+
+ /**
+ * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
+ *
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭
+ */
+ @Override
+ public List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid) {
+ List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateOid, true);
+ if (CollectionUtils.isEmpty(buttonVOS)) {
+ return new ArrayList<>();
+ }
+ List<CodeClassifyTemplateButtonVO> toolbarButtons = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TOOLBAR.getValue().equalsIgnoreCase(s.getButtonuse())).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(toolbarButtons)) {
+ return new ArrayList<>();
+ }
+ List<CodeButtonVO> buttonVOList = new ArrayList<>();
+ for (int i = 0; i < toolbarButtons.size(); i++) {
+ buttonVOList.add(toolbarButtons.get(i).getButtonVO());
+ }
+ return buttonVOList;
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鐨勫璞�
+ * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級
+ */
+ @Override
+ public DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper) {
+ //1. 浣跨敤鍒嗙被鑾峰彇鎵�鏈夌殑涓嬬骇鍒嗙被锛岀劧鍚庢牴鎹垎绫绘煡璇㈠搴旂殑鏁版嵁
+ //2. 鍏ㄩ儴浣跨敤褰撳墠鍒嗙被鐨勫綋鍓嶆ā鏉挎潵灞曠ず鍐呭
+ //3. 濡傛灉妯℃澘涓婃湁鏋氫妇娉ㄥ叆锛岀粍鍚堣鍒欙紝鍜屽弬鐓х殑锛岄渶瑕佹墽琛岃浆鎹�
+ //4. 鏌ヨ鐨勬椂鍊欙紝鐩存帴浣跨敤codeclsfpath鏉ユ煡璇�
+ CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid);
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
+ if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmtypeid())) {
+ throw new VciBaseException("褰撳墠涓婚搴撳垎绫绘病鏈夐《灞傚垎绫伙紝鎴栬�呴《灞傚垎绫绘病鏈夎缃笟鍔$被鍨�");
+ }
+ String btmTypeId = topClassifyVO.getBtmtypeid();
+ if (StringUtils.isBlank(btmTypeId)) {
+ return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
+ }
+ if (conditionMap == null) {
+ conditionMap = new HashMap<>();
+ }
+ //pageHelper.addDefaultDesc("createTime");
+ pageHelper.addDefaultDesc("id");
+ if (!classifyService.checkHasChild(codeClassifyOid)) {
+ conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
+ } else {
+ conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
+ + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
+ "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
+ }
+ conditionMap.put("islastr", "1");
+ conditionMap.put("islastv", "1");
+ return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
+// List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList());
+// //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
+// List<String> finalSelectFieldList = selectFieldList;
+// List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
+// s -> StringUtils.isNotBlank(s.getReferbtmid())
+// &&
+// (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT)))
+// ).collect(Collectors.toList());
+// if(!CollectionUtils.isEmpty(referAttrVOs)){
+// for (int i = 0; i < referAttrVOs.size(); i++) {
+// selectFieldList.add(referAttrVOs.get(i).getId() + ".name");
+// }
+// }
+// //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
+// DataGrid<Map<String,String>> dataGrid = boService.queryGridByBo(btmTypeId, conditionMap, pageHelper, selectFieldList);
+// //鎴戜滑闇�瑕佷娇鐢ㄦā鏉挎潵杞崲
+// if(!CollectionUtils.isEmpty(dataGrid.getData())){
+// wrapperData(dataGrid.getData(),templateVO,finalSelectFieldList,false);
+// }
+// return dataGrid;
+ }
+
+ /**
+ * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴��
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉瀵硅薄
+ * @return 鏁版嵁鍒楄〃
+ */
+ @Override
+ public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
+ CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
+ List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
+ DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
+ List<Map<String, String>> dataList = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(maps)) {
+ maps.stream().forEach(map -> {
+ Map<String, String> data = new HashMap<>();
+ map.forEach((key, value) -> {
+ data.put(((String) key).toLowerCase(Locale.ROOT), (String) value);
+ });
+ dataList.add(data);
+ });
+ }
+ dataGrid.setData(dataList);
+ if (!CollectionUtils.isEmpty(dataList)) {
+ wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
+ dataGrid.setTotal(boService.queryCountBySql(sqlBO.getSqlCount(), new HashMap<>()));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞�
+ * @return sql鐨勭浉鍏充俊鎭�
+ */
+ @Override
+ public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
+ //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞�
+ //鍙傝�僔ciQueryWrapper鏉ュ鐞�
+ //1. 鎵惧埌鎵�鏈夌殑瀛楁锛�
+ Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
+
+ //鎵�鏈夌殑鍙傜収鐨勫瓧娈�
+ Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>();
+ List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getReferbtmid()) || StringUtils.isNotBlank(s.getReferConfig())
+ ).collect(Collectors.toList());
+ Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new HashMap<>();
+ if (!CollectionUtils.isEmpty(referAttrVOs)) {
+ referAttrVOs.parallelStream().forEach(attrVO -> {
+ UIFormReferVO referVO = null;
+ if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class);
+ } else {
+ referVO = new UIFormReferVO();
+ referVO.setReferType(attrVO.getReferbtmid());
+ referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
+ referVO.setTextField("name");
+ }
+
+ String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+ String referTableNick = attrVO.getId() + "0";
+ String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId();
+ joinTableList.put(attrVO.getId(), left);
+ String referShowField = attrVO.getId() + "Name";
+ List<String> textFields = VciBaseUtil.str2List(referVO.getTextField());
+ String showFieldInSource = "";
+ if (textFields.contains("name")) {
+ showFieldInSource = "name";
+ } else {
+ showFieldInSource = textFields.get(0);
+ }
+ referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource);
+ selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
+ });
+ }
+ Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
+ if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
+ selectFieldList.add(attrId);
+ }
+ });
+ if (!selectFieldList.contains(MdmEngineConstant.CODE_FIELD)) {
+ selectFieldList.add(MdmEngineConstant.CODE_FIELD);
+ }
+ if (!selectFieldList.contains(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD)) {
+ selectFieldList.add(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD);
+ }
+ if (!selectFieldList.contains(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD)) {
+ selectFieldList.add(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD);
+ }
+ if (!selectFieldList.contains(MdmEngineConstant.CODE_FULL_PATH_FILED)) {
+ selectFieldList.add(MdmEngineConstant.CODE_FULL_PATH_FILED);
+ }
+
+ //澶勭悊鏌ヨ鏉′欢
+ //TODO 楠岃瘉sql娉ㄥ叆
+ List<String> andSql = new ArrayList<>();
+ List<String> orSql = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ Map<String, String> orConditionMap = new HashMap<>();
+ Map<String, String> andCondtionMap = new HashMap<>();
+ //鍏堝垎绂籵r鐨勬煡璇㈡潯浠讹紝鍙﹀褰撴煡璇㈡潯浠舵槸绌虹殑鏃跺�欎篃涓嶆煡璇�
+ conditionMap.forEach((k, v) -> {
+ if (StringUtils.isNotBlank(v)) {
+ if (v.startsWith(QueryOptionConstant.OR)) {
+ orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length()));
+ } else {
+ andCondtionMap.put(k, v);
+ }
+ }
+ });
+
+ andCondtionMap.forEach((k, v) -> {
+ andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+ });
+ orConditionMap.forEach((k, v) -> {
+ orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+ });
+ }
+ //缁勫悎璧锋潵
+ StringBuilder andSb = new StringBuilder();
+ andSql.stream().forEach(s -> {
+ andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE);
+ });
+
+ String andString = andSb.toString().trim();
+ String endWithSql = QueryOptionConstant.AND;
+ if (andString.endsWith(endWithSql)) {
+ andString = andString.substring(0, andString.length() - endWithSql.length());
+ }
+
+ String orString = orSql.stream().collect(Collectors.joining(" or "));
+ String whereSql = "";
+ if (StringUtils.isNotBlank(orString)) {
+ if (StringUtils.isBlank(andString)) {
+ andString = " 1 = 1 ";
+ }
+ whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE;
+ } else {
+ whereSql = andString + SPACE;
+ }
+ if (attrVOMap.keySet().contains("secretgrade")) {
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ if (userSecret == null || userSecret == 0) {
+ userSecret = secretService.getMinUserSecret();
+ }
+ whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
+ }
+ String tableName = VciBaseUtil.getTableName(btmType);
+ String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
+ + " from " + tableName + SPACE + "t" + SPACE
+ + joinTableList.values().stream().collect(Collectors.joining(SPACE))
+ + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ //鐪嬬湅鎺掑簭
+ String orderSql = pageHelper.getOrderSql("t");
+ sql += (orderSql == null ? "" : orderSql);
+ String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= "
+ + (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1);
+ String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql;
+ String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE))
+ + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
+ CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO();
+ sqlBO.setTableName(tableName);
+ sqlBO.setJoinTable(joinTableList);
+ sqlBO.setNickName("t");
+ sqlBO.setPageHelper(pageHelper);
+ sqlBO.setSqlHasPage(sqlHasPage);
+ sqlBO.setSqlCount(sqlCount);
+ sqlBO.setSqlUnPage(sql);
+ return sqlBO;
+ }
+
+
+ /**
+ * 绌烘牸
+ */
+ public static final String SPACE = " ";
+
+ /**
+ * 缁勫悎鏌ヨ鏉′欢鐨剆ql
+ *
+ * @param key 瀛楁
+ * @param value 鍚嶅瓧
+ * @param referFieldMap 鍙傜収鐨勫瓧娈�
+ * @param attrVOMap 灞炴�х殑鏄犲皠
+ * @return Sql璇彞
+ */
+ private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+ if (key.endsWith("_begin")) {
+ //璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
+ String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
+ if (referFieldMap.containsKey(field)) {
+ //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+ return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE;
+ } else {
+ return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap);
+ }
+ } else if (key.endsWith("_end")) {
+ //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
+ String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
+ if (referFieldMap.containsKey(field)) {
+ //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+ return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE;
+ } else {
+ return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap);
+ }
+ } else {
+ if (referFieldMap.containsKey(key)) {
+ //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝
+ String selectKey = referFieldMap.get(key);
+ return getSqlByValue(selectKey, value, null);
+ } else {
+ return getSqlByValue(key, value, attrVOMap);
+ }
+ }
+
+ }
+
+ /**
+ * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒�
+ *
+ * @param selectKey 鏌ヨ鐨勫瓧娈�
+ * @param value 鍊�
+ * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠
+ * @return sql閲岀殑鍊�
+ */
+ private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+ StringBuilder sql = new StringBuilder();
+ if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
+ sql.append("t.");
+ }
+ if (value.startsWith(QueryOptionConstant.IN)) {
+ sql.append(selectKey)
+ .append(SPACE)
+ .append("in")
+ .append(SPACE)
+ .append("(")
+ .append(value.replace(QueryOptionConstant.IN, ""))
+ .append(")");
+ } else if (value.startsWith(QueryOptionConstant.NOTIN)) {
+ sql.append(selectKey)
+ .append(SPACE)
+ .append("not in")
+ .append(SPACE)
+ .append("(")
+ .append(value.replace(QueryOptionConstant.NOTIN, ""))
+ .append(")");
+ } else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) {
+ value = value.replace(QueryOptionConstant.NOTEQUAL, "");
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.NOTEQUAL)
+ .append(SPACE)
+ .append(value);
+ } else if (value.startsWith(QueryOptionConstant.MORETHAN)) {
+ value = value.replace(QueryOptionConstant.MORETHAN, "");
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.MORETHAN)
+ .append(SPACE)
+ .append(value);
+ } else if (value.startsWith(QueryOptionConstant.MORE)) {
+ value = value.replace(QueryOptionConstant.MORE, "");
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.MORE)
+ .append(SPACE)
+ .append(value);
+ } else if (value.startsWith(QueryOptionConstant.LESSTHAN)) {
+ value = value.replace(QueryOptionConstant.LESSTHAN, "");
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.LESSTHAN)
+ .append(SPACE)
+ .append(value);
+ } else if (value.startsWith(QueryOptionConstant.LESS)) {
+ value = value.replace(QueryOptionConstant.LESS, "");
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.LESS)
+ .append(SPACE)
+ .append(value);
+ } else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) {
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(" is not null");
+ } else if (value.startsWith(QueryOptionConstant.ISNULL)) {
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(" is null");
+ } else if (value.contains("*")) {
+ //璇存槑鏄痩ike锛屾垨鑰卨efe like ,right like
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+ sql.append(selectKey)
+ .append(SPACE)
+ .append("like")
+ .append(SPACE)
+ // .append("'")
+ .append(value.replace("*", "%"))
+ // .append("'")
+ .append(SPACE);
+ } else {
+ value= value.replace(SPECIAL_CHAR,REQUIRED_CHAR);
+ value = getStringValueInWhere(selectKey, value, attrVOMap);
+
+ sql.append(selectKey)
+ .append(SPACE)
+ .append(QueryOptionConstant.EQUAL)
+ .append(SPACE)
+ .append(value);
+ }
+ sql.append(SPACE);
+ return sql.toString();
+ }
+
+ /**
+ * 榛樿鐨勬椂闂存牸寮�
+ */
+ private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss";
+
+ /**
+ * 鏃ユ湡鏍煎紡
+ */
+ private static final String DATE_FORMAT = "yyyy-mm-dd";
+ /**
+ * 鍙槸sql
+ */
+ public static final String ONLY = "${vcionly}";
+
+ /**
+ * 鑾峰彇鏌ヨ鏉′欢涓殑鍊肩殑锛屽鐞嗕笉鍚岀殑绫诲瀷
+ *
+ * @param value 鍊�
+ * @param field 瀛楁鍚嶇О
+ * @return 鏃ユ湡鎴栬�呮椂闂存牸寮忎細鍖呮嫭to_date锛屽瓧绗︿覆浼氬姞'
+ */
+ private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+ if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null
+ || !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) {
+ //璇存槑鍙兘鏄寚瀹氱殑鏌愪釜鏉′欢锛岀洿鎺ヨ繑鍥�
+ if (value.startsWith(ONLY)) {
+ value = value.replace(ONLY, "");
+ }
+ if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
+ return value;
+ }
+ if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) {
+ //鏄弬鐓�
+ return "'" + value + "'";
+ } else {
+ return value;
+ }
+ } else {
+ //鐪嬬湅鏄笉鏄繖涓璞¢噷鐨勫睘鎬�
+ if (attrVOMap.containsKey(field)) {
+ VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributedatatype());
+ if ("ts".equalsIgnoreCase(field)) {
+ return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')";
+ }
+ DateConverter dateConverter = new DateConverter();
+ if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) {
+ //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�.
+ dateConverter.setAsText(value);
+ return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')";
+ } else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) {
+ dateConverter.setAsText(value);
+ return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')";
+ } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum)
+ || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum)
+ || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) {
+ return value;
+ } else {
+ return "'" + value + "'";
+ }
+ } else {
+ if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
+ return value;
+ }
+ return "'" + value + "'";
+ }
+ }
+
+ }
+
+ /**
+ * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭
+ * @param dataMap 鏁版嵁鐨勫唴瀹�
+ * @param templateVO 妯℃澘鐨勬樉绀�
+ */
+ @Override
+ public void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO){
+ List<String> booleanAttributes = templateVO.getAttributes().stream().filter(s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributedatatype())).map(s -> s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(booleanAttributes)){
+ dataMap.stream().forEach(data -> {
+ booleanAttributes.stream().forEach(attrId->{
+ if(data.containsKey(attrId)){
+ String value = data.get(attrId);
+ data.put(attrId, BooleanEnum.TRUE.getValue().equalsIgnoreCase(value)?"鏄�":"鍚�");
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+ *
+ * @param dataMap 鏁版嵁鐨勬槧灏�
+ * @param templateVO 妯℃澘鐨勫睘鎬�
+ * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
+ * @param form 琛ㄥ崟閲屼娇鐢�
+ */
+ @Override
+ public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
+ Collection<String> onlySelectAttrIdList, boolean form) {
+ if (onlySelectAttrIdList == null) {
+ onlySelectAttrIdList = new ArrayList<>();
+ }
+ //鍏堣浆鎹竴涓嬫椂闂存牸寮�
+ List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList());
+ List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getCodedateformat()) &&
+ (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+ ).collect(Collectors.toList());
+ //鏋氫妇鐨勫唴瀹�
+ List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter(
+ s -> (StringUtils.isNotBlank(s.getEnumid()) || StringUtils.isNotBlank(s.getEnumString()))
+ &&
+ (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+ ).collect(Collectors.toList());
+
+ List<String> userIds = new ArrayList<>();
+ dataMap.stream().forEach(data -> {
+ //澶勭悊鏃堕棿
+ if (!form) {
+ //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮�
+ wrapperDateFormat(dateFormatAttrVOs, data);
+ }
+ //澶勭悊鏋氫妇
+ wrapperEnum(enumAttrVOs, data);
+ String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
+ String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,"");
+ if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
+ && StringUtils.isBlank(copyFromVersion)
+ ) {
+ data.put(VciQueryWrapperForDO.ID_FIELD, "******");
+ }
+ data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus));
+ if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
+ && StringUtils.isNotBlank(copyFromVersion)){
+ data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�");
+ }
+ if (data.containsKey("creator")) {
+ userIds.add(data.get("creator"));
+ }
+ if (data.containsKey("lastmodifier")) {
+ userIds.add(data.get("lastmodifier"));
+ }
+ });
+ if (!CollectionUtils.isEmpty(userIds)) {
+ Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ dataMap.stream().forEach(data -> {
+ String creator = data.getOrDefault("creator", null);
+ if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
+ data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
+ }
+ String lastmodifier = data.getOrDefault("lastmodifier", null);
+ if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
+ data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
+ }
+ });
+ }
+ }
+
+ /**
+ * 澶勭悊鏃堕棿鏍煎紡
+ *
+ * @param dateFormatAttrVOs 鏃堕棿鏍煎紡鐨勫睘鎬�
+ * @param data 褰撳墠琛屾暟鎹�
+ */
+ private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) {
+ if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) {
+ dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> {
+ String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT);
+ String oldValue = data.getOrDefault(attrId, null);
+ if (StringUtils.isNotBlank(oldValue)) {
+ DateConverter dateConverter = new DateConverter();
+ try {
+ dateConverter.setAsText(oldValue);
+ Date value = dateConverter.getValue();
+ if (value != null) {
+ data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodedateformat()));
+ }
+ } catch (Throwable e) {
+ //杞崲鍙兘鏈夐棶棰橈紝杩欏氨浣跨敤鍘熸湰瀛樺偍鐨勫��
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * 澶勭悊鏋氫妇鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊�
+ *
+ * @param enumAttrVOs 鏋氫妇灞炴��
+ * @param data 褰撳墠琛屾暟鎹�
+ */
+ private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) {
+ //澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫��
+ if (!CollectionUtils.isEmpty(enumAttrVOs)) {
+ enumAttrVOs.stream().forEach(enumAttrVO -> {
+ String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
+ String oldValue = data.getOrDefault(attrId, null);
+ if (StringUtils.isNotBlank(oldValue)) {
+ List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
+ String newValue = oldValue;
+ KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null);
+ if (keyValue != null) {
+ newValue = keyValue.getValue();
+ }
+ data.put(attrId + "Text", newValue);
+ }
+ });
+ }
+ }
+
+ /**
+ * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
+ *
+ * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
+ * @return 涓嬫媺閫夐」
+ */
+ @Override
+ public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
+ List<KeyValue> comboboxKVs;
+ if (StringUtils.isNotBlank(attrVO.getEnumString())) {
+ comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
+ } else {
+ comboboxKVs = enumService.getEnum(attrVO.getEnumid());
+ }
+ return comboboxKVs;
+ }
+
+ /**
+ * 澶勭悊缁勫悎瑙勫垯鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊�
+ *
+ * @param compAttrVOs 缁勫悎瑙勫垯灞炴��
+ * @param data 褰撳墠琛屾暟鎹�
+ */
+ private void wrapperComponentRule(Collection<CodeClassifyTemplateAttrVO> compAttrVOs, Map<String, String> data) {
+ if (!CollectionUtils.isEmpty(compAttrVOs)) {
+ compAttrVOs.stream().forEach(attrVO -> {
+ String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+ //鐢ㄥ叕寮忓幓璁$畻
+ //鍏堢敤褰撳墠鏁版嵁鏇挎崲涓�涓�
+ String calculatedValue = formulaService.getValueByFormula(data, attrVO.getComponentrule());
+ data.put(attrId, calculatedValue);
+ });
+ }
+ }
+
+
+ /**
+ * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭�
+ *
+ * @param oid 涓婚敭
+ * @param templateOid 妯℃澘鐨勪富閿�
+ * @return 鏁版嵁鐨勫唴瀹�
+ */
+ @Override
+ public BaseResult<Map<String, String>> getDataByOid(String oid, String templateOid) {
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
+ //涓轰簡闃叉妯℃澘涓婄殑涓氬姟绫诲瀷涓庡垎绫讳笂涓嶅搴�
+ CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid());
+ String btmId = topClassifyVO.getBtmtypeid();
+ //鏌ヨ鏁版嵁
+ Map<String, String> conditionMap = WebUtil.getOidQuery(oid);
+ CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
+ //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
+ List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage());
+ if (CollectionUtils.isEmpty(cbos)) {
+ throw new VciBaseException("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵");
+ }
+ Map<String, String> data = new HashMap<>();
+ ClientBusinessObject cbo = cbos.get(0);
+ WebUtil.copyValueToMapFromCbos(cbo, data);
+ List<Map<String, String>> dataList = new ArrayList<>();
+ dataList.add(data);
+ wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
+ BaseResult<Map<String, String>> result = BaseResult.success(data);
+ //鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬�
+ String copy = cbo.getCopyFromVersion();
+ if (StringUtils.isBlank(copy)) {
+ copy = cbo.getAttributeValue("copyfromversion");
+ }
+ if (StringUtils.isNotBlank(copy)) {
+ //璇存槑鏈夊彉鏇寸殑鍐呭
+
+ CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1));
+ //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
+ List<ClientBusinessObject> oldCbos = boService.queryByOnlySql(oldSqlBO.getSqlUnPage());
+ if (!CollectionUtils.isEmpty(oldCbos)) {
+ Map<String, String> newData = new HashMap<>();
+ WebUtil.copyValueToMapFromCbos(cbo, newData);
+ Map<String, String> oldData = new HashMap<>();
+ WebUtil.copyValueToMapFromCbos(oldCbos.get(0), oldData);
+ Map<String, String> difFieldMap = new HashMap<>();
+ newData.forEach((key, value) -> {
+ String oldValue = oldData.getOrDefault(key, "");
+ if (value == null) {
+ value = "";
+ }
+ if (oldValue == null) {
+ oldValue = "";
+ }
+ if (!value.equalsIgnoreCase(oldValue)) {
+ difFieldMap.put(key, oldValue);
+ }
+ });
+ List<Map<String, String>> difFieldList = new ArrayList<>();
+ difFieldList.add(difFieldMap);
+ result.setData(difFieldList);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 缂栫爜瑙勫垯鐨勫唴瀹�
+ */
+ @Override
+ public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) {
+ VciBaseUtil.alertNotNull(codeClassifyOid, "鍒嗙被鐨勪富閿�");
+ CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid);
+ String codeRuleOid = classifyVO.getCoderuleoid();
+ if (StringUtils.isBlank(codeRuleOid)) {
+ //寰�涓婃壘
+ CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ return getCodeRuleByClassifyFullInfo(fullInfo);
+ }
+ //鎴戜滑鏌ヨ缂栫爜瑙勫垯
+ return ruleService.getObjectHasSecByOid(codeRuleOid);
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
+ *
+ * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @return 瑙勫垯鐨勫唴瀹�
+ */
+ @Override
+ public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) {
+ //寰�涓婃壘
+ String codeRuleOid = "";
+ if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCoderuleoid())) {
+ codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCoderuleoid();
+ } else {
+ if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) {
+ //璇存槑宸茬粡鏄渶楂樺眰绾�,
+ throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
+ }
+ List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList());
+ //浠庢渶楂樼殑level寮�濮嬭幏鍙�
+ for (int i = 0; i < parentClassifyVOList.size(); i++) {
+ CodeClassifyVO record = parentClassifyVOList.get(i);
+ if (StringUtils.isNotBlank(record.getCoderuleoid())) {
+ codeRuleOid = record.getCoderuleoid();
+ break;
+ }
+ }
+ if (StringUtils.isBlank(codeRuleOid)) {
+ throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
+ }
+ }
+ return ruleService.getObjectHasSecByOid(codeRuleOid);
+ }
+
+ /**
+ * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹�
+ *
+ * @param classifySecOid 鐮佹鐨勪富閿�
+ * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鐮佸�肩殑鍐呭
+ */
+ @Override
+ public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) {
+ return classifyValueService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid);
+ }
+
+ /**
+ * 鐢宠鍗曚竴缂栫爜
+ *
+ * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+ * @return 杩斿洖缂栫爜鐨勫唴瀹�
+ */
+ @Override
+ public String addSaveCode(CodeOrderDTO orderDTO) {
+ VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
+ orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
+ //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+ checkSecValueOnOrder(ruleVO, orderDTO);
+ //2.鍒ゆ柇蹇呰緭椤�
+ checkRequiredAttrOnOrder(templateVO, orderDTO);
+ //3.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ //4.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //5.鏍¢獙瑙勫垯
+ checkVerifyOnOrder(templateVO, orderDTO);
+ //6.鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+ //7.鏋氫妇杞崲
+ checkEnumOnOrder(templateVO, orderDTO);
+ //8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ //9.鐢熸垚缂栫爜鐨勪俊鎭�
+ ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
+ //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
+ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
+ //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
+ cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
+ //end -- modify by lihang @20220407
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+
+ //澶囨敞
+ cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
+
+ cboList.add(cbo);
+ List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
+ batchSaveSelectChar(templateVO, cboList);
+ return codeList.size() > 0 ? codeList.get(0) : "";
+ }
+
+ /**
+ * 淇敼涓婚搴撴暟鎹�
+ *
+ * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
+ */
+ @Override
+ public void editSaveCode(CodeOrderDTO orderDTO) {
+ VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
+ orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
+ List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
+ if (CollectionUtils.isEmpty(cbos)) {
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ ClientBusinessObject cbo = cbos.get(0);
+ if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
+ throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+ }
+ if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
+ throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
+ }
+
+ //娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲
+
+ //1. 鍒ゆ柇蹇呰緭椤�
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ checkRequiredAttrOnOrder(templateVO, orderDTO);
+ //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //4.鏍¢獙瑙勫垯
+ checkVerifyOnOrder(templateVO, orderDTO);
+ //5.鍒ゆ柇鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+ //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+ checkEnumOnOrder(templateVO, orderDTO);
+ //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+ cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
+ cbo.setName(orderDTO.getName()==null?"":orderDTO.getName());
+ try {
+ cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+ cbo.setAttributeValue("name", orderDTO.getName());
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ //淇敼鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
+ BatchCBO batchCBO = new BatchCBO();
+ batchCBO.getUpdateCbos().add(cbo);
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ cboList.add(cbo);
+ boService.persistenceBatch(batchCBO);
+ batchSaveSelectChar(templateVO, cboList);
+ }
+
+ /**
+ * 鍗囩増鐨勪富棰樺簱鏁版嵁
+ *
+ * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭
+ */
+ @Override
+ public void upSaveCode(CodeOrderDTO orderDTO) {
+ VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�",
+ orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
+ List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion()));
+ if (CollectionUtils.isEmpty(cbos)) {
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ ClientBusinessObject oldCbo = cbos.get(0);
+ if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) {
+ throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()});
+ }
+ //闇�瑕佸崌鐗�
+ ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation();
+ ClientBusinessObject cbo = null;
+ try {
+ //cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId());
+ cbo = cboOperation.reviseBusinessObject(oldCbo, "");
+ } catch (VCIError e) {
+ throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e);
+ }
+ //1. 鍒ゆ柇蹇呰緭椤�
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ checkRequiredAttrOnOrder(templateVO, orderDTO);
+ //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //4.鏍¢獙瑙勫垯
+ checkVerifyOnOrder(templateVO, orderDTO);
+ //5.鍒ゆ柇鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+ //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+ checkEnumOnOrder(templateVO, orderDTO);
+ //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+// cbo.setDescription(orderDTO.getDescription());
+// cbo.setName(orderDTO.getName());
+ cbo.setDescription(orderDTO.getDescription()==null?"":orderDTO.getDescription());
+ cbo.setName(orderDTO.getName()==null?"":orderDTO.getName());
+ try {
+ cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+ cbo.setAttributeValue("name", orderDTO.getName());
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
+ cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss"));
+ cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss"));
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ cboList.add(cbo);
+ try {
+ cboOperation.saveRevisionBuinessObject(cbo);
+ } catch (VCIError vciError) {
+ throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
+ }
+ batchSaveSelectChar(templateVO, cboList);
+ }
+
+ /**
+ * 淇濆瓨鍙緭鍙�夌殑淇℃伅
+ *
+ * @param templateVO 妯℃澘鐨勫璞�
+ * @param cboList 鏁版嵁鐨勫唴瀹�
+ */
+ @Override
+ public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList) {
+ if (templateVO != null && !CollectionUtils.isEmpty(cboList)) {
+ //鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜�
+ List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(selectAttrVOs)) {
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ selectAttrVOs.parallelStream().forEach(attrVO -> {
+ List<String> valuesList = new CopyOnWriteArrayList<>();
+ cboList.parallelStream().forEach(cbo -> {
+ String value = cbo.getAttributeValue(attrVO.getId());
+ if (StringUtils.isNotBlank(value)) {
+ valuesList.add(value);
+ }
+ });
+ if (!CollectionUtils.isEmpty(valuesList)) {
+ charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo);
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * 鍒犻櫎涓婚搴撴暟鎹�
+ *
+ * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿�
+ */
+ @Override
+ public void deleteCode(CodeDeleteBatchDTO deleteBatchDTO) {
+ VciBaseUtil.alertNotNull(deleteBatchDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", deleteBatchDTO.getOidList(), "鏁版嵁涓婚敭",
+ deleteBatchDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid());
+ //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
+ Collection<Collection<String>> oidCollection = VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList());
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ oidCollection.stream().forEach(oids -> {
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
+ List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap);
+ cboList.addAll(cbos);
+ });
+ if (CollectionUtils.isEmpty(cboList)) {
+ throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ List<ClientBusinessObject> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(editCBOs)) {
+ ClientBusinessObject cbo = editCBOs.get(0);
+ throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()});
+ }
+
+ //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
+ String userId = WebUtil.getCurrentUserId();
+ for (ClientBusinessObject clientBusinessObject:cboList){
+ String creator = clientBusinessObject.getCreator();
+ if(!userId.equalsIgnoreCase(creator)){
+ throw new VciBaseException("缂栫爜涓�"+clientBusinessObject.getId()+"鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�");
+ }
+
+ }
+ BatchCBO batchCBO = new BatchCBO();
+ batchCBO.getDeleteCbos().addAll(cboList);
+ WebUtil.setPersistence(false);
+ batchCBO.copyFromOther(productCodeService.recycleCode(classifyFullInfo.getCurrentClassifyVO().getBtmtypeid(), deleteBatchDTO.getOidList()));
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ }
+
+ /**
+ * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
+ *
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param cbo 涓氬姟鏁版嵁
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param edit 鏄惁涓轰慨鏀�
+ */
+ private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, ClientBusinessObject cbo,
+ CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
+ boolean edit) {
+ String fullPath = "";
+ if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
+ fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
+ .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
+ } else {
+ fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
+ }
+ orderDTO.getData().forEach((key, value) -> {
+ if (!edit || (!boService.checkUnAttrUnEdit(key) &&
+ !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
+ try {
+ cbo.setAttributeValue(key, value);
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+ }
+ }
+ });
+ try {
+ cbo.setAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD, templateVO.getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED, fullPath);
+ if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
+ //鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝
+ if (StringUtils.isNotBlank(cbo.getLctId())) {
+ OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctId());
+ if (lifeCycleVO != null) {
+ cbo.setLcStatus(lifeCycleVO.getStartStatus());
+ } else {
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }
+ } else {
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }
+
+ }
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(MdmEngineConstant.SECRET_FIELD));
+ if (secret == 0 || !secretService.checkDataSecret(secret)) {
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(MdmEngineConstant.SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
+ }
+ } catch (Throwable e) {
+ logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
+ }
+ }
+
+
+ /**
+ * 杞崲缁勫悎瑙勫垯鐨勫��
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(compAttrVOMap)) {
+ Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
+
+ Map<String, String> dataLowMap = new HashMap<>();
+ if (!CollectionUtils.isEmpty(dataMap)) {
+ dataMap.forEach((key, value) -> {
+ dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
+ });
+ }
+ dataLowMap.putAll(orderDTO.getData());
+ compAttrVOMap.forEach((attrId, attrVO) -> {
+ dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentrule()));
+ });
+ dataLowMap.forEach((key, value) -> {
+ setValueToOrderDTO(orderDTO, key, value);
+ });
+ }
+ }
+
+ /**
+ * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
+ * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (classifyFullInfoBO.getTopClassifyVO() == null) {
+ //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
+
+ }
+ if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
+ classifyAttrVOMap.forEach((attrId, attrVO) -> {
+ //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
+ //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
+ CodeClassifyVO classifyVO = null;
+ if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
+ //鎸囧畾浜嗗眰绾х殑
+ //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
+ List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+ int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
+ if (classifyVOS.size() >= level && level > 0) {
+ classifyVO = classifyVOS.get(level - 1);
+ }
+ } else {
+ //褰撳墠鐨勫垎绫�
+ classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+ }
+ if (classifyVO == null) {
+ //璇存槑灞傜骇鏈夎
+ orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
+ // classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+ } else {
+ Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
+ String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
+ orderDTO.getData().put(attrId, value);
+ }
+ });
+ }
+ }
+
+ /**
+ * 杞崲鏃堕棿鐨勬牸寮�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodedateformat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value)) {
+ DateConverter dateConverter = new DateConverter();
+ dateConverter.setAsText(value);
+ value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
+ setValueToOrderDTO(orderDTO, attrId, value);
+ }
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙鏋氫妇鐨勫唴瀹�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
+ Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
+ enumAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value)) {
+ //鏈夊�兼墠鑳芥牎楠�
+ List<KeyValue> comboboxKVs = listComboboxItems(attrVO);
+ if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
+ throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
+ *
+ * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
+ * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+ */
+ private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
+ verifyAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())) {
+ //鏍¢獙姝e垯琛ㄨ揪寮�
+ throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
+ }
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙鍏抽敭灞炴��
+ *
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
+ * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+ */
+ private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+ CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+ //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+ //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+ Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<String, String> conditionMap = new HashMap<>();
+ boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+ ketAttrMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (value == null) {
+ value = "";
+ }
+ wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+ });
+
+ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
+ conditionMap.forEach((key, value) -> {
+ sql[0] += " and " + key + " = " + value;
+ });
+ if (StringUtils.isNotBlank(orderDTO.getOid())) {
+ //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
+ sql[0] += " and oid != '" + orderDTO.getOid() + "'";
+ } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
+ sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
+ }
+ sql[0] += " and islastR = '1' and islastV = '1' ";
+ if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
+ String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
+ String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
+ throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
+ }
+ }
+ }
+
+ /**
+ * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
+ *
+ * @param value 褰撳墠鐨勫��
+ * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param trim 鏄惁鍘婚櫎绌烘牸
+ * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓
+ * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙�
+ * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸
+ * @param conditionMap 鏌ヨ鏉′欢
+ */
+ @Override
+ public void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatRuleVO keyRuleVO, String attrId,
+ boolean trim, boolean ignoreCase, boolean ignoreWidth,
+ boolean trimAll, Map<String, String> conditionMap) {
+ boolean ignoreSpace = trim || trimAll;
+ if (StringUtils.isBlank(value)) {
+ //涓虹┖鐨勬椂鍊欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜�
+ conditionMap.put("t."+attrId, "null");
+ } else {
+ if (keyRuleVO != null) {
+ String queryKey = "";
+ String queryValue = "";
+
+ String temp = "";
+ if (ignoreCase && ignoreSpace && ignoreWidth) {
+ //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte(%s)) " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && ignoreSpace && !ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && !ignoreSpace && ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+ temp = "UPPER(to_single_byte(%s))";
+ } else if (!ignoreCase && ignoreSpace && ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte(%s) " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && !ignoreSpace && !ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = "UPPER(%s)";
+ } else if (!ignoreCase && !ignoreCase && ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+ temp = "to_single_byte(%s)";
+ } else if (!ignoreCase && ignoreSpace && !ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")");
+ } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = "%s";
+ }
+ queryKey = String.format(temp, "t."+attrId);
+ queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
+ conditionMap.put(queryKey, queryValue);
+ } else {
+ //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
+ conditionMap.put("t."+attrId, value);
+ }
+ }
+ }
+
+
+ /**
+ * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
+ *
+ * @param orderDTO 缂栫爜鐢宠瀵硅薄
+ * @param attrId 灞炴�х殑缂栧彿
+ * @return 鍊�
+ */
+ private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ String value = null;
+ if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)
+ || VciQueryWrapperForDO.SECRET_MANAGE_FIELD_MAP.containsKey(attrId)
+ || VciQueryWrapperForDO.REVISION_MANAGE_FIELD_MAP.containsKey(attrId)
+ || VciQueryWrapperForDO.LIFECYCLE_MANAGE_FIELD_MAP.containsKey(attrId)
+ || VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.containsValue(attrId)
+ ) {
+ value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
+ } else {
+ //璇存槑鏄嚜琛岄厤缃殑
+ //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
+ value = orderDTO.getData().getOrDefault(attrId, "");
+ }
+ return value;
+ }
+
+ /**
+ * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
+ *
+ * @param orderDTO 缂栫爜鐢宠瀵硅薄
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param value 鍊�
+ */
+ private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+ WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
+ } else {
+ orderDTO.getData().put(attrId, value);
+ }
+ }
+
+
+ /**
+ * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
+ s -> VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr()))
+ .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(requiredAttrMap)) {
+ requiredAttrMap.forEach((attrId, attrVO) -> {
+ //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
+ if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
+ throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
+ }
+ });
+ }
+ }
+
+
+ /**
+ * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
+ *
+ * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
+ * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
+ */
+ @Override
+ public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) {
+ List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter(
+ s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSectype())
+ || CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSectype())
+ || CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSectype())
+ || CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSectype())
+ || VciBaseUtil.getBoolean(s.getNullableFlag()))
+ ).map(CodeBasicSecVO::getOid).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(unSerialSecOidList)) {
+ if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) {
+ throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
+ }
+ if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid())
+ && StringUtils.isBlank(s.getSecValue()))) {
+ throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
+ }
+ }
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴��
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param phase 闃舵鐨勫悕绉�
+ * @return 灞炴�х殑鑻辨枃鍚嶇О
+ */
+ @Override
+ public List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase) {
+ CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid, false);
+ //鎵鹃樁娈�
+ return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase);
+ }
+
+ /**
+ * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return 鍒嗙被鏍�
+ */
+ @Override
+ public List<Tree> hasSelfClassifyTree(String codeClassifyOid) {
+ if (StringUtils.isBlank(codeClassifyOid)) {
+ return new ArrayList<>();
+ }
+ CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ //鏌ヨ瀛�
+ List<CodeClassifyVO> childrenClassifys = classifyService.listChildrenClassify(codeClassifyOid, true, "id", true);
+ Map<String, CodeClassifyVO> classifyVOMap = new HashMap<>();
+ classifyVOMap.putAll(Optional.ofNullable(fullInfo.getParentClassifyVOs()).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)));
+ classifyVOMap.putAll(Optional.ofNullable(childrenClassifys).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)));
+ TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(CodeClassifyServiceImpl.PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
+ return revisionModelUtil.doList2Trees(classifyVOMap.values().stream().collect(Collectors.toList()), treeWrapperOptions, (CodeClassifyVO s) -> {
+ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+ .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+ });
+ }
+
+ /**
+ * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param codeTemplateOid 妯℃澘鐨勪富閿�
+ * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫��
+ */
+ @Override
+ public Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid) {
+ if (StringUtils.isBlank(codeClassifyOid) || StringUtils.isBlank(codeTemplateOid)) {
+ return new HashMap<>();
+ }
+ //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭�
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeTemplateOid);
+ //
+
+ CodeOrderDTO orderDTO = new CodeOrderDTO();
+ orderDTO.setData(new HashMap<>());
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ return orderDTO.getData();
+ }
+
+ /**
+ * 棰勮缁勫悎瑙勫垯
+ *
+ * @param orderDTO 棰勮鐨勪俊鎭紝鍖呭惈妯℃澘鐨勪富閿�
+ * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖
+ */
+ @Override
+ public Map<String, String> previewCompRule(CodeOrderDTO orderDTO) {
+ VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧淇℃伅", orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�");
+ //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭�
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ return orderDTO.getData();
+ }
+
+ /**
+ * 淇敼鐘舵��
+ *
+ * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
+ */
+ @Override
+ public void changeStatus(BaseModelDTO baseModelDTO) {
+ VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
+ List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
+ List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
+ //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈�
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
+ conditionMap.put("createcodebtm", baseModelDTO.getBtmname());
+ List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap);
+ // 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
+ if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
+ BatchCBO batchCBO = new BatchCBO();
+ batchCBO.getDeleteCbos().addAll(cboList);
+ boService.persistenceBatch(batchCBO);
+ } else {
+ lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
+ }
+ lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
+ }
+
+ /**
+ * 鐩镐技椤规煡璇�
+ *
+ * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
+ * @return 鏁版嵁鍒楄〃
+ */
+ @Override
+ public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) {
+ VciBaseUtil.alertNotNull(orderDTO, "鐢宠鐨勪俊鎭�", orderDTO.getCodeClassifyOid(), "鍒嗙被涓婚敭", orderDTO.getTemplateOid(), "妯℃澘涓婚敭");
+ CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO);
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
+ Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
+ if (CollectionUtils.isEmpty(attrVOs)) {
+ //閮芥病鏈夊睘鎬э紝鑲畾涓嶈兘鏌ヨ浜�
+ return new DataGrid<>();
+ }
+ Map<String, String> conditionMap = new HashMap<>();
+ //鎴戜滑棣栧厛鑾峰彇鏈夋病鏈夋煡璇㈣鍒�
+ CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
+ attrVOs.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (value == null) {
+ value = "";
+ }
+ wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
+ });
+
+ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ Map<String, String> andConditionMap = new HashMap<>();
+ andConditionMap.put("islastr", "1");
+ andConditionMap.put("islastv", "1");
+ if (StringUtils.isNotBlank(orderDTO.getOid())) {
+ andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
+ }
+ conditionMap.putAll(andConditionMap);
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultDesc("id");
+ return queryGrid(fullInfoBO.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, pageHelper);
+ }
+ return new DataGrid<>();
+ }
+
+ /**
+ * 灏佽鐩镐技椤规煡璇㈢殑鏌ヨ鏉′欢鐨勬槧灏�
+ *
+ * @param value 鍊�
+ * @param resembleRuleVO 鐩镐技椤硅鍒�
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param conditionMap 鏌ヨ鏉′欢
+ */
+ @Override
+ public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) {
+ boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+ if (StringUtils.isBlank(value)) {
+ //涓虹┖鐨勬椂鍊欏氨涓嶆煡璇㈠畠灏辨槸
+ } else {
+ String queryKey = "";
+ String queryValue = "";
+ boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag());
+ boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+ boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+ String temp = "";
+ if (ignoreCase && ignoreSpace && ignoreWidth) {
+ //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && ignoreSpace && !ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && !ignoreSpace && ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+ temp = "UPPER(to_single_byte('%s'))";
+ } else if (!ignoreCase && ignoreSpace && ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")");
+ } else if (ignoreCase && !ignoreSpace && !ignoreWidth) {
+ //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = "UPPER(%s)";
+ } else if (!ignoreCase && !ignoreCase && ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+ temp = "to_single_byte('%s')";
+ } else if (!ignoreCase && ignoreSpace && !ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")");
+ } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) {
+ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+ temp = "%s";
+ }
+ if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) {
+ List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter());
+ for (int i = 0; i < chars.size(); i++) {
+ String s = chars.get(i);
+ temp = "replace(" + temp + ",'" + s + "','')";
+ }
+ }
+ queryValue = String.format(temp, (trim ? value.trim() : value));
+ temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)");
+ queryKey = String.format(temp, "t."+attrId);
+ conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
+ }
+ }
+
+ /**
+ * 浣跨敤鍒嗙被涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+ *
+ * @param codeClassifyOid 鍒嗙被涓婚敭
+ * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+ */
+ @Override
+ public CodeResembleRuleVO getUseResembleRuleByClassifyOid(String codeClassifyOid) {
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+ return getUseResembleRule(classifyFullInfo, classifyFullInfo.getCurrentClassifyVO());
+ }
+
+ /**
+ * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒�
+ *
+ * @param fullInfoBO 绫诲叏閮ㄤ俊鎭�
+ * @param currentClassifyVO 褰撳墠鐨勫垎绫�
+ * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull
+ */
+ @Override
+ public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) {
+ if (currentClassifyVO == null) {
+ return null;
+ }
+ if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) {
+ //璇存槑宸茬粡瀛樺湪
+ return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid());
+ }
+ if (StringUtils.isBlank(currentClassifyVO.getParentcodeclassifyoid())) {
+ return null;
+ }
+ Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentcodeclassifyoid(), null));
+ }
+
+
+ /**
+ * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟瀹氫箟鐨勪俊鎭�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿紝涓虹┖鐨勬椂鍊欙紝鑾峰彇妯℃澘鎵�灞炵殑鍒嗙被涓婚敭.鐢ㄤ簬浜х敓鍒嗙被娉ㄥ叆
+ * @return 琛ㄦ牸鐨勪俊鎭�
+ */
+ private UIFormDefineVO wrapperFormDefineByTemplate(CodeClassifyTemplateVO templateVO, String codeClassifyOid) {
+ UIFormDefineVO formDefineVO = new UIFormDefineVO();
+ formDefineVO.setOid(templateVO.getOid());
+ formDefineVO.setBtmType(templateVO.getBtmTypeId());
+ if (StringUtils.isBlank(codeClassifyOid)) {
+ codeClassifyOid = templateVO.getCodeclassifyoid();
+ }
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+
+ List<UIFormItemVO> itemVOS = new ArrayList<>();
+ Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getAttributegroup())).collect(Collectors.groupingBy(s -> s.getAttributegroup()));
+ templateVO.getAttributes().forEach(attrVO -> {
+ UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
+ itemVOS.add(formItemVO);
+ });
+ //澶勭悊灞炴�у垎缁�
+ if (!CollectionUtils.isEmpty(attrGroupMap)) {
+ //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬�
+ for (String key : attrGroupMap.keySet()) {
+ List<CodeClassifyTemplateAttrVO> value = attrGroupMap.get(key);
+ //鎵惧埌杩欎釜鍒嗙粍鐨勫睘鎬х殑绗竴涓�
+ CodeClassifyTemplateAttrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrdernum().compareTo(o2.getOrdernum()))).findFirst().get();
+ //鎴戜滑鎵惧埌杩欎釜灞炴�у湪鏈�缁堢殑itemVOs閲岀殑浣嶇疆
+ UIFormItemVO lineVO = new UIFormItemVO();
+ lineVO.setField(attrVO.getId() + "_line");
+ lineVO.setType("line");
+ lineVO.setText(key);
+ //鎵句綅缃�
+ for (int i = 0; i < itemVOS.size(); i++) {
+ UIFormItemVO record = itemVOS.get(i);
+ if (record.getField().equalsIgnoreCase(attrVO.getId())) {
+ itemVOS.add(i, lineVO);
+ break;
+ }
+ }
+ }
+ }
+
+ CodeOrderDTO orderDTO = new CodeOrderDTO();
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ if (!CollectionUtils.isEmpty(orderDTO.getData())) {
+ orderDTO.getData().forEach((key, value) -> {
+ for (int i = 0; i < itemVOS.size(); i++) {
+ UIFormItemVO itemVO = itemVOS.get(i);
+ if (itemVO.getField().equalsIgnoreCase(key)) {
+ itemVO.setDefaultValue(value);
+ break;
+ }
+ }
+ });
+ }
+ formDefineVO.setItems(itemVOS);
+ //鏌ヨ鏄惁鏈夊垎绫绘敞鍏ョ殑
+ return formDefineVO;
+ }
+
+
+ /**
+ * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param forEdit 鏄惁鏄紪杈戞墍闇�
+ * @return 琛ㄦ牸鐨勪俊鎭�
+ */
+ private UITableDefineVO wrapperTableDefineByTemplate(CodeClassifyTemplateVO templateVO,boolean forEdit) {
+ //灏佽淇℃伅
+ UITableDefineVO tableDefineVO = new UITableDefineVO();
+ tableDefineVO.setOid(templateVO.getOid());
+ tableDefineVO.setBtmType(templateVO.getBtmTypeId());
+ tableDefineVO.setDisplayQueryArea(true);
+ //鍓嶇浼氶粯璁ゅ垎椤电殑淇℃伅
+
+ //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
+ List<UITableFieldVO> fieldVOList = new ArrayList<>();
+ Map<String, String> comboxOrReferFieldMap = new HashMap<>();
+
+ templateVO.getAttributes().forEach(attrVO -> {
+ UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,forEdit);
+ if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
+ comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
+ }
+ if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
+ comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
+ }
+ if(StringUtils.isNotBlank(tableFieldVO.getEdit())){
+ tableDefineVO.setHasEditor(true);
+ }
+ fieldVOList.add(tableFieldVO);
+ });
+ List<List<UITableFieldVO>> cols = new ArrayList<>();
+ cols.add(fieldVOList);
+ tableDefineVO.setCols(cols);
+ Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t));
+ //鏌ヨ灞炴��
+ List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryattrflag())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(queryAttrVOs)) {
+ List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
+ queryAttrVOs.stream().forEach(attrVO -> {
+ String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+ attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
+ if (fieldVOMap.containsKey(attrId)) {
+ queryFieldVOs.add(fieldVOMap.get(attrId));
+ }
+ });
+ tableDefineVO.setQueryColumns(queryFieldVOs);
+ }
+ //楂樼骇灞炴��
+ List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorqueryattrflag())).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) {
+ List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
+ seniorQueryAttrVOs.stream().forEach(attrVO -> {
+ String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+ attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrId).toLowerCase(Locale.ROOT);
+ if (fieldVOMap.containsKey(attrId)) {
+ queryFieldVOs.add(fieldVOMap.get(attrId));
+ }
+ });
+ tableDefineVO.setSeniorQueryColumns(queryFieldVOs);
+ }
+ return tableDefineVO;
+ }
+
+ /**
+ * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃�
+ *
+ * @param attrVO 妯℃澘灞炴��
+ * @param forEdit 鏄惁鏄紪杈戞墍闇�
+ * @return 琛ㄦ牸鐨勫瓧娈�
+ */
+ @Override
+ public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO,boolean forEdit) {
+ UITableFieldVO fieldVO = new UITableFieldVO();
+ if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
+ attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET);
+ }
+ fieldVO.setField(attrVO.getId());
+ fieldVO.setTitle(attrVO.getName());
+ fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
+ fieldVO.setSort(true);
+ fieldVO.setSortField(fieldVO.getField());
+ fieldVO.setQueryField(fieldVO.getField());
+ if (forEdit){
+ fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
+ }else {
+ fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTabledisplayflag()));
+ }
+ if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) {
+ fieldVO.setMinWidth(attrVO.getAttrTableWidth());
+ fieldVO.setWidth(attrVO.getAttrTableWidth());
+ }
+ //鐪嬬湅鏄惁鏈夋灇涓�
+ if ((StringUtils.isNotBlank(attrVO.getEnumString())
+ && !"[]".equalsIgnoreCase(attrVO.getEnumString())) ||
+ StringUtils.isNotBlank(attrVO.getEnumid())) {
+ fieldVO.setFieldType("combox");
+ fieldVO.setField(fieldVO.getField() + "Text");
+ fieldVO.setComboxKey(attrVO.getEnumid());
+ if (StringUtils.isNotBlank(attrVO.getEnumString())) {
+ //鎸囧畾鐨勪笅鎷夋鍐呭
+ fieldVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class));
+ if (StringUtils.isBlank(attrVO.getEnumid())) {
+ fieldVO.setComboxKey(fieldVO.getField() + "_data");
+ }
+ }else {
+ List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumid());
+ fieldVO.setData(osEnumItemVOList);
+ }
+ }
+ //鐪嬫槸鍚︽湁鍙傜収
+ if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ fieldVO.setFieldType("refer");
+ fieldVO.setQueryField(fieldVO.getField());
+ fieldVO.setField(fieldVO.getField() + "name");
+ fieldVO.setShowField(fieldVO.getField());
+ if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ //閰嶇疆鐨勫唴瀹�
+ fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class));
+ } else {
+ UIFormReferVO formReferVO = new UIFormReferVO();
+ formReferVO.setType("default");
+ formReferVO.setReferType(attrVO.getReferbtmid());
+ fieldVO.setReferConfig(formReferVO);
+ }
+ }
+ if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) {
+ fieldVO.setField("lcstatus_text");
+ }
+ Map<String, String> eventJsMap = new HashMap<>();
+ //瓒呴摼鎺ヤ笌妯℃澘鏄簰鏂�
+ if (StringUtils.isNotBlank(attrVO.getTablehref())) {
+ String event = fieldVO.getSortField() + "_href";
+ eventJsMap.put(event, attrVO.getTablehref());
+ fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}");
+ }
+ if (StringUtils.isNotBlank(attrVO.getTabledisplayjs())) {
+ //鐩存帴鍐檉unction(d){ return xxxxx;}
+ fieldVO.setTemplet(attrVO.getTabledisplayjs());
+ }
+ if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
+ fieldVO.setTemplet("function(d){return $webUtil.formateBoolean(d." + fieldVO.getField() + ");}");
+ }
+ fieldVO.setOptionJsMap(eventJsMap);
+ fieldVO.setStyle(attrVO.getTabledisplaystyle());
+ //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
+ fieldVO.setDateFormate(attrVO.getCodedateformat());
+ return fieldVO;
+ }
+
+ /**
+ * 瀵嗙骇鐨勫瓧娈�
+ */
+ public static final String SECRET_FILED = "secretgrade";
+
+ /**
+ * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
+ *
+ * @param attrVO 妯℃澘灞炴��
+ * @param btmType 涓氬姟绫诲瀷
+ * @return 琛ㄥ崟鐨勫瓧娈�
+ */
+ @Override
+ public UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) {
+ UIFormItemVO itemVO = new UIFormItemVO();
+ if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
+ attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET);
+ }
+ itemVO.setField(attrVO.getId());
+ itemVO.setText(attrVO.getName());
+ itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
+ if (VciBaseUtil.getBoolean(attrVO.getTextareaflag())) {
+ itemVO.setType("textarea");
+ }
+ if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ || VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ || VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
+ itemVO.setVerify("number");
+ }
+ itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadonlyflag()));
+ itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyattrflag()));
+ itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireflag()));
+ itemVO.setDefaultValue(attrVO.getDefaultvalue());
+ itemVO.setDateFormate(attrVO.getCodedateformat());
+ itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
+ itemVO.setVerify(attrVO.getVerifyrule());
+ itemVO.setPrefix(attrVO.getPrefixvalue());
+ itemVO.setSuffix(attrVO.getSuffixvalue());
+ itemVO.setTooltips(attrVO.getExplain());
+ itemVO.setSelectLibFlag(attrVO.getLibraryIdentification());
+ //鐪嬬湅鏄惁鏈夋灇涓�
+ if ((StringUtils.isNotBlank(attrVO.getEnumString())
+ && !"[]".equalsIgnoreCase(attrVO.getEnumString())) ||
+ StringUtils.isNotBlank(attrVO.getEnumid())) {
+ itemVO.setType("combox");
+ itemVO.setComboxKey(attrVO.getEnumid());
+ if (StringUtils.isNotBlank(attrVO.getEnumString())) {
+ //鎸囧畾鐨勪笅鎷夋鍐呭
+ itemVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class));
+ if (StringUtils.isBlank(attrVO.getEnumid())) {
+ itemVO.setComboxKey(itemVO.getField() + "_data");
+ }
+ }
+ }
+ //鐪嬫槸鍚︽湁鍙傜収
+ if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ itemVO.setType("refer");
+ itemVO.setShowField(itemVO.getField() + "name");
+ if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ //閰嶇疆鐨勫唴瀹�
+ itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class));
+ } else {
+ UIFormReferVO formReferVO = new UIFormReferVO();
+ formReferVO.setType("default");
+ formReferVO.setReferType(attrVO.getReferbtmid());
+ itemVO.setReferConfig(formReferVO);
+ }
+ }
+
+ //濡傛灉鏄粍鍚堣鍒欙紝鍒嗙被娉ㄥ叆鐨勶紝鏄剧ず涓哄彧璇�
+ if (StringUtils.isNotBlank(attrVO.getComponentrule())) {
+ itemVO.setReadOnly(true);
+ itemVO.setTooltips("鏈睘鎬т负缁勫悎瑙勫垯");
+ itemVO.setRequired(false);
+ }
+ if (StringUtils.isNotBlank(attrVO.getClassifyinvokeattr())) {
+ itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyinvokeeditflag()));
+ itemVO.setTooltips("鏈睘鎬ф槸鍒嗙被娉ㄥ叆");
+ itemVO.setRequired(false);
+ }
+
+ if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) {
+ //鏄敓鍛藉懆鏈熺姸鎬�
+ itemVO.setType("combox");
+ itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX);
+ }
+ return itemVO;
+ }
+
+ /**
+ * 灞炴�х被鍨嬩笌js涓殑瀛楁绫诲瀷鐨勬槧灏�
+ */
+ private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{
+ put(VciFieldTypeEnum.VTString.name(), "text");
+ put(VciFieldTypeEnum.VTInteger.name(), "text");
+ put(VciFieldTypeEnum.VTLong.name(), "text");
+ put(VciFieldTypeEnum.VTDouble.name(), "text");
+ put(VciFieldTypeEnum.VTClob.name(), "text");
+ put(VciFieldTypeEnum.VTBoolean.name(), "truefalse");
+ put(VciFieldTypeEnum.VTDateTime.name(), "datetime");
+ put(VciFieldTypeEnum.VTDate.name(), "datetime");
+ put(VciFieldTypeEnum.VTTime.name(), "datetime");
+ put(VciFieldTypeEnum.VTFilePath.name(), "file");
+ }};
+
+ /**
+ * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃
+ *
+ * @param oid 涓氬姟鏁版嵁涓婚敭
+ * @param btmName 涓氬姟绫诲瀷
+ * @param pass 鏄惁閫氳繃
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult markDataPassing(String oid, String btmName, Boolean pass) {
+ VciBaseUtil.alertNotNull(oid, "涓氬姟鏁版嵁涓婚敭", btmName, "涓氬姟绫诲瀷", pass, "鏍囪绫诲瀷");
+ boolean flag = false;
+ try {
+ ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
+ ClientBusinessObject data = operation.readBusinessObjectById(oid, btmName);
+ if (data == null || StringUtils.isBlank(data.getOid())) {
+ return BaseResult.fail(DATA_OID_NOT_EXIST);
+ }
+ data.setAttributeValue("passing", String.valueOf(pass));
+ flag = operation.updateBuinessObject(data);
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ if (flag) {
+ return BaseResult.success();
+ } else {
+ return BaseResult.fail("鏍囪澶辫触");
+ }
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹�
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param queryObject 鏌ヨ瀵硅薄
+ * @return 琛ㄦ牸鐨勬樉绀哄璞″��
+ */
+ @Override
+ public DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject) {
+ VciBaseUtil.alertNotNull(btmType, "涓氬姟绫诲瀷");
+ if (queryObject == null) {
+ queryObject = new BaseQueryObject();
+ }
+ if (queryObject.getConditionMap() == null) {
+ queryObject.setConditionMap(new HashMap<>());
+ }
+ Map<String, String> conditionMap = queryObject.getConditionMap();
+ PageHelper pageHelper = queryObject.getPageHelper();
+ if (!conditionMap.containsKey("oid")) {
+ throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
+ }
+ List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid"));
+ Map<String, String> oidMap = new HashMap<>();
+ if (conditionMap.get("oid").contains(",")) {
+ oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
+ } else {
+ oidMap.put("oid", conditionMap.get("oid"));
+ }
+ if (CollectionUtils.isEmpty(oidMap)) {
+ throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
+ }
+ List<ClientBusinessObject> cbos = boService.queryCBO(btmType, oidMap);
+ if (CollectionUtils.isEmpty(cbos)) {
+ throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�");
+ }
+ ClientBusinessObject cbo = cbos.get(0);
+ String templateOid = cbo.getAttributeValue("CODETEMPLATEOID");
+ Map<String, String> templateOidMap = new HashMap<>();
+ templateOidMap.put("oid", templateOid);
+ List<CodeClassifyTemplateDO> templateDOList = boService.queryObject(CodeClassifyTemplateDO.class, templateOidMap);
+ templateOidMap.clear();
+ templateOidMap.put("CLASSIFYTEMPLATEOID",templateOid);
+ List<CodeClassifyTemplateAttrDO> attrDOList = boService.queryObject(CodeClassifyTemplateAttrDO.class, templateOidMap);
+ if (CollectionUtils.isEmpty(templateDOList)) {
+ logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid);
+ throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘");
+ }
+ CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
+ templateVO.setAttributes(templateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
+ try {
+ if (oidList.size() > 1){
+ DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
+ List<Map<String,String>> allData = new ArrayList<>();
+ oidList.forEach(oid -> {
+ Map<String,String> condition = new HashMap<>();
+ condition.put("oid",oid);
+ DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
+ allData.addAll(dataGrid.getData());
+ });
+ allDataGrid.setData(allData);
+ return allDataGrid;
+ }else {
+ return queryGrid(btmType, templateVO, conditionMap, pageHelper);
+ }
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+ return null;
+ }
+ }
+
+ /**
+ * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹�
+ *
+ * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
+ * @return 鎵ц缁撴灉
+ */
+ @Override
+ public BaseResult batchUpdateCode(List<CodeOrderDTO> orderDTOList) {
+ VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�");
+ orderDTOList.forEach(orderDTO -> {
+ VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
+ orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+ });
+ Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ List<ClientBusinessObject> updateList = new ArrayList<>();
+ // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid());
+ Map<String,String> cboOidMap = new HashMap<>();
+ if (CollectionUtils.isEmpty(orderDTOMap.keySet())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")");
+ List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
+ if (CollectionUtils.isEmpty(cboList)){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ BatchCBO batchCBO = new BatchCBO();
+ CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
+ Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ orderDTOMap.keySet().stream().forEach(oid -> {
+ CodeOrderDTO orderDTO = orderDTOMap.get(oid);
+ ClientBusinessObject cbo = cboMap.get(oid);
+ if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
+ throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+ }
+ if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
+ throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
+ }
+ //1. 鍒ゆ柇蹇呰緭椤�
+ CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ checkRequiredAttrOnOrder(templateVO, orderDTO);
+ //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+ //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //4.鏍¢獙瑙勫垯
+ checkVerifyOnOrder(templateVO, orderDTO);
+ //5.鍒ゆ柇鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+ //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+ checkEnumOnOrder(templateVO, orderDTO);
+ //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+ cbo.setDescription(orderDTO.getDescription());
+ cbo.setName(orderDTO.getName());
+ try {
+ cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+ cbo.setAttributeValue("name", orderDTO.getName());
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ batchCBO.getUpdateCbos().add(cbo);
+ updateList.add(cbo);
+ });
+ boService.persistenceBatch(batchCBO);
+ batchSaveSelectChar(firstTemplateVO, cboList);
+ return BaseResult.success();
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔�
+ *
+ * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮�
+ * @param functionId 鍔熻兘鐨勭紪鍙�
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�)
+ */
+ @Override
+ public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) {
+ CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath);
+ if(classifyVO !=null){
+ return getUIInfoByClassifyOid(classifyVO.getOid(),functionId);
+ }
+ return null;
+ }
+
+ /**
+ * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔�
+ *
+ * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz
+ * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�)
+ */
+ @Override
+ public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) {
+ CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath);
+ if(classifyVO !=null){
+ return getFormDefineByClassifyOid(classifyVO.getOid());
+ }
+ return null;
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
new file mode 100644
index 0000000..a3bb336
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -0,0 +1,4016 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
+import com.vci.ubcs.code.lifecycle.CodeDefaultLC;
+import com.vci.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.vo.universalInter.attrmap.DataObjectVO;
+import com.vci.ubcs.code.vo.universalInter.attrmap.RowDatas;
+import com.vci.ubcs.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
+import com.vci.corba.common.VCIError;
+import com.vci.file.util.VciZipUtil;
+import com.vci.starter.poi.bo.*;
+import com.vci.starter.poi.util.ExcelUtil;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import com.vci.starter.web.enumpck.UserSecretEnum;
+import com.vci.starter.web.enumpck.VciFieldTypeEnum;
+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.toolmodel.DateConverter;
+import com.vci.starter.web.util.*;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.ubcs.code.service.*;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.pageModel.KeyValue;
+import com.vci.web.pageModel.OsLifeCycleVO;
+import com.vci.web.pageModel.UIFormReferVO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.WebSecretServiceI;
+import com.vci.web.service.impl.FormulaServiceImpl;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
+import com.vci.ubcs.code.dto.CodeExportAttrDTO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import org.springblade.code.service.*;
+import org.springblade.code.vo.pagemodel.*;
+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 plm.bs.bom.clientobject.ClientBusinessObject;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.stream.Collectors;
+
+
+/**
+ * 涓绘暟鎹鍏ュ鍑烘湇鍔�
+ * @author weidy
+ * @date 2022-3-6
+ */
+@Service
+public class MdmIOServiceImpl implements MdmIOServiceI {
+
+
+ @Value("${batchadd.exportattr.type:鍩烘湰淇℃伅}")
+ public String BATCHADD_EXCEPORT_ATTR_TYPE;
+
+
+ /**
+ * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+ */
+ @Autowired
+ private OsLifeCycleServiceI lifeCycleService;
+
+ @Autowired
+ private PlatformClientUtil platformClientUtil;
+ /**
+ * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉� 鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyProcessTempServiceI codeClassifyProcessTempService;
+ /**
+ * 涓婚搴撳垎绫荤殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceI classifyService;
+
+ @Autowired
+ private CodeClassifyTemplateServiceI templateServiceI;
+ /**
+ * 涓绘暟鎹紩鎿庣殑鏈嶅姟
+ */
+ @Autowired
+ private MdmEngineServiceI engineService;
+
+ /**
+ * 瑙勫垯鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeRuleServiceI ruleService;
+
+ /**
+ * 鏁版嵁鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 鍏紡鐨勬湇鍔�
+ */
+ @Autowired
+ private FormulaServiceImpl formulaService;
+
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 鍏抽敭灞炴��
+ */
+ public static final String KEY_ATTR_CHAR = "鈽�";
+
+ /**
+ * 瀛楁
+ */
+ public static final String ROW_INDEX = "LAY_TABLE_INDEX";
+ /**
+ * 蹇呰緭
+ */
+ public static final String REQUIRED_CHAR = "*";
+ /**
+ * 鏇挎崲瀛楃
+ */
+ public static final String SPECIAL_CHAR = "VCI";
+ /**
+ * 寮哄埗鍒嗛〉鐨勬暟閲�
+ */
+ public static final int LIMIT = 10000;
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鍏抽敭灞炴�х殑閰嶇疆
+ */
+ @Autowired
+ private CodeKeyAttrRepeatRuleServiceI keyRuleService;
+
+ /**
+ * 缂栫爜鐢熸垚鏈嶅姟绫�
+ */
+ @Autowired
+ private MdmProductCodeServiceI productCodeService;
+
+ /**
+ * 妯℃澘鐨勬湇鍔�
+ */
+ @Autowired
+ private CodeClassifyTemplateServiceI templateService;
+
+ /**
+ * 瀵嗙骇鐨勬湇鍔�
+ */
+ @Autowired
+ private WebSecretServiceI secretService;
+
+ /**
+ * 瀵煎嚭涓婚搴撶殑鏁版嵁
+ *
+ * @param exportAttrDTO 瀵煎嚭鐩稿叧鐨勯厤缃紝蹇呴』瑕佹湁涓婚搴撳垎绫荤殑涓婚敭
+ * @return 瀵煎嚭鐨別xcel鐨勬枃浠�
+ */
+ @Override
+ public String exportCode(CodeExportAttrDTO exportAttrDTO) {
+ VciBaseUtil.alertNotNull(exportAttrDTO,"瀵煎嚭鐨勯厤缃�",exportAttrDTO.getCodeClassifyOid(),"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(exportAttrDTO.getCodeClassifyOid());
+ //鑾峰彇鏈�鏂扮殑妯℃澘
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(exportAttrDTO.getCodeClassifyOid());
+ //鍏堟煡璇㈡暟鎹�
+ String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+ Map<String, String> conditionMap = exportAttrDTO.getConditionMap();
+ if(conditionMap == null){
+ conditionMap = new HashMap<>();
+ }
+ if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){
+ conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")");
+ }
+ PageHelper pageHelper = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
+ pageHelper.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
+ pageHelper.setSort(exportAttrDTO.getSort());
+ pageHelper.setOrder(exportAttrDTO.getOrder());
+
+ pageHelper.addDefaultDesc("createTime");
+ conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
+
+ //鍏堟煡璇㈡�绘暟
+ int total = 0;
+ if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
+ &&exportAttrDTO.getPage() !=null && exportAttrDTO.getPage() >0
+ &&exportAttrDTO.getEndPage()>exportAttrDTO.getPage()){
+ //浠庡灏戦〉鍒板灏戦〉鐨勬煡璇㈡柟寮忥紝
+ for(int i = exportAttrDTO.getPage() ;i <= exportAttrDTO.getEndPage();i++){
+ PageHelper thisPage = new PageHelper(exportAttrDTO.getLimit()==null?-1:exportAttrDTO.getLimit());
+ thisPage.setPage(exportAttrDTO.getPage()==null?1:exportAttrDTO.getPage());
+ thisPage.setSort(exportAttrDTO.getSort());
+ thisPage.setOrder(exportAttrDTO.getOrder());
+ thisPage.addDefaultDesc("createTime");
+ total += boService.queryCount(btmTypeId, conditionMap);
+ }
+ }else{
+ total=boService.queryCount(btmTypeId, conditionMap);
+ }
+ List<String> selectFieldList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
+ selectFieldList = exportAttrDTO.getAttrIdIndexMap().values().stream().map(s->s.toLowerCase(Locale.ROOT)).collect(Collectors.toList());
+ }else{
+ selectFieldList = templateVO.getAttributes().stream().filter(s->VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ||VciBaseUtil.getBoolean(s.getTabledisplayflag())).map(s->s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList());
+ }
+ //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
+ List<String> finalSelectFieldList = selectFieldList;
+ List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getReferbtmid())
+ &&
+ (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT)))
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(referAttrVOs)){
+ for (int i = 0; i < referAttrVOs.size(); i++) {
+ selectFieldList.add(referAttrVOs.get(i).getId() + ".name");
+ }
+ }
+ List<String> excelNameList = new CopyOnWriteArrayList<>();
+ String tempFolder = LocalFileUtil.getDefaultTempFolder();
+
+ if(total>LIMIT){
+ //鍒嗙粍鏉ユ墽琛�
+ int queryCount = (total-total%LIMIT)/LIMIT;
+ if(total%LIMIT>0){
+ queryCount = queryCount + 1;
+ }
+ List<Integer> indexList = new ArrayList<>();
+ for (int i = 0; i <queryCount ; i++) {
+ indexList.add(i);
+ }
+ Map<String, String> finalConditionMap = conditionMap;
+ //骞惰鏌ヨ鐪嬬湅
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ indexList.parallelStream().forEach(index->{
+ //绾跨▼鐨勬柟寮忥紝鎵�浠ラ渶瑕佽缃綋鍓嶇敤鎴�
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ PageHelper thisPage = new PageHelper(LIMIT);
+ thisPage.setPage(index+1);
+ thisPage.setSort(exportAttrDTO.getSort());
+ thisPage.setOrder(exportAttrDTO.getOrder());
+ thisPage.addDefaultDesc("createTime");
+ selectDataAndExportExcelName(btmTypeId, finalConditionMap,thisPage,finalSelectFieldList,
+ classifyFullInfo,templateVO,exportAttrDTO,
+ excelNameList,tempFolder,index);
+ });
+ }else{
+ pageHelper.setLimit(total);
+ pageHelper.setPage(1);
+ selectDataAndExportExcelName(btmTypeId,conditionMap,pageHelper,finalSelectFieldList,
+ classifyFullInfo,templateVO,exportAttrDTO,
+ excelNameList,tempFolder,1);
+ }
+ if(excelNameList.size() ==0){
+ throw new VciBaseException("娌℃湁鏁版嵁鍙互琚鍑�");
+ }
+ if(excelNameList.size() == 1){
+ return excelNameList.get(0);
+ }
+ //鏄涓紝鎴戜滑闇�瑕佹墦鎴愬帇缂╁寘
+
+ String zipFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelNameList.size()+".zip";
+ VciZipUtil zipUtil = new VciZipUtil();
+ File file = new File(tempFolder);
+ zipUtil.addFileToZip(file,zipFileName);
+ File[] files = file.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ LocalFileUtil.deleteTempFile(files[i],false);
+ }
+ LocalFileUtil.deleteTempFile(file,true);
+ return zipFileName;
+ }
+
+ /**
+ * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ @Override
+ public String downloadTopImportExcel(String codeClassifyOid){
+ List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
+ VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+ templateVOList= templateService.childTemplates(codeClassifyOid);
+ List<CodeClassifyVO> codeClassifyVOS=classifyService.getIdPathToNamePathByParentId(codeClassifyOid,true);
+ WriteExcelOption eo = new WriteExcelOption();
+ LinkedHashMap<String,CodeClassifyTemplateAttrVO> allFieldToOutNameMap=new LinkedHashMap<>();
+ templateVOList.stream().forEach(templateVO -> {
+ //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
+ // 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
+ //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
+ //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
+ //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId())
+ && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr())
+ && (VciBaseUtil.getBoolean(s.getFormdisplayflag()))
+ ).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(templateAttrVOS)){
+ throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+ }
+ templateAttrVOS.stream().forEach(codetemplateAttr ->{
+ String field=codetemplateAttr.getId();
+ String name=codetemplateAttr.getName();
+ CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
+ boolean res=codetemplateAttr.getAttributegroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE)//鍩烘湰灞炴�у瓧娈垫樉绀�
+ ||(StringUtils.isNotBlank(codetemplateAttr.getKeyattrflag())&&Boolean.parseBoolean(codetemplateAttr.getKeyattrflag()))//鍏抽敭灞炴�х殑瀛樺叆
+ ||(StringUtils.isNotBlank(codetemplateAttr.getSamerepeatattrflag())&&Boolean.parseBoolean(codetemplateAttr.getSamerepeatattrflag())) //鐩镐技灞炴�х殑瀛樺叆
+ ||(StringUtils.isNotBlank(codetemplateAttr.getRequireflag())&&Boolean.parseBoolean(codetemplateAttr.getRequireflag()));
+ if(allFieldToOutNameMap.containsKey(name)){//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
+ codeBaseAttributeDTO= allFieldToOutNameMap.get(name);
+ if(StringUtils.isNotBlank(codetemplateAttr.getKeyattrflag())&&Boolean.parseBoolean(codetemplateAttr.getKeyattrflag())){
+ codeBaseAttributeDTO.setKeyattrflag(codetemplateAttr.getKeyattrflag());//灞炴�у叧閿睘鎬�
+ }
+ if(StringUtils.isNotBlank(codetemplateAttr.getRequireflag())&&Boolean.parseBoolean(codetemplateAttr.getRequireflag())){
+ codeBaseAttributeDTO.setKeyattrflag(codetemplateAttr.getRequireflag());//灞炴�у繀濉」
+ }
+ if(StringUtils.isNotBlank(codetemplateAttr.getSamerepeatattrflag())&&Boolean.parseBoolean(codetemplateAttr.getSamerepeatattrflag())){
+ codeBaseAttributeDTO.setSamerepeatattrflag(codetemplateAttr.getSamerepeatattrflag());//灞炴�х浉浼煎睘鎬�
+ }
+ }else if(res){
+ allFieldToOutNameMap.put(name,codetemplateAttr);
+ }
+ });
+ });
+ //鏁寸悊濂芥墍鏈夋ā鏉块渶瑕佸啓鍏xecl鐨勫睘鎬т俊鎭�
+ Workbook workbook = new HSSFWorkbook();
+ LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
+ if(!CollectionUtils.isEmpty(allFieldToOutNameMap)){
+ excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
+ final int[] index = {0};
+ allFieldToOutNameMap.values().stream().forEach(attrVO -> {
+ Object text = attrVO.getName();
+ text = exportKeyAndRequired(workbook,attrVO,text);
+ int colIndex = 1 + index[0]++;
+ WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
+ if(StringUtils.isNotBlank(attrVO.getCodedateformat())
+ || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ excelData.setDateFormat(VciDateUtil.DateTimeFormat);
+ }
+ if(text instanceof RichTextString){
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ }
+ excelDataList.add(excelData);
+ if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
+ //娣诲姞鏁版嵁鏈夋晥鎬�
+ List<String> enumValueList = new ArrayList<>();
+ enumValueList.add("");
+ List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+ if(!CollectionUtils.isEmpty(valueList)){
+ valueList.stream().forEach(kv->{
+ enumValueList.add(kv.getValue());
+ });
+ }
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(enumValueList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ List<String> booleanList = new ArrayList<>();
+ booleanList.add("鏄�");
+ booleanList.add("鍚�");
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(booleanList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ });
+ eo.addSheetDataList(codeClassifyVO.getName()+"瀵煎叆妯℃澘",excelDataList);
+ }
+ LinkedList<WriteExcelData> classPathList = new LinkedList<>();
+ classPathList.add(new WriteExcelData(0,0,"鍒嗙被灞傜骇"));
+
+ WriteExcelData idPathWriteExcelTitle=new WriteExcelData(0,1,"鍒嗙被ID璺緞");
+ idPathWriteExcelTitle.setWidth(20);
+ idPathWriteExcelTitle.setCenter(false);
+ classPathList.add(idPathWriteExcelTitle);
+ WriteExcelData namePathWriteExcelTitle=new WriteExcelData(0,2,"鍒嗙被鍚嶇О璺緞");
+ namePathWriteExcelTitle.setWidth(20);
+ namePathWriteExcelTitle.setCenter(false);
+ classPathList.add(namePathWriteExcelTitle);
+
+
+ final int[] rowIndex = {1};
+ codeClassifyVOS.stream().forEach(codeClassifyVO1 -> {
+ classPathList.add(new WriteExcelData(rowIndex[0],0,codeClassifyVO1.getDataLevel()));
+
+ String idPath=codeClassifyVO1.getIdPath().startsWith("#")?codeClassifyVO1.getIdPath().substring(1):codeClassifyVO1.getIdPath();
+ WriteExcelData idPathWriteExcelData=new WriteExcelData(rowIndex[0],1,idPath);
+ idPathWriteExcelData.setWidth(30);
+ idPathWriteExcelData.setCenter(false);
+ classPathList.add(idPathWriteExcelData);
+
+ String namePath=codeClassifyVO1.getNamePath().startsWith("#")?codeClassifyVO1.getNamePath().substring(1):codeClassifyVO1.getNamePath();
+ WriteExcelData namePathWriteExcelData= new WriteExcelData(rowIndex[0],2,namePath);
+ namePathWriteExcelData.setWidth(40);
+ namePathWriteExcelData.setCenter(false);
+ classPathList.add(namePathWriteExcelData);
+ rowIndex[0]++;
+ });
+
+ WriteExcelData excelData=new WriteExcelData();
+ excelData.setMerged(true);
+ excelData.setRow(1);
+ excelData.setRowTo(2);
+ excelData.setCol(4);
+ excelData.setColTo(9);
+ excelData.setCenter(false);
+ excelData.setReadOnly(true);
+ excelData.setObj("瀵煎叆鏁版嵁鏃讹紝鍒嗙被璺緞蹇呴』濉啓鍙跺瓙鑺傜偣璺緞\n(閫夋嫨鍙跺瓙鑺傜偣瀵煎叆鍒欎笉闇�瑕佸~鍐欏垎绫昏矾寰�)");
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ classPathList.add(excelData);
+
+ eo.addSheetDataList(codeClassifyVO.getName()+"鍒嗙被瀵圭収琛�",classPathList);
+
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + "_瀵煎叆妯℃澘.xls";
+ // eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+ ExcelUtil.writeDataToFile(excelName,eo);
+ return excelName;
+ }
+
+ /**
+ * 鐢熸垚瀵煎叆鐨勬枃浠�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ @Override
+ public String createImportExcel(String codeClassifyOid,boolean isHistory) {
+ List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
+ VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+ CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+ if(isHistory){
+ templateVOList= templateService.childTemplates(codeClassifyOid);
+ }else{
+ //鎵炬ā鏉�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+ templateVOList.add(templateVO);
+ }
+
+ WriteExcelOption eo = new WriteExcelOption();
+ eo.setAppend(true);
+ //澧炲姞妯℃澘鐨勪俊鎭鍏�
+ LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+ tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
+ tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
+ tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
+ for(int j=0;j<templateVOList.size();j++){
+ CodeClassifyTemplateVO templateVO=templateVOList.get(j);
+
+ //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
+ // 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
+ //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
+ //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
+ //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId())
+ && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr())
+ && (isHistory || VciBaseUtil.getBoolean(s.getFormdisplayflag()))
+ ).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(templateAttrVOS)){
+ throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+ }
+ List<CodeClassifyTemplateAttrVO> idAttrVOList = templateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(MdmEngineConstant.CODE_FIELD)).collect(Collectors.toList());
+ LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
+ Workbook workbook = new HSSFWorkbook();
+ if(isHistory){
+ excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
+ excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
+ excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
+ }
+ for (int i = 0; i < templateAttrVOS.size(); i++) {
+ CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
+ Object text = attrVO.getName();
+ text = exportKeyAndRequired(workbook,attrVO,text);
+ int colIndex = (isHistory?3:0) + i;
+ WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
+ if(StringUtils.isNotBlank(attrVO.getCodedateformat())
+ || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ excelData.setDateFormat(VciDateUtil.DateTimeFormat);
+ }
+ if(text instanceof RichTextString){
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ }
+ excelDataList.add(excelData);
+ if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
+ //娣诲姞鏁版嵁鏈夋晥鎬�
+ List<String> enumValueList = new ArrayList<>();
+ enumValueList.add("");
+ List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+ if(!CollectionUtils.isEmpty(valueList)){
+ valueList.stream().forEach(kv->{
+ enumValueList.add(kv.getValue());
+ });
+ }
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(enumValueList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ List<String> booleanList = new ArrayList<>();
+
+ booleanList.add("鏄�");
+ booleanList.add("鍚�");
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(booleanList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ }
+ eo.addSheetDataList(j+templateVO.getName(),excelDataList);
+ tempEDList.add(new WriteExcelData(j+1,0,templateVO.getOid()));
+ tempEDList.add(new WriteExcelData(j+1,1,templateVO.getId()));
+ tempEDList.add(new WriteExcelData(j+1,2,templateVO.getName()));
+ }
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
+ eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+ ExcelUtil.writeDataToFile(excelName,eo);
+ return excelName;
+ }
+
+
+ /**
+ * 鐢熸垚瀵煎叆鐨勬枃浠�
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
+ * @return excel鐨勬枃浠跺湴鍧�
+ */
+ /*@Override
+ public String createImportExcel(String codeClassifyOid,boolean isHistory) {
+ CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+ if(isHistory && !templateService.checkChildHasSameTemplate(codeClassifyOid)){
+ throw new VciBaseException("褰撳墠閫夋嫨鐨勪富棰樺簱鍒嗙被鐨勬墍鏈変笅绾ц妭鐐逛腑瀛樺湪涓嶅悓鐨勬ā鏉跨殑鎯呭喌");
+ }
+ //鎵炬ā鏉�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ //缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
+ //鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
+ //鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ //鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
+ //鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
+ //缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
+ List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
+ !DEFAULT_ATTR_LIST.contains(s.getId())
+ && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr())
+ && (isHistory || VciBaseUtil.getBoolean(s.getFormdisplayflag()))
+ ).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(templateAttrVOS)){
+ throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+ }
+ List<CodeClassifyTemplateAttrVO> idAttrVOList = templateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ Workbook workbook = new HSSFWorkbook();
+ if(isHistory){
+ excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
+ excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
+ excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
+ }
+ for (int i = 0; i < templateAttrVOS.size(); i++) {
+ CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
+ Object text = attrVO.getName();
+ text = exportKeyAndRequired(workbook,attrVO,text);
+ int colIndex = (isHistory?3:0) + i;
+ WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
+ if(StringUtils.isNotBlank(attrVO.getCodedateformat())
+ || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+ ||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ excelData.setDateFormat(VciDateUtil.DateTimeFormat);
+ }
+ if(text instanceof RichTextString){
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ }
+ excelDataList.add(excelData);
+ if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumid())){
+ //娣诲姞鏁版嵁鏈夋晥鎬�
+ List<String> enumValueList = new ArrayList<>();
+ enumValueList.add("");
+ List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+ if(!CollectionUtils.isEmpty(valueList)){
+ valueList.stream().forEach(kv->{
+ enumValueList.add(kv.getValue());
+ });
+ }
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(enumValueList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())){
+ List<String> booleanList = new ArrayList<>();
+
+ booleanList.add("鏄�");
+ booleanList.add("鍚�");
+ //榛樿鍔�1涓囨潯
+ WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+ ed.setRowTo(100);
+ ed.setColTo(colIndex);
+ ed.setValidation(true);
+ ed.setValidationDataList(booleanList);
+ ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+ excelDataList.add(ed);
+ }
+ }
+ //澧炲姞妯℃澘鐨勪俊鎭鍏�
+ List<WriteExcelData> tempEDList = new ArrayList<>();
+ tempEDList.add(new WriteExcelData(0,0,templateVO.getOid()));
+ tempEDList.add(new WriteExcelData(0,1,templateVO.getId()));
+ tempEDList.add(new WriteExcelData(0,2,templateVO.getName()));
+ String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
+ WriteExcelOption eo = new WriteExcelOption(excelDataList);
+ eo.addSheetDataList("妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+ ExcelUtil.writeDataToFile(excelName,eo);
+ return excelName;
+ }*/
+
+ /**
+ * 鎵归噺鐢宠缂栫爜鏁版嵁
+ *
+ * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel鐨勬枃浠�
+ */
+ @Override
+ public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) {
+ VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+ if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
+ ||sheetDataSetList.get(0).getRowData().size()<1){
+ throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
+ }
+ if(sheetDataSetList.size()>LIMIT+1){
+ throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ SheetDataSet dataSet = sheetDataSetList.get(0);
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
+ checkTemplateSync(sheetDataSetList,templateVO,0);
+ //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+ Map<String,String> errorMap = new HashMap<>();
+ String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
+ CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
+ List<String> needRowIndexList = new ArrayList<>();
+ String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
+ if(StringUtils.isNotBlank(filePath)) {
+ codeImProtRusultVO.setFilePath(filePath);
+ }
+ if(StringUtils.isNotBlank(redisUUid)){
+ codeImProtRusultVO.setRedisUuid(redisUUid);
+ }
+ return codeImProtRusultVO;
+ }
+
+
+ /***
+ * 鎵归噺澶勭悊鐢宠鏁版嵁
+ * @param orderDTO
+ * @param templateVO
+ * @param dataSet
+ * @return
+ */
+ private String batchImportCodes(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
+ List<String> codeList=new ArrayList<>();
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+ engineService.checkSecValueOnOrder(ruleVO,orderDTO);
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataSet.getColName();
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
+ getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
+
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ String fullPath = getFullPath(classifyFullInfo);
+ excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
+
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+ batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+ selfRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
+ });
+ }
+ if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ });
+ }
+ //鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+ if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
+ //5.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+ //7.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+ }
+ //6.鏃堕棿鏍煎紡鐨勯獙璇�
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+ String uuid=redisService.getUUIDEveryDay();
+ Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((MdmEngineConstant.IMPORT_ROW_INDEX)), t -> t));
+
+ if(errorMap.size()>0) {
+ createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false);
+ }
+ boolean isCreateUUid=false;
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ //鐩镐技鏍¢獙
+ Map<String,String>resembleMap=new HashMap<>();
+ List<DataResembleVO> dataResembleVOS=new ArrayList<>();
+ String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+ bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
+ if(resembleMap.size()>0) {
+ isCreateUUid=true;
+ if(!CollectionUtils.isEmpty(dataResembleVOS)) {
+ redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
+ createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
+ }
+ }
+ //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
+ Map<String,String> newErrorMap=new HashMap<>();
+ newErrorMap.putAll(resembleMap);
+ newErrorMap.putAll(errorMap);
+ needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
+ isCreateUUid=true;
+ }
+ createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false);
+ if(newErrorMap.size()>0) {
+ createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
+ }else {
+ uuid="";
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ //鐢熸垚缂栫爜鐨勫唴瀹�
+ codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(templateVO, needSaveCboList);
+ }
+ }
+ if(!isCreateUUid){
+ return uuid="";
+ }
+ return uuid;
+ }
+
+ /***
+ * 瀛樺偍鍒嗙被瀵硅薄鍙婂叾鍒楀悕
+ * @param uuid
+ * @param templateVOList
+ * @param dataSet
+ * @param fieldIndexMap
+ * @param iscContain
+ */
+ private void createRedisByCodeClassify(String uuid,CodeClassifyTemplateVO templateVOList,SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,boolean iscContain){
+ List<ColumnVO> columnVOList = new ArrayList<>();
+ List<String> outNameList = dataSet.getColName();
+ fieldIndexMap.forEach((integer, s) -> {
+ ColumnVO columnVOS = new ColumnVO();
+ String field = fieldIndexMap.get(integer);
+ String outName = outNameList.get(integer);
+ columnVOS.setField(field);
+ columnVOS.setTitle(outName);
+ columnVOList.add(columnVOS);
+ });
+ CodeImportTemplateVO codeImportTemplateVO=new CodeImportTemplateVO();
+ codeImportTemplateVO.setCodeClassifyTemplateVO(templateVOList);
+ codeImportTemplateVO.setCloNamesList(columnVOList);
+ List<CodeImportTemplateVO> codeImportTemplateVOs= new ArrayList<>();
+ codeImportTemplateVOs.add(codeImportTemplateVO);
+ redisService.setCacheList(uuid,codeImportTemplateVOs);
+ redisService.expire(uuid,6000000);//redis杩囨湡鏃堕棿
+ logger.info("");
+ }
+ private void createRedisDatas(String uuid,CodeClassifyTemplateVO templateVO,Map<String,ClientBusinessObject> rowIndexCbo, SheetDataSet dataSet, Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap,Map<String,String> errorMap,boolean isok){
+ List<SheetRowData> needsheetRowDataList =new ArrayList<>();
+ if(errorMap.size()>0) {
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ needsheetRowDataList = dataSet.getRowData().stream().filter(cbo -> {
+ String rowIndex=cbo.getRowIndex();
+ return isok? !errorMap.containsKey(rowIndex):errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ }else{
+ needsheetRowDataList= dataSet.getRowData();
+ }
+ Map<String/**涓枃鍚嶇О**/, SheetRowData/**鑻辨枃鍚嶇О**/> rowIdexDataMap = needsheetRowDataList.stream().collect(Collectors.toMap(s -> s.getRowIndex(), t -> t,(o1, o2)->o2));
+ Map<String, CodeImprotDataVO> clsfDataMap=new HashMap<>();
+ rowIndexCbo .forEach((rowIndex, cbo) -> {
+ CodeImprotDataVO codeImprotDataVO = new CodeImprotDataVO();
+ codeImprotDataVO.setTemplateOid(templateVO.getOid());
+ List<Map<String, String>> dataList = new ArrayList<>();
+ if(rowIdexDataMap.containsKey(rowIndex)){
+ SheetRowData sheetRowData=rowIdexDataMap.get(rowIndex);
+ Map<String, String> dataMap = new HashMap<>();
+ Map<Integer, String> data = sheetRowData.getData();
+ fieldIndexMap.forEach((integer, s) -> {
+ String field = fieldIndexMap.get(integer);
+ if (data.containsKey(integer)) {
+ String vlues = data.get(integer);
+ dataMap.put(field, vlues);
+ }
+ });
+ dataMap.put("oid",cbo.getOid());
+ dataList.add(dataMap);
+ }
+ if(clsfDataMap.containsKey(templateVO.getOid())){
+ codeImprotDataVO=clsfDataMap.get(templateVO.getOid());
+ dataList.addAll(codeImprotDataVO.getDatas());
+ }
+ codeImprotDataVO.setColNames(dataSet.getColName());
+ codeImprotDataVO.setDatas(dataList);
+ clsfDataMap.put(templateVO.getOid(),codeImprotDataVO);
+ });
+ if(!CollectionUtils.isEmpty(clsfDataMap)) {
+ Collection codeImprotDataVOS=clsfDataMap.values();
+ List<CodeImprotDataVO> codeImprotDataVOList=new ArrayList<>();
+ codeImprotDataVOList.addAll(codeImprotDataVOS);
+ redisService.setCacheList(uuid+"-"+templateVO.getOid(), codeImprotDataVOList);
+ redisService.expire(uuid+"-"+templateVO.getOid(),6000000);//redis杩囨湡鏃堕棿
+ }
+ }
+ /***
+ * 鎵归噺澶勭悊鐢宠鏁版嵁
+ * @param orderDTO
+ * @param templateVO
+ * @param dataSet
+ * @return
+ */
+ @Override
+ public List<String> batchImportCode(CodeOrderDTO orderDTO,CodeClassifyTemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
+ List<String> codeList=new ArrayList<>();
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+ engineService.checkSecValueOnOrder(ruleVO,orderDTO);
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataSet.getColName();
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
+ getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
+
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ String fullPath = getFullPath(classifyFullInfo);
+ excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
+
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+ batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+ selfRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
+ });
+ }
+ if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ });
+ }
+ //鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+ if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
+ //5.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+ //7.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+ }
+ //6.鏃堕棿鏍煎紡鐨勯獙璇�
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex =cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ if(!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ //鐢熸垚缂栫爜鐨勫唴瀹�
+ codeList= productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(templateVO,needSaveCboList);
+ }
+ return codeList;
+ }
+ private LinkedList<CodeClassifyTemplateVO> checkSamesTemplate(List<String> titleRowData, List<SheetDataSet> sheetDataSetList,int shetNumber,Map<String/**璺緞**/, CodeClassifyVO> pathMap,Map<String,String>errorMap) throws Throwable {
+ Map<String,String>pathOidMap =new HashMap<>();
+ Map<String,String> templateIdRowIndex=new HashedMap();
+ SheetDataSet dataSet= sheetDataSetList.get(shetNumber);
+ LinkedHashMap<String,CodeClassifyTemplateVO> codeClassifyTemplateVOMap=new LinkedHashMap <String,CodeClassifyTemplateVO>();
+ for (int i=0; i<titleRowData.size();i++){
+ String title= titleRowData.get(i);
+ if(title.equals("鍒嗙被璺緞")) {
+ int finalI = i;
+ dataSet.getRowData().stream().forEach(sheetRowData -> {
+ String Path = sheetRowData.getData().get(finalI);
+ String rowIndex=sheetRowData.getRowIndex();
+ CodeClassifyTemplateVO newTemplateVO=new CodeClassifyTemplateVO();
+ String templateOid="";
+ if(pathOidMap.containsKey(Path)){
+ templateOid= pathOidMap.get(Path) ;
+ newTemplateVO=codeClassifyTemplateVOMap.get(templateOid);
+ }else{
+ if(pathMap.containsKey(Path)){
+ CodeClassifyVO codeClassifyVO=pathMap.get(Path);
+ newTemplateVO =engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ if(newTemplateVO!=null){
+ templateOid=newTemplateVO.getOid();
+ }else{
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫绘ā鏉�");
+ }
+ }else{
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫�");
+ }
+ }
+ pathOidMap.put(Path, templateOid);
+ codeClassifyTemplateVOMap.put(templateOid, newTemplateVO);
+ templateIdRowIndex.put(templateOid, templateIdRowIndex.getOrDefault(templateOid, "") + "锛�" +rowIndex );
+ });
+ break;
+ }
+ }
+ LinkedList<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new LinkedList<>();
+ StringBuffer sb=new StringBuffer();
+ codeClassifyTemplateVOMap.keySet().forEach(tempateOid->{
+ String templateOidInExcel="";
+ String tempateName="";
+ CodeClassifyTemplateVO t= codeClassifyTemplateVOMap.get(tempateOid);
+ codeClassifyTemplateVOList.add(t);
+ if(!CollectionUtils.isEmpty(sheetDataSetList)
+ && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
+ List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
+ templateOidInExcel=rowData.get(shetNumber).getData().get(0);
+ tempateName=rowData.get(shetNumber).getData().get(2);
+ //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
+ }
+ if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(tempateOid)){
+ sb.append("妯℃澘銆�"+tempateName+"銆戜腑绗�"+templateIdRowIndex.get(tempateOid)+"琛屾暟鎹笉灞炰簬褰撳墠妯℃澘鐨勬暟鎹紝璇锋牳瀵�!");
+ }
+ });
+ if(StringUtils.isNotBlank(sb)){
+ throw new Throwable(sb.toString());
+ }
+ if(codeClassifyTemplateVOList.size()>1){
+ String message="妯℃澘銆�"+dataSet.getSheetName()+"銆戞牴鎹垎绫昏矾寰勫垽鏂紝鍒嗙被瀛樺湪澶氫釜妯℃澘";
+
+ throw new Throwable(message);
+ }
+ if(codeClassifyTemplateVOList.size()==0){
+ String message="妯℃澘銆�"+dataSet.getSheetName()+"銆戞牴鎹暟鎹垎绫昏矾寰勫垽鏂紝鏈尮閰嶅埌瀵瑰簲妯℃澘";
+ throw new Throwable(message);
+ }
+ return codeClassifyTemplateVOList ;
+ }
+ /**
+ * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑
+ * @param sheetDataSetList excel閲岀殑鍐呭
+ * @param templateVO 妯℃澘鐨勪俊鎭�
+ */
+ private void checkTemplateSync(List<SheetDataSet> sheetDataSetList,CodeClassifyTemplateVO templateVO,int i){
+ String templateOidInExcel = "";
+ String templateName="";
+ if(!CollectionUtils.isEmpty(sheetDataSetList)
+ && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
+ List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
+ templateName=rowData.get(i).getData().get(2);
+ templateOidInExcel=rowData.get(i).getData().get(0);
+ //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
+ }
+ /* if(!CollectionUtils.isEmpty(sheetDataSetList)
+ && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
+ List<SheetRowData> rowData= sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
+ templateOidInExcel=rowData.get(i).getData().get(0);
+ //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
+ }*/
+ if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(templateVO.getOid())){
+ throw new VciBaseException("妯℃澘銆�"+templateName+"銆戜腑鐨勬暟鎹幏鍙栫殑妯$増淇℃伅涓庡綋鍓嶆ā鏉夸笉鍖归厤锛岃纭繚excel鏂囦欢閲屾湁銆愭ā鏉夸俊鎭�-璇峰嬁绉诲姩鎴栧垹闄ゃ�戠殑宸ヤ綔琛紝涓旂‘淇濇瘡娆″鍏ラ兘鏄厛涓嬭浇鐨勫鍏ユā鏉垮悗娣诲姞鐨勬暟鎹�");
+ }
+
+ }
+
+ /***
+ * 浠庨《灞傛壒閲忕敵璇峰鍏ユ柟娉�
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return
+ */
+ @Override
+ public CodeImProtRusultVO batchTopImportCode(String codeClassifyOid, String classifyAttr, File file) {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+ if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
+ ||sheetDataSetList.get(0).getRowData().size()<1){
+ throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
+ }
+ if(sheetDataSetList.size()>LIMIT+1){
+ throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ SheetDataSet dataSet = sheetDataSetList.get(0);
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+
+ List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
+ Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
+ pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
+ List<String> titleRowData = dataSet.getColName();
+ Map<String, String> errorMap = new ConcurrentHashMap<>();
+ //棣栧厛灏嗘暟鎹互妯℃澘鐨勫舰寮忓垎寮�
+ LinkedHashMap<String,List<CodeImprotDataVO>> codeclassifyDataMap=new LinkedHashMap<>();
+ List<CodeImprotDataVO> codeClassifyDatas=new ArrayList<>();
+ createExeclClassData(dataSet,pathMap,errorMap,codeClassifyDatas);
+ //鏍规嵁妯℃澘灏嗘暟鎹暣鍚堝湪涓�璧凤紝鍘绘牎楠�
+ Map<String/**妯℃澘oid**/, List<CodeImprotDataVO>/**鏁版嵁瀵硅薄**/> templateDatasMap =codeClassifyDatas.stream().collect(Collectors.toMap(CodeImprotDataVO::getTemplateOid,s->{
+ List<CodeImprotDataVO> l=new ArrayList<>();
+ l.add(s);
+ return l;
+ },(List<CodeImprotDataVO> s1,List<CodeImprotDataVO> s2)->{
+ s1.addAll(s2);
+ return s1;
+ }));
+ String uuid=redisService.getUUIDEveryDay();
+ List<CodeImportTemplateVO> codeImportTemplateVOS=new ArrayList<>();
+ //鎸夌収妯℃澘鍘绘暣鐞嗘暟鎹�
+ templateDatasMap.keySet().stream().forEach(templateVOOid->{
+ List<CodeImprotDataVO> codeImprotDataVOS= templateDatasMap.get(templateVOOid);
+ CodeClassifyTemplateVO templateVO= templateServiceI.getObjectHasAttrByOid(templateVOOid);
+
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+
+ Map<String/**妯℃澘灞炴�у瓧娈祇id**/, String /**妯℃澘灞炴�у閮ㄥ悕绉�**/> fieldNameMap =attrVOS.stream().collect(Collectors.toMap(CodeClassifyTemplateAttrVO::getId,s->s.getName()));
+
+ List<ClientBusinessObject> allCboList=new ArrayList<>();
+ List<ColumnVO>columnVOList =new ArrayList();
+ codeImprotDataVOS.stream().forEach(codeImprotDataVO -> {
+ CodeImportTemplateVO codeImportTemplateVO=new CodeImportTemplateVO();
+ codeImprotDataVO.getFields().stream().forEach(field->{
+ ColumnVO columnVOS = new ColumnVO();
+ String outName=fieldNameMap.get(field);
+ columnVOS.setField(field);
+ columnVOS.setTitle(outName);
+ columnVOList.add(columnVOS);
+
+ });
+ codeImportTemplateVO.setCodeClassifyVO( codeImprotDataVO.getCodeClassifyVO());
+ codeImportTemplateVO.setCodeClassifyTemplateVO( codeImprotDataVO.getCodeClassifyTemplateVO());
+ List<String> colNames=codeImprotDataVO.getColNames();
+ codeImportTemplateVO.setCloNamesList(columnVOList);
+ codeImportTemplateVOS.add(codeImportTemplateVO);
+ List<ClientBusinessObject> cboList=new ArrayList<>();
+ excelToCbo(classifyFullInfo,codeImprotDataVO,cboList,true);
+ allCboList.addAll(cboList);
+
+ });
+
+
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+ batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+ selfRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
+ });
+ }
+ if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ });
+ }
+ //鍒嗙被娉ㄥ叆
+ // batchSwitchClassifyAttrOnOrder(attrVOS,allCboList,classifyFullInfo,false);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,allCboList);
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, allCboList,errorMap);
+ //鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
+ //5.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS, allCboList, errorMap);
+ //7.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,allCboList,errorMap);
+
+ //6.鏃堕棿鏍煎紡鐨勯獙璇�
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,allCboList,errorMap);
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,allCboList);
+
+
+ Map<String, ClientBusinessObject> rowIndexCboMap = allCboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((MdmEngineConstant.IMPORT_ROW_INDEX)), t -> t));
+
+ if(errorMap.size()>0) {
+ createRedisDatas(uuid + "-error",templateVO,codeImprotDataVOS, errorMap,false);
+ }
+ List<ClientBusinessObject> needSaveCboList = allCboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ //鐩镐技鏍¢獙
+ Map<String,String>resembleMap=new HashMap<>();
+ List<DataResembleVO> dataResembleVOS=new ArrayList<>();
+ String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+ bathcResembleQuery(codeClassifyOid,templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
+ if(resembleMap.size()>0) {
+ if(!CollectionUtils.isEmpty(dataResembleVOS)) {
+ redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
+ createRedisDatas(uuid + "-resemble",templateVO, codeImprotDataVOS, resembleMap, false);
+ }
+ }
+ //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
+ Map<String,String> newErrorMap=new HashMap<>();
+ newErrorMap.putAll(resembleMap);
+ newErrorMap.putAll(errorMap);
+ needSaveCboList = allCboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ createRedisDatas(uuid + "-ok",templateVO,codeImprotDataVOS, newErrorMap,true);
+ });
+ List<String> needRowIndexList=new ArrayList<>();
+ CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
+ if(errorMap.size()>0) {
+ String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
+ if (StringUtils.isNotBlank(filePath)) {
+ codeImProtRusultVO.setFilePath(filePath);
+ }
+ }
+ if(StringUtils.isNotBlank(uuid)){
+ //灏嗘墍鏈夌殑鍒嗙被瀛樺叆缂撳瓨涔嬩腑
+ codeImProtRusultVO.setRedisUuid(uuid);
+ redisService.setCacheList(uuid + "-class",codeImportTemplateVOS);
+ // redisService.expire(uuid + "-class",6000000);
+ }
+ return codeImProtRusultVO;
+ }
+
+ /***
+ * 鏍规嵁涓嶅悓妯℃澘缁勭粐execl鏁版嵁
+ * @param dataSet
+ * @param pathMap
+ * @param errorMap
+ */
+ private void createExeclClassData(SheetDataSet dataSet,Map<String/**璺緞**/, CodeClassifyVO> pathMap,Map<String,String>errorMap,List<CodeImprotDataVO> codeClassifyDatas){
+
+ Map<String,CodeImprotDataVO> pathDatas=new HashMap<>();
+ List<String> titleRowData= dataSet.getColName();
+ List<SheetRowData> rowDataList= dataSet.getRowData();
+ LinkedHashMap<String,CodeClassifyTemplateVO> codeClassifyTemplateVOMap=new LinkedHashMap <String,CodeClassifyTemplateVO>();
+ for (int i=0;i<titleRowData.size();i++){
+ String title= titleRowData.get(i);
+ if(title.equals("鍒嗙被璺緞")) {
+ int finalI = i;
+ rowDataList.stream().forEach(sheetRowData -> {
+ CodeImprotDataVO dataVO=new CodeImprotDataVO();
+ String Path = sheetRowData.getData().get(finalI);
+ String rowIndex=sheetRowData.getRowIndex();
+ Map<Integer, String> execlData= sheetRowData.getData();
+ CodeClassifyTemplateVO newTemplateVO=new CodeClassifyTemplateVO();
+
+ if(StringUtils.isEmpty(Path)){
+ Path="#current#";
+ }
+
+ if(pathMap.containsKey(Path)){
+ CodeClassifyVO codeClassifyVO=pathMap.get(Path);
+ if(codeClassifyTemplateVOMap.containsKey(Path)){
+ newTemplateVO= codeClassifyTemplateVOMap.get(Path);
+ }else{
+ newTemplateVO =engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ if(newTemplateVO==null){
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫绘ā鏉�");
+ }
+ }
+ if(pathMap.containsKey(Path)){
+ dataVO=pathDatas.getOrDefault(Path,dataVO);
+ }
+ dataVO.setTemplateOid(newTemplateVO.getOid());
+ dataVO.setCodeClassifyTemplateVO(newTemplateVO);
+ dataVO.setCodeClassifyVO(codeClassifyVO);
+ dataVO.setRowIndex(rowIndex);
+ dataVO.setCodeClassifyOid(codeClassifyVO.getOid());//璁剧疆鍒嗙被oid
+ dataVO.setCodeRuleOid(codeClassifyVO.getCoderuleoid());
+ createExeclClassData(titleRowData,newTemplateVO,execlData,dataVO);
+
+ pathDatas.put(Path,dataVO);
+ codeClassifyTemplateVOMap.put(Path, newTemplateVO);
+ }else{
+ errorMap.put(rowIndex,"绗�"+rowIndex+"琛岋紝鍒嗙被璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫�");
+ }
+ });
+ break;
+ }
+ }
+ List <CodeImprotDataVO> newCodeImprotDataVO= pathDatas.values().stream().collect(Collectors.toList());
+ codeClassifyDatas.addAll(newCodeImprotDataVO);
+ logger.info("222");
+ }
+
+ /**
+ * 瀵煎叆鍘嗗彶鏁版嵁
+ *
+ * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+ * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+ * @param file excel鏂囦欢鐨勪俊鎭�
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ @Override
+ public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) {
+ VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+ ReadExcelOption reo = new ReadExcelOption();
+ reo.setReadAllSheet(true);
+ List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+ if (sheetDataSetList.size() > LIMIT + 1) {
+ throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+ }
+ Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
+ //鐩镐技椤圭洰鏌ラ噸
+ String uuid = redisService.getUUIDEveryDay();
+ boolean isCreateUUid=false;
+ boolean isExport=false;
+ for(int i=0;i<sheetDataSetList.size()-1;i++) {
+ if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
+ || sheetDataSetList.get(i).getRowData().size() < 1) {
+ continue;
+ }
+ //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
+ //----閫昏緫鍐呭----
+ //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О
+ //2. 鍒嗙被鐨勮矾寰勶紝蹇呴』鏄綋鍓嶅鍏ラ�夋嫨鐨勫垎绫荤殑鑺傜偣锛屼互鍙婂叾涓嬬骇鑺傜偣
+ //3. 閫氳繃鏁版嵁瑕佸鍏ョ殑鍒嗙被鍘绘煡鎵惧搴旂殑缂栫爜瑙勫垯
+ //4. 鏁版嵁瀛樺偍鍜屾壒閲忕敵璇蜂竴鏍凤紝
+ //5. 闇�瑕佸崟鐙鐞嗕紒涓氱紪鐮佺殑鍐呭锛�
+ // 5.1 浼佷笟缂栫爜鍦ㄥ綋鍓峞xcel閲屼笉鑳介噸澶�
+ // 5.2 浼佷笟缂栫爜鍦ㄧ郴缁熶腑涓嶈兘閲嶅锛堝彲浠ユ槸宸茬粡鍥炴敹鐨勶級
+ // 5.3 浼佷笟缂栫爜鐨勯暱搴︼紝鍜岀紪鐮佽鍒欑殑闀垮害瑕佸搴斾笂
+ // 5.4 鑾峰彇娴佹按鐮佹鐨勫�硷紝鍘婚櫎濉厖鐨勫瓧绗︼紝鐪嬫祦姘村彿鏄灏戯紝鐒跺悗灏嗘祦姘村彿鍜岀幇鍦ㄧ殑鏈�澶ф祦姘村彿鍒ゆ柇锛屽皬浜庡氨鐩存帴褰曞叆锛屽ぇ浜庡垯淇敼鏈�澶ф祦姘村彿
+ // 5.5 瀛樺偍浼佷笟缂栫爜鍒癮llcode涓�
+
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ SheetDataSet dataSet = sheetDataSetList.get(i);
+ List<SheetRowData> rowDataList = dataSet.getRowData();
+
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO();
+ /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) {
+ throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�");
+ }***/
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
+ List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
+ Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
+ List<String> titleRowData = dataSet.getColName();
+ Map<String, String> errorMap = new ConcurrentHashMap<>();
+ try {
+ List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap);
+ templateVO= templateVOList.get(0);
+ }catch (Throwable e){
+ throw new VciBaseException(e.getMessage());
+ }
+
+ List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
+ String rowIndex = cbo.getRowIndex();
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ //checkTemplateSync(sheetDataSetList, templateVO,i);
+ //杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes();
+ Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
+ String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
+ getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
+ //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ String fullPath = getFullPath(classifyFullInfo);
+ //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
+ Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
+ excelToCbo(classifyFullInfo, fieldIndexMap, needowDataList, templateVO, cboList, fullPath, false);
+
+
+ Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
+ pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
+
+ //鍒ゆ柇缂栧彿鍦╡xcel閲屾湰韬氨閲嶅鐨�
+ Map<String, Long> idCountMap = cboList.stream().collect(Collectors.groupingBy(ClientBusinessObject::getId, Collectors.counting()));
+ List<String> repeatIdList = new ArrayList<>();
+ idCountMap.forEach((id, count) -> {
+ if (count > 1) {
+ repeatIdList.add(id);
+ }
+ });
+ if (!CollectionUtils.isEmpty(repeatIdList)) {
+ cboList.stream().filter(s -> repeatIdList.contains(s.getId())).map(s -> s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).forEach(rowIndex -> {
+ errorMap.put(rowIndex, "缂栧彿鍦ㄥ綋鍓峞xcel涓噸澶�;");
+ });
+ }
+ //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
+ //妫�鏌ュ垎绫荤殑璺緞
+ checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
+
+ //妫�鏌ヨ鍒�
+ Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>();
+ List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>();
+ checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList);
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+
+ //鎴戜滑鏍规嵁鍑洪敊鐨勫垎绫荤殑涓婚敭锛屽幓鎵捐鍙�
+ if (!CollectionUtils.isEmpty(unExistRuleClassifyOidList)) {
+ cboList.stream().forEach(cbo -> {
+ if (unExistRuleClassifyOidList.contains(cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD))) {
+ String row_index = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(row_index, errorMap.getOrDefault(row_index, "") + ";鏍规嵁鍒嗙被璺緞瀵瑰簲鐨勫垎绫伙紝娌℃湁璁剧疆缂栫爜瑙勫垯");
+ }
+ });
+ }
+
+ //鍒ゆ柇蹇呰緭椤�
+ batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
+
+ //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪
+ batchCheckIdExistOnOrder(templateVO, cboList, errorMap);
+
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS, cboList);
+
+ // 鏋氫妇鐨勫唴瀹归渶瑕佹牴鎹悕绉拌浆鎹负鏋氫妇鐨勫��
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+
+ batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap);
+ //6.澶勭悊鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true);
+ //7.澶勭悊缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS, cboList);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) {
+ selfRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍦ㄥ綋鍓峞xcel鏂囦欢涓叧閿睘鎬ч噸澶�");
+ });
+ }
+ if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) {
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅");
+ });
+ }
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList, errorMap);
+
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS, cboList, errorMap);
+ if (CollectionUtils.isEmpty(ruleOidMap.values())) {
+ throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯");
+ }
+ Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
+ Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
+ checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap);
+ ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
+ List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
+ List<ClientBusinessObject> thisCbos = cboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX))).collect(Collectors.toList());
+//鎴戜滑闇�瑕佸厛鏌ヨ涓�涓嬶紝鍐呭鏄惁宸茬粡瀛樺湪
+ if(!CollectionUtils.isEmpty(thisCbos)){
+ List<String> existIds = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(thisCbos).stream().forEach(cbos -> {
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("coderuleoid", ruleOid);
+ conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + ")");
+ conditionMap.put(VciQueryWrapperForDO.LC_STATUS_FIELD, QueryOptionConstant.NOTIN + "('" + CodeAllCodeLC.TASK_BACK.getValue() + "','" + CodeAllCodeLC.OBSOLETED.getValue() + "')");
+ existIds.addAll(Optional.ofNullable(boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap, new PageHelper(-1), Arrays.stream(new String[]{"id"})
+ .collect(Collectors.toList()))).orElseGet(() -> new ArrayList<>()).stream().map(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getAttributeValue("id");
+ }
+ return id;
+ }).collect(Collectors.toList()));
+ });
+ List<String> existIdCbos = thisCbos.stream().filter(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getAttributeValue("id");
+ }
+ return existIds.contains(id);
+ }).map(s -> s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(existIdCbos)) {
+ thisCbos = thisCbos.stream().filter(s -> {
+ String id = s.getId();
+ if (StringUtils.isBlank(id)) {
+ id = s.getAttributeValue("id");
+ }
+ return !existIdCbos.contains(id);
+ }).collect(Collectors.toList());
+ existIdCbos.stream().forEach(rowIndex -> {
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";銆�" + idFieldName + "銆戝湪绯荤粺涓凡缁忚鍗犵敤");
+ });
+ }
+ }
+ });
+
+ Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((MdmEngineConstant.IMPORT_ROW_INDEX)), t -> t));
+ if (errorMap.size() > 0) {
+ isExport=true;
+ createRedisDatas(uuid + "-error", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap, false);
+ }
+ createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, templateVO);
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ //鐩镐技鏍¢獙
+ Map<String, String> resembleMap = new HashMap<>();
+ List<DataResembleVO> dataResembleVOS = new ArrayList<>();
+ String btmtypeid = classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+ bathcResembleQuery(templateVO.getCodeclassifyoid(), templateVO, needSaveCboList, resembleMap, btmtypeid, dataResembleVOS);
+ if (resembleMap.size() > 0) {
+ if (!CollectionUtils.isEmpty(dataResembleVOS)) {
+ redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
+ createRedisDatas(uuid + "-resemble", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
+ }
+ }
+ //鐢熸垚class缂撳瓨
+ Map<String, String> rowIndexClsOidMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((MdmEngineConstant.IMPORT_ROW_INDEX)), t -> t.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD)));
+ createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,true);
+ //鑾峰彇缂栫爜锛屾煡璇㈠湪绯荤粺涓槸鍚﹁鍏朵粬鐨勫紩鐢ㄤ簡
+ //鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
+ Map<String, String> newErrorMap = new HashMap<>();
+ newErrorMap.putAll(resembleMap);
+ newErrorMap.putAll(errorMap);
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !newErrorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
+ isCreateUUid=true;
+ }
+ List<String> needRowIndexList = needSaveCboList.stream().filter(s -> errorMap.containsKey(s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX))).map(s -> s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).collect(Collectors.toList());
+ if (isExport||newErrorMap.size() > 0) {
+ createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true);
+ } else {
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
+ CodeClassifyTemplateVO finalTemplateVO = templateVO;
+ ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
+ List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(thisCbos)) {
+ try {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, thisCbos);
+ } catch (Throwable e) {
+ logger.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+ thisCbos.stream().forEach(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
+ });
+ }
+ }
+ });
+ engineService.batchSaveSelectChar(templateVO, cboList);
+ }
+ }
+ String excelFileName="";
+ if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
+ excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption();
+ shetNameMap.forEach((shetName, errorDataList) -> {
+ eo.addSheetDataList(shetName, errorDataList);
+ });
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName, eo);
+ }
+ CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
+ if(StringUtils.isNotBlank(excelFileName)) {
+ codeImProtRusultVO.setFilePath(excelFileName);
+ codeImProtRusultVO.setFileOid("");
+ }
+ if(isCreateUUid){
+ codeImProtRusultVO.setRedisUuid(uuid);
+ }
+
+ return codeImProtRusultVO;
+ }
+ private void createWriteExcelData(Collection<SheetRowData> rowDataList, Map<String,String> errorMap,
+ List<String> needRowIndexList, List<String> titleRowData, Map<String,List<WriteExcelData>> shetNameMap, CodeClassifyTemplateVO templateVO){
+ List<WriteExcelData> errorDataList=new ArrayList<>();
+ Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
+ errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ //閿欒淇℃伅鍦ㄦ渶鍚�
+ errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
+ }
+ Integer[] newRowIndex = new Integer[]{1};
+ errorMap.forEach((index,error)->{
+ //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
+ SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
+ if(rowData!=null){
+ errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
+ rowData.getData().forEach((colIndex,value)->{
+ errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
+ });
+ newRowIndex[0]++;
+ }
+ });
+
+ shetNameMap.put(templateVO.getName(),errorDataList);
+ }
+
+ /**
+ * 妫�鏌ョ爜娈电殑闀垮害鏄惁绗﹀悎瑕佹眰
+ * @param cboList 鏁版嵁
+ * @param classifyVOMap 鍒嗙被鏄犲皠
+ * @param ruleVOMap 瑙勫垯瀵硅薄
+ * @param ruleOidMap 鍒嗙被鍖呭惈瑙勫垯
+ * @param errorMap 閿欒鐨勪俊鎭�
+ * @param ruleRowIndexMap 瑙勫垯鍖呭惈鐨勮鍙凤紝key鏄鍒欎富閿紝value鏄寘鍚殑鍏ㄩ儴琛屽彿
+ */
+ private void checkSecLengthInHistory(List<ClientBusinessObject> cboList,Map<String,CodeClassifyVO> classifyVOMap,Map<String,CodeRuleVO> ruleVOMap,
+ Map<String/**鍒嗙被涓婚敭**/,String/**瑙勫垯涓婚敭**/> ruleOidMap,Map<String,String> errorMap,Map<String,List<String>> ruleRowIndexMap){
+
+ cboList.stream().forEach(cbo-> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ String secLength = cbo.getAttributeValue(MdmEngineConstant.CODE_SEC_LENGTH_FIELD);
+ //鎵惧垎绫�
+ String classifyOid = cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD);
+ CodeClassifyVO classifyVO = classifyVOMap.get(classifyOid);
+ if (classifyVO != null) {
+ //2#2#4#1杩欐牱鐨勬柟寮�
+ CodeRuleVO ruleVO = ruleVOMap.getOrDefault(ruleOidMap.get(classifyVO.getOid()), null);
+ if(ruleVO!=null){
+ String[] secValues = secLength.split("#");
+ //鎬婚暱搴﹀拰缂栫爜鐨勯暱搴�
+ String code = cbo.getAttributeValue(MdmEngineConstant.CODE_FIELD);
+ if(code.length() != Arrays.stream(secValues).mapToInt(s->VciBaseUtil.getInt(s)).sum()){
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
+ }else if(secValues.length != ruleVO.getSecVOList().size()){
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
+ } else {
+ //姣忎竴涓暱搴﹂兘涓嶈兘瓒呰繃鐮佹鐨�
+ boolean fined = false;
+ for (int j = 0; j < ruleVO.getSecVOList().size(); j++) {
+ CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j);
+ String length= secValues[j];
+ if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>VciBaseUtil.getInt(secVO.getCodeSecLength())){
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
+ fined = true;
+ break;
+ }
+ }
+ /**for (int i = 0; i < secValues.length; i++) {
+ for (int j = 0; j < ruleVO.getSecVOList().size(); j++) {
+ CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j);
+ if (VciBaseUtil.getInt(secValues[i]) > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" );
+ fined = true;
+ break;
+ }
+ }
+ if(fined){
+ break;
+ }
+ }***/
+ if(!fined){
+ //鏆傛椂涓嶅彇娴佹按鐨勫唴瀹癸紝鍥犱负璋冪敤produceCode鐨勬椂鍊欏幓澶勭悊
+ List<String> rowIndexList = ruleRowIndexMap.getOrDefault(ruleVO.getOid(), new ArrayList<>());
+ rowIndexList.add(rowIndex);
+ ruleRowIndexMap.put(ruleVO.getOid(),rowIndexList);
+ }
+ }
+ }else{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍒嗙被娌℃湁璁剧疆缂栫爜瑙勫垯" );
+ }
+ }
+ });
+ }
+
+ /**
+ * excel杞崲涓篶bo鐨勫璞�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param fieldIndexMap 瀛楁鐨勪綅缃�
+ * @param rowDataList excel閲岀殑琛屾暟鎹�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param fullPath 鍏ㄨ矾寰�
+ * @param newCode 鏄惁涓烘壒閲忕敵璇�
+ */
+ private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,Map<Integer,String> fieldIndexMap,List<SheetRowData> rowDataList,
+ CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,
+ String fullPath,boolean newCode){
+ rowDataList.stream().forEach(rowData -> {
+ ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ rowData.getData().forEach((index,value)->{
+ String field = fieldIndexMap.get(index);
+ if(StringUtils.isBlank(field)){
+ throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ try {
+ cbo.setAttributeValueWithNoCheck(field,value);
+ if(WebUtil.isDefaultField(field)){
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
+ }
+ });
+ try {
+ if(newCode){
+ cbo.setAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED,fullPath);
+ //cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(MdmEngineConstant.SECRET_FIELD));
+ if(secret == 0 || !secretService.checkDataSecret(secret) ){
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(MdmEngineConstant.SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
+ }
+ }else{
+ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
+ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }
+ cbo.setAttributeValue(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
+ cbo.setAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX,rowData.getRowIndex());
+ }catch (Throwable e){
+ logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
+ }
+ cboList.add(cbo);
+ });
+
+ }
+
+ /**
+ * excel杞崲涓篶bo鐨勫璞�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param fieldIndexMap 瀛楁鐨勪綅缃�
+ * @param rowDataList excel閲岀殑琛屾暟鎹�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param fullPath 鍏ㄨ矾寰�
+ * @param operation 鎿嶄綔绫诲瀷
+ * @param errorMap 閿欒淇℃伅璁板綍
+ */
+ private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,List<String> titleRowData,Map<Integer,String> fieldIndexMap,List<RowDatas> rowDataList,
+ CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,
+ String fullPath,boolean isProcess,String operation,Map<String,String> errorMap,Map<String,String> codeOidToSystemOidMap){
+ rowDataList.stream().forEach(rowData -> {
+ String oid=rowData.getOid();
+ String rowNumber=rowData.getRowIndex();
+ ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ rowData.getData().forEach((index,value)->{
+ String field = fieldIndexMap.get(index);
+ if(StringUtils.isBlank(field)){
+ errorMap.put(rowNumber,"灞炴�э細銆�" +titleRowData.get(index)+ "銆戝湪绯荤粺涓笉瀛樺湪");
+ }
+ try {
+ cbo.setAttributeValueWithNoCheck(field,value);
+ if(WebUtil.isDefaultField(field)){
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
+ errorMap.put(rowNumber,"灞炴�э細銆�" +titleRowData.get(index)+ "銆戝湪绯荤粺涓笉瀛樺湪");
+ }
+ });
+ try {
+ if(operation.equals("create")){
+ logger.info("鍒嗙被瀵硅薄锛�"+classifyFullInfo.getCurrentClassifyVO());
+ logger.info("codeClassoid:"+classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED,fullPath);
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(MdmEngineConstant.SECRET_FIELD));
+ if(secret == 0 || !secretService.checkDataSecret(secret) ){
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(MdmEngineConstant.SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
+ }
+ if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
+ cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.AUDITING.getValue())) {//瀹℃壒涓�
+ cbo.setLcStatus(CodeDefaultLC.AUDITING.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
+ cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
+ }else{
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());//鍙戝竷
+ }
+ /** if(!isProcess){
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }else {
+ if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
+ cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }else {//鍙戝竷
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }
+ }***/
+ cbo.setCreator(rowData.getCreator());
+ cbo.setLastModifier(rowData.getEditor()==null?"":rowData.getEditor());
+ }else if(operation.equals("update")){
+ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
+ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
+ if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
+ cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.RELEASED.getValue())){//鍙戝竷
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.AUDITING.getValue())) {//瀹℃壒涓�
+ cbo.setLcStatus(CodeDefaultLC.AUDITING.getValue());
+ }else if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
+ cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
+ }
+ cbo.setLastModifier(rowData.getEditor() == null ? "" : rowData.getEditor());//淇敼鑰�
+ }else if(operation.equals("delete")){
+ if(rowData.getStatus().equals(CodeDefaultLC.TASK_BACK.getValue())){//鍥炴敹
+ cbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
+ }else{
+ cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());//鍋滅敤
+ }
+ }
+ cbo.setAttributeValue(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
+ cbo.setAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX,rowData.getRowIndex());
+ }catch (Throwable e){
+ logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
+ errorMap.put(rowNumber,"璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�"+e.getMessage());
+ }finally {
+ codeOidToSystemOidMap.put(cbo.getOid(),oid);
+ }
+ cboList.add(cbo);
+ });
+
+ }
+
+ /**
+ * 妫�鏌ュ垎绫荤殑璺緞鏄惁瀛樺湪
+ * @param cboList 涓氬姟鏁版嵁
+ * @param errorMap 閿欒淇℃伅
+ * @param pathMap 璺緞鍜屽垎绫荤殑鏄犲皠
+ */
+ private void checkClassifyPathInHistory(List<ClientBusinessObject> cboList,
+ Map<String,String> errorMap, Map<String/**璺緞**/,CodeClassifyVO> pathMap,
+ Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap) {
+ cboList.parallelStream().forEach(cbo -> {
+ String classifyPath = cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD);
+ //濡傛灉path涓虹┖锛屽垯琛ㄧず鏄鍏ュ綋鍓嶅垎绫�
+ if(StringUtils.isBlank(classifyPath)){
+ classifyPath = "#current#";
+ }
+ if ( !pathMap.containsKey(classifyPath)) {
+ String row_index = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(row_index,errorMap.getOrDefault(row_index,"") + ";鍒嗙被璺緞涓嶅瓨鍦�");
+ } else {
+ //杞竴涓嬪垎绫荤殑涓婚敭
+ try {
+ String classifyOid = pathMap.get(classifyPath).getOid();
+ cbo.setAttributeValueWithNoCheck(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, classifyOid);
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(classifyOid,classifyPath));
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑閿欒", e);
+ }
+ }
+ });
+ }
+
+ /**
+ * 妫�鏌ュ垎绫讳互鍙婂瓙鍒嗙被鏄惁閮芥湁缂栫爜瑙勫垯
+ * @param classifyVOMap 鍒嗙被鐨勬樉绀哄璞℃槧灏�
+ * @param ruleOidMap 瑙勫垯鐨勪富閿槧灏�
+ * @param unExistRuleClassifyOidList 涓嶅瓨鍦ㄧ紪鐮佽鍒欑殑鍒嗙被鐨勪富閿�
+ */
+ private void checkRuleOidInHistory( Map<String/**涓婚敭**/,CodeClassifyVO> classifyVOMap, Map<String/**鍒嗙被涓婚敭**/,String/**瑙勫垯涓婚敭**/> ruleOidMap,
+ List<String> unExistRuleClassifyOidList ){
+ if(!CollectionUtils.isEmpty(classifyVOMap)){
+ classifyVOMap.values().parallelStream().forEach(classifyVO->{
+ if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
+ ruleOidMap.put(classifyVO.getOid(),classifyVO.getCoderuleoid());
+ }else{
+ //閫掑綊鎵句笂绾�
+ List<String> ruleOidList = new ArrayList<>();
+ recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
+ if(!CollectionUtils.isEmpty(ruleOidList)){
+ ruleOidMap.put(classifyVO.getOid(),ruleOidList.get(0));
+ }else{
+ unExistRuleClassifyOidList.add(classifyVO.getOid());
+ }
+ }
+ });
+ }
+ logger.info(";;;;");
+ }
+ /**
+ * 鑾峰彇瀛愬垎绫荤殑璺緞
+ * @param classifyFullInfo 鍒嗙被鍏ㄩ儴淇℃伅
+ * @param fullPath 鍒嗙被鐨勫叏璺緞
+ * @return 瀛愬垎绫荤殑璺緞锛宬ey鏄垎绫荤殑涓婚敭
+ */
+ private Map<String/**鍒嗙被鐨勪富閿�**/,String/**鍒嗙被璺緞**/> getChildClassifyPathMap(CodeClassifyFullInfoBO classifyFullInfo,String fullPath){
+ List<CodeClassifyVO> childPathVOs = classifyService.listChildrenClassify(classifyFullInfo.getCurrentClassifyVO().getOid(), true, VciQueryWrapperForDO.OID_FIELD, true);
+ Map<String/**鍒嗙被鐨勪富閿�**/,String/**鍒嗙被鐨勪富閿�**/> childOidPathMap = new ConcurrentHashMap<>();
+ if(!CollectionUtils.isEmpty(childPathVOs)){
+ childPathVOs.parallelStream().forEach(childPath->{
+ // String thisClassifyPath = fullPath + "##" + childPath.getPath().replace("#" + classifyFullInfo.getCurrentClassifyVO().getOid() + "#","").replace("#","##");
+ List<String> list=Arrays.asList(childPath.getPath().split("#"));
+ List<String> newPahtList= list.stream().sorted(Comparator.comparing(s -> s,Comparator.reverseOrder())).collect(Collectors.toList());
+ String thisClassifyPath=StringUtils.join(newPahtList,"##")+fullPath;
+ childOidPathMap.put(childPath.getOid(),thisClassifyPath);
+ });
+ }
+ return childOidPathMap;
+ }
+
+ /**
+ * 鑾峰彇鍒嗙被鐨勫叏璺緞
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @return 鍏ㄨ矾寰�
+ */
+ private String getFullPath(CodeClassifyFullInfoBO classifyFullInfo){
+ String fullPath = "";
+ if(!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())){
+ fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())))
+ .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
+ }else{
+ fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
+ }
+ return fullPath;
+ }
+
+ /***
+ * @param titleRowData
+ * @param newTemplateVO
+ * @param execlData
+ * @param codeImprotDataVO
+ */
+ private void createExeclClassData(List<String> titleRowData, CodeClassifyTemplateVO newTemplateVO, Map<Integer, String> execlData, CodeImprotDataVO codeImprotDataVO){
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = newTemplateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
+ List<String> fields=new ArrayList<>();
+ Map<String,String> filedValueMap=new HashMap<>();
+ List<String> colNames=new ArrayList<>();
+ for (int i = 0; i < titleRowData.size(); i++) {
+ String title = titleRowData.get(i);
+ title=title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,"");
+ String id = attrNameIdMap.getOrDefault(title,"");
+ if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_CLASSIFY_OID_FIELD;
+ }
+ if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_SEC_LENGTH_FIELD;
+ }
+ if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_FIELD;
+ }
+ if(StringUtils.isNotBlank(id)){
+ // fieldIndexMap.put(i,id);id
+ fields.add(id);
+ colNames.add(title);
+ String value= StringUtils.isNotBlank(execlData.get(i))?execlData.get(i):"";
+ filedValueMap.put(id,value);
+
+ }
+ }
+ filedValueMap.put(MdmEngineConstant.IMPORT_ROW_INDEX,codeImprotDataVO.getRowIndex());
+ codeImprotDataVO.setFields(fields);
+ codeImprotDataVO.setColNames(colNames);
+ codeImprotDataVO.getDatas().add(filedValueMap);
+ }
+
+ /**
+ * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆
+ * @param titleRowData 鏍囬鐨勫唴瀹�
+ * @param attrNameIdMap 妯℃澘涓睘鎬у悕绉板拰鑻辨枃鐨勬槧灏�
+ * @param fieldIndexMap 浣嶇疆鍜岃嫳鏂囧瓧娈电殑鏄犲皠
+ */
+ private void getFieldIndexMap(List<String> titleRowData,Map<String/**鍚嶇О**/,String/**瀛楁鍚�**/> attrNameIdMap,Map<Integer/**浣嶇疆**/,String/**鑻辨枃鍚嶅瓧**/> fieldIndexMap){
+ for (int i = 0; i < titleRowData.size(); i++) {
+ String title = titleRowData.get(i);
+ String id = attrNameIdMap.getOrDefault(title.replace(KEY_ATTR_CHAR,"").replace(REQUIRED_CHAR,""),"");
+ if(StringUtils.isBlank(id) && "鍒嗙被璺緞".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_CLASSIFY_OID_FIELD;
+ }
+ if(StringUtils.isBlank(id) && "鐮佹瀹藉害".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_SEC_LENGTH_FIELD;
+ }
+ if(StringUtils.isBlank(id) && "浼佷笟缂栫爜".equalsIgnoreCase(title)){
+ id = MdmEngineConstant.CODE_FIELD;
+ }
+ if(StringUtils.isNotBlank(id)){
+ fieldIndexMap.put(i,id);
+ }
+ }
+ }
+
+
+ /**
+ * 閫掑綊鎵剧紪鐮佽鍒�
+ * @param classifyVOMap 鍒嗙被鐨勬樉绀哄璞℃槧灏�
+ * @param classifyOid 鍒嗙被鐨勪富閿�
+ * @param ruleOidList 瑙勫垯鐨勪富閿甽ist
+ */
+ private void recursionRule(Map<String, CodeClassifyVO> classifyVOMap,String classifyOid,List<String> ruleOidList){
+ if(classifyVOMap.containsKey(classifyOid)){
+ CodeClassifyVO classifyVO = classifyVOMap.get(classifyOid);
+ if(StringUtils.isNotBlank(classifyVO.getCoderuleoid())){
+ ruleOidList.add(classifyVO.getCoderuleoid());
+ return;
+ }else{
+ recursionRule(classifyVOMap,classifyVO.getParentcodeclassifyoid(),ruleOidList);
+ }
+ }else{
+ Map<String, CodeClassifyVO> parentClassifyVOMap=new HashMap<>();
+ CodeClassifyVO codeClassifyVO= this.classifyService.getObjectByOid(classifyOid);
+ parentClassifyVOMap.put(codeClassifyVO.getOid(),codeClassifyVO);
+ recursionRule(parentClassifyVOMap,codeClassifyVO.getOid(),ruleOidList);
+ }
+ }
+
+
+ /**
+ * 閿欒淇℃伅杩斿洖excel
+ * @param rowDataList 鎵�鏈夌殑瀵煎叆鏁版嵁
+ * @param errorMap 閿欒鐨勪俊鎭�
+ * @param needRowIndexList 闇�瑕佸啓鍏ョ殑鏁版嵁鐨勮鍙�
+ * @param titleRowData 鏍囬琛�
+ *
+ * @return 閿欒鐨別xcel鏂囦欢锛屾病鏈夐敊璇細杩斿洖绌�
+ */
+ private String returnErrorToExcel(Collection<SheetRowData> rowDataList,
+ Map<String,String> errorMap,
+ List<String> needRowIndexList,List<String> titleRowData){
+ if(CollectionUtils.isEmpty(errorMap)){
+ return "";
+ }
+ Map<String, SheetRowData> rowIndexDataMap = rowDataList.stream().filter(s -> !needRowIndexList.contains(s.getRowIndex())).collect(Collectors.toMap(s -> s.getRowIndex(), t -> t));
+ List<WriteExcelData> errorDataList = new ArrayList<>();
+ errorDataList.add(new WriteExcelData(0,0,"閿欒淇℃伅"));
+ for (int i = 0; i < titleRowData.size(); i++) {
+ //閿欒淇℃伅鍦ㄦ渶鍚�
+ errorDataList.add(new WriteExcelData(0,i+1,titleRowData.get(i)));
+ }
+ Integer[] newRowIndex = new Integer[]{1};
+ errorMap.forEach((index,error)->{
+ //閿欒淇℃伅鍏ㄩ儴缁勫悎鍒颁竴璧�
+ SheetRowData rowData = rowIndexDataMap.getOrDefault(index, null);
+ if(rowData!=null){
+ errorDataList.add(new WriteExcelData(newRowIndex[0],0,error));
+ rowData.getData().forEach((colIndex,value)->{
+ errorDataList.add(new WriteExcelData(newRowIndex[0],colIndex+1,value));
+ });
+ newRowIndex[0]++;
+ }
+ });
+ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+ WriteExcelOption eo = new WriteExcelOption(errorDataList);
+ try {
+ new File(excelFileName).createNewFile();
+ } catch (IOException e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+ }
+ ExcelUtil.writeDataToFile(excelFileName,eo);
+ return excelFileName;
+ }
+
+ /**
+ * 鑾峰彇灞炴�у湪excel涓殑琛屾暟
+ * @param fieldIndexIdMap 鍒楀彿-瀛楁鏄犲皠
+ * @param attrId 灞炴�х殑缂栧彿
+ * @return 鍒楀彿
+ */
+ private Integer getIndexInRowData(Map<Integer,String> fieldIndexIdMap,String attrId){
+ return fieldIndexIdMap.keySet().stream().filter(
+ index -> attrId.equalsIgnoreCase(fieldIndexIdMap.get(index))).findFirst().orElseGet(()->0);
+ }
+
+ /**
+ * 澶勭悊鏋氫妇鐨勬樉绀哄璞�
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ * @param errorMap 閿欒淇℃伅鐨勬槧灏�
+ */
+ private void batchSwitchEnumAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
+ Map<String,String> errorMap ) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
+ s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid()))
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(text)){
+ List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+ boolean fined = false;
+ for (int i = 0; i < valueList.size(); i++) {
+ KeyValue keyValue = valueList.get(i);
+ //if(keyValue.getValue().equalsIgnoreCase(text)){
+ if(keyValue.getValue().equalsIgnoreCase(text)||keyValue.getKey().equalsIgnoreCase(text)){
+ try {
+ cbo.setAttributeValue(attrId, keyValue.getKey());
+ }catch (Throwable e){
+ logger.error("璁剧疆灞炴�у嚭閿�");
+ }
+ fined = true;
+ break;
+ }
+ }
+ if(!fined){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鐨勫�间笉绗﹀悎涓嬫媺鐨勮姹�");
+ }
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 杞Щboolean鍨嬬殑灞炴��
+ * @param attrVOS 灞炴�х殑瀵硅薄
+ * @param dataList 鏁版嵁
+ */
+ private void reSwitchBooleanAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList){
+ Map<String, CodeClassifyTemplateAttrVO> booleanAttrMap = attrVOS.stream().filter(
+ s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributedatatype())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(booleanAttrMap)) {
+ booleanAttrMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ try {
+ if (BooleanEnum.TRUE.getValue().equalsIgnoreCase(text) || "鏄�".equalsIgnoreCase(text)) {
+ cbo.setAttributeValue(attrId, BooleanEnum.TRUE.getValue());
+ } else {
+ cbo.setAttributeValue(attrId, BooleanEnum.FASLE.getValue());
+ }
+ }catch (Throwable e){
+
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 杞崲鍙傜収鐨勫��
+ * @param attrVOS 灞炴�х殑鏄剧ず瀵硅薄
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param errorMap 閿欒鐨勪俊鎭�
+ */
+ private void batchSwitchReferAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> referAttrVOMap = attrVOS.stream().filter(
+ s -> (StringUtils.isNotBlank(s.getReferbtmid()) || StringUtils.isNotBlank(s.getReferConfig()))
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(referAttrVOMap)){
+ Map<String/**琛ㄦ牸鍜屽�肩殑灞炴��**/,Map<String/**鏄剧ず灞炴�х殑鍊�**/,List<String>/**琛ㄦ牸閲岀殑鍊�**/>> linkValueMap = new HashMap<>();
+ referAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(text)){
+ UIFormReferVO referVO = getReferVO(attrVO);
+ String valueField = getValueField(referVO);
+ String showText = getTextField(referVO);
+ String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
+ Map<String, List<String>> showTextMap = linkValueMap.getOrDefault(tableAndAttr, new HashMap<>());
+ List<String> textList = showTextMap.getOrDefault(showText, new ArrayList<>());
+ if(!textList.contains(text)) {
+ textList.add(text);
+ }
+ showTextMap.put(showText,textList);
+ linkValueMap.put(tableAndAttr,showTextMap);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(linkValueMap)){
+ //闇�瑕侀�愪釜琛ㄧ殑鍊煎瓧娈碉紝閫愪釜鏌ヨ
+ Map<String/**琛ㄦ牸鍜屽�煎睘鎬�**/,Map<String/**鏄剧ず灞炴��**/, Map<String/**鍊�**/,String/**鏄剧ず鐨勫��**/>>> linkCboMap = new HashMap<>();
+ linkValueMap.forEach((tableAndAttr,showValueMap)->{
+ String[] split = tableAndAttr.split("#");
+ String table = split[0];
+ String valueField = split[1].toLowerCase(Locale.ROOT);
+ Map<String,Map<String,String>> dataMap = new HashMap<>();
+ showValueMap.forEach((showText,valueList)->{
+ Map<String,String> valueOidTextMap = new HashMap<>();
+ List<List<String>> valueCollections = VciBaseUtil.switchListForOracleIn(valueList);
+ String sql = "select " + valueField + "," + showText.toLowerCase(Locale.ROOT) +" from " + table + " where " + showText + " in (%s)";
+ valueCollections.stream().forEach(values->{
+ List<ClientBusinessObject> cbos = boService.queryByOnlySql(String.format(sql, VciBaseUtil.toInSql(values.toArray(new String[0]))));
+ if(!CollectionUtils.isEmpty(cbos)){
+ valueOidTextMap.putAll(cbos.stream().collect(Collectors.toMap(s->s.getAttributeValue(valueField),t->t.getAttributeValue(showText))));
+ }
+ });
+ dataMap.put(showText,valueOidTextMap);
+ });
+ linkCboMap.put(tableAndAttr,dataMap);
+ });
+ referAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String text = cbo.getAttributeValue(attrId);
+ if (StringUtils.isNotBlank(text)) {
+ UIFormReferVO referVO = getReferVO(attrVO);
+ String valueField = getValueField(referVO);
+ String showText = getTextField(referVO);
+ String tableAndAttr = VciBaseUtil.getTableName(referVO.getReferType()) + "#" + valueField;
+ if(!linkCboMap.containsKey(tableAndAttr)){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+
+ }else{
+ Map<String, Map<String, String>> dataMap = linkCboMap.get(tableAndAttr);
+ if(!dataMap.containsKey(showText)){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+ }else{
+ Map<String, String> data = dataMap.get(showText);
+ final boolean[] fined = {false};
+ data.forEach((key,value)->{
+ if(value.equalsIgnoreCase(text)){
+ fined[0] = true;
+ try {
+ cbo.setAttributeValue(attrId, key);
+ }catch (Throwable e){
+
+ }
+ }
+ });
+ if(!fined[0]){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍙傛暟灞炴�" + attrVO.getName() + "]鐨勫�煎湪绯荤粺涓笉瀛樺湪" );
+ }
+ }
+ }
+ }
+ });
+ });
+ }
+ }
+
+ }
+
+ /**
+ * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
+ * @param attrVO 灞炴�х殑淇℃伅
+ * @return 鍙傜収鐨勫唴瀹�
+ */
+ private UIFormReferVO getReferVO(CodeClassifyTemplateAttrVO attrVO){
+ UIFormReferVO referVO = null;
+ if(StringUtils.isNotBlank(attrVO.getReferConfig())){
+ referVO = JSONObject.parseObject(attrVO.getReferConfig(),UIFormReferVO.class);
+ }else{
+ referVO = new UIFormReferVO();
+ referVO.setReferType(attrVO.getReferbtmid());
+ referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
+ referVO.setTextField("name");
+ }
+ return referVO;
+ }
+
+ /**
+ * 鑾峰彇鍙傜収涓殑鍊肩殑瀛楁
+ * @param referVO 鍙傜収鐨勫璞�
+ * @return 榛樿涓篛id锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
+ */
+ private String getValueField(UIFormReferVO referVO){
+ String showText = referVO.getValueField();
+ if(StringUtils.isBlank(showText)){
+ return "oid";
+ }
+ if(showText.contains(",")){
+ //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塷id
+ List<String> strings = VciBaseUtil.str2List(showText);
+ if(strings.contains("oid")){
+ showText = "oid";
+ }else{
+ showText = strings.get(0);
+ }
+ }
+ return showText;
+ }
+
+ /**
+ * 鑾峰彇鍙傜収涓殑鏄剧ず鍐呭鐨勫瓧娈�
+ * @param referVO 鍙傜収鐨勫璞�
+ * @return 榛樿涓簄ame锛屾湁澶氫釜鐨勬椂鍊欙紝鑾峰彇绗竴涓�
+ */
+ private String getTextField(UIFormReferVO referVO){
+ String showText = referVO.getTextField();
+ if(StringUtils.isBlank(showText)){
+ return "name";
+ }
+ if(showText.contains(",")){
+ //闃叉涓囦竴鏈夊涓紝鐪嬬湅鏈夋病鏈塶ame
+ List<String> strings = VciBaseUtil.str2List(showText);
+ if(strings.contains("name")){
+ showText = "name";
+ }else{
+ showText = strings.get(0);
+ }
+ }
+ return showText;
+ }
+
+
+
+ /**
+ * 澶勭悊鍒嗙被娉ㄥ叆
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏璺緞
+ */
+ private void batchSwitchClassifyAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
+ CodeClassifyFullInfoBO classifyFullInfo,boolean isImPort) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
+ s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<String,CodeClassifyFullInfoBO> classifyFullInfoMap=new HashMap<>();
+ classifyFullInfoMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),classifyFullInfo);
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dataList.stream().forEach(cbo -> {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
+ //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
+ CodeClassifyVO classifyVO = null;
+ if(!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
+ //鎸囧畾浜嗗眰绾х殑
+ //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
+ if(isImPort){
+ if(!classifyFullInfoMap.containsKey(cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD))) {
+ CodeClassifyFullInfoBO currentClassifyFullInfo = classifyService.getClassifyFullInfo(cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD));
+ classifyFullInfoMap.put(currentClassifyFullInfo.getCurrentClassifyVO().getOid(), currentClassifyFullInfo);
+ }
+ }
+ CodeClassifyFullInfoBO newClassifyFullInfo= classifyFullInfoMap.get(cbo.getAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD));
+ List<CodeClassifyVO> classifyVOS = newClassifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+ int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
+ if (classifyVOS.size()>=level && level > 0 ) {
+ classifyVO = classifyVOS.get(level-1);
+ }
+ }else{
+ //褰撳墠鐨勫垎绫�
+ classifyVO = classifyFullInfo.getCurrentClassifyVO();
+ }
+ try {
+ if (classifyVO == null) {
+ //璇存槑灞傜骇鏈夎
+ cbo.setAttributeValue(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
+ } else {
+ Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
+ String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
+ cbo.setAttributeValue(attrId, value);
+ }
+ } catch (Throwable e) {
+ logger.error("璁剧疆灞炴�ч敊璇�", e);
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 澶勭悊缁勫悎瑙勫垯
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList excel鐨勬暟鎹唴瀹�
+ */
+ private void batchSwitchComponentAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ dataList.stream().forEach(cbo -> {
+ //浠巈xcel涓婃妸灞炴�ц浆鎹负map
+ Map<String,String> thisRowDataMap = new HashMap<>();
+ WebUtil.copyValueToMapFromCbos(cbo,thisRowDataMap);
+ //缁勫悎鍐呭
+ String value = formulaService.getValueByFormula(thisRowDataMap,attrVO.getComponentrule());
+ if(value == null){
+ value = "";
+ }
+ try {
+ cbo.setAttributeValue(attrId, value);
+ }catch (Throwable e){
+ logger.error("璁剧疆灞炴�х殑閿欒",e);
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮�
+ * @param attrVOS 妯℃澘灞炴��
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param errorMap 閿欒鐨勪俊鎭�
+ */
+ private void batchSwitchDateAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap =attrVOS.stream().filter(s ->
+ StringUtils.isNotBlank(s.getCodedateformat()) && VciBaseUtil.getBoolean(s.getFormdisplayflag()) && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ cboList.stream().forEach(cbo -> {
+ String value = cbo.getAttributeValue(attrId);
+ if (value == null) {
+ value = "";
+ }
+ if (StringUtils.isNotBlank(value)) {
+ boolean formated = false;
+ if(StringUtils.isNotBlank(attrVO.getCodedateformat())){
+ try {
+ Date date = VciDateUtil.str2Date(value, attrVO.getCodedateformat());
+ if(date!=null){
+ cbo.setAttributeValue(attrId,value);
+ formated = true;
+ }
+ } catch (Exception e) {
+ //璇存槑涓嶆槸杩欎釜鏍煎紡
+ }
+ }
+ if(!formated) {
+ try {
+ DateConverter dateConverter = new DateConverter();
+ dateConverter.setAsText(value);
+ value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
+ cbo.setAttributeValue(attrId,value);
+ }catch (Throwable e){
+ //杞崲涓嶄簡
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";灞炴�" + attrVO.getName() + "]鏃堕棿鏍煎紡涓嶆纭�" );
+ }
+ }
+ }
+ });
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙鏄惁鏋氫妇鐨勫彇鍊艰寖鍥�
+ * @param attrVOS 妯℃澘灞炴��
+ * @param dataList 鏁版嵁鐨勫垪琛�
+ * @return 涓嶇鍚堟灇涓惧彇鍊艰繑鍥炵殑琛屾暟
+ */
+ private Set<String> batchCheckEnumOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS, List<ClientBusinessObject> dataList) {
+ //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
+ Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = attrVOS.stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(enumAttrVOMap)){
+ return dataList.stream().filter(cbo->
+ enumAttrVOMap.keySet().stream().anyMatch(attrId-> {
+ String value = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(value)) {
+ CodeClassifyTemplateAttrVO attrVO = enumAttrVOMap.get(attrId);
+ List<KeyValue> comboboxKVs = engineService.listComboboxItems(attrVO);
+ return !comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getValue()));
+ }else{
+ return false;
+ }
+ })).map(s->s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).collect(Collectors.toSet());
+ }
+ return new HashSet<>();
+ }
+
+ /**
+ * 妫�鏌ユ牎楠岃鍒欐病鏈夐�氳繃鐨勫唴瀹�
+ * @param attrVOS 闇�瑕佹牎楠岀殑灞炴��
+ * @param dataList 鏁版嵁鐨勫垪琛�
+ * @param errorMap 閿欒鐨勪俊鎭槧灏�
+ * @return 鏍¢獙涓嶉�氳繃鐨勮鏁�
+ */
+ private void batchCheckVerifyOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS, List<ClientBusinessObject> dataList,Map<String,String> errorMap) {
+ Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = attrVOS.stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule()) && StringUtils.isBlank(s.getComponentrule())
+ &&StringUtils.isBlank(s.getClassifyinvokeattr())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if(!CollectionUtils.isEmpty(verifyAttrVOMap)){
+ Map<String/**琛屽彿**/,List<String>/**鏍¢獙涓嶉�氳繃鐨勫睘鎬�**/> unPassCheckMap = new HashMap<>();
+ verifyAttrVOMap.forEach((attrId,attrVO)->{
+ dataList.stream().forEach(cbo -> {
+ String value = cbo.getAttributeValue(attrId);
+ if(StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ List<String> unPassAttrs = unPassCheckMap.getOrDefault(rowIndex, new ArrayList<>());
+ unPassAttrs.add(attrVO.getName());
+ unPassCheckMap.put(rowIndex,unPassAttrs);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(unPassCheckMap)){
+ unPassCheckMap.forEach((rowIndex,unPassAttrs)->{
+ errorMap.put(rowIndex,";灞炴�" + unPassAttrs.stream().collect(Collectors.joining(",")) + "]鍐呭涓嶇鍚堟牎楠岃鍒欑殑瑕佹眰");
+ });
+ }
+ }
+ }
+
+ private void bathcResembleQuery(String codeClassifyOid, CodeClassifyTemplateVO templateVO, List<ClientBusinessObject> cboList,Map<String,String>resembleMap,String btmtypeid,List<DataResembleVO> dataResembleVOS){
+ CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(codeClassifyOid);
+ Map<String, String> conditionMap = new HashMap<>();
+ CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(engineService.getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
+ //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
+ Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
+ if (CollectionUtils.isEmpty(attrVOs)) {
+ return;
+ }
+ Map<String, CodeImprotResembleVO> codeImprotResembleVOMap=new HashMap<>();
+ List<CodeImprotResembleVO> codeImprotResembleVOList=new ArrayList<>();
+ Map<String,String> rowIndePathMap=new HashMap<>();
+ cboList.stream().forEach(clientBusinessObject -> {
+ CodeImprotResembleVO codeImprotResembleVO=new CodeImprotResembleVO();
+ final String[] path = {""};
+ List<String> fieldList=new ArrayList<>();
+ List<String> rowIndeList=new ArrayList<>();
+ String rowIndex = clientBusinessObject.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ attrVOs.forEach((attrId, attrVO) -> {
+ String value="";
+ /*if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+ value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
+ }else {*/
+ value= clientBusinessObject.getAttributeValue(attrId);
+ // }
+ fieldList.add(attrId);
+ value=StringUtils.isBlank(value)?"":value;
+ path[0] +=value+"#";
+ engineService.wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
+ });
+ List<Map<String,String>> dataMap=new ArrayList<>();
+ if(codeImprotResembleVOMap.containsKey(path[0])) {
+ codeImprotResembleVO=codeImprotResembleVOMap.get(path[0]);
+ rowIndeList=codeImprotResembleVO.getRownIndex();
+ dataMap= codeImprotResembleVO.getDataList();
+ resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
+ }else{
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ Map<String, String> andConditionMap = new HashMap<>();
+ andConditionMap.put("islastr", "1");
+ andConditionMap.put("islastv", "1");
+ conditionMap.putAll(andConditionMap);
+ PageHelper pageHelper = new PageHelper(-1);
+ pageHelper.addDefaultDesc("id");
+ CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmtypeid, templateVO, conditionMap, pageHelper);
+ List<ClientBusinessObject> resembleCboList=boService.queryByOnlySql(sqlBO.getSqlUnPage());
+ if(!CollectionUtils.isEmpty(resembleCboList)) {
+ List<Map<String, String>> finalDataMap = dataMap;
+ resembleCboList.stream().forEach(cbo->{
+ Map<String,String> resembDataMap=new HashMap<>();
+ fieldList.stream().forEach(field->{
+ String value=cbo.getAttributeValue(field);
+ value=StringUtils.isBlank(value)?"":value;
+ resembDataMap.put(field,value);
+ });
+ resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
+ resembDataMap.put("rowIndex","");
+ finalDataMap.add(resembDataMap);
+ });
+ resembleMap.put(rowIndex, "瀛樺湪鐩镐技鏁版嵁");
+
+ }
+ }
+ }
+ rowIndePathMap.put(rowIndex,path[0]);
+ rowIndeList.add(rowIndex);
+ codeImprotResembleVO.setPath(path[0]);
+ codeImprotResembleVO.setRownIndex(rowIndeList);
+ codeImprotResembleVO.setConditionMap(conditionMap);
+ codeImprotResembleVO.setFields(fieldList);
+ codeImprotResembleVO.setDataList(dataMap);
+ codeImprotResembleVOMap.put(path[0],codeImprotResembleVO);
+ });
+ Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((MdmEngineConstant.IMPORT_ROW_INDEX)), t -> t));
+ if(!CollectionUtils.isEmpty(rowIndePathMap)){
+ rowIndePathMap.forEach((rowIndex, path) -> {
+ if(codeImprotResembleVOMap.containsKey(path)){
+ CodeImprotResembleVO codeImprotResembleVO= codeImprotResembleVOMap.get(path);
+ List<String> fieldList=codeImprotResembleVO.getFields();
+ List<String> rownIndexList= codeImprotResembleVO.getRownIndex();
+ List<String> newRownIndexList = rownIndexList.stream().filter(cbo -> {
+ return rowIndex!=cbo;
+ }).collect(Collectors.toList());
+ newRownIndexList.stream().forEach(s -> {
+ resembleMap.put(s, "瀛樺湪鐩镐技鏁版嵁");
+ });
+ List<Map<String, String>>newDataList=new ArrayList<>();
+ DataResembleVO dataResembleVO=new DataResembleVO();
+ dataResembleVO.setOid(cboMap.get(rowIndex).getOid());
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String newRowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return rownIndexList.contains(newRowIndex)&&(!newRowIndex.equalsIgnoreCase(rowIndex));
+ }).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(needSaveCboList)) {
+ needSaveCboList.stream().forEach(cbo -> {
+ String newRowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ Map<String, String> resembDataMap = new HashMap<>();
+ fieldList.stream().forEach(field -> {
+ String value = cbo.getAttributeValue(field);
+ value = StringUtils.isBlank(value) ? "" : value;
+ resembDataMap.put(field, value);
+ });
+ resembDataMap.put("id",StringUtils.isBlank(cbo.getAttributeValue("id"))?"":cbo.getAttributeValue("id"));
+ resembDataMap.put("rowIndex", newRowIndex);
+ newDataList.add(resembDataMap);
+ });
+ }
+ List<Map<String, String>>dataList=codeImprotResembleVO.getDataList();
+ newDataList.addAll(dataList);
+ dataResembleVO.setDataList(newDataList);
+ dataResembleVOS.add(dataResembleVO);
+ }
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙鍏抽敭灞炴��
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
+ * @param cboList 鎵归噺鐨勬暟鎹�
+ */
+ private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
+ List<ClientBusinessObject> cboList) {
+ //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
+ //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+ CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+ //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+ //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+ Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+
+ boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+
+ //1. 鎴戜滑闇�瑕佸厛鍒ゆ柇excel瀵煎叆鐨勫唴瀹规槸鍚︽纭�
+ CodeImportResultVO resultVO = new CodeImportResultVO();
+ resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}",
+ new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"}));
+ resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
+ if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
+ //鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
+ cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX))).collect(Collectors.toList());
+ }
+ //2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
+ //鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ Map<String,List<ClientBusinessObject>> indexTODataMap=new HashMap<>();
+ List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
+ //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ Map<String, String> conditionMap = new HashMap<>();
+ ketAttrMap.forEach((attrId, attrVO) -> {
+ String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
+ if (value == null) {
+ value = "";
+ }
+ value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
+ engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+ });
+ if (!CollectionUtils.isEmpty(ketAttrMap)) {
+ CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, null);
+ boolean isKeyCheck= boService.queryCountBySql(sqlBO.getSqlCount(), new HashMap<>()) > 0;
+ if(isKeyCheck){
+ List<ClientBusinessObject> newCboList= boService.queryByOnlySql(sqlBO.getSqlUnPage());
+ indexTODataMap.put(cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX),newCboList);
+ }
+ return isKeyCheck;
+ }else{
+ return false;
+ }
+ }).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(repeatDataMap)){
+ resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).collect(Collectors.toSet()));
+ }
+ resultVO.setIndexTODataMap(indexTODataMap);
+ resultVO.setSuccess(true);
+ return resultVO;
+ }
+
+ /**
+ * 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿
+ * @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠
+ * @param dataList 瀵煎叆鐨勬暟鎹�
+ * @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒�
+ * @return 閲嶅鐨勮鍙�
+ */
+ private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap,
+ List<ClientBusinessObject> dataList,CodeKeyAttrRepeatRuleVO keyRuleVO){
+ Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
+ boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+ //蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ
+ List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrdernum().compareTo(o2.getOrdernum()))).collect(Collectors.toList());
+ Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>();
+ dataList.parallelStream().forEach(cbo-> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < attrVOList.size(); i++) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
+ String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+ String value = cbo.getAttributeValue( attrId);
+ if (value == null) {
+ value = "";
+ }
+ if(trim){
+ value = value.trim();
+ }
+ if(trimAll){
+ value = value.replace(" ","");
+ }
+ if(ignoreCase){
+ value = value.toLowerCase(Locale.ROOT);
+ }
+ if(ignoreWidth){
+ value = VciBaseUtil.toDBC(value);
+ }
+ sb.append(value).append("${ks}");
+ }
+ String keyString = sb.toString();
+ if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
+ selfRepeatRowIndexList.add(rowIndex);
+ }else {
+ rowIndexKeyStringMap.put(rowIndex, sb.toString());
+ }
+ });
+ //鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊
+ return selfRepeatRowIndexList;
+ }
+
+ /**
+ * 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴��
+ * @param attrVO 灞炴�х殑鏄剧ず瀵硅薄
+ * @param text 鍗曞厓鏍肩殑鍊�
+ */
+ private Object exportKeyAndRequired(Workbook workbook,CodeClassifyTemplateAttrVO attrVO,Object text){
+ //蹇呰緭鍔�*锛屽叧閿睘鎬т负钃濊壊
+ if (VciBaseUtil.getBoolean(attrVO.getRequireflag()) || VciBaseUtil.getBoolean(attrVO.getKeyattrflag())) {
+ String value = text.toString();
+ if(VciBaseUtil.getBoolean(attrVO.getRequireflag())) {
+ value += REQUIRED_CHAR;
+ }
+ if(VciBaseUtil.getBoolean(attrVO.getKeyattrflag())){
+ value += KEY_ATTR_CHAR;
+ }
+ RichTextString ts = new HSSFRichTextString(value);
+ if(VciBaseUtil.getBoolean(attrVO.getRequireflag())){
+ Font font = workbook.createFont();
+ font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());
+ ts.applyFont(font);
+ }
+
+ if(VciBaseUtil.getBoolean(attrVO.getKeyattrflag())){
+ Font font = workbook.createFont();
+ font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
+ ts.applyFont(font);
+ }
+ return ts;
+ }
+ return text;
+ }
+
+ /**
+ * 鏌ヨ鏁版嵁骞跺鍑哄埌excel
+ * @param btmTypeId 涓氬姟绫诲瀷
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉
+ * @param selectFieldList 鏌ヨ鐨勫瓧娈�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勪俊鎭�
+ * @param exportAttrDTO 瀵煎嚭鐨勫睘鎬�
+ * @param excelNameList excel鐨勬枃浠跺悕绉�
+ * @param tempFolder 涓存椂鏂囦欢澶�
+ * @param excelIndex excel鐨勯『搴�
+ */
+ private void selectDataAndExportExcelName(String btmTypeId, Map<String, String> conditionMap, PageHelper pageHelper, List<String> selectFieldList,
+ CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeExportAttrDTO exportAttrDTO,
+ List<String> excelNameList, String tempFolder,
+ Integer excelIndex) {
+ DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
+ if(dataGrid == null || CollectionUtils.isEmpty(dataGrid.getData())){
+ return;
+ }
+ //杞崲鏁版嵁
+ List<Map<String, String>> dataMap = dataGrid.getData();
+ //灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+ engineService.wrapperData(dataMap, templateVO, selectFieldList,false);
+ //modify by weidy@2022-09-27
+ //鍥犱负鍦ㄥ垪琛ㄥ拰琛ㄥ崟鐨勬樉绀虹殑鏃跺�欙紝鎴戜滑鐨勫紑鍏崇被鍨嬮〉闈細澶勭悊锛屼絾鏄湪瀵煎嚭鐨勬椂鍊欙紝鎴戜滑闇�瑕佸皢true鍜宖alse閮芥浛鎹㈡垚涓枃
+ engineService.wrapperBoolean(dataMap,templateVO);
+ Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<Integer, String> attrIdIndexMap = exportAttrDTO.getAttrIdIndexMap();
+ if (CollectionUtils.isEmpty(attrIdIndexMap)) {
+ attrIdIndexMap = templateVO.getAttributes().stream().filter(s->selectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getOrdernum(), t -> t.getId()));
+ }
+ List<Integer> indexList = attrIdIndexMap.keySet().stream().sorted().collect(Collectors.toList());
+
+ String excelName = tempFolder + File.separator +
+ classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_瀵煎嚭_" + excelIndex + ".xls";
+ try {
+ new File(excelName).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+ }
+ excelNameList.add(excelName);
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ Workbook workbook = new HSSFWorkbook();
+ for (int i = 0; i < indexList.size(); i++) {
+ String attrId = attrIdIndexMap.get(indexList.get(i)).toLowerCase(Locale.ROOT);
+ if (attrVOMap.containsKey(attrId)) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+ Object text = attrVO.getName();
+ text = exportKeyAndRequired(workbook,attrVO,text);
+ WriteExcelData excelData = new WriteExcelData(0, i, text);
+ if(text instanceof RichTextString){
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ }
+ excelDataList.add(excelData);
+ }
+ }
+ final Integer[] rowIndex = {0};
+ Map<Integer, String> finalAttrIdIndexMap = attrIdIndexMap;
+ dataMap.stream().forEach(data -> {
+ rowIndex[0]++;
+ for (int i = 0; i < indexList.size(); i++) {
+ Integer index = indexList.get(i);
+ String attrId = finalAttrIdIndexMap.get(index).toLowerCase(Locale.ROOT);
+ if (attrVOMap.containsKey(attrId)) {
+ CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+ if (StringUtils.isNotBlank(attrVO.getEnumid()) || StringUtils.isNotBlank(attrVO.getEnumString())) {
+ attrId = attrId + "Text";
+ }
+ if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
+ attrId = attrId + "name";
+ }
+ if(VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attrId)){
+ attrId = VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT);
+ }
+ excelDataList.add(new WriteExcelData(rowIndex[0], i, data.getOrDefault(attrId, "")));
+ }
+ }
+ });
+ WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+ ExcelUtil.writeDataToFile(excelName, excelOption);
+ }
+
+ /**
+ * 鎵归噺鏍¢獙鏁版嵁鐨勪俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫唴瀹�
+ */
+ private void batchCheckRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String,String> errorMap){
+ Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(s ->
+ VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//涓嶈兘鏄粍鍚堢殑鍜屽垎绫绘敞鍏ョ殑
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ //涓嶮dmEngineServiceImpl閲岄潰鐨刢heckRequiredAttrOnOrder 閫昏緫搴旇鐩镐技
+ if(!CollectionUtils.isEmpty(requiredAttrMap)) {
+ Set<String> nullRowIndex = cboList.stream().filter(cbo -> requiredAttrMap.keySet().stream().anyMatch(attrId -> StringUtils.isBlank(cbo.getAttributeValue(attrId)))).map(cbo -> cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX)).collect(Collectors.toSet());
+ if(!CollectionUtils.isEmpty(nullRowIndex)){
+ String checkAttr = requiredAttrMap.values().stream().map(CodeClassifyTemplateAttrVO::getName).collect(Collectors.joining(","));
+ nullRowIndex.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鏍¢獙瑙勫垯涓嶉�氳繃锛屾湁鏍¢獙鐨勫睘鎬т负" + checkAttr);
+ });
+ }
+ }
+ }
+
+ /**
+ * 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param errorMap 閿欒鐨勪俊鎭�
+ */
+ private void batchCheckIdExistOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String ,String> errorMap){
+ List<String> existIds = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(cboList).stream().forEach(cbos -> {
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + ")");
+ //涓氬姟鏁版嵁濡傛灉鐮佸�煎洖鏀朵細鐩存帴鍒犻櫎鏁版嵁锛屾墍浠ヨ繖閲岀洿鎺ュ垽鏂槸鍚﹀瓨鍦ㄥ嵆鍙�
+ existIds.addAll(Optional.ofNullable(boService.queryCBO(templateVO.getBtmTypeId(), conditionMap, new PageHelper(-1), Arrays.stream(new String[]{"id"})
+ .collect(Collectors.toList()))).orElseGet(() -> new ArrayList<>()).stream().map(s -> s.getAttributeValue("id")).collect(Collectors.toList()));
+ });
+ if(!CollectionUtils.isEmpty(existIds)){
+ String idFieldName = templateVO.getAttributes().stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
+ if(StringUtils.isBlank(idFieldName)){
+ idFieldName = "浼佷笟缂栫爜";
+ }
+ String finalIdFieldName = idFieldName;
+ cboList.stream().forEach(cbo->{
+ String id = cbo.getId();
+ if(StringUtils.isBlank(id)){
+ id = cbo.getAttributeValue("id");
+ }
+ if(existIds.contains(id)){
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ String msg = errorMap.getOrDefault(rowIndex, "");
+ msg+=";" + finalIdFieldName + "鐨勫�煎湪绯荤粺涓凡缁忓瓨鍦�";
+ errorMap.put(rowIndex,msg);
+ }
+ });
+ }
+ }
+
+ /**
+ * 浠巑ap閲岃幏鍙栧��
+ * @param dataMap 鍊肩殑鏄犲皠
+ * @param attrId 灞炴�х殑缂栧彿
+ * @return 鍊�
+ */
+ private String getValueFormMap(Map<String,String> dataMap,String attrId){
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ return dataMap.getOrDefault(attrId,"");
+ }
+
+ /**
+ * 璁剧疆鍊煎埌map涓�
+ * @param dataMap 鍊肩殑鏄犲皠鍐呭
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param value 灞炴�х殑鍊�
+ */
+ private void setValueToMap(Map<String,String> dataMap,String attrId,String value){
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ dataMap.put(attrId,value);
+ }
+ /**
+ * 闆嗘垚鎵归噺鐢宠鏁版嵁
+ * @param orderDTO 鍒嗙被鐨勪富閿�
+ * @param dataObjectVO 鏁版嵁淇℃伅
+ * @param resultDataObjectDetailDOs 閿欒淇℃伅
+ * @return 鏈夐敊璇俊鎭殑excel
+ */
+ @Override
+ public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+ Map<String,String> errorMap=new HashMap<>();
+ VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+ engineService.checkSecValueOnOrder(ruleVO,orderDTO);
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ List<RowDatas> rowDataList = dataObjectVO.getRowData();
+ Map<String ,RowDatas>rowDataMap=new LinkedHashMap<>();
+ rowDataList.stream().forEach(rowData->{
+ rowDataMap.put(rowData.getRowIndex(),rowData);
+ });
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+
+ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
+ //checkTemplateSync(sheetDataSetList,templateVO);
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->!MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataObjectVO.getColName();
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
+ getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
+
+ //闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+ List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+ && StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+ ).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+ throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪excel涓病鏈夋壘鍒�");
+ }
+ List<ClientBusinessObject> cboList = new ArrayList<>();
+ String fullPath = getFullPath(classifyFullInfo);
+
+ // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
+ boolean isProcess=false;
+ //娉ㄩ噴鎺夋澶勪笅闈㈡墍鏈夐兘鎸夌収涓嶅垽鏂祦绋嬪瓨鍌ㄧ姸鎬佷簡
+ /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
+ isProcess=true;
+ }***/
+ Map<String,String> codeOidToSystemOidMap=new HashMap<>();//瀛樺偍缂栫爜鏁版嵁鍜岄泦鎴愮郴缁熸暟鎹畂id瀵圭収鏄犲皠
+ excelToCbo(classifyFullInfo,titleRowData,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,isProcess,"create",errorMap,codeOidToSystemOidMap);
+
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+ batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
+
+
+ /**
+ * 鍏抽敭鐔熸倝閿欒鎻愮ず
+ */
+ Map<String,String> errorKeyMap=new HashMap<>();
+
+
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+ selfRepeatRowIndexList.stream().forEach(rowIndex->{
+ /* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
+ RowDatas rowData= rowDataMap.get(rowIndex);
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode("");
+ resultDataObjectDetailDO.setId(rowData.getOid());
+ resultDataObjectDetailDO.setErrorid("1");
+ resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�ч噸澶�");
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ */
+ errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";浼犲叆鐨勬暟鎹腑鍏抽敭灞炴�ч噸澶�");
+ });
+ }
+ /****
+ * 鍏抽敭灞炴�т笌绯荤粺涓噸澶嶇殑鍒ゆ柇
+ */
+ if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+ //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙
+ /* RowDatas rowData= rowDataMap.get(rowIndex);
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode("");
+ resultDataObjectDetailDO.setId(rowData.getOid());
+ resultDataObjectDetailDO.setErrorid("1");
+ resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ */
+ errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ });
+ }
+ //鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+ // cboList.stream().forEach(cbo->{
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+ //5.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS,cboList,errorMap);
+ //6.鏃堕棿鏍煎紡鐨勯獙璇�
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+ //7.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+ //鏍¢獙灞炴�ф槸鍚︽纭敊璇俊鎭�
+ if(errorMap.size()>0){
+ String[] newMsg = {""};
+ cboList.stream().forEach(cbo -> {
+ String rowIndex =cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ if(errorMap.containsKey(rowIndex)){
+ String oid=cbo.getOid();
+ String sourceOid=oid;
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ String code="";
+ String errorid="103";
+ String mes=errorMap.get(rowIndex);
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode(code);
+ resultDataObjectDetailDO.setId(sourceOid);
+ resultDataObjectDetailDO.setErrorid(errorid);
+ resultDataObjectDetailDO.setMsg(mes);
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ }
+ });
+
+ }
+
+ Map<String,String> newKeyMap=new HashedMap();
+ if(errorKeyMap.size()>0 ) {
+ errorKeyMap.keySet().forEach(key->{
+ if(!errorMap.containsKey(key)){
+ newKeyMap.put(key,errorKeyMap.get(key));
+ }
+ });
+ if(newKeyMap.size()>0) {
+ Set<ClientBusinessObject> editBoList = new HashSet<>();
+ Map<String, List<ClientBusinessObject>> indexTodataMap = keyResultVO.getIndexTODataMap();
+ cboList.stream().forEach(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ if (indexTodataMap.containsKey(rowIndex)) {
+ String oid = cbo.getOid();
+ String sourceOid = oid;
+ String code = "";
+ String errorid = "201";
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ List<ClientBusinessObject> newCboList = indexTodataMap.get(rowIndex);
+ if (!CollectionUtils.isEmpty(newCboList)) {
+ ClientBusinessObject newCbo= newCboList.get(0);
+ String lcstatus =newCbo.getAttributeValue("lcstatus");
+ String newOid =newCbo.getAttributeValue("oid");
+ String ts =newCbo.getAttributeValue("ts");
+ code=newCbo.getAttributeValue("id");
+ String lastmodifier=newCbo.getAttributeValue("lastmodifier");
+ if (!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
+ newCbo.setBusinessObject(cbo.getBusinessObject());
+ newCbo.setOid(newOid);
+ newCbo.setLastModifier(lastmodifier);
+ newCbo.setId(code);
+ newCbo.setTs(ts);
+ cbo.setLastModifier(cbo.getLastModifier());
+ editBoList.add(newCbo);
+ }
+ String mes = errorKeyMap.get(rowIndex);
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode(code);
+ resultDataObjectDetailDO.setId(sourceOid);
+ resultDataObjectDetailDO.setErrorid(errorid);
+ resultDataObjectDetailDO.setMsg(mes);
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ }
+ }
+ });
+ //鍏抽敭鐔熸倝鏇存敼
+ if (!CollectionUtils.isEmpty(editBoList)) {
+ BatchCBO batchCbos = new BatchCBO();
+ batchCbos.setUpdateCbos(editBoList);
+ this.boService.persistenceBatch(batchCbos);//鏇存敼鏁版嵁
+ }
+ errorMap.putAll(errorKeyMap);
+ }
+ }
+
+ // });
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex =cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+ List<String> needRowIndexList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ //鐢熸垚缂栫爜鐨勫唴瀹�
+ try {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(templateVO, needSaveCboList);
+ // if(!isProcess){
+ needSaveCboList.stream().forEach(needSaveCbo->{
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode(needSaveCbo.getId());
+ String oid=needSaveCbo.getOid();
+ String sourceOid=oid;
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ resultDataObjectDetailDO.setId(sourceOid);
+ resultDataObjectDetailDO.setErrorid("0");
+ resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛");
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ });
+ /* }else{
+ needSaveCboList.stream().forEach(needSaveCbo->{
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ // resultDataObjectDetailDO.setCode(needSaveCbo.getId());//涓嶇敤杩斿洖缂栫爜
+ String oid=needSaveCbo.getOid();
+ String sourceOid=oid;
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ resultDataObjectDetailDO.setId(sourceOid);
+ resultDataObjectDetailDO.setErrorid("204");
+ resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛锛岀瓑寰呯紪鐮佺郴缁熷彂甯冿紒");
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ });
+
+ }*/
+ }catch (Throwable e){
+ e.printStackTrace();
+ needSaveCboList.stream().forEach(needSaveCbo->{
+ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ resultDataObjectDetailDO.setCode("");
+ String oid=needSaveCbo.getOid();
+ String sourceOid=oid;
+ if(codeOidToSystemOidMap.containsKey(oid)){
+ sourceOid=codeOidToSystemOidMap.get(oid);
+ }
+ resultDataObjectDetailDO.setId(sourceOid);
+ resultDataObjectDetailDO.setErrorid("1");
+ resultDataObjectDetailDO.setMsg("淇濆瓨鍑虹幇闂:"+e.getMessage());
+ resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
+ });
+
+ }
+ }
+ }
+
+ /***
+ * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛
+ * @param codeClassifyVO;
+ * @param dataObjectVO 鏁版嵁淇℃伅
+ * @param resultDataObjectDetailDOs 閿欒淇℃伅
+ */
+ @Override
+ public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO,DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
+ String errorid="";
+ String msg="";
+ //鏌ヨ鍒嗙被鍜屾ā鏉�
+ //鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+ List<RowDatas> rowDataList = dataObjectVO.getRowData();
+ Map<String, RowDatas> rowDataMap = new LinkedHashMap<>();
+ Map<String, RowDatas> codeDataMap = new LinkedHashMap<>();
+ rowDataList.stream().forEach(rowData -> {
+ rowDataMap.put(rowData.getRowIndex(), rowData);
+ codeDataMap.put(rowData.getCode(), rowData);
+ });
+ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
+ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
+ //checkTemplateSync(sheetDataSetList,templateVO);
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+ List<String> titleRowData = dataObjectVO.getColName();
+ Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
+ getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
+ Map<String, String> cboOidMap = new HashMap<>();
+ cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
+ List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
+ Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+ Map<String, String> errorMap = new HashMap<>();
+ List<CodeOrderDTO> codeOrderDTOList = new ArrayList<>();
+ this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap);
+ // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
+ boolean isProcess=false;
+ /** if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
+ isProcess=true;
+ }**/
+
+ Map<String, CodeOrderDTO> orderDTOMap = codeOrderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+ List<ClientBusinessObject> updateList = new ArrayList<>();
+ List<ClientBusinessObject> deleteList = new ArrayList<>();
+
+ BatchCBO batchCBO = new BatchCBO();
+ CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
+ Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+ // boolean finalIsProcess = isProcess;
+ orderDTOMap.keySet().stream().forEach(code -> {
+ CodeOrderDTO orderDTO = orderDTOMap.get(code);
+ ClientBusinessObject cbo = cboMap.get(code);
+ String dataStatus=cbo.getLcStatus();
+ RowDatas rowData=codeDataMap.get(code);
+ String status=rowData.getStatus();
+ String operation=rowData.getOperation();
+ if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
+ // throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+ }
+ /* if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
+ throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
+ }*/
+ if(operation.equals("update")) {
+ //1. 鍒ゆ柇蹇呰緭椤�
+ checkRequiredAttrOnOrder(templateVO, orderDTO, errorMap);
+ //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+ switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO, errorMap);
+ //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+ switchComponentAttrOnOrder(templateVO, orderDTO);
+ //4.鏍¢獙瑙勫垯
+ checkVerifyOnOrder(templateVO, orderDTO, errorMap);
+ //5.鍒ゆ柇鍏抽敭灞炴��
+ checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO, errorMap);
+ //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+ checkEnumOnOrder(templateVO, orderDTO, errorMap);
+ //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+ switchDateAttrOnOrder(templateVO, orderDTO);
+ //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+ copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true, errorMap);
+ //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+ cbo.setDescription(orderDTO.getDescription());
+ cbo.setName(orderDTO.getName());
+ try {
+ cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+ cbo.setAttributeValue("name", orderDTO.getName());
+ // if(finalIsProcess){//鍦ㄦ祦绋嬩腑涓嶅厑璁告洿鏀�
+ // errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼!"));
+ // }else{
+ cbo.setLcStatus(status);
+ cbo.setAttributeValue("lcstatus",status);
+ // }
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ updateList.add(cbo);
+ }else if(operation.equals("delete")){//濡傛灉鍦ㄦ祦绋嬩腑涓嶅厑璁稿垹闄わ紝涓嶅湪娴佺▼涓姸鎬佷负鍙戝竷鎴栬�呭仠鐢ㄧ殑鏁版嵁涓嶅厑璁稿垹闄わ紝灏嗗叾鏇存敼涓哄仠鐢紝鍏朵粬鐨勬儏鍐电洿鎺ュ垹闄�
+ // if(finalIsProcess){
+ // errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鍒犻櫎!"));
+ //}else {
+ try {
+ Map<String, String> condtionMap = new HashMap<>();
+ condtionMap.put("createcodeoid", cbo.getOid());
+ logger.info("oid:" + cbo.getOid());
+ List<ClientBusinessObject> codeCbos = boService.queryCBO("codeallcode", condtionMap);
+ logger.info("codeCbos size:" + codeCbos.size());
+ if (!CollectionUtils.isEmpty(codeCbos)) {
+ ClientBusinessObject codeCbo = codeCbos.get(0);
+ logger.info("codeCbos code:" + codeCbo.getId());
+ codeCbo.setLcStatus(CodeDefaultLC.TASK_BACK.getValue());
+ codeCbo.setAttributeValue("lcstatus", CodeDefaultLC.TASK_BACK.getValue());
+ updateList.add(codeCbo);
+ }
+ deleteList.add(cbo);
+ }catch (VCIError e) {
+ e.printStackTrace();
+ }
+ // }
+ }else if(operation.equals("editstatus")){
+ try {
+ // if (finalIsProcess) {
+ // errorMap.put(code, errorMap.getOrDefault(code, errorMap.getOrDefault(code, "") + ";鏁版嵁" + code + "鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼鐘舵��!"));
+ // } else {
+ cbo.setLcStatus(status);
+ cbo.setAttributeValue("lcstatus", status);
+ updateList.add(cbo);
+ // }
+ }catch (VCIError e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ /**
+ * 閿欒淇℃伅杈撳嚭
+ */
+ if(errorMap.size()>0){
+ errorMap.keySet().forEach(code->{
+ if(codeDataMap.containsKey(code)){
+ RowDatas rowDatas= codeDataMap.get(code);
+ String dataMsg=errorMap.get(code);
+ String oid=rowDatas.getOid();
+ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ xmlResultDataObjectDetailDO.setErrorid("103");
+ xmlResultDataObjectDetailDO.setMsg(dataMsg);
+ xmlResultDataObjectDetailDO.setId(oid);
+ xmlResultDataObjectDetailDO.setCode(code);
+ resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+ }
+ });
+ }else {
+ //瀛樺偍鏁版嵁
+ try {
+ batchCBO.getUpdateCbos().addAll(updateList);
+ batchCBO.getDeleteCbos().addAll(deleteList);
+ boService.persistenceBatch(batchCBO);
+ engineService.batchSaveSelectChar(firstTemplateVO, updateList);
+ errorid="0";
+ msg="鏇存柊/鐘舵�佹洿鏀�/鍒犻櫎鎴愬姛锛�";
+ }catch (Throwable e){
+ errorid="1";
+ msg="淇濆瓨澶辫触锛�"+e;
+ }finally {
+ String finalMsg = msg;
+ String finalErrorid = errorid;
+ cboList.stream().forEach(cbo->{
+ String code =cbo.getId();
+ if(codeDataMap.containsKey(code)) {
+ RowDatas rowDatas=codeDataMap.get(code);
+ String oid=rowDatas.getOid();
+ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
+ xmlResultDataObjectDetailDO.setErrorid(finalErrorid);
+ xmlResultDataObjectDetailDO.setMsg(finalMsg);
+ xmlResultDataObjectDetailDO.setId(oid);
+ xmlResultDataObjectDetailDO.setCode(code);
+ resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+ }
+ });
+
+ }
+ }
+ }
+
+ /***
+ * 浠庣紦瀛橀噷鑾峰彇鍒伴渶瑕佸鍏ョ殑鐩稿叧鏁版嵁
+ * @param codeClssifyOid
+ * @param redisOid
+ * @return
+ */
+ @Override
+ public DataGrid<Map<String, String>> gridDatas(String codeClssifyOid, String redisOid) {
+ VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
+ List<CodeImprotDataVO> codeImprotDataVOs = redisService.getCacheList(redisOid+"-"+codeClssifyOid);
+ CodeImprotDataVO codeImprotDataVO=new CodeImprotDataVO();
+ if(!CollectionUtils.isEmpty(codeImprotDataVOs)){
+ if(StringUtils.isNotBlank(codeClssifyOid)){
+ Map<String/**鍒嗙被鍚嶇О**/, CodeImprotDataVO/**鑻辨枃鍚嶇О**/> codeClassifyDatasMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getCodeClassifyOid(), t -> t,(o1, o2)->o2));
+ if(codeClassifyDatasMap.containsKey(codeClssifyOid)){
+ codeImprotDataVO= codeClassifyDatasMap.get(codeClssifyOid);
+ }else{
+ codeImprotDataVO= codeImprotDataVOs.get(0);
+ }
+ }
+ }
+ DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
+ List<Map<String, String>> dataList = new ArrayList<>();
+ if(codeImprotDataVO!=null){
+ dataList= codeImprotDataVO.getDatas();
+ }
+ dataGrid.setData(dataList);
+ if (!CollectionUtils.isEmpty(dataList)) {
+ dataGrid.setTotal(dataList.size());
+ }
+ return dataGrid;
+ }
+
+ /**
+ *
+ * @param oid
+ * @param redisOid
+ * @return
+ */
+ @Override
+ public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){
+ VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭");
+ List<DataResembleVO> codeImprotDataVOs = redisService.getCacheList(redisOid);
+ DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
+ List<Map<String, String>> dataList = new ArrayList<>();
+
+ if(!CollectionUtils.isEmpty(codeImprotDataVOs)){
+ Map<String/**鍒嗙被鍚嶇О**/, DataResembleVO/**鏁版嵁瀵硅薄**/> rowResembleDataMap = codeImprotDataVOs.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t,(o1, o2)->o2));
+ if(rowResembleDataMap.containsKey(oid)){
+ DataResembleVO dataResembleVO= rowResembleDataMap.get(oid);
+ dataList= dataResembleVO.getDataList();
+ }
+ }
+
+ dataGrid.setData(dataList);
+ if (!CollectionUtils.isEmpty(dataList)) {
+ dataGrid.setTotal(dataList.size());
+ }
+ return dataGrid;
+ }
+ @Override
+ public List<CodeImportTemplateVO> gridclassifys(String redisOid) {
+ List<CodeImportTemplateVO> codeImportTemplateVOs=new ArrayList<>();
+ VciBaseUtil.alertNotNull(redisOid,"鍒嗙被",redisOid,"鍒嗙被缂撳瓨涓婚敭");
+ List<CodeImportTemplateVO> redisServiceCacheObjects=redisService.getCacheList(redisOid);
+ if(redisServiceCacheObjects!=null){
+ codeImportTemplateVOs= redisServiceCacheObjects;
+ }
+ return codeImportTemplateVOs;
+ }
+
+ @Override
+ public BaseResult batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList,String classifyAttr, boolean isImprot) {
+ List<SheetRowData> rowDataList = new ArrayList<>();
+ List<ClientBusinessObject> allNeedSaveCboList=new ArrayList<>();
+ codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
+ List<ClientBusinessObject>cboList=new ArrayList<>();
+ List<String> colList=codeImprotSaveDatVO.getClos();
+ CodeOrderDTO orderDTO= codeImprotSaveDatVO.getOrderDTO();
+
+ List<Map<String, String>> dataList= codeImprotSaveDatVO.getDataList();
+ Map<Integer, String> fieldIndexMap = new HashMap();
+ for (int i=0;i<dataList.size();i++){
+ SheetRowData sheetRowData=new SheetRowData();
+ Map<String,String> dataMap= dataList.get(i);
+ Map<Integer, String> data = new HashMap();
+ final int[] colIndex = {0};
+ Map<Integer, String> finalFieldIndexMap = new HashMap<>();
+ dataMap.forEach((field, value)->{
+ if(!ROW_INDEX.equalsIgnoreCase(field)){
+ data.put(colIndex[0],value);
+ finalFieldIndexMap.put(colIndex[0]++,field);
+ }
+ });
+ fieldIndexMap=finalFieldIndexMap;
+ sheetRowData.setData(data);
+ sheetRowData.setRowIndex(i+"");
+ rowDataList.add(sheetRowData);
+ }
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+
+ // CodeClassifyTemplateVO codeClassifyTemplateVO= engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+ CodeClassifyTemplateVO codeClassifyTemplateVO= templateServiceI.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ //闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+ List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
+ !MdmEngineConstant.DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ String fullPath = getFullPath(classifyFullInfo);
+ excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
+ Map<String,String> errorMap=new HashMap<>();
+ if(isImprot) {
+ Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
+ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+ //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
+ List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(orderDTO.getCodeClassifyOid(), true, classifyAttr, true);
+ Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
+ Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO());
+ pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO());
+ //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇
+ //妫�鏌ュ垎绫荤殑璺緞
+ checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap);
+ }
+ //鍒嗙被娉ㄥ叆
+ batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,isImprot);
+ //boolean
+ reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+ //5.鏍¢獙鏋氫妇鏄惁姝g‘
+ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+ //7.澶勭悊鍙傜収鐨勬儏鍐�
+ batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+ //6.鏃堕棿鏍煎紡鐨勯獙璇�
+ //6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+ batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+ //鏈�鍚庡紕缁勫悎瑙勫垯
+ batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+ //3.鍒ゆ柇鍏抽敭灞炴��
+ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList);
+ Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+ Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+ if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+ });
+ }
+ //4.鏍¢獙瑙勫垯
+ batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+
+
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ List<ClientBusinessObject>needSaveCboList = cboList.stream().filter(cbo -> {
+ String rowIndex = cbo.getAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return !errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ if (!CollectionUtils.isEmpty(needSaveCboList)) {
+ //9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+ if (isImprot) {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, null, needSaveCboList);
+ }else {
+ productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
+ }
+ allNeedSaveCboList.addAll(needSaveCboList);
+ }
+ //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+ engineService.batchSaveSelectChar(codeClassifyTemplateVO, allNeedSaveCboList);
+ });
+ return BaseResult.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
+ }
+ /***
+ *
+ * @param codeClassifyVO
+ * @param templateVO
+ * @param codeDataMap
+ * @param codeSystemObjectMap
+ * @param codeOrderDTOList
+ * @param errorMap
+ * @return
+ */
+ private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap){
+ codeDataMap.keySet().forEach(code->{
+ RowDatas rowDatas=codeDataMap.get(code);
+ Map<String, String> data= rowDatas.getFiledValue();
+ CodeOrderDTO orderDTO = new CodeOrderDTO();
+ if(codeSystemObjectMap.containsKey(code)){
+ ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
+ orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
+ orderDTO.setOid(sysDataObject.getOid());//鏁版嵁oid
+ orderDTO.setLcStatus(rowDatas.getStatus());//鐘舵��
+ orderDTO.setId(code);
+ orderDTO.setTs(VciDateUtil.getDateFromStringForVci(sysDataObject.getTs()));
+ orderDTO.setBtmname(codeClassifyVO.getBtmname());//涓氬姟绫诲瀷
+ orderDTO.setDescription("闆嗘垚璋冪敤:鏇存柊");//鏁版嵁鎻忚堪
+ if(data.containsKey("name")){
+ String name=data.get("name");
+ orderDTO.setName(name);//鍚嶇О灞炴�у��
+ }
+ orderDTO.setData(data);//璁剧疆鏁版嵁
+ orderDTO.setSecDTOList(null);//鍒嗙被鐮佹
+ orderDTO.setEditInProcess(false);//鏄惁鍦ㄦ祦绋嬩腑
+ orderDTO.setTemplateOid(templateVO.getOid());
+ }else{
+ errorMap.put("code","缂栫爜涓猴細銆�"+code+"銆戠殑鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+ }
+ codeOrderDTOList.add(orderDTO);
+ });
+ }
+
+ /**
+ * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
+ *
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param cbo 涓氬姟鏁版嵁
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param edit 鏄惁涓轰慨鏀�
+ */
+ private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, ClientBusinessObject cbo,
+ CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
+ boolean edit,Map<String,String> errorMap) {
+ String fullPath = "";
+ if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
+ fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
+ .map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
+ } else {
+ fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
+ }
+ orderDTO.getData().forEach((key, value) -> {
+ if (!edit || (!boService.checkUnAttrUnEdit(key) &&
+ !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
+ try {
+ cbo.setAttributeValue(key, value);
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+ }
+ }
+ });
+ try {
+ cbo.setAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD, templateVO.getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED, fullPath);
+ if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
+ //鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝
+ if (StringUtils.isNotBlank(cbo.getLctId())) {
+ OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctId());
+ if (lifeCycleVO != null) {
+ cbo.setLcStatus(lifeCycleVO.getStartStatus());
+ } else {
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }
+ } else {
+ cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ }
+
+ }
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(MdmEngineConstant.SECRET_FIELD));
+ if (secret == 0 || !secretService.checkDataSecret(secret)) {
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(MdmEngineConstant.SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
+ }
+ } catch (Throwable e) {
+ logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
+ }
+ }
+
+ /**
+ * 杞崲鏃堕棿鐨勬牸寮�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodedateformat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+ dateAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value)) {
+ DateConverter dateConverter = new DateConverter();
+ dateConverter.setAsText(value);
+ value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
+ setValueToOrderDTO(orderDTO, attrId, value);
+ }
+ });
+ }
+ }
+ /**
+ * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
+ *
+ * @param orderDTO 缂栫爜鐢宠瀵硅薄
+ * @param attrId 灞炴�х殑缂栧彿
+ * @param value 鍊�
+ */
+ private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+ WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
+ } else {
+ orderDTO.getData().put(attrId, value);
+ }
+ }
+ /**
+ * 鏍¢獙鏋氫妇鐨勫唴瀹�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
+ //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
+ Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
+ enumAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value)) {
+ //鏈夊�兼墠鑳芥牎楠�
+ List<KeyValue> comboboxKVs = this.engineService.listComboboxItems(attrVO);
+ if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";灞炴�с��"+attrVO.getName()+"銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�");
+ //throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * 鏍¢獙鍏抽敭灞炴��
+ *
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
+ * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+ */
+ private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
+ //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+ CodeKeyAttrRepeatRuleVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+ //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+ //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+ Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ Map<String, String> conditionMap = new HashMap<>();
+ boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+ //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+ boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+ boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+ boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+ ketAttrMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (value == null) {
+ value = "";
+ }
+ engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+ });
+
+ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+
+ if (!CollectionUtils.isEmpty(conditionMap)) {
+ final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " where 1 = 1 "};
+ conditionMap.forEach((key, value) -> {
+ sql[0] += " and " + key + " = " + value;
+ });
+ if (StringUtils.isNotBlank(orderDTO.getOid())) {
+ //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
+ sql[0] += " and oid != '" + orderDTO.getOid() + "'";
+ } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
+ sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
+ }
+ sql[0] += " and islastR = '1' and islastV = '1' ";
+ if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
+ String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
+ String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
+ String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�";
+ String errormsg=defaultValue+MessageFormat.format(ruleInfoMsg, objs);
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg);
+ // throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
+ }
+ }
+ }
+ /**
+ * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
+ *
+ * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
+ * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+ */
+ private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
+ Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
+ verifyAttrVOMap.forEach((attrId, attrVO) -> {
+ String value = getValueFromOrderDTO(orderDTO, attrId);
+ if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())) {
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";灞炴�"+attrVO.getName()+"]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�");
+ //鏍¢獙姝e垯琛ㄨ揪寮�
+ // throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
+ }
+ });
+ }
+ }
+ /**
+ * 杞崲缁勫悎瑙勫垯鐨勫��
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) {
+ Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(compAttrVOMap)) {
+ Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
+
+ Map<String, String> dataLowMap = new HashMap<>();
+ if (!CollectionUtils.isEmpty(dataMap)) {
+ dataMap.forEach((key, value) -> {
+ dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
+ });
+ }
+ dataLowMap.putAll(orderDTO.getData());
+ compAttrVOMap.forEach((attrId, attrVO) -> {
+ dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentrule()));
+ });
+ dataLowMap.forEach((key, value) -> {
+ setValueToOrderDTO(orderDTO, key, value);
+ });
+ }
+ }
+ /**
+ * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
+ * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
+ Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
+ s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
+ ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (classifyFullInfoBO.getTopClassifyVO() == null) {
+ //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
+
+ }
+ if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
+ classifyAttrVOMap.forEach((attrId, attrVO) -> {
+ //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
+ //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
+ CodeClassifyVO classifyVO = null;
+ if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
+ //鎸囧畾浜嗗眰绾х殑
+ //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
+ List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+ int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
+ if (classifyVOS.size() >= level && level > 0) {
+ classifyVO = classifyVOS.get(level - 1);
+ }
+ } else {
+ //褰撳墠鐨勫垎绫�
+ classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+ }
+ if (classifyVO == null) {
+ //璇存槑灞傜骇鏈夎
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
+ //orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
+ // classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+ } else {
+ Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
+ String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
+ orderDTO.getData().put(attrId, value);
+ }
+ });
+ }
+ }
+
+
+ /**
+ * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
+ *
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+ * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭�
+ */
+ private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO,Map<String,String> errorMap) {
+ Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
+ s -> VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule())
+ && StringUtils.isBlank(s.getClassifyinvokeattr()))
+ .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+ if (!CollectionUtils.isEmpty(requiredAttrMap)) {
+ requiredAttrMap.forEach((attrId, attrVO) -> {
+ //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
+ if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
+ errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"") + ";灞炴�с�恵"+attrVO.getName()+"}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭" );
+ // throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
+ }
+ });
+ }
+ }
+
+
+
+
+ /**
+ * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
+ *
+ * @param orderDTO 缂栫爜鐢宠瀵硅薄
+ * @param attrId 灞炴�х殑缂栧彿
+ * @return 鍊�
+ */
+ private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
+ attrId = attrId.toLowerCase(Locale.ROOT);
+ String value = null;
+ if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+ value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
+ } else {
+ //璇存槑鏄嚜琛岄厤缃殑
+ //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
+ value = orderDTO.getData().getOrDefault(attrId, "");
+ }
+ return value;
+ }
+
+ /**
+ * excel杞崲涓篶bo鐨勫璞�
+ * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param codeImprotDataVO: 鍒嗙被瀵瑰簲鐨勬暟鎹�
+ * @param cboList 鏁版嵁鐨勫垪琛�
+ * @param newCode 鏄惁涓烘壒閲忕敵璇�
+ */
+ private void excelToCbo(CodeClassifyFullInfoBO classifyFullInfo,CodeImprotDataVO codeImprotDataVO,List<ClientBusinessObject> cboList, boolean newCode){
+ String fullPath = getFullPath(classifyFullInfo);
+ codeImprotDataVO.getDatas().stream().forEach(rowData -> {
+ ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ rowData.forEach((field,value)->{
+ try {
+ cbo.setAttributeValueWithNoCheck(field,value);
+ if(WebUtil.isDefaultField(field)){
+ WebUtil.setValueToField(field, cbo, value);
+ }
+ } catch (VCIError e) {
+ logger.error("璁剧疆灞炴�х殑鍊奸敊璇�",e);
+ }
+ });
+ try {
+ if(newCode){
+ cbo.setAttributeValue(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_FULL_PATH_FILED,fullPath);
+ //cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+ int secret = VciBaseUtil.getInt(cbo.getAttributeValue(MdmEngineConstant.SECRET_FIELD));
+ if(secret == 0 || !secretService.checkDataSecret(secret) ){
+ Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+ cbo.setAttributeValue(MdmEngineConstant.SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
+ }
+ }else{
+ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
+ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
+ cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue());
+ }
+ rowData.put("oid",cbo.getOid());
+ cbo.setAttributeValue(MdmEngineConstant.CODE_TEMPLATE_OID_FIELD,codeImprotDataVO.getTemplateOid());
+ cbo.setAttributeValue(MdmEngineConstant.IMPORT_ROW_INDEX,rowData.get(MdmEngineConstant.IMPORT_ROW_INDEX));
+ }catch (Throwable e){
+ logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�",e);
+ }
+ cboList.add(cbo);
+ });
+
+ }
+
+
+ private void createRedisDatas(String uuid, CodeClassifyTemplateVO templateVO, List<CodeImprotDataVO> codeImprotDataVOs, Map<String, String> errorMap, boolean isok){
+ codeImprotDataVOs.stream().forEach(codeImprotDataVO -> {
+ List<Map<String, String>> dataLists=new ArrayList<>();
+ CodeImprotDataVO newCodeImprotDataVO=new CodeImprotDataVO();
+ if(errorMap.size()>0) {
+ //瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+ dataLists = codeImprotDataVO.getDatas().stream().filter(cbo -> {
+ String rowIndex=cbo.get(MdmEngineConstant.IMPORT_ROW_INDEX);
+ return isok? !errorMap.containsKey(rowIndex):errorMap.containsKey(rowIndex);
+ }).collect(Collectors.toList());
+
+ }else{
+ dataLists= codeImprotDataVO.getDatas();
+ }
+ BeanUtilForVCI.copyPropertiesIgnoreCase(codeImprotDataVO,newCodeImprotDataVO);
+ newCodeImprotDataVO.setDatas(dataLists);
+ List<CodeImprotDataVO> codeImprotDataVOList=new ArrayList<>();
+ codeImprotDataVOList.add(newCodeImprotDataVO);
+ redisService.setCacheList(uuid+"-"+codeImprotDataVO.getCodeClassifyOid(), codeImprotDataVOList);
+ logger.info(uuid+"-"+codeImprotDataVO.getCodeClassifyOid()+":鏉$洰鏁�"+codeImprotDataVOList.size());
+ //redisService.expire(uuid+"-"+codeImprotDataVO.getCodeClassifyOid(),6000000);//redis杩囨湡鏃堕棿
+ });
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
new file mode 100644
index 0000000..5fee65e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -0,0 +1,743 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.dao.CodeAllCodeDaoI;
+import com.vci.ubcs.code.dao.CodeSerialValueDaoI;
+import com.vci.ubcs.code.enumpack.CodeCutTypeEnum;
+import com.vci.ubcs.code.enumpack.CodeGetValueTypeEnum;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
+import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
+import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
+import com.vci.ubcs.code.model.CodeAllCodeDO;
+import com.vci.ubcs.code.model.CodeSerialValueDO;
+import com.vci.ubcs.code.service.MdmProductCodeServiceI;
+import com.vci.corba.common.VCIError;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.constant.RegExpConstant;
+import com.vci.starter.web.exception.VciBaseException;
+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.util.VciDateUtil;
+import com.vci.web.enumpck.OsCodeFillTypeEnum;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.impl.FormulaServiceImpl;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import 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 java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.web.other.BdSelectInputCharAspect.SEP;
+
+/**
+ * 鐢熸垚缂栫爜鐨勬湇鍔�
+ * @author weidy
+ * @date 2022-3-6
+ */
+@Service
+public class MdmProductCodeServiceImpl implements MdmProductCodeServiceI {
+
+ /**
+ * 涓氬姟鏁版嵁鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 鎵�鏈夌殑缂栫爜鐨勫唴瀹�
+ */
+ @Autowired
+ private CodeAllCodeDaoI allCodeMapper;
+
+ /**
+ * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭�
+ */
+ @Autowired
+ private CodeSerialValueDaoI serialValueMapper;
+
+ /**
+ * 鍏紡鐨勬湇鍔�
+ */
+ @Autowired
+ private FormulaServiceImpl formulaService;
+ /**
+ * 鐢熸垚缂栫爜--骞朵笖淇濆瓨鏁版嵁
+ *
+ * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+ * @param ruleVO 缂栫爜瑙勫垯鐨勬樉绀哄璞�
+ * @param secDTOList 鍚勪釜鐮佹鐨勫��
+ * @param dataCBOList 涓氬姟鏁版嵁
+ */
+ @Override
+ public synchronized List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
+ CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<ClientBusinessObject> dataCBOList) {
+ BatchCBO batchCBO = new BatchCBO();
+ WebUtil.setPersistence(false);
+ dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
+ batchCBO.getCreateCbos().addAll(dataCBOList);
+ List<String> codeList = new ArrayList<>();
+
+ /*****
+ * 淇濊瘉骞跺彂鐨勬椂鍊欙紝鏈�澶ф祦姘村彿閮藉鐨勶紝浣嗘槸杩欑鍔犻攣鏈夊紛绔�
+ *
+ */
+
+ if(dataCBOList.stream().anyMatch(cbo->StringUtils.isNotBlank(cbo.getId()) && StringUtils.isNotBlank(cbo.getAttributeValue(MdmEngineConstant.CODE_SEC_LENGTH_FIELD)))){
+ //鏄巻鍙叉暟鎹鍏�
+ //鍘嗗彶鏁版嵁鎵ц鐨勬椂鍊欙紝杩欎釜绯荤粺浼氬緢鍗�
+ //涓昏鏄负浜嗗綍鍏ユ渶澶ф祦姘村彿鍜宎llcode
+ SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+ List<CodeAllCodeDO> allCodeDOList = new ArrayList<>();
+ Map<String/**娴佹按渚濇嵁**/,Map<String/**鐮佹鐨勪富閿�**/,Double/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>();
+ dataCBOList.parallelStream().forEach(cbo->{
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ String code = cbo.getId();
+ List<String> serialUnitList = new ArrayList<>();
+ String[] secLengths = cbo.getAttributeValue(MdmEngineConstant.CODE_SEC_LENGTH_FIELD).split("#");
+ List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
+ Map<String/**鐮佹鐨勪富閿�**/,String/**鐮佹鐨勫��**/> serialValueMap = new HashMap<>();
+ Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+ for (int i = 0; i < secLengths.length; i++) {
+ CodeBasicSecVO secVO = secVOList.get(i);
+ String thisSecValue = "";
+ if(i == 0){
+ thisSecValue = code.contains("#")?code.substring(0,code.indexOf("#")):code;
+ } else if(i == secLengths.length-1){
+ //鏈�鍚�
+ thisSecValue = code.contains("#")?code.substring(code.lastIndexOf("#")):code;
+ }else {
+ int start = 0;
+ for (int j = 0; j < i; j++) {
+ start += VciBaseUtil.getInt(secLengths[j]) + 1;
+ }
+ thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[1]));
+ }
+ if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){
+ serialUnitList.add(thisSecValue);
+ }
+ if(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(secVO.getSectype())){
+ serialValueMap.put(secVO.getOid(),thisSecValue);
+ }
+ }
+ String serialUnitString = serialUnitList.size() == 0 ? MdmEngineConstant.EMPTY_SERIAL_UNIT : serialUnitList.stream().collect(Collectors.joining(MdmEngineConstant.SERIAL_UNIT_SPACE));
+ List<String> serialUnFileStringList = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(serialValueMap)){
+ serialValueMap.forEach((secOid,secValue)->{
+ //瑕佺湅鏄笉鏄ˉ浣嶇殑
+ CodeBasicSecVO secVO = secVOMap.get(secOid);
+ Double serialDb = null;
+ if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){
+ //涓嶈ˉ鐮�
+ //鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒�
+ serialDb = VciBaseUtil.getDouble(killUnNumberChar(secValue));
+ }else {
+ //宸﹀彸濉厖鐨勶紝鎴戜滑闇�瑕�
+ serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(secValue,secVO.getCodeFillSeparator(),
+ OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
+ }
+ Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
+ thisUnitMaxMap.put(secOid,serialDb);
+ maxSerialMap.put(serialUnitString,thisUnitMaxMap);
+ serialUnFileStringList.add(String.valueOf(serialDb));
+ });
+ }
+ CodeAllCodeDO allCodeDO = new CodeAllCodeDO();
+ allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
+ allCodeDO.setCodeRuleOid(ruleVO.getOid());
+ allCodeDO.setId(cbo.getId());
+ allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid());
+ allCodeDO.setCreateCodeBtm(cbo.getBtmName());
+ allCodeDO.setCreateCodeOid(cbo.getOid());
+ allCodeDO.setSerialUnit(serialUnitString);
+ allCodeDO.setUnFillSerial(serialUnFileStringList.stream().collect(Collectors.joining(MdmEngineConstant.SERIAL_VALUE_SPACE)));
+ allCodeDO.setLcStatus(cbo.getLcStatus());
+ allCodeDOList.add(allCodeDO);
+ });
+ //澶勭悊鏈�澶х殑娴佹按鍙�
+ List<CodeSerialValueDO> addSerialValueList = new ArrayList<>();
+ List<CodeSerialValueDO> editSerialValueList = new ArrayList<>();
+ maxSerialMap.forEach((serialUnit,secOidMaxMap)->{
+ secOidMaxMap.forEach((secOid,maxSerial)->{
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codeRuleOid", ruleVO.getOid());
+ conditionMap.put("serialUnit", serialUnit);
+ //杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
+ conditionMap.put("codeSecOid", secOid);
+ List<CodeSerialValueDO> serialValueDOS = serialValueMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if (!CollectionUtils.isEmpty(serialValueDOS)) {
+ CodeSerialValueDO serialValueDO = serialValueDOS.get(0);
+ if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){
+ serialValueDO.setMaxSerial(String.valueOf(maxSerial));
+ editSerialValueList.add(serialValueDO);
+ }
+ }else{
+ //娌℃湁
+ CodeSerialValueDO serialValueDO = new CodeSerialValueDO();
+ serialValueDO.setCodeRuleOid(ruleVO.getOid());
+ serialValueDO.setSerialUnit(serialUnit);
+ serialValueDO.setCodeSecOid(secOid);
+ serialValueDO.setMaxSerial(maxSerial.toString());
+ addSerialValueList.add(serialValueDO);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(addSerialValueList)){
+ batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueList));
+ }
+ if(!CollectionUtils.isEmpty(editSerialValueList)){
+ batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueList));
+ }
+ //澶勭悊allCode
+ if(!CollectionUtils.isEmpty(allCodeDOList)){
+ Map<String, List<CodeAllCodeDO>> ruleGroup = allCodeDOList.stream().collect(Collectors.groupingBy(s -> s.getCodeRuleOid()));
+ Map<String, CodeAllCodeDO> codeDOMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getCodeRuleOid() + SEP + s.getId(), t -> t));
+ List<CodeAllCodeDO> addCodeDOs = new ArrayList<>();
+ List<CodeAllCodeDO> editCodeDOs = new ArrayList<>();
+ ruleGroup.forEach((ruleOid,allCodeDOS)->{
+ VciBaseUtil.switchCollectionForOracleIn(allCodeDOS).stream().forEach(codeDOs->{
+ Map<String,String> conditionMap = new HashMap<>();
+ conditionMap.put("coderuleoid",ruleOid);
+ conditionMap.put("id",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")");
+ List<CodeAllCodeDO> existCodes = allCodeMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if(!CollectionUtils.isEmpty(existCodes)){
+ existCodes.stream().forEach(existCode->{
+ String rule_id = existCode.getCodeRuleOid() + SEP + existCode.getId();
+ if(codeDOMap.containsKey(rule_id)){
+ CodeAllCodeDO newCodeDO = codeDOMap.get(rule_id);
+ existCode.setCreateCodeOid(newCodeDO.getOid());
+ existCode.setCreateCodeBtm(newCodeDO.getCreateCodeBtm());
+ existCode.setCodeClassifyTemplateOid(newCodeDO.getCodeClassifyTemplateOid());
+ existCode.setCodeClassifyOid(newCodeDO.getCodeClassifyOid());
+ existCode.setLcStatus(newCodeDO.getLcStatus());
+ editCodeDOs.add(existCode);
+ }
+ });
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(editCodeDOs)){
+ Set<String> exitIds = editCodeDOs.stream().map(s -> s.getCodeRuleOid() + SEP + s.getId()).collect(Collectors.toSet());
+ addCodeDOs = allCodeDOList.stream().filter(s -> !exitIds.contains(s.getCodeRuleOid() + SEP + s.getId())).collect(Collectors.toList());
+ }else{
+ addCodeDOs = allCodeDOList;
+ }
+ if(!CollectionUtils.isEmpty(editCodeDOs)){
+ batchCBO.copyFromOther(allCodeMapper.batchUpdate(editCodeDOs));
+ }
+ if(!CollectionUtils.isEmpty(addCodeDOs)){
+ batchCBO.copyFromOther(allCodeMapper.batchInsert(addCodeDOs));
+ Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
+ batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
+ s.setLcStatus(statusMap.get(s.getOid()));
+ try {
+ s.setAttributeValue("lcstatus",statusMap.get(s.getOid()));
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ });
+ }
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return codeList;
+ }else {
+ List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
+ List<String> serialUnitList = new LinkedList<>();
+ List<String> secValueList = new ArrayList<>();
+ Map<String, String> secValueMap = secDTOList.stream().collect(Collectors.toMap(s -> s.getSecOid(), s -> s.getSecValue()));
+ List<CodeBasicSecVO> serialSecVOList = new ArrayList<>();
+ List<CodeBasicSecVO> attrSecVOList = new ArrayList<>();
+ for (int i = 0; i < secVOList.size(); i++) {
+ CodeBasicSecVO secVO = secVOList.get(i);
+ switchSecValue(secVO, secValueMap, classifyFullInfoBO, serialSecVOList, attrSecVOList, serialUnitList, secValueList);
+ }
+ //澶勭悊灞炴�х爜娈靛拰娴佹按鐮佹
+ Map<String/**娴佹按鐮佹鐨勪富閿�**/, Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap = new HashMap<>();
+ List<CodeAllCodeDO> allCodeDOList = new ArrayList<>();
+
+ //宸茬粡瀛樺偍鐨勬渶澶ф祦姘村彿鐨勫唴瀹�
+ Map<String/**鐮佹鐨勪富閿�**/, Map<String, CodeSerialValueDO>> maxSerialValueMap = new HashMap<>();
+
+ for (int i = 0; i < dataCBOList.size(); i++) {
+ ClientBusinessObject cbo = dataCBOList.get(i);
+ List<String> thisSecValueList = new LinkedList<>();
+ for (int j = 0; j < secValueList.size(); j++) {
+ thisSecValueList.add(secValueList.get(j));
+ }
+ List<String> thisSerialUnitList = new LinkedList<>();
+ //鍥犱负娴佹按渚濇嵁姣忔鍙兘涓嶄竴鏍凤紝鎵�浠ユ瘡娆¢兘鎷疯礉涓�浠�
+ for (int j = 0; j < serialUnitList.size(); j++) {
+ thisSerialUnitList.add(serialUnitList.get(j));
+ }
+ //鍏堢湅鐪嬫湁娌℃湁灞炴�х殑鐮佹
+ boolean attrSevIsSerialDepend = CollectionUtils.isEmpty(attrSecVOList) ? false : (attrSecVOList.stream().anyMatch(s -> VciBaseUtil.getBoolean(s.getSerialDependFlag())));
+ switchAttrSecValue(attrSecVOList, cbo, thisSecValueList, attrSevIsSerialDepend, thisSerialUnitList);
+
+ String serialUnitString = thisSerialUnitList.size() == 0 ? MdmEngineConstant.EMPTY_SERIAL_UNIT : thisSerialUnitList.stream().collect(Collectors.joining(MdmEngineConstant.SERIAL_UNIT_SPACE));
+ switchSerialSecValue(serialSecVOList, attrSevIsSerialDepend, ruleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0);
+
+ //缁勮缂栫爜鐨勫��
+ cbo.setId(thisSecValueList.stream().collect(Collectors.joining()));
+ codeList.add(cbo.getId());
+ StringBuilder sb = new StringBuilder();
+ //鎶婄爜娈甸噷闈㈤兘鎵句竴涓嬫祦姘村彿
+ for (int j = 0; j < serialSecVOList.size(); j++) {
+ CodeBasicSecVO secVO = serialSecVOList.get(j);
+ Double serialValue = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()).getOrDefault(serialUnitString, 0d);
+ if (serialValue != null) {
+ sb.append(String.valueOf(serialValue.longValue())).append(MdmEngineConstant.SERIAL_VALUE_SPACE);
+ }
+ }
+ //瑕佸瓨鍌ㄦ渶鍚庣殑鍏ㄩ儴allcode
+ wrapperAllCode(classifyFullInfoBO, ruleVO, cbo, templateVO, allCodeDOList, serialUnitString, sb.toString());
+ }
+ batchCBO.copyFromOther(allCodeMapper.batchInsert(allCodeDOList));
+ saveSerialValue(batchCBO, ruleVO, lastMaxSerialValueMap, maxSerialValueMap);
+
+ Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
+ batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
+ s.setLcStatus(statusMap.get(s.getOid()));
+ try {
+ s.setAttributeValue("lcstatus",statusMap.get(s.getOid()));
+ } catch (VCIError e) {
+ e.printStackTrace();
+ }
+ });
+
+
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return codeList;
+ }
+
+ /**
+ * 鍘婚櫎琛ヤ綅瀛楃
+ * @param s 瀛楃
+ * @param fillString 琛ヤ綅瀛楃
+ * @param left 鏄惁宸﹁ˉ浣�
+ * @return 鏇挎崲鍚庣殑鍊�
+ */
+ private String killFillChar(String s, String fillString,boolean left){
+ Integer index = 0;
+ String value = s;
+ if(left){
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
+ index = i;
+ }
+ }
+ if(index >0){
+ value = value.substring(index);
+ }
+ }else{
+ //浠庡彸寰�宸︽壘
+ for (int i = s.length()-1; i >=0; i++) {
+ char c = s.charAt(i);
+ if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
+ index = i;
+ }
+ }
+ if(index >0){
+ value = value.substring(0,index);
+ }
+ }
+ return value;
+
+ }
+
+ /**
+ * 鍘绘帀涓嶆槸鏁板瓧鐨勫瓧绗�
+ * @param s 瀛楃
+ * @return 鏇挎崲鍚庣殑鍊�
+ */
+ private String killUnNumberChar(String s){
+ Integer lastUnNumberIndex = 0;
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if(!(new String(new char[]{c})).matches(RegExpConstant.NUMBER)){
+ lastUnNumberIndex = i;
+ }
+ }
+ String value = s;
+ if(lastUnNumberIndex >0){
+ value = value.substring(lastUnNumberIndex);
+ }
+ return value;
+ }
+
+ /**
+ * 鍥炴敹鐮佸��
+ *
+ * @param btmId 涓氬姟鏁版嵁鐨勪笟鍔$被鍨�
+ * @param businessOidCollection 涓氬姟鏁版嵁鐨勪富閿�
+ * @return 鍙楀奖鍝嶇殑鏁版嵁鍐呭
+ */
+ @Override
+ public BatchCBO recycleCode(String btmId, Collection<String> businessOidCollection) {
+ boolean oldPersistence = WebUtil.isPersistence();
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+ VciBaseUtil.switchCollectionForOracleIn(businessOidCollection).stream().forEach(oids-> {
+ Map<String, String> conditionMap = new HashMap<>();
+ //缂栫爜瑕佽褰曚负鍥炴敹鐨勭姸鎬�
+ conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
+ conditionMap.put("createcodebtm", btmId);
+ List<CodeAllCodeDO> allCodeDOS = allCodeMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if (!CollectionUtils.isEmpty(allCodeDOS)) {
+ allCodeDOS.stream().forEach(codeDO->{
+ codeDO.setLcStatus(CodeAllCodeLC.TASK_BACK.getValue());
+ });
+ batchCBO.copyFromOther(allCodeMapper.batchUpdate(allCodeDOS));
+ }
+ });
+ WebUtil.setPersistence(oldPersistence);
+ return batchCBO;
+ }
+
+ /**
+ * 杞崲鐮佸�肩殑鍐呭
+ * @param secVO 鐮佹鐨勫唴瀹�
+ * @param secValueMap 鐮佸�肩殑鍐呭锛宬ey鏄爜娈电殑涓婚敭锛寁alue鏄爜鍊�
+ * @param classifyFullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+ * @param serialSecVOList 娴佹按鐮佹
+ * @param attrSecVOList 灞炴�х爜娈�
+ * @param serialUnitList 娴佹按渚濇嵁
+ * @param secValueList 鐮佸�煎垪琛�
+ */
+ private void switchSecValue(CodeBasicSecVO secVO,Map<String,String> secValueMap,
+ CodeClassifyFullInfoBO classifyFullInfoBO,List<CodeBasicSecVO> serialSecVOList,
+ List<CodeBasicSecVO> attrSecVOList, List<String> serialUnitList,
+ List<String> secValueList ){
+ CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(secVO.getSectype());
+ String secValue = secValueMap.getOrDefault(secVO.getOid(), "");
+ switch (secType) {
+ case CODE_FIXED_SEC:
+ //鍥哄畾鐮佹鐨勶紝鐩存帴鐢ㄧ爜鍊�,涓嶈鐮佸�肩殑闀垮害鏄灏戯紝鍥犱负鍙彉闀垮害鍜屽浐瀹氶暱搴︽槸鎺у埗鍦ㄧ爜娈电鐞嗛噷闈㈢殑鐮佸�煎畾涔夌殑
+ break;
+ case CODE_DATE_SEC:
+ //鏃堕棿鐮佹锛岄渶瑕佸皢褰撳墠鏃堕棿渚濇嵁鏃堕棿鏍煎紡杩涜杞崲.
+ //鏃堕棿鐮佹涓嶆秹鍙婂埌鏄惁琛ヤ綅
+ secValue = VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr());
+ break;
+ case CODE_CLASSIFY_SEC:
+ //鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏�
+ break;
+ case CODE_LEVEL_SEC:
+ //灞傜骇鐮佹锛岄渶瑕佷粠鍒嗙被涓婅幏鍙栫浉搴旂殑淇℃伅
+ if (CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(secVO.getCodeLevelType())) {
+ //鏈�灏忓眰锛屽洜涓烘垜浠彧鑳藉湪鍙跺瓙鑺傜偣涓婄敵璇风紪鐮侊紝鎵�浠ヨ繖涓氨鏄綋鍓嶅垎绫荤殑
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType()) || CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
+ //灏辨槸褰撳墠鍒嗙被鐨�
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ //鎴戜滑闇�瑕佷粠椤跺眰寮�濮嬫壘鍒板綋鍓嶅垎绫讳负姝�
+ secValue = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
+ }
+ } else {
+ //鎸囧畾灞傦紝鎴戜滑闇�瑕侀�氳繃涓婄骇鐨勬潵鑾峰彇
+ if (CollectionUtils.isEmpty(classifyFullInfoBO.getParentClassifyVOs())) {
+ //璇存槑褰撳墠宸茬粡鏄渶楂樼殑浜�
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ //杩欎釜鎴戜滑闇�瑕佺湅鐪�,灞傜骇鏄笉鏄ぇ浜庝簡鏈�澶у眰绾х殑鏁�
+ List<CodeClassifyVO> parentClassifyVOList = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).collect(Collectors.toList());
+ if (secVO.getCodeLevelValue() > (parentClassifyVOList.size() + 1)) {
+ //鎸囧畾鐨勫眰绾ф瘮褰撳墠鐨勫眰绾ц繕澶т簡锛屾墍浠ュ彧鑳借幏鍙栧綋鍓嶅眰绾т簡
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType())) {
+ secValue = classifyFullInfoBO.getCurrentClassifyVO().getId();
+ } else {
+ secValue = parentClassifyVOList.stream().map(CodeClassifyVO::getId).collect(Collectors.joining()) + classifyFullInfoBO.getCurrentClassifyVO().getId();
+ }
+ } else {
+ //鎴戜滑鑾峰彇鍏朵腑鎸囧畾灞傜殑鍐呭
+ if (CodeGetValueTypeEnum.CURRENT.getValue().equalsIgnoreCase(secVO.getCodeGetValueType())) {
+ CodeClassifyVO classifyVO = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() == secVO.getCodeLevelValue().intValue()).findFirst().orElseGet(() -> null);
+ if (classifyVO != null) {
+ secValue = classifyVO.getId();
+ }
+ } else {
+ //灏忎簬绛変簬鐨勫叏閮ㄦ嬁鍑烘潵
+ secValue = parentClassifyVOList.stream().filter(s -> s.getDataLevel().intValue() <= secVO.getCodeLevelValue().intValue()).sorted(((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel()))).map(CodeClassifyVO::getId).collect(Collectors.joining());
+ }
+ }
+ }
+ }
+ //鐪嬬湅闀垮害鏄惁闇�瑕佹埅鏂�
+ if (!CodeCutTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getValueCutType()) &&
+ secVO.getValueCutLength() != null && secVO.getValueCutLength() > 0 && secValue.length() > secVO.getValueCutLength()) {
+ if (CodeCutTypeEnum.RIGHT.getValue().equalsIgnoreCase(secVO.getValueCutType())) {
+ //宸︽埅鍙栨槸浠庡乏杈瑰壀鎺夛紝鍙虫埅鍙栨槸浠庡彸杈瑰壀鎺�--淇濈暀宸﹁竟
+ secValue = secValue.substring(0, secVO.getValueCutLength());
+ } else {
+ secValue = secValue.substring(secValue.length() - secVO.getValueCutLength());
+ }
+ }
+ break;
+ case CODE_REFER_SEC:
+ //寮曠敤鐨勫湪椤甸潰涓婂凡缁忛�夋嫨浜嗭紝鎵�浠ョ洿鎺ヤ娇鐢ㄥ墠绔笂浼犻�掔殑鍊�
+ //寮曠敤灏辨槸鍙傜収锛屽彲鑳芥槸鍏朵粬鐨勫垎绫伙紙涓氬姟绫诲瀷锛変笅鐨勬暟鎹紝鎵�浠ュ彧鍦ㄩ〉闈笂閫夋嫨
+ break;
+ case CODE_ATTR_SEC:
+ //灞炴�т笌寮曠敤鐨勫尯鍒槸锛屽睘鎬ф槸褰撳墠鏁版嵁閲岀殑灞炴�э紝鑰屽紩鐢ㄥ彲鑳芥槸寮曠敤鍏朵粬鐨勫垎绫荤殑锛堜笟鍔$被鍨嬶級
+ //鍥犱负鍙兘鏄壒閲忕殑鏁版嵁鐨勬搷浣滐紝鎵�浠ユ垜浠繖閲屼笉鑳界洿鎺ュ鐞嗗睘鎬э紝闇�瑕佸悗杈逛竴杈瑰鐞�
+ secValue = "${attr_" + secVO.getOid() + "}";
+ attrSecVOList.add(secVO);
+ break;
+ case CODE_VARIABLE_SEC:
+ //鍙彉鐮佹锛屾槸鍦ㄩ〉闈笂杈撳叆鍐呭
+ if (secValue.length() > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
+ throw new VciBaseException("銆恵0}銆戣繖涓爜娈垫槸鍙彉鐮佹锛屼絾鏄幇鍦ㄨ緭鍏ョ殑鐮佸�肩殑闀垮害({1})瓒呰繃浜嗚瀹氱殑闀垮害{2}", new String[]{secVO.getName(), String.valueOf(secValue.length()), secVO.getCodeSecLength()});
+ }
+ OsCodeFillTypeEnum fillTypeEnum = OsCodeFillTypeEnum.forValue(secVO.getCodeFillType());
+ secValue = fillString(VciBaseUtil.getInt(secVO.getCodeSecLength()), fillTypeEnum, secValue, secVO.getCodeFillSeparator());
+ break;
+ case CODE_SERIAL_SEC:
+ //娴佹按鐮佹
+ serialSecVOList.add(secVO);
+ secValue = "${" + secVO.getOid() + "}";
+ default:
+ break;
+ }
+ if (VciBaseUtil.getBoolean(secVO.getSerialDependFlag())) {
+ serialUnitList.add(secValue);
+ }
+ secValueList.add(secValue);
+ }
+
+
+ /**
+ * 琛ヤ綅
+ * @param totalLength 鎬婚暱搴�
+ * @param fillTypeEnum 琛ヤ綅鏂瑰紡
+ * @param text 褰撳墠鐨勫唴瀹�
+ * @param fillChar 琛ヤ綅鐨勫瓧绗�
+ * @return 涓嶅~鍏呬綅缃拰闀垮害宸茬粡杈惧埌/瓒呰繃鐨勬椂鍊欎笉浼氬~鍏�
+ */
+ private String fillString(int totalLength,OsCodeFillTypeEnum fillTypeEnum,String text,String fillChar){
+ if(text.length() >= totalLength || OsCodeFillTypeEnum.NONE.equals(fillTypeEnum)){
+ //涓嶇敤琛ヤ綅浜�
+ return text;
+ }
+ int balance = totalLength - text.length();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < balance; i++) {
+ sb.append(fillChar);
+ }
+ if(OsCodeFillTypeEnum.LEFT.equals(fillTypeEnum)) {
+ text = sb.toString() + text;
+ }else {
+ text = text + sb.toString();
+ }
+ return text;
+ }
+
+ /**
+ * 杞崲灞炴�х爜娈电殑鍊�
+ * @param attrSecVOList 灞炴�х爜娈电殑鏄剧ず瀵硅薄
+ * @param cbo 涓氬姟鏁版嵁锛岀敤浜庤幏鍙栫爜娈电殑鍊�
+ * @param thisSecValueList 鐮佸�肩殑鍒楄〃
+ * @param attrSevIsSerialDepend 鏄惁鏈変綔涓烘祦姘翠緷鎹�
+ * @param serialUnitList 娴佹按渚濇嵁鐨勫唴瀹�
+ */
+ private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList,ClientBusinessObject cbo,
+ List<String> thisSecValueList,boolean attrSevIsSerialDepend,
+ List<String> serialUnitList){
+ if (!CollectionUtils.isEmpty(attrSecVOList)) {
+ attrSecVOList.stream().forEach(attrSevVO -> {
+ String value = "";
+ if (StringUtils.isNotBlank(attrSevVO.getGetValueClass())) {
+ //浣跨敤缁勫悎瑙勫垯鏉ュ鐞嗙殑
+ value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
+ } else {
+ value = cbo.getAttributeValue(attrSevVO.getReferAttributeId());
+ }
+ if (value == null) {
+ value = "";
+ }
+ //鏇挎崲secValueList閲岄潰鐨勫唴瀹�
+ for (int j = 0; j < thisSecValueList.size(); j++) {
+ String secValue = thisSecValueList.get(j);
+ if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
+ thisSecValueList.set(j, value);
+ }
+ }
+ if (attrSevIsSerialDepend) {
+ //鏄祦姘翠緷璧栫殑璇濓紝闇�瑕佸幓鏇挎崲涓�涓�
+ for (int j = 0; j < serialUnitList.size(); j++) {
+ String secValue = serialUnitList.get(j);
+ if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
+ serialUnitList.set(j, value);
+ }
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * 浣跨敤CBO澶勭悊缁勫悎瑙勫垯鐨勫唴瀹�
+ * @param cbo 鏁版嵁鐨勫唴瀹�
+ * @param rule 瑙勫垯鐨勫唴瀹�
+ * @return 杞崲鍚庣殑
+ */
+ private String getValueByFormulaForCBO(ClientBusinessObject cbo,String rule){
+ Map<String,String> dataMap = new HashMap<>();
+ WebUtil.copyValueToMapFromCbos(cbo,dataMap);
+ return formulaService.getValueByFormula(dataMap,rule);
+ }
+
+ /**
+ * 杞崲娴佹按鐮佹鐨勫��
+ * @param serialSecVOList 娴佹按鐮佹
+ * @param attrSevIsSerialDepend 鏄惁鏈夊睘鎬х爜娈靛弬涓庢祦姘�
+ * @param ruleVO 瑙勫垯鐨勫唴瀹�
+ * @param serialUnitString 娴佹按渚濇嵁
+ * @param maxSerialValueMap 鏈�澶х殑娴佹按鍙�
+ * @param thisSecValueList 鏈鐨勭爜鍊�
+ * @param lastMaxSerialValueMap 灏佽鍚�
+ * @param firstData 鏄惁涓虹涓�鏉℃暟鎹�
+ */
+ private void switchSerialSecValue(List<CodeBasicSecVO> serialSecVOList,boolean attrSevIsSerialDepend,
+ CodeRuleVO ruleVO,String serialUnitString,
+ Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/,CodeSerialValueDO>> maxSerialValueMap,List<String> thisSecValueList,
+ Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap,boolean firstData){
+ if (!CollectionUtils.isEmpty(serialSecVOList)) {
+ for (int j = 0; j < serialSecVOList.size(); j++) {
+ CodeBasicSecVO secVO = serialSecVOList.get(j);
+ if (attrSevIsSerialDepend || firstData) {
+ //濡傛灉灞炴�х爜娈典篃鏄緷璧栵紝鍒欐瘡娆¢兘瑕佹煡璇紝濡傛灉灞炴�х爜娈典笉鏄緷璧栵紝鍒欏彧鏌ヨ涓�娆�
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("codeRuleOid", ruleVO.getOid());
+ conditionMap.put("serialUnit", serialUnitString);
+ //杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
+ conditionMap.put("codeSecOid", secVO.getOid());
+ List<CodeSerialValueDO> serialValueDOS = serialValueMapper.selectByCondition(conditionMap, new PageHelper(-1));
+ if (!CollectionUtils.isEmpty(serialValueDOS)) {
+ Map<String, CodeSerialValueDO> unitSerialMap = maxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>());
+ CodeSerialValueDO serialValueDO = serialValueDOS.get(0);
+ unitSerialMap.put(serialValueDO.getSerialUnit(),serialValueDO);
+ maxSerialValueMap.put(secVO.getOid(), unitSerialMap);
+ }
+ }
+ Double startValue = null;
+ if(maxSerialValueMap.containsKey(secVO.getOid()) && maxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){
+ startValue = VciBaseUtil.getDouble(maxSerialValueMap.get(secVO.getOid()).get(serialUnitString).getMaxSerial());
+ }
+ if(lastMaxSerialValueMap.containsKey(secVO.getOid()) && lastMaxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){
+ //璇存槑澶氫釜鐢宠锛屼箣鍓嶅凡缁忓姞浜嗘祦姘村彿浜�
+ startValue = lastMaxSerialValueMap.get(secVO.getOid()).get(serialUnitString);
+ }
+ Double thisSerialValue = 0d;
+ if (startValue == null) {
+ //绗竴涓紪鐮�
+ thisSerialValue = VciBaseUtil.getDouble(secVO.getSerialStart());
+ } else {
+ //娴佹按鍙疯偗瀹氭槸鏁板瓧
+ thisSerialValue = startValue + (j + 1) * secVO.getSerialStep();
+ }
+ //瑕佺湅鏄惁瓒呰繃鏈�澶х殑娴佹按鍊�
+ if (thisSerialValue >= secVO.getCodeFillLimit()) {
+ throw new VciBaseException("娴佹按鍙峰凡缁忚秴杩囧厑璁哥殑鏈�澶ф祦姘村�納0}",new String[]{secVO.getCodeFillLimit().toString()});
+ }
+ //瑕佺湅琛ヤ綅鐨勫唴瀹�
+ Integer fillLength = VciBaseUtil.getInt(secVO.getCodeFillLength());
+ if (fillLength == 0 || fillLength > VciBaseUtil.getInt(secVO.getCodeSecLength())) {
+ //闃叉鍦ㄦ坊鍔犵殑鍦版柟娌℃湁鎺у埗姝g‘
+ fillLength = VciBaseUtil.getInt(secVO.getCodeSecLength());
+ }
+ String serialString = String.valueOf(thisSerialValue.longValue());
+ serialString = fillString(fillLength, OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()), serialString, secVO.getCodeFillSeparator());
+ for (int z = 0; z < thisSecValueList.size(); z++) {
+ String secValue = thisSecValueList.get(z);
+ if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) {
+ thisSecValueList.set(z, serialString);
+ }
+ }
+ Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>());
+ unitSerialMap.put(serialUnitString, thisSerialValue);
+ lastMaxSerialValueMap.put(secVO.getOid(),unitSerialMap);
+ }
+ }
+ }
+
+ /**
+ * 灏佽瀛樺偍鐮佸�肩殑瀵硅薄
+ * @param classifyFullInfoBO 鍒嗙被鍏ㄩ儴鐨勪俊鎭�
+ * @param ruleVO 瑙勫垯鐨勫唴瀹�
+ * @param cbo 涓氬姟鏁版嵁
+ * @param templateVO 妯℃澘鐨勪俊鎭�
+ * @param allCodeDOList 鎵�鏈夌殑鐮佸�肩殑瀵硅薄鍒楄〃
+ */
+ private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO,CodeRuleVO ruleVO,
+ ClientBusinessObject cbo,CodeClassifyTemplateVO templateVO,
+ List<CodeAllCodeDO> allCodeDOList,String serialUnitString,String serialValueString){
+ CodeAllCodeDO allCodeDO = new CodeAllCodeDO();
+ allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
+ allCodeDO.setCodeRuleOid(ruleVO.getOid());
+ allCodeDO.setId(cbo.getId());
+ allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid());
+ allCodeDO.setCreateCodeBtm(cbo.getBtmName());
+ allCodeDO.setCreateCodeOid(cbo.getOid());
+ allCodeDO.setSerialUnit(serialUnitString);
+ allCodeDO.setUnFillSerial(serialValueString);
+ allCodeDO.setLcStatus(cbo.getLcStatus());
+ allCodeDOList.add(allCodeDO);
+ }
+
+ /**
+ * 淇濆瓨娴佹按鐨勪俊鎭�
+ * @param batchCBO 鏁版嵁瀛樺偍瀹瑰櫒
+ * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
+ * @param lastMaxSerialValueMap 鏈�澶х殑娴佹按鍊兼槧灏�
+ * @param maxSerialValueMap 渚濇嵁瀛樺偍鐨勬渶澶ф祦姘寸殑鍐呭
+ */
+ private void saveSerialValue(BatchCBO batchCBO,CodeRuleVO ruleVO,
+ Map<String/**鐮佹鐨勪富閿�**/,Map<String, Double>> lastMaxSerialValueMap,
+ Map<String/**鐮佹鐨勪富閿�**/,Map<String, CodeSerialValueDO>> maxSerialValueMap){
+ List<CodeSerialValueDO> editSerialValueDOList = new ArrayList<>();
+ List<CodeSerialValueDO> addSerialValueDOList = new ArrayList<>();
+ //瀛樺偍鏈�澶ф祦姘村彿
+ lastMaxSerialValueMap.forEach((secOid,maxSerialMap)->{
+ maxSerialMap.forEach((unit,maxSerial)->{
+ CodeSerialValueDO serialValueDO = null;
+ if(maxSerialValueMap.containsKey(secOid) && maxSerialValueMap.get(secOid).containsKey(unit)){
+ //璇存槑鏈�
+ serialValueDO = maxSerialValueMap.get(secOid).get(unit);
+ serialValueDO.setMaxSerial(maxSerial.toString());
+ editSerialValueDOList.add(serialValueDO);
+ }else{
+ serialValueDO = new CodeSerialValueDO();
+ serialValueDO.setCodeRuleOid(ruleVO.getOid());
+ serialValueDO.setSerialUnit(unit);
+ serialValueDO.setCodeSecOid(secOid);
+ serialValueDO.setMaxSerial(maxSerial.toString());
+ addSerialValueDOList.add(serialValueDO);
+ }
+ });
+ });
+ if(!CollectionUtils.isEmpty(editSerialValueDOList)){
+ batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueDOList));
+ }
+ if(!CollectionUtils.isEmpty(addSerialValueDOList)){
+ batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueDOList));
+ }
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntAuthorityServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntAuthorityServiceImpl.java
new file mode 100644
index 0000000..d938380
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntAuthorityServiceImpl.java
@@ -0,0 +1,290 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.dao.SysIntAuthorityDaoI;
+import com.vci.ubcs.code.enumpack.SysIntegrationAuthorityTypeEnum;
+import com.vci.ubcs.code.model.SysIntAuthorityDO;
+import com.vci.ubcs.code.service.SysIntAuthorityServiceI;
+import com.vci.ubcs.code.service.SysIntInfoServiceI;
+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 com.vci.ubcs.code.dto.SysIntAuthorityDTO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntAuthorityVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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 lihang
+ * @date 2022-03-07
+ */
+@Service
+public class SysIntAuthorityServiceImpl implements SysIntAuthorityServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private SysIntAuthorityDaoI sysIntAuthorityMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 绯荤粺闆嗘垚鐨勬帴鍙d俊鎭湇鍔�
+ */
+ @Autowired
+ private SysIntInfoServiceI sysIntInfoService;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntAuthorityVO> gridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<SysIntAuthorityDO> doList = sysIntAuthorityMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<SysIntAuthorityVO> dataGrid=new DataGrid<SysIntAuthorityVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(sysIntAuthorityDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntAuthorityMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntAuthorityDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<SysIntAuthorityVO> sysIntAuthorityDO2VOs(Collection<SysIntAuthorityDO> sysIntAuthorityDOs) throws VciBaseException{
+ List<SysIntAuthorityVO> voList = new ArrayList<SysIntAuthorityVO>();
+ if(!CollectionUtils.isEmpty(sysIntAuthorityDOs)){
+ for(SysIntAuthorityDO s: sysIntAuthorityDOs){
+ SysIntAuthorityVO vo = sysIntAuthorityDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntAuthorityDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntAuthorityVO sysIntAuthorityDO2VO(SysIntAuthorityDO sysIntAuthorityDO) throws VciBaseException{
+ SysIntAuthorityVO vo = new SysIntAuthorityVO();
+ if(sysIntAuthorityDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntAuthorityVO addSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ if (SysIntegrationAuthorityTypeEnum.LOGIN.getValue().equals(sysIntAuthorityDTO.getType())){
+ VciBaseUtil.alertNotNull(sysIntAuthorityDTO.getUseraccount(),"鐢ㄦ埛鐧诲綍楠岃瘉鏂瑰紡鐨勯獙璇佺敤鎴�",sysIntAuthorityDTO.getUsercode(),"鐢ㄦ埛鐧诲綍楠岃瘉鏂瑰紡鐨勯獙璇佸瘑鐮�");
+ } else if (SysIntegrationAuthorityTypeEnum.TOKEN.getValue().equals(sysIntAuthorityDTO.getType())) {
+ VciBaseUtil.alertNotNull(sysIntAuthorityDTO.getToken(),"浠ょ墝楠岃瘉鏂瑰紡鐨勪护鐗�");
+ }
+ //灏咲TO杞崲涓篋O
+ SysIntAuthorityDO sysIntAuthorityDO = new SysIntAuthorityDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDTO,sysIntAuthorityDO);
+ sysIntAuthorityMapper.insert(sysIntAuthorityDO);
+ return sysIntAuthorityDO2VO(sysIntAuthorityDO);
+ }
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntAuthorityVO editSave(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"鏁版嵁瀵硅薄",sysIntAuthorityDTO.getOid(),"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佷富閿�");
+ //灏咲TO杞崲涓篋O
+ SysIntAuthorityDO sysIntAuthorityDO = selectByOid(sysIntAuthorityDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(sysIntAuthorityDTO,sysIntAuthorityDO);
+ sysIntAuthorityMapper.updateByPrimaryKey(sysIntAuthorityDO);
+ return sysIntAuthorityDO2VO(sysIntAuthorityDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param sysIntAuthorityDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param sysIntAuthorityDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(SysIntAuthorityDTO sysIntAuthorityDTO, SysIntAuthorityDO sysIntAuthorityDO) {
+ SysIntAuthorityDO tsDO = new SysIntAuthorityDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntAuthorityDTO,tsDO);
+ //boService.checkTs(tsDO);
+ if(!checkIsLinked(sysIntAuthorityDO.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{
+ return !sysIntInfoService.isAlreadyUse(null,oid);
+ }
+
+ /**
+ * 鍒犻櫎绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param sysIntAuthorityDTO 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteSysIntAuthority(SysIntAuthorityDTO sysIntAuthorityDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntAuthorityDTO,"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹暟鎹璞�",sysIntAuthorityDTO.getOid(),"绯荤粺闆嗘垚鎺ュ彛鐨勮璇佺殑涓婚敭");
+ SysIntAuthorityDO sysIntAuthorityDO = selectByOid(sysIntAuthorityDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(sysIntAuthorityDTO,sysIntAuthorityDO);
+ if(baseResult.isSuccess()) {
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = sysIntAuthorityMapper.deleteByPrimaryKey(sysIntAuthorityDO.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 SysIntAuthorityVO getObjectByOid(String oid) throws VciBaseException{
+ return sysIntAuthorityDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private SysIntAuthorityDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntAuthorityDO sysIntAuthorityDO = sysIntAuthorityMapper.selectByPrimaryKey(oid.trim());
+ if(sysIntAuthorityDO == null || StringUtils.isBlank(sysIntAuthorityDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return sysIntAuthorityDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鎺ュ彛鐨勮璇�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<SysIntAuthorityVO> listSysIntAuthorityByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<SysIntAuthorityDO> sysIntAuthorityDOList = listSysIntAuthorityDOByOidCollections(oidCollections);
+ return sysIntAuthorityDO2VOs(sysIntAuthorityDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<SysIntAuthorityDO> listSysIntAuthorityDOByOidCollections(Collection<String> oidCollections){
+ List<SysIntAuthorityDO> sysIntAuthorityDOList = new ArrayList<SysIntAuthorityDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<SysIntAuthorityDO> tempDOList = sysIntAuthorityMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ sysIntAuthorityDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return sysIntAuthorityDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鎺ュ彛鐨勮璇佸垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鎺ュ彛鐨勮璇佹樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntAuthorityVO> refDataGridSysIntAuthority(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridSysIntAuthority(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntBaseServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntBaseServiceImpl.java
new file mode 100644
index 0000000..6cf5dd0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntBaseServiceImpl.java
@@ -0,0 +1,285 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.vci.ubcs.code.dao.SysIntBaseDaoI;
+import com.vci.ubcs.code.model.SysIntBaseDO;
+import com.vci.ubcs.code.service.SysIntBaseServiceI;
+import com.vci.ubcs.code.service.SysIntInfoServiceI;
+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 org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.dto.SysIntBaseDTO;
+import com.vci.ubcs.code.vo.pagemodel.SysIntBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+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 lihang
+ * @date 2022-03-07
+ */
+@Service
+public class SysIntBaseServiceImpl implements SysIntBaseServiceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private SysIntBaseDaoI sysIntBaseMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+// @Autowired
+// @Lazy
+// private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 绯荤粺闆嗘垚鐨勬帴鍙d俊鎭湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private SysIntInfoServiceI sysIntInfoService;
+
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntBaseVO> gridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<SysIntBaseDO> doList = sysIntBaseMapper.selectByCondition(conditionMap,pageHelper);
+ DataGrid<SysIntBaseVO> dataGrid=new DataGrid<SysIntBaseVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(sysIntBaseDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntBaseMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntBaseDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<SysIntBaseVO> sysIntBaseDO2VOs(Collection<SysIntBaseDO> sysIntBaseDOs) throws VciBaseException{
+ List<SysIntBaseVO> voList = new ArrayList<SysIntBaseVO>();
+ if(!CollectionUtils.isEmpty(sysIntBaseDOs)){
+ for(SysIntBaseDO s: sysIntBaseDOs){
+ SysIntBaseVO vo = sysIntBaseDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntBaseDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntBaseVO sysIntBaseDO2VO(SysIntBaseDO sysIntBaseDO) throws VciBaseException{
+ SysIntBaseVO vo = new SysIntBaseVO();
+ if(sysIntBaseDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntBaseVO addSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntBaseDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ //灏咲TO杞崲涓篋O
+ SysIntBaseDO sysIntBaseDO = new SysIntBaseDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDTO,sysIntBaseDO);
+ sysIntBaseMapper.insert(sysIntBaseDO);
+ return sysIntBaseDO2VO(sysIntBaseDO);
+ }
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntBaseVO editSave(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntBaseDTO,"鏁版嵁瀵硅薄",sysIntBaseDTO.getOid(),"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭富閿�");
+ //灏咲TO杞崲涓篋O
+ SysIntBaseDO sysIntBaseDO = selectByOid(sysIntBaseDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(sysIntBaseDTO,sysIntBaseDO);
+ sysIntBaseMapper.updateByPrimaryKey(sysIntBaseDO);
+ return sysIntBaseDO2VO(sysIntBaseDO);
+ }
+
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param sysIntBaseDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param sysIntBaseDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(SysIntBaseDTO sysIntBaseDTO, SysIntBaseDO sysIntBaseDO) {
+ SysIntBaseDO tsDO = new SysIntBaseDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntBaseDTO,tsDO);
+ //boService.checkTs(tsDO);
+ if(!checkIsLinked(sysIntBaseDO.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{
+ return !sysIntInfoService.isAlreadyUse(oid,null);
+ }
+
+ /**
+ * 鍒犻櫎绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param sysIntBaseDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteSysIntBase(SysIntBaseDTO sysIntBaseDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntBaseDTO,"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹璞�",sysIntBaseDTO.getOid(),"绯荤粺闆嗘垚鐨勭郴缁熶俊鎭殑涓婚敭");
+ SysIntBaseDO sysIntBaseDO = selectByOid(sysIntBaseDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(sysIntBaseDTO,sysIntBaseDO);
+ if(baseResult.isSuccess()) {
+
+ }else{
+ return baseResult;
+ }
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = sysIntBaseMapper.deleteByPrimaryKey(sysIntBaseDO.getOid());
+ return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param oid 涓婚敭
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntBaseVO getObjectByOid(String oid) throws VciBaseException{
+ return sysIntBaseDO2VO(selectByOid(oid));
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private SysIntBaseDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntBaseDO sysIntBaseDO = sysIntBaseMapper.selectByPrimaryKey(oid.trim());
+ if(sysIntBaseDO == null || StringUtils.isBlank(sysIntBaseDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return sysIntBaseDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鐨勭郴缁熶俊鎭�
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞�
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<SysIntBaseVO> listSysIntBaseByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<SysIntBaseDO> sysIntBaseDOList = listSysIntBaseDOByOidCollections(oidCollections);
+ return sysIntBaseDO2VOs(sysIntBaseDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<SysIntBaseDO> listSysIntBaseDOByOidCollections(Collection<String> oidCollections){
+ List<SysIntBaseDO> sysIntBaseDOList = new ArrayList<SysIntBaseDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<SysIntBaseDO> tempDOList = sysIntBaseMapper.selectByPrimaryKeyCollection(oids);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ sysIntBaseDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return sysIntBaseDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鐨勭郴缁熶俊鎭垪琛�
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntBaseVO> refDataGridSysIntBase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridSysIntBase(conditionMap,pageHelper);
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntInfoServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntInfoServiceImpl.java
new file mode 100644
index 0000000..60a3de8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/SysIntInfoServiceImpl.java
@@ -0,0 +1,1097 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.code.dao.*;
+import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO;
+import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
+import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
+import com.vci.ubcs.code.dao.*;
+import com.vci.ubcs.code.enumpack.SysIntegrationAuthorityTypeEnum;
+import com.vci.ubcs.code.enumpack.SysIntegrationRequestTypeEnum;
+import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
+import com.vci.code.model.*;
+import com.vci.ubcs.code.service.CodeClassifyServiceI;
+import com.vci.ubcs.code.service.MdmEngineServiceI;
+import com.vci.ubcs.code.service.SysIntBaseServiceI;
+import com.vci.ubcs.code.service.SysIntInfoServiceI;
+import com.vci.ubcs.code.utils.HttpUtils;
+import com.vci.ubcs.code.utils.WsErpClientUtil;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+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.pagemodel.TreeQueryObject;
+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.ubcs.code.model.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.redis.RedisService;
+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 com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
+import org.springblade.code.dao.*;
+import com.vci.ubcs.code.dto.SysIntHeaderDTO;
+import com.vci.ubcs.code.dto.SysIntInfoDTO;
+import com.vci.ubcs.code.dto.SysIntParamDTO;
+import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
+import org.springblade.code.model.*;
+import org.springblade.code.vo.pagemodel.*;
+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.frameworkcore.constant.FrameWorkLangCodeConstant.*;
+
+
+/**
+ * 绯荤粺闆嗘垚鍩虹淇℃伅鏈嶅姟
+ * @author lihang
+ * @date 2022-03-07
+ */
+@Service
+public class SysIntInfoServiceImpl implements SysIntInfoServiceI {
+
+ @Value("${dataSyncPush.dataParamName:xmlData}")
+ public String DATA_PARAM_NAME;
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private SysIntInfoDaoI sysIntInfoMapper;
+
+ /**
+ * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ /**
+ * 瀵硅薄鐨勬搷浣�
+ */
+ @Autowired
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 绯荤粺闆嗘垚涓殑绯荤粺淇℃伅鏈嶅姟
+ */
+ @Autowired
+ private SysIntBaseServiceI sysIntBaseService;
+
+ /**
+ * 鎺ュ彛鍙傛暟
+ */
+ @Autowired
+ private SysIntParamDaoI sysIntParamDaoI;
+
+ /**
+ * 鎺ュ彛楠岃瘉淇℃伅
+ */
+ @Autowired
+ private SysIntHeaderDaoI sysIntHeaderDaoI;
+
+ /**
+ * 鍒嗙被涓氬姟绫诲瀷鎿嶄綔鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceI codeClassifyServiceI;
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+ /**
+ * 闆嗘垚鏃ュ織鏁版嵁鎿嶄綔灞�
+ */
+ @Resource
+ private DockingLogeDaoI dockingLogeDaoI;
+ @Resource
+ private DockingTaskDaoI dockingTaskDaoI;
+ /**
+ * 鏁版嵁鏈嶅姟
+ */
+ @Autowired(required = false)
+ @Lazy
+ private MdmEngineServiceI mdmEngineServiceI;
+
+ /**
+ * 鏌ヨ鎵�鏈夌殑绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntInfoVO> gridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if (pageHelper == null) {
+ pageHelper = new PageHelper(-1);
+ }
+ pageHelper.addDefaultDesc("createTime");
+ List<SysIntInfoDO> doList = sysIntInfoMapper.selectByCondition(conditionMap,pageHelper);
+// Set<String> targetIdList = doList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
+// Set<String> sourceIdList = doList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet());
+// List<String> oidList = new ArrayList<>();
+// oidList.addAll(targetIdList);
+// oidList.addAll(sourceIdList);
+// if (!CollectionUtils.isEmpty(oidList)) {
+// List<SysIntBaseVO> sysIntBaseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidList);
+// matchSysOid2BuildInfoDO(doList, sysIntBaseVOList);
+// }
+ DataGrid<SysIntInfoVO> dataGrid=new DataGrid<SysIntInfoVO>();
+ if (!CollectionUtils.isEmpty(doList)) {
+ dataGrid.setData(sysIntInfoDO2VOs(doList));
+ dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(sysIntInfoMapper.countByCondition(conditionMap))));
+ }
+ return dataGrid;
+ }
+
+ /**
+ * 鏍规嵁BaseVO闆嗗悎涓殑oid瀵笽nfoDO鐨勭洰鏍囩郴缁熶富閿�佹潵婧愮郴缁熶富閿繘琛屽尮閰嶏紝缁勮绯荤粺鍚嶇О鍜岀郴缁熸爣璇�
+ * @param doList 绯荤粺闆嗘垚鍩虹淇℃伅瀵硅薄闆嗗悎
+ * @param sysIntBaseVOList 绯荤粺闆嗘垚绯荤粺淇℃伅闆嗗悎
+ */
+ private void matchSysOid2BuildInfoDO(List<SysIntInfoDO> doList, List<SysIntBaseVO> sysIntBaseVOList) {
+ doList.forEach(info -> {
+ sysIntBaseVOList.stream().filter(vo -> {
+ return info.getTargetSystemOid().equals(vo.getOid());
+ }).forEach(base -> {
+ info.setTargetSysId(base.getId());
+ info.setTargetSysName(base.getName());
+ });
+ sysIntBaseVOList.stream().filter(vo -> {
+ return info.getSourceSystemOid().equals(vo.getOid());
+ }).forEach(base -> {
+ info.setSourceSysId(base.getId());
+ info.setSourceSysName(base.getName());
+ info.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(info.getAuthorityType()));
+ });
+ });
+ }
+ @Override
+ public List<SysIntInfoDO> selectAll(Map conditonMap){
+ return sysIntInfoMapper.selectAll(conditonMap);
+ }
+
+ /**
+ * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntInfoDOs 鏁版嵁瀵硅薄鍒楄〃
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public List<SysIntInfoVO> sysIntInfoDO2VOs(Collection<SysIntInfoDO> sysIntInfoDOs) throws VciBaseException{
+ List<SysIntInfoVO> voList = new ArrayList<SysIntInfoVO>();
+ if(!CollectionUtils.isEmpty(sysIntInfoDOs)){
+ for(SysIntInfoDO s: sysIntInfoDOs){
+ SysIntInfoVO vo = sysIntInfoDO2VO(s);
+ if(vo != null){
+ voList.add(vo);
+ }
+ }
+ }
+ return voList;
+ }
+
+ /**
+ * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+ * @param sysIntInfoDO 鏁版嵁瀵硅薄
+ * @return 鏄剧ず瀵硅薄
+ * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO) throws VciBaseException{
+ SysIntInfoVO vo = new SysIntInfoVO();
+ if(sysIntInfoDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ vo.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(vo.getPushType()));
+
+ }
+ return vo;
+ }
+
+ /**
+ * 澧炲姞绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntInfoVO addSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntInfoDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+ checkColumnNotNull(sysIntInfoDTO);
+ String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
+ SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
+ sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
+ sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
+ sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
+ sysIntInfoDTO.setUsedflag("true");//璁剧疆榛樿鍚敤鐘舵��
+
+ //灏咲TO杞崲涓篋O
+ SysIntInfoDO sysIntInfoDO = new SysIntInfoDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,sysIntInfoDO);
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+ BatchCBO batchCBO_update = new BatchCBO();
+ BatchCBO sysIntInfoBo= sysIntInfoMapper.insert(sysIntInfoDO);
+
+ List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
+ List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
+ sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
+ SysIntParamDO sysIntParamDO = new SysIntParamDO();
+ sysIntParamDTO.setInfoOid(sysIntInfoDO.getOid());
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
+ sysIntParamDOS.add(sysIntParamDO);
+ });
+ }
+ List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
+ List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
+ sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
+ SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
+ sysIntHeaderDTO.setInfoOid(sysIntInfoDO.getOid());
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
+ sysIntHeaderDOS.add(sysIntHeaderDO);
+ });
+ }
+
+ batchCBO_update.copyFromOther(sysIntInfoBo);
+ //鎵归噺澶勭悊淇濆瓨header瀵硅薄
+ if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
+ BatchCBO sysIntHeaderBO = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
+ batchCBO_update.copyFromOther(sysIntHeaderBO);
+ }
+ //鎵归噺澶勭悊淇濆瓨Param瀵硅薄
+ if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
+ BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
+ batchCBO_update.copyFromOther(sysIntParamBO);
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
+
+ return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
+ }
+
+ /**
+ *
+ * @param sysIntInfoDO
+ * @param sysIntHeaderDOS
+ * @param sysIntParamDOS
+ * @return
+ */
+ private SysIntInfoVO sysIntInfoDO2VO(SysIntInfoDO sysIntInfoDO, List<SysIntHeaderDO> sysIntHeaderDOS, List<SysIntParamDO> sysIntParamDOS) {
+ SysIntInfoVO vo = new SysIntInfoVO();
+ if(sysIntInfoDO != null){
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDO,vo);
+ //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+ List<SysIntParamVO> sysIntParamVOs=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntParamDOS)){
+ sysIntParamDOS.stream().forEach(sysIntParamDO -> {
+ SysIntParamVO sysIntParamVO=new SysIntParamVO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDO,sysIntParamVO);
+ sysIntParamVOs.add(sysIntParamVO);
+ });
+ vo.setSysIntParamVOs(sysIntParamVOs);
+ }
+ List<SysIntHeaderVO> sysIntHeaderVOs=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
+ sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
+ SysIntHeaderVO sysIntHeaderVO=new SysIntHeaderVO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDO,sysIntHeaderVO);
+ sysIntHeaderVOs.add(sysIntHeaderVO);
+ });
+ vo.setSysIntHeaderVOs(sysIntHeaderVOs);
+ }
+ }
+ return vo;
+ }
+
+ /**
+ * 绯荤粺闆嗘垚鎺ュ彛鍩虹淇℃伅Null瀛楁妫�楠�
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ private void checkColumnNotNull(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
+ if (SysIntegrationRequestTypeEnum.HTTP.getValue().equals(sysIntInfoDTO.getInterfacetype())){
+ VciBaseUtil.alertNotNull(sysIntInfoDTO.getRequesturl(),"HTTP鎺ュ彛鐨勮姹傚湴鍧�",sysIntInfoDTO.getRequestmethod(),"HTTP鎺ュ彛鐨勮姹傛柟寮�");
+ }
+ if (SysIntegrationRequestTypeEnum.WEB_SERVICE.getValue().equals(sysIntInfoDTO.getInterfacetype())){
+ VciBaseUtil.alertNotNull(sysIntInfoDTO.getInterfaceFunction(),"WebService鐨勬帴鍙e嚱鏁�");
+ }
+ if (SysIntegrationRequestTypeEnum.CLASSPATH.getValue().equals(sysIntInfoDTO.getInterfacetype())){
+ VciBaseUtil.alertNotNull(sysIntInfoDTO.getClassPath(),"绫昏矾寰�");
+ }
+ }
+
+ /**
+ * 淇敼绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄
+ * @return 鎵ц缁撴灉
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntInfoVO editSave(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntInfoDTO,"鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
+
+
+ String sourcesystemoid = sysIntInfoDTO.getSourcesystemoid();
+ SysIntBaseVO sysIntBaseVO = sysIntBaseService.getObjectByOid(sourcesystemoid);
+ sysIntInfoDTO.setSysbaseoid(sourcesystemoid);
+ sysIntInfoDTO.setSysbaseid(sysIntBaseVO.getId());
+ sysIntInfoDTO.setSysbasename(sysIntBaseVO.getName());
+
+ //灏咲TO杞崲涓篋O
+ SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
+ revisionModelUtil.copyFromDTOIgnore(sysIntInfoDTO,sysIntInfoDO);
+ String sysInfoOid=sysIntInfoDO.getOid();
+ List<SysIntParamDTO> sysIntParamDTOS= sysIntInfoDTO.getSysIntParamDTOs();
+ List<SysIntParamDO> sysIntParamDOS=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntParamDTOS)) {
+ sysIntParamDTOS.stream().forEach(sysIntParamDTO -> {
+ SysIntParamDO sysIntParamDO = new SysIntParamDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO);
+ sysIntParamDOS.add(sysIntParamDO);
+ });
+ }
+ List<SysIntHeaderDTO> sysIntHeaderDTOs= sysIntInfoDTO.getSysIntHeaderDTOS();
+ List<SysIntHeaderDO> sysIntHeaderDOS = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) {
+ sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> {
+ SysIntHeaderDO sysIntHeaderDO = new SysIntHeaderDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, sysIntHeaderDO);
+ sysIntHeaderDOS.add(sysIntHeaderDO);
+ });
+ }
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ BatchCBO batchCBO_update = new BatchCBO();
+ BatchCBO sysIntInfoBo= sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
+
+ batchCBO_update.copyFromOther(sysIntInfoBo);
+ //鎵归噺澶勭悊淇濆瓨header瀵硅薄
+ if(!CollectionUtils.isEmpty(sysIntHeaderDOS)) {
+ List<String> idList=new ArrayList<>();
+ List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
+ for (SysIntHeaderDO sysIntHeaderDO:headers_old){
+ sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
+ idList.add(sysIntHeaderDO.getOid());
+ }
+ if(idList.size()!=0){
+ BatchCBO sysIntHeaderDeleteBO = sysIntHeaderDaoI.batchDeleteByOids(idList);
+ batchCBO_update.copyFromOther(sysIntHeaderDeleteBO);
+ }
+ //鍐嶆柊澧瀐eaders
+ for(SysIntHeaderDO sysIntHeaderDO:sysIntHeaderDOS){
+ sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
+ sysIntHeaderDO.setInfoOid(sysIntInfoDTO.getOid());
+
+ }
+ BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(sysIntHeaderDOS);
+ batchCBO_update.copyFromOther(batchCBO_insert);
+ }
+ //鎵归噺澶勭悊淇濆瓨Param瀵硅薄
+ if(!CollectionUtils.isEmpty(sysIntParamDOS)) {
+ //鍏堝垹闄arams_old
+ List<String> idList=new ArrayList<>();
+ List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
+ for (SysIntParamDO sysIntParamDO:params_old){
+ sysIntParamDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
+ idList.add(sysIntParamDO.getOid());
+ }
+ if(idList.size()!=0){
+ BatchCBO sysIntParamDeleteBO = sysIntParamDaoI.batchDeleteByOids(idList);
+ batchCBO_update.copyFromOther(sysIntParamDeleteBO);
+ }
+ //鍐嶆柊澧瀙arams
+ for(SysIntParamDO sysIntParamDOi:sysIntParamDOS){
+ sysIntParamDOi.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
+ sysIntParamDOi.setInfoOid(sysIntInfoDTO.getOid());
+ }
+ BatchCBO sysIntParamBO = sysIntParamDaoI.batchInsert(sysIntParamDOS);
+ batchCBO_update.copyFromOther(sysIntParamBO);
+ }
+ WebUtil.setPersistence(true);//涓嶆墽琛屼繚瀛�
+ boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
+ return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
+ }
+
+ /**
+ * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+ * @param sysIntInfoDTO 鏁版嵁浼犺緭瀵硅薄
+ * @param sysIntInfoDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+ * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+ */
+ private BaseResult checkIsCanDeleteForDO(SysIntInfoDTO sysIntInfoDTO, SysIntInfoDO sysIntInfoDO) {
+ SysIntInfoDO tsDO = new SysIntInfoDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntInfoDTO,tsDO);
+ boService.checkTs(tsDO);
+ if(!checkIsLinked(sysIntInfoDO.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 sysIntInfoDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+ * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+ * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+ */
+ @Override
+ public BaseResult deleteSysIntInfo(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException{
+ VciBaseUtil.alertNotNull(sysIntInfoDTO,"绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅鐨勪富閿�");
+ SysIntInfoDO sysIntInfoDO = selectByOid(sysIntInfoDTO.getOid());
+ BaseResult baseResult = checkIsCanDeleteForDO(sysIntInfoDTO,sysIntInfoDO);
+ if(baseResult.isSuccess()) {
+
+ }else{
+ return baseResult;
+ }
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO_update = new BatchCBO();
+ //鎵ц鍒犻櫎鎿嶄綔
+ BatchCBO batchCBO = sysIntInfoMapper.deleteByPrimaryKey(sysIntInfoDO.getOid());
+ batchCBO_update.copyFromOther(batchCBO);
+ List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(sysIntInfoDO.getOid());
+ if(!CollectionUtils.isEmpty(sysIntHeaderDOS)){
+ List<String>headerIdList=new ArrayList<>();
+ sysIntHeaderDOS.stream().forEach(sysIntHeaderDO -> {
+ headerIdList.add(sysIntHeaderDO.getOid());
+ });
+ BatchCBO headerBO=sysIntHeaderDaoI.batchDeleteByOids(headerIdList);
+ batchCBO_update.copyFromOther(headerBO);
+ }
+ List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid (sysIntInfoDO.getOid());
+ if(!CollectionUtils.isEmpty(sysIntParamDOS)){
+ List<String>paramIdList=new ArrayList<>();
+ sysIntParamDOS.stream().forEach(sysIntParamDO -> {
+ paramIdList.add(sysIntParamDO.getOid());
+ });
+ BatchCBO paramBO= sysIntParamDaoI.batchDeleteByOids(paramIdList);
+ batchCBO_update.copyFromOther(paramBO);
+ }
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
+ return (batchCBO_update!=null && batchCBO_update.getDeleteCbos() !=null &&batchCBO_update.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+ }
+
+ /**
+ * 涓婚敭鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param oid 涓婚敭
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+ */
+ @Override
+ public SysIntInfoVO getObjectByOid(String oid) throws VciBaseException{
+
+ SysIntInfoDO sysIntInfoDO= selectByOid(oid);
+ List<SysIntHeaderDO> sysIntHeaderDOS=sysIntHeaderDaoI.selectBySysinfoOid(oid.trim());
+ List<SysIntParamDO> sysIntParamDOS=sysIntParamDaoI.selectBySysinfoOid(oid.trim());
+ return sysIntInfoDO2VO(sysIntInfoDO,sysIntHeaderDOS,sysIntParamDOS);
+ }
+
+ /**
+ * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+ * @param oid 涓婚敭
+ * @return 鏁版嵁瀵硅薄
+ * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+ */
+ private SysIntInfoDO selectByOid(String oid) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oid,"涓婚敭");
+ SysIntInfoDO sysIntInfoDO = sysIntInfoMapper.selectByPrimaryKey(oid.trim());
+ if(sysIntInfoDO == null || StringUtils.isBlank(sysIntInfoDO.getOid())){
+ throw new VciBaseException(DATA_OID_NOT_EXIST);
+ }
+ return sysIntInfoDO;
+ }
+
+ /**
+ * 涓婚敭鎵归噺鑾峰彇绯荤粺闆嗘垚鍩虹淇℃伅
+ * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄
+ * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+ */
+ @Override
+ public Collection<SysIntInfoVO> listSysIntInfoByOids(Collection<String> oidCollections) throws VciBaseException{
+ VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+ List<SysIntInfoDO> sysIntInfoDOList = listSysIntInfoDOByOidCollections(oidCollections);
+ return sysIntInfoDO2VOs(sysIntInfoDOList);
+ }
+
+ /**
+ * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+ * @param oidCollections 涓婚敭鐨勯泦鍚�
+ * @return 鏁版嵁瀵硅薄鍒楄〃
+ */
+ private List<SysIntInfoDO> listSysIntInfoDOByOidCollections(Collection<String> oidCollections){
+ List<SysIntInfoDO> sysIntInfoDOList = new ArrayList<SysIntInfoDO>();
+ if(!CollectionUtils.isEmpty(oidCollections)){
+ Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+ for(Collection<String> oids: oidCollectionsList){
+ List<SysIntInfoDO> tempDOList = sysIntInfoMapper.selectByPrimaryKeyCollection(oids);
+ Set<String> oidSet = tempDOList.stream().map(SysIntInfoDO::getTargetSystemOid).collect(Collectors.toSet());
+ oidSet.addAll(tempDOList.stream().map(SysIntInfoDO::getSourceSystemOid).collect(Collectors.toSet()));
+ List<SysIntBaseVO> baseVOList = (List<SysIntBaseVO>) sysIntBaseService.listSysIntBaseByOids(oidSet);
+ matchSysOid2BuildInfoDO(tempDOList,baseVOList);
+ if(!CollectionUtils.isEmpty(tempDOList)){
+ sysIntInfoDOList.addAll(tempDOList);
+ }
+ }
+ }
+ return sysIntInfoDOList;
+ }
+
+
+
+ /**
+ * 鍙傜収绯荤粺闆嗘垚鍩虹淇℃伅鍒楄〃
+ * @param conditionMap 鏌ヨ鏉′欢
+ * @param pageHelper 鍒嗛〉鍜屾帓搴�
+ * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public DataGrid<SysIntInfoVO> refDataGridSysIntInfo(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+ if(conditionMap == null){
+ conditionMap = new HashMap<String, String>();
+ }
+ return gridSysIntInfo(conditionMap,pageHelper);
+ }
+
+ /**
+ * 褰撳墠鎺ュ彛淇℃伅鏄惁鏈変娇鐢ㄧ洰鏍囦俊鎭�
+ * @param sysOid 绯荤粺Oid
+ * @param authorityOid 璁よ瘉鏂瑰紡Oid
+ * @return true = 鍦ㄤ娇鐢� 锛沠alse = 鏈娇鐢�
+ * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+ */
+ @Override
+ public boolean isAlreadyUse(String sysOid, String authorityOid) throws VciBaseException {
+ Map<String,String> conditionMap = new HashMap<>();
+ if (StringUtils.isNotBlank(sysOid)){
+ conditionMap.put("sourceSystemOid",sysOid);
+ Long countSource = sysIntInfoMapper.countByCondition(conditionMap);
+ if (countSource > 0){
+ return true;
+ }
+ conditionMap.clear();
+ conditionMap.put("targetSystemOid",sysOid);
+ Long countTarget = sysIntInfoMapper.countByCondition(conditionMap);
+ if (countTarget > 0){
+ return true;
+ }
+ conditionMap.clear();
+ }
+ if (StringUtils.isNotBlank(authorityOid)){
+ conditionMap.put("authorityOid",authorityOid);
+ Long countAuthority = sysIntInfoMapper.countByCondition(conditionMap);
+ if (countAuthority > 0){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //=========浠ヤ笅绯荤粺鍙傛暟鍜岄獙璇佷俊鎭�
+
+ /**
+ * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛param
+ * @param sysInfoOid
+ * @return
+ */
+ @Override
+ public List<SysIntParamDO> getParamsBySystemInfoOid(String sysInfoOid){
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntParamDO.class);
+ queryWrapper.addQueryMap("infoOid",sysInfoOid);
+ queryWrapper.addQueryMap("usedflag", MdmDuckingConstant.FLAG_TRUE);
+ List<SysIntParamDO> all_params = sysIntParamDaoI.selectByWrapper(queryWrapper);
+ return all_params;
+ }
+
+ /**
+ * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塸aram
+ * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塸aram
+ * @return
+ */
+ @Override
+ public BaseResult updateParams(String sysInfoOid,List<SysIntParamDO> params){
+
+ //鍏堜綔搴熸墍鏈夌殑params_old
+ List<SysIntParamDO> params_old = getParamsBySystemInfoOid(sysInfoOid);
+ for (SysIntParamDO sysIntParamDO:params_old){
+ sysIntParamDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
+ }
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ BatchCBO batchCBO_update = new BatchCBO();
+ if(params_old.size()!=0){
+ batchCBO_update = sysIntParamDaoI.batchUpdate(params_old);
+ }
+
+ if(params!=null&¶ms.size()!=0) {
+ //鍐嶆柊澧瀙arams
+ for(SysIntParamDO sysIntParamDOi:params){
+ sysIntParamDOi.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
+ }
+ BatchCBO batchCBO_insert = sysIntParamDaoI.batchInsert(params);
+ batchCBO_update.copyFromOther(batchCBO_insert);
+ }
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
+ return BaseResult.success("淇濆瓨鎴愬姛!");
+ }
+
+ /**
+ * 鏍规嵁绯荤粺淇℃伅鏌ヨ鎺ュ彛header
+ * @param sysInfoOid
+ * @return
+ */
+ @Override
+ public List<SysIntHeaderDO> getHeadersBySystemInfoOid(String sysInfoOid){
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(SysIntHeaderDO.class);
+ queryWrapper.addQueryMap("infoOid",sysInfoOid);
+ queryWrapper.addQueryMap("usedflag", MdmDuckingConstant.FLAG_TRUE);
+ List<SysIntHeaderDO> all_headers = sysIntHeaderDaoI.selectByWrapper(queryWrapper);
+ return all_headers;
+ }
+
+ /**
+ * 1銆佸厛鍒犻櫎浠ュ墠鎵�鏈塰eader
+ * 2銆佸啀鏌ヨ浼犲叆鐨勬墍鏈塰eader
+ * @return
+ */
+ @Override
+ public BaseResult updateHeaders(String sysInfoOid,List<SysIntHeaderDO> headers){
+ //鍏堜綔搴熸墍鏈夌殑headers_old
+ List<SysIntHeaderDO> headers_old = getHeadersBySystemInfoOid(sysInfoOid);
+ for (SysIntHeaderDO sysIntHeaderDO:headers_old){
+ sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_FAIL);
+ }
+
+ WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+ BatchCBO batchCBO_update = new BatchCBO();
+ if(headers_old.size()!=0){
+ batchCBO_update = sysIntHeaderDaoI.batchUpdate(headers_old);
+ }
+
+ if(headers!=null&&headers.size()!=0) {
+ //鍐嶆柊澧瀐eaders
+ for(SysIntHeaderDO sysIntHeaderDO:headers){
+ sysIntHeaderDO.setUsedflag(MdmDuckingConstant.FLAG_TRUE);
+ }
+ BatchCBO batchCBO_insert = sysIntHeaderDaoI.batchInsert(headers);
+ batchCBO_update.copyFromOther(batchCBO_insert);
+ }
+
+ WebUtil.setPersistence(true);//鎵ц淇濆瓨
+ boService.persistenceBatch(batchCBO_update);//涓�璧锋墽琛屼繚瀛�
+ return BaseResult.success("淇濆瓨鎴愬姛!");
+ }
+
+ @Override
+ public List<SysIntInfoDO> getSysInfoByClassifyOid(String[] classifyOids) {
+ return null;
+ }
+
+ /***
+ *璁剧疆鏄惁鍚敤/鍋滅敤
+ * @param sysInfoStatusDTO
+ * @return
+ */
+ @Override
+ public BaseResult updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO){
+ VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"鏁版嵁瀵硅薄",sysInfoStatusDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
+ SysIntInfoDO sysIntInfoDO = selectByOid(sysInfoStatusDTO.getOid());
+ try {
+ sysIntInfoDO.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if(sysInfoStatusDTO.getUpdate().equals("disable")) {
+ sysIntInfoDO.setUsedflag("false");
+ }else{
+ sysIntInfoDO.setUsedflag("true");
+ }
+ sysIntInfoMapper.updateByPrimaryKey(sysIntInfoDO);
+ return BaseResult.success();
+ }
+
+ /***
+ * 鎺ㄩ�佸垎绫�/鏁版嵁
+ * @param sysIntInfoDTO
+ * @return
+ * @throws VciBaseException
+ */
+ @Override
+ public BaseResult pushData(SysIntInfoDTO sysIntInfoDTO) throws VciBaseException {
+ VciBaseUtil.alertNotNull(sysIntInfoDTO,"鏁版嵁瀵硅薄",sysIntInfoDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭");
+ boolean issuccess=false;
+ String type="鏁版嵁鎺ㄩ��";
+ if(sysIntInfoDTO.getPushType().equalsIgnoreCase("1")){//鎺ㄩ�佹暟鎹�
+ pushDockingTasks(sysIntInfoDTO);
+ }else if(sysIntInfoDTO.getPushType().equalsIgnoreCase("2")){//鎺ㄩ�佸垎绫�
+ issuccess= pushClsfDatas(sysIntInfoDTO);
+ type="鍒嗙被鎺ㄩ��";
+ }
+ return issuccess?BaseResult.successMsg(type+"鎴愬姛锛�"):BaseResult.successMsg(type+"澶辫触锛�");
+ }
+ private BaseResult pushDockingTasks(SysIntInfoDTO sysIntInfoDTO) {
+ String msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�";
+ try {
+ SysIntInfoVO sysIntInfoVO = getObjectByOid(sysIntInfoDTO.getOid());
+ String codeClassifyOid = sysIntInfoVO.getClassifyoid();
+ CodeClassifyTemplateVO templateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(codeClassifyOid);
+ CodeClassifyVO topClassifyVO = codeClassifyServiceI.getTopClassifyVO(codeClassifyOid);
+ String btmTypeId = topClassifyVO.getBtmtypeid();
+ if (StringUtils.isBlank(btmTypeId)) {
+ return BaseResult.fail("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�");
+ }
+ List<CodeClassifyVO> codeClassifyIdPathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "id", false);
+ List<CodeClassifyVO> codeClassifynamePathVOS = codeClassifyServiceI.listChildrenClassify(topClassifyVO.getOid(), true, "name", false);
+ Map<String/**鍒嗙被oid**/, String/**鍒嗙被浠e彿閾炬帴绗�**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
+ Map<String/**鍒嗙被oid**/, String/**鍒嗙被鍚嶇О閾炬帴绗�**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
+
+ PageHelper pageHelper = new PageHelper();
+ pageHelper.setPage(1);
+ pageHelper.setLimit(1000000);
+ pageHelper.setStart(0);
+ HashMap<String, String> conditionMap = new HashMap<>();
+ if (!codeClassifyServiceI.checkHasChild(codeClassifyOid)) {
+ conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
+ } else {
+ conditionMap.put(MdmEngineConstant.CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
+ + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
+ "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
+ }
+ conditionMap.put("islastr", "1");
+ conditionMap.put("islastv", "1");
+ List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"}));
+ conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0])));
+
+ CodeTemplateAttrSqlBO sqlBO = mdmEngineServiceI.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper);
+ List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
+ List<DockingTaskDO> dockingTaskDO_insert = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(maps)) {
+ maps.stream().forEach(map -> {
+ String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁oid
+ String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎺ㄩ�佺被鍨�
+ String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//缂栫爜
+ String btmid = topClassifyVO.getBtmtypeid();//鏁版嵁涓氬姟绫诲瀷
+ String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎵�鍦ㄧ殑鍒嗙被id
+ String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr);
+ DockingTaskDO dockingTaskDO = new DockingTaskDO();
+ dockingTaskDO.setOid(date2Str +"_"+id);
+ dockingTaskDO.setSendflag(MdmDuckingConstant.SEND_FLAG_FALSE);
+ dockingTaskDO.setId(id);//缂栫爜
+ dockingTaskDO.setUniquecode("");
+ dockingTaskDO.setBtmoid(btmoid);//鏁版嵁oid
+ dockingTaskDO.setBtmid(btmid);//鏁版嵁涓氬姟绫诲瀷id
+ if (clsfOidIdMap.containsKey(classifyoid)) {
+ String classifyid = clsfOidIdMap.get(classifyoid);
+ dockingTaskDO.setClassifyid(classifyid);//鏁版嵁鍦ㄥ垎绫籭d
+ }
+ dockingTaskDO.setClassifyoid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id
+ if (clsfOidNameMap.containsKey(classifyoid)) {
+ String classifyname = clsfOidNameMap.get(classifyoid);
+ dockingTaskDO.setClassifyname(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉�
+ }
+ dockingTaskDO.setSendtype(sendtype);//鏁版嵁鎺ㄩ�佺被鍨�
+ //String dataoid=redisService.getUUIDEveryDay();
+ dockingTaskDO.setDataoid(date2Str +"_"+ btmoid);
+ //intinfo
+ dockingTaskDO.setSysinfooid(sysIntInfoVO.getOid());//intinfo鐨刼id
+ dockingTaskDO.setSystemoid(sysIntInfoVO.getSysbaseoid());//绯荤粺oid
+ dockingTaskDO.setSystemcode(sysIntInfoVO.getSysbaseid());//绯荤粺缂栫爜
+ dockingTaskDO.setSystemname(sysIntInfoVO.getSysbasename());//绯荤粺name
+ dockingTaskDO_insert.add(dockingTaskDO);
+ });
+ }
+ BatchCBO bo = dockingTaskDaoI.batchInsert(dockingTaskDO_insert);
+
+ }catch (Throwable e){
+ msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!";
+ logger.error("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!"+e);
+ e.printStackTrace();
+ }finally {
+ logger.info(msg);
+ return BaseResult.successMsg("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�");
+ }
+ }
+ private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){
+ String[] s=StringValue.split("#");
+ StringBuffer sb=new StringBuffer();
+ List<String> list=new ArrayList<>(Arrays.asList(s));
+ Collections.reverse(list);
+ System.out.println(list.toString());
+ for (String o:list){
+ if(StringUtils.isNotBlank(o)){
+ sb.append(o).append(",");
+ }
+ }
+ sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName());
+ System.out.println(sb.toString());
+
+ return sb.toString();
+ }
+ /***
+ * 鍒嗙被鎺ㄩ�侀泦鎴�
+ * @param sysIntInfoDTO
+ * @return
+ */
+ private boolean pushClsfDatas(SysIntInfoDTO sysIntInfoDTO){
+ SysIntInfoVO sysIntInfoVO= getObjectByOid(sysIntInfoDTO.getOid());
+ String classOid= sysIntInfoVO.getClassifyoid();
+ List<CodeClassifyVO> listChildrenClassify= codeClassifyServiceI.listChildrenClassify(classOid,true,"id",false);
+ List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
+ JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
+ NodeDataDTO nodeDataDTO=new NodeDataDTO();
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ WebUtil.setPersistence(false);
+ BatchCBO batchCBO = new BatchCBO();
+ boolean isSuccess=false;
+ try {
+ String sendString = "";
+ if (!CollectionUtils.isEmpty(listChildrenClassify)) {
+ listChildrenClassify.stream().forEach(codeClassifyVO -> {
+ NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
+ nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//鍒嗙被浠e彿
+ nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//鍒嗙被鎻忚堪
+ nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//鍏ㄨ矾寰�
+ nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//鐘舵��
+ nodeClassifyDTO.setPid(codeClassifyVO.getId());//鐖秈d鑺傜偣
+ nodeClassifyDTO.setId(codeClassifyVO.getOid());//鍒嗙被oid
+ nodeClassifyDTO.setName(codeClassifyVO.getName());//鍒嗙被鍚嶇О
+ nodeClassifyDTOList.add(nodeClassifyDTO);
+ });
+ NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
+ nodeLibraryDTO.setClassify(nodeClassifyDTOList);
+ CodeClassifyVO rootClassify = codeClassifyServiceI.getTopClassifyVO(classOid);
+ nodeLibraryDTO.setId(rootClassify.getOid());
+ nodeLibraryDTO.setName(rootClassify.getName());
+ nodeDataDTO.setLibrary(nodeLibraryDTO);
+ jsonRootDataDTO.setData(nodeDataDTO);
+ String paramType = sysIntInfoDTO.getParamtype();//xml/json
+ if (paramType.equals(MdmDuckingConstant.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, batchCBO);
+ isSuccess=true;
+ }
+ }catch (Throwable e){
+ e.printStackTrace();
+ isSuccess=false;
+ }finally {
+ //姣忎竴涓猼ask涓�涓簨鐗�
+ WebUtil.setPersistence(true);
+ boService.persistenceBatch(batchCBO);
+ return true;
+ }
+ }
+ /***
+ * 璋冪敤鎺ュ彛
+ * @param sysIntInfoVO
+ * @throws Throwable
+ */
+ private void callInterface(String sendString , SysIntInfoVO sysIntInfoVO,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<SysIntParamVO> sysIntParamVOList = sysIntInfoVO.getSysIntParamVOs();
+ //鏌ヨheader
+ List<SysIntHeaderVO> sysIntHeaderVOList =sysIntInfoVO.getSysIntHeaderVOs();
+ if(type.equals(MdmDuckingConstant.URLTYPE_HTTP)) {
+ if (requestmethod.equals(MdmDuckingConstant.URLTYPE_GET)) {//GET璇锋眰
+ String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
+ //鎷兼帴param
+ for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
+ sendurl = sendurl + "&" + sysIntParamVO.getParamkey() + "=" + sysIntParamVO.getParamvalue();
+ }
+ paramString = sendurl;
+ backString = HttpUtils.get(sendurl);
+ } else if (requestmethod.equals(MdmDuckingConstant.URLTYPE_POST)) {//POST璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ if(!CollectionUtils.isEmpty(sysIntParamVOList)) {
+ for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
+ params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
+ }
+ }
+ params.add(DATA_PARAM_NAME,sendString);
+ paramString = params.toString();
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) {
+ for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
+ headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.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(MdmDuckingConstant.URLTYPE_WEBSERVICE)) {//webserver璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (SysIntParamVO sysIntParamVO : sysIntParamVOList) {
+ params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
+ }
+ paramString = sendString;
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (SysIntHeaderVO sysIntHeaderVO : sysIntHeaderVOList) {
+ headers.add(sysIntHeaderVO.getHeaderkey(), sysIntHeaderVO.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(MdmDuckingConstant.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.getClassifyid());
+ resultNodeObjectDTO.setOid(sysIntInfoVO.getClassifyoid());
+ 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(sysIntInfoVO.getSysbaseid());
+ dockingLogeDO.setSystemname(sysIntInfoVO.getSysbasename());
+ dockingLogeDO.setSystemoid(sysIntInfoVO.getSysbaseoid());
+ dockingLogeDO.setClassifyoid(sysIntInfoVO.getClassifyoid());
+ dockingLogeDO.setClassifyid(sysIntInfoVO.getClassifyid());
+ dockingLogeDO.setClassifyname(sysIntInfoVO.getClassifyname());
+ dockingLogeDO.setId(sysIntInfoVO.getId());
+ dockingLogeDO.setUniquecode("");
+ dockingLogeDO.setInterfacestatus(isSend?"true":"false");
+ dockingLogeDO.setParamstring(paramString);
+ dockingLogeDO.setType(MdmDuckingConstant.DATA_LOGE_OUT);
+ dockingLogeDO.setReturnstring(backString);
+ dockingLogeDO.setMsg(msg);
+ logger.info("闆嗘垚鎺ㄩ�佹暟鎹�,systemcode:"+sysIntInfoVO.getSysbaseid()+",systemname:"+sysIntInfoVO.getSysbasename()+",url:"+url+",param:"+paramString+",e:"+msg);
+ BatchCBO dockingLogeDOBo = dockingLogeDaoI.insert(dockingLogeDO);
+ batchCBO.copyFromOther(dockingLogeDOBo);
+ }
+ }
+ }
+
+ private void initData(String rootClassOid , Map<String,String> clsfOidIdMap,Map<String,String> clsfOidNameMap){
+ TreeQueryObject treeQueryObject=new TreeQueryObject();
+ treeQueryObject.setParentOid(rootClassOid);
+ treeQueryObject.setQueryAllLevel(true);
+ List<CodeClassifyDO> codeClassifyDOList=codeClassifyServiceI.selectCodeClassifyDOByTree(treeQueryObject);
+ if(!CollectionUtils.isEmpty(codeClassifyDOList)){
+ codeClassifyDOList.stream().forEach(codeClassify->{
+ String id=codeClassify.getId();
+ String name=codeClassify.getName();
+ });
+
+ }
+ }
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
new file mode 100644
index 0000000..f8a33f6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -0,0 +1,920 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.dao.DockingLogeDaoI;
+import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
+import com.vci.ubcs.code.model.CodeClassifyDO;
+import com.vci.ubcs.code.model.DockingLogeDO;
+import com.vci.ubcs.code.service.CodeClassifyServiceI;
+import com.vci.ubcs.code.service.MdmEngineServiceI;
+import com.vci.ubcs.code.service.MdmIOServiceI;
+import com.vci.ubcs.code.service.UniversalInterfaceI;
+import com.vci.ubcs.code.utils.AttributeMapConfig;
+import com.vci.ubcs.code.utils.gennerAttrMapUtil;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.vo.universalInter.apply.*;
+import com.vci.ubcs.code.vo.universalInter.attrmap.DataObjectVO;
+import com.vci.ubcs.code.vo.universalInter.classify.*;
+import com.vci.ubcs.code.vo.universalInter.data.*;
+import com.vci.ubcs.code.vo.universalInter.result.json.*;
+import com.vci.ubcs.code.vo.universalInter.result.xml.XMLResultClassfyVO;
+import com.vci.ubcs.code.vo.universalInter.result.xml.XMLResultDataObjectDetailDO;
+import com.vci.ubcs.code.vo.universalInter.result.xml.XMLResultSystemVO;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.pagemodel.SessionInfo;
+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.VciQueryWrapperForDO;
+import com.vci.web.pageModel.BatchCBO;
+import com.vci.web.redis.RedisService;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.webservice.annotation.VciWebservice;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import org.springblade.code.vo.pagemodel.*;
+import org.springblade.code.vo.universalInter.apply.*;
+import com.vci.ubcs.code.vo.universalInter.attrmap.ClsfAttrMappingDO;
+import com.vci.ubcs.code.vo.universalInter.attrmap.LibraryClsfDO;
+import com.vci.ubcs.code.vo.universalInter.attrmap.LibraryDO;
+import com.vci.ubcs.code.vo.universalInter.attrmap.RowDatas;
+import org.springblade.code.vo.universalInter.classify.*;
+import org.springblade.code.vo.universalInter.data.*;
+import org.springblade.code.vo.universalInter.result.json.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.util.CollectionUtils;
+import plm.bs.bom.clientobject.ClientBusinessObject;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/***
+ * 缁熶竴鎺ュ彛
+ */
+@VciWebservice(path = "/universalInterface")
+public class UniversalInterfaceImpl implements UniversalInterfaceI {
+
+ /**
+ * 鏃ュ織
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Autowired
+ private AttributeMapConfig attributeMapConfig;
+ /**
+ * 缂撳瓨鏈嶅姟
+ */
+ @Autowired
+ private RedisService redisService;
+ /**
+ * 涓婚搴撳垎绫荤殑鏈嶅姟
+ */
+ @Autowired
+ private CodeClassifyServiceI classifyService;
+ /**
+ * 涓绘暟鎹紩鎿庣殑鏈嶅姟
+ */
+ @Autowired
+ private MdmEngineServiceI engineService;
+
+ /**
+ * 闆嗘垚鎺ュ彛鏃ュ織鏈嶅姟鐨勯厤缃�
+ */
+ @Resource
+ private DockingLogeDaoI dockingLogeDao;
+ /**
+ * 瀵嗙骇鐨勬湇鍔�
+ */
+
+ @Autowired
+ private MdmIOServiceI mdmIOService;
+ /**
+ * 鏁版嵁鐨勬湇鍔�
+ */
+ @Autowired
+ @Lazy
+ private WebBoServiceI boService;
+
+ private static String separator="##VCI##";
+ private String errorid="0";
+ private String msg="鎴愬姛";
+ private String objerrorCode="0";
+ private String objerrorMsg="鎴愬姛";
+
+ @Override
+ public String applyCode(String data, String dataType) throws Throwable {
+ String resultStr = "";
+ String errorid="0";
+ msg="鎴愬姛";
+ objerrorCode="0";
+ objerrorMsg="鎴愬姛";
+ logger.info("鐢宠缂栫爜鐨勬暟鎹弬鏁�:->"+data);
+ logger.info("鐢宠缂栫爜鐨勬暟鎹被鍨�:->"+dataType);
+ String systemId="";
+ List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
+ try {
+ if(StringUtils.isBlank(data)) {
+ errorid="101";
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
+ }
+ InterParameterVO interParameterVO =new InterParameterVO();
+ //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
+ try {
+ if ("xml".equals(dataType)) {
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(RootDataVO.class);
+ xStream.autodetectAnnotations(true);
+ RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
+ interParameterVO.setData(rootDataVO);
+ } else {
+ interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
+ }
+ }catch (Throwable e){
+ errorid="101";
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
+ }
+ ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
+ systemId = interParameterVO.getData().getSystemId();
+ UserVO userVo = interParameterVO.getData().getUser();
+ List<ClassfyVO> classVOList = classfysVO.getClassify();
+ InterParameterVO finalInterParameterVO = interParameterVO;
+
+ //杩欐槸璐﹀彿淇℃伅
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId(userVo.getUserName());
+ sessionInfo.setUserName(userVo.getTrueName());
+ sessionInfo.setIp(userVo.getIp());
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+
+ String finalSystemId = systemId;
+ classVOList.stream().forEach(classVO -> {
+ logger.info("鍙傛暟锛氬垎绫籆Ode:" + classVO.getClassCode());
+ LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
+ //鑾峰彇鍒嗙被淇℃伅
+ try {
+ String libray = classVO.getLibrary();
+ CodeClassifyVO codeClassifyVO = getClassfy(classVO);
+ logger.info("end锛氬垎绫绘煡璇㈠畬姣�");
+ //鑾峰彇鍒嗙被妯℃澘淇℃伅
+ if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
+ objerrorCode="100";
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅");
+ }
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
+ objerrorCode="1";
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�");
+ }
+ logger.info("end锛氭ā鏉挎煡璇㈠畬姣�");
+ ApplyDatasVO applyDatasVO = classVO.getObjects();
+ DataObjectVO dataObjectVO = new DataObjectVO();
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
+ logger.info("end锛氭暟鎹粍缁囧畬姣�");
+ //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
+ if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
+ objerrorCode="1";
+ logger.info("classifyFullInfo:"+"鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
+ }
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
+ objerrorCode="102";
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旇鍒�");
+ }
+ logger.info("end锛氳鍒欒幏鍙栧畬姣�");
+ List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classVO.getSections().getSection(), ruleVO);
+ logger.info("end锛氱爜娈佃幏鍙栧畬姣�");
+ CodeOrderDTO orderDTO = new CodeOrderDTO();
+ orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
+ orderDTO.setSecDTOList(codeOrderSecDTOList);//鍒嗙被鐮佹
+ mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs);
+ logger.info("end锛氱敵璇疯幏鍙栧畬姣�");
+ } catch (Throwable e) {
+ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ xmlResultDataObjectDetailDO.setCode("");
+ xmlResultDataObjectDetailDO.setId("");
+ xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
+ xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:"+e.getMessage());
+ resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+ e.printStackTrace();
+ }finally {
+ XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
+ resultClassfyVO.setClassCode(classVO.getClassCode());
+ resultClassfyVO.setLibrary(classVO.getLibrary());
+ resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
+ resultClassfyVO.setObjects(resultDataObjectDetailDOs);
+ resultClassfyVOList.add(resultClassfyVO);
+ }
+ });
+ XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
+ xmlResultSystemVO.setClassifys(resultClassfyVOList);
+ xmlResultSystemVO.setMsg(msg);
+ xmlResultSystemVO.setErrorid(errorid);
+ resultStr= transferResultXMl(xmlResultSystemVO,dataType);
+ }catch (Throwable e){
+ e.printStackTrace();;
+ msg="鐢宠缂栫爜澶辫触:"+e.getMessage();
+ /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
+ XMLResultSystemVO.setErrorid(errorid);
+ XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage());
+ XMLResultSystemVO.setClassifys(resultClassfyVOList);
+ resultStr=transferResultXMl(XMLResultSystemVO,dataType);
+
+ logger.error("鐢宠缂栫爜澶辫触锛�->"+e);
+ return resultStr;*/
+ }finally {
+ XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
+ xmlResultSystemVO.setClassifys(resultClassfyVOList);
+ xmlResultSystemVO.setMsg(msg);
+ xmlResultSystemVO.setErrorid(errorid);
+ resultStr= transferResultXMl(xmlResultSystemVO,dataType);
+ final boolean[] issucess = {true};
+ if(!errorid.equals("0")) {
+ issucess[0] = false;
+ }else {
+ if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
+ resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
+ xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
+ if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
+ issucess[0] = false;
+ msg=objec.getMsg();
+ }
+ });
+ });
+ }
+
+ }
+ try {
+ //璁板綍鏃ュ織
+ this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }
+ }
+ logger.info("杩斿洖鍙傛暟:"+resultStr);
+
+ return resultStr;
+ }
+
+ /***
+ * 闆嗘垚鏇存柊鎺ュ彛
+ * @param data 锛氭暟鎹俊鎭弬鏁帮細鏍规嵁datatype瀹氫箟鍏舵牸寮弜ml/json
+ * @param dataType 纭畾灞炴�т俊鎭弬鏁颁紶杈撴牸寮�
+ * @return
+ * @throws Throwable
+ */
+ @Override
+ public String syncEditData(String data, String dataType) throws Throwable {
+ String resultStr = "";
+ String errorid="0";
+ msg="鎴愬姛";
+ String systemId="";
+ objerrorCode="0";
+ objerrorMsg="鎴愬姛";
+ logger.info("鏇存敼缂栫爜鐨勬暟鎹弬鏁�:->"+data);
+ logger.info("鏇存敼缂栫爜鐨勬暟鎹被鍨�:->"+dataType);
+ List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
+ try {
+ if (StringUtils.isBlank(data)) {
+ errorid = "101";
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
+ }
+ InterParameterVO interParameterVO = new InterParameterVO();
+ //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
+ try {
+ if ("xml".equals(dataType)) {
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(RootDataVO.class);
+ xStream.autodetectAnnotations(true);
+ RootDataVO rootDataVO = (RootDataVO) xStream.fromXML(data);
+ interParameterVO.setData(rootDataVO);
+ } else {
+ interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
+ }
+ } catch (Throwable e) {
+ errorid = "101";
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
+
+ }
+ ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
+ systemId = interParameterVO.getData().getSystemId();
+ UserVO userVo = interParameterVO.getData().getUser();
+ List<ClassfyVO> classVOList = classfysVO.getClassify();
+ InterParameterVO finalInterParameterVO = interParameterVO;
+ //杩欐槸璐﹀彿淇℃伅
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId(userVo.getUserName());
+ sessionInfo.setUserName(userVo.getTrueName());
+ sessionInfo.setIp(userVo.getIp());
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ String finalSystemId = systemId;
+ classVOList.stream().forEach(classVO->{
+ logger.info("鍙傛暟锛氬垎绫籆Ode:" + classVO.getClassCode());
+ LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
+ //鑾峰彇鍒嗙被淇℃伅
+ try {
+ String libray = classVO.getLibrary();
+ CodeClassifyVO codeClassifyVO = getClassfy(classVO);
+ if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
+ objerrorCode="100";
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅");
+ }
+ logger.info("end锛氬垎绫绘煡璇㈠畬姣�");
+ //鑾峰彇鍒嗙被妯℃澘淇℃伅
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+ if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
+ objerrorCode="102";
+ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�");
+ }
+ logger.info("end锛氭ā鏉挎煡璇㈠畬姣�");
+ ApplyDatasVO applyDatasVO = classVO.getObjects();
+ DataObjectVO dataObjectVO = new DataObjectVO();
+ //灏嗛粯璁ょ殑灞炴�у叏閮ㄦ浛鎹㈡帀
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+ ).collect(Collectors.toList());
+ this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
+ logger.info("end锛氭暟鎹瀯寤哄畬姣�");
+ logger.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�");
+ mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs);
+ logger.info("end锛氫慨鏀规暟鎹墽琛屽畬姣�");
+ } catch (Throwable e) {
+ XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+ xmlResultDataObjectDetailDO.setCode("");
+ xmlResultDataObjectDetailDO.setId("");
+ xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
+ xmlResultDataObjectDetailDO.setMsg("缂栫爜鏇存敼/鐘舵�佹洿鏀�/鍒犻櫎:"+e.getMessage());
+ resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+ e.printStackTrace();
+ }finally {
+ XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
+ resultClassfyVO.setClassCode(classVO.getClassCode());
+ resultClassfyVO.setLibrary(classVO.getLibrary());
+ resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath());
+ resultClassfyVO.setObjects(resultDataObjectDetailDOs);
+ resultClassfyVOList.add(resultClassfyVO);
+ }
+
+ });
+ }catch (Throwable e){
+ e.printStackTrace();;
+ msg="缂栫爜鏇存敼/鐘舵�佹洿鏀�/鍒犻櫎:"+e.getMessage();
+ /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
+ XMLResultSystemVO.setErrorid(errorid);
+ XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage());
+ XMLResultSystemVO.setClassifys(resultClassfyVOList);
+ resultStr=transferResultXMl(XMLResultSystemVO,dataType);
+
+ logger.error("鐢宠缂栫爜澶辫触锛�->"+e);
+ return resultStr;*/
+ }finally {
+ XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
+ xmlResultSystemVO.setClassifys(resultClassfyVOList);
+ xmlResultSystemVO.setMsg(msg);
+ xmlResultSystemVO.setErrorid(errorid);
+ resultStr= transferResultXMl(xmlResultSystemVO,dataType);
+ final boolean[] issucess = {true};
+ if(!errorid.equals("0")) {
+ issucess[0] = false;
+ }else {
+ if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
+ resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
+ xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
+ if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
+ issucess[0] = false;
+ msg=objec.getMsg();
+ }
+ });
+ });
+ }
+
+ }
+ try {
+ //璁板綍鏃ュ織
+ this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "syncEditData");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }
+ }
+ logger.info("杩斿洖鍙傛暟:"+resultStr);
+ //瀛樺偍鏃ュ織
+ return resultStr;
+ }
+
+ /****
+ * 鏌ヨ鍒嗙被
+ * @param data
+ * @param dataType
+ * @return
+ * @throws Throwable
+ */
+ @Override
+ public String queryClassify(String data, String dataType) throws Throwable{
+ boolean issucess=false;
+ String resultStr = "";
+ String errorid="0";
+ msg="鎴愬姛";
+ String systemId="";
+ logger.info("鏌ヨ鍒嗙被鐨勬暟鎹弬鏁�:->"+data);
+ logger.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
+ ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
+ List<ClassifyVO> classifyVOList=new ArrayList<>();
+ ResultData resultData=new ResultData();
+ try {
+ if (StringUtils.isBlank(data)) {
+ errorid = "101";
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
+ }
+ QueryClassifyVO queryClassifyVO = new QueryClassifyVO();
+ //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
+ try {
+ if ("xml".equals(dataType)) {
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(QueryData.class);
+ xStream.autodetectAnnotations(true);
+ QueryData queryData = (QueryData) xStream.fromXML(data);
+ queryClassifyVO.setData(queryData);
+ } else {
+ queryClassifyVO = JSONObject.toJavaObject(JSONObject.parseObject(data), QueryClassifyVO.class);
+ }
+ } catch (Throwable e) {
+ errorid = "101";
+ msg="鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�";
+ e.printStackTrace();
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
+ }
+ QueryData queryData=queryClassifyVO.getData();
+ UserVO userVo=queryData.getUserVo();
+ systemId=queryData.getSystemId();
+ QueryLibraryVO libraryVO= queryData.getLibrary();
+ String libId= libraryVO.getId();
+ List<String> classifyIdList= libraryVO.getClassifyid();
+ List<CodeClassifyDO> codeClassifyDOS =new ArrayList<>();
+ //杩欐槸璐﹀彿淇℃伅
+ //杩欐槸璐﹀彿淇℃伅
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId(userVo.getUserName());
+ sessionInfo.setUserName(userVo.getTrueName());
+ sessionInfo.setIp(userVo.getIp());
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+ if(!CollectionUtils.isEmpty(classifyIdList)){
+ //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
+ queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(classifyIdList.toArray(new String[0])));
+ codeClassifyDOS=classifyService.selectByWrapper(queryWrapper);
+ }else {
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
+ queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(libId));
+ List<CodeClassifyDO> libIdDos =classifyService.selectByWrapper(queryWrapper);
+ String oid= libIdDos.get(0).getOid();
+
+ TreeQueryObject treeQueryObject=new TreeQueryObject();
+ treeQueryObject.setParentOid(oid);
+ treeQueryObject.setQueryAllLevel(true);
+ codeClassifyDOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
+ }
+ LibraryVO libraryVo=new LibraryVO();
+ libraryVo.setId(libId);
+ libraryVo.setName("");
+ if(!CollectionUtils.isEmpty(codeClassifyDOS)){
+ errorid = "0";
+ msg="鎴愬姛!";
+ codeClassifyDOS.stream().forEach(codeClassifyDO -> {
+ ClassifyVO classifyVO=new ClassifyVO();
+ classifyVO.setId(codeClassifyDO.getOid());
+ classifyVO.setLcStatus(codeClassifyDO.getLcStatus());
+ classifyVO.setClassCode(codeClassifyDO.getId());
+ classifyVO.setDescription(codeClassifyDO.getDescription());
+ classifyVO.setName(codeClassifyDO.getName());
+ classifyVO.setPid(codeClassifyDO.getParentCodeClassifyOid());
+ classifyVO.setFullPathName(codeClassifyDO.getPath());
+ classifyVOList.add(classifyVO);
+ });
+ libraryVo.setClassify(classifyVOList);
+ }else{
+ errorid = "100";
+ msg="鏈煡璇㈠埌鐩稿叧鐨勫垎绫讳俊鎭�";
+ }
+ issucess=true;
+ resultData.setLibrary(libraryVo);
+ }catch (Throwable e){
+ e.printStackTrace();;
+ msg="鏌ヨ鍒嗙被澶辫触:"+e.getMessage();
+ }finally {
+ resultData.setErrorid(errorid);
+ resultData.setMsg(msg);
+ resultClassifyVO.setResultData(resultData);
+ }
+ if(dataType.equals("xml")){
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(XMLResultSystemVO.class);
+ xStream.autodetectAnnotations(true);
+ resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultData);
+
+ }else{
+ Object object = JSONObject.toJSON(resultClassifyVO);
+ resultStr = object.toString();
+ }
+ try {
+ //璁板綍鏃ュ織
+ this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }
+ logger.info("杩斿洖鍙傛暟:"+resultStr);
+ return resultStr;
+ }
+
+ /***
+ *
+ * @param data
+ * @param dataType
+ * @return
+ * @throws Throwable
+ */
+ @Override
+ public String queryData(String data, String dataType) throws Throwable {
+ boolean issucess=false;
+ String resultStr = "";
+ String errorid="0";
+ msg="鎴愬姛";
+ String systemId="";
+ logger.info("鏌ヨ鍒嗙被鐨勬暟鎹弬鏁�:->"+data);
+ logger.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
+ DataCondtionsVO dataCondtionsVO=new DataCondtionsVO();
+ ResultDataVO resultDataVO=new ResultDataVO();
+ try {
+ try {
+ if ("xml".equals(dataType)) {
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(CondtionsVO.class);
+ xStream.autodetectAnnotations(true);
+ CondtionsVO condtionsVO = (CondtionsVO) xStream.fromXML(data);
+ dataCondtionsVO.setCondtions(condtionsVO);
+ } else {
+ dataCondtionsVO = JSONObject.toJavaObject(JSONObject.parseObject(data), DataCondtionsVO.class);
+ }
+ } catch (Throwable e) {
+ errorid = "101";
+ msg = "鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�";
+ e.printStackTrace();
+ throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
+ }
+ CondtionsVO condtionsVO=dataCondtionsVO.getCondtions();
+ systemId=condtionsVO.getSystemId();
+ UserVO userVo=condtionsVO.getUser();
+ CondtionVO condtionVO= condtionsVO.getCondtion();
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId(userVo.getUserName());
+ sessionInfo.setUserName(userVo.getTrueName());
+ sessionInfo.setIp(userVo.getIp());
+ VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+
+ String classCode=condtionVO.getClassCode();
+ String library= condtionVO.getLibrary();
+ String queryFileds= condtionVO.getQueryFileds();
+
+ List<CodeClassifyDO> codeClassifyDOS =new ArrayList<>();
+ //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyDO.class);
+ queryWrapper.addQueryMap("id", QueryOptionConstant.IN + VciBaseUtil.toInSql(classCode));
+ List<CodeClassifyDO> libIdDos =classifyService.selectByWrapper(queryWrapper);
+ if(!CollectionUtils.isEmpty(libIdDos)){
+ CodeClassifyDO currentCodeClassifyDO=libIdDos.get(0);
+ String oid=currentCodeClassifyDO.getOid();
+ TreeQueryObject treeQueryObject=new TreeQueryObject();
+ treeQueryObject.setParentOid(oid);
+ treeQueryObject.setQueryAllLevel(true);
+ codeClassifyDOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
+ codeClassifyDOS.add(currentCodeClassifyDO);
+ Map<String, CodeClassifyDO> oidCodeclassifyDOMap = codeClassifyDOS.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+
+ List<PropertyVO> propertyVOS=condtionVO.getPro();
+ Map<String,String> condtionMap=new HashMap<>();
+ propertyVOS.stream().forEach(propertyVO -> {
+ condtionMap.put(propertyVO.getFiledName(),propertyVO.getFiledValue());
+ });
+ condtionMap.put("codeclsfid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) + ")");
+ List<ClientBusinessObject> clientBusinessObjects= boService.queryCBO( currentCodeClassifyDO.getBtmTypeId(),condtionMap);
+ List<com.vci.ubcs.code.vo.universalInter.data.DataObjectVO> dataObjectVOS=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(clientBusinessObjects)){
+ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassifyDO.getOid());
+ Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+
+ clientBusinessObjects.stream().forEach(cbo -> {
+ com.vci.ubcs.code.vo.universalInter.data.DataObjectVO dataObjectVO=new com.vci.ubcs.code.vo.universalInter.data.DataObjectVO();
+ dataObjectVO.setCode(cbo.getId());
+ dataObjectVO.setStatus(cbo.getLcStatus());
+ String codeclsfid=cbo.getAttributeValue("codeclsfid");
+ if(oidCodeclassifyDOMap.containsKey(codeclsfid)){
+ CodeClassifyDO classifyDO= oidCodeclassifyDOMap.get(codeclsfid);
+ dataObjectVO.setClassCode(classifyDO.getId());
+ }
+ dataObjectVO.setLibrary(library);
+ String [] newQueryFileds=queryFileds.split(",");
+ List<PropertyVO> propertyVOList=new ArrayList<>();
+ for(String filed:newQueryFileds){
+ String value=cbo.getAttributeValue(filed);
+ if(filedAttributeMap.containsKey(filed)){
+ CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed);
+ PropertyVO propertyVO=new PropertyVO();
+ propertyVO.setFiledName(filed);
+ propertyVO.setFiledValue(value);
+ propertyVO.setOutname(attrVO.getName());
+ propertyVOList.add(propertyVO);
+ }
+ }
+ dataObjectVO.setPro(propertyVOList);
+ dataObjectVOS.add(dataObjectVO);
+ });
+ resultDataVO.setObject(dataObjectVOS);
+ }
+ }
+ errorid = "0";
+ msg = "鏁版嵁鏌ヨ鎴愬姛";
+ }catch (Throwable e){
+ e.printStackTrace();;
+ msg="鏌ヨ鏁版嵁澶辫触:"+e.getMessage();
+ }finally {
+ resultDataVO.setErrorid(errorid);
+ resultDataVO.setMsg(msg);
+ }
+ ResultVO resultVO=new ResultVO();
+ resultVO.setData(resultDataVO);
+ if(dataType.equals("xml")){
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(XMLResultSystemVO.class);
+ xStream.autodetectAnnotations(true);
+ resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultDataVO);
+ }else{
+ Object object = JSONObject.toJSON(resultVO);
+ resultStr = object.toString();
+ }
+ try { //璁板綍鏃ュ織
+ this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }
+ logger.info("杩斿洖鍙傛暟:"+resultStr);
+ return resultStr;
+ }
+
+ /***
+ * 鏌ヨ鏍¢獙鍒嗙被淇℃伅
+ * @param classfyVO
+ */
+ private CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{
+ CodeClassifyVO classifyVO = new CodeClassifyVO();
+ try {
+ String classCode = classfyVO.getClassCode();
+ String className = classfyVO.getFullclsfNamePath();
+ //鏍规嵁鍒嗙被浠e彿鏌ヨ鍒嗙被淇℃伅
+ if (StringUtils.isNotBlank(classfyVO.getClassCode())) {
+ Map<String, String> conditionMap = new HashMap<>();
+ conditionMap.put("id", classCode);
+ VciQueryWrapperForDO wrapper = new VciQueryWrapperForDO(conditionMap, CodeClassifyDO.class);
+ List<CodeClassifyDO> codeClassifyDOS = classifyService.selectByWrapper(wrapper);
+ if (!CollectionUtils.isEmpty(codeClassifyDOS)) {
+ CodeClassifyDO classifyDO = codeClassifyDOS.get(0);
+ //灏咲TO杞崲涓篋O
+ classifyVO = new CodeClassifyVO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO);
+ if(StringUtils.isBlank(classifyVO.getOid())){
+ throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
+ }
+ }else{
+ throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
+ }
+ } else {
+ classifyVO = classifyService.getObjectByClsfNamePath(className.replace(separator, "/"));
+ if(StringUtils.isBlank(classifyVO.getOid())){
+ throw new Throwable("鏍规嵁鍒嗙被鍚嶇О璺緞鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�");
+ }
+ }
+ }catch (Throwable e){
+ objerrorCode="100";
+ new Throwable("鑾峰彇鍒嗙被淇℃伅澶辫触:"+e.getMessage());
+ }
+ return classifyVO;
+ }
+
+ /***
+ * 鏍规嵁绌垮叆鐨勫弬鏁颁俊鎭牎楠岀爜娈佃鍒�
+ */
+ private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList, CodeRuleVO ruleVO) throws Throwable{
+ List<CodeBasicSecVO> codeBasicSecVOS= ruleVO.getSecVOList();
+ Map<String,String> sectionVOMap=new HashMap<>();
+ SectionVOList.stream().forEach(SectionVO->{
+ sectionVOMap.put(SectionVO.getName(),SectionVO.getValue());
+ });
+ List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
+ for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
+ String sectype = codeBasicSecVO.getSectype();
+ if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
+ String name = codeBasicSecVO.getName();
+ String sectypeText = codeBasicSecVO.getSectypeText();
+ logger.info("鐮佹鍚嶇О:"+name);
+ logger.info("鎻忚堪:"+sectypeText);
+ CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
+ if (sectionVOMap.containsKey(name)) {
+ CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
+ String sectypeValue = sectionVOMap.get(name);
+ logger.info("鐮佹鍊�:"+sectypeValue);
+ CodeOrderSecDTO.setSecValue(sectypeValue);
+ codeOrderSecDTOList.add(CodeOrderSecDTO);
+ } else {
+ objerrorCode="101";
+ throw new Throwable("浼犲叆鐨勭爜娈佃鍒欑己灏�" + name + "鐮佹");
+ }
+ }
+ }
+ return codeOrderSecDTOList;
+ }
+
+ /***
+ * 鏍规嵁灞炴�ф槧灏勮浆鎹㈢紪鐮佹墍闇�瀛楁
+ */
+ public void getConfigDatas(String systemId, String libray, ApplyDatasVO applyDatasVO, List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList, DataObjectVO dataObjectVO) throws Throwable {
+ List<ApplyDataVO> applyDataVOList=applyDatasVO.getObject();
+ LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
+ //濡傛灉灏嗘暟鎹浆鎹㈡垚鎵�闇�瑕佺殑鏁版嵁瀵硅薄
+ Map<String, String> attrMapConfigMap=new HashMap<>();
+ Map<String, String> propMaps=new HashMap<>();
+ try {
+ Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
+ //stringStringMap.put("RLM","D:\\RLM.xml");
+ LibraryDO libraryDO= gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId,stringStringMap);
+ List<LibraryClsfDO> libraryClsfDOList=libraryDO.getClsf();
+ Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
+ if(libPropMaps.containsKey(libray)){
+ List<ClsfAttrMappingDO> clsfAttrMappingDOList=libPropMaps.get(libray);
+ propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
+ }
+ }catch (Throwable e){
+ objerrorCode="1";
+ throw new Throwable("MDM闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
+ }
+ LinkedList<String> rowNameList=new LinkedList<>();
+ LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
+ //鏍规嵁鍒嗙被妯℃澘缁勭粐鏁版嵁
+ final int[] index = {0};
+ try {
+ codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
+ String attrName = codeClassifyTemplateAttrVO.getName();
+ String field = codeClassifyTemplateAttrVO.getId();
+ rowNameList.add(attrName);
+ filedIndexMap.put(field, index[0]++);
+ });
+ dataObjectVO.setColName(rowNameList);//鏀惧叆灞炴��
+ attrMapConfigMap.putAll(propMaps);
+ LinkedList<RowDatas> rowDataList = new LinkedList<>();
+ //Map<String, List<ProppertyVO>> dataPropMap = applyDataVOList.stream().collect(Collectors.toMap(ApplyDataVO::getId, ApplyDataVO::getProp, (key1, key2) -> key2));
+ final int[] rowIndex = {0};
+ applyDataVOList.stream().forEach(applyDataVO -> {
+ rowIndex[0]++;
+ RowDatas rowDatas = new RowDatas();
+ rowDatas.setOid(applyDataVO.getId());
+ rowDatas.setCreator(applyDataVO.getCreator());
+ rowDatas.setEditor(applyDataVO.getEditor());
+ rowDatas.setCode(applyDataVO.getCode());
+ rowDatas.setOperation(applyDataVO.getOperate());
+ rowDatas.setStatus(applyDataVO.getStatus());
+ rowDatas.setRowIndex(rowIndex[0] + "");
+ List<ProppertyVO> proppertyVOList = applyDataVO.getProp();
+
+ LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>();
+ Map<String, String> filedValueMap = new HashMap<>();
+ if (!CollectionUtils.isEmpty(proppertyVOList)) {
+ Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2));
+ Map<String, String> keyValueMap = new HashMap<>();
+ //鍒ゆ柇attrMapConfigMap鏄惁鏈夊�硷紝濡傛灉娌℃湁鍒欒鏄庡熀纭�榛樿鐨勬槸缂栫爜绯荤粺瀛楁
+ if (!CollectionUtils.isEmpty(attrMapConfigMap)) {
+ sourceKeyValueMap.keySet().forEach(sourceKey -> {
+ String dataValue = sourceKeyValueMap.get(sourceKey);
+ if (attrMapConfigMap.containsKey(sourceKey)) {
+ String targetKey = attrMapConfigMap.get(sourceKey);
+ keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
+ }
+ });
+ } else {
+ sourceKeyValueMap.forEach((filed,value)->{
+ keyValueMap.put(filed,StringUtils.isBlank(value)?"":value) ;
+ });
+ }
+
+ filedIndexMap.forEach((attrKey, column) -> {
+ String keyValue = "";
+ if (keyValueMap.containsKey(attrKey)) {
+ keyValue =StringUtils.isBlank(keyValueMap.get(attrKey))?"":keyValueMap.get(attrKey);
+ }
+ integerValueMap.put(column, keyValue);
+ filedValueMap.put(attrKey, keyValue);
+ });
+ }
+ rowDatas.setData(integerValueMap);
+ rowDatas.setFiledValue(filedValueMap);
+ rowDataList.add(rowDatas);
+ });
+ dataObjectVO.setRowData(rowDataList);
+ }catch (Throwable e){
+ objerrorCode="1";
+ throw new Throwable("缁勭粐鏁版嵁鏄犲皠鍊煎け璐�");
+ }
+ }
+ /***
+ * 鏁版嵁缁存姢涓庣紪鐮佺敵璇疯繑鍥�
+ * @param resultSystemVO
+ * @param dataType
+ * @return
+ */
+ private String transferResultXMl(XMLResultSystemVO resultSystemVO,String dataType){
+ String resultStr="";
+ if ("xml".equals(dataType)) {
+ //缁勭粐杩斿洖鎺ュ彛淇℃伅
+ XStream xStream = new XStream(new DomDriver());
+ xStream.processAnnotations(XMLResultSystemVO.class);
+ xStream.autodetectAnnotations(true);
+ resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultSystemVO);
+ } else {
+ List<XMLResultClassfyVO> resultClassfyVOList =resultSystemVO.getClassifys();
+ JSONResultDataVO resultDataVO = new JSONResultDataVO();
+ JSONResultSystemVO jsonResultSystemVO = new JSONResultSystemVO();
+ JSONResultClassfysVO jsonResultClassfysVO = new JSONResultClassfysVO();
+ List<JSONResultClassfyVO> jSONResultClassfyVOList = new ArrayList<>();
+ resultClassfyVOList.stream().forEach(resultClassfyVO -> {
+ List<XMLResultDataObjectDetailDO> xmlResultDataObjectDetailDOS = resultClassfyVO.getObjects();
+ List<JSONResultDataObjectDetailDO> JSONResultDataObjectDetailDOList = new ArrayList<>();
+ xmlResultDataObjectDetailDOS.stream().forEach(xmlResultDataObjectDetail -> {
+ JSONResultDataObjectDetailDO jsonResultDataObjectDetail = new JSONResultDataObjectDetailDO();
+ BeanUtilForVCI.copyPropertiesIgnoreCase(xmlResultDataObjectDetail, jsonResultDataObjectDetail);
+ JSONResultDataObjectDetailDOList.add(jsonResultDataObjectDetail);
+ });
+ JSONResultClassfyVO jsonResultClassfyVO = new JSONResultClassfyVO();
+ jsonResultClassfyVO.setClassCode(resultClassfyVO.getClassCode());
+ jsonResultClassfyVO.setLibrary(resultClassfyVO.getLibrary());
+ jsonResultClassfyVO.setFullclsfNamePath(resultClassfyVO.getFullclsfNamePath());
+ JSONResultDataObjectDO JSONResultDataObjectDO = new JSONResultDataObjectDO();
+ JSONResultDataObjectDO.setObject(JSONResultDataObjectDetailDOList);
+ jsonResultClassfyVO.setObjects(JSONResultDataObjectDO);
+ jSONResultClassfyVOList.add(jsonResultClassfyVO);
+ });
+ jsonResultClassfysVO.setClassify(jSONResultClassfyVOList);
+ jsonResultSystemVO.setClassifys(jsonResultClassfysVO);
+ jsonResultSystemVO.setErrorid(resultSystemVO.getErrorid());
+ jsonResultSystemVO.setMsg(resultSystemVO.getMsg());
+ resultDataVO.setData(jsonResultSystemVO);
+ Object object = JSONObject.toJSON(resultDataVO);
+ resultStr = object.toString();
+
+ }
+ return resultStr;
+ }
+
+ /***
+ * 璁板綍鏃ュ織淇℃伅
+ * @param systemId
+ * @param parmaData
+ * @param result
+ * @return
+ */
+ private void saveLogs(String systemId,String systemName,String parmaData, String result,boolean isSucess,String msg,String operation){
+ //璁板綍鏃ュ織淇℃伅
+ DockingLogeDO dockingLogeDO=new DockingLogeDO();
+ String oid=redisService.getUUIDEveryDay();
+ dockingLogeDO.setSystemcode(StringUtils.isBlank(systemId)?"-":systemId);//璁剧疆绯荤粺鏍囪瘑
+ dockingLogeDO.setSystemname(StringUtils.isBlank(systemName)?"-":systemName);
+ dockingLogeDO.setMsg(msg);//鏃ュ織娑堟伅
+ dockingLogeDO.setClassifyid("-");//鍒嗙被缂栧彿
+ dockingLogeDO.setClassifyname("-");//鍒嗙被鍚嶇О
+ dockingLogeDO.setClassifyoid("-");//鍒嗙被涓婚敭
+ dockingLogeDO.setUniquecode("-");//鍞竴鏍囪瘑
+ dockingLogeDO.setSystemoid("-");//绯荤粺鏍囪瘑
+// dockingLogeDO.setName(operation);
+ dockingLogeDO.setOid(oid);//鏃ュ織涓婚敭
+ dockingLogeDO.setParamstring(parmaData);//鍙傛暟淇℃伅
+ dockingLogeDO.setReturnstring(result);//杩斿洖淇℃伅
+ dockingLogeDO.setType(operation);//鏃ュ織鎿嶄綔绫诲瀷
+ if(isSucess) {
+ dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_TRUE);//鎺ュ彛闆嗘垚鐘舵��
+ }else{
+ dockingLogeDO.setInterfacestatus(MdmDuckingConstant.INTERFACE_STATUS_FALSE);//鎺ュ彛闆嗘垚鐘舵��
+ }
+ BatchCBO insert = dockingLogeDao.insert(dockingLogeDO);
+ logger.info("闆嗘垚鎺ㄩ�佹暟鎹垚鍔�,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
+ }
+}
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/tt.xml
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/tt.xml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/tt.xml
diff --git a/Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/update.json
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/java/org/springblade/code/service/impl/update.json
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/update.json
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/AttributeMapConfig.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/AttributeMapConfig.java
new file mode 100644
index 0000000..5b8aba6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/AttributeMapConfig.java
@@ -0,0 +1,33 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/BackXml.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/BackXml.java
new file mode 100644
index 0000000..ce21b1c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/BackXml.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/DateUtils.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/DateUtils.java
new file mode 100644
index 0000000..a8f295a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/DateUtils.java
@@ -0,0 +1,527 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/EnumVO.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/EnumVO.java
new file mode 100644
index 0000000..012f475
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/EnumVO.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/HttpUtils.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/HttpUtils.java
new file mode 100644
index 0000000..dd06779
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/HttpUtils.java
@@ -0,0 +1,194 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Json2XmlUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Json2XmlUtil.java
new file mode 100644
index 0000000..6cb301e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Json2XmlUtil.java
@@ -0,0 +1,121 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/PatternUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/PatternUtil.java
new file mode 100644
index 0000000..ddf0feb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/PatternUtil.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Pro.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Pro.java
new file mode 100644
index 0000000..a58534f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/Pro.java
@@ -0,0 +1,40 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsAxis2ClientUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsAxis2ClientUtil.java
new file mode 100644
index 0000000..96f9881
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsAxis2ClientUtil.java
@@ -0,0 +1,59 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsErpClientUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsErpClientUtil.java
new file mode 100644
index 0000000..152bd8d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/WsErpClientUtil.java
@@ -0,0 +1,59 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlData.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlData.java
new file mode 100644
index 0000000..00e315b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlData.java
@@ -0,0 +1,143 @@
+package com.vci.ubcs.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlUtil.java
new file mode 100644
index 0000000..e8980df
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/XmlUtil.java
@@ -0,0 +1,770 @@
+package com.vci.ubcs.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.ubcs.code.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/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/gennerAttrMapUtil.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/gennerAttrMapUtil.java
new file mode 100644
index 0000000..8dd82f6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/utils/gennerAttrMapUtil.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.code.utils;
+
+import com.vci.ubcs.code.vo.universalInter.attrmap.LibraryDO;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+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/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application-test.yml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-test.yml
diff --git a/Source/BladeX/blade-service/blade-code/src/main/resources/application.yml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-code/src/main/resources/application.yml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application.yml
diff --git a/Source/BladeX/blade-service/blade-desk/Dockerfile b/Source/UBCS/ubcs-service/ubcs-desk/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-service/blade-desk/Dockerfile
rename to Source/UBCS/ubcs-service/ubcs-desk/Dockerfile
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/pom.xml b/Source/UBCS/ubcs-service/ubcs-desk/pom.xml
new file mode 100644
index 0000000..6342eb2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<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>ubcs-service</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-desk</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-desk-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-user-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-flow-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <!--Oss-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-oss</artifactId>
+ </dependency>
+ <!--MinIO-->
+ <dependency>
+ <groupId>io.minio</groupId>
+ <artifactId>minio</artifactId>
+ </dependency>
+ <!--QiNiu-->
+ <dependency>
+ <groupId>com.qiniu</groupId>
+ <artifactId>qiniu-java-sdk</artifactId>
+ </dependency>
+ <!--<dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-transaction</artifactId>
+ </dependency>-->
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/DeskApplication.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/DeskApplication.java
new file mode 100644
index 0000000..249cab0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/DeskApplication.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 com.vci.ubcs.desk;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * Desk鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class DeskApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_DESK_NAME, DeskApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/DashBoardController.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/DashBoardController.java
new file mode 100644
index 0000000..6c99ce5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/DashBoardController.java
@@ -0,0 +1,207 @@
+package com.vci.ubcs.desk.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 棣栭〉
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@Api(value = "棣栭〉", tags = "棣栭〉")
+public class DashBoardController {
+
+ /**
+ * 娲昏穬鐢ㄦ埛
+ */
+ @GetMapping("/dashboard/activities")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "娲昏穬鐢ㄦ埛", notes = "娲昏穬鐢ㄦ埛")
+ public R activities() {
+ List<Map<String, Object>> list = new ArrayList<>();
+
+ Map<String, Object> map1 = new HashMap<>(16);
+ map1.put("id", "trend-1");
+ map1.put("updatedAt", "2019-01-01");
+ map1.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
+ map1.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
+ map1.put("project", Kv.create().set("name", "鍏湀杩唬").set("link", "http://github.com/"));
+ map1.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
+ list.add(map1);
+
+ Map<String, Object> map2 = new HashMap<>(16);
+ map2.put("id", "trend-2");
+ map2.put("updatedAt", "2019-01-01");
+ map2.put("user", Kv.create().set("name", "浠樺皬灏�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
+ map2.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
+ map2.put("project", Kv.create().set("name", "涓冩湀鏈堣凯浠�").set("link", "http://github.com/"));
+ map2.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
+ list.add(map2);
+
+ return R.data(list);
+ }
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ */
+ @GetMapping("/dashboard/info")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鐢ㄦ埛淇℃伅", notes = "鐢ㄦ埛淇℃伅")
+ public R info() {
+ Map<String, Object> map = new HashMap<>(16);
+ map.put("id", "trend-1");
+ map.put("updatedAt", "2019-01-01");
+ map.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
+ map.put("group", Kv.create().set("name", "楂橀�兼牸璁捐澶╁洟").set("link", "http://github.com/"));
+ map.put("project", Kv.create().set("name", "鍏湀杩唬").set("link", "http://github.com/"));
+ map.put("template", "鍦� @{group} 鏂板缓椤圭洰 @{project}");
+ return R.data(map);
+ }
+
+ /**
+ * 绛惧悕淇℃伅
+ */
+ @PostMapping("/dashboard/sign")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "绛惧悕淇℃伅", notes = "绛惧悕淇℃伅")
+ public R sign() {
+ Map<String, Object> map = new HashMap<>(16);
+ map.put("user", Kv.create().set("name", "鏇蹭附涓�").set("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png"));
+ return R.data(map);
+ }
+
+ /**
+ * 鑾峰彇娑堟伅
+ */
+ @GetMapping("/notice/notices")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "娑堟伅", notes = "娑堟伅")
+ public R notices() {
+ List<Map<String, String>> list = new ArrayList<>();
+ Map<String, String> map1 = new HashMap<>(16);
+ map1.put("logo", "https://spring.io/img/homepage/icon-spring-framework.svg");
+ map1.put("title", "SpringBoot");
+ map1.put("description", "鐜板湪鐨剋eb椤圭洰鍑犱箮閮戒細鐢ㄥ埌spring妗嗘灦锛岃�岃浣跨敤spring闅惧厤闇�瑕侀厤缃ぇ閲忕殑xml閰嶇疆鏂囦欢锛岃�� springboot鐨勫嚭鐜拌В 鍐充簡杩欎竴闂锛屼竴涓」鐩敋鑷充笉鐢ㄩ儴缃插埌鏈嶅姟鍣ㄤ笂鐩存帴寮�璺戯紝鐪熷儚springboot鎵�璇达細鈥渏ust run鈥濄��");
+ map1.put("member", "Chill");
+ map1.put("href", "http://spring.io/projects/spring-boot");
+ list.add(map1);
+
+ Map<String, String> map2 = new HashMap<>(16);
+ map2.put("logo", "https://spring.io/img/homepage/icon-spring-cloud.svg");
+ map2.put("title", "SpringCloud");
+ map2.put("description", "SpringCloud鏄熀浜嶴pringBoot鐨勪竴鏁村瀹炵幇寰湇鍔$殑妗嗘灦銆備粬鎻愪緵浜嗗井鏈嶅姟寮�鍙戞墍闇�鐨勯厤缃鐞嗐�佹湇鍔″彂鐜般�佹柇璺櫒銆佹櫤鑳借矾鐢便�佸井浠g悊銆佹帶鍒舵�荤嚎銆佸叏灞�閿併�佸喅绛栫珵閫夈�佸垎甯冨紡浼氳瘽鍜岄泦缇ょ姸鎬佺鐞嗙瓑缁勪欢銆�");
+ map2.put("member", "Chill");
+ map2.put("href", "http://spring.io/projects/spring-cloud");
+ list.add(map2);
+
+ Map<String, String> map3 = new HashMap<>(16);
+ map3.put("logo", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1546359961068&di=05ff9406e6675ca9a58a525a7e7950b9&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D575314515%2C4268715674%26fm%3D214%26gp%3D0.jpg");
+ map3.put("title", "Mybatis");
+ map3.put("description", "MyBatis 鏄竴娆句紭绉�鐨勬寔涔呭眰妗嗘灦锛屽畠鏀寔瀹氬埗鍖� SQL銆佸瓨鍌ㄨ繃绋嬩互鍙婇珮绾ф槧灏勩�侻yBatis 閬垮厤浜嗗嚑涔庢墍鏈夌殑 JDBC 浠g爜鍜屾墜鍔ㄨ缃弬鏁颁互鍙婅幏鍙栫粨鏋滈泦銆侻yBatis 鍙互浣跨敤绠�鍗曠殑 XML 鎴栨敞瑙f潵閰嶇疆鍜屾槧灏勫師鐢熶俊鎭紝灏嗘帴鍙e拰 Java 鐨� POJOs(Plain Old Java Objects,鏅�氱殑 Java瀵硅薄)鏄犲皠鎴愭暟鎹簱涓殑璁板綍銆�");
+ map3.put("member", "Chill");
+ map3.put("href", "http://www.mybatis.org/mybatis-3/getting-started.html");
+ list.add(map3);
+
+ Map<String, String> map4 = new HashMap<>(16);
+ map4.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png");
+ map4.put("title", "React");
+ map4.put("description", "React 璧锋簮浜� Facebook 鐨勫唴閮ㄩ」鐩紝鍥犱负璇ュ叕鍙稿甯傚満涓婃墍鏈� JavaScript MVC 妗嗘灦锛岄兘涓嶆弧鎰忥紝灏卞喅瀹氳嚜宸卞啓涓�濂楋紝鐢ㄦ潵鏋惰Instagram 鐨勭綉绔欍�傚仛鍑烘潵浠ュ悗锛屽彂鐜拌繖濂椾笢瑗垮緢濂界敤锛屽氨鍦�2013骞�5鏈堝紑婧愪簡銆�");
+ map4.put("member", "Chill");
+ map4.put("href", "https://reactjs.org/");
+ list.add(map4);
+
+ Map<String, String> map5 = new HashMap<>(16);
+ map5.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png");
+ map5.put("title", "Ant Design");
+ map5.put("description", "铓傝殎閲戞湇浣撻獙鎶�鏈儴缁忚繃澶ч噺鐨勯」鐩疄璺靛拰鎬荤粨锛屾矇娣�鍑鸿璁¤瑷� Ant Design锛岃繖鍙笉鍗曠函鍙槸璁捐鍘熷垯銆佹帶浠惰鑼冨拰瑙嗚灏哄锛岃繕閰嶅鏈夊墠绔唬鐮佸疄鐜版柟妗堛�備篃灏辨槸璇撮噰鐢ˋnt Design鍚庯紝UI璁捐鍜屽墠绔晫闈㈢爺鍙戝彲鍚屾瀹屾垚锛屾晥鐜囧ぇ澶ф彁鍗囥��");
+ map5.put("member", "Chill");
+ map5.put("href", "https://ant.design/docs/spec/introduce-cn");
+ list.add(map5);
+
+ Map<String, String> map6 = new HashMap<>(16);
+ map6.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png");
+ map6.put("title", "Ant Design Pro");
+ map6.put("description", "Ant Design Pro 鏄竴涓紒涓氱骇寮�绠卞嵆鐢ㄧ殑涓悗鍙板墠绔�/璁捐瑙e喅鏂规銆傜鍚堥樋閲岃拷姹傜殑'鏁忔嵎鐨勫墠绔�+寮哄ぇ鐨勪腑鍙�'鐨勬�濇兂銆�");
+ map6.put("member", "Chill");
+ map6.put("href", "https://pro.ant.design");
+ list.add(map6);
+
+ return R.data(list);
+ }
+
+ /**
+ * 鑾峰彇鎴戠殑娑堟伅
+ */
+ @GetMapping("/notice/my-notices")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "娑堟伅", notes = "娑堟伅")
+ public R myNotices() {
+ List<Map<String, String>> list = new ArrayList<>();
+ Map<String, String> map1 = new HashMap<>(16);
+ map1.put("id", "000000001");
+ map1.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png");
+ map1.put("title", "浣犳敹鍒颁簡 14 浠芥柊鍛ㄦ姤");
+ map1.put("datetime", "2018-08-09");
+ map1.put("type", "notification");
+ list.add(map1);
+
+ Map<String, String> map2 = new HashMap<>(16);
+ map2.put("id", "000000002");
+ map2.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png");
+ map2.put("title", "浣犳帹鑽愮殑 鏇插Ξ濡� 宸查�氳繃绗笁杞潰璇�");
+ map2.put("datetime", "2018-08-08");
+ map2.put("type", "notification");
+ list.add(map2);
+
+
+ Map<String, String> map3 = new HashMap<>(16);
+ map3.put("id", "000000003");
+ map3.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
+ map3.put("title", "鏇蹭附涓� 璇勮浜嗕綘");
+ map3.put("description", "鎻忚堪淇℃伅鎻忚堪淇℃伅鎻忚堪淇℃伅");
+ map3.put("datetime", "2018-08-07");
+ map3.put("type", "message");
+ map3.put("clickClose", "true");
+ list.add(map3);
+
+
+ Map<String, String> map4 = new HashMap<>(16);
+ map4.put("id", "000000004");
+ map4.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
+ map4.put("title", "鏈卞亸鍙� 鍥炲浜嗕綘");
+ map4.put("description", "杩欑妯℃澘鐢ㄤ簬鎻愰啋璋佷笌浣犲彂鐢熶簡浜掑姩锛屽乏渚ф斁銆庤皝銆忕殑澶村儚");
+ map4.put("type", "message");
+ map4.put("datetime", "2018-08-07");
+ map4.put("clickClose", "true");
+ list.add(map4);
+
+
+ Map<String, String> map5 = new HashMap<>(16);
+ map5.put("id", "000000005");
+ map5.put("title", "浠诲姟鍚嶇О");
+ map5.put("description", "浠诲姟闇�瑕佸湪 2018-01-12 20:00 鍓嶅惎鍔�");
+ map5.put("extra", "鏈紑濮�");
+ map5.put("status", "todo");
+ map5.put("type", "event");
+ list.add(map5);
+
+ return R.data(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/LeaveController.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/LeaveController.java
new file mode 100644
index 0000000..6554dd5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/LeaveController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.controller;
+
+import com.vci.ubcs.desk.entity.ProcessLeave;
+import com.vci.ubcs.system.user.cache.UserCache;
+import lombok.AllArgsConstructor;
+import com.vci.ubcs.common.cache.CacheNames;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.desk.service.ILeaveService;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@RequestMapping("/process/leave")
+@AllArgsConstructor
+public class LeaveController extends BladeController implements CacheNames {
+
+ private final ILeaveService leaveService;
+
+ /**
+ * 璇︽儏
+ *
+ * @param businessId 涓婚敭
+ */
+ @GetMapping("detail")
+ public R<ProcessLeave> detail(Long businessId) {
+ ProcessLeave detail = leaveService.getById(businessId);
+ detail.getFlow().setAssigneeName(UserCache.getUser(detail.getCreateUser()).getName());
+ return R.data(detail);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ *
+ * @param leave 璇峰亣淇℃伅
+ */
+ @PostMapping("start-process")
+ public R startProcess(@RequestBody ProcessLeave leave) {
+ return R.status(leaveService.startProcess(leave));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/NoticeController.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/NoticeController.java
new file mode 100644
index 0000000..afb0f1c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/controller/NoticeController.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.TenantDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.feign.INoticeClient;
+import com.vci.ubcs.desk.service.INoticeService;
+import com.vci.ubcs.desk.vo.NoticeVO;
+import com.vci.ubcs.desk.wrapper.NoticeWrapper;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.Map;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@TenantDS
+@RestController
+@RequestMapping("notice")
+@AllArgsConstructor
+@Api(value = "鐢ㄦ埛鍗氬", tags = "鍗氬鎺ュ彛")
+public class NoticeController extends BladeController {
+
+ private final INoticeService noticeService;
+
+ private final INoticeClient noticeClient;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆notice")
+ public R<NoticeVO> detail(Notice notice) {
+ Notice detail = noticeService.getOne(Condition.getQueryWrapper(notice));
+ return R.data(NoticeWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "category", value = "鍏憡绫诲瀷", paramType = "query", dataType = "integer"),
+ @ApiImplicitParam(name = "title", value = "鍏憡鏍囬", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
+ public R<IPage<NoticeVO>> list(@ApiIgnore @RequestParam Map<String, Object> notice, Query query) {
+ NoticeWrapper.build().noticeQuery(notice);
+ IPage<Notice> pages = noticeService.page(Condition.getPage(query), Condition.getQueryWrapper(notice, Notice.class));
+ return R.data(NoticeWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 澶氳〃鑱斿悎鏌ヨ鑷畾涔夊垎椤�
+ */
+ @GetMapping("/page")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "category", value = "鍏憡绫诲瀷", paramType = "query", dataType = "integer"),
+ @ApiImplicitParam(name = "title", value = "鍏憡鏍囬", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆notice")
+ public R<IPage<NoticeVO>> page(@ApiIgnore NoticeVO notice, Query query) {
+ IPage<NoticeVO> pages = noticeService.selectNoticePage(Condition.getPage(query), notice);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆notice")
+ public R save(@RequestBody Notice notice) {
+ return R.status(noticeService.save(notice));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆notice")
+ public R update(@RequestBody Notice notice) {
+ return R.status(noticeService.updateById(notice));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆notice")
+ public R submit(@RequestBody Notice notice) {
+ return R.status(noticeService.saveOrUpdate(notice));
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆notice")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎") @RequestParam String ids) {
+ boolean temp = noticeService.deleteLogic(Func.toLongList(ids));
+ return R.status(temp);
+ }
+
+ /**
+ * 杩滅▼璋冪敤鍒嗛〉鎺ュ彛
+ */
+ @GetMapping("/top")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鍒嗛〉杩滅▼璋冪敤", notes = "浼犲叆current,size")
+ public R<BladePage<Notice>> top(@ApiParam(value = "褰撳墠椤�") @RequestParam Integer current, @ApiParam(value = "姣忛〉鏄剧ず鏉℃暟") @RequestParam Integer size) {
+ BladePage<Notice> page = noticeClient.top(current, size);
+ return R.data(page);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/entity/ProcessLeave.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/entity/ProcessLeave.java
new file mode 100644
index 0000000..7f29a3a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/entity/ProcessLeave.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.flow.core.entity.FlowEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 璇峰亣娴佺▼瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("pl_wf_process_leave")
+@EqualsAndHashCode(callSuper = true)
+public class ProcessLeave extends FlowEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 娴佺▼瀹氫箟id
+ */
+ private String processDefinitionId;
+ /**
+ * 娴佺▼瀹炰緥id
+ */
+ private String processInstanceId;
+ /**
+ * 璇峰亣寮�濮嬫椂闂�
+ */
+ private Date startTime;
+ /**
+ * 璇峰亣缁撴潫鏃堕棿
+ */
+ private Date endTime;
+ /**
+ * 璇峰亣鐞嗙敱
+ */
+ private String reason;
+ /**
+ * 瀹℃壒浜�
+ */
+ private String taskUser;
+ /**
+ * 娴佺▼鐢宠鏃堕棿
+ */
+ private Date applyTime;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/feign/NoticeClient.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/feign/NoticeClient.java
new file mode 100644
index 0000000..a2121ca
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/feign/NoticeClient.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.service.INoticeService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * Notice Feign
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class NoticeClient implements INoticeClient {
+
+ private final INoticeService service;
+
+ @Override
+ @GetMapping(TOP)
+ public BladePage<Notice> top(Integer current, Integer size) {
+ Query query = new Query();
+ query.setCurrent(current);
+ query.setSize(size);
+ IPage<Notice> page = service.page(Condition.getPage(query));
+ return BladePage.of(page);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/LeaveMapper.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/LeaveMapper.java
new file mode 100644
index 0000000..a6efd9c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/LeaveMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.desk.entity.ProcessLeave;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface LeaveMapper extends BaseMapper<ProcessLeave> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/NoticeMapper.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/NoticeMapper.java
new file mode 100644
index 0000000..ecb3a07
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/mapper/NoticeMapper.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.vo.NoticeVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface NoticeMapper extends BaseMapper<Notice> {
+
+ /**
+ * 鍓峃鏉℃暟鎹�
+ *
+ * @param number 鏁伴噺
+ * @return List<Notice>
+ */
+ List<Notice> topList(Integer number);
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page 鍒嗛〉
+ * @param notice 瀹炰綋
+ * @return List<NoticeVO>
+ */
+ List<NoticeVO> selectNoticePage(IPage page, NoticeVO notice);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/ILeaveService.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/ILeaveService.java
new file mode 100644
index 0000000..fb02bd0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/ILeaveService.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.service;
+
+import com.vci.ubcs.desk.entity.ProcessLeave;
+import org.springblade.core.mp.base.BaseService;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ILeaveService extends BaseService<ProcessLeave> {
+
+ /**
+ * 寮�鍚祦绋�
+ *
+ * @param leave 璇峰亣瀹炰綋
+ * @return boolean
+ */
+ boolean startProcess(ProcessLeave leave);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/INoticeService.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/INoticeService.java
new file mode 100644
index 0000000..5abc782
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/INoticeService.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.vo.NoticeVO;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface INoticeService extends BaseService<Notice> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ * @param page
+ * @param notice
+ * @return
+ */
+ IPage<NoticeVO> selectNoticePage(IPage<NoticeVO> page, NoticeVO notice);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/LeaveServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/LeaveServiceImpl.java
new file mode 100644
index 0000000..d434a6d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/LeaveServiceImpl.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.service.impl;
+
+import com.vci.ubcs.desk.entity.ProcessLeave;
+import com.vci.ubcs.desk.mapper.LeaveMapper;
+import com.vci.ubcs.desk.service.ILeaveService;
+import com.vci.ubcs.flow.core.constant.ProcessConstant;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.feign.IFlowClient;
+import com.vci.ubcs.flow.core.utils.FlowUtil;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class LeaveServiceImpl extends BaseServiceImpl<LeaveMapper, ProcessLeave> implements ILeaveService {
+
+ private final IFlowClient flowClient;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ // @GlobalTransactional
+ public boolean startProcess(ProcessLeave leave) {
+ String businessTable = FlowUtil.getBusinessTable(ProcessConstant.LEAVE_KEY);
+ if (Func.isEmpty(leave.getId())) {
+ // 淇濆瓨leave
+ leave.setApplyTime(DateUtil.now());
+ save(leave);
+ // 鍚姩娴佺▼
+ Kv variables = Kv.create()
+ .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserName())
+ .set("taskUser", TaskUtil.getTaskUser(leave.getTaskUser()))
+ .set("days", DateUtil.between(leave.getStartTime(), leave.getEndTime()).toDays());
+ R<BladeFlow> result = flowClient.startProcessInstanceById(leave.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(leave.getId())), variables);
+ if (result.isSuccess()) {
+ log.debug("娴佺▼宸插惎鍔�,娴佺▼ID:" + result.getData().getProcessInstanceId());
+ // 杩斿洖娴佺▼id鍐欏叆leave
+ leave.setProcessInstanceId(result.getData().getProcessInstanceId());
+ updateById(leave);
+ } else {
+ throw new ServiceException("寮�鍚祦绋嬪け璐�");
+ }
+ } else {
+
+ updateById(leave);
+ }
+ return true;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/NoticeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/NoticeServiceImpl.java
new file mode 100644
index 0000000..6b8775e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/service/impl/NoticeServiceImpl.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.desk.mapper.NoticeMapper;
+import com.vci.ubcs.desk.service.INoticeService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.vo.NoticeVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class NoticeServiceImpl extends BaseServiceImpl<NoticeMapper, Notice> implements INoticeService {
+
+ @Override
+ public IPage<NoticeVO> selectNoticePage(IPage<NoticeVO> page, NoticeVO notice) {
+ // 鑻ヤ笉浣跨敤mybatis-plus鑷甫鐨勫垎椤垫柟娉曪紝鍒欎笉浼氳嚜鍔ㄥ甫鍏enantId锛屾墍浠ユ垜浠渶瑕佽嚜琛屾敞鍏�
+ notice.setTenantId(AuthUtil.getTenantId());
+ return page.setRecords(baseMapper.selectNoticePage(page, notice));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/wrapper/NoticeWrapper.java b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/wrapper/NoticeWrapper.java
new file mode 100644
index 0000000..a7668c4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/java/com/vci/ubcs/desk/wrapper/NoticeWrapper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.desk.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.desk.entity.Notice;
+import com.vci.ubcs.desk.vo.NoticeVO;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.enums.DictEnum;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Notice鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class NoticeWrapper extends BaseEntityWrapper<Notice, NoticeVO> {
+
+ public static NoticeWrapper build() {
+ return new NoticeWrapper();
+ }
+
+ @Override
+ public NoticeVO entityVO(Notice notice) {
+ NoticeVO noticeVO = Objects.requireNonNull(BeanUtil.copy(notice, NoticeVO.class));
+ String dictValue = DictCache.getValue(DictEnum.NOTICE, noticeVO.getCategory());
+ noticeVO.setCategoryName(dictValue);
+ return noticeVO;
+ }
+
+ /**
+ * 鏌ヨ鏉′欢澶勭悊
+ */
+ public void noticeQuery(Map<String, Object> notice) {
+ // 姝ゅ満鏅粎鍦� pg鏁版嵁搴� map绫诲瀷浼犲弬鐨勬儏鍐典笅闇�瑕佸鐞嗭紝entity浼犲弬宸茬粡鍖呭惈鏁版嵁绫诲瀷锛屽垯鏃犻渶鍏冲績
+ // 閽堝 pg鏁版嵁搴� int绫诲瀷瀛楁鏌ヨ闇�瑕佸己杞殑澶勭悊绀轰緥
+ String searchKey = "category";
+ if (Func.isNotEmpty(notice.get(searchKey))) {
+ // 鏁版嵁搴撳瓧娈典负int绫诲瀷锛岃缃�"="鏌ヨ锛屽叿浣撴煡璇㈠弬鏁拌瑙� @org.springblade.core.mp.support.SqlKeyword
+ notice.put(searchKey.concat("_equal"), Func.toInt(notice.get(searchKey)));
+ // 榛樿"like"鏌ヨ锛宲g鏁版嵁搴� 鍦烘櫙浼氭姤閿欙紝鎵�浠ュ皢鍏跺垹闄�
+ notice.remove(searchKey);
+ }
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-desk/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-desk/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/resources/application-test.yml b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-desk/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/LeaveMapper.xml b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/LeaveMapper.xml
new file mode 100644
index 0000000..d616a5b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/LeaveMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.desk.mapper.LeaveMapper">
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/NoticeMapper.xml b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/NoticeMapper.xml
new file mode 100644
index 0000000..abc2ee9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-desk/src/main/resources/mapper/NoticeMapper.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.desk.mapper.NoticeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="noticeResultMap" type="com.vci.ubcs.desk.entity.Notice">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="release_time" property="releaseTime"/>
+ <result column="title" property="title"/>
+ <result column="content" property="content"/>
+ </resultMap>
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="noticeVOResultMap" type="com.vci.ubcs.desk.vo.NoticeVO">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="release_time" property="releaseTime"/>
+ <result column="title" property="title"/>
+ <result column="content" property="content"/>
+ </resultMap>
+
+ <select id="topList" resultMap="noticeResultMap">
+ select * from pl_org_notice limit #{number}
+ </select>
+
+ <select id="selectNoticePage" resultMap="noticeVOResultMap">
+ SELECT
+ n.*,
+ d.dict_value AS categoryName
+ FROM
+ pl_org_notice n
+ LEFT JOIN ( SELECT * FROM pl_sys_dict WHERE CODE = 'notice' ) d ON n.category = d.dict_key
+ WHERE
+ n.is_deleted = 0 and n.tenant_id = #{notice.tenantId}
+ <if test="notice.title!=null">
+ and n.title like concat(concat('%', #{notice.title}), '%')
+ </if>
+ <if test="notice.category!=null">
+ and n.category = #{notice.category}
+ </if>
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/pom.xml b/Source/UBCS/ubcs-service/ubcs-omd/pom.xml
new file mode 100644
index 0000000..8a7f992
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/pom.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<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>ubcs-service</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-omd</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-omd-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-flow-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+
+ <!--Oss-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-oss</artifactId>
+ </dependency>
+ <!--MinIO-->
+ <dependency>
+ <groupId>io.minio</groupId>
+ <artifactId>minio</artifactId>
+ </dependency>
+ <!--QiNiu-->
+ <dependency>
+ <groupId>com.qiniu</groupId>
+ <artifactId>qiniu-java-sdk</artifactId>
+ </dependency>
+ <!--<dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-transaction</artifactId>
+ </dependency>-->
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/OmdApplication.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/OmdApplication.java
new file mode 100644
index 0000000..b8bcaa5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/OmdApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 绯荤粺妯″潡鍚姩鍣�
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class OmdApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_NAME_OMD, OmdApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java
new file mode 100644
index 0000000..8bc9646
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.omd.wrapper.DictBizWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.service.IDictBizService;
+import com.vci.ubcs.omd.vo.DictBizMVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dict-biz")
+@Api(value = "涓氬姟瀛楀吀", tags = "涓氬姟瀛楀吀")
+public class DictBizOmdController extends BladeController {
+
+ private final IDictBizService dictService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
+ public R<DictBizMVO> detail(DictBizM dict) {
+ DictBizM detail = dictService.getOne(Condition.getQueryWrapper(dict));
+ return R.data(DictBizWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictBizMVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
+ List<DictBizM> list = dictService.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().orderByAsc(DictBizM::getSort));
+ return R.data(DictBizWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 椤剁骇鍒楄〃
+ */
+ @GetMapping("/parent-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<IPage<DictBizMVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
+ return R.data(dictService.parentList(dict, query));
+ }
+
+ /**
+ * 瀛愬垪琛�
+ */
+ @GetMapping("/child-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictBizMVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
+ return R.data(dictService.childList(dict, parentId));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictBizMVO>> tree() {
+ List<DictBizMVO> tree = dictService.tree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/parent-tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictBizMVO>> parentTree() {
+ List<DictBizMVO> tree = dictService.parentTree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
+ public R submit(@Valid @RequestBody DictBizM dict) {
+ CacheUtil.clear(DICT_CACHE);
+ return R.status(dictService.submit(dict));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(DICT_CACHE);
+ return R.status(dictService.removeDict(ids));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀
+ */
+ @GetMapping("/dictionary")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
+ public R<List<DictBizM>> dictionary(String code) {
+ List<DictBizM> tree = dictService.getList(code);
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍�
+ */
+ @GetMapping("/dictionary-tree")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
+ public R<List<DictBizMVO>> dictionaryTree(String code) {
+ List<DictBizM> tree = dictService.getList(code);
+ return R.data(DictBizWrapper.build().listNodeVO(tree));
+ }
+
+ /**
+ * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
+ */
+ @PostMapping("/check")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
+ public R checkOrInsert(@Valid @RequestBody DictBizM dict) {
+ CacheUtil.clear(DICT_CACHE);
+ return dictService.checkOrInsert(dict);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java
new file mode 100644
index 0000000..299a6c7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.feign;
+
+
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.service.IDictBizService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+
+/**
+ * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+public class DictBizClient implements IDictBizClient {
+
+ private final IDictBizService service;
+
+ @Override
+ @GetMapping(GET_BY_ID)
+ public R<DictBizM> getById(Long id) {
+ return R.data(service.getById(id));
+ }
+
+ @Override
+ @GetMapping(GET_VALUE)
+ public R<String> getValue(String code, String dictKey) {
+ return R.data(service.getValue(code, dictKey));
+ }
+
+ @Override
+ @GetMapping(GET_LIST)
+ public R<List<DictBizM>> getList(String code) {
+ return R.data(service.getList(code));
+ }
+
+ @Override
+ @GetMapping(CHECK_VALUE)
+ public R getCheck(DictBizM dict) {
+ return service.checkOrInsert(dict);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
new file mode 100644
index 0000000..38b3b7b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.vo.DictBizMVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface DictBizMapper extends BaseMapper<DictBizM> {
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<DictBizM> getList(String code);
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictBizMVO> tree();
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictBizMVO> parentTree();
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java
new file mode 100644
index 0000000..7a4601c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.service;
+
+
+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 com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.vo.DictBizMVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IDictBizService extends IService<DictBizM> {
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictBizMVO> tree();
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictBizMVO> parentTree();
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<DictBizM> getList(String code);
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ *
+ * @param dict
+ * @return
+ */
+ boolean submit(DictBizM dict);
+
+ /**
+ * 鍒犻櫎瀛楀吀
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeDict(String ids);
+
+ /**
+ * 椤剁骇鍒楄〃
+ *
+ * @param dict
+ * @param query
+ * @return
+ */
+ IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query);
+
+ /**
+ * 瀛愬垪琛�
+ *
+ * @param dict
+ * @param parentId
+ * @return
+ */
+ List<DictBizMVO> childList(Map<String, Object> dict, Long parentId);
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ *
+ * @param dict
+ * @return
+ */
+ R checkOrInsert(DictBizM dict);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java
new file mode 100644
index 0000000..5d11c41
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.omd.mapper.DictBizMapper;
+import com.vci.ubcs.omd.service.IDictBizService;
+import com.vci.ubcs.omd.wrapper.DictBizWrapper;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.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;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.omd.cache.DictBizCache;
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.vo.DictBizMVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBizM> implements IDictBizService {
+
+ @Override
+ public List tree() {
+ return ForestNodeMerger.merge((List)baseMapper.tree());
+ }
+
+ @Override
+ public List<DictBizMVO> parentTree() {
+ return ForestNodeMerger.merge((List)baseMapper.parentTree());
+ }
+
+ @Override
+ public String getValue(String code, String dictKey) {
+ return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
+ }
+
+ @Override
+ public List<DictBizM> getList(String code) {
+ return baseMapper.getList(code);
+ }
+
+ @Override
+ public boolean submit(DictBizM dict) {
+ LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
+ Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
+ if (cnt > 0L) {
+ throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
+ }
+ // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
+ if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
+ DictBizM parent = DictBizCache.getById(dict.getId());
+ this.update(Wrappers.<DictBizM>update().lambda().set(DictBizM::getCode, dict.getCode()).eq(DictBizM::getCode, parent.getCode()).ne(DictBizM::getParentId, BladeConstant.TOP_PARENT_ID));
+ }
+ if (Func.isEmpty(dict.getParentId())) {
+ dict.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ CacheUtil.clear(DICT_CACHE);
+ return saveOrUpdate(dict);
+ }
+
+ @Override
+ public boolean removeDict(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<DictBizM>query().lambda().in(DictBizM::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+ @Override
+ public IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query) {
+ IPage<DictBizM> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictBizM.class).lambda().eq(DictBizM::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictBizM::getSort));
+ return DictBizWrapper.build().pageVO(page);
+ }
+
+ @Override
+ public List<DictBizMVO> childList(Map<String, Object> dict, Long parentId) {
+ if (parentId < 0) {
+ return new ArrayList<>();
+ }
+ dict.remove("parentId");
+ DictBizM parentDict = DictBizCache.getById(parentId);
+ List<DictBizM> list = this.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().ne(DictBizM::getId, parentId).eq(DictBizM::getCode, parentDict.getCode()).orderByAsc(DictBizM::getSort));
+ return DictBizWrapper.build().listNodeVO(list);
+ }
+
+ @Override
+ public R checkOrInsert(DictBizM dict) {
+
+ LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
+ Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
+ if (cnt > 0L) {
+ return R.fail("瀛楀吀宸茬粡瀛樺湪锛�");
+ }
+
+ if (Func.isEmpty(dict.getParentId())) {
+ dict.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ CacheUtil.clear(DICT_CACHE);
+
+ if(saveOrUpdate(dict) == true){
+ return R.success("鎿嶄綔鎴愬姛!");
+ }
+ return R.fail("鎿嶄綔澶辫触锛�");
+
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java
new file mode 100644
index 0000000..5d185d4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.omd.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.omd.cache.DictBizCache;
+import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.vo.DictBizMVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class DictBizWrapper extends BaseEntityWrapper<DictBizM, DictBizMVO> {
+
+ public static DictBizWrapper build() {
+ return new DictBizWrapper();
+ }
+
+ @Override
+ public DictBizMVO entityVO(DictBizM dict) {
+ DictBizMVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictBizMVO.class));
+ if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ DictBizM parent = DictBizCache.getById(dict.getParentId());
+ dictVO.setParentName(parent.getDictValue());
+ }
+ return dictVO;
+ }
+
+ public List<DictBizMVO> listNodeVO(List<DictBizM> list) {
+ List<DictBizMVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictBizMVO.class)).collect(Collectors.toList());
+ return ForestNodeMerger.merge((List)collect);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-omd/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-omd/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-service/blade-omd/src/main/resources/application-test.yml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-omd/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml
new file mode 100644
index 0000000..1cb8b5f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.omd.mapper.DictBizMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="dictResultMap" type="com.vci.ubcs.omd.entity.DictBizM">
+ <id column="id" property="id"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="code" property="code"/>
+ <result column="dict_key" property="dictKey"/>
+ <result column="dict_value" property="dictValue"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ </resultMap>
+
+ <select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0
+ </select>
+
+ <!-- oracle 鐗堟湰 -->
+ <!--<select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
+ </select>-->
+
+ <select id="getList" resultMap="dictResultMap">
+ select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0
+ </select>
+
+ <select id="parentTree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0
+ </select>
+
+</mapper>
diff --git a/Source/BladeX/blade-service/blade-system/Dockerfile b/Source/UBCS/ubcs-service/ubcs-system/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-service/blade-system/Dockerfile
rename to Source/UBCS/ubcs-service/ubcs-system/Dockerfile
diff --git a/Source/UBCS/ubcs-service/ubcs-system/pom.xml b/Source/UBCS/ubcs-service/ubcs-system/pom.xml
new file mode 100644
index 0000000..c738b24
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-system</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-excel</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-system-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-user-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/SystemApplication.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/SystemApplication.java
new file mode 100644
index 0000000..ad3daac
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/SystemApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 绯荤粺妯″潡鍚姩鍣�
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class SystemApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_SYSTEM_NAME, SystemApplication.class, args);
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ApiScopeController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ApiScopeController.java
new file mode 100644
index 0000000..46105aa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ApiScopeController.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IApiScopeService;
+import com.vci.ubcs.system.wrapper.ApiScopeWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.ApiScope;
+import com.vci.ubcs.system.vo.ApiScopeVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鎺ュ彛鏉冮檺鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("api-scope")
+@Api(value = "鎺ュ彛鏉冮檺", tags = "鎺ュ彛鏉冮檺")
+public class ApiScopeController extends BladeController {
+
+ private final IApiScopeService apiScopeService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
+ public R<ApiScope> detail(ApiScope dataScope) {
+ ApiScope detail = apiScopeService.getOne(Condition.getQueryWrapper(dataScope));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆dataScope")
+ public R<IPage<ApiScopeVO>> list(ApiScope dataScope, Query query) {
+ IPage<ApiScope> pages = apiScopeService.page(Condition.getPage(query), Condition.getQueryWrapper(dataScope));
+ return R.data(ApiScopeWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 鏂板
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆dataScope")
+ public R save(@Valid @RequestBody ApiScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(apiScopeService.save(dataScope));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆dataScope")
+ public R update(@Valid @RequestBody ApiScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(apiScopeService.updateById(dataScope));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dataScope")
+ public R submit(@Valid @RequestBody ApiScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(apiScopeService.saveOrUpdate(dataScope));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(apiScopeService.deleteLogic(Func.toLongList(ids)));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/AuthClientController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/AuthClientController.java
new file mode 100644
index 0000000..dae2717
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/AuthClientController.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IAuthClientService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.AuthClient;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+
+/**
+ * 搴旂敤绠$悊鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/client")
+@ApiIgnore
+@Api(value = "搴旂敤绠$悊", tags = "鎺ュ彛")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+public class AuthClientController extends BladeController {
+
+ private final IAuthClientService clientService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆client")
+ public R<AuthClient> detail(AuthClient authClient) {
+ AuthClient detail = clientService.getOne(Condition.getQueryWrapper(authClient));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆client")
+ public R<IPage<AuthClient>> list(AuthClient authClient, Query query) {
+ IPage<AuthClient> pages = clientService.page(Condition.getPage(query), Condition.getQueryWrapper(authClient));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆client")
+ public R save(@Valid @RequestBody AuthClient authClient) {
+ return R.status(clientService.save(authClient));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆client")
+ public R update(@Valid @RequestBody AuthClient authClient) {
+ return R.status(clientService.updateById(authClient));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆client")
+ public R submit(@Valid @RequestBody AuthClient authClient) {
+ return R.status(clientService.saveOrUpdate(authClient));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(clientService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/CombinationController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/CombinationController.java
new file mode 100644
index 0000000..84d9609
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/CombinationController.java
@@ -0,0 +1,108 @@
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.ICombinationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.Combination;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(Combination)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:16
+ */
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@Api(value = "瀵嗙爜缁勫悎鏂瑰紡", tags = "鎺ュ彛")
+@RequestMapping("/combination")
+public class CombinationController {
+
+ /**
+ * 鏈嶅姟瀵硅薄
+ */
+ @Resource
+ private final ICombinationService combinationService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param combination 绛涢�夋潯浠�
+ * @param query 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆combination锛屽垎椤靛弬鏁皅uery")
+ public R<IPage<Combination>> queryByPage(Combination combination, Query query) {
+ IPage<Combination> pages = combinationService.page(Condition.getPage(query), Condition.getQueryWrapper(combination));
+ return R.data(pages);
+ }
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�")
+ public R<List> select() {
+ List<Map<String, Object>> map = combinationService.selectMaps();
+ return R.data(map);
+ }
+
+ /**
+ * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 鍗曟潯鏁版嵁
+ */
+ @GetMapping("/one")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
+ public ResponseEntity<Combination> queryById(@ApiParam(value = "缁勫悎鏂瑰紡ID", required = true) @RequestParam Long id) {
+ return ResponseEntity.ok(this.combinationService.queryById(id));
+ }
+
+ /**
+ * 鏂板鍜屼慨鏀规暟鎹�
+ *
+ * @param combination 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆combination")
+ public R submit(@Valid @RequestBody Combination combination) {
+ return R.status(combinationService.submit(combination));
+ }
+
+ /**
+ * 鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鍒犻櫎鏄惁鎴愬姛
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
+ return ResponseEntity.ok(this.combinationService.deleteByIds(ids));
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DataScopeController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DataScopeController.java
new file mode 100644
index 0000000..ec53524
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DataScopeController.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IDataScopeService;
+import com.vci.ubcs.system.wrapper.DataScopeWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.DataScope;
+import com.vci.ubcs.system.vo.DataScopeVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鏁版嵁鏉冮檺鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("data-scope")
+@Api(value = "鏁版嵁鏉冮檺", tags = "鏁版嵁鏉冮檺")
+public class DataScopeController extends BladeController {
+
+ private final IDataScopeService dataScopeService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
+ public R<DataScope> detail(DataScope dataScope) {
+ DataScope detail = dataScopeService.getOne(Condition.getQueryWrapper(dataScope));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆dataScope")
+ public R<IPage<DataScopeVO>> list(DataScope dataScope, Query query) {
+ IPage<DataScope> pages = dataScopeService.page(Condition.getPage(query), Condition.getQueryWrapper(dataScope));
+ return R.data(DataScopeWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 鏂板
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆dataScope")
+ public R save(@Valid @RequestBody DataScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(dataScopeService.save(dataScope));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆dataScope")
+ public R update(@Valid @RequestBody DataScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(dataScopeService.updateById(dataScope));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dataScope")
+ public R submit(@Valid @RequestBody DataScope dataScope) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(dataScopeService.saveOrUpdate(dataScope));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(dataScopeService.deleteLogic(Func.toLongList(ids)));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DeptController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DeptController.java
new file mode 100644
index 0000000..baeec08
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DeptController.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IDeptService;
+import com.vci.ubcs.system.user.cache.UserCache;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.wrapper.DeptWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.Dept;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.DeptVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dept")
+@Api(value = "閮ㄩ棬", tags = "閮ㄩ棬")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+public class DeptController extends BladeController {
+
+ private final IDeptService deptService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dept")
+ public R<DeptVO> detail(Dept dept) {
+ Dept detail = deptService.getOne(Condition.getQueryWrapper(dept));
+ return R.data(DeptWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "fullName", value = "閮ㄩ棬鍏ㄧО", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dept")
+ public R<List<DeptVO>> list(@ApiIgnore @RequestParam Map<String, Object> dept, BladeUser bladeUser) {
+ QueryWrapper<Dept> queryWrapper = Condition.getQueryWrapper(dept, Dept.class);
+ List<Dept> list = deptService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Dept::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(DeptWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ */
+ @GetMapping("/lazy-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "fullName", value = "閮ㄩ棬鍏ㄧО", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆dept")
+ public R<List<DeptVO>> lazyList(@ApiIgnore @RequestParam Map<String, Object> dept, Long parentId, BladeUser bladeUser) {
+ List<DeptVO> list = deptService.lazyList(bladeUser.getTenantId(), parentId, dept);
+ return R.data(DeptWrapper.build().listNodeLazyVO(list));
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DeptVO>> tree(String tenantId, BladeUser bladeUser) {
+ List<DeptVO> tree = deptService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
+ return R.data(tree);
+ }
+
+ /**
+ * 鎳掑姞杞借幏鍙栭儴闂ㄦ爲褰㈢粨鏋�
+ */
+ @GetMapping("/lazy-tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鎳掑姞杞芥爲褰㈢粨鏋�", notes = "鏍戝舰缁撴瀯")
+ public R<List<DeptVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
+ List<DeptVO> tree = deptService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
+ return R.data(tree);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dept")
+ public R submit(@Valid @RequestBody Dept dept) {
+ if (deptService.submit(dept)) {
+ CacheUtil.clear(SYS_CACHE);
+ // 杩斿洖鎳掑姞杞芥爲鏇存柊鑺傜偣鎵�闇�瀛楁
+ Kv kv = Kv.create().set("id", String.valueOf(dept.getId())).set("tenantId", dept.getTenantId())
+ .set("deptCategoryName", DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()));
+ return R.data(kv);
+ }
+ return R.fail("鎿嶄綔澶辫触");
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE);
+ return R.status(deptService.removeDept(ids));
+ }
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ //@PreAuth(AuthConstant.PERMIT_ALL)
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
+ public R<List<Dept>> select(Long userId, String deptId) {
+ if (Func.isNotEmpty(userId)) {
+ User user = UserCache.getUser(userId);
+ deptId = user.getDeptId();
+ }
+ List<Dept> list = deptService.list(Wrappers.<Dept>lambdaQuery().in(Dept::getId, Func.toLongList(deptId)));
+ return R.data(list);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictBizController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictBizController.java
new file mode 100644
index 0000000..66615d9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictBizController.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IDictBizService;
+import com.vci.ubcs.system.wrapper.DictBizWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.vo.DictBizVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dict-biz")
+@Api(value = "涓氬姟瀛楀吀", tags = "涓氬姟瀛楀吀")
+public class DictBizController extends BladeController {
+
+ private final IDictBizService dictService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
+ public R<DictBizVO> detail(DictBiz dict) {
+ DictBiz detail = dictService.getOne(Condition.getQueryWrapper(dict));
+ return R.data(DictBizWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictBizVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
+ List<DictBiz> list = dictService.list(Condition.getQueryWrapper(dict, DictBiz.class).lambda().orderByAsc(DictBiz::getSort));
+ return R.data(DictBizWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 椤剁骇鍒楄〃
+ */
+ @GetMapping("/parent-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<IPage<DictBizVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
+ return R.data(dictService.parentList(dict, query));
+ }
+
+ /**
+ * 瀛愬垪琛�
+ */
+ @GetMapping("/child-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictBizVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
+ return R.data(dictService.childList(dict, parentId));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictBizVO>> tree() {
+ List<DictBizVO> tree = dictService.tree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/parent-tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictBizVO>> parentTree() {
+ List<DictBizVO> tree = dictService.parentTree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
+ public R submit(@Valid @RequestBody DictBiz dict) {
+ CacheUtil.clear(DICT_CACHE);
+ return R.status(dictService.submit(dict));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(DICT_CACHE);
+ return R.status(dictService.removeDict(ids));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀
+ */
+ @GetMapping("/dictionary")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
+ public R<List<DictBiz>> dictionary(String code) {
+ List<DictBiz> tree = dictService.getList(code);
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍�
+ */
+ @GetMapping("/dictionary-tree")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
+ public R<List<DictBizVO>> dictionaryTree(String code) {
+ List<DictBiz> tree = dictService.getList(code);
+ return R.data(DictBizWrapper.build().listNodeVO(tree));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictController.java
new file mode 100644
index 0000000..60e6a01
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/DictController.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IDictService;
+import com.vci.ubcs.system.wrapper.DictWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.vo.DictVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/dict")
+@Api(value = "瀛楀吀", tags = "瀛楀吀")
+public class DictController extends BladeController {
+
+ private final IDictService dictService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
+ public R<DictVO> detail(Dict dict) {
+ Dict detail = dictService.getOne(Condition.getQueryWrapper(dict));
+ return R.data(DictWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
+ List<Dict> list = dictService.list(Condition.getQueryWrapper(dict, Dict.class).lambda().orderByAsc(Dict::getSort));
+ DictWrapper dictWrapper = new DictWrapper();
+ return R.data(dictWrapper.listNodeVO(list));
+ }
+
+ /**
+ * 椤剁骇鍒楄〃
+ */
+ @GetMapping("/parent-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<IPage<DictVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
+ return R.data(dictService.parentList(dict, query));
+ }
+
+ /**
+ * 瀛愬垪琛�
+ */
+ @GetMapping("/child-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "parentId", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
+ public R<List<DictVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
+ return R.data(dictService.childList(dict, parentId));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictVO>> tree() {
+ List<DictVO> tree = dictService.tree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍戝舰缁撴瀯
+ */
+ @GetMapping("/parent-tree")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<DictVO>> parentTree() {
+ List<DictVO> tree = dictService.parentTree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
+ public R submit(@Valid @RequestBody Dict dict) {
+ CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
+ return R.status(dictService.submit(dict));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
+ return R.status(dictService.removeDict(ids));
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀
+ */
+ @GetMapping("/dictionary")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
+ public R<List<Dict>> dictionary(String code) {
+ List<Dict> tree = dictService.getList(code);
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇瀛楀吀鏍�
+ */
+ @GetMapping("/dictionary-tree")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
+ public R<List<DictVO>> dictionaryTree(String code) {
+ List<Dict> tree = dictService.getList(code);
+ return R.data(DictWrapper.build().listNodeVO(tree));
+ }
+
+ /**
+ * 瀛楀吀閿�煎垪琛�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "瀛楀吀閿�煎垪琛�", notes = "瀛楀吀閿�煎垪琛�")
+ public R<List<Dict>> select() {
+ List<Dict> list = dictService.list(Wrappers.<Dict>query().lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID));
+ list.forEach(dict -> dict.setDictValue(dict.getCode() + StringPool.COLON + StringPool.SPACE + dict.getDictValue()));
+ return R.data(list);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MenuController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MenuController.java
new file mode 100644
index 0000000..8d49df5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MenuController.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IMenuService;
+import com.vci.ubcs.system.service.ITopMenuService;
+import com.vci.ubcs.system.wrapper.MenuWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.node.TreeNode;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Menu;
+import com.vci.ubcs.system.entity.TopMenu;
+import com.vci.ubcs.system.vo.CheckedTreeVO;
+import com.vci.ubcs.system.vo.GrantTreeVO;
+import com.vci.ubcs.system.vo.MenuVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
+
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/menu")
+@Api(value = "鑿滃崟", tags = "鑿滃崟")
+public class MenuController extends BladeController {
+
+ private final IMenuService menuService;
+ private final ITopMenuService topMenuService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆menu")
+ public R<MenuVO> detail(Menu menu) {
+ Menu detail = menuService.getOne(Condition.getQueryWrapper(menu));
+ return R.data(MenuWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
+ })
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆menu")
+ public R<List<MenuVO>> list(@ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().orderByAsc(Menu::getSort));
+ return R.data(MenuWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ */
+ @GetMapping("/lazy-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
+ })
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
+ public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<MenuVO> list = menuService.lazyList(parentId, menu);
+ return R.data(MenuWrapper.build().listNodeLazyVO(list));
+ }
+
+ /**
+ * 鑿滃崟鍒楄〃
+ */
+ @GetMapping("/menu-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
+ })
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鑿滃崟鍒楄〃", notes = "浼犲叆menu")
+ public R<List<MenuVO>> menuList(@ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<Menu> list = menuService.list(Condition.getQueryWrapper(menu, Menu.class).lambda().eq(Menu::getCategory, 1).orderByAsc(Menu::getSort));
+ return R.data(MenuWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 鎳掑姞杞借彍鍗曞垪琛�
+ */
+ @GetMapping("/lazy-menu-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
+ })
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鎳掑姞杞借彍鍗曞垪琛�", notes = "浼犲叆menu")
+ public R<List<MenuVO>> lazyMenuList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<MenuVO> list = menuService.lazyMenuList(parentId, menu);
+ return R.data(MenuWrapper.build().listNodeLazyVO(list));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆menu")
+ public R submit(@Valid @RequestBody Menu menu) {
+ if (menuService.submit(menu)) {
+ CacheUtil.clear(MENU_CACHE);
+ CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+ // 杩斿洖鎳掑姞杞芥爲鏇存柊鑺傜偣鎵�闇�瀛楁
+ Kv kv = Kv.create().set("id", String.valueOf(menu.getId()));
+ return R.data(kv);
+ }
+ return R.fail("鎿嶄綔澶辫触");
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(MENU_CACHE);
+ CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+ return R.status(menuService.removeMenu(ids));
+ }
+
+ /**
+ * 鍓嶇鑿滃崟鏁版嵁
+ */
+ @GetMapping("/routes")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鍓嶇鑿滃崟鏁版嵁", notes = "鍓嶇鑿滃崟鏁版嵁")
+ public R<List<MenuVO>> routes(BladeUser user, Long topMenuId) {
+ List<MenuVO> list = menuService.routes((user == null) ? null : user.getRoleId(), topMenuId);
+ return R.data(list);
+ }
+
+ /**
+ * 鍓嶇鎸夐挳鏁版嵁
+ */
+ @GetMapping("/buttons")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "鍓嶇鎸夐挳鏁版嵁", notes = "鍓嶇鎸夐挳鏁版嵁")
+ public R<List<MenuVO>> buttons(BladeUser user) {
+ List<MenuVO> list = menuService.buttons(user.getRoleId());
+ return R.data(list);
+ }
+
+ /**
+ * 鑾峰彇鑿滃崟鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 11)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<TreeNode>> tree() {
+ List<TreeNode> tree = menuService.tree();
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇鏉冮檺鍒嗛厤鏍戝舰缁撴瀯
+ */
+ @GetMapping("/grant-tree")
+ @ApiOperationSupport(order = 12)
+ @ApiOperation(value = "鏉冮檺鍒嗛厤鏍戝舰缁撴瀯", notes = "鏉冮檺鍒嗛厤鏍戝舰缁撴瀯")
+ public R<GrantTreeVO> grantTree(BladeUser user) {
+ GrantTreeVO vo = new GrantTreeVO();
+ vo.setMenu(menuService.grantTree(user));
+ vo.setDataScope(menuService.grantDataScopeTree(user));
+ vo.setApiScope(menuService.grantApiScopeTree(user));
+ return R.data(vo);
+ }
+
+ /**
+ * 鑾峰彇鏉冮檺鍒嗛厤鏍戝舰缁撴瀯
+ */
+ @GetMapping("/role-tree-keys")
+ @ApiOperationSupport(order = 13)
+ @ApiOperation(value = "瑙掕壊鎵�鍒嗛厤鐨勬爲", notes = "瑙掕壊鎵�鍒嗛厤鐨勬爲")
+ public R<CheckedTreeVO> roleTreeKeys(String roleIds) {
+ CheckedTreeVO vo = new CheckedTreeVO();
+ vo.setMenu(menuService.roleTreeKeys(roleIds));
+ vo.setDataScope(menuService.dataScopeTreeKeys(roleIds));
+ vo.setApiScope(menuService.apiScopeTreeKeys(roleIds));
+ return R.data(vo);
+ }
+
+ /**
+ * 鑾峰彇椤堕儴鑿滃崟鏍戝舰缁撴瀯
+ */
+ @GetMapping("/grant-top-tree")
+ @ApiOperationSupport(order = 14)
+ @ApiOperation(value = "椤堕儴鑿滃崟鏍戝舰缁撴瀯", notes = "椤堕儴鑿滃崟鏍戝舰缁撴瀯")
+ public R<GrantTreeVO> grantTopTree(BladeUser user) {
+ GrantTreeVO vo = new GrantTreeVO();
+ vo.setMenu(menuService.grantTopTree(user));
+ return R.data(vo);
+ }
+
+ /**
+ * 鑾峰彇椤堕儴鑿滃崟鏍戝舰缁撴瀯
+ */
+ @GetMapping("/top-tree-keys")
+ @ApiOperationSupport(order = 15)
+ @ApiOperation(value = "椤堕儴鑿滃崟鎵�鍒嗛厤鐨勬爲", notes = "椤堕儴鑿滃崟鎵�鍒嗛厤鐨勬爲")
+ public R<CheckedTreeVO> topTreeKeys(String topMenuIds) {
+ CheckedTreeVO vo = new CheckedTreeVO();
+ vo.setMenu(menuService.topTreeKeys(topMenuIds));
+ return R.data(vo);
+ }
+
+ /**
+ * 椤堕儴鑿滃崟鏁版嵁
+ */
+ @GetMapping("/top-menu")
+ @ApiOperationSupport(order = 16)
+ @ApiOperation(value = "椤堕儴鑿滃崟鏁版嵁", notes = "椤堕儴鑿滃崟鏁版嵁")
+ public R<List<TopMenu>> topMenu(BladeUser user) {
+ if (Func.isEmpty(user)) {
+ return null;
+ }
+ List<TopMenu> list = topMenuService.list(Wrappers.<TopMenu>query().lambda().orderByAsc(TopMenu::getSort));
+ return R.data(list);
+ }
+
+ /**
+ * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
+ */
+ @GetMapping("/auth-routes")
+ @ApiOperationSupport(order = 17)
+ @ApiOperation(value = "鑿滃崟鐨勮鑹叉潈闄�")
+ public R<List<Kv>> authRoutes(BladeUser user) {
+ if (Func.isEmpty(user)) {
+ return null;
+ }
+ return R.data(menuService.authRoutes(user));
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ParamController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ParamController.java
new file mode 100644
index 0000000..7127d81
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ParamController.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IParamService;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Param;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.PARAM_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/param")
+@Api(value = "鍙傛暟绠$悊", tags = "鎺ュ彛")
+public class ParamController extends BladeController {
+
+ private final IParamService paramService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆param")
+ public R<Param> detail(Param param) {
+ Param detail = paramService.getOne(Condition.getQueryWrapper(param));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "paramName", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "paramKey", value = "鍙傛暟閿悕", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "paramValue", value = "鍙傛暟閿��", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆param")
+ public R<IPage<Param>> list(@ApiIgnore @RequestParam Map<String, Object> param, Query query) {
+ IPage<Param> pages = paramService.page(Condition.getPage(query), Condition.getQueryWrapper(param, Param.class));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆param")
+ public R submit(@Valid @RequestBody Param param) {
+ CacheUtil.clear(PARAM_CACHE);
+ CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
+ return R.status(paramService.saveOrUpdate(param));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(PARAM_CACHE);
+ CacheUtil.clear(PARAM_CACHE, Boolean.FALSE);
+ return R.status(paramService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/PostController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/PostController.java
new file mode 100644
index 0000000..7e79da8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/PostController.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IPostService;
+import com.vci.ubcs.system.wrapper.PostWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.vo.PostVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 宀椾綅琛� 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/post")
+@Api(value = "宀椾綅", tags = "宀椾綅")
+public class PostController extends BladeController {
+
+ private final IPostService postService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆post")
+ public R<PostVO> detail(Post post) {
+ Post detail = postService.getOne(Condition.getQueryWrapper(post));
+ return R.data(PostWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒嗛〉 宀椾綅琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆post")
+ public R<IPage<PostVO>> list(Post post, Query query) {
+ IPage<Post> pages = postService.page(Condition.getPage(query), Condition.getQueryWrapper(post));
+ return R.data(PostWrapper.build().pageVO(pages));
+ }
+
+
+ /**
+ * 鑷畾涔夊垎椤� 宀椾綅琛�
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆post")
+ public R<IPage<PostVO>> page(PostVO post, Query query) {
+ IPage<PostVO> pages = postService.selectPostPage(Condition.getPage(query), post);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 宀椾綅琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆post")
+ public R save(@Valid @RequestBody Post post) {
+ CacheUtil.clear(SYS_CACHE);
+ return R.status(postService.save(post));
+ }
+
+ /**
+ * 淇敼 宀椾綅琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆post")
+ public R update(@Valid @RequestBody Post post) {
+ CacheUtil.clear(SYS_CACHE);
+ return R.status(postService.updateById(post));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 宀椾綅琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆post")
+ public R submit(@Valid @RequestBody Post post) {
+ CacheUtil.clear(SYS_CACHE);
+ return R.status(postService.saveOrUpdate(post));
+ }
+
+
+ /**
+ * 鍒犻櫎 宀椾綅琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE);
+ return R.status(postService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆post")
+ public R<List<Post>> select(String tenantId, BladeUser bladeUser) {
+ List<Post> list = postService.list(Wrappers.<Post>query().lambda().eq(Post::getTenantId, Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())));
+ return R.data(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RegionController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RegionController.java
new file mode 100644
index 0000000..787a19c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RegionController.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.excel.RegionExcel;
+import com.vci.ubcs.system.excel.RegionImporter;
+import com.vci.ubcs.system.service.IRegionService;
+import com.vci.ubcs.system.wrapper.RegionWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import com.vci.ubcs.system.entity.Region;
+import com.vci.ubcs.system.vo.RegionVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 琛屾斂鍖哄垝琛� 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/region")
+@Api(value = "琛屾斂鍖哄垝", tags = "琛屾斂鍖哄垝")
+public class RegionController extends BladeController {
+
+ private final IRegionService regionService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆region")
+ public R<RegionVO> detail(Region region) {
+ Region detail = regionService.getOne(Condition.getQueryWrapper(region));
+ return R.data(RegionWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒嗛〉 琛屾斂鍖哄垝琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆region")
+ public R<IPage<Region>> list(Region region, Query query) {
+ IPage<Region> pages = regionService.page(Condition.getPage(query), Condition.getQueryWrapper(region));
+ return R.data(pages);
+ }
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ */
+ @GetMapping("/lazy-list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鍖哄垝缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鍖哄垝鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
+ public R<List<RegionVO>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<RegionVO> list = regionService.lazyList(parentCode, menu);
+ return R.data(RegionWrapper.build().listNodeLazyVO(list));
+ }
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ */
+ @GetMapping("/lazy-tree")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "code", value = "鍖哄垝缂栧彿", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "name", value = "鍖哄垝鍚嶇О", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
+ public R<List<RegionVO>> lazyTree(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
+ List<RegionVO> list = regionService.lazyTree(parentCode, menu);
+ return R.data(RegionWrapper.build().listNodeLazyVO(list));
+ }
+
+ /**
+ * 鏂板 琛屾斂鍖哄垝琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆region")
+ public R save(@Valid @RequestBody Region region) {
+ return R.status(regionService.save(region));
+ }
+
+ /**
+ * 淇敼 琛屾斂鍖哄垝琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆region")
+ public R update(@Valid @RequestBody Region region) {
+ return R.status(regionService.updateById(region));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 琛屾斂鍖哄垝琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆region")
+ public R submit(@Valid @RequestBody Region region) {
+ return R.status(regionService.submit(region));
+ }
+
+
+ /**
+ * 鍒犻櫎 琛屾斂鍖哄垝琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆涓婚敭")
+ public R remove(@ApiParam(value = "涓婚敭", required = true) @RequestParam String id) {
+ return R.status(regionService.removeRegion(id));
+ }
+
+ /**
+ * 琛屾斂鍖哄垝涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
+ public R<List<Region>> select(@RequestParam(required = false, defaultValue = "00") String code) {
+ List<Region> list = regionService.list(Wrappers.<Region>query().lambda().eq(Region::getParentCode, code));
+ return R.data(list);
+ }
+
+ /**
+ * 瀵煎叆琛屾斂鍖哄垝鏁版嵁
+ */
+ @PostMapping("import-region")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "瀵煎叆琛屾斂鍖哄垝", notes = "浼犲叆excel")
+ public R importRegion(MultipartFile file, Integer isCovered) {
+ RegionImporter regionImporter = new RegionImporter(regionService, isCovered == 1);
+ ExcelUtil.save(file, regionImporter, RegionExcel.class);
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+ /**
+ * 瀵煎嚭琛屾斂鍖哄垝鏁版嵁
+ */
+ @GetMapping("export-region")
+ @ApiOperationSupport(order = 11)
+ @ApiOperation(value = "瀵煎嚭琛屾斂鍖哄垝", notes = "浼犲叆user")
+ public void exportRegion(@ApiIgnore @RequestParam Map<String, Object> region, HttpServletResponse response) {
+ QueryWrapper<Region> queryWrapper = Condition.getQueryWrapper(region, Region.class);
+ List<RegionExcel> list = regionService.exportRegion(queryWrapper);
+ ExcelUtil.export(response, "琛屾斂鍖哄垝鏁版嵁" + DateUtil.time(), "琛屾斂鍖哄垝鏁版嵁琛�", list, RegionExcel.class);
+ }
+
+ /**
+ * 瀵煎嚭妯℃澘
+ */
+ @GetMapping("export-template")
+ @ApiOperationSupport(order = 12)
+ @ApiOperation(value = "瀵煎嚭妯℃澘")
+ public void exportUser(HttpServletResponse response) {
+ List<RegionExcel> list = new ArrayList<>();
+ ExcelUtil.export(response, "琛屾斂鍖哄垝妯℃澘", "琛屾斂鍖哄垝琛�", list, RegionExcel.class);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java
new file mode 100644
index 0000000..d4bb4a0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/RoleController.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IRoleService;
+import com.vci.ubcs.system.user.cache.UserCache;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.wrapper.RoleWrapper;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Role;
+import com.vci.ubcs.system.vo.GrantVO;
+import com.vci.ubcs.system.vo.RoleVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/role")
+@Api(value = "瑙掕壊", tags = "瑙掕壊")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+public class RoleController extends BladeController {
+
+ private final IRoleService roleService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆role")
+ public R<RoleVO> detail(Role role) {
+ Role detail = roleService.getOne(Condition.getQueryWrapper(role));
+ return R.data(RoleWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "roleName", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "roleAlias", value = "瑙掕壊鍒悕", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆role")
+ public R<List<RoleVO>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) {
+ QueryWrapper<Role> queryWrapper = Condition.getQueryWrapper(role, Role.class);
+ List<Role> list = roleService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Role::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(RoleWrapper.build().listNodeVO(list));
+ }
+
+ /**
+ * 鑾峰彇瑙掕壊鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<RoleVO>> tree(String tenantId, BladeUser bladeUser) {
+ List<RoleVO> tree = roleService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()));
+ return R.data(tree);
+ }
+
+ /**
+ * 鑾峰彇鎸囧畾瑙掕壊鏍戝舰缁撴瀯
+ */
+ @GetMapping("/tree-by-id")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
+ public R<List<RoleVO>> treeById(Long roleId, BladeUser bladeUser) {
+ Role role = SysCache.getRole(roleId);
+ List<RoleVO> tree = roleService.tree(Func.notNull(role) ? role.getTenantId() : bladeUser.getTenantId());
+ return R.data(tree);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆role")
+ public R submit(@Valid @RequestBody Role role) {
+ CacheUtil.clear(SYS_CACHE);
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(roleService.submit(role));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE);
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(roleService.removeRole(ids));
+ }
+
+ /**
+ * 璁剧疆瑙掕壊鏉冮檺
+ */
+ @PostMapping("/grant")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎")
+ public R grant(@RequestBody GrantVO grantVO) {
+ CacheUtil.clear(SYS_CACHE);
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ boolean temp = roleService.grant(grantVO.getRoleIds(), grantVO.getMenuIds(), grantVO.getDataScopeIds(), grantVO.getApiScopeIds());
+ return R.status(temp);
+ }
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
+ public R<List<Role>> select(Long userId, String roleId) {
+ if (Func.isNotEmpty(userId)) {
+ User user = UserCache.getUser(userId);
+ roleId = user.getRoleId();
+ }
+ List<Role> list = roleService.list(Wrappers.<Role>lambdaQuery().in(Role::getId, Func.toLongList(roleId)));
+ return R.data(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/SearchController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/SearchController.java
new file mode 100644
index 0000000..38c956a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/SearchController.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IDeptService;
+import com.vci.ubcs.system.service.IPostService;
+import com.vci.ubcs.system.service.IRoleService;
+import com.vci.ubcs.system.wrapper.PostWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.vo.DeptVO;
+import com.vci.ubcs.system.vo.PostVO;
+import com.vci.ubcs.system.vo.RoleVO;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 鏌ヨ鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/search")
+@Api(value = "鏌ヨ", tags = "鏌ヨ")
+public class SearchController {
+
+ private final IRoleService roleService;
+
+ private final IDeptService deptService;
+
+ private final IPostService postService;
+
+ /**
+ * 瑙掕壊淇℃伅鏌ヨ
+ */
+ @GetMapping("/role")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "瑙掕壊淇℃伅鏌ヨ", notes = "浼犲叆roleName鎴栬�卲arentId")
+ public R<List<RoleVO>> roleSearch(String roleName, Long parentId) {
+ return R.data(roleService.search(roleName, parentId));
+ }
+
+ /**
+ * 閮ㄩ棬淇℃伅鏌ヨ
+ */
+ @GetMapping("/dept")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "閮ㄩ棬淇℃伅鏌ヨ", notes = "浼犲叆deptName鎴栬�卲arentId")
+ public R<List<DeptVO>> deptSearch(String deptName, Long parentId) {
+ return R.data(deptService.search(deptName, parentId));
+ }
+
+ /**
+ * 宀椾綅淇℃伅鏌ヨ
+ */
+ @GetMapping("/post")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "宀椾綅淇℃伅鏌ヨ", notes = "浼犲叆postName")
+ public R<IPage<PostVO>> postSearch(String postName, Query query) {
+ LambdaQueryWrapper<Post> queryWrapper = Wrappers.<Post>query().lambda();
+ if (Func.isNotBlank(postName)) {
+ queryWrapper.like(Post::getPostName, postName);
+ }
+ IPage<Post> pages = postService.page(Condition.getPage(query), queryWrapper);
+ return R.data(PostWrapper.build().pageVO(pages));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StrategyController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StrategyController.java
new file mode 100644
index 0000000..f011799
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StrategyController.java
@@ -0,0 +1,122 @@
+package com.vci.ubcs.system.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IStrategyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.Strategy;
+import org.springframework.data.domain.Page;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(Strategy)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2023-03-20 16:45:31
+ */
+@NonDS
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@RequestMapping("/strategy")
+@Api(value = "瀵嗙爜绛栫暐", tags = "鎺ュ彛")
+public class StrategyController {
+
+ /**
+ * 鏈嶅姟瀵硅薄
+ */
+ @Resource
+ private IStrategyService strategyService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param query 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆鍒嗛〉鍙傛暟query")
+ public R<Page<Strategy>> queryByPage(Query query) {
+ Page<Strategy> strategyPage = strategyService.queryAllByPage(query);
+ return R.data(strategyPage);
+ }
+
+ /**
+ * 鏌ヨ榛樿瀵嗙爜绛栫暐
+ *
+ * @return 鏌ヨ缁撴灉
+ */
+ @GetMapping("/default")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鏌ヨ榛樿瀵嗙爜绛栫暐")
+ public R<Strategy> queryByIsDefault() {
+ Strategy strategy = strategyService.queryByIsDefault();
+ return R.data(strategy);
+ }
+
+ /**
+ * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 鍗曟潯鏁版嵁
+ */
+ @GetMapping("/one")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
+ public ResponseEntity<Strategy> queryById(@ApiParam(value = "瀵嗙爜绛栫暐ID", required = true) @RequestParam String id) {
+ return ResponseEntity.ok(this.strategyService.queryById(id));
+ }
+
+ /**
+ * 鏂板鍜屼慨鏀规暟鎹�
+ *
+ * @param strategy 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板鎴栦慨鏀规暟鎹�", notes = "浼犲叆strategy")
+ public ResponseEntity<Boolean> submit(@Valid @RequestBody Strategy strategy) {
+ return ResponseEntity.ok(this.strategyService.submit(strategy));
+ }
+
+ /**
+ * 鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鍒犻櫎鏄惁鎴愬姛
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+ public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
+ return ResponseEntity.ok(this.strategyService.deleteByIds(ids));
+ }
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
+ *
+ * @param userId 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PostMapping("/query-userid")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐", notes = "浼犲叆userId")
+ public R<Strategy> queryByUserId(@Valid @RequestParam Long userId) {
+ return R.data(this.strategyService.queryByUserId(userId));
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantController.java
new file mode 100644
index 0000000..a2e5bcd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantController.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.ITenantPackageService;
+import com.vci.ubcs.system.service.ITenantService;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Tenant;
+import com.vci.ubcs.system.entity.TenantPackage;
+import com.vci.ubcs.system.vo.TenantVO;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+import static org.springblade.core.tenant.constant.TenantBaseConstant.TENANT_DATASOURCE_CACHE;
+import static org.springblade.core.tenant.constant.TenantBaseConstant.TENANT_DATASOURCE_EXIST_KEY;
+import static com.vci.ubcs.system.cache.SysCache.TENANT_PACKAGE_ID;
+import static com.vci.ubcs.system.cache.SysCache.TENANT_TENANT_ID;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+@RequestMapping("/tenant")
+@Api(value = "绉熸埛绠$悊", tags = "鎺ュ彛")
+public class TenantController extends BladeController {
+
+ private final ITenantService tenantService;
+
+ private final ITenantPackageService tenantPackageService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<Tenant> detail(Tenant tenant) {
+ Tenant detail = tenantService.getOne(Condition.getQueryWrapper(tenant));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "tenantId", value = "鍙傛暟鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "tenantName", value = "瑙掕壊鍒悕", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "contactNumber", value = "鑱旂郴鐢佃瘽", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<IPage<Tenant>> list(@ApiIgnore @RequestParam Map<String, Object> tenant, Query query, BladeUser bladeUser) {
+ QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant, Tenant.class);
+ IPage<Tenant> pages = tenantService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(pages);
+ }
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<List<Tenant>> select(Tenant tenant, BladeUser bladeUser) {
+ QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant);
+ List<Tenant> list = tenantService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(list);
+ }
+
+ /**
+ * 鑷畾涔夊垎椤�
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<IPage<Tenant>> page(Tenant tenant, Query query) {
+ IPage<Tenant> pages = tenantService.selectTenantPage(Condition.getPage(query), tenant);
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ public R submit(@Valid @RequestBody TenantVO tenantVO) {
+ return R.status(tenantService.submitTenant(tenantVO));
+ }
+
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(tenantService.removeTenant(Func.toLongList(ids)));
+ }
+
+ /**
+ * 鏁版嵁婧愰厤缃�
+ */
+ @PostMapping("/datasource")
+ @ApiOperationSupport(order = 8)
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperation(value = "鏁版嵁婧愰厤缃�", notes = "浼犲叆datasource_id")
+ public R datasource(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "鏁版嵁婧怚D", required = true) @RequestParam Long datasourceId){
+ CacheUtil.evict(TENANT_DATASOURCE_CACHE, TENANT_DATASOURCE_EXIST_KEY, tenantId, Boolean.FALSE);
+ return R.status(tenantService.update(Wrappers.<Tenant>update().lambda().set(Tenant::getDatasourceId, datasourceId).eq(Tenant::getTenantId, tenantId)));
+ }
+
+ /**
+ * 鏍规嵁鍚嶇О鏌ヨ鍒楄〃
+ *
+ * @param name 绉熸埛鍚嶇О
+ */
+ @GetMapping("/find-by-name")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<List<Tenant>> findByName(String name) {
+ List<Tenant> list = tenantService.list(Wrappers.<Tenant>query().lambda().like(Tenant::getTenantName, name));
+ return R.data(list);
+ }
+
+ /**
+ * 鏍规嵁鍩熷悕鏌ヨ淇℃伅
+ *
+ * @param domain 鍩熷悕
+ */
+ @GetMapping("/info")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "閰嶇疆淇℃伅", notes = "浼犲叆domain")
+ public R<Kv> info(String domain) {
+ Tenant tenant = tenantService.getOne(Wrappers.<Tenant>query().lambda().eq(Tenant::getDomainUrl, domain));
+ Kv kv = Kv.create();
+ if (tenant != null) {
+ kv.set("tenantId", tenant.getTenantId())
+ .set("domain", tenant.getDomainUrl())
+ .set("backgroundUrl", tenant.getBackgroundUrl());
+ }
+ return R.data(kv);
+ }
+
+ /**
+ * 鏍规嵁绉熸埛ID鏌ヨ浜у搧鍖呰鎯�
+ *
+ * @param tenantId 绉熸埛ID
+ */
+ @GetMapping("/package-detail")
+ @ApiOperationSupport(order = 11)
+ @ApiOperation(value = "浜у搧鍖呰鎯�", notes = "浼犲叆tenantId")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ public R<TenantPackage> packageDetail(Long tenantId) {
+ Tenant tenant = tenantService.getById(tenantId);
+ return R.data(tenantPackageService.getById(tenant.getPackageId()));
+ }
+
+ /**
+ * 浜у搧鍖呴厤缃�
+ */
+ @PostMapping("/package-setting")
+ @ApiOperationSupport(order = 12)
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ @ApiOperation(value = "浜у搧鍖呴厤缃�", notes = "浼犲叆packageId")
+ public R packageSetting(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "浜у搧鍖匢D") Long packageId) {
+ CacheUtil.evict(SYS_CACHE, TENANT_TENANT_ID, tenantId, Boolean.FALSE);
+ CacheUtil.evict(SYS_CACHE, TENANT_PACKAGE_ID, tenantId, Boolean.FALSE);
+ return R.status(tenantService.update(Wrappers.<Tenant>update().lambda().set(Tenant::getPackageId, packageId).eq(Tenant::getTenantId, tenantId)));
+ }
+
+ /**
+ * 鏌ヨ绉熸埛淇℃伅锛岀畝閿�煎褰㈠娍
+ * @return
+ */
+ @GetMapping("/tenant-map")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "涓嬫媺绉熸埛淇℃伅")
+ public R<List> findAll() {
+ List<Map<String, Object>> map = tenantService.selectMaps();
+ return R.data(map);
+ }
+
+ /**
+ * 鏌ヨ鏄惁閰嶇疆鏈夐粯璁ゅ繀椤诲紑鍚笁鍛樼鐞�
+ * @return
+ */
+ @GetMapping("/find-ssa-enable")
+ @ApiOperationSupport(order = 14)
+ @ApiOperation(value = "涓嬫媺绉熸埛淇℃伅")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+ public R findIsOpen() {
+ boolean isOpen = this.tenantService.findIsOpen();
+ return R.data(isOpen);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantPackageController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantPackageController.java
new file mode 100644
index 0000000..a323994
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TenantPackageController.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.ITenantPackageService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.TenantPackage;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 绉熸埛浜у搧琛� 鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/tenant-package")
+@Api(value = "绉熸埛浜у搧琛�", tags = "绉熸埛浜у搧琛ㄦ帴鍙�")
+public class TenantPackageController extends BladeController {
+
+ private final ITenantPackageService tenantPackageService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆tenantPackage")
+ public R<TenantPackage> detail(TenantPackage tenantPackage) {
+ TenantPackage detail = tenantPackageService.getOne(Condition.getQueryWrapper(tenantPackage));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 绉熸埛浜у搧琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenantPackage")
+ public R<IPage<TenantPackage>> list(TenantPackage tenantPackage, Query query) {
+ IPage<TenantPackage> pages = tenantPackageService.page(Condition.getPage(query), Condition.getQueryWrapper(tenantPackage));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 绉熸埛浜у搧琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆tenantPackage")
+ public R save(@Valid @RequestBody TenantPackage tenantPackage) {
+ return R.status(tenantPackageService.save(tenantPackage));
+ }
+
+ /**
+ * 淇敼 绉熸埛浜у搧琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆tenantPackage")
+ public R update(@Valid @RequestBody TenantPackage tenantPackage) {
+ return R.status(tenantPackageService.updateById(tenantPackage));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 绉熸埛浜у搧琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆tenantPackage")
+ public R submit(@Valid @RequestBody TenantPackage tenantPackage) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(tenantPackageService.saveOrUpdate(tenantPackage));
+ }
+
+
+ /**
+ * 鍒犻櫎 绉熸埛浜у搧琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return R.status(tenantPackageService.deleteLogic(Func.toLongList(ids)));
+ }
+
+
+ /**
+ * 涓嬫媺鏁版嵁婧�
+ */
+ @GetMapping("/select")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<List<TenantPackage>> select(TenantPackage tenantPackage) {
+ return R.data(tenantPackageService.list(Condition.getQueryWrapper(tenantPackage)));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TopMenuController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TopMenuController.java
new file mode 100644
index 0000000..4321169
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/TopMenuController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.ITopMenuService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.TopMenu;
+import com.vci.ubcs.system.vo.GrantVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 椤堕儴鑿滃崟琛� 鎺у埗鍣�
+ *
+ * @author BladeX
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/topmenu")
+@Api(value = "椤堕儴鑿滃崟琛�", tags = "椤堕儴鑿滃崟")
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+public class TopMenuController extends BladeController {
+
+ private final ITopMenuService topMenuService;
+
+ /**
+ * 璇︽儏
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆topMenu")
+ public R<TopMenu> detail(TopMenu topMenu) {
+ TopMenu detail = topMenuService.getOne(Condition.getQueryWrapper(topMenu));
+ return R.data(detail);
+ }
+
+ /**
+ * 鍒嗛〉 椤堕儴鑿滃崟琛�
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉", notes = "浼犲叆topMenu")
+ public R<IPage<TopMenu>> list(TopMenu topMenu, Query query) {
+ IPage<TopMenu> pages = topMenuService.page(Condition.getPage(query), Condition.getQueryWrapper(topMenu).lambda().orderByAsc(TopMenu::getSort));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板 椤堕儴鑿滃崟琛�
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板", notes = "浼犲叆topMenu")
+ public R save(@Valid @RequestBody TopMenu topMenu) {
+ return R.status(topMenuService.save(topMenu));
+ }
+
+ /**
+ * 淇敼 椤堕儴鑿滃崟琛�
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆topMenu")
+ public R update(@Valid @RequestBody TopMenu topMenu) {
+ return R.status(topMenuService.updateById(topMenu));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀� 椤堕儴鑿滃崟琛�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆topMenu")
+ public R submit(@Valid @RequestBody TopMenu topMenu) {
+ return R.status(topMenuService.saveOrUpdate(topMenu));
+ }
+
+
+ /**
+ * 鍒犻櫎 椤堕儴鑿滃崟琛�
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+ return R.status(topMenuService.deleteLogic(Func.toLongList(ids)));
+ }
+
+ /**
+ * 璁剧疆椤堕儴鑿滃崟
+ */
+ @PostMapping("/grant")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "椤堕儴鑿滃崟閰嶇疆", notes = "浼犲叆topMenuId闆嗗悎浠ュ強menuId闆嗗悎")
+ public R grant(@RequestBody GrantVO grantVO) {
+ CacheUtil.clear(SYS_CACHE);
+ CacheUtil.clear(MENU_CACHE);
+ CacheUtil.clear(MENU_CACHE, Boolean.FALSE);
+ boolean temp = topMenuService.grant(grantVO.getTopMenuIds(), grantVO.getMenuIds());
+ return R.status(temp);
+ }
+
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java
new file mode 100644
index 0000000..bbdeea0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.system.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IUserPwdstrategyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import com.vci.ubcs.system.vo.UserPwdstrategyVO;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+/**
+ * 鐢ㄦ埛瀵嗙爜绛栫暐鍏宠仈(UserPwdstrategy)琛ㄦ帶鍒跺眰
+ *
+ * @author ludc
+ * @since 2023-03-20 15:23:24
+ */
+@NonDS
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@RequestMapping("/user-pwdstrategy")
+@Api(value = "鐢ㄦ埛瀵嗙爜瀹夊叏绛栫暐鍏宠仈琛�", tags = "鎺ュ彛")
+public class UserPwdstrategyController {
+
+ @Resource
+ private IUserPwdstrategyService userPwdstrategyService;
+
+ /**
+ * 鏂板鍜屼慨鏀规暟鎹�
+ *
+ * @param userPwdstrategyVO 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PutMapping("/insert")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板鏁版嵁", notes = "浼犲叆userPwdstrategy")
+ public ResponseEntity<Boolean> insert(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) {
+ return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO));
+ }
+
+ /**
+ * 鏂板鍜屼慨鏀规暟鎹�
+ *
+ * @param userPwdstrategyVO 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "淇敼鏁版嵁", notes = "浼犲叆userPwdstrategy")
+ public ResponseEntity<Boolean> update(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) {
+ return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO));
+ }
+
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ValueRangeController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ValueRangeController.java
new file mode 100644
index 0000000..586f557
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ValueRangeController.java
@@ -0,0 +1,92 @@
+package com.vci.ubcs.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.service.IValueRangeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.ValueRange;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * (ValueRangeController)琛ㄦ帶鍒跺眰
+ *
+ * @author ludc
+ * @since 2023-03-20 15:23:24
+ */
+@NonDS
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@RequestMapping("/value-range")
+@Api(value = "瀵嗙爜缁勫悎鏂瑰紡鍙栧��", tags = "鎺ュ彛")
+public class ValueRangeController {
+
+ /**
+ * 鏈嶅姟瀵硅薄
+ */
+ @Resource
+ private IValueRangeService valueRangeService;
+
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
+ public R<List<ValueRange>> queryByList() {
+ return R.data(valueRangeService.queryByAll());
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param valueRange 绛涢�夋潯浠�
+ * @param query 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆valueRange锛屽垎椤靛弬鏁皅uery")
+ public R<IPage<ValueRange>> queryByPage(ValueRange valueRange, Query query) {
+ IPage<ValueRange> pages = valueRangeService.page(Condition.getPage(query), Condition.getQueryWrapper(valueRange));
+ return R.data(pages);
+ }
+
+ /**
+ * 鏂板鍜屼慨鏀规暟鎹�
+ *
+ * @param valueRange 瀹炰綋
+ * @return 鏂板缁撴灉
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆valueRange")
+ public ResponseEntity<Boolean> submit(@Valid @RequestBody ValueRange valueRange) {
+ return ResponseEntity.ok(this.valueRangeService.submit(valueRange));
+ }
+
+ /**
+ * 鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鍒犻櫎鏄惁鎴愬姛
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+ public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
+ return ResponseEntity.ok(this.valueRangeService.deleteByIds(ids));
+ }
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionExcel.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionExcel.java
new file mode 100644
index 0000000..8594479
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionExcel.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * RegionExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(16)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class RegionExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ExcelProperty("鍖哄垝缂栧彿")
+ private String code;
+
+ @ExcelProperty("鐖跺尯鍒掔紪鍙�")
+ private String parentCode;
+
+ @ExcelProperty("绁栧尯鍒掔紪鍙�")
+ private String ancestors;
+
+ @ExcelProperty("鍖哄垝鍚嶇О")
+ private String name;
+
+ @ExcelProperty("鐪佺骇鍖哄垝缂栧彿")
+ private String provinceCode;
+
+ @ExcelProperty("鐪佺骇鍚嶇О")
+ private String provinceName;
+
+ @ExcelProperty("甯傜骇鍖哄垝缂栧彿")
+ private String cityCode;
+
+ @ExcelProperty("甯傜骇鍚嶇О")
+ private String cityName;
+
+ @ExcelProperty("鍖虹骇鍖哄垝缂栧彿")
+ private String districtCode;
+
+ @ExcelProperty("鍖虹骇鍚嶇О")
+ private String districtName;
+
+ @ExcelProperty("闀囩骇鍖哄垝缂栧彿")
+ private String townCode;
+
+ @ExcelProperty("闀囩骇鍚嶇О")
+ private String townName;
+
+ @ExcelProperty("鏉戠骇鍖哄垝缂栧彿")
+ private String villageCode;
+
+ @ExcelProperty("鏉戠骇鍚嶇О")
+ private String villageName;
+
+ @ExcelProperty("灞傜骇")
+ private Integer regionLevel;
+
+ @ExcelProperty("鎺掑簭")
+ private Integer sort;
+
+ @ExcelProperty("澶囨敞")
+ private String remark;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionImporter.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionImporter.java
new file mode 100644
index 0000000..5116dce
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/excel/RegionImporter.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.excel;
+
+import com.vci.ubcs.system.service.IRegionService;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+
+import java.util.List;
+
+/**
+ * 琛屾斂鍖哄垝鏁版嵁瀵煎叆绫�
+ *
+ * @author Chill
+ */
+@RequiredArgsConstructor
+public class RegionImporter implements ExcelImporter<RegionExcel> {
+
+ private final IRegionService service;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<RegionExcel> data) {
+ service.importRegion(data, isCovered);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/ApiScopeClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/ApiScopeClient.java
new file mode 100644
index 0000000..214d48d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/ApiScopeClient.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static org.springblade.core.secure.constant.PermissionConstant.permissionAllStatement;
+import static org.springblade.core.secure.constant.PermissionConstant.permissionStatement;
+
+/**
+ * 鎺ュ彛鏉冮檺Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@RequiredArgsConstructor
+public class ApiScopeClient implements IApiScopeClient {
+
+ private final JdbcTemplate jdbcTemplate;
+
+ @Override
+ @GetMapping(PERMISSION_PATH)
+ public List<String> permissionPath(String roleId) {
+ List<Long> roleIds = Func.toLongList(roleId);
+ return jdbcTemplate.queryForList(permissionAllStatement(roleIds.size()), roleIds.toArray(), String.class);
+ }
+
+ @Override
+ @GetMapping(PERMISSION_CODE)
+ public List<String> permissionCode(String permission, String roleId) {
+ List<Object> args = new ArrayList<>(Collections.singletonList(permission));
+ List<Long> roleIds = Func.toLongList(roleId);
+ args.addAll(roleIds);
+ return jdbcTemplate.queryForList(permissionStatement(roleIds.size()), args.toArray(), String.class);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DataScopeClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DataScopeClient.java
new file mode 100644
index 0000000..fd567a1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DataScopeClient.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.datascope.constant.DataScopeConstant;
+import org.springblade.core.datascope.model.DataScopeModel;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 鏁版嵁鏉冮檺Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@RequiredArgsConstructor
+public class DataScopeClient implements IDataScopeClient {
+
+ private static final DataScopeModel SEARCHED_DATA_SCOPE_MODEL = new DataScopeModel(Boolean.TRUE);
+
+ private final JdbcTemplate jdbcTemplate;
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param mapperId 鏁版嵁鏉冮檺mapperId
+ * @param roleId 鐢ㄦ埛瑙掕壊闆嗗悎
+ * @return DataScopeModel
+ */
+ @Override
+ @GetMapping(GET_DATA_SCOPE_BY_MAPPER)
+ public DataScopeModel getDataScopeByMapper(String mapperId, String roleId) {
+ List<Object> args = new ArrayList<>(Collections.singletonList(mapperId));
+ List<Long> roleIds = Func.toLongList(roleId);
+ args.addAll(roleIds);
+ // 澧炲姞searched瀛楁闃叉鏈厤缃殑鍙傛暟閲嶅璇诲簱瀵艰嚧缂撳瓨鍑荤┛
+ // 鍚庣画鑻ユ湁鏂板閰嶇疆鍒欎細娓呯┖缂撳瓨閲嶆柊鍔犺浇
+ DataScopeModel dataScope;
+ List<DataScopeModel> list = jdbcTemplate.query(DataScopeConstant.dataByMapper(roleIds.size()), args.toArray(), new BeanPropertyRowMapper<>(DataScopeModel.class));
+ if (CollectionUtil.isNotEmpty(list)) {
+ dataScope = list.iterator().next();
+ dataScope.setSearched(Boolean.TRUE);
+ } else {
+ dataScope = SEARCHED_DATA_SCOPE_MODEL;
+ }
+ return dataScope;
+ }
+
+ /**
+ * 鑾峰彇鏁版嵁鏉冮檺
+ *
+ * @param code 鏁版嵁鏉冮檺璧勬簮缂栧彿
+ * @return DataScopeModel
+ */
+ @Override
+ @GetMapping(GET_DATA_SCOPE_BY_CODE)
+ public DataScopeModel getDataScopeByCode(String code) {
+ // 澧炲姞searched瀛楁闃叉鏈厤缃殑鍙傛暟閲嶅璇诲簱瀵艰嚧缂撳瓨鍑荤┛
+ // 鍚庣画鑻ユ湁鏂板閰嶇疆鍒欎細娓呯┖缂撳瓨閲嶆柊鍔犺浇
+ DataScopeModel dataScope;
+ List<DataScopeModel> list = jdbcTemplate.query(DataScopeConstant.DATA_BY_CODE, new Object[]{code}, new BeanPropertyRowMapper<>(DataScopeModel.class));
+ if (CollectionUtil.isNotEmpty(list)) {
+ dataScope = list.iterator().next();
+ dataScope.setSearched(Boolean.TRUE);
+ } else {
+ dataScope = SEARCHED_DATA_SCOPE_MODEL;
+ }
+ return dataScope;
+ }
+
+ /**
+ * 鑾峰彇閮ㄩ棬瀛愮骇
+ *
+ * @param deptId 閮ㄩ棬id
+ * @return deptIds
+ */
+ @Override
+ @GetMapping(GET_DEPT_ANCESTORS)
+ public List<Long> getDeptAncestors(Long deptId) {
+ return jdbcTemplate.queryForList(DataScopeConstant.DATA_BY_DEPT, new Object[]{deptId}, Long.class);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java
new file mode 100644
index 0000000..7eb0cc3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+
+import com.vci.ubcs.system.service.IDictBizService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.DictBiz;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+
+/**
+ * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+public class DictBizClient implements IDictBizClient {
+
+ private final IDictBizService service;
+
+ @Override
+ @GetMapping(GET_BY_ID)
+ public R<DictBiz> getById(Long id) {
+ return R.data(service.getById(id));
+ }
+
+ @Override
+ @GetMapping(GET_VALUE)
+ public R<String> getValue(String code, String dictKey) {
+ return R.data(service.getValue(code, dictKey));
+ }
+
+ @Override
+ @GetMapping(GET_LIST)
+ public R<List<DictBiz>> getList(String code) {
+ return R.data(service.getList(code));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictClient.java
new file mode 100644
index 0000000..a3846d2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictClient.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+
+import com.vci.ubcs.system.service.IDictService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import com.vci.ubcs.system.entity.Dict;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+
+/**
+ * 瀛楀吀鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+public class DictClient implements IDictClient {
+
+ private final IDictService service;
+
+ @Override
+ @GetMapping(GET_BY_ID)
+ public R<Dict> getById(Long id) {
+ return R.data(service.getById(id));
+ }
+
+ @Override
+ @GetMapping(GET_VALUE)
+ public R<String> getValue(String code, String dictKey) {
+ return R.data(service.getValue(code, dictKey));
+ }
+
+ @Override
+ @GetMapping(GET_LIST)
+ public R<List<Dict>> getList(String code) {
+ return R.data(service.getList(code));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java
new file mode 100644
index 0000000..5f1dca7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.feign;
+
+import com.vci.ubcs.system.entity.*;
+import com.vci.ubcs.system.service.*;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+
+/**
+ * 绯荤粺鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+public class SysClient implements ISysClient {
+
+ private final IDeptService deptService;
+
+ private final IPostService postService;
+
+ private final IRoleService roleService;
+
+ private final IMenuService menuService;
+
+ private final ITenantService tenantService;
+
+ private final ITenantPackageService tenantPackageService;
+
+ private final IParamService paramService;
+
+ private final IRegionService regionService;
+
+ private final IStrategyService strategyService;
+
+ private final ICombinationService combinationService;
+
+ @Override
+ @GetMapping(MENU)
+ public R<Menu> getMenu(Long id) {
+ return R.data(menuService.getById(id));
+ }
+
+ @Override
+ @GetMapping(DEPT)
+ public R<Dept> getDept(Long id) {
+ return R.data(deptService.getById(id));
+ }
+
+ @Override
+ public R<String> getDeptIds(String tenantId, String deptNames) {
+ return R.data(deptService.getDeptIds(tenantId, deptNames));
+ }
+
+ @Override
+ public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
+ return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));
+ }
+
+ @Override
+ @GetMapping(DEPT_NAME)
+ public R<String> getDeptName(Long id) {
+ return R.data(deptService.getById(id).getDeptName());
+ }
+
+ @Override
+ @GetMapping(DEPT_NAMES)
+ public R<List<String>> getDeptNames(String deptIds) {
+ return R.data(deptService.getDeptNames(deptIds));
+ }
+
+ @Override
+ @GetMapping(DEPT_CHILD)
+ public R<List<Dept>> getDeptChild(Long deptId) {
+ return R.data(deptService.getDeptChild(deptId));
+ }
+
+ @Override
+ public R<Post> getPost(Long id) {
+ return R.data(postService.getById(id));
+ }
+
+ @Override
+ public R<String> getPostIds(String tenantId, String postNames) {
+ return R.data(postService.getPostIds(tenantId, postNames));
+ }
+
+ @Override
+ public R<String> getPostIdsByFuzzy(String tenantId, String postNames) {
+ return R.data(postService.getPostIdsByFuzzy(tenantId, postNames));
+ }
+
+ @Override
+ public R<String> getPostName(Long id) {
+ return R.data(postService.getById(id).getPostName());
+ }
+
+ @Override
+ public R<List<String>> getPostNames(String postIds) {
+ return R.data(postService.getPostNames(postIds));
+ }
+
+ @Override
+ @GetMapping(ROLE)
+ public R<Role> getRole(Long id) {
+ return R.data(roleService.getById(id));
+ }
+
+ @Override
+ public R<String> getRoleIds(String tenantId, String roleNames) {
+ return R.data(roleService.getRoleIds(tenantId, roleNames));
+ }
+
+ @Override
+ @GetMapping(ROLE_NAME)
+ public R<String> getRoleName(Long id) {
+ return R.data(roleService.getById(id).getRoleName());
+ }
+
+ @Override
+ @GetMapping(ROLE_ALIAS)
+ public R<String> getRoleAlias(Long id) {
+ return R.data(roleService.getById(id).getRoleAlias());
+ }
+
+ @Override
+ @GetMapping(ROLE_NAMES)
+ public R<List<String>> getRoleNames(String roleIds) {
+ return R.data(roleService.getRoleNames(roleIds));
+ }
+
+ @Override
+ @GetMapping(ROLE_ALIASES)
+ public R<List<String>> getRoleAliases(String roleIds) {
+ return R.data(roleService.getRoleAliases(roleIds));
+ }
+
+ @Override
+ @GetMapping(TENANT)
+ public R<Tenant> getTenant(Long id) {
+ return R.data(tenantService.getById(id));
+ }
+
+ @Override
+ @GetMapping(TENANT_ID)
+ public R<Tenant> getTenant(String tenantId) {
+ return R.data(tenantService.getByTenantId(tenantId));
+ }
+
+ @Override
+ @GetMapping(TENANT_PACKAGE)
+ public R<TenantPackage> getTenantPackage(String tenantId) {
+ Tenant tenant = tenantService.getByTenantId(tenantId);
+ return R.data(tenantPackageService.getById(tenant.getPackageId()));
+ }
+
+ @Override
+ @GetMapping(PARAM)
+ public R<Param> getParam(Long id) {
+ return R.data(paramService.getById(id));
+ }
+
+ @Override
+ @GetMapping(PARAM_VALUE)
+ public R<String> getParamValue(String paramKey) {
+ return R.data(paramService.getValue(paramKey));
+ }
+
+ @Override
+ @GetMapping(REGION)
+ public R<Region> getRegion(String code) {
+ return R.data(regionService.getById(code));
+ }
+
+ @Override
+ @PostMapping(STRATEGY)
+ public R<Strategy> getByTenantIdAndName(String tenantId, String name) {
+ return R.data(strategyService.queryByNameAndTenantId(tenantId,name));
+ }
+
+ @Override
+ @PostMapping(STRATEGYBYID)
+ public R<Strategy> getByUserId(Long userId) {
+ return R.data(strategyService.queryByUserId(userId));
+ }
+
+ @Override
+ @PostMapping(REGEX)
+ public R<String> getRegex(@RequestBody List<String> combinationIds) {
+ return R.data(combinationService.getRegex(combinationIds));
+ }
+
+ @Override
+ @PostMapping(REGEXONE)
+ public R<List<String>> getRegexByList(List<String> combinationIds) {
+ return R.data(combinationService.getRegexList(combinationIds));
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ApiScopeMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ApiScopeMapper.java
new file mode 100644
index 0000000..9a2d45a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ApiScopeMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.ApiScope;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface ApiScopeMapper extends BaseMapper<ApiScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/AuthClientMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/AuthClientMapper.java
new file mode 100644
index 0000000..d8720d5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/AuthClientMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.AuthClient;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface AuthClientMapper extends BaseMapper<AuthClient> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/CombinationMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/CombinationMapper.java
new file mode 100644
index 0000000..6c0dc74
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/CombinationMapper.java
@@ -0,0 +1,59 @@
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import com.vci.ubcs.system.entity.Combination;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:17
+ */
+public interface CombinationMapper extends BaseMapper<Combination> {
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ Combination queryById(String id);
+
+ /**
+ * 鑷畾涔夊垎椤�
+ * @param page
+ * @param combination
+ * @return
+ */
+ List<Combination> selectCombinationPage(IPage page, Combination combination);
+
+ /**
+ * 缁熻鎬昏鏁�
+ *
+ * @param combination 鏌ヨ鏉′欢
+ * @return 鎬昏鏁�
+ */
+ long count(Combination combination);
+
+ /**
+ * 鏌ヨ缁勫悎鏂瑰紡姝e垯
+ *
+ * @param combinationIds 鏌ヨ鏉′欢
+ * @return 鎬昏鏁�
+ */
+ String queryRegex(@Param("combinationIds") List<String> combinationIds);
+
+ /**
+ * 鏌ヨ缁勫悎鏂瑰紡瀵瑰簲姝e垯闆嗗悎
+ *
+ * @param combinationIds 鏌ヨ鏉′欢
+ * @return 鎬昏鏁�
+ */
+ List<String> queryRegexList(@Param("combinationIds") List<String> combinationIds);
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DataScopeMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DataScopeMapper.java
new file mode 100644
index 0000000..7b05aeb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DataScopeMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.DataScope;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface DataScopeMapper extends BaseMapper<DataScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DeptMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DeptMapper.java
new file mode 100644
index 0000000..ef7b5c0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DeptMapper.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.Dept;
+import com.vci.ubcs.system.vo.DeptVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * DeptMapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface DeptMapper extends BaseMapper<Dept> {
+
+ /**
+ * 鎳掑姞杞介儴闂ㄥ垪琛�
+ *
+ * @param tenantId
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @param tenantId
+ * @return
+ */
+ List<DeptVO> tree(String tenantId);
+
+ /**
+ * 鎳掑姞杞借幏鍙栨爲褰㈣妭鐐�
+ *
+ * @param tenantId
+ * @param parentId
+ * @return
+ */
+ List<DeptVO> lazyTree(String tenantId, Long parentId);
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚�
+ *
+ * @param ids
+ * @return
+ */
+ List<String> getDeptNames(Long[] ids);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictBizMapper.java
new file mode 100644
index 0000000..c7b5fac
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictBizMapper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.vo.DictBizVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface DictBizMapper extends BaseMapper<DictBiz> {
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<DictBiz> getList(String code);
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictBizVO> tree();
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictBizVO> parentTree();
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictMapper.java
new file mode 100644
index 0000000..cce81c9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/DictMapper.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.vo.DictVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface DictMapper extends BaseMapper<Dict> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param dict
+ * @return
+ */
+ List<DictVO> selectDictPage(IPage page, DictVO dict);
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<Dict> getList(String code);
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictVO> tree();
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @return
+ */
+ List<DictVO> parentTree();
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java
new file mode 100644
index 0000000..64bfdc7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/MenuMapper.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.core.tool.node.TreeNode;
+import com.vci.ubcs.system.dto.MenuDTO;
+import com.vci.ubcs.system.entity.Menu;
+import com.vci.ubcs.system.vo.MenuVO;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * MenuMapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface MenuMapper extends BaseMapper<Menu> {
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<MenuVO> lazyList(Long parentId, Map<String, Object> param);
+
+ /**
+ * 鎳掑姞杞借彍鍗曞垪琛�
+ *
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param);
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> tree();
+
+ /**
+ * 鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> grantTree();
+
+ /**
+ * 鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<TreeNode> grantTreeByRole(List<Long> roleId);
+
+ /**
+ * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> grantTopTree();
+
+ /**
+ * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<TreeNode> grantTopTreeByRole(List<Long> roleId);
+
+ /**
+ * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> grantDataScopeTree();
+
+ /**
+ * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> grantApiScopeTree();
+
+ /**
+ * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<TreeNode> grantDataScopeTreeByRole(List<Long> roleId);
+
+ /**
+ * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<TreeNode> grantApiScopeTreeByRole(List<Long> roleId);
+
+ /**
+ * 鎵�鏈夎彍鍗�
+ *
+ * @return
+ */
+ List<Menu> allMenu();
+
+ /**
+ * 鏉冮檺閰嶇疆鑿滃崟
+ *
+ * @param roleId
+ * @param topMenuId
+ * @return
+ */
+ List<Menu> roleMenu(List<Long> roleId, Long topMenuId);
+
+ /**
+ * 鏉冮檺閰嶇疆鑿滃崟
+ *
+ * @param roleId
+ * @return
+ */
+ List<Menu> roleMenuByRoleId(List<Long> roleId);
+
+ /**
+ * 鏉冮檺閰嶇疆鑿滃崟
+ *
+ * @param topMenuId
+ * @return
+ */
+ List<Menu> roleMenuByTopMenuId(Long topMenuId);
+
+ /**
+ * 鑿滃崟鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<Menu> routes(List<Long> roleId);
+
+ /**
+ * 鎸夐挳鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<Menu> allButtons();
+
+ /**
+ * 鎸夐挳鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<Menu> buttons(List<Long> roleId);
+
+ /**
+ * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
+ *
+ * @param roleIds
+ * @return
+ */
+ List<MenuDTO> authRoutes(List<Long> roleIds);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ParamMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ParamMapper.java
new file mode 100644
index 0000000..4d0b4f8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ParamMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.Param;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface ParamMapper extends BaseMapper<Param> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/PostMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/PostMapper.java
new file mode 100644
index 0000000..69f9c3f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/PostMapper.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.vo.PostVO;
+
+import java.util.List;
+
+/**
+ * 宀椾綅琛� Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface PostMapper extends BaseMapper<Post> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param post
+ * @return
+ */
+ List<PostVO> selectPostPage(IPage page, PostVO post);
+
+ /**
+ * 鑾峰彇宀椾綅鍚�
+ *
+ * @param ids
+ * @return
+ */
+ List<String> getPostNames(Long[] ids);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RegionMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RegionMapper.java
new file mode 100644
index 0000000..4114731
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RegionMapper.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.excel.RegionExcel;
+import org.apache.ibatis.annotations.Param;
+import com.vci.ubcs.system.entity.Region;
+import com.vci.ubcs.system.vo.RegionVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 琛屾斂鍖哄垝琛� Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface RegionMapper extends BaseMapper<Region> {
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentCode
+ * @param param
+ * @return
+ */
+ List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentCode
+ * @param param
+ * @return
+ */
+ List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
+
+ /**
+ * 瀵煎嚭鍖哄垝鏁版嵁
+ *
+ * @param queryWrapper
+ * @return
+ */
+ List<RegionExcel> exportRegion(@Param("ew") Wrapper<Region> queryWrapper);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java
new file mode 100644
index 0000000..adb4fa1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.entity.Role;
+import com.vci.ubcs.system.vo.RoleVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface RoleMapper extends BaseMapper<Role> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param role
+ * @return
+ */
+ List<RoleVO> selectRolePage(IPage page, RoleVO role);
+
+ /**
+ * 鑾峰彇鏍戝舰鑺傜偣
+ *
+ * @param tenantId
+ * @param excludeRole
+ * @return
+ */
+ List<RoleVO> tree(String tenantId, String excludeRole);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param ids
+ * @return
+ */
+ List<String> getRoleNames(Long[] ids);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param ids
+ * @return
+ */
+ List<String> getRoleAliases(Long[] ids);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMenuMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMenuMapper.java
new file mode 100644
index 0000000..22df822
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMenuMapper.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.entity.RoleMenu;
+import com.vci.ubcs.system.vo.RoleMenuVO;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ * @param page
+ * @param roleMenu
+ * @return
+ */
+ List<RoleMenuVO> selectRoleMenuPage(IPage page, RoleMenuVO roleMenu);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleScopeMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleScopeMapper.java
new file mode 100644
index 0000000..08d9108
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleScopeMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.RoleScope;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface RoleScopeMapper extends BaseMapper<RoleScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StrategyMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StrategyMapper.java
new file mode 100644
index 0000000..ca2b3b5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StrategyMapper.java
@@ -0,0 +1,52 @@
+package com.vci.ubcs.system.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import com.vci.ubcs.system.entity.Strategy;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:16:15
+ */
+public interface StrategyMapper extends BaseMapper<Strategy> {
+
+ /**
+ * 鏌ヨ鎸囧畾琛屾暟鎹�
+ *
+ * @param page 鍒嗛〉瀵硅薄
+ * @return 瀵硅薄鍒楄〃
+ */
+ List<Strategy> queryAllByPage(IPage page);
+
+ /**
+ * 缁熻鎬昏鏁�
+ *
+ * @param plSysStrategy 鏌ヨ鏉′欢
+ * @return 鎬昏鏁�
+ */
+ long count(Strategy plSysStrategy);
+
+ /**
+ * 鏍规嵁鐢ㄦ埛鍚嶄互鍙婄鎴稩D鏌ヨ瀵嗙爜绛栫暐
+ * @return
+ */
+ Strategy queryByNameAndTenantId(@Param("tenantId") String tenantId,@Param("name") String name);
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id杩涜鏌ヨ
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return 瀵硅薄
+ */
+ Strategy queryByUserId(@Param("userId") Long userId);
+
+ Strategy queryByIsDefault();
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantMapper.java
new file mode 100644
index 0000000..69435f1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantMapper.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.entity.Tenant;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface TenantMapper extends BaseMapper<Tenant> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param tenant
+ * @return
+ */
+ List<Tenant> selectTenantPage(IPage page, Tenant tenant);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantPackageMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantPackageMapper.java
new file mode 100644
index 0000000..8be9b49
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TenantPackageMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.TenantPackage;
+
+/**
+ * 绉熸埛浜у搧琛� Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface TenantPackageMapper extends BaseMapper<TenantPackage> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuMapper.java
new file mode 100644
index 0000000..08a4d65
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.TopMenu;
+
+/**
+ * 椤堕儴鑿滃崟琛� Mapper 鎺ュ彛
+ *
+ * @author BladeX
+ */
+public interface TopMenuMapper extends BaseMapper<TopMenu> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuSettingMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuSettingMapper.java
new file mode 100644
index 0000000..50da342
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/TopMenuSettingMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.TopMenuSetting;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface TopMenuSettingMapper extends BaseMapper<TopMenuSetting> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java
new file mode 100644
index 0000000..2c6eae0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java
@@ -0,0 +1,41 @@
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.UserPwdstrategy;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-22 15:24:46
+ */
+public interface UserPwdstrategyMapper extends BaseMapper<UserPwdstrategy> {
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ UserPwdstrategy queryById(Long id);
+
+ /**
+ * 淇敼鏁版嵁
+ *
+ * @param UserPwdstrategy 瀹炰緥瀵硅薄
+ * @return 褰卞搷琛屾暟
+ */
+ int update(UserPwdstrategy UserPwdstrategy);
+
+ /**
+ * 閫氳繃鐢ㄦ埛id杩涜鍒犻櫎鏁版嵁
+ *
+ * @param userIds 鐢ㄦ埛id
+ * @return 褰卞搷琛屾暟
+ */
+ int deleteByUserIds(List<Long> userIds);
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ValueRangeMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ValueRangeMapper.java
new file mode 100644
index 0000000..41cdb0f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/ValueRangeMapper.java
@@ -0,0 +1,43 @@
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.vci.ubcs.system.entity.ValueRange;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * (ValueRannge)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:25
+ */
+public interface ValueRangeMapper extends BaseMapper<ValueRange> {
+
+ /**
+ * 鏌ヨ鎸囧畾琛屾暟鎹�
+ *
+ * @param valueRannge 鏌ヨ鏉′欢
+ * @param pageable 鍒嗛〉瀵硅薄
+ * @return 瀵硅薄鍒楄〃
+ */
+ List<ValueRange> queryAllByLimit(ValueRange valueRannge, @Param("pageable") Pageable pageable);
+
+ /**
+ * 缁熻鎬昏鏁�
+ *
+ * @param valueRannge 鏌ヨ鏉′欢
+ * @return 鎬昏鏁�
+ */
+ long count(ValueRange valueRannge);
+
+
+ /**
+ * 鏍圭┒缁勫悎id鏌ヨ鍙栧��
+ * @return
+ */
+ List<String> queryByCombinationIds(@Param("combinationIds") List<String> combinationIds);
+
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IApiScopeService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IApiScopeService.java
new file mode 100644
index 0000000..344cc50
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IApiScopeService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.ApiScope;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface IApiScopeService extends BaseService<ApiScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IAuthClientService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IAuthClientService.java
new file mode 100644
index 0000000..f5f9e32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IAuthClientService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.AuthClient;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IAuthClientService extends BaseService<AuthClient> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ICombinationService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ICombinationService.java
new file mode 100644
index 0000000..a3aa8b9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ICombinationService.java
@@ -0,0 +1,71 @@
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.Combination;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:21
+ */
+public interface ICombinationService extends IService<Combination> {
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ Combination queryById(Long id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param combination 绛涢�夋潯浠�
+ * @param page 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page);
+
+ /**
+ * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
+ *
+ * @param combination 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ boolean submit(Combination combination);
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids
+ * @return 鏄惁鎴愬姛
+ */
+ boolean deleteByIds(List<String> ids);
+
+ /**
+ * 涓嬫媺鏁版嵁婧愭煡璇�
+ * 鏌ヨ缁勫悎id锛坘ey锛夛細缁勫悎鍚嶏紙value锛�
+ * @return
+ */
+ List<Map<String,Object>> selectMaps();
+
+ /**
+ * 鏌ヨ鎷兼帴瀹屾暣鐨勬鍒�
+ * @param combinationIds
+ * @return
+ */
+ String getRegex(List<String> combinationIds);
+
+ /**
+ * 鏍规嵁缁勫悎id鏌ヨ姝e垯闆嗗悎
+ * @param combinationIds
+ * @return
+ */
+ List<String> getRegexList(List<String> combinationIds);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDataScopeService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDataScopeService.java
new file mode 100644
index 0000000..64a511c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDataScopeService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.DataScope;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface IDataScopeService extends BaseService<DataScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDeptService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDeptService.java
new file mode 100644
index 0000000..2dc4d02
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDeptService.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.Dept;
+import com.vci.ubcs.system.vo.DeptVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IDeptService extends IService<Dept> {
+
+ /**
+ * 鎳掑姞杞介儴闂ㄥ垪琛�
+ *
+ * @param tenantId
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param);
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @param tenantId
+ * @return
+ */
+ List<DeptVO> tree(String tenantId);
+
+ /**
+ * 鎳掑姞杞芥爲褰㈢粨鏋�
+ *
+ * @param tenantId
+ * @param parentId
+ * @return
+ */
+ List<DeptVO> lazyTree(String tenantId, Long parentId);
+
+ /**
+ * 鑾峰彇閮ㄩ棬ID
+ *
+ * @param tenantId
+ * @param deptNames
+ * @return
+ */
+ String getDeptIds(String tenantId, String deptNames);
+
+ /**
+ * 鑾峰彇閮ㄩ棬ID
+ *
+ * @param tenantId
+ * @param deptNames
+ * @return
+ */
+ String getDeptIdsByFuzzy(String tenantId, String deptNames);
+
+ /**
+ * 鑾峰彇閮ㄩ棬鍚�
+ *
+ * @param deptIds
+ * @return
+ */
+ List<String> getDeptNames(String deptIds);
+
+ /**
+ * 鑾峰彇瀛愰儴闂�
+ *
+ * @param deptId
+ * @return
+ */
+ List<Dept> getDeptChild(Long deptId);
+
+ /**
+ * 鍒犻櫎閮ㄩ棬
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeDept(String ids);
+
+ /**
+ * 鎻愪氦
+ *
+ * @param dept
+ * @return
+ */
+ boolean submit(Dept dept);
+
+ /**
+ * 閮ㄩ棬淇℃伅鏌ヨ
+ *
+ * @param deptName
+ * @param parentId
+ * @return
+ */
+ List<DeptVO> search(String deptName, Long parentId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java
new file mode 100644
index 0000000..18d639f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.vo.DictBizVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IDictBizService extends IService<DictBiz> {
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictBizVO> tree();
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictBizVO> parentTree();
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<DictBiz> getList(String code);
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ *
+ * @param dict
+ * @return
+ */
+ boolean submit(DictBiz dict);
+
+ /**
+ * 鍒犻櫎瀛楀吀
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeDict(String ids);
+
+ /**
+ * 椤剁骇鍒楄〃
+ *
+ * @param dict
+ * @param query
+ * @return
+ */
+ IPage<DictBizVO> parentList(Map<String, Object> dict, Query query);
+
+ /**
+ * 瀛愬垪琛�
+ *
+ * @param dict
+ * @param parentId
+ * @return
+ */
+ List<DictBizVO> childList(Map<String, Object> dict, Long parentId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictService.java
new file mode 100644
index 0000000..973e655
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictService.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.vo.DictVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IDictService extends IService<Dict> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param dict
+ * @return
+ */
+ IPage<DictVO> selectDictPage(IPage<DictVO> page, DictVO dict);
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictVO> tree();
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<DictVO> parentTree();
+
+ /**
+ * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @param dictKey 瀛楀吀搴忓彿
+ * @return
+ */
+ String getValue(String code, String dictKey);
+
+ /**
+ * 鑾峰彇瀛楀吀琛�
+ *
+ * @param code 瀛楀吀缂栧彿
+ * @return
+ */
+ List<Dict> getList(String code);
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ *
+ * @param dict
+ * @return
+ */
+ boolean submit(Dict dict);
+
+ /**
+ * 鍒犻櫎瀛楀吀
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeDict(String ids);
+
+ /**
+ * 椤剁骇鍒楄〃
+ *
+ * @param dict
+ * @param query
+ * @return
+ */
+ IPage<DictVO> parentList(Map<String, Object> dict, Query query);
+
+ /**
+ * 瀛愬垪琛�
+ *
+ * @param dict
+ * @param parentId
+ * @return
+ */
+ List<DictVO> childList(Map<String, Object> dict, Long parentId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java
new file mode 100644
index 0000000..ea50eeb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tool.node.TreeNode;
+import org.springblade.core.tool.support.Kv;
+import com.vci.ubcs.system.entity.Menu;
+import com.vci.ubcs.system.vo.MenuVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IMenuService extends IService<Menu> {
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<MenuVO> lazyList(Long parentId, Map<String, Object> param);
+
+ /**
+ * 鎳掑姞杞借彍鍗曞垪琛�
+ *
+ * @param parentId
+ * @param param
+ * @return
+ */
+ List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param);
+
+ /**
+ * 鑿滃崟鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @param topMenuId
+ * @return
+ */
+ List<MenuVO> routes(String roleId, Long topMenuId);
+
+ /**
+ * 鎸夐挳鏍戝舰缁撴瀯
+ *
+ * @param roleId
+ * @return
+ */
+ List<MenuVO> buttons(String roleId);
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @return
+ */
+ List<TreeNode> tree();
+
+ /**
+ * 鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param user
+ * @return
+ */
+ List<TreeNode> grantTree(BladeUser user);
+
+ /**
+ * 椤堕儴鑿滃崟鏍戝舰缁撴瀯
+ *
+ * @param user
+ * @return
+ */
+ List<TreeNode> grantTopTree(BladeUser user);
+
+ /**
+ * 鏁版嵁鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param user
+ * @return
+ */
+ List<TreeNode> grantDataScopeTree(BladeUser user);
+
+ /**
+ * 鎺ュ彛鏉冮檺鎺堟潈鏍戝舰缁撴瀯
+ *
+ * @param user
+ * @return
+ */
+ List<TreeNode> grantApiScopeTree(BladeUser user);
+
+ /**
+ * 榛樿閫変腑鑺傜偣
+ *
+ * @param roleIds
+ * @return
+ */
+ List<String> roleTreeKeys(String roleIds);
+
+ /**
+ * 榛樿閫変腑鑺傜偣
+ *
+ * @param topMenuIds
+ * @return
+ */
+ List<String> topTreeKeys(String topMenuIds);
+
+ /**
+ * 榛樿閫変腑鑺傜偣
+ *
+ * @param roleIds
+ * @return
+ */
+ List<String> dataScopeTreeKeys(String roleIds);
+
+ /**
+ * 榛樿閫変腑鑺傜偣
+ *
+ * @param roleIds
+ * @return
+ */
+ List<String> apiScopeTreeKeys(String roleIds);
+
+ /**
+ * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
+ *
+ * @param user
+ * @return
+ */
+ List<Kv> authRoutes(BladeUser user);
+
+ /**
+ * 鍒犻櫎鑿滃崟
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeMenu(String ids);
+
+ /**
+ * 鎻愪氦
+ *
+ * @param menu
+ * @return
+ */
+ boolean submit(Menu menu);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IParamService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IParamService.java
new file mode 100644
index 0000000..8f95585
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IParamService.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.Param;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IParamService extends BaseService<Param> {
+
+ /**
+ * 鑾峰彇鍙傛暟鍊�
+ *
+ * @param paramKey 鍙傛暟key
+ * @return String
+ */
+ String getValue(String paramKey);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IPostService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IPostService.java
new file mode 100644
index 0000000..a41f327
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IPostService.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.vo.PostVO;
+
+import java.util.List;
+
+/**
+ * 宀椾綅琛� 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IPostService extends BaseService<Post> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param post
+ * @return
+ */
+ IPage<PostVO> selectPostPage(IPage<PostVO> page, PostVO post);
+
+ /**
+ * 鑾峰彇宀椾綅ID
+ *
+ * @param tenantId
+ * @param postNames
+ * @return
+ */
+ String getPostIds(String tenantId, String postNames);
+
+ /**
+ * 鑾峰彇宀椾綅ID
+ *
+ * @param tenantId
+ * @param postNames
+ * @return
+ */
+ String getPostIdsByFuzzy(String tenantId, String postNames);
+
+ /**
+ * 鑾峰彇宀椾綅鍚�
+ *
+ * @param postIds
+ * @return
+ */
+ List<String> getPostNames(String postIds);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRegionService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRegionService.java
new file mode 100644
index 0000000..57718cd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRegionService.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.excel.RegionExcel;
+import com.vci.ubcs.system.entity.Region;
+import com.vci.ubcs.system.vo.RegionVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 琛屾斂鍖哄垝琛� 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IRegionService extends IService<Region> {
+
+ /**
+ * 鎻愪氦
+ *
+ * @param region
+ * @return
+ */
+ boolean submit(Region region);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param id
+ * @return
+ */
+ boolean removeRegion(String id);
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentCode
+ * @param param
+ * @return
+ */
+ List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
+
+ /**
+ * 鎳掑姞杞藉垪琛�
+ *
+ * @param parentCode
+ * @param param
+ * @return
+ */
+ List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
+
+ /**
+ * 瀵煎叆鍖哄垝鏁版嵁
+ *
+ * @param data
+ * @param isCovered
+ * @return
+ */
+ void importRegion(List<RegionExcel> data, Boolean isCovered);
+
+ /**
+ * 瀵煎嚭鍖哄垝鏁版嵁
+ *
+ * @param queryWrapper
+ * @return
+ */
+ List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java
new file mode 100644
index 0000000..00ce0e1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.RoleMenu;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IRoleMenuService extends IService<RoleMenu> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleScopeService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleScopeService.java
new file mode 100644
index 0000000..75264ea
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleScopeService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.RoleScope;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IRoleScopeService extends IService<RoleScope> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java
new file mode 100644
index 0000000..d335036
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleService.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.Role;
+import com.vci.ubcs.system.vo.RoleVO;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IRoleService extends IService<Role> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param role
+ * @return
+ */
+ IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role);
+
+ /**
+ * 鏍戝舰缁撴瀯
+ *
+ * @param tenantId
+ * @return
+ */
+ List<RoleVO> tree(String tenantId);
+
+ /**
+ * 鏉冮檺閰嶇疆
+ *
+ * @param roleIds 瑙掕壊id闆嗗悎
+ * @param menuIds 鑿滃崟id闆嗗悎
+ * @param dataScopeIds 鏁版嵁鏉冮檺id闆嗗悎
+ * @param apiScopeIds 鎺ュ彛鏉冮檺id闆嗗悎
+ * @return 鏄惁鎴愬姛
+ */
+ boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds);
+
+ /**
+ * 鑾峰彇瑙掕壊ID
+ *
+ * @param tenantId
+ * @param roleNames
+ * @return
+ */
+ String getRoleIds(String tenantId, String roleNames);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param roleIds
+ * @return
+ */
+ List<String> getRoleNames(String roleIds);
+
+ /**
+ * 鑾峰彇瑙掕壊鍚�
+ *
+ * @param roleIds
+ * @return
+ */
+ List<String> getRoleAliases(String roleIds);
+
+ /**
+ * 鎻愪氦
+ *
+ * @param role
+ * @return
+ */
+ boolean submit(Role role);
+
+ /**
+ * 瑙掕壊淇℃伅鏌ヨ
+ *
+ * @param roleName
+ * @param parentId
+ * @return
+ */
+ List<RoleVO> search(String roleName, Long parentId);
+
+ /**
+ * 鍒犻櫎瑙掕壊
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeRole(String ids);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStrategyService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStrategyService.java
new file mode 100644
index 0000000..432935d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStrategyService.java
@@ -0,0 +1,72 @@
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.system.entity.Strategy;
+import org.springframework.data.domain.PageImpl;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:16:18
+ */
+public interface IStrategyService extends IService<Strategy> {
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ Strategy queryById(String id);
+
+ /**
+ * 鏌ヨ榛樿瀵嗙爜绛栫暐
+ *
+ * @return 瀹炰緥瀵硅薄
+ */
+ Strategy queryByIsDefault();
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param query 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ PageImpl<Strategy> queryAllByPage(Query query);
+
+ /**
+ * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
+ *
+ * @param strategy 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ boolean submit(Strategy strategy);
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鏄惁鎴愬姛
+ */
+ boolean deleteByIds(List<String> ids);
+
+ /**
+ * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣�
+ * @param tenantId
+ * @param name
+ * @return
+ */
+ Strategy queryByNameAndTenantId(String tenantId, String name);
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
+ * @param userId
+ * @return
+ */
+ Strategy queryByUserId(Long userId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantPackageService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantPackageService.java
new file mode 100644
index 0000000..cb07af1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantPackageService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.TenantPackage;
+
+/**
+ * 绉熸埛浜у搧琛� 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface ITenantPackageService extends BaseService<TenantPackage> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantService.java
new file mode 100644
index 0000000..ef98b4a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITenantService.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.Tenant;
+import com.vci.ubcs.system.vo.TenantVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ITenantService extends BaseService<Tenant> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param tenant
+ * @return
+ */
+ IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant);
+
+ /**
+ * 鏍规嵁绉熸埛缂栧彿鑾峰彇瀹炰綋
+ *
+ * @param tenantId
+ * @return
+ */
+ Tenant getByTenantId(String tenantId);
+
+ /**
+ * 鏂板
+ *
+ * @param tenant
+ * @return
+ */
+ boolean submitTenant(TenantVO tenant);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param ids
+ * @return
+ */
+ boolean removeTenant(List<Long> ids);
+
+ /**
+ * 閰嶇疆绉熸埛鎺堟潈
+ *
+ * @param accountNumber
+ * @param expireTime
+ * @param ids
+ * @return
+ */
+ //boolean setting(Integer accountNumber, Date expireTime, String ids);
+
+ /**
+ * 鏌ヨ绉熸埛id锛坘ey锛夛細绉熸埛鍚嶏紙value锛�
+ * @return
+ */
+ List<Map<String,Object>> selectMaps();
+
+ /**
+ * 鏌ヨ鏄惁閰嶇疆鏈夐粯璁ゅ繀椤诲紑鍚笁鍛樼鐞�
+ *
+ * @return
+ */
+ boolean findIsOpen();
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuService.java
new file mode 100644
index 0000000..9999858
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuService.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import org.springblade.core.mp.base.BaseService;
+import com.vci.ubcs.system.entity.TopMenu;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 椤堕儴鑿滃崟琛� 鏈嶅姟绫�
+ *
+ * @author BladeX
+ */
+public interface ITopMenuService extends BaseService<TopMenu> {
+
+ /**
+ * 椤堕儴鑿滃崟閰嶇疆
+ *
+ * @param topMenuIds 椤堕儴鑿滃崟id闆嗗悎
+ * @param menuIds 鑿滃崟id闆嗗悎
+ * @return 鏄惁鎴愬姛
+ */
+ boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuSettingService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuSettingService.java
new file mode 100644
index 0000000..d621189
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/ITopMenuSettingService.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.TopMenuSetting;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface ITopMenuSettingService extends IService<TopMenuSetting> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java
new file mode 100644
index 0000000..dd899be
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java
@@ -0,0 +1,34 @@
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.UserPwdstrategy;
+import com.vci.ubcs.system.vo.UserPwdstrategyVO;
+
+/**
+ * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-22 15:24:54
+ */
+public interface IUserPwdstrategyService extends IService<UserPwdstrategy> {
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ UserPwdstrategy queryById(Long id);
+
+ /**
+ * 鏂板鎴栦慨鏀规暟鎹�
+ *
+ * @param userPwdstrategyVO 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ Boolean submit(UserPwdstrategyVO userPwdstrategyVO);
+
+
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IValueRangeService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IValueRangeService.java
new file mode 100644
index 0000000..823854d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IValueRangeService.java
@@ -0,0 +1,56 @@
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.ValueRange;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.List;
+
+/**
+ * (ValueRange)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:27
+ */
+public interface IValueRangeService extends IService<ValueRange> {
+
+ /**
+ * 鍏ㄦ煡璇�
+ * @return
+ */
+ List<ValueRange> queryByAll();
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param valueRange 绛涢�夋潯浠�
+ * @param pageRequest 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest);
+
+ /**
+ * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
+ *
+ * @param valueRange 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ boolean submit(ValueRange valueRange);
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鏄惁鎴愬姛
+ */
+ boolean deleteByIds(List<String> ids);
+
+ /**
+ * 鑾峰彇鍙栧��
+ *
+ * @return 鏄惁鎴愬姛
+ */
+ List<String> getByAllString(List<String> combinationIds);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ApiScopeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ApiScopeServiceImpl.java
new file mode 100644
index 0000000..9138cd5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ApiScopeServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.vci.ubcs.system.mapper.ApiScopeMapper;
+import com.vci.ubcs.system.service.IApiScopeService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.ApiScope;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+public class ApiScopeServiceImpl extends BaseServiceImpl<ApiScopeMapper, ApiScope> implements IApiScopeService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/AuthClientServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/AuthClientServiceImpl.java
new file mode 100644
index 0000000..d8fe46f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/AuthClientServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.vci.ubcs.system.mapper.AuthClientMapper;
+import com.vci.ubcs.system.service.IAuthClientService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.AuthClient;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class AuthClientServiceImpl extends BaseServiceImpl<AuthClientMapper, AuthClient> implements IAuthClientService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/CombinationServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/CombinationServiceImpl.java
new file mode 100644
index 0000000..26da663
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/CombinationServiceImpl.java
@@ -0,0 +1,127 @@
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.CombinationMapper;
+import com.vci.ubcs.system.service.ICombinationService;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Combination;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:22
+ */
+@Service
+@Validated
+//@AllArgsConstructor
+public class CombinationServiceImpl extends ServiceImpl<CombinationMapper,Combination> implements ICombinationService {
+
+ @Resource
+ private CombinationMapper combinationMapper;
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ @Override
+ public Combination queryById(Long id) {
+ Combination combination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getId, id));
+ return combination;
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param combination 绛涢�夋潯浠�
+ * @param page 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page) {
+ return page.setRecords(combinationMapper.selectCombinationPage(page,combination));
+ }
+
+ /**
+ * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
+ *
+ * @param combination 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ @Override
+ public boolean submit(Combination combination) {
+ //鍒ゆ柇鏄惁鎼哄甫id
+ if(Func.isEmpty(combination.getId())){
+ //鏂板
+ Combination dbcombination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getName, combination.getName()));
+ //濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
+ if(!Func.isEmpty(dbcombination)){
+ throw new ServiceException("缁勫悎鍚嶇О宸插瓨鍦�!");
+ }
+ if(Func.isEmpty(combination.getCreateTime())){
+ combination.setCreateTime(new Date());
+ }
+ if(Func.isEmpty(combination.getUpdateTime())){
+ combination.setUpdateTime(new Date());
+ }
+ boolean temp = saveOrUpdate(combination);
+ return temp;
+ }else {
+ if(Func.isEmpty(combination.getUpdateTime())){
+ combination.setUpdateTime(new Date());
+ }
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return saveOrUpdate(combination);
+ }
+ }
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鏄惁鎴愬姛
+ */
+ @Override
+ public boolean deleteByIds(List<String> ids) {
+ boolean tenantTemp = this.removeBatchByIds(ids);
+ return tenantTemp;
+ }
+
+ /**
+ * 鏌ヨ瀵嗙爜缁勫悎id锛氱粍鍚堝悕锛岄敭鍊煎
+ *
+ * @return 閿�煎
+ */
+ @Override
+ public List<Map<String, Object>> selectMaps() {
+ List<Map<String, Object>> maps = listMaps(new QueryWrapper<Combination>().select("ID", "NAME"));
+ return maps;
+ }
+
+ @Override
+ public String getRegex(List<String> combinationIds) {
+ return combinationMapper.queryRegex(combinationIds);
+ }
+
+ @Override
+ public List<String> getRegexList(List<String> combinationIds) {
+ return combinationMapper.queryRegexList(combinationIds);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DataScopeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DataScopeServiceImpl.java
new file mode 100644
index 0000000..9165716
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DataScopeServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.vci.ubcs.system.mapper.DataScopeMapper;
+import com.vci.ubcs.system.service.IDataScopeService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.DataScope;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+public class DataScopeServiceImpl extends BaseServiceImpl<DataScopeMapper, DataScope> implements IDataScopeService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DeptServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DeptServiceImpl.java
new file mode 100644
index 0000000..b17f24f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DeptServiceImpl.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.DeptMapper;
+import com.vci.ubcs.system.service.IDeptService;
+import com.vci.ubcs.system.wrapper.DeptWrapper;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Dept;
+import com.vci.ubcs.system.vo.DeptVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
+
+ private static final String TENANT_ID = "tenantId";
+ private static final String PARENT_ID = "parentId";
+
+ @Override
+ public List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param) {
+ // 璁剧疆绉熸埛ID
+ if (AuthUtil.isAdministrator()) {
+ tenantId = StringPool.EMPTY;
+ }
+ String paramTenantId = Func.toStr(param.get(TENANT_ID));
+ if (Func.isNotEmpty(paramTenantId) && AuthUtil.isAdministrator()) {
+ tenantId = paramTenantId;
+ }
+ // 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
+ if (Func.isEmpty(param.get(PARENT_ID)) && param.size() == 1) {
+ parentId = 0L;
+ }
+ // 鍒ゆ柇鏁版嵁鏉冮檺鎺у埗,闈炶秴绠¤鑹插彧鍙湅鍒版湰绾у強浠ヤ笅鏁版嵁
+ if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
+ Long deptId = Func.firstLong(AuthUtil.getDeptId());
+ Dept dept = SysCache.getDept(deptId);
+ if (dept.getParentId() != 0) {
+ parentId = dept.getParentId();
+ }
+ }
+ // 鍒ゆ柇鐐瑰嚮鎼滅储甯︽湁鏌ヨ鏉′欢鐨勬儏鍐�
+ if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) {
+ parentId = null;
+ }
+ return baseMapper.lazyList(tenantId, parentId, param);
+ }
+
+
+ @Override
+ public List<DeptVO> tree(String tenantId) {
+ return ForestNodeMerger.merge(baseMapper.tree(tenantId));
+ }
+
+ @Override
+ public List<DeptVO> lazyTree(String tenantId, Long parentId) {
+ if (AuthUtil.isAdministrator()) {
+ tenantId = StringPool.EMPTY;
+ }
+ return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
+ }
+
+ @Override
+ public String getDeptIds(String tenantId, String deptNames) {
+ List<Dept> deptList = baseMapper.selectList(Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId).in(Dept::getDeptName, Func.toStrList(deptNames)));
+ if (deptList != null && deptList.size() > 0) {
+ return deptList.stream().map(dept -> Func.toStr(dept.getId())).distinct().collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public String getDeptIdsByFuzzy(String tenantId, String deptNames) {
+ LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda().eq(Dept::getTenantId, tenantId);
+ queryWrapper.and(wrapper -> {
+ List<String> names = Func.toStrList(deptNames);
+ names.forEach(name -> wrapper.like(Dept::getDeptName, name).or());
+ });
+ List<Dept> deptList = baseMapper.selectList(queryWrapper);
+ if (deptList != null && deptList.size() > 0) {
+ return deptList.stream().map(dept -> Func.toStr(dept.getId())).distinct().collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public List<String> getDeptNames(String deptIds) {
+ return baseMapper.getDeptNames(Func.toLongArray(deptIds));
+ }
+
+ @Override
+ public List<Dept> getDeptChild(Long deptId) {
+ return baseMapper.selectList(Wrappers.<Dept>query().lambda().like(Dept::getAncestors, deptId));
+ }
+
+ @Override
+ public boolean removeDept(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Dept>query().lambda().in(Dept::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+ @Override
+ public boolean submit(Dept dept) {
+ if (Func.isEmpty(dept.getParentId())) {
+ dept.setTenantId(AuthUtil.getTenantId());
+ dept.setParentId(BladeConstant.TOP_PARENT_ID);
+ dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
+ }
+ if (dept.getParentId() > 0) {
+ Dept parent = getById(dept.getParentId());
+ if (Func.toLong(dept.getParentId()) == Func.toLong(dept.getId())) {
+ throw new ServiceException("鐖惰妭鐐逛笉鍙�夋嫨鑷韩!");
+ }
+ dept.setTenantId(parent.getTenantId());
+ String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
+ dept.setAncestors(ancestors);
+ }
+ dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return saveOrUpdate(dept);
+ }
+
+ @Override
+ public List<DeptVO> search(String deptName, Long parentId) {
+ String tenantId = AuthUtil.getTenantId();
+ LambdaQueryWrapper<Dept> queryWrapper = Wrappers.<Dept>query().lambda();
+ if (Func.isNotEmpty(tenantId)) {
+ queryWrapper.eq(Dept::getTenantId, tenantId);
+ }
+ if (Func.isNotEmpty(deptName)) {
+ queryWrapper.like(Dept::getDeptName, deptName);
+ }
+ if (Func.isNotEmpty(parentId) && parentId > 0L) {
+ queryWrapper.eq(Dept::getParentId, parentId);
+ }
+ List<Dept> deptList = baseMapper.selectList(queryWrapper);
+ return DeptWrapper.build().listNodeVO(deptList);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java
new file mode 100644
index 0000000..7cbd967
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.DictBizMapper;
+import com.vci.ubcs.system.service.IDictBizService;
+import com.vci.ubcs.system.wrapper.DictBizWrapper;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.cache.DictBizCache;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.vo.DictBizVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBiz> implements IDictBizService {
+
+ @Override
+ public List<DictBizVO> tree() {
+ return ForestNodeMerger.merge(baseMapper.tree());
+ }
+
+ @Override
+ public List<DictBizVO> parentTree() {
+ return ForestNodeMerger.merge(baseMapper.parentTree());
+ }
+
+ @Override
+ public String getValue(String code, String dictKey) {
+ return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
+ }
+
+ @Override
+ public List<DictBiz> getList(String code) {
+ return baseMapper.getList(code);
+ }
+
+ @Override
+ public boolean submit(DictBiz dict) {
+ LambdaQueryWrapper<DictBiz> lqw = Wrappers.<DictBiz>query().lambda().eq(DictBiz::getCode, dict.getCode()).eq(DictBiz::getDictKey, dict.getDictKey());
+ Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBiz::getId, dict.getId()));
+ if (cnt > 0L) {
+ throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
+ }
+ // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
+ if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
+ DictBiz parent = DictBizCache.getById(dict.getId());
+ this.update(Wrappers.<DictBiz>update().lambda().set(DictBiz::getCode, dict.getCode()).eq(DictBiz::getCode, parent.getCode()).ne(DictBiz::getParentId, BladeConstant.TOP_PARENT_ID));
+ }
+ if (Func.isEmpty(dict.getParentId())) {
+ dict.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ CacheUtil.clear(DICT_CACHE);
+ return saveOrUpdate(dict);
+ }
+
+ @Override
+ public boolean removeDict(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<DictBiz>query().lambda().in(DictBiz::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+ @Override
+ public IPage<DictBizVO> parentList(Map<String, Object> dict, Query query) {
+ IPage<DictBiz> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictBiz.class).lambda().eq(DictBiz::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictBiz::getSort));
+ return DictBizWrapper.build().pageVO(page);
+ }
+
+ @Override
+ public List<DictBizVO> childList(Map<String, Object> dict, Long parentId) {
+ if (parentId < 0) {
+ return new ArrayList<>();
+ }
+ dict.remove("parentId");
+ DictBiz parentDict = DictBizCache.getById(parentId);
+ List<DictBiz> list = this.list(Condition.getQueryWrapper(dict, DictBiz.class).lambda().ne(DictBiz::getId, parentId).eq(DictBiz::getCode, parentDict.getCode()).orderByAsc(DictBiz::getSort));
+ return DictBizWrapper.build().listNodeVO(list);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictServiceImpl.java
new file mode 100644
index 0000000..c0a8a02
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictServiceImpl.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.DictMapper;
+import com.vci.ubcs.system.service.IDictService;
+import com.vci.ubcs.system.wrapper.DictWrapper;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.vo.DictVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements IDictService {
+
+ @Override
+ public IPage<DictVO> selectDictPage(IPage<DictVO> page, DictVO dict) {
+ return page.setRecords(baseMapper.selectDictPage(page, dict));
+ }
+
+ @Override
+ public List<DictVO> tree() {
+ return ForestNodeMerger.merge(baseMapper.tree());
+ }
+
+ @Override
+ public List<DictVO> parentTree() {
+ return ForestNodeMerger.merge(baseMapper.parentTree());
+ }
+
+ @Override
+ public String getValue(String code, String dictKey) {
+ return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
+ }
+
+ @Override
+ public List<Dict> getList(String code) {
+ return baseMapper.getList(code);
+ }
+
+ @Override
+ public boolean submit(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) {
+ throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
+ }
+ // 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
+ if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
+ Dict parent = DictCache.getById(dict.getId());
+ this.update(Wrappers.<Dict>update().lambda().set(Dict::getCode, dict.getCode()).eq(Dict::getCode, parent.getCode()).ne(Dict::getParentId, BladeConstant.TOP_PARENT_ID));
+ }
+ if (Func.isEmpty(dict.getParentId())) {
+ dict.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ CacheUtil.clear(DICT_CACHE, Boolean.FALSE);
+ return saveOrUpdate(dict);
+ }
+
+ @Override
+ public boolean removeDict(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Dict>query().lambda().in(Dict::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+ @Override
+ public IPage<DictVO> parentList(Map<String, Object> dict, Query query) {
+ IPage<Dict> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, Dict.class).lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(Dict::getSort));
+ return DictWrapper.build().pageVO(page);
+ }
+
+ @Override
+ public List<DictVO> childList(Map<String, Object> dict, Long parentId) {
+ if (parentId < 0) {
+ return new ArrayList<>();
+ }
+ dict.remove("parentId");
+ 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);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
new file mode 100644
index 0000000..b926374
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.dto.MenuDTO;
+import com.vci.ubcs.system.entity.*;
+import com.vci.ubcs.system.vo.MenuVO;
+import com.vci.ubcs.system.mapper.MenuMapper;
+import com.vci.ubcs.system.service.IMenuService;
+import com.vci.ubcs.system.service.IRoleMenuService;
+import com.vci.ubcs.system.service.IRoleScopeService;
+import com.vci.ubcs.system.service.ITopMenuSettingService;
+import com.vci.ubcs.system.wrapper.MenuWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.node.TreeNode;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.common.constant.CommonConstant.API_SCOPE_CATEGORY;
+import static com.vci.ubcs.common.constant.CommonConstant.DATA_SCOPE_CATEGORY;
+import static org.springblade.core.cache.constant.CacheConstant.MENU_CACHE;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@AllArgsConstructor
+public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {
+
+ private final IRoleMenuService roleMenuService;
+ private final IRoleScopeService roleScopeService;
+ private final ITopMenuSettingService topMenuSettingService;
+ private final static String PARENT_ID = "parentId";
+ private final static Integer MENU_CATEGORY = 1;
+
+ @Override
+ public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) {
+ if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
+ parentId = null;
+ }
+ return baseMapper.lazyList(parentId, param);
+ }
+
+ @Override
+ public List<MenuVO> lazyMenuList(Long parentId, Map<String, Object> param) {
+ if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) {
+ parentId = null;
+ }
+ return baseMapper.lazyMenuList(parentId, param);
+ }
+
+
+ @Override
+ public List<MenuVO> routes(String roleId, Long topMenuId) {
+ if (StringUtil.isBlank(roleId)) {
+ return null;
+ }
+ List<Menu> allMenus = baseMapper.allMenu();
+ List<Menu> roleMenus;
+ // 瓒呯骇绠$悊鍛樺苟涓斾笉鏄《閮ㄨ彍鍗曡姹傚垯杩斿洖鍏ㄩ儴鑿滃崟
+ if (AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
+ roleMenus = allMenus;
+ }
+ // 闈炶秴绾х鐞嗗憳骞朵笖涓嶆槸椤堕儴鑿滃崟璇锋眰鍒欒繑鍥炲搴旇鑹叉潈闄愯彍鍗�
+ else if (!AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
+ roleMenus = tenantPackageMenu(baseMapper.roleMenuByRoleId(Func.toLongList(roleId)));
+ }
+ // 椤堕儴鑿滃崟璇锋眰杩斿洖瀵瑰簲瑙掕壊鏉冮檺鑿滃崟
+ else {
+ // 瑙掕壊閰嶇疆瀵瑰簲鑿滃崟
+ List<Menu> roleIdMenus = baseMapper.roleMenuByRoleId(Func.toLongList(roleId));
+ // 鍙嶅悜閫掑綊瑙掕壊鑿滃崟鎵�鏈夌埗绾�
+ List<Menu> routes = new LinkedList<>(roleIdMenus);
+ roleIdMenus.forEach(roleMenu -> recursion(allMenus, routes, roleMenu));
+ // 椤堕儴閰嶇疆瀵瑰簲鑿滃崟
+ List<Menu> topIdMenus = baseMapper.roleMenuByTopMenuId(topMenuId);
+ // 绛涢�夊尮閰嶈鑹插搴旂殑鏉冮檺鑿滃崟
+ roleMenus = topIdMenus.stream().filter(x ->
+ routes.stream().anyMatch(route -> route.getId().longValue() == x.getId().longValue())
+ ).collect(Collectors.toList());
+ }
+ return buildRoutes(allMenus, roleMenus);
+ }
+
+ private List<MenuVO> buildRoutes(List<Menu> allMenus, List<Menu> roleMenus) {
+ List<Menu> routes = new LinkedList<>(roleMenus);
+ roleMenus.forEach(roleMenu -> recursion(allMenus, routes, roleMenu));
+ routes.sort(Comparator.comparing(Menu::getSort));
+ MenuWrapper menuWrapper = new MenuWrapper();
+ List<Menu> collect = routes.stream().filter(x -> Func.equals(x.getCategory(), 1)).collect(Collectors.toList());
+ return menuWrapper.listNodeVO(collect);
+ }
+
+ private void recursion(List<Menu> allMenus, List<Menu> routes, Menu roleMenu) {
+ Optional<Menu> menu = allMenus.stream().filter(x -> Func.equals(x.getId(), roleMenu.getParentId())).findFirst();
+ if (menu.isPresent() && !routes.contains(menu.get())) {
+ routes.add(menu.get());
+ recursion(allMenus, routes, menu.get());
+ }
+ }
+
+ @Override
+ public List<MenuVO> buttons(String roleId) {
+ List<Menu> buttons = (AuthUtil.isAdministrator()) ? baseMapper.allButtons() : baseMapper.buttons(Func.toLongList(roleId));
+ MenuWrapper menuWrapper = new MenuWrapper();
+ return menuWrapper.listNodeVO(buttons);
+ }
+
+ @Override
+ public List<TreeNode> tree() {
+ return ForestNodeMerger.merge(baseMapper.tree());
+ }
+
+ @Override
+ public List<TreeNode> grantTree(BladeUser user) {
+ List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()));
+ return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
+ }
+
+ @Override
+ public List<TreeNode> grantTopTree(BladeUser user) {
+ List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTopTree() : baseMapper.grantTopTreeByRole(Func.toLongList(user.getRoleId()));
+ return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId()));
+ }
+
+ /**
+ * 绉熸埛鑿滃崟鏉冮檺鑷畾涔夌瓫閫�
+ */
+ private List<TreeNode> tenantPackageTree(List<TreeNode> menuTree, String tenantId) {
+ TenantPackage tenantPackage = SysCache.getTenantPackage(tenantId);
+ if (!AuthUtil.isAdministrator() && Func.isNotEmpty(tenantPackage) && tenantPackage.getId() > 0L) {
+ List<Long> menuIds = Func.toLongList(tenantPackage.getMenuId());
+ // 绛涢�夊嚭涓よ�呰彍鍗曚氦闆嗛泦鍚�
+ List<TreeNode> collect = menuTree.stream().filter(x -> menuIds.contains(x.getId())).collect(Collectors.toList());
+ // 鍒涘缓閫掑綊鍩虹闆嗗悎
+ List<TreeNode> packageTree = new LinkedList<>(collect);
+ // 閫掑綊绛涢�夊嚭鑿滃崟闆嗗悎鎵�鏈夌埗绾�
+ collect.forEach(treeNode -> recursionParent(menuTree, packageTree, treeNode));
+ // 閫掑綊绛涢�夊嚭鑿滃崟闆嗗悎鎵�鏈夊瓙绾�
+ collect.forEach(treeNode -> recursionChild(menuTree, packageTree, treeNode));
+ // 鍚堝苟鍦ㄤ竴璧疯繑鍥炴渶缁堥泦鍚�
+ return packageTree;
+ }
+ return menuTree;
+ }
+
+ /**
+ * 鐖惰妭鐐归�掑綊
+ */
+ public void recursionParent(List<TreeNode> menuTree, List<TreeNode> packageTree, TreeNode treeNode) {
+ Optional<TreeNode> node = menuTree.stream().filter(x -> Func.equals(x.getId(), treeNode.getParentId())).findFirst();
+ if (node.isPresent() && !packageTree.contains(node.get())) {
+ packageTree.add(node.get());
+ recursionParent(menuTree, packageTree, node.get());
+ }
+ }
+
+ /**
+ * 瀛愯妭鐐归�掑綊
+ */
+ public void recursionChild(List<TreeNode> menuTree, List<TreeNode> packageTree, TreeNode treeNode) {
+ List<TreeNode> nodes = menuTree.stream().filter(x -> Func.equals(x.getParentId(), treeNode.getId())).collect(Collectors.toList());
+ nodes.forEach(node -> {
+ if (!packageTree.contains(node)) {
+ packageTree.add(node);
+ recursionChild(menuTree, packageTree, node);
+ }
+ });
+ }
+
+ /**
+ * 绉熸埛鑿滃崟鏉冮檺鑷畾涔夌瓫閫�
+ */
+ private List<Menu> tenantPackageMenu(List<Menu> menu) {
+ TenantPackage tenantPackage = SysCache.getTenantPackage(AuthUtil.getTenantId());
+ if (Func.isNotEmpty(tenantPackage) && tenantPackage.getId() > 0L) {
+ List<Long> menuIds = Func.toLongList(tenantPackage.getMenuId());
+ menu = menu.stream().filter(x -> menuIds.contains(x.getId())).collect(Collectors.toList());
+ }
+ return menu;
+ }
+
+ @Override
+ public List<TreeNode> grantDataScopeTree(BladeUser user) {
+ return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantDataScopeTree() : baseMapper.grantDataScopeTreeByRole(Func.toLongList(user.getRoleId())));
+ }
+
+ @Override
+ public List<TreeNode> grantApiScopeTree(BladeUser user) {
+ return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantApiScopeTree() : baseMapper.grantApiScopeTreeByRole(Func.toLongList(user.getRoleId())));
+ }
+
+ @Override
+ public List<String> roleTreeKeys(String roleIds) {
+ List<RoleMenu> roleMenus = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().in(RoleMenu::getRoleId, Func.toLongList(roleIds)));
+ return roleMenus.stream().map(roleMenu -> Func.toStr(roleMenu.getMenuId())).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<String> topTreeKeys(String topMenuIds) {
+ List<TopMenuSetting> settings = topMenuSettingService.list(Wrappers.<TopMenuSetting>query().lambda().in(TopMenuSetting::getTopMenuId, Func.toLongList(topMenuIds)));
+ return settings.stream().map(setting -> Func.toStr(setting.getMenuId())).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<String> dataScopeTreeKeys(String roleIds) {
+ List<RoleScope> roleScopes = roleScopeService.list(Wrappers.<RoleScope>query().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, Func.toLongList(roleIds)));
+ return roleScopes.stream().map(roleScope -> Func.toStr(roleScope.getScopeId())).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<String> apiScopeTreeKeys(String roleIds) {
+ List<RoleScope> roleScopes = roleScopeService.list(Wrappers.<RoleScope>query().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, Func.toLongList(roleIds)));
+ return roleScopes.stream().map(roleScope -> Func.toStr(roleScope.getScopeId())).collect(Collectors.toList());
+ }
+
+ @Override
+ @Cacheable(cacheNames = MENU_CACHE, key = "'auth:routes:' + #user.roleId")
+ public List<Kv> authRoutes(BladeUser user) {
+ List<MenuDTO> routes = baseMapper.authRoutes(Func.toLongList(user.getRoleId()));
+ List<Kv> list = new ArrayList<>();
+ routes.forEach(route -> list.add(Kv.create().set(route.getPath(), Kv.create().set("authority", Func.toStrArray(route.getAlias())))));
+ return list;
+ }
+
+ @Override
+ public boolean removeMenu(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Menu>query().lambda().in(Menu::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+ @Override
+ public boolean submit(Menu menu) {
+ LambdaQueryWrapper<Menu> menuQueryWrapper = Wrappers.lambdaQuery();
+ if (menu.getId() == null) {
+ menuQueryWrapper.eq(Menu::getCode, menu.getCode()).or(
+ wrapper -> wrapper.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
+ );
+ } else {
+ menuQueryWrapper.ne(Menu::getId, menu.getId()).and(
+ wrapper -> wrapper.eq(Menu::getCode, menu.getCode()).or(
+ o -> o.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
+ )
+ );
+ }
+ Long cnt = baseMapper.selectCount(menuQueryWrapper);
+ if (cnt > 0L) {
+ throw new ServiceException("鑿滃崟鍚嶆垨缂栧彿宸插瓨鍦�!");
+ }
+ if (menu.getParentId() == null && menu.getId() == null) {
+ menu.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ if (menu.getParentId() != null && menu.getId() == null) {
+ Menu parentMenu = baseMapper.selectById(menu.getParentId());
+ if (parentMenu != null && parentMenu.getCategory() != 1) {
+ throw new ServiceException("鐖惰妭鐐瑰彧鍙�夋嫨鑿滃崟绫诲瀷!");
+ }
+ }
+ menu.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return saveOrUpdate(menu);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ParamServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ParamServiceImpl.java
new file mode 100644
index 0000000..6cec8c6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ParamServiceImpl.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.mapper.ParamMapper;
+import com.vci.ubcs.system.service.IParamService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.Param;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class ParamServiceImpl extends BaseServiceImpl<ParamMapper, Param> implements IParamService {
+
+ @Override
+ public String getValue(String paramKey) {
+ Param param = this.getOne(Wrappers.<Param>query().lambda().eq(Param::getParamKey, paramKey));
+ return param.getParamValue();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/PostServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/PostServiceImpl.java
new file mode 100644
index 0000000..ac4abaa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/PostServiceImpl.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.mapper.PostMapper;
+import com.vci.ubcs.system.service.IPostService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.vo.PostVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 宀椾綅琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class PostServiceImpl extends BaseServiceImpl<PostMapper, Post> implements IPostService {
+
+ @Override
+ public IPage<PostVO> selectPostPage(IPage<PostVO> page, PostVO post) {
+ return page.setRecords(baseMapper.selectPostPage(page, post));
+ }
+
+ @Override
+ public String getPostIds(String tenantId, String postNames) {
+ List<Post> postList = baseMapper.selectList(Wrappers.<Post>query().lambda().eq(Post::getTenantId, tenantId).in(Post::getPostName, Func.toStrList(postNames)));
+ if (postList != null && postList.size() > 0) {
+ return postList.stream().map(post -> Func.toStr(post.getId())).distinct().collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public String getPostIdsByFuzzy(String tenantId, String postNames) {
+ LambdaQueryWrapper<Post> queryWrapper = Wrappers.<Post>query().lambda().eq(Post::getTenantId, tenantId);
+ queryWrapper.and(wrapper -> {
+ List<String> names = Func.toStrList(postNames);
+ names.forEach(name -> wrapper.like(Post::getPostName, name).or());
+ });
+ List<Post> postList = baseMapper.selectList(queryWrapper);
+ if (postList != null && postList.size() > 0) {
+ return postList.stream().map(post -> Func.toStr(post.getId())).distinct().collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public List<String> getPostNames(String postIds) {
+ return baseMapper.getPostNames(Func.toLongArray(postIds));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RegionServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RegionServiceImpl.java
new file mode 100644
index 0000000..0bb766a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RegionServiceImpl.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.RegionMapper;
+import com.vci.ubcs.system.service.IRegionService;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.system.entity.Region;
+import com.vci.ubcs.system.excel.RegionExcel;
+import com.vci.ubcs.system.vo.RegionVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.ubcs.system.cache.RegionCache.*;
+
+
+/**
+ * 琛屾斂鍖哄垝琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements IRegionService {
+
+ @Override
+ public boolean submit(Region region) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getCode, region.getCode()));
+ if (cnt > 0L) {
+ return this.updateById(region);
+ }
+ // 璁剧疆绁栧尯鍒掔紪鍙�
+ Region parent = getByCode(region.getParentCode());
+ if (Func.isNotEmpty(parent) || Func.isNotEmpty(parent.getCode())) {
+ String ancestors = parent.getAncestors() + StringPool.COMMA + parent.getCode();
+ region.setAncestors(ancestors);
+ }
+ // 璁剧疆鐪併�佸競銆佸尯銆侀晣銆佹潙
+ Integer level = region.getRegionLevel();
+ String code = region.getCode();
+ String name = region.getName();
+ if (level == PROVINCE_LEVEL) {
+ region.setProvinceCode(code);
+ region.setProvinceName(name);
+ } else if (level == CITY_LEVEL) {
+ region.setCityCode(code);
+ region.setCityName(name);
+ } else if (level == DISTRICT_LEVEL) {
+ region.setDistrictCode(code);
+ region.setDistrictName(name);
+ } else if (level == TOWN_LEVEL) {
+ region.setTownCode(code);
+ region.setTownName(name);
+ } else if (level == VILLAGE_LEVEL) {
+ region.setVillageCode(code);
+ region.setVillageName(name);
+ }
+ return this.save(region);
+ }
+
+ @Override
+ public boolean removeRegion(String id) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Region>query().lambda().eq(Region::getParentCode, id));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeById(id);
+ }
+
+ @Override
+ public List<RegionVO> lazyList(String parentCode, Map<String, Object> param) {
+ return baseMapper.lazyList(parentCode, param);
+ }
+
+ @Override
+ public List<RegionVO> lazyTree(String parentCode, Map<String, Object> param) {
+ return baseMapper.lazyTree(parentCode, param);
+ }
+
+ @Override
+ public void importRegion(List<RegionExcel> data, Boolean isCovered) {
+ List<Region> list = new ArrayList<>();
+ data.forEach(regionExcel -> {
+ Region region = BeanUtil.copy(regionExcel, Region.class);
+ list.add(region);
+ });
+ if (isCovered) {
+ this.saveOrUpdateBatch(list);
+ } else {
+ this.saveBatch(list);
+ }
+ }
+
+ @Override
+ public List<RegionExcel> exportRegion(Wrapper<Region> queryWrapper) {
+ return baseMapper.exportRegion(queryWrapper);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java
new file mode 100644
index 0000000..a29ea7c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.entity.RoleMenu;
+import com.vci.ubcs.system.mapper.RoleMenuMapper;
+import com.vci.ubcs.system.service.IRoleMenuService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements IRoleMenuService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleScopeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleScopeServiceImpl.java
new file mode 100644
index 0000000..9e973ab
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleScopeServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.entity.RoleScope;
+import com.vci.ubcs.system.mapper.RoleScopeMapper;
+import com.vci.ubcs.system.service.IRoleScopeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class RoleScopeServiceImpl extends ServiceImpl<RoleScopeMapper, RoleScope> implements IRoleScopeService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..d822084
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.RoleMapper;
+import com.vci.ubcs.system.service.IRoleMenuService;
+import com.vci.ubcs.system.service.IRoleScopeService;
+import com.vci.ubcs.system.service.IRoleService;
+import com.vci.ubcs.system.wrapper.RoleWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.constant.RoleConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Role;
+import com.vci.ubcs.system.entity.RoleMenu;
+import com.vci.ubcs.system.entity.RoleScope;
+import com.vci.ubcs.system.vo.RoleVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.common.constant.CommonConstant.API_SCOPE_CATEGORY;
+import static com.vci.ubcs.common.constant.CommonConstant.DATA_SCOPE_CATEGORY;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@Validated
+@AllArgsConstructor
+public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
+
+ private final IRoleMenuService roleMenuService;
+ private final IRoleScopeService roleScopeService;
+
+ @Override
+ public IPage<RoleVO> selectRolePage(IPage<RoleVO> page, RoleVO role) {
+ return page.setRecords(baseMapper.selectRolePage(page, role));
+ }
+
+ @Override
+ public List<RoleVO> tree(String tenantId) {
+ String userRole = AuthUtil.getUserRole();
+ String excludeRole = null;
+ if (!CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMIN) && !CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMINISTRATOR)) {
+ excludeRole = RoleConstant.ADMINISTRATOR;
+ }
+ return ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole));
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds) {
+ return grantRoleMenu(roleIds, menuIds) && grantDataScope(roleIds, dataScopeIds) && grantApiScope(roleIds, apiScopeIds);
+ }
+
+ private boolean grantRoleMenu(List<Long> roleIds, List<Long> menuIds) {
+ // 闃叉瓒婃潈閰嶇疆瓒呯瑙掕壊
+ Long administratorCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMINISTRATOR).in(Role::getId, roleIds));
+ if (!AuthUtil.isAdministrator() && administratorCount > 0L) {
+ throw new ServiceException("鏃犳潈閰嶇疆瓒呯瑙掕壊!");
+ }
+ // 闃叉瓒婃潈閰嶇疆绠$悊鍛樿鑹�
+ Long adminCount = baseMapper.selectCount(Wrappers.<Role>query().lambda().eq(Role::getRoleAlias, RoleConstant.ADMIN).in(Role::getId, roleIds));
+ if (!AuthUtil.isAdmin() && adminCount > 0L) {
+ throw new ServiceException("鏃犳潈閰嶇疆绠$悊鍛樿鑹�!");
+ }
+ // 鍒犻櫎瑙掕壊閰嶇疆鐨勮彍鍗曢泦鍚�
+ roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().in(RoleMenu::getRoleId, roleIds));
+ // 缁勮閰嶇疆
+ List<RoleMenu> roleMenus = new ArrayList<>();
+ roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
+ RoleMenu roleMenu = new RoleMenu();
+ roleMenu.setRoleId(roleId);
+ roleMenu.setMenuId(menuId);
+ roleMenus.add(roleMenu);
+ }));
+ // 鏂板閰嶇疆
+ roleMenuService.saveBatch(roleMenus);
+ // 閫掑綊璁剧疆涓嬪睘瑙掕壊鑿滃崟闆嗗悎
+ recursionRoleMenu(roleIds, menuIds);
+ return true;
+ }
+
+ private void recursionRoleMenu(List<Long> roleIds, List<Long> menuIds) {
+ roleIds.forEach(roleId -> baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getParentId, roleId)).forEach(role -> {
+ List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
+ // 瀛愯妭鐐硅繃婊ゅ嚭鐖惰妭鐐瑰垹闄ょ殑鑿滃崟闆嗗悎
+ List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
+ if (collectRoleMenuIds.size() > 0) {
+ // 鍒犻櫎瀛愯妭鐐规潈闄愬鐨勮彍鍗曢泦鍚�
+ roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
+ // 閫掑綊璁剧疆涓嬪睘瑙掕壊鑿滃崟闆嗗悎
+ recursionRoleMenu(Collections.singletonList(role.getId()), menuIds);
+ }
+ }));
+ }
+
+ private boolean grantDataScope(List<Long> roleIds, List<Long> dataScopeIds) {
+ // 鍒犻櫎瑙掕壊閰嶇疆鐨勬暟鎹潈闄愰泦鍚�
+ roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
+ // 缁勮閰嶇疆
+ List<RoleScope> roleDataScopes = new ArrayList<>();
+ roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
+ RoleScope roleScope = new RoleScope();
+ roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
+ roleScope.setRoleId(roleId);
+ roleScope.setScopeId(scopeId);
+ roleDataScopes.add(roleScope);
+ }));
+ // 鏂板閰嶇疆
+ roleScopeService.saveBatch(roleDataScopes);
+ return true;
+ }
+
+ private boolean grantApiScope(List<Long> roleIds, List<Long> apiScopeIds) {
+ // 鍒犻櫎瑙掕壊閰嶇疆鐨勬帴鍙f潈闄愰泦鍚�
+ roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
+ // 缁勮閰嶇疆
+ List<RoleScope> roleApiScopes = new ArrayList<>();
+ roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
+ RoleScope roleScope = new RoleScope();
+ roleScope.setScopeCategory(API_SCOPE_CATEGORY);
+ roleScope.setScopeId(scopeId);
+ roleScope.setRoleId(roleId);
+ roleApiScopes.add(roleScope);
+ }));
+ // 鏂板閰嶇疆
+ roleScopeService.saveBatch(roleApiScopes);
+ return true;
+ }
+
+ @Override
+ public String getRoleIds(String tenantId, String roleNames) {
+ List<Role> roleList = baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getTenantId, tenantId).in(Role::getRoleName, Func.toStrList(roleNames)));
+ if (roleList != null && roleList.size() > 0) {
+ return roleList.stream().map(role -> Func.toStr(role.getId())).distinct().collect(Collectors.joining(","));
+ }
+ return null;
+ }
+
+ @Override
+ public List<String> getRoleNames(String roleIds) {
+ return baseMapper.getRoleNames(Func.toLongArray(roleIds));
+ }
+
+ @Override
+ public List<String> getRoleAliases(String roleIds) {
+ return baseMapper.getRoleAliases(Func.toLongArray(roleIds));
+ }
+
+ @Override
+ public boolean submit(Role role) {
+ if (!AuthUtil.isAdministrator()) {
+ if (Func.toStr(role.getRoleAlias()).equals(RoleConstant.ADMINISTRATOR)) {
+ throw new ServiceException("鏃犳潈闄愬垱寤鸿秴绠¤鑹诧紒");
+ }
+ }
+ if (Func.isEmpty(role.getParentId())) {
+ role.setTenantId(AuthUtil.getTenantId());
+ role.setParentId(BladeConstant.TOP_PARENT_ID);
+ }
+ if (role.getParentId() > 0) {
+ Role parent = getById(role.getParentId());
+ if (Func.toLong(role.getParentId()) == Func.toLong(role.getId())) {
+ throw new ServiceException("鐖惰妭鐐逛笉鍙�夋嫨鑷韩!");
+ }
+ role.setTenantId(parent.getTenantId());
+ }
+ role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return saveOrUpdate(role);
+ }
+
+ @Override
+ public List<RoleVO> search(String roleName, Long parentId) {
+ String tenantId = AuthUtil.getTenantId();
+ LambdaQueryWrapper<Role> queryWrapper = Wrappers.<Role>query().lambda();
+ if (Func.isNotEmpty(roleName)) {
+ queryWrapper.like(Role::getRoleName, roleName);
+ }
+ if (Func.isNotEmpty(parentId) && parentId > 0L) {
+ queryWrapper.eq(Role::getParentId, parentId);
+ }
+ if (Func.isNotEmpty(tenantId)) {
+ queryWrapper.eq(Role::getTenantId, tenantId);
+ }
+ List<Role> roleList = baseMapper.selectList(queryWrapper);
+ return RoleWrapper.build().listNodeVO(roleList);
+ }
+
+ @Override
+ public boolean removeRole(String ids) {
+ Long cnt = baseMapper.selectCount(Wrappers.<Role>query().lambda().in(Role::getParentId, Func.toLongList(ids)));
+ if (cnt > 0L) {
+ throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+ }
+ return removeByIds(Func.toLongList(ids));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..8673d59
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,177 @@
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.common.constant.CommonConstant;
+import com.vci.ubcs.system.mapper.StrategyMapper;
+import com.vci.ubcs.system.service.IStrategyService;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.Strategy;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 瀵嗙爜绛栫暐(Strategy)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:25:05
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl<StrategyMapper, Strategy> implements IStrategyService {
+
+ @Resource
+ private StrategyMapper strategyMapper;
+
+ /**
+ * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+ *
+ * @param id 涓婚敭
+ * @return 瀹炰緥瀵硅薄
+ */
+ @Override
+ public Strategy queryById(String id) {
+ return this.getById(id);
+ }
+
+ /**
+ * 鏌ヨ榛樿瀵嗙爜绛栫暐
+ * @return
+ */
+ @Override
+ public Strategy queryByIsDefault() {
+ return this.strategyMapper.queryByIsDefault();
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param query 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public PageImpl<Strategy> queryAllByPage(Query query) {
+ Page<Strategy> strategyPage = new Page<>(query.getCurrent(), query.getSize());
+ return new PageImpl<>(this.strategyMapper.queryAllByPage(strategyPage));
+ }
+
+ /**
+ * 鏂板鏁版嵁鎴栬�呬慨鏀规暟鎹�
+ *
+ * @param strategy 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ @Override
+ public boolean submit(Strategy strategy) {
+ //鍒ゆ柇鏄惁鎼哄甫id
+ if(Func.isEmpty(strategy.getId())){
+ //鎵ц鏂板
+ Strategy dbstrategy = this.getOne(Wrappers.<Strategy>query().lambda()
+ .eq(Strategy::getStrategyName, strategy.getStrategyName()));
+ //濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
+ if(!Func.isEmpty(dbstrategy)){
+ throw new ServiceException("璇ュ瘑鐮佺瓥鐣ュ凡瀛樺湪!");
+ }
+ //濡傛灉褰撳墠鏂板璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
+ if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
+ this.update(Wrappers.<Strategy>update().lambda()
+ .set(Strategy::getIsDefault, CommonConstant.NOT_SEALED_ID)
+ .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
+ }
+ if(strategy.getRequiredType() > 0){
+ throw new ServiceException("蹇呭~绉嶇被涓嶈兘灏忎簬绛変簬0!");
+ }
+ if(strategy.getRequiredType() > strategy.getCombinationIds().split(",").length){
+ throw new ServiceException("蹇呭~绉嶇被涓嶈兘澶т簬鎵�閫夋嫨鐨勫瘑鐮佺粍鍚堟柟寮忕殑涓暟!");
+ }
+ if(strategy.getMaxPwdLen() > strategy.getMinPwdLen()){
+ throw new ServiceException("瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庢渶灏忛暱搴�!");
+ }
+ if(strategy.getMinPwdLen() < strategy.getCombinationIds().split(",").length || strategy.getMaxPwdLen() < strategy.getCombinationIds().split(",").length){
+ throw new ServiceException("瀵嗙爜鏈�灏忛暱搴︿笉鑳藉皬浜庣瀵嗙瓥鐣ョ殑鍊�!");
+ }
+ if(Func.isEmpty(strategy.getCreateTime())){
+ strategy.setCreateTime(new Date());
+ }
+ if(Func.isEmpty(strategy.getUpdateTime())){
+ strategy.setUpdateTime(new Date());
+ }
+ boolean temp = super.saveOrUpdate(strategy);
+ return temp;
+ }else {
+ //濡傛灉褰撳墠淇敼璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
+ if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
+ this.update(Wrappers.<Strategy>update().lambda()
+ .set(Strategy::getIsDefault,CommonConstant.NOT_SEALED_ID)
+ .eq(Strategy::getIsDefault,CommonConstant.DATA_SCOPE_CATEGORY));
+ }else {
+ if(Func.isEmpty(queryByIsDefault())){
+ throw new ServiceException("榛樿瀵嗙爜绛栫暐蹇呴』鏈変笖浠呮湁涓�鏉�!");
+ }
+ }
+ if(Func.isEmpty(strategy.getUpdateTime())){
+ strategy.setUpdateTime(new Date());
+ }
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return super.saveOrUpdate(strategy);
+ }
+ }
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鏄惁鎴愬姛
+ */
+ @Override
+ public boolean deleteByIds(List<String> ids) {
+ Strategy strategy = this.getOne(Wrappers.<Strategy>query().lambda()
+ .in(Strategy::getId,ids)
+ .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
+ //濡傛灉瀛樺湪榛樿绛栫暐鐨刬d锛屽氨涓嶈兘鐩存帴鍒犻櫎缁欏嚭鎻愮ず
+ if(!Func.isEmpty(strategy)){
+ throw new ServiceException("涓嶈兘鍒犻櫎榛樿瀵嗙爜绛栫暐!");
+ }
+ boolean tenantTemp = this.removeBatchByIds(ids);
+ return tenantTemp;
+ }
+
+ /**
+ * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣�
+ * @param tenantId
+ * @param name
+ * @return
+ */
+ @Override
+ public Strategy queryByNameAndTenantId(String tenantId, String name) {
+ Strategy strategy = this.strategyMapper.queryByNameAndTenantId(tenantId,name);
+ if(!Func.isEmpty(strategy)){
+ return strategy;
+ }
+ return queryByIsDefault();
+ }
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
+ * @param userId
+ * @return
+ */
+ @Override
+ public Strategy queryByUserId(Long userId) {
+ Strategy strategy = this.strategyMapper.queryByUserId(userId);
+ if(!Func.isEmpty(strategy)){
+ return strategy;
+ }
+ return queryByIsDefault();
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantPackageServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantPackageServiceImpl.java
new file mode 100644
index 0000000..6c77129
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantPackageServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.vci.ubcs.system.mapper.TenantPackageMapper;
+import com.vci.ubcs.system.service.ITenantPackageService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.TenantPackage;
+import org.springframework.stereotype.Service;
+
+/**
+ * 绉熸埛浜у搧琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+public class TenantPackageServiceImpl extends BaseServiceImpl<TenantPackageMapper, TenantPackage> implements ITenantPackageService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantServiceImpl.java
new file mode 100644
index 0000000..b4b22d4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TenantServiceImpl.java
@@ -0,0 +1,337 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.entity.*;
+import com.vci.ubcs.system.mapper.TenantMapper;
+import com.vci.ubcs.system.service.*;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.enums.UserEnum;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import lombok.RequiredArgsConstructor;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tenant.TenantId;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.system.cache.ParamCache;
+
+import com.vci.ubcs.system.vo.TenantVO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.common.constant.TenantConstant.*;
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@RequiredArgsConstructor
+public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> implements ITenantService {
+
+ private final TenantId tenantId;
+ private final IRoleService roleService;
+ private final IMenuService menuService;
+ private final IDeptService deptService;
+ private final IPostService postService;
+ private final IRoleMenuService roleMenuService;
+ private final IDictBizService dictBizService;
+ private final IUserClient userClient;
+ private final IStrategyService strategyService;
+ private final IUserPwdstrategyService userPwdstrategyService;
+
+ /**
+ * 鑾峰彇鏄惁鍏佽鑷鎺у埗涓夊憳鏄惁寮�鍚�
+ */
+ @Value("${ssa.ssa-enable}")
+ private Boolean ssaEnable;
+ /**
+ * 鑾峰彇榛樿涓夊憳绠$悊鍛樼殑鍚嶇О
+ */
+ @Value("#{'${ssa.ssa-names}'.split(',')}")
+ private List<String> ssaNames;
+ /**
+ * 涓夊憳绠$悊鑿滃崟閰嶇疆
+ */
+ @Value("#{'${ssa.sys-menus}'.split(',')}")
+ private List<String> sysMenus;
+ @Value("#{'${ssa.sec-menus}'.split(',')}")
+ private List<String> secMenus;
+ @Value("#{'${ssa.audit-menus}'.split(',')}")
+ private List<String> auditMenus;
+
+ @Override
+ public IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant) {
+ return page.setRecords(baseMapper.selectTenantPage(page, tenant));
+ }
+
+ @Override
+ public Tenant getByTenantId(String tenantId) {
+ return getOne(Wrappers.<Tenant>query().lambda().eq(Tenant::getTenantId, tenantId));
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean submitTenant(TenantVO tenant) {
+ if (Func.isEmpty(tenant.getId())) {
+ // 鑾峰彇鍒版湭鍒犻櫎绉熸埛鎬绘暟锛岀敓鎴愭柊鐨勭鎴穒d
+ List<Tenant> tenants = baseMapper.selectList(Wrappers.<Tenant>query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
+ String tenantId = getTenantId(codes);
+ tenant.setTenantId(tenantId);
+ // 閰嶇疆涓篺alse锛屽苟涓斿墠绔紶杈撶殑鍙傛暟涓�1(鏈�夋嫨寮�鍚�)灏变笉闇�瑕佸垱寤轰笁鍛�
+ if(!this.ssaEnable && tenant.getSsaEnable()==1){
+ // 涓嶅紑鍚笁鍛樼鐞嗘椂鐩存帴鍒涘缓涓�涓渶楂樻潈闄愮殑绠$悊鍛�
+ Role role = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瓒呯骇绠$悊鍛�",1,"admin",BladeConstant.DB_NOT_DELETED);
+ roleService.save(role);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
+ saveRoleMenus(role, MENU_CODES);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
+ Dept dept = generateDept(tenantId, tenant);
+ deptService.save(dept);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
+ Post postInfo = generatePost(tenantId, 1, "admin", "绠$悊鍛�", 1);
+ postService.save(postInfo);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
+ LinkedList<DictBiz> dictBizs = new LinkedList<>();
+ List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
+ dictBizService.saveBatch(dictBizList);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ょ鐞嗙敤
+ User user = generateUser(tenantId, role, dept, postInfo);
+ // 鍏堜繚瀛樼鎴�
+ boolean temp = super.saveOrUpdate(tenant);
+ // 鍒涘缓鐢ㄦ埛
+ R<Boolean> result = userClient.saveUser(user);
+ //鐢熸垚鐢ㄦ埛瀵嗙爜绛栫暐绠$悊璁板綍
+ if (!result.isSuccess()) {
+ throw new ServiceException(result.getMsg());
+ }
+ return temp;
+ }else {
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁よ鑹�
+ List<Role> roles = new ArrayList<>();
+ Role roleSys = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"绯荤粺绠$悊鍛�",1,this.ssaNames.get(0),BladeConstant.DB_NOT_DELETED);
+ Role roleSec = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹夊叏绠$悊鍛�",2,this.ssaNames.get(1),BladeConstant.DB_NOT_DELETED);
+ Role roleAudit = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹¤绠$悊鍛�",3,this.ssaNames.get(2),BladeConstant.DB_NOT_DELETED);
+ roles.add(roleSys);
+ roles.add(roleSec);
+ roles.add(roleAudit);
+ roleService.saveBatch(roles);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
+ saveRoleMenus(roleSys,this.sysMenus); //绯荤粺绠$悊鍛樿鑹茶彍鍗曟潈闄�
+ saveRoleMenus(roleSec,this.secMenus); //瀹夊叏绠$悊鍛樿鑹茶彍鍗曟潈闄�
+ saveRoleMenus(roleAudit,this.auditMenus); //瀹¤绠$悊鍛樿鑹茶彍鍗曟潈闄�
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
+ Dept dept = generateDept(tenantId, tenant);
+ deptService.save(dept);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
+ Post postSys = generatePost(tenantId, 1, this.ssaNames.get(0), "绯荤粺绠$悊鍛�", 1);
+ Post postSec = generatePost(tenantId,1,this.ssaNames.get(1),"瀹夊叏绠$悊鍛�",4);
+ Post postAudit = generatePost(tenantId,1,this.ssaNames.get(2),"瀹¤绠$悊鍛�",5);
+ postService.saveBatch(Arrays.asList(postSys,postSec,postAudit));
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
+ LinkedList<DictBiz> dictBizs = new LinkedList<>();
+ List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
+ dictBizService.saveBatch(dictBizList);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ょ鐞嗙敤鎴�
+ User userSys = generateUser(tenantId, roleSys, dept, postSys);
+ User userSec = generateUser(tenantId,roleSec,dept,postSec);
+ User userAudit = generateUser(tenantId,roleAudit,dept,postAudit);
+ // 鍏堜繚瀛樼鎴�
+ boolean temp = super.saveOrUpdate(tenant);
+ // 鍒涘缓鐢ㄦ埛
+ R<Boolean> result = userClient.saveUserList(Arrays.asList(userSys,userSec,userAudit));
+ if (!result.isSuccess()) {
+ throw new ServiceException(result.getMsg());
+ }
+ return temp;
+ }
+ } else {
+ CacheUtil.clear(SYS_CACHE, tenant.getTenantId());
+ return super.saveOrUpdate(tenant);
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean removeTenant(List<Long> ids) {
+ List<String> tenantIds = this.list(Wrappers.<Tenant>query().lambda().in(Tenant::getId, ids))
+ .stream().map(tenant -> Func.toStr(tenant.getTenantId())).distinct().collect(Collectors.toList());
+ CacheUtil.clear(SYS_CACHE, tenantIds);
+ if (tenantIds.contains(BladeConstant.ADMIN_TENANT_ID)) {
+ throw new ServiceException("涓嶅彲鍒犻櫎绠$悊绉熸埛!");
+ }
+ boolean tenantTemp = this.deleteLogic(ids);
+ R<Boolean> result = userClient.removeUser(StringUtil.join(tenantIds));
+ if (!result.isSuccess()) {
+ throw new ServiceException(result.getMsg());
+ }
+ return tenantTemp;
+ }
+
+ @Override
+ public List<Map<String,Object>> selectMaps(){
+ List<Map<String, Object>> maps = listMaps(new QueryWrapper<Tenant>().select("TENANT_ID", "TENANT_NAME"));
+ return maps;
+ }
+
+ @Override
+ public boolean findIsOpen() {
+ return this.ssaEnable;
+ }
+
+ /**
+ * 鍒涘缓绉熸埛涓嬬殑榛樿宀椾綅
+ * @param tenantId
+ * @param sort
+ */
+ private Post generatePost(String tenantId,Integer categ,String postCode,String postName,Integer sort){
+ Post post = new Post();
+ post.setTenantId(tenantId);
+ post.setCategory(categ);
+ post.setPostCode(postCode);
+ post.setPostName(postName);
+ post.setSort(sort);
+ return post;
+ }
+
+ /**
+ * 鍒涘缓榛樿鐢ㄦ埛锛屽苟杩涜鐩稿叧鏉冮檺璁剧疆
+ */
+ private User generateUser(String tenantId, Role role, Dept dept, Post post){
+ User user = new User();
+ user.setTenantId(tenantId);
+ user.setName(role.getRoleAlias());
+ 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);
+ user.setRoleId(String.valueOf(role.getId()));
+ user.setDeptId(String.valueOf(dept.getId()));
+ user.setPostId(String.valueOf(post.getId()));
+ user.setBirthday(new Date());
+ user.setSex(1);
+ user.setUserType(UserEnum.WEB.getCategory());
+ user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return user;
+ }
+
+ /**
+ * 淇濆瓨鐢ㄦ埛瀵瑰簲鐨勫叧鑱斾俊鎭�
+ * @param role
+ */
+ private void saveRoleMenus(Role role,List<String> stringMenus){
+ LinkedList<Menu> userMenus = new LinkedList<>();
+ // 鑾峰彇鍙傛暟閰嶇疆鐨勯粯璁よ彍鍗曢泦鍚堬紝閫楀彿闅斿紑
+ //List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
+ List<Menu> menus = getMenus((stringMenus), userMenus);
+ List<RoleMenu> roleMenus = new ArrayList<>();
+ //鍒涘缓鎵�鏈夎彍鍗曡鑹插叧鑱斿璞�
+ menus.forEach(menu -> {
+ roleMenus.add(new RoleMenu(menu.getId(),role.getId()));
+ });
+ roleMenuService.saveBatch(roleMenus);
+ }
+
+ /**
+ * 鍒涘缓榛樿閮ㄩ棬
+ * @param tenantId
+ * @param tenant
+ */
+ private Dept generateDept(String tenantId,Tenant tenant){
+ Dept dept = new Dept();
+ dept.setTenantId(tenantId);
+ dept.setParentId(BladeConstant.TOP_PARENT_ID);
+ dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
+ dept.setDeptName(tenant.getTenantName());
+ dept.setFullName(tenant.getTenantName());
+ dept.setDeptCategory(1);
+ dept.setSort(2);
+ dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+ return dept;
+ }
+
+ private String getTenantId(List<String> codes) {
+ String code = tenantId.generate();
+ if (codes.contains(code)) {
+ return getTenantId(codes);
+ }
+ return code;
+ }
+
+ private List<Menu> getMenus(List<String> codes, LinkedList<Menu> menus) {
+ codes.forEach(code -> {
+ Menu menu = menuService.getOne(Wrappers.<Menu>query().lambda().eq(Menu::getCode, code).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ if (menu != null) {
+ menus.add(menu);
+ recursionMenu(menu.getId(), menus);
+ }
+ });
+ return menus;
+ }
+
+ private void recursionMenu(Long parentId, LinkedList<Menu> menus) {
+ List<Menu> menuList = menuService.list(Wrappers.<Menu>query().lambda().eq(Menu::getParentId, parentId).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ menus.addAll(menuList);
+ menuList.forEach(menu -> recursionMenu(menu.getId(), menus));
+ }
+
+ private List<DictBiz> getDictBizs(String tenantId, LinkedList<DictBiz> dictBizs) {
+ List<DictBiz> dictBizList = dictBizService.list(Wrappers.<DictBiz>query().lambda().eq(DictBiz::getParentId, BladeConstant.TOP_PARENT_ID).eq(DictBiz::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ dictBizList.forEach(dictBiz -> {
+ Long oldParentId = dictBiz.getId();
+ Long newParentId = IdWorker.getId();
+ dictBiz.setId(newParentId);
+ dictBiz.setTenantId(tenantId);
+ dictBizs.add(dictBiz);
+ recursionDictBiz(tenantId, oldParentId, newParentId, dictBizs);
+ });
+ return dictBizs;
+ }
+
+ private void recursionDictBiz(String tenantId, Long oldParentId, Long newParentId, LinkedList<DictBiz> dictBizs) {
+ List<DictBiz> dictBizList = dictBizService.list(Wrappers.<DictBiz>query().lambda().eq(DictBiz::getParentId, oldParentId).eq(DictBiz::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ dictBizList.forEach(dictBiz -> {
+ Long oldSubParentId = dictBiz.getId();
+ Long newSubParentId = IdWorker.getId();
+ dictBiz.setId(newSubParentId);
+ dictBiz.setTenantId(tenantId);
+ dictBiz.setParentId(newParentId);
+ dictBizs.add(dictBiz);
+ recursionDictBiz(tenantId, oldSubParentId, newSubParentId, dictBizs);
+ });
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuServiceImpl.java
new file mode 100644
index 0000000..a01263a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuServiceImpl.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.mapper.TopMenuMapper;
+import com.vci.ubcs.system.service.ITopMenuService;
+import com.vci.ubcs.system.service.ITopMenuSettingService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.entity.TopMenu;
+import com.vci.ubcs.system.entity.TopMenuSetting;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 椤堕儴鑿滃崟琛� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author BladeX
+ */
+@Service
+@AllArgsConstructor
+public class TopMenuServiceImpl extends BaseServiceImpl<TopMenuMapper, TopMenu> implements ITopMenuService {
+
+ private final ITopMenuSettingService topMenuSettingService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean grant(@NotEmpty List<Long> topMenuIds, @NotEmpty List<Long> menuIds) {
+ // 鍒犻櫎椤堕儴鑿滃崟閰嶇疆鐨勮彍鍗曢泦鍚�
+ topMenuSettingService.remove(Wrappers.<TopMenuSetting>update().lambda().in(TopMenuSetting::getTopMenuId, topMenuIds));
+ // 缁勮閰嶇疆
+ List<TopMenuSetting> menuSettings = new ArrayList<>();
+ topMenuIds.forEach(topMenuId -> menuIds.forEach(menuId -> {
+ TopMenuSetting menuSetting = new TopMenuSetting();
+ menuSetting.setTopMenuId(topMenuId);
+ menuSetting.setMenuId(menuId);
+ menuSettings.add(menuSetting);
+ }));
+ // 鏂板閰嶇疆
+ topMenuSettingService.saveBatch(menuSettings);
+ return true;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuSettingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuSettingServiceImpl.java
new file mode 100644
index 0000000..27b8932
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/TopMenuSettingServiceImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.entity.TopMenuSetting;
+import com.vci.ubcs.system.mapper.TopMenuSettingMapper;
+import com.vci.ubcs.system.service.ITopMenuSettingService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class TopMenuSettingServiceImpl extends ServiceImpl<TopMenuSettingMapper, TopMenuSetting> implements ITopMenuSettingService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java
new file mode 100644
index 0000000..685d265
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java
@@ -0,0 +1,67 @@
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.UserPwdstrategyMapper;
+import com.vci.ubcs.system.service.IUserPwdstrategyService;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.feign.IUserClient;
+import lombok.RequiredArgsConstructor;
+import com.vci.ubcs.common.constant.CommonConstant;
+import com.vci.ubcs.system.entity.UserPwdstrategy;
+import com.vci.ubcs.system.vo.UserPwdstrategyVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-22 15:24:55
+ */
+@Service
+@RequiredArgsConstructor
+public class UserPwdstrategyServiceImpl extends ServiceImpl<UserPwdstrategyMapper,UserPwdstrategy> implements IUserPwdstrategyService {
+
+ @Resource
+ private UserPwdstrategyMapper userPwdstrategyMapper;
+
+ /**
+ * user鏈嶅姟璋冪敤绫�
+ */
+ private final IUserClient userClient;
+
+ @Override
+ public UserPwdstrategy queryById(Long id) {
+ return this.getById(id);
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ * @param userPwdstrategyVO 瀹炰緥瀵硅薄
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean submit(UserPwdstrategyVO userPwdstrategyVO) {
+ //鍏堝垹闄�
+ int eft = this.userPwdstrategyMapper.deleteByUserIds(userPwdstrategyVO.getUserIds());
+ //鍦ㄦ柊澧�
+ List<UserPwdstrategy> userPwdstrategyList = new ArrayList<>();
+ userPwdstrategyVO.getUserIds().forEach(id->{
+ boolean temp = userPwdstrategyList.add(new UserPwdstrategy(id, userPwdstrategyVO.getPwdstrategyId()));
+ if(temp){
+ //瀵嗙爜绛栫暐鏀瑰姩鎴愬姛涔嬪悗淇敼鐢ㄦ埛鐘舵��
+ User user = new User();
+ user.setId(id);
+ user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID);
+ userClient.updateUser(user);
+ }
+ });
+ return this.saveBatch(userPwdstrategyList);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ValueRangeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ValueRangeServiceImpl.java
new file mode 100644
index 0000000..d15ba65
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ValueRangeServiceImpl.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.mapper.ValueRangeMapper;
+import com.vci.ubcs.system.service.IValueRangeService;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.entity.ValueRange;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * (PlSysValueRange)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:59
+ */
+@Service
+public class ValueRangeServiceImpl extends ServiceImpl<ValueRangeMapper,ValueRange> implements IValueRangeService {
+
+ @Resource
+ private ValueRangeMapper valueRangeMapper;
+
+ /**
+ * 鍏ㄦ煡璇�
+ *
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public List<ValueRange> queryByAll() {
+ return valueRangeMapper.selectList(null);
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param valueRange 绛涢�夋潯浠�
+ * @param pageRequest 鍒嗛〉瀵硅薄
+ * @return 鏌ヨ缁撴灉
+ */
+ @Override
+ public Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest) {
+ long total = this.valueRangeMapper.count(valueRange);
+ return new PageImpl<>(this.valueRangeMapper.queryAllByLimit(valueRange, pageRequest), pageRequest, total);
+ }
+
+ /**
+ * 鏂板鏁版嵁
+ *
+ * @param valueRange 瀹炰緥瀵硅薄
+ * @return 瀹炰緥瀵硅薄
+ */
+ @Override
+ public boolean submit(ValueRange valueRange) {
+ //鍒ゆ柇鏄惁鎼哄甫id
+ if(Func.isEmpty(valueRange.getId())){
+ //鏂板
+ ValueRange dbValueRange = this.getOne(Wrappers.<ValueRange>query().lambda()
+ .eq(ValueRange::getCombinationId,valueRange.getCombinationId())
+ .eq(ValueRange::getValue, valueRange.getValue()));
+ //鍚屼竴缁勫悎鏂瑰紡涓嬩笉鑳藉嚭鐜扮浉鍚岀殑鍙栧�艰寖鍥�
+ if(!Func.isEmpty(dbValueRange)){
+ throw new ServiceException("璇ョ粍鍚堟柟寮忎笅宸插瓨鍦ㄧ浉鍚屽彇鍊艰寖鍥�!");
+ }
+ if(Func.isEmpty(valueRange.getCreateTime())){
+ valueRange.setCreateTime(new Date());
+ }
+ if(Func.isEmpty(valueRange.getUpdateTime())){
+ valueRange.setUpdateTime(new Date());
+ }
+ boolean temp = saveOrUpdate(valueRange);
+ return temp;
+ }else {
+ if(Func.isEmpty(valueRange.getUpdateTime())){
+ valueRange.setUpdateTime(new Date());
+ }
+ CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+ return saveOrUpdate(valueRange);
+ }
+ }
+
+ /**
+ * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+ *
+ * @param ids 涓婚敭
+ * @return 鏄惁鎴愬姛
+ */
+ @Override
+ public boolean deleteByIds(List<String> ids) {
+ boolean tenantTemp = this.removeBatchByIds(ids);
+ return tenantTemp;
+ }
+
+ /**
+ * 鑾峰彇鍙栧��
+ *
+ * @return 鏄惁鎴愬姛
+ */
+ @Override
+ public List<String> getByAllString(List<String> combinationIds) {
+ List<String> list = valueRangeMapper.queryByCombinationIds(combinationIds);
+ return list;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/ApiScopeWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/ApiScopeWrapper.java
new file mode 100644
index 0000000..ee05382
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/ApiScopeWrapper.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.ApiScope;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.ApiScopeVO;
+
+import java.util.Objects;
+
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class ApiScopeWrapper extends BaseEntityWrapper<ApiScope, ApiScopeVO> {
+
+ public static ApiScopeWrapper build() {
+ return new ApiScopeWrapper();
+ }
+
+ @Override
+ public ApiScopeVO entityVO(ApiScope dataScope) {
+ ApiScopeVO apiScopeVO = Objects.requireNonNull(BeanUtil.copy(dataScope, ApiScopeVO.class));
+ String scopeTypeName = DictCache.getValue(DictEnum.API_SCOPE_TYPE, dataScope.getScopeType());
+ apiScopeVO.setScopeTypeName(scopeTypeName);
+ return apiScopeVO;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DataScopeWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DataScopeWrapper.java
new file mode 100644
index 0000000..9535e76
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DataScopeWrapper.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.DataScope;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.DataScopeVO;
+
+import java.util.Objects;
+
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class DataScopeWrapper extends BaseEntityWrapper<DataScope, DataScopeVO> {
+
+ public static DataScopeWrapper build() {
+ return new DataScopeWrapper();
+ }
+
+ @Override
+ public DataScopeVO entityVO(DataScope dataScope) {
+ DataScopeVO dataScopeVO = Objects.requireNonNull(BeanUtil.copy(dataScope, DataScopeVO.class));
+ String scopeTypeName = DictCache.getValue(DictEnum.DATA_SCOPE_TYPE, dataScope.getScopeType());
+ dataScopeVO.setScopeTypeName(scopeTypeName);
+ return dataScopeVO;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DeptWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DeptWrapper.java
new file mode 100644
index 0000000..f1d71a2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DeptWrapper.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Dept;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.DeptVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class DeptWrapper extends BaseEntityWrapper<Dept, DeptVO> {
+
+ public static DeptWrapper build() {
+ return new DeptWrapper();
+ }
+
+ @Override
+ public DeptVO entityVO(Dept dept) {
+ DeptVO deptVO = Objects.requireNonNull(BeanUtil.copy(dept, DeptVO.class));
+ if (Func.equals(dept.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ deptVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ Dept parent = SysCache.getDept(dept.getParentId());
+ deptVO.setParentName(parent.getDeptName());
+ }
+ String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
+ deptVO.setDeptCategoryName(category);
+ return deptVO;
+ }
+
+
+ public List<DeptVO> listNodeVO(List<Dept> list) {
+ List<DeptVO> collect = list.stream().map(dept -> {
+ DeptVO deptVO = BeanUtil.copy(dept, DeptVO.class);
+ String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
+ Objects.requireNonNull(deptVO).setDeptCategoryName(category);
+ return deptVO;
+ }).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+ public List<DeptVO> listNodeLazyVO(List<DeptVO> list) {
+ List<DeptVO> collect = list.stream().peek(dept -> {
+ String category = DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory());
+ Objects.requireNonNull(dept).setDeptCategoryName(category);
+ }).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictBizWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictBizWrapper.java
new file mode 100644
index 0000000..c537453
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictBizWrapper.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictBizCache;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.vo.DictBizVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class DictBizWrapper extends BaseEntityWrapper<DictBiz, DictBizVO> {
+
+ public static DictBizWrapper build() {
+ return new DictBizWrapper();
+ }
+
+ @Override
+ public DictBizVO entityVO(DictBiz dict) {
+ DictBizVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictBizVO.class));
+ if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ DictBiz parent = DictBizCache.getById(dict.getParentId());
+ dictVO.setParentName(parent.getDictValue());
+ }
+ return dictVO;
+ }
+
+ public List<DictBizVO> listNodeVO(List<DictBiz> list) {
+ List<DictBizVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictBizVO.class)).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictWrapper.java
new file mode 100644
index 0000000..06f2fe5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/DictWrapper.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.Dict;
+import com.vci.ubcs.system.vo.DictVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class DictWrapper extends BaseEntityWrapper<Dict, DictVO> {
+
+ public static DictWrapper build() {
+ return new DictWrapper();
+ }
+
+ @Override
+ public DictVO entityVO(Dict dict) {
+ DictVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictVO.class));
+ if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ Dict parent = DictCache.getById(dict.getParentId());
+ dictVO.setParentName(parent.getDictValue());
+ }
+ return dictVO;
+ }
+
+ public List<DictVO> listNodeVO(List<Dict> list) {
+ List<DictVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictVO.class)).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/MenuWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/MenuWrapper.java
new file mode 100644
index 0000000..638cdd6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/MenuWrapper.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Menu;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.MenuVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class MenuWrapper extends BaseEntityWrapper<Menu, MenuVO> {
+
+ public static MenuWrapper build() {
+ return new MenuWrapper();
+ }
+
+ @Override
+ public MenuVO entityVO(Menu menu) {
+ MenuVO menuVO = Objects.requireNonNull(BeanUtil.copy(menu, MenuVO.class));
+ if (Func.equals(menu.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ menuVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ Menu parent = SysCache.getMenu(menu.getParentId());
+ menuVO.setParentName(parent.getName());
+ }
+ String category = DictCache.getValue(DictEnum.MENU_CATEGORY, Func.toInt(menuVO.getCategory()));
+ String action = DictCache.getValue(DictEnum.BUTTON_FUNC, Func.toInt(menuVO.getAction()));
+ String open = DictCache.getValue(DictEnum.YES_NO, Func.toInt(menuVO.getIsOpen()));
+ menuVO.setCategoryName(category);
+ menuVO.setActionName(action);
+ menuVO.setIsOpenName(open);
+ return menuVO;
+ }
+
+ public List<MenuVO> listNodeVO(List<Menu> list) {
+ List<MenuVO> collect = list.stream().map(menu -> BeanUtil.copy(menu, MenuVO.class)).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+ public List<MenuVO> listNodeLazyVO(List<MenuVO> list) {
+ return ForestNodeMerger.merge(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/PostWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/PostWrapper.java
new file mode 100644
index 0000000..db67386
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/PostWrapper.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.entity.Post;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.vo.PostVO;
+
+import java.util.Objects;
+
+/**
+ * 宀椾綅琛ㄥ寘瑁呯被,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class PostWrapper extends BaseEntityWrapper<Post, PostVO> {
+
+ public static PostWrapper build() {
+ return new PostWrapper();
+ }
+
+ @Override
+ public PostVO entityVO(Post post) {
+ PostVO postVO = Objects.requireNonNull(BeanUtil.copy(post, PostVO.class));
+ String categoryName = DictCache.getValue(DictEnum.POST_CATEGORY, post.getCategory());
+ postVO.setCategoryName(categoryName);
+ return postVO;
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RegionWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RegionWrapper.java
new file mode 100644
index 0000000..572b935
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RegionWrapper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.system.cache.RegionCache;
+import com.vci.ubcs.system.entity.Region;
+import com.vci.ubcs.system.vo.RegionVO;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class RegionWrapper extends BaseEntityWrapper<Region, RegionVO> {
+
+ public static RegionWrapper build() {
+ return new RegionWrapper();
+ }
+
+ @Override
+ public RegionVO entityVO(Region region) {
+ RegionVO regionVO = Objects.requireNonNull(BeanUtil.copy(region, RegionVO.class));
+ Region parentRegion = RegionCache.getByCode(region.getParentCode());
+ regionVO.setParentName(parentRegion.getName());
+ return regionVO;
+ }
+
+ public List<RegionVO> listNodeLazyVO(List<RegionVO> list) {
+ return ForestNodeMerger.merge(list);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RoleWrapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RoleWrapper.java
new file mode 100644
index 0000000..39da219
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/wrapper/RoleWrapper.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Role;
+import com.vci.ubcs.system.vo.RoleVO;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class RoleWrapper extends BaseEntityWrapper<Role, RoleVO> {
+
+ public static RoleWrapper build() {
+ return new RoleWrapper();
+ }
+
+ @Override
+ public RoleVO entityVO(Role role) {
+ RoleVO roleVO = Objects.requireNonNull(BeanUtil.copy(role, RoleVO.class));
+ if (Func.equals(role.getParentId(), BladeConstant.TOP_PARENT_ID)) {
+ roleVO.setParentName(BladeConstant.TOP_PARENT_NAME);
+ } else {
+ Role parent = SysCache.getRole(role.getParentId());
+ roleVO.setParentName(parent.getRoleName());
+ }
+ return roleVO;
+ }
+
+
+ public List<RoleVO> listNodeVO(List<Role> list) {
+ List<RoleVO> collect = list.stream().map(this::entityVO).collect(Collectors.toList());
+ return ForestNodeMerger.merge(collect);
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-system/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-service/blade-system/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-system/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-service/blade-system/src/main/resources/application-test.yml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-system/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-service/ubcs-system/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ApiScopeMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ApiScopeMapper.xml
new file mode 100644
index 0000000..6dad00c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ApiScopeMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.ApiScopeMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/AuthClientMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/AuthClientMapper.xml
new file mode 100644
index 0000000..c99c573
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/AuthClientMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.AuthClientMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="clientResultMap" type="com.vci.ubcs.system.entity.AuthClient">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="client_id" property="clientId"/>
+ <result column="client_secret" property="clientSecret"/>
+ <result column="resources_ids" property="resourceIds"/>
+ <result column="scope" property="scope"/>
+ <result column="authorized_grant_types" property="authorizedGrantTypes"/>
+ <result column="web_server_redirect_uri" property="webServerRedirectUri"/>
+ <result column="authorities" property="authorities"/>
+ <result column="access_token_validity" property="accessTokenValidity"/>
+ <result column="refresh_token_validity" property="refreshTokenValidity"/>
+ <result column="additional_information" property="additionalInformation"/>
+ <result column="autoapprove" property="autoapprove"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/CombinationMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/CombinationMapper.xml
new file mode 100644
index 0000000..71feaf0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/CombinationMapper.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.CombinationMapper">
+
+ <resultMap type="com.vci.ubcs.system.entity.Combination" id="CombinationMap">
+ <result property="id" column="ID" jdbcType="VARCHAR"/>
+ <result property="name" column="NAME" jdbcType="VARCHAR"/>
+ <result property="desc" column="DESC" jdbcType="VARCHAR"/>
+ <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="CREATEUSER" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="UPDATEUSER" jdbcType="VARCHAR"/>
+ <result property="licensors" column="LICENSORS" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <!--鏌ヨ鍗曚釜-->
+ <select id="queryById" resultMap="CombinationMap">
+ select ID,
+ NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
+ from PL_SYS_COMBINATION
+ where ID = #{id}
+ </select>
+
+ <!--缁熻鎬昏鏁�-->
+ <select id="count" resultType="java.lang.Long">
+ select count(1)
+ from PL_SYS_COMBINATION
+ <where>
+ <if test="id != null and id != ''">
+ and ID = #{id}
+ </if>
+ <if test="name != null and name != ''">
+ and NAME = #{name}
+ </if>
+ <if test="desc != null and desc != ''">
+ and DESC = #{desc}
+ </if>
+ <if test="createtime != null">
+ and CREATETIME = #{createtime}
+ </if>
+ <if test="createuser != null and createuser != ''">
+ and CREATEUSER = #{createuser}
+ </if>
+ <if test="updatetime != null">
+ and UPDATETIME = #{updatetime}
+ </if>
+ <if test="updateuser != null and updateuser != ''">
+ and UPDATEUSER = #{updateuser}
+ </if>
+ <if test="licensors != null and licensors != ''">
+ and LICENSORS = #{licensors}
+ </if>
+ </where>
+ </select>
+
+ <!--鍒嗛〉鏌ヨ-->
+ <select id="selectCombinationPage" resultMap="CombinationMap">
+ select
+ ID, NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
+ from PL_SYS_COMBINATION
+ <where>
+ <if test="id != null and id != ''">
+ and ID = #{id}
+ </if>
+ <if test="name != null and name != ''">
+ and NAME = #{name}
+ </if>
+ <if test="desc != null and desc != ''">
+ and DESC = #{desc}
+ </if>
+ <if test="createtime != null">
+ and CREATETIME = #{createtime}
+ </if>
+ <if test="createuser != null and createuser != ''">
+ and CREATEUSER = #{createuser}
+ </if>
+ <if test="updatetime != null">
+ and UPDATETIME = #{updatetime}
+ </if>
+ <if test="updateuser != null and updateuser != ''">
+ and UPDATEUSER = #{updateuser}
+ </if>
+ <if test="licensors != null and licensors != ''">
+ and LICENSORS = #{licensors}
+ </if>
+ </where>
+ limit #{pageable.offset}, #{pageable.pageSize}
+ </select>
+
+ <select id="queryRegex" resultType="java.lang.String">
+ SELECT CONCAT(REPLACE(WM_CONCAT(psc.REGEX),',[',''),']') FROM PL_SYS_COMBINATION psc
+ WHERE psc.ID IN (
+ <foreach collection="combinationIds" item="id" separator=",">
+ #{id}
+ </foreach>
+ )
+ </select>
+
+ <select id="queryRegexList" resultType="java.lang.String">
+ SELECT concat(psc.REGEX,']{1,}') from PL_SYS_COMBINATION psc
+ WHERE psc.ID IN (
+ <foreach collection="combinationIds" item="id" separator=",">
+ #{id}
+ </foreach>
+ )
+ </select>
+
+</mapper>
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DataScopeMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DataScopeMapper.xml
new file mode 100644
index 0000000..060c2c9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DataScopeMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.DataScopeMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DeptMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DeptMapper.xml
new file mode 100644
index 0000000..8272ac3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DeptMapper.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.DeptMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="deptResultMap" type="com.vci.ubcs.system.entity.Dept">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="dept_name" property="deptName"/>
+ <result column="full_name" property="fullName"/>
+ <result column="ancestors" property="ancestors"/>
+ <result column="dept_category" property="deptCategory"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="deptVOResultMap" type="com.vci.ubcs.system.vo.DeptVO">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="dept_name" property="deptName"/>
+ <result column="full_name" property="fullName"/>
+ <result column="ancestors" property="ancestors"/>
+ <result column="dept_category" property="deptCategory"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="has_children" property="hasChildren"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ <result column="has_children" property="hasChildren"/>
+ </resultMap>
+
+ <select id="lazyList" resultMap="deptVOResultMap">
+ SELECT
+ dept.* ,
+ (
+ SELECT
+ CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+ FROM
+ pl_org_dept
+ WHERE
+ parent_id = dept.id and is_deleted = 0
+ ) AS "has_children"
+ FROM
+ pl_org_dept dept
+ WHERE dept.is_deleted = 0
+ <if test="param1!=null and param1!=''">
+ and dept.tenant_id = #{param1}
+ </if>
+ <if test="param2!=null">
+ and dept.parent_id = #{param2}
+ </if>
+ <if test="param3.deptName!=null and param3.deptName!=''">
+ and dept.dept_name like concat(concat('%', #{param3.deptName}),'%')
+ </if>
+ <if test="param3.fullName!=null and param3.fullName!=''">
+ and dept.full_name like concat(concat('%', #{param3.fullName}),'%')
+ </if>
+ ORDER BY dept.sort
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, dept_name as title, id as "value", id as "key" from pl_org_dept where is_deleted = 0
+ <if test="_parameter!=null and _parameter!=''">
+ and tenant_id = #{_parameter}
+ </if>
+ ORDER BY sort
+ </select>
+
+ <select id="lazyTree" resultMap="treeNodeResultMap" >
+ SELECT
+ dept.id,
+ dept.parent_id,
+ dept.dept_name AS title,
+ dept.id AS "value",
+ dept.id AS "key",
+ (
+ SELECT
+ CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+ FROM
+ pl_org_dept
+ WHERE
+ parent_id = dept.id and is_deleted = 0
+ ) AS "has_children"
+ FROM
+ pl_org_dept dept
+ WHERE
+ dept.parent_id = #{param2} AND dept.is_deleted = 0
+ <if test="param1!=null and param1!=''">
+ and dept.tenant_id = #{param1}
+ </if>
+ ORDER BY dept.sort
+ </select>
+
+ <select id="getDeptNames" resultType="java.lang.String">
+ SELECT
+ dept_name
+ FROM
+ pl_org_dept
+ WHERE
+ id IN
+ <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
+ #{ids}
+ </foreach>
+ and is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictBizMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictBizMapper.xml
new file mode 100644
index 0000000..d0c99e3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictBizMapper.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.DictBizMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="dictResultMap" type="com.vci.ubcs.system.entity.DictBiz">
+ <id column="id" property="id"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="code" property="code"/>
+ <result column="dict_key" property="dictKey"/>
+ <result column="dict_value" property="dictValue"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ </resultMap>
+
+ <select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0
+ </select>
+
+ <!-- oracle 鐗堟湰 -->
+ <!--<select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict_biz where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
+ </select>-->
+
+ <select id="getList" resultMap="dictResultMap">
+ select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0
+ </select>
+
+ <select id="parentTree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictMapper.xml
new file mode 100644
index 0000000..c9fcfe1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/DictMapper.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.DictMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="dictResultMap" type="com.vci.ubcs.system.entity.Dict">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="code" property="code"/>
+ <result column="dict_key" property="dictKey"/>
+ <result column="dict_value" property="dictValue"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ </resultMap>
+
+ <select id="selectDictPage" resultMap="dictResultMap">
+ select * from pl_sys_dict where is_deleted = 0
+ </select>
+
+ <select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict where code = #{param1} and dict_key = #{param2} and is_deleted = 0
+ </select>
+
+ <!-- oracle 鐗堟湰 -->
+ <!--<select id="getValue" resultType="java.lang.String">
+ select
+ dict_value
+ from pl_sys_dict where code = #{param1, jdbcType=VARCHAR} and dict_key = #{param2} and dict_key >= 0 rownum 1
+ </select>-->
+
+ <select id="getList" resultMap="dictResultMap">
+ select id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0
+ </select>
+
+ <select id="parentTree" resultMap="treeNodeResultMap">
+ select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0 and parent_id = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml
new file mode 100644
index 0000000..bda18b0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.MenuMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="menuResultMap" type="com.vci.ubcs.system.entity.Menu">
+ <id column="id" property="id"/>
+ <result column="code" property="code"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="name" property="name"/>
+ <result column="alias" property="alias"/>
+ <result column="path" property="path"/>
+ <result column="source" property="source"/>
+ <result column="sort" property="sort"/>
+ <result column="category" property="category"/>
+ <result column="action" property="action"/>
+ <result column="is_open" property="isOpen"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="menuVOResultMap" type="com.vci.ubcs.system.vo.MenuVO">
+ <id column="id" property="id"/>
+ <result column="code" property="code"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="name" property="name"/>
+ <result column="alias" property="alias"/>
+ <result column="path" property="path"/>
+ <result column="source" property="source"/>
+ <result column="sort" property="sort"/>
+ <result column="category" property="category"/>
+ <result column="action" property="action"/>
+ <result column="is_open" property="isOpen"/>
+ <result column="remark" property="remark"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="has_children" property="hasChildren"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ </resultMap>
+
+ <select id="lazyList" resultMap="menuVOResultMap">
+ SELECT
+ menu.*,
+ (
+ SELECT
+ CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
+ FROM
+ pl_sys_menu
+ WHERE
+ parent_id = menu.id AND is_deleted = 0
+ ) AS "has_children"
+ FROM
+ pl_sys_menu menu
+ WHERE menu.is_deleted = 0
+ <if test="param1!=null">
+ and menu.parent_id = #{param1}
+ </if>
+ <if test="param2.name!=null and param2.name!=''">
+ and menu.name like concat(concat('%', #{param2.name}),'%')
+ </if>
+ <if test="param2.code!=null and param2.code!=''">
+ and menu.code like concat(concat('%', #{param2.code}),'%')
+ </if>
+ <if test="param2.alias!=null and param2.alias!=''">
+ and menu.alias like concat(concat('%', #{param2.alias}),'%')
+ </if>
+ ORDER BY menu.sort
+ </select>
+
+ <select id="lazyMenuList" resultMap="menuVOResultMap">
+ SELECT
+ menu.*,
+ (
+ SELECT
+ CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
+ FROM
+ pl_sys_menu
+ WHERE
+ parent_id = menu.id AND is_deleted = 0 AND category = 1
+ ) AS "has_children"
+ FROM
+ pl_sys_menu menu
+ WHERE menu.is_deleted = 0 AND menu.category = 1
+ <if test="param1!=null">
+ and menu.parent_id = #{param1}
+ </if>
+ <if test="param2.name!=null and param2.name!=''">
+ and menu.name like concat(concat('%', #{param2.name}),'%')
+ </if>
+ <if test="param2.code!=null and param2.code!=''">
+ and menu.code like concat(concat('%', #{param2.code}),'%')
+ </if>
+ <if test="param2.alias!=null and param2.alias!=''">
+ and menu.alias like concat(concat('%', #{param2.alias}),'%')
+ </if>
+ ORDER BY menu.sort
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 and category = 1
+ </select>
+
+ <select id="allMenu" resultMap="menuResultMap">
+ select * from pl_sys_menu where is_deleted = 0 and category = 1
+ </select>
+
+ <select id="roleMenu" resultMap="menuResultMap">
+ select * from pl_sys_menu where is_deleted = 0 and id IN
+ ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
+ <foreach collection="param1" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ <if test="param2!=null and param2>0">
+ AND id IN
+ (
+ SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param2}
+ )
+ </if>
+ </select>
+
+ <select id="roleMenuByRoleId" resultMap="menuResultMap">
+ select * from pl_sys_menu where is_deleted = 0 and id IN
+ ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ </select>
+
+ <select id="roleMenuByTopMenuId" resultMap="menuResultMap">
+ select * from pl_sys_menu where is_deleted = 0 and id IN
+ (
+ SELECT menu_id FROM pl_sys_top_menu_setting WHERE top_menu_id = #{param1}
+ )
+ </select>
+
+ <select id="routes" resultMap="menuResultMap">
+ SELECT
+ *
+ FROM
+ pl_sys_menu
+ WHERE
+ is_deleted = 0 and category = 1
+ and id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ </select>
+
+ <select id="allButtons" resultMap="menuResultMap">
+ SELECT
+ id,
+ parent_id,
+ CODE,
+ NAME,
+ alias,
+ path,
+ source,
+ action,
+ sort
+ FROM
+ pl_sys_menu
+ WHERE
+ (
+ category = 2 OR id IN ( SELECT parent_id FROM pl_sys_menu WHERE is_deleted = 0 AND category = 2 )
+ )
+ AND is_deleted = 0
+ ORDER BY sort
+ </select>
+
+ <select id="buttons" resultMap="menuResultMap">
+ SELECT * FROM (
+ SELECT
+ id,
+ parent_id,
+ code,
+ name,
+ alias,
+ path,
+ source,
+ action,
+ sort
+ FROM
+ pl_sys_menu
+ WHERE
+ is_deleted = 0 and id IN (
+ SELECT parent_id FROM pl_sys_menu
+ WHERE ( category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ ) ) )
+
+ UNION ALL
+
+ SELECT
+ id,
+ parent_id,
+ code,
+ name,
+ alias,
+ path,
+ source,
+ action,
+ sort
+ FROM
+ pl_sys_menu
+ WHERE
+ is_deleted = 0 and category = 2 AND id IN ( SELECT menu_id FROM pl_org_role_menu WHERE role_id IN
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>)
+ ) menu ORDER BY sort
+ </select>
+
+ <select id="grantTree" resultMap="treeNodeResultMap">
+ select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0 order by sort
+ </select>
+
+ <select id="grantTreeByRole" resultMap="treeNodeResultMap">
+ select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ or id in (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ order by sort
+ </select>
+
+ <select id="grantTopTree" resultMap="treeNodeResultMap">
+ select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0 order by sort
+ </select>
+
+ <select id="grantTopTreeByRole" resultMap="treeNodeResultMap">
+ select id, parent_id, name as title, id as "value", id as "key" from pl_sys_menu where category = 1 and is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ or id in (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ order by sort
+ </select>
+
+ <select id="grantDataScopeTree" resultMap="treeNodeResultMap">
+ SELECT
+ *
+ FROM
+ (
+ SELECT
+ id,
+ parent_id,
+ NAME AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_sys_menu
+ WHERE
+ category = 1
+ AND is_deleted = 0
+ AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+ ) menu
+
+ UNION ALL
+
+ SELECT
+ id,
+ menu_id AS parent_id,
+ scope_name AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_auth_scope_data
+ WHERE
+ is_deleted = 0
+ AND menu_id IS NOT NULL
+ </select>
+
+ <select id="grantApiScopeTree" resultMap="treeNodeResultMap">
+ SELECT
+ *
+ FROM
+ (
+ SELECT
+ id,
+ parent_id,
+ NAME AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_sys_menu
+ WHERE
+ category = 1
+ AND is_deleted = 0
+ AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+ ) menu
+
+ UNION ALL
+
+ SELECT
+ id,
+ menu_id AS parent_id,
+ scope_name AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_auth_scope_api
+ WHERE
+ is_deleted = 0
+ AND menu_id IS NOT NULL
+ </select>
+
+ <select id="grantDataScopeTreeByRole" resultMap="treeNodeResultMap">
+ SELECT
+ *
+ FROM
+ (
+ SELECT
+ id,
+ parent_id,
+ NAME AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_sys_menu
+ WHERE
+ category = 1
+ AND is_deleted = 0
+ AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+ AND (
+ id IN (
+ select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ OR id IN (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ )
+ ) menu
+
+ UNION ALL
+
+ SELECT
+ id,
+ menu_id AS parent_id,
+ scope_name AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_auth_scope_data
+ WHERE
+ is_deleted = 0
+ AND (
+ menu_id IN (
+ select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ OR menu_id IN (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ )
+ AND menu_id IS NOT NULL
+ </select>
+
+ <select id="grantApiScopeTreeByRole" resultMap="treeNodeResultMap">
+ SELECT
+ *
+ FROM
+ (
+ SELECT
+ id,
+ parent_id,
+ NAME AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_sys_menu
+ WHERE
+ category = 1
+ AND is_deleted = 0
+ AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+ AND (
+ id IN (
+ select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ OR id IN (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in (
+ select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ )
+ ) menu
+
+ UNION ALL
+
+ SELECT
+ id,
+ menu_id AS parent_id,
+ scope_name AS title,
+ id AS "value",
+ id AS "key"
+ FROM
+ pl_auth_scope_api
+ WHERE
+ is_deleted = 0
+ AND
+ (
+ menu_id IN (
+ select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ OR menu_id IN (
+ select parent_id from pl_sys_menu where is_deleted = 0
+ and id in ( select menu_id from pl_org_role_menu where role_id in
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach> )
+ )
+ )
+ AND menu_id IS NOT NULL
+ </select>
+
+ <select id="authRoutes" resultType="com.vci.ubcs.system.dto.MenuDTO">
+ SELECT
+ GROUP_CONCAT(r.role_alias) as alias,
+ m.path
+ FROM
+ pl_org_role_menu rm
+ LEFT JOIN pl_sys_menu m ON rm.menu_id = m.id
+ LEFT JOIN pl_org_role r ON rm.role_id = r.id
+ WHERE
+ rm.role_id IN
+ <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ AND m.path IS NOT NULL and m.is_deleted = 0
+ GROUP BY m.path
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ParamMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ParamMapper.xml
new file mode 100644
index 0000000..95133ac
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ParamMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.ParamMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="paramResultMap" type="com.vci.ubcs.system.entity.Param">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="param_name" property="paramName"/>
+ <result column="param_key" property="paramKey"/>
+ <result column="param_value" property="paramValue"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/PostMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/PostMapper.xml
new file mode 100644
index 0000000..f1077de
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/PostMapper.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.PostMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="postResultMap" type="com.vci.ubcs.system.entity.Post">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="category" property="category"/>
+ <result column="post_code" property="postCode"/>
+ <result column="post_name" property="postName"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+
+ <select id="selectPostPage" resultMap="postResultMap">
+ select * from pl_org_post where is_deleted = 0
+ </select>
+
+ <select id="getPostNames" resultType="java.lang.String">
+ SELECT
+ post_name
+ FROM
+ pl_org_post
+ WHERE
+ id IN
+ <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
+ #{ids}
+ </foreach>
+ and is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RegionMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RegionMapper.xml
new file mode 100644
index 0000000..1c1a64e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RegionMapper.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.RegionMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="regionResultMap" type="com.vci.ubcs.system.entity.Region">
+ <id column="code" property="code"/>
+ <result column="parent_code" property="parentCode"/>
+ <result column="ancestors" property="ancestors"/>
+ <result column="name" property="name"/>
+ <result column="province_code" property="provinceCode"/>
+ <result column="province_name" property="provinceName"/>
+ <result column="city_code" property="cityCode"/>
+ <result column="city_name" property="cityName"/>
+ <result column="district_code" property="districtCode"/>
+ <result column="district_name" property="districtName"/>
+ <result column="town_code" property="townCode"/>
+ <result column="town_name" property="townName"/>
+ <result column="village_code" property="villageCode"/>
+ <result column="village_name" property="villageName"/>
+ <result column="level" property="regionLevel"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+ <resultMap id="regionVOResultMap" type="com.vci.ubcs.system.vo.RegionVO">
+ <id column="code" property="code"/>
+ <result column="parent_code" property="parentCode"/>
+ <result column="ancestors" property="ancestors"/>
+ <result column="name" property="name"/>
+ <result column="province_code" property="provinceCode"/>
+ <result column="province_name" property="provinceName"/>
+ <result column="city_code" property="cityCode"/>
+ <result column="city_name" property="cityName"/>
+ <result column="district_code" property="districtCode"/>
+ <result column="district_name" property="districtName"/>
+ <result column="town_code" property="townCode"/>
+ <result column="town_name" property="townName"/>
+ <result column="village_code" property="villageCode"/>
+ <result column="village_name" property="villageName"/>
+ <result column="level" property="regionLevel"/>
+ <result column="sort" property="sort"/>
+ <result column="remark" property="remark"/>
+ <result column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="has_children" property="hasChildren"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ <result column="has_children" property="hasChildren"/>
+ </resultMap>
+
+ <select id="lazyList" resultMap="regionVOResultMap">
+ SELECT
+ region.*,
+ ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children"
+ FROM
+ pl_sys_region region
+ <where>
+ <if test="param1!=null">
+ and region.parent_code = #{param1}
+ </if>
+ <if test="param2.code!=null and param2.code!=''">
+ and region.code like concat(concat('%', #{param2.code}),'%')
+ </if>
+ <if test="param2.name!=null and param2.name!=''">
+ and region.name like concat(concat('%', #{param2.name}),'%')
+ </if>
+ </where>
+ </select>
+
+ <select id="lazyTree" resultMap="treeNodeResultMap">
+ SELECT
+ region.code AS "id",
+ region.parent_code AS "parent_id",
+ region.name AS "title",
+ region.code AS "value",
+ region.code AS "key",
+ ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM pl_sys_region WHERE parent_code = region.code ) AS "has_children"
+ FROM
+ pl_sys_region region
+ <where>
+ <if test="param1!=null">
+ and region.parent_code = #{param1}
+ </if>
+ <if test="param2.code!=null and param2.code!=''">
+ and region.code like concat(concat('%', #{param2.code}),'%')
+ </if>
+ <if test="param2.name!=null and param2.name!=''">
+ and region.name like concat(concat('%', #{param2.name}),'%')
+ </if>
+ </where>
+ ORDER BY region.code
+ </select>
+
+ <select id="exportRegion" resultType="com.vci.ubcs.system.excel.RegionExcel">
+ SELECT * FROM pl_sys_region ${ew.customSqlSegment}
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMapper.xml
new file mode 100644
index 0000000..051c4d9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMapper.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.RoleMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="roleResultMap" type="com.vci.ubcs.system.entity.Role">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="role_name" property="roleName"/>
+ <result column="sort" property="sort"/>
+ <result column="role_alias" property="roleAlias"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="title" property="title"/>
+ <result column="value" property="value"/>
+ <result column="key" property="key"/>
+ </resultMap>
+
+ <select id="selectRolePage" resultMap="roleResultMap">
+ select * from pl_org_role where is_deleted = 0
+ </select>
+
+ <select id="tree" resultMap="treeNodeResultMap">
+ select id, parent_id, role_name as title, id as "value", id as "key" from pl_org_role where is_deleted = 0
+ <if test="param1!=null">
+ and tenant_id = #{param1}
+ </if>
+ <if test="param2!=null">
+ and role_alias <> #{param2}
+ </if>
+ </select>
+
+ <select id="getRoleNames" resultType="java.lang.String">
+ SELECT
+ role_name
+ FROM
+ pl_org_role
+ WHERE
+ id IN
+ <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
+ #{ids}
+ </foreach>
+ and is_deleted = 0
+ </select>
+
+ <select id="getRoleAliases" resultType="java.lang.String">
+ SELECT
+ role_alias
+ FROM
+ pl_org_role
+ WHERE
+ id IN
+ <foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
+ #{ids}
+ </foreach>
+ and is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMenuMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMenuMapper.xml
new file mode 100644
index 0000000..960daab
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleMenuMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.RoleMenuMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="roleMenuResultMap" type="com.vci.ubcs.system.entity.RoleMenu">
+ <id column="id" property="id"/>
+ <result column="menu_id" property="menuId"/>
+ <result column="role_id" property="roleId"/>
+ </resultMap>
+
+ <select id="selectRoleMenuPage" resultMap="roleMenuResultMap">
+ select * from pl_org_role_menu where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleScopeMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleScopeMapper.xml
new file mode 100644
index 0000000..d0bd20c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/RoleScopeMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.RoleScopeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="roleMenuResultMap" type="com.vci.ubcs.system.entity.RoleScope">
+ <id column="id" property="id"/>
+ <result column="scope_id" property="scopeId"/>
+ <result column="role_id" property="roleId"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StrategyMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StrategyMapper.xml
new file mode 100644
index 0000000..83969fb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StrategyMapper.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.StrategyMapper">
+
+ <resultMap type="com.vci.ubcs.system.entity.Strategy" id="StrategyMap">
+ <result property="id" column="ID" jdbcType="VARCHAR"/>
+ <result property="strategyName" column="STRATEGY_NAME" jdbcType="VARCHAR"/>
+ <result property="minPwdLen" column="MIN_PWD_LEN" jdbcType="VARCHAR"/>
+ <result property="maxPwdLen" column="MAX_PWD_LEN" jdbcType="VARCHAR"/>
+ <result property="combinationIds" column="COMBINATION_IDS" jdbcType="VARCHAR"/>
+ <result property="requiredType" column="REQUIRED_TYPE" jdbcType="VARCHAR"/>
+ <result property="expirationTime" column="EXPIRATION_TIME" jdbcType="TIMESTAMP"/>
+ <result property="reminderTime" column="REMINDER_TIME" jdbcType="TIMESTAMP"/>
+ <result property="lockingNum" column="LOCKING_NUM" jdbcType="VARCHAR"/>
+ <result property="lockingTime" column="LOCKING_TIME" jdbcType="TIMESTAMP"/>
+ <result property="desc" column="DESC" jdbcType="VARCHAR"/>
+ <result property="isDefault" column="IS_DEFAULT" jdbcType="VARCHAR"/>
+ <result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="CREATE_USER" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="UPDATE_USER" jdbcType="TIMESTAMP"/>
+ <result property="combinationNames" column="COMBINATIONNAMES"/>
+ </resultMap>
+
+ <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
+ <select id="queryAllByPage" resultMap="StrategyMap">
+ select pss.*,
+ (select WM_CONCAT(psc.NAME)
+ from PL_SYS_COMBINATION psc
+ where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
+ from PL_SYS_PWDSTRATEGY pss
+ </select>
+
+ <!--缁熻鎬昏鏁�-->
+ <select id="count" resultType="java.lang.Long">
+ select count(1)
+ from PL_SYS_PWDSTRATEGY
+ <where>
+ <if test="id != null and id != ''">
+ and ID = #{id}
+ </if>
+ <if test="strategyName != null and strategyName != ''">
+ and STRATEGY_NAME = #{strategyName}
+ </if>
+ <if test="minPwdLen != null and minPwdLen != ''">
+ and MIN_PWD_LEN = #{minPwdLen}
+ </if>
+ <if test="maxPwdLen != null and maxPwdLen != ''">
+ and MAX_PWD_LEN = #{maxPwdLen}
+ </if>
+ <if test="combination != null and combination != ''">
+ and COMBINATION = #{combination }
+ </if>
+ <if test="requiredType != null and requiredType != ''">
+ and REQUIRED_TYPE = #{requiredType}
+ </if>
+ <if test="expirationTime != null">
+ and EXPIRATION_TIME = #{expirationTime}
+ </if>
+ <if test="reminderTime != null">
+ and REMINDER_TIME = #{reminderTime}
+ </if>
+ <if test="lockingNum != null and lockingNum != ''">
+ and LOCKING_NUM = #{lockingNum}
+ </if>
+ <if test="lockingTime != null">
+ and LOCKING_TIME = #{lockingTime}
+ </if>
+ <if test="desc != null and desc != ''">
+ and DESC = #{desc}
+ </if>
+ <if test="isDefault != null and isDefault != ''">
+ and IS_DEFAULT = #{isDefault}
+ </if>
+ <if test="createDate != null">
+ and CREATE_DATE = #{createDate}
+ </if>
+ <if test="createUser != null">
+ and CREATE_USER = #{createUser}
+ </if>
+ <if test="updateDate != null">
+ and UPDATE_DATE = #{updateDate}
+ </if>
+ <if test="updateUser != null">
+ and UPDATE_USER = #{updateUser}
+ </if>
+ </where>
+ </select>
+
+
+ <select id="queryByNameAndTenantId" resultMap="StrategyMap">
+ SELECT PSS.*,(select WM_CONCAT(psc.NAME)
+ from PL_SYS_COMBINATION psc
+ where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
+ FROM PL_SYS_PWDSTRATEGY PSS
+ LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=PSUP.PWDSTRATEGY_ID
+ LEFT JOIN PL_ORG_USER POU ON POU.ID=PSUP.USER_ID
+ WHERE POU.TENANT_ID = #{tenantId} AND POU.NAME=#{name};
+ </select>
+
+ <select id="queryByUserId" resultMap="StrategyMap">
+ SELECT PSS.*,(select WM_CONCAT(psc.NAME)
+ from PL_SYS_COMBINATION psc
+ where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
+ FROM PL_SYS_PWDSTRATEGY PSS LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=psup.PWDSTRATEGY_ID
+ WHERE PSUP.USER_ID = #{userId}
+ </select>
+
+ <select id="queryByIsDefault" resultType="com.vci.ubcs.system.entity.Strategy">
+ SELECT PSS.*,(SELECT WM_CONCAT(psc.NAME)
+ FROM PL_SYS_COMBINATION psc
+ WHERE instr(pss.COMBINATION_IDS, psc.ID) > 0) COMBINATIONNAMES
+ FROM PL_SYS_PWDSTRATEGY PSS
+ WHERE is_default = 1
+ </select>
+
+</mapper>
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantMapper.xml
new file mode 100644
index 0000000..f1f75f3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.TenantMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="tenantResultMap" type="com.vci.ubcs.system.entity.Tenant">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="tenant_name" property="tenantName"/>
+ <result column="full_name" property="fullName"/>
+ <result column="domain_url" property="domainUrl"/>
+ <result column="background_url" property="backgroundUrl"/>
+ <result column="linkman" property="linkman"/>
+ <result column="contact_number" property="contactNumber"/>
+ <result column="address" property="address"/>
+ <result column="license_key" property="licenseKey"/>
+ </resultMap>
+
+
+ <select id="selectTenantPage" resultMap="tenantResultMap">
+ select * from pl_org_tenant where is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantPackageMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantPackageMapper.xml
new file mode 100644
index 0000000..f5389b0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TenantPackageMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.TenantPackageMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="tenantPackageResultMap" type="com.vci.ubcs.system.entity.TenantPackage">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="package_name" property="packageName"/>
+ <result column="menu_id" property="menuId"/>
+ <result column="remark" property="remark"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuMapper.xml
new file mode 100644
index 0000000..95663dd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.TopMenuMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="topMenuResultMap" type="com.vci.ubcs.system.entity.TopMenu">
+ <result column="id" property="id"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_dept" property="createDept"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="code" property="code"/>
+ <result column="name" property="name"/>
+ <result column="source" property="source"/>
+ <result column="sort" property="sort"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuSettingMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuSettingMapper.xml
new file mode 100644
index 0000000..cdb9453
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/TopMenuSettingMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.TopMenuSettingMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml
new file mode 100644
index 0000000..f02776f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.UserPwdstrategyMapper">
+
+ <resultMap type="com.vci.ubcs.system.entity.UserPwdstrategy" id="UserPwdstrategyMap">
+ <result property="id" column="ID" jdbcType="INTEGER"/>
+ <result property="userId" column="USER_ID" jdbcType="INTEGER"/>
+ <result property="pwdstrategyId" column="PWDSTRATEGY_ID" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <!--鏌ヨ鍗曚釜-->
+ <select id="queryById" resultMap="UserPwdstrategyMap">
+ select ID,
+ USER_ID,
+ PWDSTRATEGY_ID
+ from PL_SYS_USER_PWDSTRATEGY
+ where ID = #{id}
+ </select>
+
+ <!--缁熻鎬昏鏁�-->
+ <select id="count" resultType="java.lang.Long">
+ select count(1)
+ from PL_SYS_USER_PWDSTRATEGY
+ <where>
+ <if test="id != null">
+ and ID = #{id}
+ </if>
+ <if test="userId != null">
+ and USER_ID = #{userId}
+ </if>
+ <if test="pwdstrategyId != null">
+ and PWDSTRATEGY_ID = #{pwdstrategyId}
+ </if>
+ </where>
+ </select>
+
+ <!--閫氳繃涓婚敭淇敼鏁版嵁-->
+ <update id="update">
+ update PL_SYS_USER_PWDSTRATEGY
+ <set>
+ <if test="userId != null">
+ USER_ID = #{userId},
+ </if>
+ <if test="pwdstrategyId != null">
+ PWDSTRATEGY_ID = #{pwdstrategyId},
+ </if>
+ </set>
+ where ID = #{id}
+ </update>
+
+ <delete id="deleteByUserIds">
+ DELETE FROM PL_SYS_USER_PWDSTRATEGY WHERE USER_ID IN (
+ <foreach collection="userIds" item="uId" separator=",">
+ #{uId}
+ </foreach>
+ )
+ </delete>
+
+</mapper>
+
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ValueRangeMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ValueRangeMapper.xml
new file mode 100644
index 0000000..ca9c542
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/ValueRangeMapper.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.ValueRangeMapper">
+
+ <resultMap type="com.vci.ubcs.system.entity.ValueRange" id="ValueRangeMap">
+ <result property="id" column="ID" jdbcType="VARCHAR"/>
+ <result property="value" column="VALUE" jdbcType="VARCHAR"/>
+ <result property="combinationId" column="COMBINATION_ID" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="CREATEUSER" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="UPDATEUSER" jdbcType="VARCHAR"/>
+ <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
+ <select id="queryAllByLimit" resultMap="ValueRangeMap">
+ select
+ ID, VALUE, COMBINATION_ID, CREATEUSER, UPDATETIME, UPDATEUSER, CREATETIME
+ from PL_SYS_VALUE_RANGE
+ <where>
+ <if test="id != null and id != ''">
+ and ID = #{id}
+ </if>
+ <if test="value != null and value != ''">
+ and VALUE = #{value}
+ </if>
+ <if test="combinationId != null and combinationId != ''">
+ and COMBINATION_ID = #{combinationId}
+ </if>
+ <if test="createuser != null and createuser != ''">
+ and CREATEUSER = #{createuser}
+ </if>
+ <if test="updatetime != null">
+ and UPDATETIME = #{updatetime}
+ </if>
+ <if test="updateuser != null and updateuser != ''">
+ and UPDATEUSER = #{updateuser}
+ </if>
+ <if test="createtime != null">
+ and CREATETIME = #{createtime}
+ </if>
+ </where>
+ limit #{pageable.offset}, #{pageable.pageSize}
+ </select>
+
+ <!--缁熻鎬昏鏁�-->
+ <select id="count" resultType="java.lang.Long">
+ select count(1)
+ from PL_SYS_VALUE_RANGE
+ <where>
+ <if test="id != null and id != ''">
+ and ID = #{id}
+ </if>
+ <if test="value != null and value != ''">
+ and VALUE = #{value}
+ </if>
+ <if test="combinationId != null and combinationId != ''">
+ and COMBINATION_ID = #{combinationId}
+ </if>
+ <if test="createuser != null and createuser != ''">
+ and CREATEUSER = #{createuser}
+ </if>
+ <if test="updatetime != null">
+ and UPDATETIME = #{updatetime}
+ </if>
+ <if test="updateuser != null and updateuser != ''">
+ and UPDATEUSER = #{updateuser}
+ </if>
+ <if test="createtime != null">
+ and CREATETIME = #{createtime}
+ </if>
+ </where>
+ </select>
+
+ <select id="queryByCombinationIds" resultType="java.util.List">
+ SELECT "VALUE" FROM PL_SYS_VALUE_RANGE PSVR
+ WHERE PSVR.COMBINATION_ID IN (
+ <foreach collection="combinationIds" item="id" separator=",">
+ #{id}
+ </foreach>
+ )
+ </select>
+
+</mapper>
+
diff --git a/Source/BladeX/blade-service/blade-user/Dockerfile b/Source/UBCS/ubcs-service/ubcs-user/Dockerfile
similarity index 100%
rename from Source/BladeX/blade-service/blade-user/Dockerfile
rename to Source/UBCS/ubcs-service/ubcs-user/Dockerfile
diff --git a/Source/UBCS/ubcs-service/ubcs-user/pom.xml b/Source/UBCS/ubcs-service/ubcs-user/pom.xml
new file mode 100644
index 0000000..e5c532d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ubcs-service</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ubcs-user</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-boot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-excel</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-swagger</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-user-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>ubcs-system-api</artifactId>
+ <version>${bladex.project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>cn.easyproject</groupId>
+ <artifactId>orai18n</artifactId>
+ <version>${orai18n.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/UserApplication.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/UserApplication.java
new file mode 100644
index 0000000..85b1d3e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/UserApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user;
+
+import org.springblade.core.cloud.client.UbcsCloudApplication;
+import org.springblade.core.launch.UbcsApplication;
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 鐢ㄦ埛鍚姩鍣�
+ *
+ * @author Chill
+ */
+@UbcsCloudApplication
+public class UserApplication {
+
+ public static void main(String[] args) {
+ UbcsApplication.run(AppConstant.APPLICATION_USER_NAME, UserApplication.class, args);
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java
new file mode 100644
index 0000000..7d66724
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/controller/UserController.java
@@ -0,0 +1,345 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.excel.UserExcel;
+import com.vci.ubcs.system.user.excel.UserImporter;
+import com.vci.ubcs.system.user.wrapper.UserWrapper;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import com.vci.ubcs.common.cache.CacheNames;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import com.vci.ubcs.system.user.service.IUserService;
+import com.vci.ubcs.system.user.vo.UserVO;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
+
+/**
+ * 鎺у埗鍣�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@RequestMapping
+@AllArgsConstructor
+public class UserController {
+
+ private final IUserService userService;
+ private final BladeRedis bladeRedis;
+
+ /**
+ * 鏌ヨ鍗曟潯
+ */
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "鏌ョ湅璇︽儏", notes = "浼犲叆id")
+ @GetMapping("/detail")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<UserVO> detail(User user) {
+ User detail = userService.getOne(Condition.getQueryWrapper(user));
+ return R.data(UserWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鏌ヨ鍗曟潯
+ */
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "鏌ョ湅璇︽儏", notes = "浼犲叆id")
+ @GetMapping("/info")
+ public R<UserVO> info(BladeUser user) {
+ User detail = userService.getById(user.getUserId());
+ return R.data(UserWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping("/list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "account", value = "璐﹀彿鍚�", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "realName", value = "濮撳悕", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<IPage<UserVO>> list(@ApiIgnore @RequestParam Map<String, Object> user, Query query, BladeUser bladeUser) {
+ QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
+ IPage<User> pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(UserWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 鑷畾涔夌敤鎴峰垪琛�
+ */
+ @GetMapping("/page")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "account", value = "璐﹀彿鍚�", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "realName", value = "濮撳悕", paramType = "query", dataType = "string")
+ })
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) {
+ IPage<User> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
+ return R.data(UserWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀�
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆User")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R submit(@Valid @RequestBody User user) {
+ CacheUtil.clear(USER_CACHE);
+ return R.status(userService.submit(user));
+ }
+
+ /**
+ * 淇敼
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "淇敼", notes = "浼犲叆User")
+ public R update(@Valid @RequestBody User user) {
+ CacheUtil.clear(USER_CACHE);
+ return R.status(userService.updateUser(user));
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "鍒犻櫎", notes = "浼犲叆id闆嗗悎")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R remove(@RequestParam String ids) {
+ CacheUtil.clear(USER_CACHE);
+ return R.status(userService.removeUser(ids));
+ }
+
+ /**
+ * 璁剧疆鑿滃崟鏉冮檺
+ */
+ @PostMapping("/grant")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R grant(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds,
+ @ApiParam(value = "roleId闆嗗悎", required = true) @RequestParam String roleIds) {
+ boolean temp = userService.grant(userIds, roleIds);
+ return R.status(temp);
+ }
+
+ /**
+ * 瀵嗙爜閲嶅埗
+ */
+ @PostMapping("/reset-password")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "鍒濆鍖栧瘑鐮�", notes = "浼犲叆userId闆嗗悎")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R resetPassword(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds) {
+ boolean temp = userService.resetPassword(userIds);
+ return R.status(temp);
+ }
+
+ /**
+ * 淇敼瀵嗙爜
+ */
+ @PostMapping("/update-password")
+ @ApiOperationSupport(order = 9)
+ @ApiOperation(value = "淇敼瀵嗙爜", notes = "浼犲叆瀵嗙爜")
+ public R updatePassword(BladeUser user, @ApiParam(value = "鏃у瘑鐮�", required = true) @RequestParam String oldPassword,
+ @ApiParam(value = "鏂板瘑鐮�", required = true) @RequestParam String newPassword,
+ @ApiParam(value = "鏂板瘑鐮�", required = true) @RequestParam String newPassword1) {
+ boolean temp = userService.updatePassword(user.getUserId(), oldPassword, newPassword, newPassword1);
+ return R.status(temp);
+ }
+
+ /**
+ * 淇敼鍩烘湰淇℃伅
+ */
+ @PostMapping("/update-info")
+ @ApiOperationSupport(order = 10)
+ @ApiOperation(value = "淇敼鍩烘湰淇℃伅", notes = "浼犲叆User")
+ public R updateInfo(@Valid @RequestBody User user) {
+ CacheUtil.clear(USER_CACHE);
+ return R.status(userService.updateUserInfo(user));
+ }
+
+ /**
+ * 鐢ㄦ埛鍒楄〃
+ */
+ @GetMapping("/user-list")
+ @ApiOperationSupport(order = 11)
+ @ApiOperation(value = "鐢ㄦ埛鍒楄〃", notes = "浼犲叆user")
+ public R<List<User>> userList(User user, BladeUser bladeUser) {
+ QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user);
+ List<User> list = userService.list((!AuthUtil.isAdministrator()) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(list);
+ }
+
+ /**
+ * 瀵煎叆鐢ㄦ埛
+ */
+ @PostMapping("import-user")
+ @ApiOperationSupport(order = 12)
+ @ApiOperation(value = "瀵煎叆鐢ㄦ埛", notes = "浼犲叆excel")
+ public R importUser(MultipartFile file, Integer isCovered) {
+ UserImporter userImporter = new UserImporter(userService, isCovered == 1);
+ ExcelUtil.save(file, userImporter, UserExcel.class);
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+ /**
+ * 瀵煎嚭鐢ㄦ埛
+ */
+ @GetMapping("export-user")
+ @ApiOperationSupport(order = 13)
+ @ApiOperation(value = "瀵煎嚭鐢ㄦ埛", notes = "浼犲叆user")
+ public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) {
+ QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
+ if (!AuthUtil.isAdministrator()) {
+ queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId());
+ }
+ queryWrapper.lambda().eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ List<UserExcel> list = userService.exportUser(queryWrapper);
+ ExcelUtil.export(response, "鐢ㄦ埛鏁版嵁" + DateUtil.time(), "鐢ㄦ埛鏁版嵁琛�", list, UserExcel.class);
+ }
+
+ /**
+ * 瀵煎嚭妯℃澘
+ */
+ @GetMapping("export-template")
+ @ApiOperationSupport(order = 14)
+ @ApiOperation(value = "瀵煎嚭妯℃澘")
+ public void exportUser(HttpServletResponse response) {
+ List<UserExcel> list = new ArrayList<>();
+ ExcelUtil.export(response, "鐢ㄦ埛鏁版嵁妯℃澘", "鐢ㄦ埛鏁版嵁琛�", list, UserExcel.class);
+ }
+
+
+ /**
+ * 绗笁鏂规敞鍐岀敤鎴�
+ */
+ @PostMapping("/register-guest")
+ @ApiOperationSupport(order = 15)
+ @ApiOperation(value = "绗笁鏂规敞鍐岀敤鎴�", notes = "浼犲叆user")
+ public R registerGuest(User user, Long oauthId) {
+ return R.status(userService.registerGuest(user, oauthId));
+ }
+
+
+ /**
+ * 閰嶇疆鐢ㄦ埛骞冲彴淇℃伅
+ */
+ @PostMapping("/update-platform")
+ @ApiOperationSupport(order = 16)
+ @ApiOperation(value = "閰嶇疆鐢ㄦ埛骞冲彴淇℃伅", notes = "浼犲叆user")
+ public R updatePlatform(Long userId, Integer userType, String userExt) {
+ return R.status(userService.updatePlatform(userId, userType, userExt));
+ }
+
+ /**
+ * 鏌ョ湅骞冲彴璇︽儏
+ */
+ @ApiOperationSupport(order = 17)
+ @ApiOperation(value = "鏌ョ湅骞冲彴璇︽儏", notes = "浼犲叆id")
+ @GetMapping("/platform-detail")
+ //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+ public R<UserVO> platformDetail(User user) {
+ return R.data(userService.platformDetail(user));
+ }
+
+
+ /**
+ * 鐢ㄦ埛鍒楄〃鏌ヨ
+ */
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "浜哄憳濮撳悕", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "deptName", value = "閮ㄩ棬鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "postName", value = "鑱屼綅鍚嶇О", paramType = "query", dataType = "string"),
+ @ApiImplicitParam(name = "current", value = "褰撳墠椤垫暟", paramType = "query", dataType = "int"),
+ @ApiImplicitParam(name = "size", value = "姣忛〉鏁伴噺", paramType = "query", dataType = "int")
+ })
+ @ApiOperationSupport(order = 18)
+ @ApiOperation(value = "鐢ㄦ埛鍒楄〃鏌ヨ", notes = "鐢ㄦ埛鍒楄〃鏌ヨ")
+ @GetMapping("/search/user")
+ public R<IPage<UserVO>> userSearch(@ApiIgnore UserVO user, @ApiIgnore Query query) {
+ return R.data(userService.selectUserSearch(user, query));
+ }
+
+ /**
+ * 鐢ㄦ埛瑙i攣
+ */
+ @PostMapping("/unlock")
+ @ApiOperationSupport(order = 19)
+ @ApiOperation(value = "璐﹀彿瑙i攣", notes = "浼犲叆id")
+ public R unlock(String userIds) {
+ if (StringUtil.isBlank(userIds)) {
+ return R.fail("璇疯嚦灏戦�夋嫨涓�涓敤鎴�");
+ }
+ List<User> userList = userService.list(Wrappers.<User>lambdaQuery().in(User::getId, Func.toLongList(userIds)));
+ userList.forEach(user -> bladeRedis.del(CacheNames.tenantKey(user.getTenantId(), CacheNames.USER_FAIL_KEY, user.getAccount())));
+ return R.success("鎿嶄綔鎴愬姛");
+ }
+
+ /**
+ * 鐢ㄦ埛瑙i攣
+ */
+ @PostMapping("/check-renexpr")
+ @ApiOperationSupport(order = 20)
+ @ApiOperation(value = "鏌ヨ鐢ㄦ埛瀵嗙爜绛栫暐鏄惁闇�瑕佹彁閱�", notes = "浼犲叆id")
+ 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/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserExcel.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserExcel.java
new file mode 100644
index 0000000..df657e8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserExcel.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.excel;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UserExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class UserExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ColumnWidth(15)
+ @ExcelProperty("绉熸埛缂栧彿")
+ private String tenantId;
+
+ @ExcelIgnore
+ @ExcelProperty("鐢ㄦ埛骞冲彴")
+ private String userType;
+
+ @ColumnWidth(20)
+ @ExcelProperty("鐢ㄦ埛骞冲彴鍚嶇О")
+ private String userTypeName;
+
+ @ColumnWidth(15)
+ @ExcelProperty("璐︽埛")
+ private String account;
+
+ @ColumnWidth(10)
+ @ExcelProperty("鏄电О")
+ private String name;
+
+ @ColumnWidth(10)
+ @ExcelProperty("濮撳悕")
+ private String realName;
+
+ @ExcelProperty("閭")
+ private String email;
+
+ @ColumnWidth(15)
+ @ExcelProperty("鎵嬫満")
+ private String phone;
+
+ @ExcelIgnore
+ @ExcelProperty("瑙掕壊ID")
+ private String roleId;
+
+ @ExcelIgnore
+ @ExcelProperty("閮ㄩ棬ID")
+ private String deptId;
+
+ @ExcelIgnore
+ @ExcelProperty("宀椾綅ID")
+ private String postId;
+
+ @ExcelProperty("瑙掕壊鍚嶇О")
+ private String roleName;
+
+ @ExcelProperty("閮ㄩ棬鍚嶇О")
+ private String deptName;
+
+ @ExcelProperty("宀椾綅鍚嶇О")
+ private String postName;
+
+ @ColumnWidth(20)
+ @ExcelProperty("鐢熸棩")
+ private Date birthday;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserImporter.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserImporter.java
new file mode 100644
index 0000000..99dd30a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/excel/UserImporter.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.excel;
+
+import com.vci.ubcs.system.user.service.IUserService;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏁版嵁瀵煎叆绫�
+ *
+ * @author Chill
+ */
+@RequiredArgsConstructor
+public class UserImporter implements ExcelImporter<UserExcel> {
+
+ private final IUserService service;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<UserExcel> data) {
+ service.importUser(data, isCovered);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java
new file mode 100644
index 0000000..36c05a4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.feign;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.entity.UserInfo;
+import com.vci.ubcs.system.user.entity.UserOauth;
+import com.vci.ubcs.system.user.enums.UserEnum;
+import com.vci.ubcs.system.user.service.IUserService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class UserClient implements IUserClient {
+
+ private final IUserService service;
+
+ @Override
+ @GetMapping(USER_INFO_BY_ID)
+ public R<User> userInfoById(Long userId) {
+ return R.data(service.getById(userId));
+ }
+
+ @Override
+ @GetMapping(USER_INFO_BY_ACCOUNT)
+ public R<User> userByAccount(String tenantId, String account) {
+ return R.data(service.userByAccount(tenantId, account));
+ }
+
+ @Override
+ @GetMapping(USER_INFO)
+ public R<UserInfo> userInfo(String tenantId, String account) {
+ return R.data(service.userInfo(tenantId, account));
+ }
+
+ @Override
+ @GetMapping(USER_INFO_BY_TYPE)
+ public R<UserInfo> userInfo(String tenantId, String account, String userType) {
+ return R.data(service.userInfo(tenantId, account, UserEnum.of(userType)));
+ }
+
+ @Override
+ @PostMapping(USER_AUTH_INFO)
+ public R<UserInfo> userAuthInfo(@RequestBody UserOauth userOauth) {
+ return R.data(service.userInfo(userOauth));
+ }
+
+ @Override
+ @PostMapping(SAVE_USER)
+ public R<Boolean> saveUser(@RequestBody User user) {
+ return R.data(service.submit(user));
+ }
+
+ @Override
+ @PostMapping(SAVE_USER_LIST)
+ public R<Boolean> saveUserList(List<User> users) {
+ return R.data(service.submitList(users));
+ }
+
+ @Override
+ @PostMapping(REMOVE_USER)
+ public R<Boolean> removeUser(String tenantIds) {
+ return R.data(service.remove(Wrappers.<User>query().lambda().in(User::getTenantId, Func.toStrList(tenantIds))));
+ }
+
+ @Override
+ @PostMapping(UPDATE_USER)
+ public R<Boolean> updateUser(@RequestBody User user) {
+ return R.data(service.updateUser(user));
+ }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserSearchClient.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserSearchClient.java
new file mode 100644
index 0000000..1ae8177
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserSearchClient.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.feign;
+
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.service.IUserSearchService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏌ヨ鏈嶅姟Feign瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class UserSearchClient implements IUserSearchClient {
+
+ private final IUserSearchService service;
+
+ @Override
+ @GetMapping(LIST_BY_USER)
+ public R<List<User>> listByUser(String userId) {
+ return R.data(service.listByUser(Func.toLongList(userId)));
+ }
+
+ @Override
+ @GetMapping(LIST_BY_DEPT)
+ public R<List<User>> listByDept(String deptId) {
+ return R.data(service.listByDept(Func.toLongList(deptId)));
+ }
+
+ @Override
+ @GetMapping(LIST_BY_POST)
+ public R<List<User>> listByPost(String postId) {
+ return R.data(service.listByPost(Func.toLongList(postId)));
+ }
+
+ @Override
+ @GetMapping(LIST_BY_ROLE)
+ public R<List<User>> listByRole(String roleId) {
+ return R.data(service.listByRole(Func.toLongList(roleId)));
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserAppMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserAppMapper.java
new file mode 100644
index 0000000..7abe486
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserAppMapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.user.entity.UserApp;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserAppMapper extends BaseMapper<UserApp> {
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserDeptMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserDeptMapper.java
new file mode 100644
index 0000000..de70920
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserDeptMapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.user.entity.UserDept;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserDeptMapper extends BaseMapper<UserDept> {
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java
new file mode 100644
index 0000000..0d21766
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserMapper.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.excel.UserExcel;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserMapper extends BaseMapper<User> {
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param user
+ * @param deptIdList
+ * @param tenantId
+ * @return
+ */
+ List<User> selectUserPage(IPage<User> page, @Param("user") User user, @Param("deptIdList") List<Long> deptIdList, @Param("tenantId") String tenantId);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛
+ *
+ * @param tenantId
+ * @param account
+ * @return
+ */
+ User getUser(String tenantId, String account);
+
+ /**
+ * 鑾峰彇瀵煎嚭鐢ㄦ埛鏁版嵁
+ *
+ * @param queryWrapper
+ * @return
+ */
+ List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOauthMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOauthMapper.java
new file mode 100644
index 0000000..56cb484
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOauthMapper.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.user.entity.UserOauth;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserOauthMapper extends BaseMapper<UserOauth> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOtherMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOtherMapper.java
new file mode 100644
index 0000000..3192249
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserOtherMapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.user.entity.UserOther;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserOtherMapper extends BaseMapper<UserOther> {
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserWebMapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserWebMapper.java
new file mode 100644
index 0000000..b25a854
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/mapper/UserWebMapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.user.entity.UserWeb;
+
+/**
+ * Mapper 鎺ュ彛
+ *
+ * @author Chill
+ */
+public interface UserWebMapper extends BaseMapper<UserWeb> {
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserDeptService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserDeptService.java
new file mode 100644
index 0000000..6e030e2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserDeptService.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.user.entity.UserDept;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IUserDeptService extends IService<UserDept> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserOauthService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserOauthService.java
new file mode 100644
index 0000000..3fb3bcd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserOauthService.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.user.entity.UserOauth;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IUserOauthService extends IService<UserOauth> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserSearchService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserSearchService.java
new file mode 100644
index 0000000..6bb4860
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserSearchService.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service;
+
+
+import com.vci.ubcs.system.user.entity.User;
+import org.springblade.core.mp.base.BaseService;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏌ヨ鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IUserSearchService extends BaseService<User> {
+
+ /**
+ * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param userId 鐢ㄦ埛ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ List<User> listByUser(List<Long> userId);
+
+ /**
+ * 鏍规嵁閮ㄩ棬ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param deptId 閮ㄩ棬ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ List<User> listByDept(List<Long> deptId);
+
+ /**
+ * 鏍规嵁宀椾綅ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param postId 宀椾綅ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ List<User> listByPost(List<Long> postId);
+
+ /**
+ * 鏍规嵁瑙掕壊ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param roleId 瑙掕壊ID
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ List<User> listByRole(List<Long> roleId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java
new file mode 100644
index 0000000..1f84fc8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.entity.UserInfo;
+import com.vci.ubcs.system.user.entity.UserOauth;
+import com.vci.ubcs.system.user.enums.UserEnum;
+import com.vci.ubcs.system.user.excel.UserExcel;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.system.user.vo.UserVO;
+
+import java.util.List;
+
+/**
+ * 鏈嶅姟绫�
+ *
+ * @author Chill
+ */
+public interface IUserService extends BaseService<User> {
+
+ /**
+ * 鏂板鐢ㄦ埛
+ *
+ * @param user
+ * @return
+ */
+ boolean submit(User user);
+
+ /**
+ * 鎵归噺鏂板鐢ㄦ埛
+ *
+ * @param users
+ * @return
+ */
+ boolean submitList(List<User> users);
+
+ /**
+ * 淇敼鐢ㄦ埛
+ *
+ * @param user
+ * @return
+ */
+ boolean updateUser(User user);
+
+ /**
+ * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
+ *
+ * @param user
+ * @return
+ */
+ boolean updateUserInfo(User user);
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param page
+ * @param user
+ * @param deptId
+ * @param tenantId
+ * @return
+ */
+ IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId);
+
+ /**
+ * 鑷畾涔夊垎椤�
+ *
+ * @param user
+ * @param query
+ * @return
+ */
+ IPage<UserVO> selectUserSearch(UserVO user, Query query);
+
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @param userId
+ * @return
+ */
+ UserInfo userInfo(Long userId);
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @param tenantId
+ * @param account
+ * @return
+ */
+ UserInfo userInfo(String tenantId, String account);
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @param tenantId
+ * @param account
+ * @param userEnum
+ * @return
+ */
+ UserInfo userInfo(String tenantId, String account, UserEnum userEnum);
+
+ /**
+ * 鐢ㄦ埛淇℃伅
+ *
+ * @param userOauth
+ * @return
+ */
+ UserInfo userInfo(UserOauth userOauth);
+
+ /**
+ * 鏍规嵁璐﹀彿鑾峰彇鐢ㄦ埛
+ *
+ * @param tenantId
+ * @param account
+ * @return
+ */
+ User userByAccount(String tenantId, String account);
+
+ /**
+ * 缁欑敤鎴疯缃鑹�
+ *
+ * @param userIds
+ * @param roleIds
+ * @return
+ */
+ boolean grant(String userIds, String roleIds);
+
+ /**
+ * 鍒濆鍖栧瘑鐮�
+ *
+ * @param userIds
+ * @return
+ */
+ boolean resetPassword(String userIds);
+
+ /**
+ * 淇敼瀵嗙爜
+ *
+ * @param userId
+ * @param oldPassword
+ * @param newPassword
+ * @param newPassword1
+ * @return
+ */
+ boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1);
+
+ /**
+ * 鍒犻櫎鐢ㄦ埛
+ *
+ * @param userIds
+ * @return
+ */
+ boolean removeUser(String userIds);
+
+ /**
+ * 瀵煎叆鐢ㄦ埛鏁版嵁
+ *
+ * @param data
+ * @param isCovered
+ * @return
+ */
+ void importUser(List<UserExcel> data, Boolean isCovered);
+
+ /**
+ * 瀵煎嚭鐢ㄦ埛鏁版嵁
+ *
+ * @param queryWrapper
+ * @return
+ */
+ List<UserExcel> exportUser(Wrapper<User> queryWrapper);
+
+ /**
+ * 娉ㄥ唽鐢ㄦ埛
+ *
+ * @param user
+ * @param oauthId
+ * @return
+ */
+ boolean registerGuest(User user, Long oauthId);
+
+ /**
+ * 閰嶇疆鐢ㄦ埛骞冲彴
+ *
+ * @param userId
+ * @param userType
+ * @param userExt
+ * @return
+ */
+ boolean updatePlatform(Long userId, Integer userType, String userExt);
+
+ /**
+ * 鐢ㄦ埛璇︾粏淇℃伅
+ *
+ * @param user
+ * @return
+ */
+ UserVO platformDetail(User user);
+
+ /**
+ * 妫�鏌ョ敤鎴锋槸鍚﹀埌浜嗘彁閱掔敤鎴蜂慨鏀瑰瘑鐮佹垨鑰呭瘑鐮佽繃鏈熺殑鏃堕棿
+ *
+ */
+ Long checkRenAndExpr(Long userId);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserDeptServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserDeptServiceImpl.java
new file mode 100644
index 0000000..4ede9f3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserDeptServiceImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.user.entity.UserDept;
+import com.vci.ubcs.system.user.mapper.UserDeptMapper;
+import com.vci.ubcs.system.user.service.IUserDeptService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class UserDeptServiceImpl extends ServiceImpl<UserDeptMapper, UserDept> implements IUserDeptService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserOauthServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserOauthServiceImpl.java
new file mode 100644
index 0000000..9d130a4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserOauthServiceImpl.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 com.vci.ubcs.system.user.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.user.entity.UserOauth;
+import lombok.AllArgsConstructor;
+import com.vci.ubcs.system.user.mapper.UserOauthMapper;
+import com.vci.ubcs.system.user.service.IUserOauthService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@AllArgsConstructor
+public class UserOauthServiceImpl extends ServiceImpl<UserOauthMapper, UserOauth> implements IUserOauthService {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserSearchServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserSearchServiceImpl.java
new file mode 100644
index 0000000..3b1bfd4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserSearchServiceImpl.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.service.IUserSearchService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import com.vci.ubcs.system.user.mapper.UserMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏌ヨ鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@AllArgsConstructor
+public class UserSearchServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserSearchService {
+
+ @Override
+ public List<User> listByUser(List<Long> userId) {
+ return this.list(Wrappers.<User>lambdaQuery().in(User::getId, userId));
+ }
+
+ @Override
+ public List<User> listByDept(List<Long> deptId) {
+ LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
+ deptId.forEach(id -> queryWrapper.like(User::getDeptId, id).or());
+ return this.list(queryWrapper);
+ }
+
+ @Override
+ public List<User> listByPost(List<Long> postId) {
+ LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
+ postId.forEach(id -> queryWrapper.like(User::getPostId, id).or());
+ return this.list(queryWrapper);
+ }
+
+ @Override
+ public List<User> listByRole(List<Long> roleId) {
+ LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
+ roleId.forEach(id -> queryWrapper.like(User::getRoleId, id).or());
+ return this.list(queryWrapper);
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..6e31f40
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -0,0 +1,517 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.cache.ParamCache;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Strategy;
+import com.vci.ubcs.system.entity.Tenant;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.feign.ISysClient;
+import com.vci.ubcs.common.constant.CommonConstant;
+import com.vci.ubcs.system.user.cache.UserCache;
+import com.vci.ubcs.system.user.entity.*;
+import com.vci.ubcs.system.user.enums.UserEnum;
+import com.vci.ubcs.system.user.excel.UserExcel;
+import com.vci.ubcs.system.user.mapper.UserMapper;
+import com.vci.ubcs.system.user.service.IUserDeptService;
+import com.vci.ubcs.system.user.service.IUserOauthService;
+import com.vci.ubcs.system.user.service.IUserService;
+import com.vci.ubcs.system.user.vo.UserVO;
+import com.vci.ubcs.system.user.wrapper.UserWrapper;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tenant.BladeTenantProperties;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
+
+import java.util.*;
+
+import static com.vci.ubcs.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+@RequiredArgsConstructor
+public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
+ private static final String GUEST_NAME = "guest";
+
+ private final IUserDeptService userDeptService;
+ 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)
+ public boolean submit(User user) {
+ if (StringUtil.isBlank(user.getTenantId())) {
+ user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
+ }
+ String tenantId = user.getTenantId();
+ //Tenant tenant = SysCache.getTenant(tenantId);
+ if (Func.isNotEmpty(user.getPassword())) {
+ user.setPassword(DigestUtil.encrypt(user.getPassword()));
+ }
+ Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount()));
+ if (userCount > 0L && Func.isEmpty(user.getId())) {
+ throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
+ }
+ return save(user) && submitUserDept(user);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean submitList(List<User> users) {
+ Boolean flag = true;
+ for (User user : users){
+ if (StringUtil.isBlank(user.getTenantId())) {
+ user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
+ }
+ String tenantId = user.getTenantId();
+ if (Func.isNotEmpty(user.getPassword())) {
+ user.setPassword(DigestUtil.encrypt(user.getPassword()));
+ }
+ Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount()));
+ if (userCount > 0L && Func.isEmpty(user.getId())) {
+ throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
+ }
+ flag = save(user) && submitUserDept(user);
+
+ }
+ return flag;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean updateUser(User user) {
+ String tenantId = user.getTenantId();
+ Long userCount = baseMapper.selectCount(
+ Wrappers.<User>query().lambda()
+ .eq(User::getTenantId, tenantId)
+ .eq(User::getAccount, user.getAccount())
+ .notIn(User::getId, user.getId())
+ );
+ if (userCount > 0L) {
+ throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
+ }
+ return updateUserInfo(user) && submitUserDept(user);
+ }
+
+ @Override
+ public boolean updateUserInfo(User user) {
+ user.setPassword(null);
+ return updateById(user);
+ }
+
+ private boolean submitUserDept(User user) {
+ List<Long> deptIdList = Func.toLongList(user.getDeptId());
+ List<UserDept> userDeptList = new ArrayList<>();
+ deptIdList.forEach(deptId -> {
+ UserDept userDept = new UserDept();
+ userDept.setUserId(user.getId());
+ userDept.setDeptId(deptId);
+ userDeptList.add(userDept);
+ });
+ userDeptService.remove(Wrappers.<UserDept>update().lambda().eq(UserDept::getUserId, user.getId()));
+ return userDeptService.saveBatch(userDeptList);
+ }
+
+ @Override
+ public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
+ List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
+ return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
+ }
+
+ @Override
+ public IPage<UserVO> selectUserSearch(UserVO user, Query query) {
+ LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>query().lambda();
+ String tenantId = AuthUtil.getTenantId();
+ if (StringUtil.isNotBlank(tenantId)) {
+ queryWrapper.eq(User::getTenantId, tenantId);
+ }
+ if (StringUtil.isNotBlank(user.getName())) {
+ queryWrapper.like(User::getName, user.getName());
+ }
+ if (StringUtil.isNotBlank(user.getDeptName())) {
+ String deptIds = SysCache.getDeptIdsByFuzzy(AuthUtil.getTenantId(), user.getDeptName());
+ if (StringUtil.isNotBlank(deptIds)) {
+ queryWrapper.and(wrapper -> {
+ List<String> ids = Func.toStrList(deptIds);
+ ids.forEach(id -> wrapper.like(User::getDeptId, id).or());
+ });
+ }
+ }
+ if (StringUtil.isNotBlank(user.getPostName())) {
+ String postIds = SysCache.getPostIdsByFuzzy(AuthUtil.getTenantId(), user.getPostName());
+ if (StringUtil.isNotBlank(postIds)) {
+ queryWrapper.and(wrapper -> {
+ List<String> ids = Func.toStrList(postIds);
+ ids.forEach(id -> wrapper.like(User::getPostId, id).or());
+ });
+ }
+ }
+ IPage<User> pages = this.page(Condition.getPage(query), queryWrapper);
+ return UserWrapper.build().pageVO(pages);
+ }
+
+ @Override
+ public User userByAccount(String tenantId, String account) {
+ return baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, account).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED));
+ }
+
+ @Override
+ public UserInfo userInfo(Long userId) {
+ User user = baseMapper.selectById(userId);
+ return buildUserInfo(user);
+ }
+
+ @Override
+ public UserInfo userInfo(String tenantId, String account) {
+ User user = baseMapper.getUser(tenantId, account);
+ return buildUserInfo(user);
+ }
+
+ @Override
+ public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) {
+ User user = baseMapper.getUser(tenantId, account);
+ return buildUserInfo(user, userEnum);
+ }
+
+ private UserInfo buildUserInfo(User user) {
+ return buildUserInfo(user, UserEnum.WEB);
+ }
+
+ private UserInfo buildUserInfo(User user, UserEnum userEnum) {
+ if (ObjectUtil.isEmpty(user)) {
+ return null;
+ }
+ UserInfo userInfo = new UserInfo();
+ userInfo.setUser(user);
+ if (Func.isNotEmpty(user)) {
+ R<List<String>> result = sysClient.getRoleAliases(user.getRoleId());
+ if (result.isSuccess()) {
+ List<String> roleAlias = result.getData();
+ userInfo.setRoles(roleAlias);
+ }
+ }
+ // 鏍规嵁姣忎釜鐢ㄦ埛骞冲彴锛屽缓绔嬪搴旂殑detail琛紝閫氳繃鏌ヨ灏嗙粨鏋滈泦鍐欏叆鍒癲etail瀛楁
+ Kv detail = Kv.create().set("type", userEnum.getName());
+ if (userEnum == UserEnum.WEB) {
+ UserWeb userWeb = new UserWeb();
+ UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ detail.set("ext", query.getUserExt());
+ }
+ } else if (userEnum == UserEnum.APP) {
+ UserApp userApp = new UserApp();
+ UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ detail.set("ext", query.getUserExt());
+ }
+ } else {
+ UserOther userOther = new UserOther();
+ UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ detail.set("ext", query.getUserExt());
+ }
+ }
+ userInfo.setDetail(detail);
+ return userInfo;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public UserInfo userInfo(UserOauth userOauth) {
+ UserOauth uo = userOauthService.getOne(Wrappers.<UserOauth>query().lambda().eq(UserOauth::getUuid, userOauth.getUuid()).eq(UserOauth::getSource, userOauth.getSource()));
+ UserInfo userInfo;
+ if (Func.isNotEmpty(uo) && Func.isNotEmpty(uo.getUserId())) {
+ userInfo = this.userInfo(uo.getUserId());
+ userInfo.setOauthId(Func.toStr(uo.getId()));
+ } else {
+ userInfo = new UserInfo();
+ if (Func.isEmpty(uo)) {
+ userOauthService.save(userOauth);
+ userInfo.setOauthId(Func.toStr(userOauth.getId()));
+ } else {
+ userInfo.setOauthId(Func.toStr(uo.getId()));
+ }
+ User user = new User();
+ user.setAccount(userOauth.getUsername());
+ user.setTenantId(userOauth.getTenantId());
+ userInfo.setUser(user);
+ userInfo.setRoles(Collections.singletonList(GUEST_NAME));
+ }
+ return userInfo;
+ }
+
+ @Override
+ public boolean grant(String userIds, String roleIds) {
+ User user = new User();
+ user.setRoleId(roleIds);
+ return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
+ }
+
+ @Override
+ public boolean resetPassword(String userIds) {
+ User user = new User();
+ user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
+ user.setUpdateTime(DateUtil.now());
+ return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
+ }
+
+ @Override
+ public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1) {
+ User user = getById(userId);
+ if (!newPassword.equals(newPassword1)) {
+ throw new ServiceException("璇疯緭鍏ユ纭殑纭瀵嗙爜!");
+ }
+ if (!user.getPassword().equals(DigestUtil.hex(oldPassword))) {
+ throw new ServiceException("鍘熷瘑鐮佷笉姝g‘!");
+ }
+ //鑾峰彇鐢ㄦ埛閲囩敤鐨勫瘑鐮佺瓥鐣�
+ Strategy strategy = sysClient.getByUserId(userId).getData();
+ //瀵嗙爜闀垮害鏍¢獙
+ if(newPassword1.length() < strategy.getMinPwdLen() || newPassword1.length() > strategy.getMaxPwdLen()){
+ throw new ServiceException("瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴");
+ }
+ List<String> regexs = sysClient.getRegexByList(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
+ //鍒ゆ柇鏄惁婊¤冻缁勫悎鏂瑰紡涓殑蹇呭~绉嶇被鏁�
+ int reqType = 0;
+ for (int i = 0; i < regexs.size(); i++) {
+ if(reqType>=strategy.getRequiredType()){
+ break;
+ }
+ if(!Func.isEmpty(RegexUtil.findResult(regexs.get(i),newPassword1))){
+ reqType++;
+ }
+ }
+ String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠绫诲瀷锛岃閲嶆柊杈撳叆瀵嗙爜锛�";
+ if(reqType<strategy.getRequiredType()){
+ throw new ServiceException(resException);
+ }
+ // 鏄惁灞炰簬缁勫悎鏂瑰紡涓殑绫诲瀷
+ String regex = sysClient.getRegex(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
+ regex = "^"+regex+"{"+strategy.getRequiredType()+",}$";
+ boolean result = RegexUtil.find(regex, newPassword1);
+ 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));
+ }
+
+ @Override
+ public boolean removeUser(String userIds) {
+ if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) {
+ throw new ServiceException("涓嶈兘鍒犻櫎鏈处鍙�!");
+ }
+ return deleteLogic(Func.toLongList(userIds));
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void importUser(List<UserExcel> data, Boolean isCovered) {
+ data.forEach(userExcel -> {
+ User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
+ // 璁剧疆鐢ㄦ埛骞冲彴
+ user.setUserType(Func.toInt(DictCache.getKey(DictEnum.USER_TYPE, userExcel.getUserTypeName()), 1));
+ // 璁剧疆閮ㄩ棬ID
+ user.setDeptId(Func.toStrWithEmpty(SysCache.getDeptIds(userExcel.getTenantId(), userExcel.getDeptName()), StringPool.EMPTY));
+ // 璁剧疆宀椾綅ID
+ user.setPostId(Func.toStrWithEmpty(SysCache.getPostIds(userExcel.getTenantId(), userExcel.getPostName()), StringPool.EMPTY));
+ // 璁剧疆瑙掕壊ID
+ user.setRoleId(Func.toStrWithEmpty(SysCache.getRoleIds(userExcel.getTenantId(), userExcel.getRoleName()), StringPool.EMPTY));
+ // 璁剧疆绉熸埛ID
+ if (!AuthUtil.isAdministrator() || StringUtil.isBlank(user.getTenantId())) {
+ user.setTenantId(AuthUtil.getTenantId());
+ }
+ // 瑕嗙洊鏁版嵁
+ if (isCovered) {
+ // 鏌ヨ鐢ㄦ埛鏄惁瀛樺湪
+ User oldUser = UserCache.getUser(userExcel.getTenantId(), userExcel.getAccount());
+ if (oldUser != null && oldUser.getId() != null) {
+ user.setId(oldUser.getId());
+ this.updateUser(user);
+ return;
+ }
+ }
+ // 鑾峰彇榛樿瀵嗙爜閰嶇疆
+ String initPassword = ParamCache.getValue(DEFAULT_PARAM_PASSWORD);
+ user.setPassword(initPassword);
+ this.submit(user);
+ });
+ }
+
+ @Override
+ public List<UserExcel> exportUser(Wrapper<User> queryWrapper) {
+ List<UserExcel> userList = baseMapper.exportUser(queryWrapper);
+ userList.forEach(user -> {
+ user.setUserTypeName(DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()));
+ user.setRoleName(StringUtil.join(SysCache.getRoleNames(user.getRoleId())));
+ user.setDeptName(StringUtil.join(SysCache.getDeptNames(user.getDeptId())));
+ user.setPostName(StringUtil.join(SysCache.getPostNames(user.getPostId())));
+ });
+ return userList;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean registerGuest(User user, Long oauthId) {
+ Tenant tenant = SysCache.getTenant(user.getTenantId());
+ if (tenant == null || tenant.getId() == null) {
+ throw new ServiceException("绉熸埛淇℃伅閿欒!");
+ }
+ UserOauth userOauth = userOauthService.getById(oauthId);
+ if (userOauth == null || userOauth.getId() == null) {
+ throw new ServiceException("绗笁鏂圭櫥闄嗕俊鎭敊璇�!");
+ }
+ user.setRealName(user.getName());
+ user.setAvatar(userOauth.getAvatar());
+ user.setRoleId(StringPool.MINUS_ONE);
+ user.setDeptId(StringPool.MINUS_ONE);
+ user.setPostId(StringPool.MINUS_ONE);
+ boolean userTemp = this.submit(user);
+ userOauth.setUserId(user.getId());
+ userOauth.setTenantId(user.getTenantId());
+ boolean oauthTemp = userOauthService.updateById(userOauth);
+ return (userTemp && oauthTemp);
+ }
+ @Override
+ public boolean updatePlatform(Long userId, Integer userType, String userExt) {
+ if (userType.equals(UserEnum.WEB.getCategory())) {
+ UserWeb userWeb = new UserWeb();
+ UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, userId));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userWeb.setId(query.getId());
+ }
+ userWeb.setUserId(userId);
+ userWeb.setUserExt(userExt);
+ return userWeb.insertOrUpdate();
+ } else if (userType.equals(UserEnum.APP.getCategory())) {
+ UserApp userApp = new UserApp();
+ UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, userId));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userApp.setId(query.getId());
+ }
+ userApp.setUserId(userId);
+ userApp.setUserExt(userExt);
+ return userApp.insertOrUpdate();
+ } else {
+ UserOther userOther = new UserOther();
+ UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, userId));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userOther.setId(query.getId());
+ }
+ userOther.setUserId(userId);
+ userOther.setUserExt(userExt);
+ return userOther.insertOrUpdate();
+ }
+ }
+
+ @Override
+ public UserVO platformDetail(User user) {
+ User detail = baseMapper.selectOne(Condition.getQueryWrapper(user));
+ UserVO userVO = UserWrapper.build().entityVO(detail);
+ if (userVO.getUserType().equals(UserEnum.WEB.getCategory())) {
+ UserWeb userWeb = new UserWeb();
+ UserWeb query = userWeb.selectOne(Wrappers.<UserWeb>lambdaQuery().eq(UserWeb::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userVO.setUserExt(query.getUserExt());
+ }
+ } else if (userVO.getUserType().equals(UserEnum.APP.getCategory())) {
+ UserApp userApp = new UserApp();
+ UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userVO.setUserExt(query.getUserExt());
+ }
+ } else {
+ UserOther userOther = new UserOther();
+ UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId()));
+ if (ObjectUtil.isNotEmpty(query)) {
+ userVO.setUserExt(query.getUserExt());
+ }
+ }
+ return userVO;
+ }
+
+ @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;
+ if(!Func.isEmpty(pwdUpdateTime)){
+ pwdupdateday = dateToDay(pwdUpdateTime);
+ }
+ Strategy strategy = sysClient.getByUserId(userId).getData();
+ //鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
+ long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(new Date());
+ //鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜
+ if(reminder<=0){
+ return -1L;
+ }
+ //鎻愰啋鐢ㄦ埛杩樻湁澶氫箙杩囨湡
+ if(reminder<=strategy.getReminderTime()){
+ long res = (strategy.getReminderTime()+pwdupdateday)-dateToDay(new Date());
+ return res;
+ }
+ //浠h〃姝e父鐘舵�佽繕鏈埌鎻愰啋涓庤繃鏈熸椂闂达紝鏃笉鎻愰啋涔熶笉瑕佹眰淇敼
+ return 0L;
+ }
+
+ /**
+ * 鏃堕棿鏍煎紡杞ぉ
+ * @param date
+ * @return
+ */
+ private Long dateToDay(Date date){
+ long time = date.getTime();
+ return time/(1000 * 60 * 60 * 24);
+ }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java
new file mode 100644
index 0000000..a72b04d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/wrapper/UserWrapper.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.system.user.wrapper;
+
+import com.vci.ubcs.system.user.entity.User;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.cache.SysCache;
+import com.vci.ubcs.system.entity.Tenant;
+import com.vci.ubcs.system.enums.DictEnum;
+import com.vci.ubcs.system.user.vo.UserVO;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author Chill
+ */
+public class UserWrapper extends BaseEntityWrapper<User, UserVO> {
+
+ public static UserWrapper build() {
+ return new UserWrapper();
+ }
+
+ @Override
+ public UserVO entityVO(User user) {
+ UserVO userVO = Objects.requireNonNull(BeanUtil.copy(user, UserVO.class));
+ Tenant tenant = SysCache.getTenant(user.getTenantId());
+ List<String> roleName = SysCache.getRoleNames(user.getRoleId());
+ List<String> deptName = SysCache.getDeptNames(user.getDeptId());
+ List<String> postName = SysCache.getPostNames(user.getPostId());
+ userVO.setTenantName(tenant.getTenantName());
+ userVO.setRoleName(Func.join(roleName));
+ userVO.setDeptName(Func.join(deptName));
+ userVO.setPostName(Func.join(postName));
+ userVO.setSexName(DictCache.getValue(DictEnum.SEX, user.getSex()));
+ userVO.setUserTypeName(DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()));
+ return userVO;
+ }
+
+}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-dev.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-user/src/main/resources/application-dev.yml
rename to Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-dev.yml
diff --git a/Source/BladeX/blade-service/blade-user/src/main/resources/application-prod.yml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-prod.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-user/src/main/resources/application-prod.yml
rename to Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-prod.yml
diff --git a/Source/BladeX/blade-service/blade-user/src/main/resources/application-test.yml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-test.yml
similarity index 100%
rename from Source/BladeX/blade-service/blade-user/src/main/resources/application-test.yml
rename to Source/UBCS/ubcs-service/ubcs-user/src/main/resources/application-test.yml
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserAppMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserAppMapper.xml
new file mode 100644
index 0000000..caa20be
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserAppMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserAppMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserDeptMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserDeptMapper.xml
new file mode 100644
index 0000000..d89f21b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserDeptMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserDeptMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..4843a28
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="userResultMap" type="com.vci.ubcs.system.user.entity.User">
+ <result column="id" property="id"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="status" property="status"/>
+ <result column="is_deleted" property="isDeleted"/>
+ <result column="code" property="code"/>
+ <result column="user_type" property="userType"/>
+ <result column="account" property="account"/>
+ <result column="password" property="password"/>
+ <result column="name" property="name"/>
+ <result column="real_name" property="realName"/>
+ <result column="email" property="email"/>
+ <result column="phone" property="phone"/>
+ <result column="birthday" property="birthday"/>
+ <result column="sex" property="sex"/>
+ <result column="role_id" property="roleId"/>
+ <result column="dept_id" property="deptId"/>
+ <result column="post_id" property="postId"/>
+ <result column="strategy_name" property="pwdStrategy"/>
+ <result column="pwd_update_time" property="pwdUpdateTime"/>
+ <result column="secretgrade" property="secretgrade"/>
+ <result column="strategy_update_status" property="strategyUpdateStatus"/>
+ </resultMap>
+
+
+ <select id="selectUserPage" resultMap="userResultMap">
+ SELECT
+ pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_PWDSTRATEGY WHERE IS_DEFAULT=1)) strategy_name
+ FROM pl_org_user pou
+ LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
+ LEFT JOIN PL_SYS_PWDSTRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
+ WHERE is_deleted = 0
+ <if test="tenantId!=null and tenantId != ''">
+ and tenant_id = #{tenantId}
+ </if>
+ <if test="user.tenantId!=null and user.tenantId != ''">
+ and tenant_id = #{user.tenantId}
+ </if>
+ <if test="user.account!=null and user.account != ''">
+ and account = #{user.account}
+ </if>
+ <if test="user.realName!=null and user.realName != ''">
+ and real_name = #{user.realName}
+ </if>
+ <if test="user.userType!=null and user.userType != ''">
+ and user_type = #{user.userType}
+ </if>
+ <if test="deptIdList!=null and deptIdList.size>0">
+ and pou.id in (
+ SELECT
+ user_id
+ FROM
+ pl_org_user_dept poud
+ WHERE
+ dept_id IN
+ <foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ </if>
+ ORDER BY pou.id
+ </select>
+
+ <select id="getUser" resultMap="userResultMap">
+ SELECT
+ pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_PWDSTRATEGY WHERE IS_DEFAULT=1)) strategy_name
+ FROM pl_org_user pou
+ LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
+ LEFT JOIN PL_SYS_PWDSTRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
+ WHERE
+ tenant_id = #{param1} and account = #{param2} and is_deleted = 0
+ </select>
+
+ <select id="exportUser" resultType="com.vci.ubcs.system.user.excel.UserExcel">
+ SELECT
+ pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_PWDSTRATEGY WHERE IS_DEFAULT=1)) strategy_name
+ FROM pl_org_user pou
+ LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID
+ LEFT JOIN PL_SYS_PWDSTRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID
+ ${ew.customSqlSegment}
+ </select>
+
+ <select id="selectByIdUser" resultType="com.vci.ubcs.system.user.entity.User">
+ select id, code, user_type, account, password , name, real_name, avatar, email, phone , birthday, sex, role_id, dept_id, post_id , pwd_update_time, secretgrade, strategy_update_status, tenant_id, create_user , create_dept, create_time, update_user, update_time, status , is_deleted
+ from pl_org_user
+ where id = #{userId} and is_deleted = 0
+ </select>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOauthMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOauthMapper.xml
new file mode 100644
index 0000000..1150a6f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOauthMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserOauthMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="userResultMap" type="com.vci.ubcs.system.user.entity.UserOauth">
+ <result column="id" property="id"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="user_id" property="userId"/>
+ <result column="username" property="username"/>
+ <result column="nickname" property="nickname"/>
+ <result column="avatar" property="avatar"/>
+ <result column="blog" property="blog"/>
+ <result column="company" property="company"/>
+ <result column="location" property="location"/>
+ <result column="email" property="email"/>
+ <result column="remark" property="remark"/>
+ <result column="gender" property="gender"/>
+ <result column="source" property="source"/>
+ </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOtherMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOtherMapper.xml
new file mode 100644
index 0000000..8366c69
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserOtherMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserOtherMapper">
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserWebMapper.xml b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserWebMapper.xml
new file mode 100644
index 0000000..fe47994
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/resources/mapper/UserWebMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.user.mapper.UserWebMapper">
+
+</mapper>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..b8c792f
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-core-cloud-3.0.1.RELEASE.pom>blade-release=
+blade-core-cloud-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..ca2fb58
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335467
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-core-cloud\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333256
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122995772
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164840
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336626
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-core-cloud\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..dd6cc63
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+e956fb4c93b55ef7353dad174f75aacb3efa5357
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..98ebbb6
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom"
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-core-cloud</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+
+ <dependencies>
+ <!-- Blade -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-launch</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-context</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-auth</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-loadbalancer</artifactId>
+ </dependency>
+ <!-- Admin -->
+ <dependency>
+ <groupId>de.codecentric</groupId>
+ <artifactId>spring-boot-admin-starter-client</artifactId>
+ </dependency>
+ <!-- Sentinel -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..6c9c03e
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:23:44 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122623940
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-core-cloud\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122623718
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122581626
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122602670
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122624062
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-core-cloud\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..68d3a56
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-cloud/3.0.1.RELEASE/blade-core-cloud-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+4cb260d07c322ac3580f451a49142a416a25297f
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..9686b95
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Wed Mar 29 17:08:22 CST 2023
+blade-core-launch-3.0.1.RELEASE.jar>blade-release=
+blade-core-launch-3.0.1.RELEASE.pom>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..37aedd9
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,17 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Wed Mar 29 17:08:22 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1680080901972
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-core-launch\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333264
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122996066
+http\://dev.yunkeruida.top\:9000/repository/maven-public/.error=
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164849
+http\://dev.yunkeruida.top\:9000/repository/maven-releases/.error=
+http\://dev.yunkeruida.top\:9000/repository/maven-releases/.lastUpdated=1680080901721
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://dev.yunkeruida.top\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-core-launch\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://dev.yunkeruida.top\:9000/repository/maven-snapshots/)\: transfer failed for http\://dev.yunkeruida.top\:9000/repository/maven-snapshots/org/springblade/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar, status\: 400 Repository version policy\: SNAPSHOT does not allow version\: 3.0.1.RELEASE
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://dev.yunkeruida.top\:9000/repository/maven-snapshots/.lastUpdated=1680080901733
+http\://dev.yunkeruida.top\:9000/repository/maven-public/.lastUpdated=1680080901706
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1680080902163
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-core-launch\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..f3e5a6d
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+eaee3834a22f32690641142f78cdceabd2f0fe1a
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..b7ae3b8
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom"
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-core-launch</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Spring-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-undertow</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-bootstrap</artifactId>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..fb8d856
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:12:10 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677121929907
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-core-launch\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677121929673
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677121887602
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677121908646
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677121930096
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-core-launch\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..50fb4d5
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-core-launch/3.0.1.RELEASE/blade-core-launch-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+d981c483f7b61c8247a18265cd3428551e8857ef
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..f45debc
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-starter-auth-3.0.1.RELEASE.pom>blade-release=
+blade-starter-auth-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..029e83d
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335473
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-auth\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333262
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122995996
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164848
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336636
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-auth\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..bcda2f7
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+758eb877040f8f89cbf455155ea7114512f8016b
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..bb1611b
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom"
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-auth</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-tool</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-jwt</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..ed069f5
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:21:26 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122486736
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-auth\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122486500
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122444378
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122465435
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122486860
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-auth\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..12ec305
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-auth/3.0.1.RELEASE/blade-starter-auth-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+ef0f81d271a95012c061774f2f73ad75039db939
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..f5638a1
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:37:46 CST 2023
+blade-starter-datascope-3.0.1.RELEASE.pom>blade-release=
+blade-starter-datascope-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..fd94b95
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:37:46 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123466193
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-datascope\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123464951
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677123422859
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123443916
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123466378
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-datascope\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..96c9bd7
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+a5e39063a45b7285f9f7cef22c62512b475cf911
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..fbb2ea3
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom"
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-datascope</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-mybatis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..9f0dccc
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:37:02 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123422052
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-datascope\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123421824
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677123379755
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123400785
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123422179
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-datascope\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..46379c9
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-datascope/3.0.1.RELEASE/blade-starter-datascope-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+bac0fbfd4f08286bad189e568ed8c6ac859169f9
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..87d01c6
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-starter-develop-3.0.1.RELEASE.pom>blade-release=
+blade-starter-develop-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..4f59dab
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335469
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-develop\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333258
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122995881
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164843
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336631
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-develop\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..b7f98a6
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+3b08792ab553a8ce80944619f178dde8b8c1a5bf
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..55aaec2
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom"
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-develop</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-tool</artifactId>
+ </dependency>
+ <!--Mybatis-Plus-Generator-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generator</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-extension</artifactId>
+ </dependency>
+ <!--Beetl-->
+ <dependency>
+ <groupId>com.ibeetl</groupId>
+ <artifactId>beetl</artifactId>
+ <version>3.10.0.Antlr4.5-RELEASE</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..cc4221d
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:26:56 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122816677
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-develop\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122816438
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122774348
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122795391
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122816777
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-develop\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..128c414
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-develop/3.0.1.RELEASE/blade-starter-develop-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+7d3c53a288747a979f24dc9262edfeb94ecb5e63
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..4a58e41
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-starter-log-3.0.1.RELEASE.pom>blade-release=
+blade-starter-log-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..9a0ce33
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335466
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-log\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333254
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122995771
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164839
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336625
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-log\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..a2659ad
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+d3f1812ab562f6fc94cedf75933433354c02c7b2
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..feb9f9a
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom"
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-log</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-cloud</artifactId>
+ </dependency>
+ <!--Mybatis-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus</artifactId>
+ </dependency>
+ <!-- Logstash -->
+ <dependency>
+ <groupId>net.logstash.logback</groupId>
+ <artifactId>logstash-logback-encoder</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.janino</groupId>
+ <artifactId>janino</artifactId>
+ </dependency>
+ <!-- validator -->
+ <dependency>
+ <artifactId>hibernate-validator</artifactId>
+ <groupId>org.hibernate.validator</groupId>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..b06bc20
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:25:28 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122728345
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-log\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122728000
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122685899
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122706960
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122728467
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-log\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..89e1dfb
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-log/3.0.1.RELEASE/blade-starter-log-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+e787bdf67f89561f905492ac4c64251ad5a9c562
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..3a72064
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-starter-mybatis-3.0.1.RELEASE.pom>blade-release=
+blade-starter-mybatis-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..98847ec
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335478
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-mybatis\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333267
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122996289
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164853
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336645
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-mybatis\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..a4cef50
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+85a8bef4008eddcfcdf3ece801a016b7dfef2b18
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..5079a08
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom"
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-mybatis</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Mybatis-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis-typehandlers-jsr310</artifactId>
+ </dependency>
+ <!--Jdbc-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-jdbc</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>tomcat-jdbc</artifactId>
+ <groupId>org.apache.tomcat</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- Druid -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid</artifactId>
+ </dependency>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-auth</artifactId>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..de4fbe0
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:26:13 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122773212
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-mybatis\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122772991
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122730885
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122751946
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122773354
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-mybatis\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..890ec97
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-mybatis/3.0.1.RELEASE/blade-starter-mybatis-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+2ca12f5cb2f8ab265d90aca6d5e5ed78bfab48bd
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..255bb74
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 14:12:14 CST 2023
+blade-starter-report-3.0.1.RELEASE.pom>blade-release=
+blade-starter-report-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..0fd002f
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,5 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 14:12:14 CST 2023
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677132734005
+https\://repo1.maven.org/maven2/.error=
+https\://repo1.maven.org/maven2/.lastUpdated=1677132733789
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..b8a965d
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+a2409e6bf5fb66326b327ad530d96f27b59d3288
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..69cbe04
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom"
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-report</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-mybatis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.bstek.ureport</groupId>
+ <artifactId>ureport2-console</artifactId>
+ <version>2.2.9</version>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..d26e7a9
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,5 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 14:07:37 CST 2023
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677132457350
+https\://repo1.maven.org/maven2/.error=
+https\://repo1.maven.org/maven2/.lastUpdated=1677132457249
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..6776177
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-report/3.0.1.RELEASE/blade-starter-report-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+8e917ccd830e2211cc3dfd44ddc820a6128654ba
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/_remote.repositories" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/_remote.repositories"
new file mode 100644
index 0000000..467ebcc
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/_remote.repositories"
@@ -0,0 +1,4 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+blade-starter-tenant-3.0.1.RELEASE.pom>blade-release=
+blade-starter-tenant-3.0.1.RELEASE.jar>blade-release=
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.lastUpdated"
new file mode 100644
index 0000000..256ab81
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:35:36 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677123335477
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-tenant\:jar\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677123333266
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122996288
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677123164852
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677123336644
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-tenant\:jar\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.sha1"
new file mode 100644
index 0000000..99caacf
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.jar.sha1"
@@ -0,0 +1 @@
+606be9f92b69a6f0c853367668ee651767b04365
\ No newline at end of file
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom"
new file mode 100644
index 0000000..eb3b02c
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom"
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>BladeX-Tool</artifactId>
+ <groupId>org.springblade</groupId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>blade-starter-tenant</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${project.parent.version}</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--Blade-->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-mybatis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-starter-cache</artifactId>
+ </dependency>
+ <!-- Druid -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-starter</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <!--Dynamic-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+ </dependency>
+ <!-- Auto -->
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-auto</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.lastUpdated" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.lastUpdated"
new file mode 100644
index 0000000..a6e6527
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.lastUpdated"
@@ -0,0 +1,11 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Feb 23 11:28:31 CST 2023
+https\://maven.aliyun.com/repository/public/.lastUpdated=1677122911677
+http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.error=Could not transfer artifact org.springblade\:blade-starter-tenant\:pom\:3.0.1.RELEASE from/to rdc-snapshots (http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/org/springblade/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-snapshots-http\://nexus.vci-tech.com\:9000/repository/maven-snapshots/.lastUpdated=1677122911449
+http\://maven.aliyun.com/nexus/content/groups/public/.lastUpdated=1677122869379
+1b0ab2d5def7c89c2e68c0f5006ba682a66fe006@default-rdc-releases-http\://nexus.vci-tech.com\:9000/repository/maven-releases/.lastUpdated=1677122890399
+http\://maven.aliyun.com/nexus/content/groups/public/.error=
+http\://nexus.javablade.com/repository/maven-releases/.lastUpdated=1677122911777
+https\://maven.aliyun.com/repository/public/.error=
+http\://nexus.vci-tech.com\:9000/repository/maven-releases/.error=Could not transfer artifact org.springblade\:blade-starter-tenant\:pom\:3.0.1.RELEASE from/to rdc-releases (http\://nexus.vci-tech.com\:9000/repository/maven-releases/)\: Transfer failed for http\://nexus.vci-tech.com\:9000/repository/maven-releases/org/springblade/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom
diff --git "a/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.sha1" "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.sha1"
new file mode 100644
index 0000000..2d73049
--- /dev/null
+++ "b/Source/\346\233\264\346\224\271\350\277\207\347\232\204jar\345\214\205/blade-starter-tenant/3.0.1.RELEASE/blade-starter-tenant-3.0.1.RELEASE.pom.sha1"
@@ -0,0 +1 @@
+153436de5b16c068ea5e1d559d59a17a12744a69
\ No newline at end of file
--
Gitblit v1.9.3