From 9450445e2a0cb5698b3a578cd5233597c2282aa7 Mon Sep 17 00:00:00 2001 From: niuge <957687319@qq.com> Date: Mon, 29 Nov 2021 14:06:41 +0800 Subject: [PATCH] first commit --- jar-enginex-manager/.gitignore | 13 + jar-enginex-manager/README.md | 0 jar-enginex-manager/pom.xml | 306 +++ .../JarEnginexManagerApplication.java | 19 + .../common/basefactory/BaseController.java | 8 + .../common/basefactory/BaseService.java | 139 ++ .../common/basefactory/CcpBaseController.java | 15 + .../common/basefactory/ServiceFactory.java | 92 + .../common/constants/CommonConst.java | 48 + .../common/constants/Constants.java | 21 + .../common/constants/OpTypeConst.java | 322 ++++ .../common/constants/OpTypeEnum.java | 345 ++++ .../constants/ServiceFilterConstant.java | 23 + .../common/constants/StatusConst.java | 8 + .../common/controllor/CommonControllor.java | 36 + .../common/enums/ErrorCodeEnum.java | 82 + .../common/exception/ApiException.java | 57 + .../riskmanage/common/mapper/BaseMapper.java | 60 + .../riskmanage/common/model/BasePage.java | 85 + .../riskmanage/common/model/BaseParam.java | 12 + .../riskmanage/common/model/ExcelModel.java | 15 + .../common/model/ExcelSheetModel.java | 16 + .../risk/riskmanage/common/model/PageDto.java | 22 + .../common/model/ResponseEntityDto.java | 88 + .../model/requestParam/QueryListParam.java | 14 + .../model/requestParam/StatusParam.java | 22 + .../model/requestParam/UpdateFolderParam.java | 27 + .../model/requestParam/UpdateStatusParam.java | 39 + .../riskmanage/common/utils/ExcelUtil.java | 311 ++++ .../common/utils/ResponseEntityBuilder.java | 138 ++ .../risk/riskmanage/config/ConfigHolder.java | 61 + .../config/ConfigurationContainor.java | 46 + .../riskmanage/config/DataSourceConfig.java | 61 + .../riskmanage/config/RestTemplateConfig.java | 27 + .../risk/riskmanage/config/WebMvcConfig.java | 24 + .../datamanage/common/ExcelHeader.java | 8 + .../datamanage/common/ExcelUtil.java | 666 +++++++ .../riskmanage/datamanage/common/Status.java | 11 + .../datamanage/common/ValueType.java | 17 + .../controller/v2/FieldController.java | 870 +++++++++ .../datamanage/mapper/FieldCondMapper.java | 36 + .../datamanage/mapper/FieldMapper.java | 270 +++ .../datamanage/mapper/FieldTypeMapper.java | 126 ++ .../mapper/FieldTypeUserMapper.java | 52 + .../datamanage/mapper/FieldUserMapper.java | 74 + .../riskmanage/datamanage/model/Field.java | 456 +++++ .../datamanage/model/FieldCond.java | 141 ++ .../datamanage/model/FieldType.java | 130 ++ .../datamanage/model/FieldTypeUser.java | 79 + .../datamanage/model/FieldUser.java | 101 + .../datamanage/model/FormulaField.java | 44 + .../model/request/FieldSaveParam.java | 97 + .../model/request/FieldTreeParam.java | 23 + .../datamanage/service/FieldService.java | 274 +++ .../datamanage/service/FieldTypeService.java | 60 + .../service/imp/FieldServiceImp.java | 1633 +++++++++++++++++ .../service/imp/FieldTypeServiceImp.java | 94 + .../riskmanage/datamanage/vo/FieldEnumVo.java | 32 + .../datamanage/vo/FieldExcelVo.java | 150 ++ .../datamanage/vo/FieldFormulaVo.java | 89 + .../datamanage/vo/FieldSubCondVo.java | 108 ++ .../controller/DataSourceController.java | 59 + .../datasource/mapper/DataSourceMapper.java | 9 + .../datasource/model/DataSource.java | 107 ++ .../model/request/DataSourceListParam.java | 15 + .../datasource/model/vo/DataSourceVo.java | 112 ++ .../datasource/service/DataSourceService.java | 21 + .../service/impl/DataSourceServiceImpl.java | 107 ++ .../risk/riskmanage/engine/model/Engine.java | 93 + .../riskmanage/engine/model/EngineNode.java | 94 + .../riskmanage/engine/model/EngineRule.java | 73 + .../engine/model/EngineVersion.java | 203 ++ .../riskmanage/engine/model/InputParam.java | 33 + .../engine/model/NodeKnowledge.java | 63 + .../risk/riskmanage/engine/model/Result.java | 61 + .../model/request/KnowledgeTreeListParam.java | 16 + .../param/DecisionFlowOutputResponse.java | 18 + .../param/ListDbInfoOutputResponse.java | 23 + .../response/param/ListDbOutputResponse.java | 18 + .../response/param/NodeInfoResponse.java | 36 + .../param/NodeStrategyOutputResponse.java | 24 + .../response/param/NodeTypeResponse.java | 27 + .../param/RuleInfoOutputResponse.java | 29 + .../response/param/RuleOutputResponse.java | 19 + .../controller/InterfaceController.java | 136 ++ .../mapper/InterfaceMapper.java | 18 + .../interfacemanage/model/InterfaceInfo.java | 61 + .../model/request/InterfaceListParam.java | 22 + .../model/request/InterfaceUpdateParent.java | 15 + .../request/InterfaceUpdateStatusParam.java | 16 + .../interfacemanage/model/vo/InterfaceVo.java | 64 + .../service/InterfaceService.java | 31 + .../service/impl/InterfaceServiceImpl.java | 207 +++ .../knowledge/common/consts/ExcelHeader.java | 30 + .../knowledge/common/consts/Status.java | 35 + .../knowledge/common/consts/Type.java | 44 + .../v2/KnowledgeTreeController.java | 206 +++ .../knowledge/mapper/EngineRuleRelMapper.java | 40 + .../knowledge/mapper/KnowledgeTreeMapper.java | 48 + .../mapper/KnowledgeTreeRelMapper.java | 40 + .../knowledge/mapper/RuleContentMapper.java | 55 + .../knowledge/mapper/RuleFieldMapper.java | 74 + .../knowledge/mapper/RuleMapper.java | 96 + .../knowledge/model/EngineRuleRel.java | 43 + .../knowledge/model/KnowledgeTree.java | 229 +++ .../knowledge/model/KnowledgeTreeRel.java | 51 + .../risk/riskmanage/knowledge/model/Rule.java | 423 +++++ .../knowledge/model/RuleContent.java | 156 ++ .../riskmanage/knowledge/model/RuleExcel.java | 74 + .../riskmanage/knowledge/model/RuleField.java | 167 ++ .../model/response/UploadResponse.java | 19 + .../service/KnowledgeTreeService.java | 60 + .../knowledge/service/RuleService.java | 35 + .../impl/KnowledgeTreeServiceImpl.java | 178 ++ .../service/impl/RuleServiceImpl.java | 41 + .../risk/riskmanage/logger/ArchivesLog.java | 21 + .../riskmanage/logger/ArchivesLogAspect.java | 150 ++ .../controller/v2/LoggerController.java | 102 + .../logger/mapper/LoggerMapper.java | 30 + .../risk/riskmanage/logger/model/Logger.java | 167 ++ .../logger/model/request/LoggerParam.java | 12 + .../riskmanage/logger/service/LogService.java | 38 + .../logger/service/impl/LogServiceImpl.java | 34 + .../risk/riskmanage/redis/RedisManager.java | 125 ++ .../rule/consts/RuleConditionConst.java | 17 + .../riskmanage/rule/consts/RuleConst.java | 20 + .../rule/consts/RuleRunnerConst.java | 86 + .../rule/controller/RuleInfoController.java | 265 +++ .../controller/RuleVersionController.java | 90 + .../rule/mapper/RuleConditionInfoMapper.java | 15 + .../rule/mapper/RuleFieldInfoMapper.java | 9 + .../rule/mapper/RuleInfoMapper.java | 26 + .../mapper/RuleLoopGroupActionMapper.java | 17 + .../rule/mapper/RuleVersionMapper.java | 10 + .../rule/model/RuleConditionInfo.java | 77 + .../riskmanage/rule/model/RuleFieldInfo.java | 38 + .../risk/riskmanage/rule/model/RuleInfo.java | 81 + .../rule/model/RuleLoopGroupAction.java | 58 + .../riskmanage/rule/model/RuleVersion.java | 78 + .../model/param/RuleSetNodeResultParam.java | 18 + .../rule/model/request/RuleListParamV2.java | 23 + .../model/request/RuleUpdateStatusParam.java | 16 + .../rule/model/vo/RuleConditionVo.java | 19 + .../rule/model/vo/RuleVersionVo.java | 21 + .../risk/riskmanage/rule/model/vo/RuleVo.java | 29 + .../rule/service/RuleConditionService.java | 38 + .../rule/service/RuleFieldInfoService.java | 21 + .../service/RuleLoopGroupActionService.java | 18 + .../riskmanage/rule/service/RuleService.java | 54 + .../rule/service/RuleVersionService.java | 27 + .../impl/RuleConditionServiceImpl.java | 342 ++++ .../impl/RuleFieldInfoServiceImpl.java | 368 ++++ .../impl/RuleLoopGroupActionServiceImpl.java | 54 + .../rule/service/impl/RuleServiceImpl.java | 627 +++++++ .../service/impl/RuleVersionServiceImpl.java | 228 +++ .../riskmanage/spring/aop/ExceptionAop.java | 113 ++ .../interceptor/SessionInterceptor.java | 99 + .../system/controller/v2/LoginController.java | 99 + .../controller/v2/SysMenuController.java | 423 +++++ .../v2/SysOrganizationController.java | 194 ++ .../controller/v2/SysRoleController.java | 225 +++ .../controller/v2/SysUserController.java | 236 +++ .../system/mapper/DepartmentMapper.java | 25 + .../riskmanage/system/mapper/MenuMapper.java | 60 + .../riskmanage/system/mapper/RoleMapper.java | 30 + .../system/mapper/SysMenuMapper.java | 112 ++ .../system/mapper/SysOrganizationMapper.java | 59 + .../system/mapper/SysRoleMapper.java | 91 + .../system/mapper/SysUserMapper.java | 124 ++ .../riskmanage/system/mapper/UserMapper.java | 70 + .../riskmanage/system/model/Department.java | 122 ++ .../risk/riskmanage/system/model/Menu.java | 249 +++ .../riskmanage/system/model/MenuJson.java | 57 + .../risk/riskmanage/system/model/Pager.java | 78 + .../risk/riskmanage/system/model/Role.java | 132 ++ .../risk/riskmanage/system/model/SysMenu.java | 33 + .../system/model/SysOrganization.java | 89 + .../risk/riskmanage/system/model/SysRole.java | 83 + .../riskmanage/system/model/SysSuccess.java | 40 + .../risk/riskmanage/system/model/SysUser.java | 138 ++ .../risk/riskmanage/system/model/User.java | 205 +++ .../riskmanage/system/model/UserRole.java | 54 + .../system/model/request/LoginInfoParam.java | 9 + .../system/model/response/SysMenuVo.java | 41 + .../system/service/DepartmentService.java | 70 + .../riskmanage/system/service/MenuSevice.java | 95 + .../system/service/RoleService.java | 69 + .../system/service/SysMenuService.java | 109 ++ .../service/SysOrganizationService.java | 57 + .../system/service/SysRoleService.java | 91 + .../system/service/SysUserService.java | 111 ++ .../system/service/UserService.java | 80 + .../service/impl/DepartmentServiceImpl.java | 73 + .../system/service/impl/MenuServiceImpl.java | 129 ++ .../system/service/impl/RoleServiceImpl.java | 73 + .../service/impl/SysMenuServiceImpl.java | 160 ++ .../impl/SysOrganizationServiceImpl.java | 97 + .../service/impl/SysRoleServiceImpl.java | 151 ++ .../service/impl/SysUserServiceImpl.java | 193 ++ .../system/service/impl/UserServiceImpl.java | 118 ++ .../tactics/consts/TacticsType.java | 17 + .../tactics/mapper/TacticsOutputMapper.java | 9 + .../tactics/model/TacticsOutput.java | 78 + .../tactics/service/TacticsOutputService.java | 23 + .../impl/TacticsOutputServiceImpl.java | 90 + .../riskmanage/util/AccountSessionWrap.java | 32 + .../riskmanage/util/BracketMatchUtil.java | 47 + .../risk/riskmanage/util/CollectionUtil.java | 109 ++ .../com/risk/riskmanage/util/CommonUtil.java | 186 ++ .../riskmanage/util/CustomValueUtils.java | 32 + .../com/risk/riskmanage/util/DataHelp.java | 40 + .../com/risk/riskmanage/util/ImageCut.java | 50 + .../risk/riskmanage/util/ListPageUtil.java | 96 + .../java/com/risk/riskmanage/util/MD5.java | 91 + .../com/risk/riskmanage/util/PageBean.java | 66 + .../riskmanage/util/PagerJsonResponse.java | 82 + .../com/risk/riskmanage/util/Properties.java | 12 + .../com/risk/riskmanage/util/RequestUtil.java | 37 + .../risk/riskmanage/util/ResponseUtil.java | 16 + .../com/risk/riskmanage/util/Section.java | 22 + .../risk/riskmanage/util/SectionUtils.java | 233 +++ .../risk/riskmanage/util/SessionManager.java | 29 + .../com/risk/riskmanage/util/StringUtil.java | 467 +++++ .../com/risk/riskmanage/util/SysConstant.java | 94 + .../riskmanage/util/UploadController.java | 74 + .../riskmanage/util/https/HttpClient.java | 317 ++++ .../riskmanage/util/https/HttpsException.java | 45 + .../util/https/MySSLSocketFactory.java | 100 + .../riskmanage/util/https/PostParameter.java | 206 +++ .../risk/riskmanage/util/https/Response.java | 226 +++ .../main/resources/application-dev.properties | 26 + .../resources/application-prod.properties | 27 + .../resources/application-test.properties | 25 + .../src/main/resources/application.properties | 1 + .../resources/datamanage/FieldCondMapper.xml | 52 + .../main/resources/datamanage/FieldMapper.xml | 836 +++++++++ .../resources/datamanage/FieldTypeMapper.xml | 196 ++ .../datamanage/FieldTypeUserMapper.xml | 67 + .../resources/datamanage/FieldUserMapper.xml | 117 ++ .../main/resources/excleTemplate/field.xlsx | Bin 0 -> 9104 bytes .../main/resources/excleTemplate/listDb.xlsx | Bin 0 -> 8927 bytes .../interfacemanage/InterfaceMapper.xml | 75 + .../knowledge/EngineRuleRelMapper.xml | 39 + .../knowledge/KnowledgeTreeMapper.xml | 398 ++++ .../knowledge/KnowledgeTreeRelMapper.xml | 33 + .../resources/knowledge/RuleContentMapper.xml | 72 + .../resources/knowledge/RuleFieldMapper.xml | 97 + .../main/resources/knowledge/RuleMapper.xml | 509 +++++ .../main/resources/logger/loggerMapper.xml | 71 + .../src/main/resources/logging-config.xml | 98 + .../src/main/resources/rule/RuleMapper.xml | 141 ++ .../resources/system/DepartmentMapper.xml | 129 ++ .../src/main/resources/system/MenuMapper.xml | 236 +++ .../src/main/resources/system/RoleMapper.xml | 129 ++ .../main/resources/system/SysMenuMapper.xml | 168 ++ .../system/SysOrganizationMapper.xml | 91 + .../main/resources/system/SysRoleMapper.xml | 140 ++ .../main/resources/system/SysUserMapper.xml | 262 +++ .../src/main/resources/system/UserMapper.xml | 259 +++ 259 files changed, 27872 insertions(+) create mode 100644 jar-enginex-manager/.gitignore create mode 100644 jar-enginex-manager/README.md create mode 100644 jar-enginex-manager/pom.xml create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/JarEnginexManagerApplication.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/CcpBaseController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/ServiceFactory.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/CommonConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/Constants.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeEnum.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/ServiceFilterConstant.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/StatusConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/controllor/CommonControllor.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/enums/ErrorCodeEnum.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/exception/ApiException.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/mapper/BaseMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BasePage.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BaseParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelModel.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelSheetModel.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/PageDto.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ResponseEntityDto.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/QueryListParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/StatusParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateFolderParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateStatusParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ExcelUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ResponseEntityBuilder.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigHolder.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigurationContainor.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/config/DataSourceConfig.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/config/RestTemplateConfig.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/config/WebMvcConfig.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelHeader.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/Status.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ValueType.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/controller/v2/FieldController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldCondMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeUserMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldUserMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/Field.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldCond.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldType.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldTypeUser.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldUser.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FormulaField.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldSaveParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldTreeParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldTypeService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldServiceImp.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldTypeServiceImp.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldEnumVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldExcelVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldFormulaVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldSubCondVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/controller/DataSourceController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/mapper/DataSourceMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/DataSource.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/request/DataSourceListParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/vo/DataSourceVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/DataSourceService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/impl/DataSourceServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Engine.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineNode.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineRule.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineVersion.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/InputParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/NodeKnowledge.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Result.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/request/KnowledgeTreeListParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/DecisionFlowOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbInfoOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeInfoResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeStrategyOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeTypeResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleInfoOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleOutputResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/controller/InterfaceController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/mapper/InterfaceMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/InterfaceInfo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceListParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateParent.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateStatusParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/vo/InterfaceVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/InterfaceService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/impl/InterfaceServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/ExcelHeader.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Status.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Type.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/controller/v2/KnowledgeTreeController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/EngineRuleRelMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeRelMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleContentMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleFieldMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/EngineRuleRel.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTree.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTreeRel.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/Rule.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleContent.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleExcel.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleField.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/response/UploadResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/KnowledgeTreeService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/RuleService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/KnowledgeTreeServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/RuleServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLog.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLogAspect.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/controller/v2/LoggerController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/mapper/LoggerMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/Logger.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/request/LoggerParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/LogService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/impl/LogServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/redis/RedisManager.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConditionConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleRunnerConst.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleInfoController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleVersionController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleConditionInfoMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleFieldInfoMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleInfoMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleLoopGroupActionMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleVersionMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleConditionInfo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleFieldInfo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleInfo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleLoopGroupAction.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleVersion.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/param/RuleSetNodeResultParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleListParamV2.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleUpdateStatusParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleConditionVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVersionVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleConditionService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleFieldInfoService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleLoopGroupActionService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleVersionService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleConditionServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleFieldInfoServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleLoopGroupActionServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleVersionServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/aop/ExceptionAop.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/interceptor/SessionInterceptor.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/LoginController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysMenuController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysOrganizationController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysRoleController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysUserController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/DepartmentMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/MenuMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/RoleMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysMenuMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysOrganizationMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysRoleMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysUserMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/UserMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Department.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Menu.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/MenuJson.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Pager.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Role.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysMenu.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysOrganization.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysRole.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysSuccess.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysUser.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/User.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/UserRole.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/request/LoginInfoParam.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/response/SysMenuVo.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/DepartmentService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/MenuSevice.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/RoleService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysMenuService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysOrganizationService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysRoleService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysUserService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/UserService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/DepartmentServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/MenuServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/RoleServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysMenuServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysOrganizationServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysRoleServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysUserServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/UserServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/consts/TacticsType.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/mapper/TacticsOutputMapper.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/model/TacticsOutput.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/TacticsOutputService.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/impl/TacticsOutputServiceImpl.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/AccountSessionWrap.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/BracketMatchUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CollectionUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CommonUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CustomValueUtils.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/DataHelp.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ImageCut.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ListPageUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/MD5.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PageBean.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PagerJsonResponse.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Properties.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/RequestUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ResponseUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Section.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SectionUtils.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SessionManager.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/StringUtil.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SysConstant.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/UploadController.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpClient.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpsException.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/MySSLSocketFactory.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/PostParameter.java create mode 100644 jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/Response.java create mode 100644 jar-enginex-manager/src/main/resources/application-dev.properties create mode 100644 jar-enginex-manager/src/main/resources/application-prod.properties create mode 100644 jar-enginex-manager/src/main/resources/application-test.properties create mode 100644 jar-enginex-manager/src/main/resources/application.properties create mode 100644 jar-enginex-manager/src/main/resources/datamanage/FieldCondMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/datamanage/FieldMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/datamanage/FieldTypeMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/datamanage/FieldTypeUserMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/datamanage/FieldUserMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/excleTemplate/field.xlsx create mode 100644 jar-enginex-manager/src/main/resources/excleTemplate/listDb.xlsx create mode 100644 jar-enginex-manager/src/main/resources/interfacemanage/InterfaceMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/EngineRuleRelMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeRelMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/RuleContentMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/RuleFieldMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/knowledge/RuleMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/logger/loggerMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/logging-config.xml create mode 100644 jar-enginex-manager/src/main/resources/rule/RuleMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/DepartmentMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/MenuMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/RoleMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/SysMenuMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/SysOrganizationMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/SysRoleMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/SysUserMapper.xml create mode 100644 jar-enginex-manager/src/main/resources/system/UserMapper.xml diff --git a/jar-enginex-manager/.gitignore b/jar-enginex-manager/.gitignore new file mode 100644 index 0000000..1c430e5 --- /dev/null +++ b/jar-enginex-manager/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.idea +.Archive/ +.vscode/ +dist +*.log +target/ +*.iml +apidoc/ diff --git a/jar-enginex-manager/README.md b/jar-enginex-manager/README.md new file mode 100644 index 0000000..e69de29 diff --git a/jar-enginex-manager/pom.xml b/jar-enginex-manager/pom.xml new file mode 100644 index 0000000..9899279 --- /dev/null +++ b/jar-enginex-manager/pom.xml @@ -0,0 +1,306 @@ + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.4.2 + + + cn.fiboai + enginex-manager + 0.0.1-SNAPSHOT + jar-enginex-manager + http://maven.apache.org + + 4.0.0.RELEASE + 3.2.4 + 1.8.9 + 1.7.7 + 1.2.12 + 6.4.0.Final + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + + + + org.springframework.boot + spring-boot-starter-log4j2 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + junit + junit + test + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + 1.2.3 + + + org.mybatis + mybatis + + + org.mybatis + mybatis-spring + + + + + + + + com.baomidou + mybatis-plus-boot-starter + 3.3.2 + + + + mysql + mysql-connector-java + + + + com.alibaba + druid-spring-boot-starter + 1.1.21 + + + + org.codehaus.jackson + jackson-mapper-lgpl + 1.7.4 + + + + org.apache.commons + commons-lang3 + 3.1 + + + + com.alibaba + fastjson + 1.2.4 + + + + org.projectlombok + lombok + 1.18.0 + + + + org.springframework.boot + spring-boot-starter-aop + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + 1.2.3 + + + org.mybatis + mybatis + + + org.mybatis + mybatis-spring + + + + + + + + javax.servlet + jstl + 1.2 + + + javax.servlet + servlet-api + 2.5 + + + + org.apache.velocity + velocity + 1.7 + + + + org.apache.velocity + velocity-tools + 2.0 + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + org.apache.httpcomponents + httpclient + 4.2.1 + + + commons-httpclient + commons-httpclient + 3.1 + + + commons-codec + commons-codec + 1.8 + + + + com.github.pagehelper + pagehelper + 5.0.0-rc + + + + + org.apache.poi + poi + 3.8 + + + org.apache.poi + poi-ooxml + 3.8 + + + + + org.apache.httpcomponents + httpclient + 4.5.2 + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + com.itextpdf + itextpdf + 5.4.3 + + + com.itextpdf + itext-asian + 5.2.0 + + + + + redis.clients + jedis + 2.4.2 + + + + org.projectlombok + lombok + 1.18.0 + + + + org.jpmml + pmml-evaluator + 1.4.1 + + + org.jpmml + pmml-evaluator-extension + 1.4.1 + + + + + io.springfox + springfox-swagger2 + 2.5.0 + + + + com.github.xiaoymin + swagger-bootstrap-ui + 1.9.6 + + + org.springframework.boot + spring-boot-test + + + junit + junit + + + org.springframework + spring-test + + + com.alibaba + transmittable-thread-local + 2.2.0 + + + + + + + src/main/java + + + **/*.xml + + + + + src/main/resources + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/JarEnginexManagerApplication.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/JarEnginexManagerApplication.java new file mode 100644 index 0000000..b14bd79 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/JarEnginexManagerApplication.java @@ -0,0 +1,19 @@ +package com.risk.riskmanage; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication +@EnableTransactionManagement +@MapperScan("com.risk.riskmanage.*.mapper") +@ComponentScan(basePackages = "com.risk.riskmanage.**") +public class JarEnginexManagerApplication { + + public static void main(String[] args) { + SpringApplication.run(JarEnginexManagerApplication.class, args); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseController.java new file mode 100644 index 0000000..89b3322 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseController.java @@ -0,0 +1,8 @@ +package com.risk.riskmanage.common.basefactory; + +/** + * @ClassName: BaseController
+ */ +public abstract class BaseController extends CcpBaseController{ + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseService.java new file mode 100644 index 0000000..2629bc4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/BaseService.java @@ -0,0 +1,139 @@ +package com.risk.riskmanage.common.basefactory; + +import com.risk.riskmanage.datamanage.mapper.*; +import com.risk.riskmanage.knowledge.mapper.*; +import com.risk.riskmanage.logger.mapper.LoggerMapper; +import com.risk.riskmanage.system.mapper.*; + +import javax.annotation.Resource; + + + +/** + * @ClassName: BaseService
+ * @Description: 基础service,统一注入mapper接口.
+ */ +public abstract class BaseService { + + + /** + * 后台角色管理mapper. + */ + @Resource + public RoleMapper roleMapper; + + /** + * 后台部门管理mapper. + */ + @Resource + public DepartmentMapper departmentMapper; + + /** + * 后台用户管理mapper. + */ + @Resource + public UserMapper userMapper; + + + /** + *菜单管理 + */ + @Resource + public MenuMapper menuMapper; + + /** + * 用户管理 + */ + @Resource + public SysUserMapper sysUserMapper; + + /** + * 角色管理 + */ + @Resource + public SysRoleMapper sysRoleMapper; + + /** + * 菜单管理 + */ + @Resource + public SysMenuMapper sysMenuMapper; + + /** + * 组织管理 + */ + @Resource + public SysOrganizationMapper sysOrganizationMapper; + + /** + * 知识库目录管理 + */ + @Resource + public KnowledgeTreeMapper knowledgeTreeMapper; + + /** + * 规则管理树形目录与引擎关系管理 + */ + @Resource + public KnowledgeTreeRelMapper knowledgeTreeRelMapper; + + /** + * 规则管理 + */ + @Resource + public RuleMapper ruleMapper; + + /** + * 规则字段管理 + */ + @Resource + public RuleFieldMapper ruleFieldMapper; + + /** + * 规则内容管理 + */ + @Resource + public RuleContentMapper ruleContentMapper; + /** + * 字段类型管理 + */ + @Resource + public FieldTypeMapper fieldTypeMapper; + + /** + * 字段类型用户关系管理 + */ + @Resource + public FieldTypeUserMapper fieldTypeUserMapper; + + /** + * 字段管理 + */ + @Resource + public FieldMapper fieldMapper; + + /** + * 字段用户关系管理 + */ + @Resource + public FieldUserMapper fieldUserMapper; + + /** + * 用户字段条件区域设置 + */ + @Resource + public FieldCondMapper fieldCondMapper; + + /** + * 引擎与引用规则关系 + */ + @Resource + public EngineRuleRelMapper engineRuleRelMapper; + + /** + * 日志mapper + */ + @Resource + public LoggerMapper loggerMapper; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/CcpBaseController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/CcpBaseController.java new file mode 100644 index 0000000..6cf77af --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/CcpBaseController.java @@ -0,0 +1,15 @@ +package com.risk.riskmanage.common.basefactory; + +import javax.annotation.Resource; + +/** + * @ClassName: CcpBaseController
+ * @Description: TODO ADD FUNCTION.
+ */ +public abstract class CcpBaseController { + /** + * 使用s可以获得所有service + */ + @Resource + public ServiceFactory s; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/ServiceFactory.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/ServiceFactory.java new file mode 100644 index 0000000..071195c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/basefactory/ServiceFactory.java @@ -0,0 +1,92 @@ +package com.risk.riskmanage.common.basefactory; + +import com.risk.riskmanage.config.ConfigHolder; +import com.risk.riskmanage.datamanage.service.FieldService; +import com.risk.riskmanage.datamanage.service.FieldTypeService; +import com.risk.riskmanage.knowledge.service.*; +import com.risk.riskmanage.logger.service.LogService; +import com.risk.riskmanage.system.service.*; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @ClassName: ServiceFactory
+ * @Description: TODO ADD FUNCTION.
+ */ +@Service("s") +public class ServiceFactory { + + + + + /** + * 后台用户管理Service. + */ + @Resource + public UserService userService; + + + + /** + * 用户管理 + */ + @Resource + public SysUserService sysUserService; + + /** + * 角色管理 + */ + @Resource + public SysRoleService sysRoleService; + + /** + * 菜单管理 + */ + @Resource + public SysMenuService sysMenuService; + + + /** + * 组织管理 + */ + @Resource + public SysOrganizationService sysOrganizationService; + + /** + * 知识库目录管理service + * */ + @Resource + public KnowledgeTreeService knowledgeTreeService; + + + + /** + * 规则管理service + * */ + @Resource + public RuleService ruleService; + /** + * 字段类型管理 + */ + @Resource + public FieldTypeService fieldTypeService; + + /** + * 字段管理 + */ + @Resource + public FieldService fieldService; + /** + * 日志service + * */ + @Resource + public LogService loggerService; + + /** + * 配置中心 + */ + @Resource + public ConfigHolder configHolder; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/CommonConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/CommonConst.java new file mode 100644 index 0000000..9c28a82 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/CommonConst.java @@ -0,0 +1,48 @@ +package com.risk.riskmanage.common.constants; + +public class CommonConst { + + /** + * 逗号 + */ + public static final String SYMBOL_COMMA = ","; + + /** + * 单引号 + */ + public static final String SYMBOL_SINGLE_QUOTA = "\'"; + + /** + * 空格 + */ + public static final String SYMBOL_BLANK = " "; + + /** + * 空字符串 + */ + public static final String STRING_EMPTY = ""; + + /** + * 评分卡前缀 + */ + public static final String SCORECARD_STARTION = "sc"; + + /** + * 字段前缀 + */ + public static final String SELF_FIELD_STARTION = "f"; + + /** + * 是否命中 + * */ + public static final String IS_HIT = "是否命中"; + + /** + * 得分 + * */ + public static final String SCORE = "得分"; + /** + * 30分钟(s) + * */ + public static final long MINUTE_30 = 1800000; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/Constants.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/Constants.java new file mode 100644 index 0000000..13e51d8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/Constants.java @@ -0,0 +1,21 @@ +package com.risk.riskmanage.common.constants; + +/** + * 公共变量约定 + */ +public class Constants { + // token名称 + public static final String SYSTEM_KEY_TOKEN = "token"; + // token时间 单位秒 + public static final Long LOGIN_TOKEN_TIME = 7200L; + // token最大剩余时间,需刷新 单位秒 + public static final Long LOGIN_TOKEN_REFRESH_TIME = 600L; + + // 规则集节点相关常量 + public interface ruleNode { + // 互斥组 + int MUTEXGROUP = 1; + // 执行组 + int EXECUTEGROUP = 2; + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeConst.java new file mode 100644 index 0000000..cb5f9b7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeConst.java @@ -0,0 +1,322 @@ +package com.risk.riskmanage.common.constants; + +public class OpTypeConst { + + /** + * 登入 + * */ + public static final String LOGIN = "登入"; + + /** + * 登出 + * */ + public static final String LOGOUT = "登出"; + + /** + * 保存菜单 + * */ + public static final String SAVE_MENU = " 保存菜单"; + + /** + * 修改菜单 + * */ + public static final String UPDATE_MENU = "修改菜单"; + + /** + * 删除菜单 + * */ + public static final String DELETE_MENU = " 删除菜单"; + + /** + * 保存相应角色的菜单权限 + * */ + public static final String SAVE_MENU_ROLE = "新增相应角色的菜单权限"; + + /** + * 保存系统菜单 + * */ + public static final String SAVE_SYS_MENU = "新增系统菜单"; + + /** + * 修改系统菜单 + * */ + public static final String UPDATE_SYS_MENU = "修改系统菜单"; + + /** + * 删除系统菜单 + * */ + public static final String DELETE_SYS_MENU = "删除系统菜单"; + + /** + * 批量删除系统菜单 + * */ + public static final String BATCH_DELETE_SYS_MENU = "批量删除系统菜单"; + + /** + * 保存、修改资源树 + * */ + public static final String SAVE_OR_UPDATE_MENU_ROLE = "保存、修改资源树"; + + /** + * 保存、修改引擎树 + * */ + public static final String SAVE_ROLE_ENGINE = "保存、修改引擎树"; + + /** + * 保存组织信息 + * */ + public static final String SAVE_ORGAN = "保存组织信息"; + + /** + * 修改组织信息 + * */ + public static final String UPDATE_ORGAN = " 修改组织信息"; + + /** + *删除组织信息 + * */ + public static final String DELTET_ORGAN = "删除组织信息"; + + /** + *批量删除组织信息 + * */ + public static final String BATCH_DELTET_ORGAN ="批量删除组织信息"; + + /** + *修改组织状态信息 + * */ + public static final String UPDATE_ORGAN_STATUS ="修改组织状态信息"; + + /** + *保存本组织角色 + * */ + public static final String SAVE_SYS_ROLE ="保存本组织角色"; + + /** + *修改本组织角色 + * */ + public static final String UPDATE_SYS_ROLE ="修改本组织角色"; + + /** + *删除本组织角色 + * */ + public static final String DELETE_SYS_ROLE ="删除本组织角色"; + + /** + *批量删除本组织角色 + * */ + public static final String BATCH_DELETE_SYS_ROLE ="批量删除本组织角色"; + + /** + *保存公司管理员角色 + * */ + public static final String SAVE_ORANG_MANAGER_ROLE ="保存公司管理员角色"; + + /** + *修改本组织角色状态 + * */ + public static final String UPDATE_SYS_ROLE_STATUS ="修改本组织角色状态"; + + /** + *保存用户信息 + * */ + public static final String SAVE_SYS_USER ="保存用户信息"; + + /** + *修改用户信息 + * */ + public static final String UPDATE_SYS_USER ="修改用户信息"; + + /** + *删除用户信息 + * */ + public static final String DELETE_SYS_USER ="删除用户信息"; + + /** + *批量删除用户信息 + * */ + public static final String BATCH_DELETE_SYS_USER ="批量删除用户信息"; + + /** + *修改用户状态 + * */ + public static final String UPDATE_SYS_USER_STATUS ="修改用户状态"; + + /** + *重置用户密码 + * */ + public static final String RESET_PASSWORD ="重置用户密码"; + + /** + *修改用户密码 + * */ + public static final String UPDTE_PASSWORD ="修改用户密码"; + + /** + * 保存字段映射或数据管理目录 + * */ + public static final String SAVE_FILED_TREE = "保存字段映射或数据管理目录"; + + /** + * 修改字段映射或数据管理目录 + * */ + public static final String UPDATE_FILED_TREE = "修改字段映射或数据管理目录"; + + /** + * 保存数据管理中的字段 + * */ + public static final String SAVE_FILED = "保存数据管理中的字段"; + + /** + * 修改数据管理中的字段 + * */ + public static final String UPDATE_FILED= "修改数据管理中的字段"; + + /** + * 修改数据管理中的字段 + * */ + public static final String UPDATE_FILED_STATUS = "修改数据管理中的字段"; + + /** + * 保存字段映射中的字段 + * */ + public static final String SAVE_MAPPING_FILED = "保存字段映射中的字段"; + + /** + * 修改字段映射中的字段 + * */ + public static final String UPDATE_MAPPING_FILED= "修改字段映射中的字段"; + + /** + * 修改字段映射中的字段状态 + * */ + public static final String UPDATE_MAPPING_FILED_STATUS= "修改字段映射中的字段状态"; + + /** + * 保存知识库或规则管理目录 + * */ + public static final String SAVE_KNOWLEDGE_TREE = "保存知识库或规则管理目录"; + + /** + * 修改规则知识库或规则管理目录 + * */ + public static final String UPDATE_KNOWLEDGE_TREE = "修改规则知识库或规则管理目录"; + + /** + * 保存规则 + * */ + public static final String SAVE_RULE = "保存规则"; + + /** + * 修改规则 + * */ + public static final String UPDATE_RULE = "修改规则"; + + /** + * 修改规则状态 + * */ + public static final String UPDATE_RULE_STATUS = "修改规则状态"; + + /** + *修改分卡状态 + * */ + public static final String UPDATE_SCORECARD_STATUS = "修改分卡状态"; + + /** + *节点重命名 + * */ + public static final String RENAME_NODE = "节点重命名"; + + /** + *保存节点 + * */ + public static final String SAVE_NODE = "保存节点"; + + /** + *修改节点 + * */ + public static final String UPDATE_NODE = "修改节点"; + + /** + *删除节点 + * */ + public static final String DELETE_NODE ="删除节点"; + + /** + * 批量删除节点 + * */ + public static final String BATCH_DELETE_NODE ="批量删除节点"; + + /** + * 删除节点之间的连线 + * */ + public static final String DELETE_NODE_LINK ="删除节点之间的连线"; + + /** + * 复制节点 + * */ + public static final String COPY_NODE ="复制节点"; + + /** + * 保存引擎 + * */ + public static final String SAVE_ENGINE ="保存引擎"; + + /** + * 保存或修改引擎 + * */ + public static final String UPDATE_ENGINE ="保存或修改引擎"; + + + /** + * 保存版本 + * */ + public static final String SAVE_VERSION ="保存版本"; + + /** + * 修改版本 + * */ + public static final String UPDATE_VERSION ="修改版本"; + + /** + * 删除版本 + * */ + public static final String DELETE_VERSION ="删除版本"; + + /** + * 引擎部署 + * */ + public static final String ENGINDE_DEPLOY="引擎部署"; + + /** + * 引擎停止部署 + * */ + public static final String ENGINDE_UNDEPLOY="引擎停止部署"; + + /** + * 清空引擎节点 + * */ + public static final String CLEAR_NODE ="清空引擎节点"; + + /** + * 添加引擎引用规则关系 + * */ + public static final String ADD_RULE_QUOTES_REL = "添加引擎引用规则关系"; + + + /** + * 批量修改引擎引用规则状态 + * */ + public static final String BATCH_UPDATE_STATUS_FOR_QUOTES_RULE ="批量修改引擎引用规则状态"; + + + /** + * 添加引擎引用字段关系 + * */ + public static final String ADD_FIELD_QUOTES_REL = "添加引擎引用字段关系"; + + /** + * 数据填写 + * */ + public static final String FILL_DATA="数据填写"; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeEnum.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeEnum.java new file mode 100644 index 0000000..985ef50 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/OpTypeEnum.java @@ -0,0 +1,345 @@ +package com.risk.riskmanage.common.constants; + +public enum OpTypeEnum { + + /** + * 登入 + * */ + LOGIN ("login",OpTypeConst.LOGIN), + + /** + * 登出 + * */ + LOGOUT("logout",OpTypeConst.LOGOUT), + + /** + * 保存菜单 + * */ + SAVE_MENU("saveMenu",OpTypeConst.SAVE_MENU), + + /** + * 修改菜单 + * */ + UPDATE_MENU("updateMenu",OpTypeConst.UPDATE_MENU), + + /** + * 删除菜单 + * */ + DELETE_MENU("deleteMenu",OpTypeConst.DELETE_MENU), + + + /** + * 保存相应角色的菜单权限 + * */ + SAVE_MENU_ROLE("saveMenuRole",OpTypeConst.SAVE_MENU_ROLE), + + + /** + * 保存系统菜单 + * */ + SAVE_SYS_MENU("saveSysMenu",OpTypeConst.SAVE_SYS_MENU), + + /** + * 修改系统菜单 + * */ + UPDATE_SYS_MENU("updateSysMenu",OpTypeConst.UPDATE_SYS_MENU), + + /** + * 删除系统菜单 + * */ + DELETE_SYS_MENU("deleteSysMenu",OpTypeConst.DELETE_SYS_MENU), + + /** + * 批量删除系统菜单 + * */ + BATCH_DELETE_SYS_MENU("batchDeleteSysMenu",OpTypeConst.BATCH_DELETE_SYS_MENU), + + /** + * 保存、修改资源树 + * */ + SAVE_OR_UPDATE_MENU_ROLE("saveOrUpdateMenuRole",OpTypeConst.SAVE_OR_UPDATE_MENU_ROLE), + + /** + * 保存、修改引擎树 + * */ + SAVE_ROLE_ENGINE("saveRoleEngine",OpTypeConst.SAVE_ROLE_ENGINE), + + /** + * 保存组织信息 + * */ + SAVE_ORGAN("saveOrgan",OpTypeConst.SAVE_ORGAN), + + /** + * 修改组织信息 + * */ + UPDATE_ORGAN("updateOrgan",OpTypeConst.UPDATE_ORGAN), + + /** + *删除组织信息 + * */ + DELTET_ORGAN("deleteOrgan",OpTypeConst.DELTET_ORGAN), + + /** + *批量删除组织信息 + * */ + BATCH_DELTET_ORGAN("batchDeleteOrgan",OpTypeConst.BATCH_DELTET_ORGAN), + + /** + *修改组织状态信息 + * */ + UPDATE_ORGAN_STATUS("updateOrganStatus",OpTypeConst.UPDATE_ORGAN_STATUS), + + /** + *保存本组织角色 + * */ + SAVE_SYS_ROLE("saveSysRole",OpTypeConst.SAVE_SYS_ROLE), + + /** + *修改本组织角色 + * */ + UPDATE_SYS_ROLE("updateSysRole",OpTypeConst.UPDATE_SYS_ROLE), + + /** + *删除本组织角色 + * */ + DELETE_SYS_ROLE("deleteSysRole",OpTypeConst.DELETE_SYS_ROLE), + + /** + *批量删除本组织角色 + * */ + BATCH_DELETE_SYS_ROLE("batchDeleteSysRole",OpTypeConst.BATCH_DELETE_SYS_ROLE), + + /** + *保存公司管理员角色 + * */ + SAVE_ORANG_MANAGER_ROLE("saveOrganManagerRole",OpTypeConst.SAVE_ORANG_MANAGER_ROLE), + + /** + *修改本组织角色状态 + * */ + UPDATE_SYS_ROLE_STATUS("updateSysRoleStatus",OpTypeConst.UPDATE_SYS_ROLE_STATUS), + + /** + *保存用户信息 + * */ + SAVE_SYS_USER("saveSysUser",OpTypeConst.SAVE_SYS_USER), + + /** + *修改用户信息 + * */ + UPDATE_SYS_USER("updateSysUser",OpTypeConst.UPDATE_SYS_USER), + + /** + *删除用户信息 + * */ + DELETE_SYS_USER("deleteSysUser",OpTypeConst.DELETE_SYS_USER), + + /** + *批量删除用户信息 + * */ + BATCH_DELETE_SYS_USER("batchDeleteSysUser",OpTypeConst.BATCH_DELETE_SYS_USER), + + /** + *修改用户状态 + * */ + UPDATE_SYS_USER_STATUS("updateSysUserStatus",OpTypeConst.UPDATE_SYS_USER_STATUS), + + /** + *重置用户密码 + * */ + RESET_PASSWORD("resetPassword",OpTypeConst.RESET_PASSWORD), + + /** + *修改用户密码 + * */ + UPDTE_PASSWORD("updatePassword",OpTypeConst.UPDTE_PASSWORD), + + /** + * 保存字段映射或数据管理目录 + * */ + SAVE_FILED_TREE("saveFieldTree",OpTypeConst.SAVE_FILED_TREE), + + /** + * 修改字段映射或数据管理目录 + * */ + UPDATE_FILED_TREE("updateFieldTree",OpTypeConst.UPDATE_FILED_TREE), + + /** + * 保存数据管理中的字段 + * */ + SAVE_FILED("saveField",OpTypeConst.SAVE_FILED), + + /** + * 修改数据管理中的字段 + * */ + UPDATE_FILED("updateField",OpTypeConst.UPDATE_FILED), + + /** + * 修改数据管理中的字段 + * */ + UPDATE_FILED_STATUS("updateFieldStatus",OpTypeConst.UPDATE_FILED_STATUS), + + /** + * 保存字段映射中的字段 + * */ + SAVE_MAPPING_FILED("saveMappingField",OpTypeConst.SAVE_MAPPING_FILED), + + /** + * 修改字段映射中的字段 + * */ + UPDATE_MAPPING_FILED("updateMappingField",OpTypeConst.UPDATE_MAPPING_FILED), + + /** + * 修改字段映射中的字段状态 + * */ + UPDATE_MAPPING_FILED_STATUS("updateMappingFieldStatus",OpTypeConst.UPDATE_MAPPING_FILED_STATUS), + /** + * 保存知识库或规则管理目录 + * */ + SAVE_KNOWLEDGE_TREE("saveKnowledgeTree",OpTypeConst.SAVE_KNOWLEDGE_TREE), + + /** + * 修改规则知识库或规则管理目录 + * */ + UPDATE_KNOWLEDGE_TREE("updateKnowledgeTree",OpTypeConst.UPDATE_KNOWLEDGE_TREE), + + /** + * 保存规则 + * */ + SAVE_RULE("saveRule",OpTypeConst.SAVE_RULE), + + /** + * 修改规则 + * */ + UPDATE_RULE("upadteRule",OpTypeConst.UPDATE_RULE), + + /** + * 修改规则状态 + * */ + UPDATE_RULE_STATUS("upadteRuleStatus",OpTypeConst.UPDATE_RULE_STATUS), + /** + *修改规则状态 + * */ + UPDATE_SCORECARD_STATUS("upadteScorecardStatus",OpTypeConst.UPDATE_SCORECARD_STATUS), + + /** + *节点重命名 + * */ + RENAME_NODE("renameNode",OpTypeConst.RENAME_NODE), + + /** + *保存节点 + * */ + SAVE_NODE("saveNode",OpTypeConst.SAVE_NODE), + + /** + *修改节点 + * */ + UPDATE_NODE("updateNode",OpTypeConst.UPDATE_NODE), + + /** + *删除节点 + * */ + DELETE_NODE("deleteNode",OpTypeConst.DELETE_NODE), + + /** + *批量删除节点 + * */ + BATCH_DELETE_NODE("batchDeleteNode",OpTypeConst.BATCH_DELETE_NODE), + + /** + *删除节点之间的连线 + * */ + DELETE_NODE_LINK("beleteNodeLink",OpTypeConst.DELETE_NODE_LINK), + + /** + *复制节点 + * */ + COPY_NODE("copyNode",OpTypeConst.COPY_NODE), + + /** + *保存引擎 + * */ + SAVE_ENGINE("saveEngine",OpTypeConst.SAVE_ENGINE), + + /** + *修改引擎 + * */ + UPDATE_ENGINE("updateEngine",OpTypeConst.UPDATE_ENGINE), + + /** + *保存版本 + * */ + SAVE_VERSION("saveVersion",OpTypeConst.SAVE_VERSION), + + /** + *修改版本 + * */ + UPDATE_VERSION("updateVersion",OpTypeConst.UPDATE_VERSION), + + /** + *删除版本 + * */ + DELETE_VERSION("deleteVersion",OpTypeConst.DELETE_VERSION), + + /** + * 引擎部署 + * */ + ENGINDE_DEPLOY("engineDepoly",OpTypeConst.ENGINDE_DEPLOY), + + /** + * 引擎停止部署 + * */ + ENGINDE_UNDEPLOY("engineUndepoly",OpTypeConst.ENGINDE_UNDEPLOY), + + /** + * 清空引擎节点 + * */ + CLEAR_NODE("clearNode",OpTypeConst.CLEAR_NODE), + + /** + * 添加引擎引用规则关系 + * */ + ADD_RULE_QUOTES_REL("addRuleQuotesRel",OpTypeConst.ADD_RULE_QUOTES_REL), + + /** + * 批量修改引擎引用规则状态 + * */ + BATCH_UPDATE_STATUS_FOR_QUOTES_RULE("batchUpadteStatusForQuotesRule",OpTypeConst.BATCH_UPDATE_STATUS_FOR_QUOTES_RULE), + + /** + * 添加引擎引用字段关系 + * */ + ADD_FIELD_QUOTES_REL("addFieldQuotesRel",OpTypeConst.ADD_FIELD_QUOTES_REL), + + /** + * 数据填写 + * */ + FILL_DATA("fillData",OpTypeConst.FILL_DATA); + + private String value; + + private String type; + + private OpTypeEnum(String value, String type) + { + this.value = value; + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/ServiceFilterConstant.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/ServiceFilterConstant.java new file mode 100644 index 0000000..0f7f70b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/ServiceFilterConstant.java @@ -0,0 +1,23 @@ +package com.risk.riskmanage.common.constants; + +import java.util.HashSet; +import java.util.Set; + +/** + * 服务过滤配置 此处配置的uri都是不需要通过session管理,免token传参。 + */ +public class ServiceFilterConstant { + private static Set uriSet = new HashSet(); + static { + uriSet.add("/Riskmanage/v2/login/login");// 密码登录 + uriSet.add("/Riskmanage/v2/datamanage/field/downTemplate");// 指标模板下载 + uriSet.add("/Riskmanage/v2/datamanage/listmanage/downTemplate");// 名单库模板下载 + } + + public static boolean isSessionFilter(String uri) { + if (uriSet.contains(uri)) { + return true; + } + return false; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/StatusConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/StatusConst.java new file mode 100644 index 0000000..05c356d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/constants/StatusConst.java @@ -0,0 +1,8 @@ +package com.risk.riskmanage.common.constants; + +public class StatusConst { + //状态 + public static final int STATUS_ENABLED = 1;//启用状态,默认 + public static final int STATUS_DEAD = 0;//停用状态 + public static final int STATUS_DELETE = -1;//删除状态 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/controllor/CommonControllor.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/controllor/CommonControllor.java new file mode 100644 index 0000000..6bb6e29 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/controllor/CommonControllor.java @@ -0,0 +1,36 @@ +package com.risk.riskmanage.common.controllor; + +import com.risk.riskmanage.util.SectionUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Controller +@RequestMapping("/common/validate") +public class CommonControllor { + + @RequestMapping("/section") + @ResponseBody + public Map saveEngineNode(@RequestParam("sections[]") List sections) { + Map resultMap = new HashMap(); + // 验证区间完整性 + if (SectionUtils.checkSectionValid(sections)) { + if (SectionUtils.checkSectionCoincide(sections)) { + resultMap.put("result", "-1"); + resultMap.put("msg", "区间有重叠,请核准!"); + } else { + resultMap.put("result", "1"); + resultMap.put("msg", "区间有效!"); + } + } else { + resultMap.put("result", "-1"); + resultMap.put("msg", "区间不完整,请核准!"); + } + return resultMap; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/enums/ErrorCodeEnum.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/enums/ErrorCodeEnum.java new file mode 100644 index 0000000..b530081 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/enums/ErrorCodeEnum.java @@ -0,0 +1,82 @@ +package com.risk.riskmanage.common.enums; + +public enum ErrorCodeEnum { + + SERVER_ERROR(ErrorCodeEnum.ERROR_CODE + 101, "服务繁忙,请稍后再试!"), + LOGIN_ERROR(ErrorCodeEnum.ERROR_CODE + 102, "登录失败"), + ERROR_TOKEN_EXPIRE(ErrorCodeEnum.ERROR_CODE + 103, "登录授权码已过期"), + FIELD_TYPE_REPEAT(ErrorCodeEnum.ERROR_CODE + 104, "字段类型已存在"), + FIELD_EN_REPEAT(ErrorCodeEnum.ERROR_CODE + 105, "字段英文名已存在"), + FIELD_CN_REPEAT(ErrorCodeEnum.ERROR_CODE + 106, "字段中文名已存在"), + FIELD_BE_USERD(ErrorCodeEnum.ERROR_CODE + 107, "字段被使用,无法修改"), + LIST_DB_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 108, "黑白名单名称已存在"), + RULE_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 109, "规则名称已存在"), + RULE_CODE_REPEAT(ErrorCodeEnum.ERROR_CODE + 110, "规则代码已存在"), + SCORECARD_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 111, "评分卡名称已存在"), + SCORECARD_CODE_REPEAT(ErrorCodeEnum.ERROR_CODE + 112, "评分卡代码已存在"), + UN_PERMISSION(ErrorCodeEnum.ERROR_CODE + 113, "没有访问权限"), + CREATE_USER_NAME_ERROR(ErrorCodeEnum.ERROR_CODE + 114, "姓名不能为超级管理员"), + CREATE_USER_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 115, "账号或员工编号已存在"), + CREATE_ROLE_ADMIN_REPEAT(ErrorCodeEnum.ERROR_CODE + 116, "每个公司只能创建一个公司管理员"), + CREATE_ROLE_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 117, "角色名已存在"), + CREATE_MENU_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 118, "名称或编号已存在"), + CREATE_ORGAN_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 119, "名称或编号已存在"), + + UPDATE_RULE_ERROR(ErrorCodeEnum.ERROR_CODE+120,"修改规则内容失败"), + RULE_CONDITION_TYPE_ERROR(ErrorCodeEnum.ERROR_CODE+121,"规则条件类型错误"), + RULE_SAVE_ERROR(ErrorCodeEnum.ERROR_CODE+122,"规则保存失败"), + + RULE_UPLOAD_ERROR(ErrorCodeEnum.ERROR_CODE+123,"规则导入失败"), + DECISION_TABLES_CODE_REPEAT(ErrorCodeEnum.ERROR_CODE + 124, "决策表代码已存在"), + DECISION_TABLES_SAVE_ERROR(ErrorCodeEnum.ERROR_CODE+125,"决策表保存失败"), + DECISION_TABLES_UPDATE_ERROR(ErrorCodeEnum.ERROR_CODE+126,"决策表修改状态失败"), + DECISION_TABLES_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 127, "决策表名称已存在"), + DECISION_TREE_SAVE_ERROR(ErrorCodeEnum.ERROR_CODE+130,"决策树保存失败"), + DECISION_TREE_UPDATE_ERROR(ErrorCodeEnum.ERROR_CODE+131,"决策树修改状态失败"), + LIST_OPERATION_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE+132,"集合操作名称重复"), + LIST_OPERATION_Code_REPEAT(ErrorCodeEnum.ERROR_CODE+133,"集合操作代码重复"), + + PARAMS_EXCEPTION(ErrorCodeEnum.ERROR_CODE + 555, "参数异常"), + CLASS_CAST_EXCEPTION(ErrorCodeEnum.ERROR_CODE + 556, "类型转换异常"), + JSON_CAST_EXCEPTION(ErrorCodeEnum.ERROR_CODE + 557, "JSON转换异常"), + NULL_POINT_EREXCEPTION(ErrorCodeEnum.ERROR_CODE + 558, "NPE问题,请联系管理员"), + DATA_IS_NOT_EXIST(ErrorCodeEnum.ERROR_CODE + 559, "数据不存在"), + SECTION_ERROR(ErrorCodeEnum.ERROR_CODE + 560, "区间有误"), + + SCORECARD_NOT_SESECT(ErrorCodeEnum.ERROR_CODE + 561, "在本条路径上,评分卡节点有空值"), + NODECHILD_NOT_SESECT(ErrorCodeEnum.ERROR_CODE + 562, "在本条路径上,子引擎节点有空值"), + DECISION_TABLES_NOT_SELECT(ErrorCodeEnum.ERROR_CODE + 563, "在本条路径上,决策表节点有空值"), + FOLDER_NOT_EXIST(ErrorCodeEnum.ERROR_CODE+564,"文件夹不存在"), + + UPDATE_INTERFACE_ERROR(ErrorCodeEnum.ERROR_CODE+565,"修改接口内容失败"), + INTERFACE_CONDITION_TYPE_ERROR(ErrorCodeEnum.ERROR_CODE+566,"接口条件类型错误"), + INTERFACE_SAVE_ERROR(ErrorCodeEnum.ERROR_CODE+567,"接口保存失败"), + INTERFACE_NAME_REPEAT(ErrorCodeEnum.ERROR_CODE + 568, "接口名称已存在"), + FAIL_IN_LINK(ErrorCodeEnum.ERROR_CODE+600,"失败"), + SQL_FIELD_HAVE_RISK(ErrorCodeEnum.ERROR_CODE+601,"存在有风险sql关键词" ), + + FILE_UPLOAD_ERROR(ErrorCodeEnum.ERROR_CODE+602,"导入失败"); + + /** + * 默认ERROR_CODE.
+ * 按公司要求8位长度,前两位产品。 + */ + public static final String ERROR_CODE = "01000"; + + private String code; + private String message; + + private ErrorCodeEnum(String code, String message) { + this.code = code; + this.message = message; + } + + public String getCode() { + return code; + } + + public String getMessage() { + return message; + } + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/exception/ApiException.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/exception/ApiException.java new file mode 100644 index 0000000..a8fbe03 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/exception/ApiException.java @@ -0,0 +1,57 @@ +package com.risk.riskmanage.common.exception; + + +/** + * 自定义异常消息处理 + */ +public class ApiException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1136843834946392402L; + + /** + * 异常编码 + */ + public final String errCode; + + /** + * 异常消息 + */ + public final String message; + + /** + * data + */ + public final Object data; + + public ApiException(Throwable e) { + super(e); + errCode = ""; + message = ""; + data = null; + } + + public ApiException(String errCode, String message) { + super(message); + this.errCode = errCode; + this.message = message; + this.data = null; + } + + public ApiException(String errCode, String message, Object data) { + super(message); + this.errCode = errCode; + this.message = message; + this.data = data; + } + + public ApiException(String errCode, String message, Throwable e) { + super(message, e); + this.errCode = errCode; + this.message = message; + this.data = null; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/mapper/BaseMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/mapper/BaseMapper.java new file mode 100644 index 0000000..2915ba8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/mapper/BaseMapper.java @@ -0,0 +1,60 @@ +package com.risk.riskmanage.common.mapper; + +import java.util.List; + +/** + * + * @ClassName: BaseMapper + * @Description: 公共的BaseMapper接口 + */ +public abstract interface BaseMapper { + + /** + * @Description: 根据对象删除数据 + * @param entity 对象 + * @return 是否删除成功 + */ + int deleteByExample(IdEntity entity); + + /** + * @Description: 根据对象主键ID删除数据 + * @param id 对象id编号 + * @return 是否删除成功 + */ + int deleteByPrimaryKey(Long id); + + /** + * @Description: 插入一条新的数据 + * @param entity 对象 + * @return 是否插入成功 + */ + int insertSelective(IdEntity entity); + + /** + * @Description: 根据对象主键更新对象信息 + * @param entity 对象 + * @return 是否修改成功标志 + */ + int updateByPrimaryKeySelective(IdEntity entity); + + /** + * @Description: 根据对象获取数据条数 + * @param entity 对象 + * @return 返回行数 + */ + int countByExample(IdEntity entity); + + /** + * @Description: 根据对象主键ID获取指定数据(多个) + * @param entity 对象 + * @return 对象列表 + */ + List selectByExample(IdEntity entity); + + /** + * @Description: 根据对象主键ID获取指定数据(单个) + * @param id id编号 + * @return 返回单个对象 + */ + IdEntity selectByPrimaryKey(Long id); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BasePage.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BasePage.java new file mode 100644 index 0000000..a2ea66e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BasePage.java @@ -0,0 +1,85 @@ +package com.risk.riskmanage.common.model; + +/** + * + * @ClassName: BasePageVo
+ * @Description: 分页公共基础bean.
+ */ +public class BasePage { + + /** + * 当前页数 + */ + private int page; + + /** + * 每页显示的行数 + */ + private int rows; + + /** + * 开始行数 + */ + private Integer curRow; + + /** + * 结束行数 + */ + private Integer endRow; + + /** + * 总行数 + */ + private Integer total; + + public BasePage() { + + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + /** + * setPagination:(设置当前页面和每页显示行数).
+ * @author wz + * @param page 当前页数 + * @param rows 每页显示的行数 + */ + public void setPagination(int page,int rows){ + this.page = page; + this.rows = rows; + this.curRow = (page-1)*rows; + this.endRow = (page)*rows; + } + + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getRows() { + return rows; + } + + public void setRows(int rows) { + this.rows = rows; + } + + public void setCurRow(Integer curRow) { + this.curRow = curRow; + } + + public void setEndRow(Integer endRow) { + this.endRow = endRow; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BaseParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BaseParam.java new file mode 100644 index 0000000..6a7c75b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/BaseParam.java @@ -0,0 +1,12 @@ +package com.risk.riskmanage.common.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class BaseParam extends PageDto { + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelModel.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelModel.java new file mode 100644 index 0000000..54b19db --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelModel.java @@ -0,0 +1,15 @@ +package com.risk.riskmanage.common.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ExcelModel { + private String name;//excel文件名 + private String type;//类型:xlsx,xls + private List sheets;//工作簿 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelSheetModel.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelSheetModel.java new file mode 100644 index 0000000..d4f9c71 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ExcelSheetModel.java @@ -0,0 +1,16 @@ +package com.risk.riskmanage.common.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ExcelSheetModel { + private String sheetName;//sheet名 + private List headers;//sheet中第一行内容 + private List data;//sheet数据 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/PageDto.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/PageDto.java new file mode 100644 index 0000000..3520943 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/PageDto.java @@ -0,0 +1,22 @@ +package com.risk.riskmanage.common.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class PageDto implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer pageNo = 1; + + private Integer pageSize = 10; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ResponseEntityDto.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ResponseEntityDto.java new file mode 100644 index 0000000..8ca6e0f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/ResponseEntityDto.java @@ -0,0 +1,88 @@ +package com.risk.riskmanage.common.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; + +@Data +@ToString(callSuper = true) +@ApiModel("返回对象统一封装") +public class ResponseEntityDto implements Serializable { + + private static final long serialVersionUID = -720807478055084231L; + + @ApiModelProperty("状态:1成功, 0失败") + private String status; + @ApiModelProperty("错误码") + private String error; + @ApiModelProperty("错误消息") + private String msg; + @ApiModelProperty("返回数据") + private T data; + + public ResponseEntityDto() { + + } + + public ResponseEntityDto(String status) { + this.status = status; + } + + public ResponseEntityDto(String status, String error) { + this.status = status; + this.error = error; + } + + public ResponseEntityDto(String status, T data) { + this.status = status; + this.data = data; + } + + public ResponseEntityDto(String status, String error, String msg, T data) { + this.status = status; + this.error = error; + this.msg = msg; + this.data = data; + } + + public String getStatus() { + return status; + } + + public ResponseEntityDto setStatus(String status) { + this.status = status; + return this; + } + + public String getError() { + return error; + } + + public ResponseEntityDto setError(String error) { + this.error = error; + return this; + } + + public String getMsg() { + return msg; + } + + public ResponseEntityDto setMsg(String msg) { + this.msg = msg; + return this; + } + + public T getData() { + return data; + } + + public ResponseEntityDto setData(T data) { + this.data = data; + return this; + } + + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/QueryListParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/QueryListParam.java new file mode 100644 index 0000000..691c4fc --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/QueryListParam.java @@ -0,0 +1,14 @@ +package com.risk.riskmanage.common.model.requestParam; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QueryListParam { + private Integer pageNum = 1; // 第几页 + private Integer pageSize = 10; // 每页的数量 + private T entity;//查询实体对象 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/StatusParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/StatusParam.java new file mode 100644 index 0000000..76c6b7d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/StatusParam.java @@ -0,0 +1,22 @@ +package com.risk.riskmanage.common.model.requestParam; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StatusParam { + private static final long serialVersionUID = 8131487634836541557L; + + private Integer status;//状态 + + private List ids;//主键id + + private Long tacticsId;//相关策略id + + private List list;//针对需要指定类型的需要传入实体类 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateFolderParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateFolderParam.java new file mode 100644 index 0000000..338cd66 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateFolderParam.java @@ -0,0 +1,27 @@ +package com.risk.riskmanage.common.model.requestParam; + + +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors +public class UpdateFolderParam { + private List ids;//规则id + private Long folderId;//文件夹id + + public static boolean checkNotNull(UpdateFolderParam param){ + if (param==null||param.ids==null||param.ids.isEmpty()||param.folderId==null){ + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),"id或者文件夹id为空"); + } + return true; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateStatusParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateStatusParam.java new file mode 100644 index 0000000..e20d802 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/model/requestParam/UpdateStatusParam.java @@ -0,0 +1,39 @@ +package com.risk.riskmanage.common.model.requestParam; + +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.ArrayList; +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +public class UpdateStatusParam { + private String ids; + private Integer status; + private List list; + + public static boolean checkParam(UpdateStatusParam param) { + try { + String[] split = param.getIds().split(","); + Integer status = param.getStatus(); + if (split == null || split.length == 0 || status == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + param.list = new ArrayList<>(); + for (String s : split) { + param.list.add(Long.valueOf(s)); + } + } catch (Exception e) { + e.printStackTrace(); + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + return true; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ExcelUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ExcelUtil.java new file mode 100644 index 0000000..aa2c499 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ExcelUtil.java @@ -0,0 +1,311 @@ +package com.risk.riskmanage.common.utils; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import com.risk.riskmanage.common.model.ExcelModel; +import com.risk.riskmanage.common.model.ExcelSheetModel; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +/** + * ClassName:ExcelUtil
+ * Description: Excel实用类 + */ +@SuppressWarnings("rawtypes") +public class ExcelUtil { + + /** + * exportExcel:导出excel + * + * @param out 输出流 + * @param exlType 导出格式 + * @param headers 表头信息 + * @param list 要导出的数据 + * @return cell + * + */ + public static void exportExcel(OutputStream out, String exlType, String[] headers, String[] classNames, List list) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { + Workbook workbook; + if (exlType.equalsIgnoreCase("xlsx")) { + // 2007以上 + workbook = new SXSSFWorkbook(200); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + + Sheet sheet = workbook.createSheet("title"); + for (short i = 0; i < headers.length; i++) { + if (i == headers.length - 1 || i == headers.length - 2) { + sheet.setColumnWidth(i, 50 * 256); + } else { + sheet.setColumnWidth(i, 25 * 256); + } + } + + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headers.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(headers[i]); + } + Iterator it = list.iterator(); + int index = 0; + while (it.hasNext()) { + index++; + row = sheet.createRow(index); + row.setHeight((short) 800); + T t = it.next(); + if (null != t) { + for (int j = 0; j < headers.length; j++) { + Cell cell = row.createCell(j); + Field field = t.getClass().getDeclaredField(classNames[j]); + field.setAccessible(true); + Class valType = field.getType(); + + cell.setCellStyle(cellStyle1); + if ("java.lang.String" + .equalsIgnoreCase(valType.getName())) { + cell.setCellValue((String) field.get(t)); + } else if ("java.lang.Integer" + .equalsIgnoreCase(valType.getName()) + || "int".equalsIgnoreCase(valType.getName())) { + cell.setCellValue((Integer) field.get(t)); + } else if ("java.lang.Double" + .equalsIgnoreCase(valType.getName()) + || "double".equalsIgnoreCase(valType.getName())) { + cell.setCellValue((Double) field.get(t) == null + ? 0 + : (Double) field.get(t)); + } else if ("java.lang.Long" + .equalsIgnoreCase(valType.getName()) + || "long".equalsIgnoreCase(valType.getName())) { + cell.setCellValue((Long) field.get(t) == null + ? 0 + : (Long) field.get(t)); + } else if ("java.util.Date" + .equalsIgnoreCase(valType.getName())) { + if (null == field.get(t)) { + cell.setCellValue(""); + } else { + SimpleDateFormat sdf = new SimpleDateFormat( + "yyyy/MM/dd"); + cell.setCellValue(sdf.format((Date) field.get(t))); + } + } + field.setAccessible(false); + } + } + } + try { + workbook.write(out); + out.flush(); + out.close(); + out = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + /** + * 处理单元格格式 + * + * @param cell + * @return + * + */ + public static String formatCell(Cell cell) { + if (cell == null) { + return ""; + } + switch (cell.getCellType()) { + case Cell.CELL_TYPE_NUMERIC: + //日期格式的处理 + if (HSSFDateUtil.isCellDateFormatted(cell)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())).toString(); + } + + return String.valueOf(cell.getNumericCellValue()); + + //字符串 + case Cell.CELL_TYPE_STRING: + return cell.getStringCellValue(); + + // 公式 + case Cell.CELL_TYPE_FORMULA: + return cell.getCellFormula(); + + // 空白 + case Cell.CELL_TYPE_BLANK: + return ""; + + // 布尔取值 + case Cell.CELL_TYPE_BOOLEAN: + return cell.getBooleanCellValue() + ""; + + //错误类型 + case Cell.CELL_TYPE_ERROR: + return cell.getErrorCellValue() + ""; + } + + return ""; + } + + + public static void exportExcelTemplate(OutputStream out, ExcelModel model) throws SecurityException, IllegalArgumentException { + Workbook workbook; + if ("xlsx".equalsIgnoreCase(model.getType())) { + // 2007以上 + workbook = new XSSFWorkbook(); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + List sheets = model.getSheets(); + if (sheets == null && sheets.size() == 0) { + return; + } + for (ExcelSheetModel info : sheets) { + Sheet sheet = workbook.createSheet(info.getSheetName()); + int headerSize = info.getHeaders().size(); + for (short i = 0; i < headerSize; i++) { + if (i == headerSize - 1 || i == headerSize - 2) { + sheet.setColumnWidth(i, 50 * 256); + } else { + sheet.setColumnWidth(i, 25 * 256); + } + } + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headerSize; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(info.getHeaders().get(i)); + } + List data = info.getData(); + for (int i = 0; i < data.size(); i++) { + List oneRow = data.get(i); + row = sheet.createRow(i+1); + for (int j = 0; j < oneRow.size(); j++) { + Object cellData = oneRow.get(j); + Cell cell = row.createCell(j); + cell.setCellStyle(cellStyle1); + cell.setCellValue(cellData.toString()); + } + } + try { + workbook.write(out); + out.flush(); + out.close(); + out = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ResponseEntityBuilder.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ResponseEntityBuilder.java new file mode 100644 index 0000000..134e443 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/common/utils/ResponseEntityBuilder.java @@ -0,0 +1,138 @@ +package com.risk.riskmanage.common.utils; + +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import org.apache.commons.lang3.StringUtils; + +import java.io.Serializable; + +public final class ResponseEntityBuilder { + /** + * 返回成功. + */ + public static final String RESPONSE_OK = "1"; + /** + * 返回失败. + */ + public static final String RESPONSE_FAIL = "0"; + + /** + * 构造一个失败响应.
+ * 用于构造一个比较用见或是常用的失败响应。
+ * + * @param enums + * 常见错误枚举类的一个实例.
+ * @return + */ + public static ResponseEntityDto buildErrorResponse(ErrorCodeEnum enums) { + ResponseEntityDto entity = new ResponseEntityDto<>(); + entity.setStatus(RESPONSE_FAIL); + entity.setError(String.valueOf(enums.getCode())); + entity.setMsg(enums.getMessage()); + return entity; + } + +// /** +// * 构造一个失败响应.
+// * +// * @param enums +// * @return +// */ +// @Deprecated +// public static ResponseEntity buildErrorResponse(ErrorCodeEnum enums) { +// ResponseEntity model = new ResponseEntity(); +// model.setStatus(RESPONSE_FAIL); +// model.setError(String.valueOf(enums.getVersionCode())); +// model.setMsg(enums.getMessage()); +// return model; +// } + + /** + * 构造一个失败响应.
+ * + * @param error + * 失败错误编码.
+ * @param message + * 失败错误说明.
+ * @return + * + */ + public static ResponseEntityDto buildErrorResponse(String error, String message) { + ResponseEntityDto entity = new ResponseEntityDto<>(); + entity.setStatus(RESPONSE_FAIL); + if(StringUtils.isBlank(error) || !StringUtils.isNumeric(error)){ + error = "401"; + } + entity.setError(error); + entity.setMsg(message); + return entity; + } + + /** + * 构造一个正常响应.
+ * + * 响应数据.
+ * @return + */ + public static ResponseEntityDto buildNormalResponse() { + //规范:所有正常请求(status="1",error="01000000"),code与pageCount属性被废弃. + return new ResponseEntityDto(RESPONSE_OK, "00000000"); + } + + /** + * 构造一个正常响应.
+ * + * @param data + * 响应数据.
+ * @return + */ + public static ResponseEntityDto buildNormalResponse(T data) { + ResponseEntityDto entity = buildNormalResponse(); + entity.setData(data); + return entity; + } + /** + * 构造一个错误响应.
+ * + * @param data + * 响应数据.
+ * @return + */ + public static ResponseEntityDto buildUnNormalResponse(T data,ErrorCodeEnum enums) { + ResponseEntityDto entity = buildErrorResponse(enums); + entity.setData(data); + return entity; + } +// public static ResponseEntityDto> buildNormalResponse(String key,T data) { +// Map result = new HashMap<>(); +// result.put(key, data); +// +// ResponseEntityDto> model = buildNormalResponse(); +// model.setData(result); +// return model; +// } + + public static Boolean isSuccess(ResponseEntityDto entity){ + return entity.getStatus().equals(RESPONSE_OK); + } + + public static Boolean isSuccess2(ResponseEntityDto entity){ + return entity.getStatus().equals(RESPONSE_OK) && entity.getError().equals("00000000"); + } + + /** + * 适用于接口返回data为null时业务不成功的场景 + */ + public static Boolean isSuccess3(ResponseEntityDto entity){ + return entity.getStatus().equals(RESPONSE_OK) && entity.getError().equals("200") && entity.getData() != null; + } + + public static T getEntity(ResponseEntityDto entity){ + if(isSuccess(entity)){ + return (T) entity.getData(); + + } + return null; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigHolder.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigHolder.java new file mode 100644 index 0000000..ab39ec5 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigHolder.java @@ -0,0 +1,61 @@ +package com.risk.riskmanage.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Data +public class ConfigHolder { + + //redisConfig + @Value("${redis.host}") + private String redisHost; + @Value("${redis.port}") + private int redisPort; + @Value("${redis.db}") + private int redisDb; + @Value("${redis.password}") + private String redisPwd; + @Value("${redis.pool.maxTotal}") + private int redisMaxTotal; + @Value("${redis.pool.maxIdle}") + private int redisMaxIdle; + @Value("${redis.pool.maxWait}") + private int redisMaxWait; + @Value("${redis.pool.timeout}") + private int redisTimeout; + + @Value("${monitor.data.storage.type}") + private String monitorStoreType; + //jdbcConfig + /*@Value("${jdbc.url}") + private String jdbcUrl; + @Value("${jdbc.driver}") + private String DriverName; + @Value("${pool.maxPoolSize}") + private int maxPoolSize; + @Value("${jdbc.username}") + private String jdbcUserName; + @Value("${jdbc.password}") + private String jdbcPwd; + @Value("${pool.maxWait}") + private int jdbcMaxWait; + @Value("${pool.timeBetweenEvictionRunsMillis}") + private int timeBetweenEvictionRunsMillis; + @Value("${pool.minEvictableIdleTimeMillis}") + private int minEvictableIdleTimeMillis; + @Value("${pool.validationQuery}") + private String validationQuery; + + //rabbitconfig + @Value("${rabbitMQ.host}") + private String rabbitHost; + @Value("${rabbitMQ.port}") + private int rabbitPort; + @Value("${rabbitMQ.username}") + private String rabbitUsername; + @Value("${rabbitMQ.password}") + private String rabbitPassword;*/ + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigurationContainor.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigurationContainor.java new file mode 100644 index 0000000..cf2c69e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/ConfigurationContainor.java @@ -0,0 +1,46 @@ +package com.risk.riskmanage.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; + +import javax.annotation.Resource; +import java.util.concurrent.ThreadPoolExecutor; + +@Configuration +public class ConfigurationContainor { + + @Resource + private ConfigHolder configHolder; + + @Bean(name = "threadPoolTaskExecutor") + ThreadPoolTaskExecutor threadPoolTaskExecutor(){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(500); + executor.setMaxPoolSize(1000); + executor.setQueueCapacity(200); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy()); + return executor; + } + + @Bean(name = "jedisPool") + public JedisPool jedisPool(){ + JedisPoolConfig config = new JedisPoolConfig(); + config.setMaxTotal(configHolder.getRedisMaxTotal()); + config.setMaxIdle(configHolder.getRedisMaxIdle()); + config.setMaxWaitMillis(configHolder.getRedisMaxWait()); + config.setTestOnBorrow(true); +// config.setTestOnReturn(true); + + JedisPool pool = new JedisPool(config, + configHolder.getRedisHost(), + configHolder.getRedisPort(), + configHolder.getRedisTimeout(), + configHolder.getRedisPwd(), + configHolder.getRedisDb()); + return pool; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/DataSourceConfig.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/DataSourceConfig.java new file mode 100644 index 0000000..b323b93 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/DataSourceConfig.java @@ -0,0 +1,61 @@ +package com.risk.riskmanage.config; + +import com.alibaba.druid.pool.DruidDataSource; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; + +import javax.sql.DataSource; + +@Configuration +public class DataSourceConfig { + + @Value("${spring.datasource.default.url}") + private String defaultDBUrl; + @Value("${spring.datasource.default.username}") + private String defaultDBUser; + @Value("${spring.datasource.default.password}") + private String defaultDBPassword; + @Value("${spring.datasource.default.driver-class-name}") + private String defaultDBDreiverName; + + @Bean + public DruidDataSource druidDataSource(){ + DruidDataSource defaultDataSource = new DruidDataSource(); + defaultDataSource.setUrl(defaultDBUrl); + defaultDataSource.setUsername(defaultDBUser); + defaultDataSource.setPassword(defaultDBPassword); + defaultDataSource.setDriverClassName(defaultDBDreiverName); + + return defaultDataSource; + } + + @Bean + public SqlSessionFactory sqlSessionFactory( + @Qualifier("druidDataSource") DataSource druidDataSource) + throws Exception { + MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); + ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + Resource[] mapperXmlResource = resolver.getResources("classpath*:**/*Mapper.xml"); + bean.setDataSource(druidDataSource); + bean.setMapperLocations(mapperXmlResource); + bean.setTypeAliasesPackage("com.risk.riskmanage.**.model"); + bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); + bean.getObject().getConfiguration().setCacheEnabled(false); + return bean.getObject(); + } + + @Bean(name = "sqlSessionTemplate") + public SqlSessionTemplate sqlSessionTemplate( + @Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) + throws Exception { + return new SqlSessionTemplate(sqlSessionFactory); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/RestTemplateConfig.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/RestTemplateConfig.java new file mode 100644 index 0000000..461f6a7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/RestTemplateConfig.java @@ -0,0 +1,27 @@ +package com.risk.riskmanage.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +/** + * RestTemplate配置类 + */ +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory){ + return new RestTemplate(factory); + } + + @Bean + public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(300000000);//单位为ms + factory.setConnectTimeout(500000000);//单位为ms + return factory; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/WebMvcConfig.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/WebMvcConfig.java new file mode 100644 index 0000000..0f1fc62 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/config/WebMvcConfig.java @@ -0,0 +1,24 @@ +package com.risk.riskmanage.config; + +import com.risk.riskmanage.spring.interceptor.SessionInterceptor; +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.WebMvcConfigurer; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Autowired + private SessionInterceptor sessionInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 添加拦截器 + registry.addInterceptor(sessionInterceptor) + .excludePathPatterns("") // 排除拦截器要拦截的路径 + .addPathPatterns("/**"); // 添加拦截器需要要拦截的路径 + + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelHeader.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelHeader.java new file mode 100644 index 0000000..8b8b041 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelHeader.java @@ -0,0 +1,8 @@ +package com.risk.riskmanage.datamanage.common; + +public class ExcelHeader { + + public static final String[] fieldExcelHeader = { "字段编号", "字段名", "字段中文名", "字段类型", "字段值类型", "字段值范围", "是否衍生", "是否输出", "创建人" }; + + public static final String[] fieldExcelClass = { "id", "fieldEn", "fieldCn", "fieldType", "valueTypeName", "valueScope", "isDerivativeName", "isOutputName", "nickName" }; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelUtil.java new file mode 100644 index 0000000..3380c4d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ExcelUtil.java @@ -0,0 +1,666 @@ +package com.risk.riskmanage.datamanage.common; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; + +public class ExcelUtil { + + public static void exportFieldExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ + Workbook workbook; + if (exlType.equalsIgnoreCase("xlsx")) { + // 2007以上 + workbook = new SXSSFWorkbook(200); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + Sheet sheet = workbook.createSheet("title"); + sheet.setColumnWidth((short)0, 10* 256); + sheet.setColumnWidth((short)1, 20* 256); + sheet.setColumnWidth((short)2, 20* 256); + sheet.setColumnWidth((short)3, 10* 256); + sheet.setColumnWidth((short)4, 10* 256); + sheet.setColumnWidth((short)5, 75* 256); +// sheet.setColumnWidth((short)6, 75* 256); + + + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headers.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(headers[i]); + } + Iterator it = list.iterator(); + int index = 0; + while (it.hasNext()) { + index++; + row = sheet.createRow(index); + row.setHeight((short) 400); + T t = it.next(); + if(null!=t){ + for (int j = 0; j < headers.length; j++) { + Cell cell = row.createCell(j); + Field field = t.getClass().getDeclaredField(classNames[j]); + field.setAccessible(true); + Class valType = field.getType(); + cell.setCellStyle(cellStyle1); + //数据转类型 + if("java.lang.String".equalsIgnoreCase( valType.getName())){ + cell.setCellValue((String) field.get(t)); + }else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Integer) field.get(t)); + }else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t)); + }else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t)); + }else if("java.util.Date".equalsIgnoreCase(valType.getName())) { + if(null==field.get(t)){ + cell.setCellValue(""); + }else { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + cell.setCellValue(sdf.format((Date) field.get(t))); + } + } + field.setAccessible(false); + } + } + } + try { + workbook.write(out); + out.flush(); + out.close(); + out = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 导出黑白名单库里的客户列表到excel(兼容黑白名单库的导入模版) + * + * @param sheet + * @param row + * @param column + * @return + */ + public static void exportCustListExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ + Workbook workbook; + if (exlType.equalsIgnoreCase("xlsx")) { + // 2007以上 + workbook = new SXSSFWorkbook(200); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + Sheet sheet = workbook.createSheet("title"); + //默认20列 + sheet.setColumnWidth((short)0, 10* 256); + sheet.setColumnWidth((short)1, 10* 256); + sheet.setColumnWidth((short)2, 10* 256); + sheet.setColumnWidth((short)3, 10* 256); + sheet.setColumnWidth((short)4, 10* 256); + sheet.setColumnWidth((short)5, 10* 256); + sheet.setColumnWidth((short)6, 10* 256); + sheet.setColumnWidth((short)7, 10* 256); + sheet.setColumnWidth((short)8, 10* 256); + sheet.setColumnWidth((short)9, 10* 256); + sheet.setColumnWidth((short)10, 10* 256); + sheet.setColumnWidth((short)11, 10* 256); + sheet.setColumnWidth((short)12, 10* 256); + sheet.setColumnWidth((short)13, 10* 256); + sheet.setColumnWidth((short)14, 10* 256); + sheet.setColumnWidth((short)15, 10* 256); + sheet.setColumnWidth((short)16, 10* 256); + sheet.setColumnWidth((short)17, 10* 256); + sheet.setColumnWidth((short)18, 10* 256); + sheet.setColumnWidth((short)19, 10* 256); + + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headers.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(headers[i]); + } + Iterator it = list.iterator(); + int index = 0; + while (it.hasNext()) { + index++; + row = sheet.createRow(index); + row.setHeight((short) 400); + T t = it.next(); + if(null!=t){ + for (int j = 0; j < headers.length; j++) { + Cell cell = row.createCell(j); + Field field = t.getClass().getDeclaredField(classNames[j]); + field.setAccessible(true); + Class valType = field.getType(); + cell.setCellStyle(cellStyle1); + //数据转类型 + if("java.lang.String".equalsIgnoreCase( valType.getName())){ + cell.setCellValue((String) field.get(t)); + }else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Integer) field.get(t)); + }else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t)); + }else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t)); + }else if("java.util.Date".equalsIgnoreCase(valType.getName())) { + if(null==field.get(t)){ + cell.setCellValue(""); + }else { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + cell.setCellValue(sdf.format((Date) field.get(t))); + } + } + field.setAccessible(false); + } + } + } + try { + workbook.write(out); + out.flush(); + out.close(); + out = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 导出黑白名单库里的客户列表到excel(兼容黑白名单库的导入模版) + * + * @param sheet + * @param row + * @param column + * @return + */ + public static void createCustListExcel(String path, String exlType,String[] headers,String[] classNames, List list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ + Workbook workbook; + if (exlType.equalsIgnoreCase("xlsx")) { + // 2007以上 + workbook = new SXSSFWorkbook(200); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + Sheet sheet = workbook.createSheet("title"); + //默认20列 + sheet.setColumnWidth((short)0, 10* 256); + sheet.setColumnWidth((short)1, 10* 256); + sheet.setColumnWidth((short)2, 10* 256); + sheet.setColumnWidth((short)3, 10* 256); + sheet.setColumnWidth((short)4, 10* 256); + sheet.setColumnWidth((short)5, 10* 256); + sheet.setColumnWidth((short)6, 10* 256); + sheet.setColumnWidth((short)7, 10* 256); + sheet.setColumnWidth((short)8, 10* 256); + sheet.setColumnWidth((short)9, 10* 256); + sheet.setColumnWidth((short)10, 10* 256); + sheet.setColumnWidth((short)11, 10* 256); + sheet.setColumnWidth((short)12, 10* 256); + sheet.setColumnWidth((short)13, 10* 256); + sheet.setColumnWidth((short)14, 10* 256); + sheet.setColumnWidth((short)15, 10* 256); + sheet.setColumnWidth((short)16, 10* 256); + sheet.setColumnWidth((short)17, 10* 256); + sheet.setColumnWidth((short)18, 10* 256); + sheet.setColumnWidth((short)19, 10* 256); + + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headers.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(headers[i]); + } + Iterator it = list.iterator(); + int index = 0; + while (it.hasNext()) { + index++; + row = sheet.createRow(index); + row.setHeight((short) 400); + T t = it.next(); + if(null!=t){ + for (int j = 0; j < headers.length; j++) { + Cell cell = row.createCell(j); + Field field = t.getClass().getDeclaredField(classNames[j]); + field.setAccessible(true); + Class valType = field.getType(); + cell.setCellStyle(cellStyle1); + //数据转类型 + if("java.lang.String".equalsIgnoreCase( valType.getName())){ + cell.setCellValue((String) field.get(t)); + }else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Integer) field.get(t)); + }else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t)); + }else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t)); + }else if("java.util.Date".equalsIgnoreCase(valType.getName())) { + if(null==field.get(t)){ + cell.setCellValue(""); + }else { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + cell.setCellValue(sdf.format((Date) field.get(t))); + } + } + field.setAccessible(false); + } + } + } + try { + FileOutputStream output=new FileOutputStream(path); + workbook.write(output); + output.close(); + output = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + } + } + + /** + * 导出引擎批量测试结果到excel + * + * @param sheet + * @param row + * @param column + * @return + */ + public static void exportEngineTestResultExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ + Workbook workbook; + if (exlType.equalsIgnoreCase("xlsx")) { + // 2007以上 + workbook = new SXSSFWorkbook(200); + } else { + // 97-2003 + workbook = new HSSFWorkbook(); + } + Sheet sheet = workbook.createSheet("title"); + + sheet.setColumnWidth((short)0, 10* 256); + sheet.setColumnWidth((short)1, 15* 256); + sheet.setColumnWidth((short)2, 15* 256); + sheet.setColumnWidth((short)3, 15* 256); + sheet.setColumnWidth((short)4, 15* 256); + sheet.setColumnWidth((short)5, 15* 256); + sheet.setColumnWidth((short)6, 20* 256); + sheet.setColumnWidth((short)7, 20* 256); + + CellStyle cellStyle = workbook.createCellStyle(); + CellStyle cellStyle1 = workbook.createCellStyle(); + + Font font = workbook.createFont(); + Font font1 = workbook.createFont(); + + //微软雅黑,字体10,加粗,背景灰色 + font.setFontName("微软雅黑"); + font.setFontHeight((short) 240); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐 + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + cellStyle.setWrapText(true); + cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle.setBorderRight(CellStyle.BORDER_THIN); + cellStyle.setBorderTop(CellStyle.BORDER_THIN); + + //微软雅黑,字体10,加粗,背景灰色 + font1.setFontName("微软雅黑"); + font1.setFontHeight((short) 240); + cellStyle1.setFont(font1); + cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐 + cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + cellStyle1.setWrapText(true); + cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体 + cellStyle1.setBorderLeft(CellStyle.BORDER_THIN); + cellStyle1.setBorderRight(CellStyle.BORDER_THIN); + cellStyle1.setBorderTop(CellStyle.BORDER_THIN); + + Row row = sheet.createRow(0); + row.setHeight((short) 400); + + for (short i = 0; i < headers.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(cellStyle); + cell.setCellValue(headers[i]); + } + Iterator it = list.iterator(); + int index = 0; + while (it.hasNext()) { + index++; + row = sheet.createRow(index); + row.setHeight((short) 400); + T t = it.next(); + if(null!=t){ + for (int j = 0; j < headers.length; j++) { + Cell cell = row.createCell(j); + Field field = t.getClass().getDeclaredField(classNames[j]); + field.setAccessible(true); + Class valType = field.getType(); + cell.setCellStyle(cellStyle1); + //数据转类型 + if("java.lang.String".equalsIgnoreCase( valType.getName())){ + cell.setCellValue((String) field.get(t)); + }else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Integer) field.get(t)); + }else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t)); + }else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){ + cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t)); + }else if("java.util.Date".equalsIgnoreCase(valType.getName())) { + if(null==field.get(t)){ + cell.setCellValue(""); + }else { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + cell.setCellValue(sdf.format((Date) field.get(t))); + } + } + field.setAccessible(false); + } + } + } + try { + workbook.write(out); + out.flush(); + out.close(); + out = null; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 获取合并单元格的值 + * + * @param sheet + * @param row + * @param column + * @return + */ + public static String getMergedRegionValue(Sheet sheet, int row, int column) { + int sheetMergeCount = sheet.getNumMergedRegions(); + + for (int i = 0; i < sheetMergeCount; i++) { + CellRangeAddress ca = sheet.getMergedRegion(i); + int firstColumn = ca.getFirstColumn(); + int lastColumn = ca.getLastColumn(); + int firstRow = ca.getFirstRow(); + int lastRow = ca.getLastRow(); + + if (row >= firstRow && row <= lastRow) { + + if (column >= firstColumn && column <= lastColumn) { + Row fRow = sheet.getRow(firstRow); + Cell fCell = fRow.getCell(firstColumn); + return getCellValue(fCell); + } + } + } + + return null; + } + + /** + * 判断合并行 + * + * @param sheet + * @param row + * @param column + * @return + */ + public static boolean isMergedRow(Sheet sheet, int row, int column) { + int sheetMergeCount = sheet.getNumMergedRegions(); + for (int i = 0; i < sheetMergeCount; i++) { + CellRangeAddress range = sheet.getMergedRegion(i); + int firstColumn = range.getFirstColumn(); + int lastColumn = range.getLastColumn(); + int firstRow = range.getFirstRow(); + int lastRow = range.getLastRow(); + if (row == firstRow && row == lastRow) { + if (column >= firstColumn && column <= lastColumn) { + return true; + } + } + } + return false; + } + + /** + * 判断合并列 + * + * @param sheet + * @param row + * @param column + * @return + */ + public static boolean isMergedCol(Sheet sheet, int row, int column) { + int sheetMergeCount = sheet.getNumMergedRegions(); + for (int i = 0; i < sheetMergeCount; i++) { + CellRangeAddress range = sheet.getMergedRegion(i); + int firstColumn = range.getFirstColumn(); + int lastColumn = range.getLastColumn(); + int firstRow = range.getFirstRow(); + int lastRow = range.getLastRow(); + if(column== firstColumn && column==lastColumn){ + if (row>=firstRow&& row<=lastRow){ + return true; + } + } + } + return false; + } + + /** + * 判断指定的单元格是否是合并单元格 + * + * @param sheet + * @param row + * 行下标 + * @param column + * 列下标 + * @return + */ + public static boolean isMergedRegion(Sheet sheet, int row, int column) { + int sheetMergeCount = sheet.getNumMergedRegions(); + for (int i = 0; i < sheetMergeCount; i++) { + CellRangeAddress range = sheet.getMergedRegion(i); + int firstColumn = range.getFirstColumn(); + int lastColumn = range.getLastColumn(); + int firstRow = range.getFirstRow(); + int lastRow = range.getLastRow(); + if (row >= firstRow && row <= lastRow) { + if (column >= firstColumn && column <= lastColumn) { + return true; + } + } + } + return false; + } + + /** + * 获取单元格的值 + * + * @param cell + * @return + */ + public static String getCellValue(Cell cell) { + + if (cell == null) + return ""; + + if (cell.getCellType() == Cell.CELL_TYPE_STRING) { + + return cell.getStringCellValue(); + + } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { + + return String.valueOf(cell.getBooleanCellValue()); + + } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { + + return cell.getCellFormula(); + + } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { + + return String.valueOf(cell.getNumericCellValue()); + + } + return ""; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/Status.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/Status.java new file mode 100644 index 0000000..34e9346 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/Status.java @@ -0,0 +1,11 @@ +package com.risk.riskmanage.datamanage.common; + +public enum Status { + + enable(1), disable(0), delete(-1), yes(1), no(0); + public final int value; + + private Status(int value) { + this.value = value; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ValueType.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ValueType.java new file mode 100644 index 0000000..e200d41 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/common/ValueType.java @@ -0,0 +1,17 @@ +package com.risk.riskmanage.datamanage.common; + +public enum ValueType { + + // 待选:0, 数值型:1, 字符型:2, 枚举型:3, 小数型:4, 数组型:5 + Unknown(0), Num(1), Char(2), Enum(3), Dec(4), Array(5); + + public final int value; + + private ValueType(int value) { + this.value = value; + } + + public int getValue(){ + return value; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/controller/v2/FieldController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/controller/v2/FieldController.java new file mode 100644 index 0000000..c7fb92d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/controller/v2/FieldController.java @@ -0,0 +1,870 @@ +package com.risk.riskmanage.datamanage.controller.v2; + +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.BaseController; +import com.risk.riskmanage.common.constants.CommonConst; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.datamanage.common.ValueType; +import com.risk.riskmanage.datamanage.model.Field; +import com.risk.riskmanage.datamanage.model.FieldCond; +import com.risk.riskmanage.datamanage.model.FieldType; +import com.risk.riskmanage.datamanage.model.request.FieldSaveParam; +import com.risk.riskmanage.datamanage.model.request.FieldTreeParam; +import com.risk.riskmanage.datamanage.vo.FieldEnumVo; +import com.risk.riskmanage.datamanage.vo.FieldFormulaVo; +import com.risk.riskmanage.datamanage.vo.FieldSubCondVo; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.CollectionUtil; +import com.risk.riskmanage.util.SessionManager; +import com.risk.riskmanage.util.StringUtil; +import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; +import java.util.regex.Pattern; + +/** + * 提供field相关接口 + * + * @apiDefine field 2.指标管理 + */ +@Controller("fieldControllerV2") +@RequestMapping("/v2/datamanage/field") +@ResponseBody +public class FieldController extends BaseController { + + /** + * @api {POST} /v2/datamanage/field/listTree 2.01. 获取节点树 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {Integer} parentId parentId, 值为 0或 空字符串都行(此时获取的是所有文件夹目录) + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} Success-Response: + * {"data":[{"userId":135,"organId":46,"status":1,"isCommon":1,"parentId":303,"children":[{"children":[{"children":[],"fieldType":"信用卡","icon":"../resource/images/authority/folder.png","id":306,"isCommon":1,"isParent":"true","page":0,"parentId":305,"rows":0}],"fieldType":"银行","icon":"../resource/images/authority/folder.png","id":305,"isCommon":1,"isParent":"true","page":0,"parentId":0,"rows":0},{"children":[{"children":[],"fieldType":"网点余额不足风险","icon":"../resource/images/authority/folder.png","id":304,"isCommon":1,"isParent":"true","page":0,"parentId":302,"rows":0},{"children":[],"fieldType":"代收货款与到付","icon":"../resource/images/authority/folder.png","id":303,"isCommon":1,"isParent":"true","page":0,"parentId":302,"rows":0}],"fieldType":"物流","icon":"../resource/images/authority/folder.png","id":302,"isCommon":1,"isParent":"true","page":0,"parentId":0,"rows":0}],"fieldType":"通用字段","id":99999999}],"error":"00000000","status":"1"} + */ + @RequestMapping(value = "/listTree", method = RequestMethod.POST) + public ResponseEntityDto listTree(@RequestBody Map paramMap) { + + User loginAccount = SessionManager.getLoginAccount(); + paramMap.put("userId", loginAccount.getUserId()); + paramMap.put("organId", loginAccount.getOrganId()); + paramMap.put("status", 1); + + Integer isCommon = 1; + Integer engineId = null; + if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) { + isCommon = null; + engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue(); + paramMap.put("engineId", engineId); + } else { + paramMap.put("engineId", null); + } + paramMap.put("isCommon", isCommon); + + List klist = s.fieldTypeService.getFieldTypeList(paramMap); + for (FieldType fieldTypeVo : klist) { + if (engineId != null && fieldTypeVo.getIsCommon() == 1) { + String fieldType = fieldTypeVo.getFieldType(); + fieldTypeVo.setFieldType(fieldType + "(通用)"); + } + paramMap.put("parentId", fieldTypeVo.getId()); + fieldTypeVo.setChildren(getChildren(paramMap)); + } + FieldType[] kArray = new FieldType[klist.size()]; + kArray = klist.toArray(kArray); + paramMap.put("children", kArray); + paramMap.put("fieldType", "通用字段"); + paramMap.put("id", 99999999); + + ArrayList list = new ArrayList<>(); + list.add(paramMap); + + return ResponseEntityBuilder.buildNormalResponse(list); + } + @RequestMapping(value = "/newListTree", method = RequestMethod.POST) + public ResponseEntityDto newListTree(@RequestBody FieldTreeParam param) { + if (param==null||param.getType()==null){ + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + List list = s.fieldTypeService.getTreeList(param); + Map paramMap=new HashMap<>(); + paramMap.put("children", list); + paramMap.put("fieldType", "通用字段"); + paramMap.put("id", 99999999); + List response= new ArrayList<>(); + response.add(paramMap); + return ResponseEntityBuilder.buildNormalResponse(response); + } + + /** + * getChildren:(获取树形节点的子节点信息) + * + * @param paramMap + * @return + */ + private FieldType[] getChildren(Map paramMap) { + List klist = s.fieldTypeService.getFieldTypeList(paramMap); + for (FieldType fieldTreeVo : klist) { + paramMap.put("parentId", fieldTreeVo.getId()); + fieldTreeVo.setChildren(getChildren(paramMap)); + } + FieldType[] kArray = new FieldType[klist.size()]; + kArray = klist.toArray(kArray); + return kArray; + } + + /** + * @api {POST} /v2/datamanage/field/addTree 2.02. 添加树节点 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {String} fieldType 文件夹的名字 + * @apiParam {String} parentId parentId + * @apiParam {Integer} [id] id可传可不传,无实际意义 + * @apiParamExample {json} Request: + * { + * "parentId": "302", + * "fieldType": "测试类型" + * } + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"parentId":"302","fieldType":"测试类型","userId":135,"organId":46,"engineId":null,"isCommon":1,"fieldTypeId":365,"id":2810,"result":1}} + */ + @RequestMapping(value = "/addTree", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_FILED_TREE) + public ResponseEntityDto addTree(@RequestBody Map paramMap) { + + // fieldTypeId, parentId, id + + User loginAccount = SessionManager.getLoginAccount(); + paramMap.put("userId", loginAccount.getUserId()); + paramMap.put("organId", loginAccount.getOrganId()); + + Integer isCommon = 1; + Integer engineId = null; + if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) { + isCommon = 0; + engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue(); + paramMap.put("engineId", engineId); + } else { + isCommon = 1; + paramMap.put("engineId", null); + } + paramMap.put("isCommon", isCommon); + + FieldType fieldTypeVo = new FieldType(); + fieldTypeVo.setIsCommon(isCommon); + fieldTypeVo.setParentId(Integer.valueOf( paramMap.get("parentId").toString())); + fieldTypeVo.setFieldType((String) paramMap.get("fieldType")); + fieldTypeVo.setType(Integer.valueOf(paramMap.get("type").toString())); + boolean flag = s.fieldTypeService.createFieldType(fieldTypeVo, paramMap); + if (flag) { + paramMap.put("result", 1); + } else { + paramMap.put("result", -1); + } + + return ResponseEntityBuilder.buildNormalResponse(paramMap); + } + + /** + * @api {POST} /v2/datamanage/field/updateTree 2.03. 修改树节点 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {Integer} id id + * @apiParam {String} fieldType 文件夹的名称 + * @apiParam {Integer} fieldType 文件夹的名称 + * @apiParam {String} [status] -1表示删除 + * @apiParamExample {json} Request: + * { + * "parentId":302, + * "fieldType": "测试哈哈类型", + * "id": 365, + * "status": 1 + * } + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"parentId":302,"fieldType":"测试哈哈类型","id":365,"status":1,"userId":135,"engineId":null,"organId":46,"isCommon":1,"result":1}} + */ + @RequestMapping(value = "/updateTree", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_FILED_TREE) + public ResponseEntityDto updateTree(@RequestBody FieldTreeParam param) { + Integer status = param.getStatus(); + + boolean b = s.fieldTypeService.updateFieldType(param); + if (b){ + return ResponseEntityBuilder.buildNormalResponse(); + } + return ResponseEntityBuilder.buildErrorResponse("修改指标文件夹错误","修改指标文件夹错误"); +// int num = this.fieldTypeAjaxValidate(paramMap); +// if (num > 0) { +// throw new ApiException(ErrorCodeEnum.FIELD_TYPE_REPEAT.getVersionCode(), ErrorCodeEnum.FIELD_TYPE_REPEAT.getMessage()); +// } + +// User loginAccount = SessionManager.getLoginAccount(); +// paramMap.put("userId", loginAccount.getUserId()); +// paramMap.put("organId", loginAccount.getOrganId()); +// +// Integer isCommon = 1; +// Integer engineId = null; +// if (paramMap.containsKey("engineId") && paramMap.get("engineId") != null && !paramMap.get("engineId").equals("")) { +// isCommon = 0; +// engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue(); +// paramMap.put("engineId", engineId); +// } else { +// isCommon = 1; +// paramMap.put("engineId", null); +// } +// +// paramMap.put("isCommon", isCommon); +// +// boolean flag = s.fieldTypeService.updateFieldType(paramMap); +// if (flag) { +// paramMap.put("result", 1); +// } else { +// paramMap.put("result", -1); +// } + + } + + private int fieldTypeAjaxValidate(Map paramMap) { + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + if (!paramMap.containsKey("engineId")) { + paramMap.put("engineId", null); + } + + return s.fieldService.isExistsFieldType(paramMap); + } + + /** + * @api {POST} /v2/datamanage/field/list 2.04. 获取指标列表 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {Integer} isCommon isCommon 值为1时查询通用字段, 数据库管理不用传isCommon + * @apiParam {String} [fieldTypeId] 指标类型id,当fieldTypeId为空或不传时,查询的时整个通用字段下面的所有指标 + * @apiParam {Integer} pageNo 第几页,默认为 1 + * @apiParam {Integer} [pageSize] 每页的条数,默认为 10 + * @apiParamExample {json} Request: + * { + * "isCommon": 1, + * "fieldTypeId": 99999999, + * "pageNo": 1, + * "pageSize": 2 + * } + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"fieldVos":[{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615535468000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615455268000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":261,"pages":131,"list":[{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615535468000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615455268000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3,4,5,6,7,8],"navigateFirstPage":1,"navigateLastPage":8,"firstPage":1,"lastPage":8},"searchKey":null,"fieldTypeId":null,"engineId":null}} + */ + @RequestMapping(value = "/list", method = RequestMethod.POST) + public ResponseEntityDto list(@RequestBody HashMap paramMap) { + + if (paramMap.get("fieldTypeId") != null && paramMap.get("fieldTypeId").toString().equals("99999999")) { + paramMap.put("fieldTypeId", null); + } + + Integer pageNo = paramMap.get("pageNo") == null ? 1 : Integer.valueOf(paramMap.get("pageNo").toString()); + Integer pageSize = paramMap.get("pageSize") == null ? 10 : Integer.valueOf(paramMap.get("pageSize").toString()); + + User loginAccount = SessionManager.getLoginAccount(); + paramMap.put("userId", loginAccount.getUserId()); + paramMap.put("organId", loginAccount.getOrganId()); + + String searchKey = (String) paramMap.get("searchKey"); + paramMap.put("searchKey", null); + + if (!paramMap.containsKey("status")) + paramMap.put("status", null); + if (!paramMap.containsKey("engineId")) + paramMap.put("engineId", null); + + PageHelper.startPage(pageNo, pageSize); + List fieldList = s.fieldService.findByFieldType(paramMap); + PageInfo pageInfo = new PageInfo<>(fieldList); + + if (fieldList == null) { + return ResponseEntityBuilder.buildNormalResponse(null); + } + + HashMap modelMap = new HashMap<>(); + modelMap.put("pager", pageInfo); + modelMap.put("engineId", null); + modelMap.put("klist",pageInfo.getList()); + modelMap.put("searchKey", searchKey); + + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/datamanage/field/updateStatus 2.05. 指标停用、启用、删除 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {Integer} status 0表示停用, 1表示启用, -1表示删除 + * @apiParam {String} ids id组成的字符串,用逗号分隔 + * @apiParam {Integer} fieldTypeId fieldTypeId 文件夹的id + * @apiParamExample {json} 请求示例: + * {"status":0,"ids":"820,819,818","fieldTypeId":303} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"status":0,"ids":"820,819,818","fieldTypeId":"303","userId":135,"organId":46,"engineId":null,"Ids":[820,819,818],"fieldId":818,"fieldIds":[818],"fieldList":[],"listDbList":[],"ruleList":[],"scorecardList":[],"nodelistDbList":[],"beUsed":false,"result":true}} + */ + @RequestMapping(value = "/updateStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_FILED_STATUS) + public ResponseEntityDto updateStatus(@RequestBody Map param) { + + User loginAccount = SessionManager.getLoginAccount(); + param.put("userId", loginAccount.getUserId()); + param.put("organId", loginAccount.getOrganId()); + + param.put("engineId", null); + + String idsStr = (String) param.get("ids"); + List Ids = StringUtil.toLongList(idsStr); + param.put("Ids", Ids); + + String strFieldTypeId = String.valueOf(param.get("fieldTypeId")); + if (strFieldTypeId == null) { + strFieldTypeId = ""; + } + //Long fieldTypeId = s.fieldService.findFieldTypeId(param); + + s.fieldService.updateStatus(param); + + param.put("fieldTypeId", strFieldTypeId); + + return ResponseEntityBuilder.buildNormalResponse(param); + } + + /** + * @api {POST} /v2/datamanage/field/save 2.06. 添加指标 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {String} searchKey searchKey + * @apiParam {Long} [id] 指标ID + * @apiParam {String} formula 衍生字段公式 + * @apiParam {String} formulaShow 衍生字段公式回显信息 + * @apiParam {Long} engineId 归属的引擎ID + * @apiParam {String} fieldEn 指标英文名:拼接前缀"f_" + * @apiParam {String} fieldCn 指标中文名 + * @apiParam {Long} fieldTypeId 字段类型编号 + * @apiParam {Integer} valueType 字段存值类型,待选(0),数值型(1),字符型(2),枚举型(3),小数型(4) + * @apiParam {Integer} isDerivative 是否衍生字段,0代表不是,1代表是 + * @apiParam {Integer} isOutput 是否输出字段,0代表不是,1代表是 + * @apiParam {String} valueScope 字段约束范围 + * @apiParam {JSONArray} fieldCondList 条件区域内容(传字符串) + * @apiParam (fieldCondList) {String} conditionValue 字段条件值 + * @apiParam (fieldCondList) {JSONArray} fieldSubCond 字段列表 + * @apiParam (fieldSubCond) {String} fieldId 条件字段编号 + * @apiParam (fieldSubCond) {String} operator 条件字段的运算符 + * @apiParam (fieldSubCond) {String} fieldValue 条件字段的条件设置值 + * @apiParam (fieldSubCond) {String} logical 条件字段间的逻辑符 + * @apiParam {JSONArray} formulaHidden 公式编辑、groovy脚本内容(传字符串) + * @apiParam (formulaHidden) {String} formula 衍生字段公式 + * @apiParam (formulaHidden) {String} idx 下标 + * @apiParam (formulaHidden) {JSONArray} farr 字段列表 + * @apiParam (farr) {String} fieldCN 字段中文名 + * @apiParam (farr) {String} fieldCond 字段条件区域 + * @apiParam {Boolean} isUseSql 是否使用sql获取指标 + * @apiParam {Integer} dataSourceId 使用sql获取指标时对应的数据源 + * @apiParam {String} sqlStatement 使用sql获取指标时对应的sql语句 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"searchKey":"","fieldTypeId":"302","id":"","formula":"","formulaShow":"","engineId":"","fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","valueType":"1","isDerivative":"1","isOutput":"0","valueScope":"[-1,9999999)","fieldCondList":[{"fieldSubCond":[{"fieldId":"824","operator":">","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"666"},{"fieldSubCond":[{"fieldId":"824","operator":"<=","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"888"}],"formulaHidden":[{"fvalue":"","formula":"@同盾_评分@ - @第三方分值@ ","idx":"0","farr":[{"fieldCN":"同盾_评分","fieldCond":""},{"fieldCN":"第三方分值 ","fieldCond":""}]}],"isUseSql":"0","dataSourceId":null,"sqlStatement":""} + * @apiSuccessExample {json} 成功返回数据示例: + * {} + */ + @RequestMapping(value = "/save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_FILED) + public ResponseEntityDto save(@RequestBody FieldSaveParam fieldSaveParam) { + + Field fieldVo = new Field(); + BeanUtils.copyProperties(fieldSaveParam, fieldVo); + fieldVo.setUseSql(fieldSaveParam.getIsUseSql()); + fieldVo.setInterface(fieldSaveParam.getIsInterface());//是否使用接口 + Map param = JSONObject.parseObject(JSONObject.toJSONString(fieldSaveParam), Map.class); + s.fieldService.sqlFieldCheck(param); + // 校验 + HashMap fieldEnValidateMap = new HashMap<>(); + fieldEnValidateMap.put("fieldEn", param.get("fieldEn")); + fieldEnValidateMap.put("engineId", param.get("engineId")); + fieldEnValidateMap.put("Id", param.get("id")); + int fieldEnNum = fieldEnAjaxValidate(fieldEnValidateMap); + if (fieldEnNum > 0) { + throw new ApiException(ErrorCodeEnum.FIELD_EN_REPEAT.getCode(), ErrorCodeEnum.FIELD_EN_REPEAT.getMessage()); + } + + HashMap fieldCnValidateMap = new HashMap<>(); + fieldCnValidateMap.put("fieldCn", param.get("fieldCn")); + fieldCnValidateMap.put("engineId", param.get("engineId")); + fieldCnValidateMap.put("Id", param.get("id")); + int fieldCnNum = fieldCnAjaxValidate(fieldCnValidateMap); + if (fieldCnNum > 0) { + throw new ApiException(ErrorCodeEnum.FIELD_CN_REPEAT.getCode(), ErrorCodeEnum.FIELD_CN_REPEAT.getMessage()); + } + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + param.put("userId", userId); + fieldVo.setAuthor(userId); + fieldVo.setOrganId(organId); + + //校验字段英文名命名 + String fieldEn = fieldVo.getFieldEn(); + Pattern.matches("\\[A-z]|_|d+", fieldEn); + + param.put("fieldEn", fieldVo.getFieldEn()); + param.put("fieldCn", fieldVo.getFieldCn()); + param.put("organId", organId); + param.put("engineId", null); + //组织通用字段 + Integer isCommon = 1; + fieldVo.setIsCommon(isCommon); +// String formulaFields = "1,2,3,4"; +// param.put("formulaFields", formulaFields); + + s.fieldService.createField(fieldVo, param); + + // model.addAttribute("engineId", null); + // model.addAttribute("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId())); + // model.addAttribute("isCommon", 1); + HashMap modelMap = new HashMap<>(); + modelMap.put("engineId", null); + modelMap.put("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId())); + modelMap.put("isCommon", 1); + + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/datamanage/field/getFieldInfo/{id} 2.07. 获取指标详情 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {Integer} id 路径参数{id}:指标的id + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"hasGroovy":null,"fieldFormulaList":[],"fieldVo":{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":"824,826","origFieldId":"824,826","author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[{"page":0,"rows":0,"total":null,"id":null,"fieldId":876,"conditionValue":"777","content":"[{\"fieldId\":\"824\",\"operator\":\">\",\"fieldValue\":\"2000\",\"logical\":\"&&\"},{\"fieldId\":\"826\",\"operator\":\"<\",\"fieldValue\":\"5000\"}]","condFieldId":null,"condFieldOperator":null,"condFieldValue":null,"condFieldLogical":null,"created":null,"fieldSubCond":[{"fieldId":824,"operator":">","fieldValue":"2000","logical":"&&","valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点实际余额"},{"fieldId":826,"operator":"<","fieldValue":"5000","logical":null,"valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点关闭余额"}]},{"page":0,"rows":0,"total":null,"id":null,"fieldId":876,"conditionValue":"999","content":"[{\"fieldId\":\"824\",\"operator\":\"<=\",\"fieldValue\":\"2000\",\"logical\":\"&&\"},{\"fieldId\":\"826\",\"operator\":\"<\",\"fieldValue\":\"5000\"}]","condFieldId":null,"condFieldOperator":null,"condFieldValue":null,"condFieldLogical":null,"created":null,"fieldSubCond":[{"fieldId":824,"operator":"<=","fieldValue":"2000","logical":"&&","valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点实际余额"},{"fieldId":826,"operator":"<","fieldValue":"5000","logical":null,"valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点关闭余额"}]}],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},"scopeList":["[-1","9999999)"],"searchKey":null,"fieldTypeId":302,"hasFormula":null,"engineId":null}} + */ + @RequestMapping(value = "/getFieldInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getFieldInfo(@PathVariable long id, @RequestBody Map param) { + + Map paramMap = new HashMap<>(); + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + paramMap.put("userId", userId); + paramMap.put("organId", organId); + paramMap.put("engineId", null); + paramMap.put("id", id); + paramMap.put("searchKey", param.get("searchKey")); + + Field fieldVo = s.fieldService.findByFieldId(paramMap); + + String fieldEn = fieldVo.getFieldEn(); + if (!fieldEn.equals("") && fieldEn != null) { +// fieldEn = fieldEn.replace("f_", ""); + fieldVo.setFieldEn(fieldEn); + } + + for (FieldCond f : fieldVo.getFieldCondList()) { + + List fieldSubCondList = JSONObject.parseArray(f.getContent(), FieldSubCondVo.class); + for (FieldSubCondVo fs : fieldSubCondList) { + Map paramMap2 = new HashMap(); + paramMap2.put("userId", userId); + paramMap2.put("organId", organId); + paramMap2.put("id", fs.getFieldId()); + + Field subField = s.fieldService.findByFieldId(paramMap2); + + fs.setValueType(subField.getValueType()); + fs.setValueScope(subField.getValueScope()); + fs.setFieldCn(subField.getFieldCn()); + } + f.setFieldSubCond(fieldSubCondList); + } + + //编辑页面返回字段列表时去掉自己 + paramMap.put("fieldId", id); +// List flist = s.fieldService.findByUser(paramMap); + String valueScope = fieldVo.getValueScope(); + List scopeList = null; + if(StringUtils.isNotBlank(valueScope)){ + scopeList = Arrays.asList(valueScope.split(",")); + } + + List fieldFormulaList = new ArrayList(); + String hasGroovy = null; + if (fieldVo.getFormulaShow() != null && !fieldVo.getFormulaShow().equals("")) { + fieldFormulaList = JSONObject.parseArray(fieldVo.getFormulaShow(), FieldFormulaVo.class); + + for (FieldFormulaVo fieldFormulaVo : fieldFormulaList) { + if (fieldFormulaVo.getFormula() != null && fieldFormulaVo.getFormula().contains("def main")) { + hasGroovy = "y"; + } + } + } + + String hasFormula = null; + if (StringUtils.isNotBlank(fieldVo.getFormula())) { + hasFormula = "y"; + } + + // model.addAttribute("fieldVo", fieldVo); + // model.addAttribute("hasFormula", hasFormula); + // model.addAttribute("hasGroovy", hasGroovy); + // model.addAttribute("engineId", null); + // model.addAttribute("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId())); + // model.addAttribute("searchKey", param.get("searchKey")); + // model.addAttribute("flist", flist); + // model.addAttribute("scopeList", scopeList); + // model.addAttribute("fieldFormulaList", fieldFormulaList); + HashMap modelMap = new HashMap<>(); + modelMap.put("fieldVo", fieldVo); + modelMap.put("hasFormula", hasFormula); + modelMap.put("hasGroovy", hasGroovy); + modelMap.put("engineId", null); + modelMap.put("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId())); + modelMap.put("searchKey", param.get("searchKey")); +// modelMap.put("flist", flist); + modelMap.put("scopeList", scopeList); + modelMap.put("fieldFormulaList", fieldFormulaList); + + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/datamanage/field/update 2.08. 编辑指标 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {String} searchKey searchKey + * @apiParam {Long} id 指标ID + * @apiParam {String} formula 衍生字段公式 + * @apiParam {String} formulaShow 衍生字段公式回显信息 + * @apiParam {Long} engineId 归属的引擎ID + * @apiParam {String} fieldEn 指标英文名:拼接前缀"f_" + * @apiParam {String} fieldCn 指标中文名 + * @apiParam {Long} fieldTypeId 字段类型编号 + * @apiParam {Integer} valueType 字段存值类型,待选(0),数值型(1),字符型(2),枚举型(3),小数型(4) + * @apiParam {Integer} isDerivative 是否衍生字段,0代表不是,1代表是 + * @apiParam {Integer} isOutput 是否输出字段,0代表不是,1代表是 + * @apiParam {String} valueScope 字段约束范围 + * @apiParam {JSONArray} fieldCondList 条件区域内容(传字符串) + * @apiParam (fieldCondList) {String} conditionValue 字段条件值 + * @apiParam (fieldCondList) {JSONArray} fieldSubCond 字段列表 + * @apiParam (fieldSubCond) {String} fieldId 条件字段编号 + * @apiParam (fieldSubCond) {String} operator 条件字段的运算符 + * @apiParam (fieldSubCond) {String} fieldValue 条件字段的条件设置值 + * @apiParam (fieldSubCond) {String} logical 条件字段间的逻辑符 + * @apiParam {JSONArray} formulaHidden 公式编辑、groovy脚本内容(传字符串) + * @apiParam (formulaHidden) {String} formula 衍生字段公式 + * @apiParam (formulaHidden) {String} idx 下标 + * @apiParam (formulaHidden) {JSONArray} farr 字段列表 + * @apiParam (farr) {String} fieldCN 字段中文名 + * @apiParam (farr) {String} fieldCond 字段条件区域 + * @apiParam {Boolean} isUseSql 是否使用sql获取指标 + * @apiParam {Integer} dataSourceId 使用sql获取指标时对应的数据源 + * @apiParam {String} sqlStatement 使用sql获取指标时对应的sql语句 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"searchKey":"","fieldTypeId":"302","id":876,"formula":"","formulaShow":"","engineId":"","fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","valueType":"1","isDerivative":"1","isOutput":"0","valueScope":"[-1,9999999)","fieldCondList":[{"fieldSubCond":[{"fieldId":"824","operator":">","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"666"},{"fieldSubCond":[{"fieldId":"824","operator":"<=","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"888"}],"formulaHidden":[{"fvalue":"","formula":"@同盾_评分@ - @第三方分值@ ","idx":"0","farr":[{"fieldCN":"同盾_评分","fieldCond":""},{"fieldCN":"第三方分值 ","fieldCond":""}]}],"isUseSql":"0","dataSourceId":null,"sqlStatement":""} + * @apiSuccessExample {json} 成功返回数据示例: + * {} + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_FILED) + public ResponseEntityDto update(@RequestBody FieldSaveParam fieldSaveParam) { + + Map paramMap = JSONObject.parseObject(JSONObject.toJSONString(fieldSaveParam), Map.class); + + // 校验 + HashMap fieldEnValidateMap = new HashMap<>(); + fieldEnValidateMap.put("fieldEn", paramMap.get("fieldEn")); + fieldEnValidateMap.put("engineId", paramMap.get("engineId")); + fieldEnValidateMap.put("Id", paramMap.get("id")); + int fieldEnNum = fieldEnAjaxValidate(fieldEnValidateMap); + if (fieldEnNum > 0) { + throw new ApiException(ErrorCodeEnum.FIELD_EN_REPEAT.getCode(), ErrorCodeEnum.FIELD_EN_REPEAT.getMessage()); + } + s.fieldService.sqlFieldCheck(paramMap); + HashMap fieldCnValidateMap = new HashMap<>(); + fieldCnValidateMap.put("fieldCn", paramMap.get("fieldCn")); + fieldCnValidateMap.put("engineId", paramMap.get("engineId")); + fieldCnValidateMap.put("Id", paramMap.get("id")); + int fieldCnNum = fieldCnAjaxValidate(fieldCnValidateMap); + if (fieldCnNum > 0) { + throw new ApiException(ErrorCodeEnum.FIELD_CN_REPEAT.getCode(), ErrorCodeEnum.FIELD_CN_REPEAT.getMessage()); + } + + HashMap checkFieldMap = new HashMap<>(); + checkFieldMap.put("fieldId", paramMap.get("id").toString()); + Map checkFieldresult = checkField(checkFieldMap); + boolean beUsed = (boolean) checkFieldresult.get("beUsed"); + if (beUsed) { + throw new ApiException(ErrorCodeEnum.FIELD_BE_USERD.getCode(), ErrorCodeEnum.FIELD_BE_USERD.getMessage()); + } + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + paramMap.put("userId", userId); + paramMap.put("organId", organId); + + paramMap.put("engineId", null); + //组织通用字段 + Integer isCommon = 1; + paramMap.put("isCommon", isCommon); +// String formulaFields = "50,70,90"; +// paramMap.put("formulaFields", formulaFields); + + s.fieldService.updateField(paramMap); + + // model.addAttribute("engineId", null); + // model.addAttribute("fieldTypeId", fieldTypeId); + // model.addAttribute("searchKey", paramMap.get("searchKey")); + // model.addAttribute("isCommon", 1); + + HashMap modelMap = new HashMap<>(); + modelMap.put("engineId", null); + //modelMap.put("fieldTypeId",fieldTypeId); + modelMap.put("searchKey", paramMap.get("searchKey")); + modelMap.put("isCommon", 1); + + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/datamanage/field/findFieldByUser 2.09. 获当前用户的所有指标 + * @apiGroup field + * @apiVersion 2.0.0 + * @apiParam {String} [searchKey] searchKey + * @apiParam {String} [engineId] engineId + * @apiParam {String} [fieldId] fieldId + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"organId":46,"isCommon":1,"searchKey":"","userId":135,"fieldList":[{"page":0,"rows":0,"total":null,"id":587,"fieldEn":"f_hr_age","fieldCn":"年龄准入","fieldTypeId":270,"fieldType":"准入","valueType":1,"valueTypeName":null,"valueScope":"(-1,999999]","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":8739,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":871,"fieldEn":"f_ziduan111428","fieldCn":"字段111428","fieldTypeId":362,"fieldType":"3月11日测试","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10294,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":872,"fieldEn":"f_ziduan111518","fieldCn":"字段111518","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10295,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"f_ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10296,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10299,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"engineId":null,"fieldId":""}} + */ + @RequestMapping(value = "/findFieldByUser", method = RequestMethod.POST) + public ResponseEntityDto findFieldByUser(@RequestBody HashMap paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + paramMap.put("userId", userId); + paramMap.put("organId", organId); + + Integer isCommon = 1; + Integer engineId = null; + if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) { + isCommon = 0; + engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue(); + paramMap.put("engineId", engineId); + } else { + isCommon = 1; + paramMap.put("engineId", null); + } + paramMap.put("isCommon", isCommon); + + if (!paramMap.containsKey("fieldId")) { + paramMap.put("fieldId", null); + } + + List fieldList = s.fieldService.findByUser(paramMap); + + paramMap.put("fieldList", fieldList); + + return ResponseEntityBuilder.buildNormalResponse(paramMap); + } + + private Map checkField(Map param) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + param.put("userId", userId); + param.put("organId", organId); + param.put("engineId", null); + + return s.fieldService.checkField(param); + } + + public int fieldEnAjaxValidate(HashMap paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + if ("".equals(paramMap.get("engineId"))) { + paramMap.put("engineId", null); + } + + if ("".equals(paramMap.get("Id"))) { + paramMap.put("Id", null); + } + + paramMap.put("fieldCn", null); + + return s.fieldService.isExists(paramMap); + } + + public int fieldCnAjaxValidate(HashMap paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + if ("".equals(paramMap.get("engineId"))) { + paramMap.put("engineId", null); + } + + if ("".equals(paramMap.get("Id"))) { + paramMap.put("Id", null); + } + + paramMap.put("fieldEn", null); + + return s.fieldService.isExists(paramMap); + } + + /** + * @api {POST} /v2/datamanage/field/downTemplate 2.10. 指标导入模板下载 + * @apiGroup field + * @apiVersion 2.0.0 + */ + @RequestMapping("downTemplate") + public ResponseEntity downExcelTemplate() throws IOException { + ClassPathResource classPathResource = new ClassPathResource("excleTemplate/field.xlsx"); + InputStream inputStream = classPathResource.getInputStream(); + HttpHeaders headers = new HttpHeaders(); + String fileName = new String("基础指标导入模板.xlsx".getBytes("UTF-8"), "iso-8859-1");//为了解决中文名称乱码问题 + headers.setContentDispositionFormData("attachment", fileName); + headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); + return new ResponseEntity(IOUtils.toByteArray(inputStream), headers, HttpStatus.CREATED); + } + + /** + * @api {POST} /v2/datamanage/field/upload 2.11. 批量导入指标 + * @apiGroup field + * @apiVersion 2.0.0 + */ + @RequestMapping(value = "upload", method = RequestMethod.POST) + public ResponseEntityDto upload(HttpServletRequest request) throws Exception { + //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器) + CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); + //检查form中是否有enctype="multipart/form-data" + + String accessUrl = ""; + String fileName = ""; + if (multipartResolver.isMultipart(request)) { + //将request变成多部分request + MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; + //获取multiRequest 中所有的文件名 + Iterator iter = multiRequest.getFileNames(); + while (iter.hasNext()) { + //一次遍历所有文件 + MultipartFile file = multiRequest.getFile(iter.next().toString()); + if (file != null) { + + String uploadDir = request.getSession().getServletContext().getRealPath("/") + "upload/fieldUpload/"; + if (!new File(uploadDir).exists()) { + File dir = new File(uploadDir); + dir.mkdirs(); + } + fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); + String path = uploadDir + fileName; + //上传 + file.transferTo(new File(path)); + accessUrl = path; + } + } + } + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + Map paramMap = new HashMap<>(); + paramMap.put("userId", userId); + paramMap.put("author", userId); + paramMap.put("organId", organId); + Integer isCommon = 0; + if (paramMap.get("engineId") == null) { + isCommon = 1; + } else { + isCommon = 0; + } + paramMap.put("isCommon", isCommon); + + Map resultMap = s.fieldService.importExcel(accessUrl, paramMap); + return ResponseEntityBuilder.buildNormalResponse(resultMap); + } + + /** + * @api {POST} /v2/datamanage/field/getEngineFields 2.xx. 获取引擎可用字段 + * @apiGroup zzzzz01 + * @apiVersion 2.0.0 + * @apiParam {Integer} isOutput 是否输出字段,0代表不是,1代表是,默认不是(0) + * @apiParam {Integer} [engineId] 引擎id + * @apiSuccess {String} status 状态:1成功,0失败 + * @apiParamExample {json} 请求示例: + * {"isOutput":0} + * {"isOutput":1} + * {"isOutput":0,"engineId":211} + * {"isOutput":1,"engineId":211} + * @apiSuccessExample {json} 成功返回数据示例: + * {待完善} + */ + @RequestMapping(value = "/getEngineFields", method = RequestMethod.POST) + public ResponseEntityDto getEngineFields(@RequestBody Map paramMap) { + //通过引擎编号查询可用字段,后面可以放到缓存中 + User user = SessionManager.getLoginAccount(); + paramMap.put("userId", user.getUserId()); + paramMap.put("organId", user.getOrganId()); + List fields = s.fieldService.getFieldList(paramMap); + if (CollectionUtil.isNotNullOrEmpty(fields)) { + List fieldEnumVos = new ArrayList(); + FieldEnumVo fieldEnumVo = null; + for (Field field : fields) { + fieldEnumVo = new FieldEnumVo(); + fieldEnumVo.setField(field); + if (field.getValueType() == ValueType.Enum.getValue()) { + //如果是枚举 + String valueScope = field.getValueScope(); + if (StringUtil.isValidStr(valueScope)) { + //获取枚举值 + fieldEnumVo.setEnums(Arrays.asList(valueScope.split(CommonConst.SYMBOL_COMMA))); + } + } + fieldEnumVos.add(fieldEnumVo); + } + return ResponseEntityBuilder.buildNormalResponse(fieldEnumVos); + } + return ResponseEntityBuilder.buildNormalResponse(new ArrayList()); + } + + @PostMapping(value = "/updateFieldFolder") + @ArchivesLog(operationType = OpTypeConst.UPDATE_FIELD_FOLDER) + public ResponseEntityDto updateFieldFolder(@RequestBody UpdateFolderParam param){ + UpdateFolderParam.checkNotNull(param); + int result = s.fieldService.updateFieldFolder(param); + if (result>0){ + return ResponseEntityBuilder.buildNormalResponse("成功移动"+result+"条数据"); + } + return ResponseEntityBuilder.buildErrorResponse("移动失败",""); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldCondMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldCondMapper.java new file mode 100644 index 0000000..cd8a05b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldCondMapper.java @@ -0,0 +1,36 @@ +package com.risk.riskmanage.datamanage.mapper; + +import java.util.List; + +import com.risk.riskmanage.datamanage.model.FieldCond; +import com.risk.riskmanage.common.mapper.BaseMapper; + +public interface FieldCondMapper extends BaseMapper { + + /** + * createFieldCond:(生成条件关系).
+ * + * @param + * @return 字段列表 + */ + public boolean createFieldCond(List fieldCondVoList); + + /** + * getFieldCondList:(找出字段条件设置(去重)).
+ * + * @param + * @return 字段列表 + */ + public List getFieldCondList(Long fieldId); + + /** + * deleteFieldCondById:(删除字段的条件设置).
+ * + * @param + * @return 是否删除成功 + */ + public boolean deleteFieldCondById(Long id); + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldMapper.java new file mode 100644 index 0000000..b6c3b45 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldMapper.java @@ -0,0 +1,270 @@ +package com.risk.riskmanage.datamanage.mapper; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.datamanage.model.Field; +import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam; +import org.apache.ibatis.annotations.Param; + +public interface FieldMapper extends BaseMapper { + + /** + * findByFieldType:(根据字段类型名找出该用户可用的字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findByFieldType(Map paramMap); + + /** + * checkField:(查找引用该字段的所有字段).
+ * + * @param paramMap 参数集合 + * @return 字段id逗号分隔字符串 + */ + public String checkField(Map paramMap); + + /** + * getSourceField:(查找构成该字段的子字段及原生字段).
+ * + * @param paramMap 参数集合 + * @return + */ + public String getSourceField(Map paramMap); + + /** + * findFieldByIds:(找出一批字段id对应的字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findFieldByIds(Map paramMap); + /** + * findFieldByIds:(找出一批字段id对应的字段列表).
+ * @author caowenyu + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findFieldByIdsbyorganId(Map paramMap); + + /** + * findFieldIdsByTypeIds:(找出一批字段类型id对应的字段id列表).
+ * + * @param paramMap 参数集合 + * @return 字段id逗号分隔字符串 + */ + public String findFieldIdsByTypeIds(Map paramMap); + + /** + * findFieldTypeIdsByFieldId:(在引擎里找出一批字段id对应的唯一字段类型id串).
+ * + * @param paramMap 参数集合 + * @return 字段类型id逗号分隔字符串 + */ + public String findFieldTypeIdsByFieldId(Map paramMap); + + /** + * findOrgFieldTypeIdsByIds:(在通用字段里找出一批字段id对应的唯一字段类型id串).
+ * + * @param paramMap 参数集合 + * @return 字段类型id逗号分隔字符串 + */ + public String findOrgFieldTypeIdsByIds(Map paramMap); + + /** + * findFieldByIdsForCheckField:(找出一批字段id的字段列表(包含引擎引用的通用字段,engineId为空是不加engineId=null条件)).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findFieldByIdsForCheckField(Map paramMap); + + /** + * findOrgFieldIdsByTypeIds:(在通用字段里找出一批字段类型id的字段id列表).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public String findOrgFieldIdsByTypeIds(Map paramMap); + + /** + * findByFieldName:(根据字段英文或中文名找出字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldName(Map paramMap); + + /** + * findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldEn(Map paramMap); + /** + * findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldEnbyorganId(Map paramMap); + + + /** + * findByFieldCn:(根据字段中文名找出字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldCn(Map paramMap); + /** + * findByFieldCn:(根据字段中文名找出字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldCnbyorganId(Map paramMap); + + /** + * findByFieldCn:(按中文名查找通用字段).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldCnNoEngineId(Map paramMap); + /** + * findByFieldCn:(按中文名查找通用字段).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldCnNoEngineIdbyorganId(Map paramMap); + + + /** + * findByUser:(找出该用户可用字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List findByUser(Map paramMap); + + /** + * searchByName:(模糊查找该用户可用字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List searchByName(Map paramMap); + + /** + * findFieldTypeId:(根据批量选择的字段ID查找出它们的字段类型ID).
+ * + * @param paramMap 参数集合 + * @return fieldTypeId + * */ + public Long findFieldTypeId(Map paramMap); + + /** + * countByParams:(字段列表记录数).
+ * + * @param paramMap 参数集合 + * @return 字段列表记录条数 + */ + public int countByParams(Map paramMap); + + /** + * findByFieldId:(根据字段Id查找字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldId(Map paramMap); + + /** + * findByFieldId:(根据字段Id查找字段对象).
+ * @author caowenyu + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldIdbyorganId(Map paramMap); + + + /** + * findByFieldIdNoEngineId:(根据字段Id查找组织通用字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldIdNoEngineId(Map paramMap); + + /** + * createField:(添加字段).
+ * + * @param fieldVo 字段实体对象 + * @return 插入是否成功 + */ + public boolean createField(Field fieldVo); + + /** + * batchCreateField:(批量添加字段).
+ * + * @param fieldVoList 字段实体对象list集合 + * @return 字段类型列表 + */ + public boolean batchCreateField(List fieldVoList); + + /** + * updateField:(修改字段).
+ * + * @param paramMap 参数集合 + * @return 更新是否成功 + */ + + public boolean updateField(Map paramMap); + + /** + * isExists:(根据字段英文或中文名查找字段是否存在).
+ * + * @param paramMap 参数集合 + * @return 存在的记录条数 + */ + public int isExists(Map paramMap); + + /** + * getFieldList:(获取组织的所有字段).
+ * + * @param paramMap 参数集合 + * @return + */ + public List getFieldList(Map paramMap); + + /** + * findFieldByIds:(找出一批字段id对应的字段,并且为衍生字段列表).
+ * @author caowenyu + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findFieldByIdsAndIsderivative(Map paramMap); + + /** + * findExcelByFieldType:(获取导出Excel需要的字段信息).
+ * + * @param paramMap 参数集合 + * @return + */ + public List findExcelByFieldType(Map paramMap); + + public String findFieldNameById(Long fieldId); + + int updateFieldFolder(UpdateFolderParam param); + + List selectByIds(@Param("ids") Collection ids); + + List selectByEns(@Param("ens") Collection ens); + + List selectByOrganCns(@Param("cns")Collection cns,@Param("organId")Long organId); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeMapper.java new file mode 100644 index 0000000..d185b0f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeMapper.java @@ -0,0 +1,126 @@ +package com.risk.riskmanage.datamanage.mapper; + +import java.util.List; +import java.util.Map; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.datamanage.model.FieldType; +import com.risk.riskmanage.datamanage.model.request.FieldTreeParam; + +public interface FieldTypeMapper extends BaseMapper { + + /** + * getFieldTypeList:(查找用户的字段类型列表).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List getFieldTypeList(Map paramMap); + + /** + * getSubFieldTypeList:(根据传入的字段父类型查找子类型列表).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List getSubFieldTypeList(Map paramMap); + + /** + * findFieldTypeById:(根据传入的字段类型ID查找字段类型名).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public FieldType findFieldTypeById(Map paramMap); + + /** + * findTypeIdByParentId:(根据传入的字段类型父ID查找子类型ID).
+ * + * @param paramMap 参数集合 + * @return 子字段类型ID + */ + public String findTypeIdByParentId(Map paramMap); + + /** + * findTypeIdByParentId:(根据传入的字段类型类型ID查找父ID).
+ * + * @param paramMap 参数集合 + * @return 子字段类型ID + */ + public String findParentIdByTypeId(Map paramMap); + + /** + * findFieldType:(查找用户可用的字段类型列表,通用组织所有,引擎只有自定义).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List findFieldType(Map paramMap); + + /** + * createFieldType:(新增字段类型).
+ * + * @param fieldTypeVo 字段类型实体类 + * @return 插入成功 + */ + public boolean createFieldType(FieldType fieldTypeVo); + + /** + * findIdByFieldType:(新增字段类型).
+ * + * @param paramMap paramMap + * @return 字段类型编号 + */ + public long findIdByFieldType(Map paramMap); + + /** + * updateFieldType:(更新字段类型名).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean updateFieldType(FieldTreeParam param); + + /** + * updateFieldTypeByTypeIds:(更新字段类型为删除状态(-1)).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean updateFieldTypeByTypeIds(Map paramMap); + + /** + * deleteFieldTypeByTypeIds:(删除字段类型下没有字段的空节点)).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean deleteFieldTypeByTypeIds(Map paramMap); + + /** + * backFieldTypeByTypeIds:(更新字段类型状态为启用状态(1)).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean backFieldTypeByTypeIds(Map paramMap); + + /** + * isExists:(查找字段名是否存在).
+ * + * @param paramMap 参数集合 + * @return 存在的记录条数 + */ + public int isExists(Map paramMap); + + + /** + * isExistsDefaultTreeName:(查找默认节点名是否存在).
+ * + * @param paramMap 参数集合 + * @return 存在的记录条数 + */ + public int isExistsDefaultTreeName(Map paramMap); + + List selectFieldTypeList(FieldTreeParam param); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeUserMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeUserMapper.java new file mode 100644 index 0000000..24cf484 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldTypeUserMapper.java @@ -0,0 +1,52 @@ +package com.risk.riskmanage.datamanage.mapper; + +import java.util.Map; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.datamanage.model.FieldTypeUser; +import com.risk.riskmanage.datamanage.model.request.FieldTreeParam; + +public interface FieldTypeUserMapper extends BaseMapper { + + /** + * createFieldTypeUserRel:(新增字段类型).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + */ + public boolean createFieldTypeUserRel(Map paramMap); + + /** + * batchBindEngineFieldTypeUserRel:(把一批通用字段类型id中不存在的类型id批量绑定到引擎).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + */ + public boolean batchBindEngineFieldTypeUserRel(Map paramMap); + + /** + * deleteFieldTypeUserRel:(取消字段类型).
+ * + * @param paramMap 参数集合 + * @return 删除成功 + */ + public boolean deleteFieldTypeUserRel(Map paramMap); + + /** + * updateFieldTypeUserRel:(更新字段类型名).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean updateFieldTypeUserRel(FieldTreeParam param); + + /** + * findNodeIds:(查找引擎在用的节点集合).
+ * + * @param paramMap 参数集合 + * @return + */ + public String findNodeIds(Map paramMap); + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldUserMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldUserMapper.java new file mode 100644 index 0000000..ffe385e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/mapper/FieldUserMapper.java @@ -0,0 +1,74 @@ +package com.risk.riskmanage.datamanage.mapper; + +import java.util.Map; + +import com.risk.riskmanage.datamanage.model.FieldUser; +import com.risk.riskmanage.common.mapper.BaseMapper; + +public interface FieldUserMapper extends BaseMapper { + + /** + * createFieldUserRel:(绑定字段和用户关系).
+ * + * @param fieldUser 用户字段实体类 + * @return 插入成功 + * */ + public boolean createFieldUserRel(FieldUser fieldUserVo); + + /** + * batchCreateFieldUserRel:(批量导入字段信息后批量绑定字段和用户关系).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + * */ + public boolean batchCreateFieldUserRel(Map paramMap); + + /** + * batchBindEngineFieldUserRel:(把一批通用字段id中未绑定的字段id批量绑定到引擎).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + * */ + public boolean batchBindEngineFieldUserRel(Map paramMap); + + /** + * batchCreateEngineFieldUserRel:(把id、英文名、中文名不重复的组织字段批量绑定到引擎).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + * */ + public boolean batchCreateEngineFieldUserRel(Map paramMap); + + /** + * updateFieldUserRel:(更新字段).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + * */ + public boolean updateFieldUserRel(Map paramMap); + + /** + * updateStatus:(单个或批量更新用户字段关系).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + * */ + public boolean updateStatus(Map paramMap); + + /** + * deleteFieldByIds:(批量修改字段启用状态为删除状态(-1)).
+ * + * @param paramMap 参数集合 + * @return 更新是否成功 + */ + public boolean deleteFieldByIds(Map paramMap); + + /** + * deleteFieldByIds:(批量修改字段删除状态为启用状态(1)).
+ * + * @param paramMap 参数集合 + * @return 更新是否成功 + */ + public boolean backFieldByIds(Map paramMap); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/Field.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/Field.java new file mode 100644 index 0000000..9cc6169 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/Field.java @@ -0,0 +1,456 @@ +package com.risk.riskmanage.datamanage.model; + +import com.risk.riskmanage.common.model.BasePage; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +public class Field extends BasePage implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 字段英文名 + * */ + private String fieldEn; + + /** + * 字段中文名 + * */ + private String fieldCn; + + /** + * 字段类型编号 + * */ + private Long fieldTypeId; + + /** + * 字段类型名 + * */ + private String fieldType; + + /** + * 字段存值类型 + * */ + private Integer valueType; + + /** + * 字段存值类型中文 + * */ + private String valueTypeName; + + /** + * 字段约束范围 + * */ + private String valueScope; + + /** + * 是否衍生字段 + * */ + private Integer isDerivative; + + /** + * 是否衍生字段 + * */ + private String isDerivativeName; + + /** + * 是否输出字段 + * */ + private Integer isOutput; + + /** + * 是否输出字段 + * */ + private String isOutputName; + + /** + * 是否组织定义的通用字段 + * */ + private Integer isCommon; + + /** + * 衍生字段公式 + * */ + private String formula; + + /** + * 衍生字段公式回显信息 + * */ + private String formulaShow; + + /** + * 衍生字段引用的字段id + * */ + private String usedFieldId; + + /** + * 衍生字段引用的原生字段id + * */ + private String origFieldId; + + /** + * 创建人 + * */ + private Long author; + + /** + * 创建人昵称 + * */ + private String nickName; + + /** + * 创建时间 + * */ + private Date created; + + /** + * 归属的引擎ID + * */ + private Long engineId; + + /** + * 归属的引擎名称 + * */ + private String engineName; + + /** + * 字段状态(启用、停用、删除、未知) + * */ + private String status; + + /** + * 字段条件设置集合 + * */ + private List fieldCondList; + + /** + * 字段用户关系编号 + * */ + private Long fieldRelId; + + /** + * 是否使用sql获取指标 + */ + private Boolean isUseSql; + + /** + * 使用sql获取指标时对应的数据源 + */ + private Integer dataSourceId; + + /** + * 使用sql获取指标时对应的sql语句 + */ + private String sqlStatement; + + /** + * sql变量配置 + */ + private String sqlVariable; + + //是否使用接口 + private Boolean isInterface; + + //接口id + private Integer interfaceId; + + //接口解析指标 + private String interfaceParseField; + + //json类型对应的json值 + private String jsonValue; + //字典变量如:日期字符串 + private String dictVariable; + + public String getDictVariable() { + return dictVariable; + } + + public void setDictVariable(String dicVariable) { + this.dictVariable = dicVariable; + } + + /** + * 该字段归属的组织编号 + * */ + private Long organId; + + public String getInterfaceParseField() { + return interfaceParseField; + } + + public void setInterfaceParseField(String interfaceParseField) { + this.interfaceParseField = interfaceParseField; + } + + public String getJsonValue() { + return jsonValue; + } + + public void setJsonValue(String jsonValue) { + this.jsonValue = jsonValue; + } + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getFieldEn() { + return fieldEn; + } + public void setFieldEn(String fieldEn) { + this.fieldEn = fieldEn; + } + public String getFieldCn() { + return fieldCn; + } + public void setFieldCn(String fieldCn) { + this.fieldCn = fieldCn; + } + public Long getFieldTypeId() { + return fieldTypeId; + } + public void setFieldTypeId(Long fieldTypeId) { + this.fieldTypeId = fieldTypeId; + } + public Integer getValueType() { + return valueType; + } + public void setValueType(Integer valueType) { + this.valueType = valueType; + } + public String getValueScope() { + return valueScope; + } + public void setValueScope(String valueScope) { + this.valueScope = valueScope; + } + + public Integer getIsDerivative() { + return isDerivative; + } + public void setIsDerivative(Integer isDerivative) { + this.isDerivative = isDerivative; + } + + public Integer getIsOutput() { + return isOutput; + } + public void setIsOutput(Integer isOutput) { + this.isOutput = isOutput; + } + public Integer getIsCommon() { + return isCommon; + } + public void setIsCommon(Integer isCommon) { + this.isCommon = isCommon; + } + public String getFormula() { + return formula; + } + public void setFormula(String formula) { + this.formula = formula; + } + public String getFormulaShow() { + return formulaShow; + } + public void setFormulaShow(String formulaShow) { + this.formulaShow = formulaShow; + } + public String getUsedFieldId() { + return usedFieldId; + } + public void setUsedFieldId(String usedFieldId) { + this.usedFieldId = usedFieldId; + } + public String getOrigFieldId() { + return origFieldId; + } + public void setOrigFieldId(String origFieldId) { + this.origFieldId = origFieldId; + } + public Long getAuthor() { + return author; + } + public void setAuthor(Long author) { + this.author = author; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public Date getCreated() { + return created; + } + public void setCreated(Date created) { + this.created = created; + } + public Long getEngineId() { + return engineId; + } + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + public String getFieldType() { + return fieldType; + } + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public Long getFieldRelId() { + return fieldRelId; + } + public void setFieldRelId(Long fieldRelId) { + this.fieldRelId = fieldRelId; + } + public List getFieldCondList() { + return fieldCondList; + } + public void setFieldCondList(List fieldCondList) { + this.fieldCondList = fieldCondList; + } + public String getEngineName() { + return engineName; + } + public void setEngineName(String engineName) { + this.engineName = engineName; + } + + public String getValueTypeName() { + return valueTypeName; + } + + public void setValueTypeName(String valueTypeName) { + this.valueTypeName = valueTypeName; + } + + public String getIsDerivativeName() { + return isDerivativeName; + } + + public void setIsDerivativeName(String isDerivativeName) { + this.isDerivativeName = isDerivativeName; + } + + public String getIsOutputName() { + return isOutputName; + } + + public void setIsOutputName(String isOutputName) { + this.isOutputName = isOutputName; + } + + public Boolean getUseSql() { + return isUseSql; + } + + public void setUseSql(Boolean useSql) { + isUseSql = useSql; + } + + public Integer getDataSourceId() { + return dataSourceId; + } + + public void setDataSourceId(Integer dataSourceId) { + this.dataSourceId = dataSourceId; + } + + public String getSqlStatement() { + return sqlStatement; + } + + public void setSqlStatement(String sqlStatement) { + this.sqlStatement = sqlStatement; + } + + @Override + public String toString() { + return "Field{" + + "id=" + id + + ", fieldEn='" + fieldEn + '\'' + + ", fieldCn='" + fieldCn + '\'' + + ", fieldTypeId=" + fieldTypeId + + ", fieldType='" + fieldType + '\'' + + ", valueType=" + valueType + + ", valueTypeName='" + valueTypeName + '\'' + + ", valueScope='" + valueScope + '\'' + + ", isDerivative=" + isDerivative + + ", isDerivativeName='" + isDerivativeName + '\'' + + ", isOutput=" + isOutput + + ", isOutputName='" + isOutputName + '\'' + + ", isCommon=" + isCommon + + ", formula='" + formula + '\'' + + ", formulaShow='" + formulaShow + '\'' + + ", usedFieldId='" + usedFieldId + '\'' + + ", origFieldId='" + origFieldId + '\'' + + ", author=" + author + + ", nickName='" + nickName + '\'' + + ", created=" + created + + ", engineId=" + engineId + + ", engineName='" + engineName + '\'' + + ", status='" + status + '\'' + + ", fieldCondList=" + fieldCondList + + ", fieldRelId=" + fieldRelId + + ", isUseSql=" + isUseSql + + ", dataSourceId=" + dataSourceId + + ", sqlStatement='" + sqlStatement + '\'' + + ", isInterface=" + isInterface + + ", interfaceId=" + interfaceId + + '}'; + } + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public Boolean getInterface() { + return isInterface; + } + + public void setInterface(Boolean anInterface) { + isInterface = anInterface; + } + + public Integer getInterfaceId() { + return interfaceId; + } + + public void setInterfaceId(Integer interfaceId) { + this.interfaceId = interfaceId; + } + + public String getSqlVariable() { + return sqlVariable; + } + + public void setSqlVariable(String sqlVariable) { + this.sqlVariable = sqlVariable; + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldCond.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldCond.java new file mode 100644 index 0000000..7996936 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldCond.java @@ -0,0 +1,141 @@ +package com.risk.riskmanage.datamanage.model; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.risk.riskmanage.common.model.BasePage; +import com.risk.riskmanage.datamanage.vo.FieldSubCondVo; + +public class FieldCond extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 条件编号 + * */ + private Long id; + + /** + * 字段编号 + * */ + private Long fieldId; + + /** + * 字段条件值 + * */ + private String conditionValue; + + /** + * 字段条件区域设置json格式 + * */ + private String content; + + /** + * 条件字段编号 + * */ + private Long condFieldId; + + /** + * 条件字段的运算符 + * */ + private String condFieldOperator; + + /** + * 条件字段的条件设置值 + * */ + private String condFieldValue; + + /** + * 条件字段间的逻辑符 + * */ + private String condFieldLogical; + + /** + * 创建时间 + * */ + private Date created; + + private List fieldSubCond; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getFieldId() { + return fieldId; + } + + public void setFieldId(Long fieldId) { + this.fieldId = fieldId; + } + + public String getConditionValue() { + return conditionValue; + } + + public void setConditionValue(String conditionValue) { + this.conditionValue = conditionValue; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Long getCondFieldId() { + return condFieldId; + } + + public void setCondFieldId(Long condFieldId) { + this.condFieldId = condFieldId; + } + + public String getCondFieldOperator() { + return condFieldOperator; + } + + public void setCondFieldOperator(String condFieldOperator) { + this.condFieldOperator = condFieldOperator; + } + + public String getCondFieldValue() { + return condFieldValue; + } + + public void setCondFieldValue(String condFieldValue) { + this.condFieldValue = condFieldValue; + } + + public String getCondFieldLogical() { + return condFieldLogical; + } + + public void setCondFieldLogical(String condFieldLogical) { + this.condFieldLogical = condFieldLogical; + } + + public List getFieldSubCond() { + return fieldSubCond; + } + + public void setFieldSubCond(List fieldSubCond) { + this.fieldSubCond = fieldSubCond; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldType.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldType.java new file mode 100644 index 0000000..3d917d1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldType.java @@ -0,0 +1,130 @@ +package com.risk.riskmanage.datamanage.model; + +import com.risk.riskmanage.common.model.BasePage; + +import java.io.Serializable; + +public class FieldType extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Integer id; + + /** + * 字段类型名 + */ + private String fieldType; + + /** + * 父节点编号 + */ + private Integer parentId; + + /** + * 是否组织定义的通用字段类型 + */ + private Integer isCommon; + + private Integer type; + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + /** + * 字段类型的子类集合 + */ + private FieldType[] children; + + /** + * 是否为父类 + */ + private String isParent = "true"; + + /** + * 引擎编号 + */ + private Integer engineId; + + /** + * 文件夹图片路径 + */ + private String icon; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getFieldType() { + return fieldType; + } + + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + + public Integer getParentId() { + return parentId; + } + + public void setParentId(Integer parentId) { + this.parentId = parentId; + } + + public Integer getIsCommon() { + return isCommon; + } + + public void setIsCommon(Integer isCommon) { + this.isCommon = isCommon; + } + + public FieldType[] getChildren() { + return children; + } + + public void setChildren(FieldType[] children) { + this.children = children; + } + + public String getIsParent() { + return isParent; + } + + public void setIsParent(String isParent) { + this.isParent = isParent; + } + + public Integer getEngineId() { + return engineId; + } + + public void setEngineId(Integer engineId) { + this.engineId = engineId; + } + + public String getIcon() { +// if(engineId!=null) +// icon = "../../resource/images/authority/folder.png"; +// else + icon = "../resource/images/authority/folder.png"; + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldTypeUser.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldTypeUser.java new file mode 100644 index 0000000..bbac6d7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldTypeUser.java @@ -0,0 +1,79 @@ +package com.risk.riskmanage.datamanage.model; + +import java.io.Serializable; +import java.util.Date; + +import com.risk.riskmanage.common.model.BasePage; + +public class FieldTypeUser extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Integer id; + + /** + * 字段类型编号(表主键) + * */ + private Integer fieldTypeId; + + /** + * 该字段类型归属的组织编号 + * */ + private Long organId; + + /** + * 该字段类型归属的引擎id(表主键) + * */ + private Integer engineId; + + /** + * 创建或修改该字段的用户编号 + * */ + private Long userId; + + /** + * 创建时间 + * */ + private Date created; + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public Integer getFieldTypeId() { + return fieldTypeId; + } + public void setFieldTypeId(Integer fieldTypeId) { + this.fieldTypeId = fieldTypeId; + } + public Long getOrganId() { + return organId; + } + public void setOrganId(Long organId) { + this.organId = organId; + } + public Integer getEngineId() { + return engineId; + } + public void setEngineId(Integer engineId) { + this.engineId = engineId; + } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public Date getCreated() { + return created; + } + public void setCreated(Date created) { + this.created = created; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldUser.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldUser.java new file mode 100644 index 0000000..a2c8595 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FieldUser.java @@ -0,0 +1,101 @@ +package com.risk.riskmanage.datamanage.model; + +import java.io.Serializable; +import java.util.Date; + +import com.risk.riskmanage.common.model.BasePage; + +public class FieldUser extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 字段编号(表主键) + * */ + private Long fieldId; + + /** + * 该字段归属的组织编号 + * */ + private Long organId; + + /** + * 该字段归属的引擎id(表主键) + * */ + private Long engineId; + + /** + * 创建或修改该字段的用户编号 + * */ + private Long userId; + + /** + * 启用停用删除标志 + * */ + private int status; + + /** + * 创建时间 + * */ + private Date created; + + /** + * 更新时间 + * */ + private Date updated; + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Long getFieldId() { + return fieldId; + } + public void setFieldId(Long fieldId) { + this.fieldId = fieldId; + } + public Long getOrganId() { + return organId; + } + public void setOrganId(Long organId) { + this.organId = organId; + } + public Long getEngineId() { + return engineId; + } + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public int getStatus() { + return status; + } + public void setStatus(int status) { + this.status = status; + } + public Date getCreated() { + return created; + } + public void setCreated(Date created) { + this.created = created; + } + public Date getUpdated() { + return updated; + } + public void setUpdated(Date updated) { + this.updated = updated; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FormulaField.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FormulaField.java new file mode 100644 index 0000000..62f3ccf --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/FormulaField.java @@ -0,0 +1,44 @@ +package com.risk.riskmanage.datamanage.model; + +import java.io.Serializable; + +import com.risk.riskmanage.common.model.BasePage; + +public class FormulaField extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 字段编号(表主键) + * */ + private Long fieldId; + /** + * 公式用到的字段编号(表主键) + * */ + private Long formulaFieldId; + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Long getFieldId() { + return fieldId; + } + public void setFieldId(Long fieldId) { + this.fieldId = fieldId; + } + public Long getFormulaFieldId() { + return formulaFieldId; + } + public void setFormulaFieldId(Long formulaFieldId) { + this.formulaFieldId = formulaFieldId; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldSaveParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldSaveParam.java new file mode 100644 index 0000000..2215674 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldSaveParam.java @@ -0,0 +1,97 @@ +package com.risk.riskmanage.datamanage.model.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FieldSaveParam implements Serializable { + + private static final long serialVersionUID = 1L; + + // http://47.102.125.25/apidoc/index.html#api-field-PostV2DatamanageFieldSave + + private String searchKey; // + private Long id; + private String formula; + private String formulaShow; + private Long engineId; + private String fieldEn; + private String fieldCn; + private Long fieldTypeId; + private Integer valueType; + private Integer isDerivative; + private Integer isOutput; + private String valueScope; + private String fieldCondList; // + private String formulaHidden; // + private Boolean isUseSql; + private Integer dataSourceId; + private String sqlStatement; + private String sqlVariable; + private Boolean isInterface; + private Integer interfaceId; + private String interfaceParseField; + private String jsonValue; + private String dictVariable; + +// +// public Field toField() { +// Field field = new Field(); +// +// field.setId(this.getId()); +// field.setFormula(this.getFormula()); +// field.setFormulaShow(this.getFormulaShow()); +// field.setEngineId(this.getEngineId()); +// field.setFieldEn(this.getFieldEn()); +// field.setFieldCn(this.getFieldCn()); +// field.setFieldTypeId(this.getFieldTypeId()); +// field.setValueType(this.getValueType()); +// field.setIsDerivative(this.getIsDerivative()); +// field.setIsOutput(this.getIsOutput()); +// field.setValueScope(this.getValueScope()); +// +// field.setUseSql(this.getIsUseSql()); +// field.setDataSourceId(this.getDataSourceId()); +// field.setSqlStatement(this.getSqlStatement()); +// +// return field; +// } +// +// public Map toMap() { +// HashMap hashMap = new HashMap<>(); +// hashMap.put("searchKey", this.getSearchKey()); +// hashMap.put("id", this.getId()); +// hashMap.put("formula", this.getFormula()); +// hashMap.put("formulaShow", this.getFormulaShow()); +// hashMap.put("engineId", this.getEngineId()); +// hashMap.put("formulaFields", this.getFormulaFields()); +// hashMap.put("fieldEn", this.getFieldEn()); +// hashMap.put("fieldCn", this.getFieldCn()); +// hashMap.put("fieldTypeId", this.getFieldId()); +// hashMap.put("valueType", this.getValueType()); +// hashMap.put("isDerivative", this.getIsDerivative()); +// hashMap.put("isOutput", this.getIsOutput()); +// hashMap.put("valueScope", this.getValueScope()); +// hashMap.put("fieldContent", this.getFieldContent()); +// hashMap.put("formulaHidden", this.getFormulaHidden()); +// hashMap.put("derType", this.getDerType()); +// hashMap.put("fieldContent2", this.getFieldContent2()); +// hashMap.put("conditionValue", this.getConditionValue()); +// hashMap.put("fieldId", this.getFieldId()); +// hashMap.put("operator", this.getOperator()); +// hashMap.put("fieldValue", this.getFieldValue()); +// hashMap.put("idx", this.getIdx()); +// +// hashMap.put("isUseSql", this.getIsUseSql()); +// hashMap.put("dataSourceId", this.getDataSourceId()); +// hashMap.put("sqlStatement", this.getSqlStatement()); +// +// return hashMap; +// } +// +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldTreeParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldTreeParam.java new file mode 100644 index 0000000..a773b70 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/model/request/FieldTreeParam.java @@ -0,0 +1,23 @@ +package com.risk.riskmanage.datamanage.model.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FieldTreeParam { + //获取需要 + private Integer type; + //删除需要 + private Long id;//文件夹的id + private String fieldType;//文件夹名字 + private Integer status;//状态 -1 删除 + //新建时需要 + private String parentId;//上层文件夹id + private Integer isCommon;// + + private Long organId;//指标相关的组织id + private Long userId;//用户id +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldService.java new file mode 100644 index 0000000..cb5622b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldService.java @@ -0,0 +1,274 @@ +package com.risk.riskmanage.datamanage.service; + +import com.risk.riskmanage.datamanage.model.Field; +import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +public interface FieldService { + + /** + * createField:(插入新字段).
+ * + * + * @param fieldVo + * 字段实体类 + * @return 字段插入成功 + * */ + public boolean createField(Field fieldVo, Map paramMap); + + /** + * isExists:(查找字段是否存在).
+ * + * + * @param paramMap + * 参数集合 + * @return 存在的记录条数 + */ + public int isExists(Map paramMap); + + /** + * isExistsFieldType:(查找字段类型是否存在).
+ * + * @param paramMap 参数集合 + * @return 存在的记录条数 + */ + public int isExistsFieldType(Map paramMap); + + /** + * isExistsDefaultTreeName:(查找默认节点名是否存在).
+ * + * @param paramMap 参数集合 + * @return 存在的记录条数 + */ + public int isExistsDefaultTreeName(Map paramMap); + + /** + * updateField:(修改字段内容).
+ * + * + * @param fieldVo + * 字段实体类 + * @return 更新成功 + */ + public boolean updateField(Map paramMap); + + /** + * findByFieldType:(按照字段类型查找字段列表).
+ * + * + * @param paramMap + * 参数集合 + * @return 更新成功 + */ + public List findByFieldType(Map paramMap); + + /** + * findFieldByIds:(找出一批字段id对应的字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public List findFieldByIds(Map paramMap); + + /** + * searchByName:(模糊查找该用户可用字段列表).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List searchByName(Map paramMap); + + /** + * findExcelByFieldType:(获取导出Excel需要的字段信息).
+ * + * @param paramMap 参数集合 + * @return + */ + public List findExcelByFieldType(Map paramMap); + + /** + * findByFieldId:(根据Id查找字段).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public Field findByFieldId(Map paramMap); + + /** + * findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldEn(Map paramMap); + + /** + * findFieldTypeId:(根据传入参数查找字段类型ID).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + * */ + public Long findFieldTypeId(Map paramMap); + + /** + * findByUser:(查找用户可用字段).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List findByUser(Map paramMap); + + + /** + * updateStatus:(单个或批量更新用户字段关系).
+ * + * + * @param paramMap + * 参数集合 + * @return 插入成功 + * */ + //public boolean updateStatus(Map paramMap); + public Map updateStatus(Map paramMap); + + /** + * checkField:(公共方法:检查字段是否被引用).
+ * + * + * @param paramMap + * 参数集合 + * @return 结果集合 + * */ + public Map checkField(Map paramMap); + + /** + * getSourceField:(公共方法:检查字段的所有构成字段).
+ * + * + * @param paramMap + * 参数集合 + * @return + * */ + public String getSourceField(String fieldIds,String fieldId); + + /** + * checkFieldType:(公共方法:检查字段类型及其下所有子类型的所有字段是否被引用).
+ * + * + * @param paramMap + * 参数集合 + * @return 结果集合 + * */ + public Map checkFieldType(Map paramMap); + + /** + * findFieldIdsByTypeIds:(找出一批字段类型id对应的字段id列表).
+ * + * @param paramMap 参数集合 + * @return 字段id逗号分隔字符串 + */ + public String findFieldIdsByTypeIds(Map paramMap); + + /** + * findOrgFieldIdsByTypeIds:(在通用字段里找出一批字段类型id的字段id列表).
+ * + * @param paramMap 参数集合 + * @return 字段列表 + */ + public String findOrgFieldIdsByTypeIds(Map paramMap); + + /** + * importExcel:(导入excel).
+ * + * + * @param url + * @param paramMap + * 参数集合 + * @return 导入成功 + * */ + Map importExcel(String url,Map paramMap); + + /** + * getFieldList:(获取组织的所有字段).
+ * + * @param paramMap 参数集合 + * @return + */ + public List getFieldList(Map paramMap); + + /** + * createEngineField:(批量拷贝组织通用字段到引擎字段).
+ * + * @param paramMap 参数集合 + * @return 是否创建成功 + */ + public boolean createEngineField(Map paramMap); + + /** + * bindEngineField:(根据传入的engineId和字段id找到一连串的字段并绑定关系).
+ * + * @param paramMap 参数集合 + * @return 是否创建成功 + */ + public boolean bindEngineField(Map paramMap); + + /** + * findByFieldEn:(根据引擎和字段中文名找出引擎所用字段对象).
+ * + * @param paramMap 参数集合 + * @return 字段对象 + */ + public Field findByFieldCn(Map paramMap); + + /** + * getField:(根据引擎和字段中文名找出引擎所用字段对象).
+ * + * @param + * @return 字段对象 + */ + public String getField(String fieldIds,String usedFieldId,String engineId); + + /** + * 查找某字段被引用的字段id并拼成逗号分隔的字符串 + * + * @return + */ + public String getAllFieldTypeId(String ids,String pid,String engineId); + + /** + * 查找某字段类型所有的<父类型>拼成逗号分隔的字符串 + * + * @return + */ + public String getAllParentFieldTypeId(String ids,String id,String engineId); + + /** + * 删除指定字段类型节点 + * + * @return + */ + public Map deleteNode(@RequestParam Map paramMap); + + /** + * 测试用:构造数据填写样本数据 + * + * @return + */ + public String createEngineTestData(@RequestParam Map paramMap); + +// public String createEngineTestResultPdf(@RequestParam Map paramMap); + + int fieldValidate(String fieldEn, String fieldCn, String engineId, Long fieldId); + + int updateFieldFolder(UpdateFolderParam param); + + String getFieldEnById(Long id); + + List queryByIds(Collection ids ); + List queryByEns(Collection ens ); + List queryByOrganAndCns(Collection cns ,Long organId); + void sqlFieldCheck(Map map); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldTypeService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldTypeService.java new file mode 100644 index 0000000..9e329a3 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/FieldTypeService.java @@ -0,0 +1,60 @@ +package com.risk.riskmanage.datamanage.service; + +import java.util.List; +import java.util.Map; + +import com.risk.riskmanage.datamanage.model.FieldType; +import com.risk.riskmanage.datamanage.model.request.FieldTreeParam; + +public interface FieldTypeService { + + /** + * getFieldTypeList:(查找用户的字段类型列表). 支持查询组织通用字段类型、子类型 支持查询引擎自定义字段类型、子类型
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List getFieldTypeList(Map paramMap); + + /** + * findFieldTypeById:(根据传入的字段类型ID查找字段类型名).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public FieldType findFieldTypeById(Map paramMap); + + /** + * findFieldType:(查找用户可用的字段类型列表,通用组织所有,引擎只有自定义).
+ * + * @param paramMap 参数集合 + * @return 字段类型列表 + */ + public List findFieldType(Map paramMap); + + /** + * createFieldType:(新增字段类型).
+ * + * @param paramMap 参数集合 + * @return 插入成功 + */ + public boolean createFieldType(FieldType fieldTypeVo,Map paramMap); + + /** + * updateFieldType:(更新字段类型名).
+ * + * @param paramMap 参数集合 + * @return 更新成功 + */ + public boolean updateFieldType(FieldTreeParam param); + + /** + * findNodeIds:(查找引擎在用的节点集合).
+ * + * @param paramMap 参数集合 + * @return + */ + public String findNodeIds(Map paramMap); + + List getTreeList(FieldTreeParam param); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldServiceImp.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldServiceImp.java new file mode 100644 index 0000000..a82ffd2 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldServiceImp.java @@ -0,0 +1,1633 @@ +package com.risk.riskmanage.datamanage.service.imp; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.datamanage.common.ExcelUtil; + +import com.risk.riskmanage.datamanage.common.Status; +import com.risk.riskmanage.datamanage.model.*; +import com.risk.riskmanage.datamanage.service.FieldService; +import com.risk.riskmanage.knowledge.model.Rule; +import com.risk.riskmanage.util.SessionManager; +import com.risk.riskmanage.util.StringUtil; +import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.ss.usermodel.*; +import org.dmg.pmml.scorecard.Scorecard; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Service +public class FieldServiceImp extends BaseService implements FieldService { + + protected static final Set KEY_WORDS = new HashSet(){{ + add("DELETE "); + add("DROP "); + add("TRUNCATE "); + add("UPDATE "); + add("ALTER "); + add("INSERT "); + add("CREATE "); + add("RENAME "); + }}; + /* + * 公共方法:去掉id串里重复id + */ + public StringBuffer getUniqueStr(String usedFieldStr) { + + String arrUsedFieldStr[] = usedFieldStr.split(","); + Set usedFieldSet = new HashSet<>(); + for (int k = 0; k < arrUsedFieldStr.length; k++) { + usedFieldSet.add(arrUsedFieldStr[k]); + } + String[] arrUsedField = (String[]) usedFieldSet.toArray(new String[usedFieldSet.size()]); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < arrUsedField.length; i++) { + if (i != arrUsedField.length - 1) + sb.append(arrUsedField[i]).append(","); + else + sb.append(arrUsedField[i]); + } + return sb; + } + + @Override + public boolean createField(Field fieldVo, Map paramMap) { + + String formulaHidden = ""; + + //获取衍生字段公式编辑区域引用字段的原生字段 + if (paramMap.containsKey("formulaHidden") && !paramMap.get("formulaHidden").equals("")) { + + formulaHidden = (String) paramMap.get("formulaHidden"); + fieldVo.setFormula(formulaHidden); + + List formulaList = new ArrayList<>(); + formulaList = JSONObject.parseArray(formulaHidden); + + JSONArray jsonArrayFormula = new JSONArray(); + + String origFieldStr = ""; + String usedFieldStr = ""; + + for (int i = 0; i < formulaList.size(); i++) { + + JSONObject f = ((JSONArray) formulaList).getJSONObject(i); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("fvalue", f.getString("fvalue")); + jsonObject.put("formula", f.getString("formula")); + jsonObject.put("idx", f.getString("idx")); + jsonArrayFormula.add(jsonObject); + + List farrList = new ArrayList<>(); +// if(!f.getString("farr").equals("")&&f.getString("farr")!=null){ +// farrList = JSONObject.parseArray(f.getString("farr")); +// for(int j = 0; j < farrList.size(); j++){ +// JSONObject field = ((JSONArray) farrList).getJSONObject(j); +// Map fieldMap = new HashMap(); +// fieldMap.put("userId",paramMap.get("userId")); +// fieldMap.put("engineId",paramMap.get("engineId")); +// fieldMap.put("fieldCn", field.get("fieldCN")); +// +// //公式里的字段对象 +// Field subField = fieldMapper.findByFieldCn(fieldMap); +// if(subField.getOrigFieldId()==null){ +// if(origFieldStr.equals("")){ +// origFieldStr = Long.toString(subField.getId()); +// }else{ +// origFieldStr = origFieldStr + "," + subField.getId(); +// } +// }else{ +// if(origFieldStr.equals("")){ +// origFieldStr = subField.getOrigFieldId(); +// }else{ +// origFieldStr = origFieldStr + "," + subField.getOrigFieldId(); +// } +// } +// usedFieldStr = usedFieldStr + subField.getId() + ","; //拼凑该字段引用的字段id +// } +// }else{//只从公式里提取字段 "formula":":在网时长: >=0 && :在网时长: <6" + //从公式里提取所用字段及原生字段 + String formula = f.getString("formula"); + Pattern pattern = Pattern.compile("@[a-zA-Z0-9_\u4e00-\u9fa5()()-]+@"); + Matcher matcher = pattern.matcher(formula); + while (matcher.find()) { + String fieldCN = matcher.group(0).replace("@", ""); + Map fieldMap = new HashMap(); + fieldMap.put("userId", paramMap.get("userId")); + fieldMap.put("engineId", paramMap.get("engineId")); + fieldMap.put("fieldCn", fieldCN); + + Field field = fieldMapper.findByFieldCn(fieldMap); + + if (field.getOrigFieldId() == null) { + if (origFieldStr.equals("")) { + origFieldStr = Long.toString(field.getId()); + } else { + origFieldStr = origFieldStr + "," + field.getId(); + } + } else { + if (origFieldStr.equals("")) { + origFieldStr = field.getOrigFieldId(); + } else { + origFieldStr = origFieldStr + "," + field.getOrigFieldId(); + } + } + usedFieldStr = usedFieldStr + field.getId() + ","; //拼凑该字段引用的字段id + } +// } + } + + fieldVo.setFormulaShow(JSON.toJSONString(jsonArrayFormula)); + + //合并原生字段id + if (!origFieldStr.equals("")) { + fieldVo.setOrigFieldId(getUniqueStr(origFieldStr).toString()); + } + + //合并引用字段id + if (!usedFieldStr.equals(",") && !usedFieldStr.equals("")) { + usedFieldStr = usedFieldStr.substring(0, usedFieldStr.length() - 1); + fieldVo.setUsedFieldId(getUniqueStr(usedFieldStr).toString()); + } + + } else if (paramMap.containsKey("fieldCondList") && !paramMap.get("fieldCondList").equals("")) { + //条件区域的使用字段和原生字段获取 + + /* + fieldContent=[{"fieldContent2":"[{\"fieldId\":\"3\",\"operator\":\">\",\"fieldValue\":\"200\",\"logical\":\"&&\"} + ,{\"fieldId\":\"11\",\"operator\":\"<\",\"fieldValue\":\"50\"}]","conditionValue":"5","fieldValue":"50"} + ,{"fieldContent2":"[{\"fieldId\":\"12\",\"operator\":\"in\",\"fieldValue\":\"z\",\"logical\":\"&&\"} + ,{\"fieldId\":\"11\",\"operator\":\">\",\"fieldValue\":\"200\",\"logical\":\"&&\"} + ,{\"fieldId\":\"31\",\"operator\":\">\",\"fieldValue\":\"1000\"}]","conditionValue":"8","fieldValue":"1000"} + ,{"fieldContent2":"[{\"fieldId\":\"31\",\"operator\":\">\",\"fieldValue\":\"4000\"}]","conditionValue":"9","fieldValue":"4000"}] + */ + String fieldContent = (String) paramMap.get("fieldCondList"); + List fieldContentList = new ArrayList<>(); + fieldContentList = JSONObject.parseArray(fieldContent); + + String origFieldStr = ""; + String usedFieldStr = ""; + + for (int i = 0; i < fieldContentList.size(); i++) { + JSONObject fc = ((JSONArray) fieldContentList).getJSONObject(i); + List farrList = new ArrayList<>(); + if (!fc.getString("fieldSubCond").equals("") && fc.getString("fieldSubCond") != null) { + farrList = JSONObject.parseArray(fc.getString("fieldSubCond")); + for (int j = 0; j < farrList.size(); j++) { + JSONObject ObjField = ((JSONArray) farrList).getJSONObject(j); + usedFieldStr = usedFieldStr + ObjField.get("fieldId") + ","; + + Map fieldMap = new HashMap(); + fieldMap.put("userId", paramMap.get("userId")); + fieldMap.put("engineId", paramMap.get("engineId")); + fieldMap.put("id", ObjField.get("fieldId")); + Field field = fieldMapper.findByFieldId(fieldMap); + + if (field.getOrigFieldId() == null) { + if (origFieldStr.equals("")) { + origFieldStr = Long.toString(field.getId()); + } else { + origFieldStr = origFieldStr + "," + field.getId(); + } + } else { + if (origFieldStr.equals("")) { + origFieldStr = field.getOrigFieldId(); + } else { + origFieldStr = origFieldStr + "," + field.getOrigFieldId(); + } + } + + + } + } + } + + //合并引用字段id + if (!usedFieldStr.equals(",") && !usedFieldStr.equals("")) { + usedFieldStr = usedFieldStr.substring(0, usedFieldStr.length() - 1); + fieldVo.setUsedFieldId(getUniqueStr(usedFieldStr).toString()); + } + + //合并原生字段id + if (!origFieldStr.equals("")) { + fieldVo.setOrigFieldId(getUniqueStr(origFieldStr).toString()); + } + } + + if (fieldMapper.isExists(paramMap) == 0) { + fieldMapper.createField(fieldVo); + FieldUser fieldUserVo = new FieldUser(); + fieldUserVo.setFieldId(fieldVo.getId()); + fieldUserVo.setOrganId((Long) paramMap.get("organId")); + if (paramMap.get("engineId") != null) { + fieldUserVo.setEngineId(Long.valueOf((String) paramMap.get("engineId"))); + } + fieldUserVo.setUserId((Long) paramMap.get("userId")); + fieldUserVo.setStatus(Status.enable.value); + fieldUserMapper.createFieldUserRel(fieldUserVo); + + //可能衍生字段只有公式,没有条件设置 + if (paramMap.containsKey("fieldCondList")) { + + String fieldContent = (String) paramMap.get("fieldCondList"); + if (!fieldContent.equals("")) { + List fieldCondVoList = new ArrayList(); + List condList = new ArrayList<>(); + condList = JSONObject.parseArray(fieldContent); + for (int i = 0; i < condList.size(); i++) { + JSONObject cond = ((JSONArray) condList).getJSONObject(i); + List subCondList = new ArrayList<>(); + if (!cond.getString("fieldSubCond").equals("")) { + subCondList = JSONObject.parseArray(cond.getString("fieldSubCond")); + for (int j = 0; j < subCondList.size(); j++) { + JSONObject subCond = ((JSONArray) subCondList).getJSONObject(j); + FieldCond fieldCondVo = new FieldCond(); + fieldCondVo.setFieldId(fieldVo.getId()); + fieldCondVo.setConditionValue(cond.getString("conditionValue")); + fieldCondVo.setContent(cond.getString("fieldSubCond")); + fieldCondVo.setCondFieldId(Long.valueOf(subCond.getString("fieldId"))); + fieldCondVo.setCondFieldOperator(subCond.getString("operator")); + fieldCondVo.setCondFieldValue(subCond.getString("fieldValue")); + fieldCondVo.setCondFieldLogical(subCond.getString("logical")); + fieldCondVoList.add(fieldCondVo); + } + } + fieldCondMapper.createFieldCond(fieldCondVoList); + } + + } + } + + + //可能衍生字段只有公式,没有条件设置 +/* if(paramMap.containsKey("formulaFields")){ + String formulaFields = (String) paramMap.get("formulaFields"); + Long fieldId = fieldVo.getId(); + if(!formulaFields.equals("")){ + String[] idArray = null; + idArray = formulaFields.split(","); + List formulaFieldVoList = new ArrayList(); + for(int i=0;i paramMap) { + + String formulaHidden = ""; + + if (paramMap.containsKey("formulaHidden") && !paramMap.get("formulaHidden").equals("")) { + + formulaHidden = (String) paramMap.get("formulaHidden"); + paramMap.put("formula", formulaHidden); + + List formulaList = new ArrayList<>(); + formulaList = JSONObject.parseArray(formulaHidden); + + JSONArray jsonArrayFormula = new JSONArray(); + + String origFieldStr = ""; + String usedFieldStr = ""; + + for (int i = 0; i < formulaList.size(); i++) { + + JSONObject f = ((JSONArray) formulaList).getJSONObject(i); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("fvalue", f.getString("fvalue")); + jsonObject.put("formula", f.getString("formula")); + jsonObject.put("idx", f.getString("idx")); + jsonArrayFormula.add(jsonObject); + + List farrList = new ArrayList<>(); +// if(!f.getString("farr").equals("")&&f.getString("farr")!=null){ +// farrList = JSONObject.parseArray(f.getString("farr")); +// for(int j = 0; j < farrList.size(); j++){ +// JSONObject field = ((JSONArray) farrList).getJSONObject(j); +// Map fieldMap = new HashMap(); +// fieldMap.put("userId",paramMap.get("userId")); +// fieldMap.put("engineId",paramMap.get("engineId")); +// fieldMap.put("fieldCn", field.get("fieldCN")); +// +// //公式里的字段对象 +// Field subField = fieldMapper.findByFieldCn(fieldMap); +// if(subField.getOrigFieldId()==null){ +// if(origFieldStr.equals("")){ +// origFieldStr = Long.toString(subField.getId()); +// }else{ +// origFieldStr = origFieldStr + "," + subField.getId(); +// } +// }else{ +// if(origFieldStr.equals("")){ +// origFieldStr = subField.getOrigFieldId(); +// }else{ +// origFieldStr = origFieldStr + "," + subField.getOrigFieldId(); +// } +// } +// usedFieldStr = usedFieldStr + subField.getId() + ","; //拼凑该字段引用的字段id +// } +// }else{//只从公式里提取字段 "formula":":在网时长: >=0 && :在网时长: <6" + //从公式里提取所用字段及原生字段 + String formula = f.getString("formula"); + Pattern pattern = Pattern.compile("@[a-zA-Z0-9_\u4e00-\u9fa5()()-]+@"); + Matcher matcher = pattern.matcher(formula); + while (matcher.find()) { + String fieldCN = matcher.group(0).replace("@", ""); + Map fieldMap = new HashMap(); + fieldMap.put("userId", paramMap.get("userId")); + fieldMap.put("engineId", paramMap.get("engineId")); + fieldMap.put("fieldCn", fieldCN); + + Field field = fieldMapper.findByFieldCn(fieldMap); + + if (field.getOrigFieldId() == null) { + if (origFieldStr.equals("")) { + origFieldStr = Long.toString(field.getId()); + } else { + origFieldStr = origFieldStr + "," + field.getId(); + } + } else { + if (origFieldStr.equals("")) { + origFieldStr = field.getOrigFieldId(); + } else { + origFieldStr = origFieldStr + "," + field.getOrigFieldId(); + } + } + usedFieldStr = usedFieldStr + field.getId() + ","; //拼凑该字段引用的字段id + } +// } + } + + paramMap.put("formulaShow", JSON.toJSONString(jsonArrayFormula)); + //合并原生字段id + if (!origFieldStr.equals("")) { + +/* String arrOrigFieldStr[] = origFieldStr.split(","); + Set origFieldSet = new HashSet<>(); + for(int k=0;k\",\"fieldValue\":\"200\",\"logical\":\"&&\"} + ,{\"fieldId\":\"11\",\"operator\":\"<\",\"fieldValue\":\"50\"}]","conditionValue":"5","fieldValue":"50"} + ,{"fieldContent2":"[{\"fieldId\":\"12\",\"operator\":\"in\",\"fieldValue\":\"z\",\"logical\":\"&&\"} + ,{\"fieldId\":\"11\",\"operator\":\">\",\"fieldValue\":\"200\",\"logical\":\"&&\"} + ,{\"fieldId\":\"31\",\"operator\":\">\",\"fieldValue\":\"1000\"}]","conditionValue":"8","fieldValue":"1000"} + ,{"fieldContent2":"[{\"fieldId\":\"31\",\"operator\":\">\",\"fieldValue\":\"4000\"}]","conditionValue":"9","fieldValue":"4000"}] + */ + String fieldContent = (String) paramMap.get("fieldCondList"); + List fieldContentList = new ArrayList<>(); + fieldContentList = JSONObject.parseArray(fieldContent); + + String origFieldStr = ""; + String usedFieldStr = ""; + + for (int i = 0; i < fieldContentList.size(); i++) { + JSONObject fc = ((JSONArray) fieldContentList).getJSONObject(i); + List farrList = new ArrayList<>(); + if (!fc.getString("fieldSubCond").equals("") && fc.getString("fieldSubCond") != null) { + farrList = JSONObject.parseArray(fc.getString("fieldSubCond")); + for (int j = 0; j < farrList.size(); j++) { + JSONObject ObjField = ((JSONArray) farrList).getJSONObject(j); + usedFieldStr = usedFieldStr + ObjField.get("fieldId") + ","; + + Map fieldMap = new HashMap(); + fieldMap.put("userId", paramMap.get("userId")); + fieldMap.put("engineId", paramMap.get("engineId")); + fieldMap.put("id", ObjField.get("fieldId")); + Field field = fieldMapper.findByFieldId(fieldMap); + + if (field.getOrigFieldId() == null) { + if (origFieldStr.equals("")) { + origFieldStr = Long.toString(field.getId()); + } else { + origFieldStr = origFieldStr + "," + field.getId(); + } + } else { + if (origFieldStr.equals("")) { + origFieldStr = field.getOrigFieldId(); + } else { + origFieldStr = origFieldStr + "," + field.getOrigFieldId(); + } + } + } + } + } + //合并引用字段id + if (!usedFieldStr.equals(",") && !usedFieldStr.equals("")) { + usedFieldStr = usedFieldStr.substring(0, usedFieldStr.length() - 1); + paramMap.put("usedFieldId", getUniqueStr(usedFieldStr).toString()); + } + //合并原生字段id + if (!origFieldStr.equals("")) { + paramMap.put("origFieldId", getUniqueStr(origFieldStr).toString()); + } + } + + Long id = Long.valueOf(paramMap.get("id").toString()); + //检查字段id是否归属该用户存在 + Field oldFieldVo = new Field(); + oldFieldVo = fieldMapper.findByFieldId(paramMap); + if (!oldFieldVo.getId().equals(null)) { + fieldMapper.updateField(paramMap); + + fieldCondMapper.deleteFieldCondById(id); + + String fieldContent = (String) paramMap.get("fieldCondList"); + List fieldCondVoList = new ArrayList(); + List condList = new ArrayList<>(); + if (!fieldContent.equals("")) { + condList = JSONObject.parseArray(fieldContent); + for (int i = 0; i < condList.size(); i++) { + JSONObject cond = ((JSONArray) condList).getJSONObject(i); + List subCondList = new ArrayList<>(); + subCondList = JSONObject.parseArray(cond.getString("fieldSubCond")); + for (int j = 0; j < subCondList.size(); j++) { + JSONObject subCond = ((JSONArray) subCondList).getJSONObject(j); + FieldCond fieldCondVo = new FieldCond(); + fieldCondVo.setFieldId(id); + fieldCondVo.setConditionValue(cond.getString("conditionValue")); + fieldCondVo.setContent(cond.getString("fieldSubCond")); + fieldCondVo.setCondFieldId(Long.valueOf(subCond.getString("fieldId"))); + fieldCondVo.setCondFieldOperator(subCond.getString("operator")); + fieldCondVo.setCondFieldValue(subCond.getString("fieldValue")); + fieldCondVo.setCondFieldLogical(subCond.getString("logical")); + fieldCondVoList.add(fieldCondVo); + } + } + fieldCondMapper.createFieldCond(fieldCondVoList); + } + + //判断衍生字段的公式是否发生改变,改变了再执行相应操作 +/* if(paramMap.get("formula").equals(oldFieldVo.getFormula())){ + //do nothing. + }else if(paramMap.get("formula").equals("")){ + formulaFieldMapper.deleteFormulaField(paramMap); + }else { + if(!oldFieldVo.getFormula().equals("")){ + formulaFieldMapper.deleteFormulaField(paramMap); + } + String formulaFields = (String) paramMap.get("formulaFields"); + Long fieldId = (Long) paramMap.get("id"); + String[] idArray = null; + idArray = formulaFields.split(","); + List formulaFieldVoList = new ArrayList(); + for(int i=0;i getField(String usedFieldId){ + + //String fieldIds = ""; + Map paramMap = new HashMap(); + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + paramMap.put("fieldId", usedFieldId); + + List fieldList = fieldMapper.findUsedFieldId(paramMap); + for (Iterator iterator = fieldList.iterator(); iterator.hasNext();) { + Field fieldVo = (Field) iterator.next(); + paramMap.put("fieldId", fieldVo.getId()); + } + paramMap.put("fieldList",fieldList); + return paramMap; + }*/ + + /** + * 查找继承自某字段的所有字段id拼成逗号分隔的字符串返回 + * + * @return + */ + public String getField(String fieldIds, String usedFieldId, String engineId) { + + Map param = new HashMap(); +// Long userId = SessionManager.getLoginAccount().getUserId(); + Long userId = SessionManager.getLoginAccount().getUserId(); + param.put("userId", userId); + param.put("fieldId", usedFieldId); + param.put("engineId", engineId); + + fieldIds = ""; + + String str = fieldMapper.checkField(param); + + if (str != null && str.length() >= 0) { + + String arrIds[] = str.split(","); + for (int i = 0; i < arrIds.length; i++) { + if (fieldIds.equals("")) { + fieldIds = getField("", arrIds[i], engineId); + } else { + fieldIds = fieldIds + "," + getField("", arrIds[i], engineId); + } + + } + } else { + return usedFieldId; + } + return fieldIds; + } + + /** + * 查找某字段的所有组成字段id并与该字段一起拼成逗号分隔的字符串返回,用于拷贝字段时检查组成该字段的所有子字段 + * + * @return + */ + @Override + public String getSourceField(String fieldIds, String fieldId) { + + Map paramMap = new HashMap(); + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + paramMap.put("fieldId", fieldId); + + fieldIds = ""; + + //String origFieldId = param.get("origFieldId"); + String usedFieldId = fieldMapper.getSourceField(paramMap); + + if (usedFieldId != null && usedFieldId.length() >= 0) { + //fieldIds = usedFieldId; + String arrIds[] = usedFieldId.split(","); + for (int i = 0; i < arrIds.length; i++) { + if (fieldIds.equals("")) + fieldIds = getSourceField("", arrIds[i]); + else + fieldIds = fieldIds + "," + getSourceField("", arrIds[i]); + } + } else { + return fieldId; + } + + return fieldIds; + } + + /** + * 公共检查字段方法 供删除、停用、编辑提交时校验用 + * + * @return + */ + @Override + public Map checkField(Map paramMap) { + + boolean beUsed = false; + + List fieldList = new ArrayList(); + List ruleList = new ArrayList(); + + String fieldIds = ""; + + String fieldId = (String) paramMap.get("fieldId"); + String s = getField("", fieldId, (String) paramMap.get("engineId")); + + //如果字段没有被引用不做字段有效性校验 + if (!s.equals("") && !s.equals(fieldId)) { + fieldIds = getUniqueStr(s).toString(); + List Ids = new ArrayList(); + Ids = StringUtil.toLongList(fieldIds); + paramMap.put("Ids", Ids); + if (!fieldIds.equals("") && fieldIds != null) { + //校验字段,命中则b改为true + fieldList = fieldMapper.findFieldByIdsForCheckField(paramMap); + if (fieldList.size() > 0) + beUsed = true; + } + s = fieldId + "," + s; //把自身字段加入检查序列,为后续检查做准备 + } else { + s = fieldId; + } + + fieldIds = getUniqueStr(s).toString(); + List Ids = new ArrayList(); + Ids = StringUtil.toLongList(fieldIds); + paramMap.put("Ids", Ids); + + //校验规则管理的规则,命中则b改为true + paramMap.put("fieldIds", Ids); + ruleList = ruleMapper.checkByField(paramMap); + if (ruleList.size() > 0) + beUsed = true; + //<待完善>校验引擎管理-决策流节点(决策选项-客户分群) + + + paramMap.put("fieldList", fieldList); + paramMap.put("ruleList", ruleList); + paramMap.put("beUsed", beUsed); + + return paramMap; + + } + + @Override + public Map updateStatus(Map paramMap) { + + boolean result = false; + + List Ids = (List) paramMap.get("Ids"); + paramMap.put("Ids", Ids); + + if (paramMap.containsKey("status") && !paramMap.get("status").equals("1")) {//停用、删除特殊处理需要增加校验 + + for (Iterator iterator = Ids.iterator(); iterator.hasNext(); ) { + Long Id = (Long) iterator.next(); + paramMap.put("fieldId", Id.toString()); + checkField(paramMap); + if ((boolean) paramMap.get("beUsed")) { + break; // 遇到第一个被使用的就跳出循环来 + } + } + + if (!(boolean) paramMap.get("beUsed")) { + paramMap.put("Ids", Ids); + result = fieldUserMapper.updateStatus(paramMap); + } + + } else if (paramMap.containsKey("listType") && paramMap.get("listType").equals("cabage") + && paramMap.get("status").equals("1")) {//回收站里删除状态变为启用状态 + + result = backEngFieldType(paramMap); + + } else {//停用变启用 + result = fieldUserMapper.updateStatus(paramMap); + } + + paramMap.put("result", result); + + return paramMap; + } + + @Override + public List findByFieldType(Map paramMap) { + + if (!paramMap.containsKey("fType")) { + return null; + // throw new ApiException(ErrorCodeEnum.SERVER_ERROR.getVersionCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + } + Integer fType = Integer.valueOf(paramMap.get("fType").toString()); + + switch (fType) { + case 1: + // paramMap.put("useSql", false); + // paramMap.put("derivative", false); + break; + case 2: + // paramMap.put("useSql", true); + break; + case 3: + // paramMap.put("derivative", true); + break; + case 4: + // paramMap.put("interface", true); + break; + default: + throw new ApiException(ErrorCodeEnum.SERVER_ERROR.getCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + } + + return fieldMapper.findByFieldType(paramMap); + } + + @Override + public int isExists(Map paramMap) { + return fieldMapper.isExists(paramMap); + } + + + @Override + public Field findByFieldId(Map paramMap) { + return fieldMapper.findByFieldId(paramMap); + } + + @Override + public List findByUser(Map paramMap) { + return fieldMapper.findByUser(paramMap); + } + + @Override + public Long findFieldTypeId(Map paramMap) { + return fieldMapper.findFieldTypeId(paramMap); + } + + @Override + public List findExcelByFieldType(Map paramMap) { + return fieldMapper.findExcelByFieldType(paramMap); + } + @Override + public List getFieldList(Map paramMap) { + return fieldMapper.getFieldList(paramMap); + } + + @Override + public List searchByName(Map paramMap) { + return fieldMapper.searchByName(paramMap); + } + + @Override + public List findFieldByIds(Map paramMap) { + return fieldMapper.findFieldByIds(paramMap); + } + + @Override + public Field findByFieldEn(Map paramMap) { + return fieldMapper.findByFieldEn(paramMap); + } + + @Override + public boolean createEngineField(Map paramMap) { + + fieldTypeUserMapper.batchBindEngineFieldTypeUserRel(paramMap); + fieldUserMapper.batchCreateEngineFieldUserRel(paramMap); + + return true; + } + + @Override + public boolean bindEngineField(Map paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + Long organId = SessionManager.getLoginAccount().getOrganId(); + paramMap.put("userId", userId); + paramMap.put("organId", organId); + + //获取所有字段id + String iFieldIds = (String) paramMap.get("fieldIds"); + String oFieldIds = iFieldIds; + if (iFieldIds != null && iFieldIds.length() >= 0) { + String arrIds[] = iFieldIds.split(","); + for (int i = 0; i < arrIds.length; i++) { + oFieldIds = oFieldIds + "," + getSourceField("", arrIds[i]); + } + } + String strFieldIds = getUniqueStr(oFieldIds).toString(); + + //把不存在字段关系绑定在一起 + if (!strFieldIds.equals("") && strFieldIds != null) { + //获取所有字段类型id + List fieldIds = StringUtil.toLongList(strFieldIds); + paramMap.put("fieldIds", fieldIds); + fieldUserMapper.batchBindEngineFieldUserRel(paramMap); + } + + + String strFieldTypeIds = fieldMapper.findOrgFieldTypeIdsByIds(paramMap); + if (!strFieldTypeIds.equals("") && strFieldTypeIds != null) { + + String parentFieldTypeIds = ""; + //查所有字段类型id的父id + if (!strFieldTypeIds.equals("")) { + strFieldTypeIds = getUniqueStr(strFieldTypeIds).toString(); + String arrIds[] = strFieldTypeIds.split(","); + + for (int i = 0; i < arrIds.length; i++) { + if (parentFieldTypeIds.equals("")) { + parentFieldTypeIds = getAllParentFieldTypeId("", arrIds[i], ""); + } else { + parentFieldTypeIds = parentFieldTypeIds + "," + getAllParentFieldTypeId("", arrIds[i], ""); + } + } + } + + if (!parentFieldTypeIds.equals("")) { + strFieldTypeIds = strFieldTypeIds + "," + parentFieldTypeIds; + } + List fieldTypeIds = StringUtil.toLongList(strFieldTypeIds); + + paramMap.put("fieldTypeIds", fieldTypeIds); + fieldTypeUserMapper.batchBindEngineFieldTypeUserRel(paramMap); + } + + return true; + } + + /** + * 判断表达式的运算结果是否数值型的公共方法 + */ + public boolean isNumeric(String str) { + Pattern pattern = Pattern.compile("^(-|\\+)?\\d+(\\.\\d+)?$"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + } + + @Override + public Map importExcel(String url, Map paramMap) { + Map resultMap = new HashMap<>(); + + InputStream is = null; + Workbook Workbook = null; + Sheet Sheet; + try { + is = new FileInputStream(url); + Workbook = WorkbookFactory.create(is); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (InvalidFormatException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + List fieldVoList = new ArrayList(); + List fieldEnList = new ArrayList<>(); + int sucRows = 0; // 导入成功行数 + int failRows = 0; // 导入失败行数 + int repeatRows = 0; // 重复行数 + int existRows = 0; // 已存在的字段 + + // 循环工作表 Sheet + for (int numSheet = 0; numSheet < Workbook.getNumberOfSheets(); numSheet++) { + Sheet = Workbook.getSheetAt(numSheet); + if (Sheet == null) { + continue; + } + // 循环行 Row + for (int rowNum = 1; rowNum <= Sheet.getLastRowNum(); rowNum++) { + try { + Row Row = Sheet.getRow(rowNum); + if (Row == null) { + continue; + } + Field fieldVo = new Field(); + fieldVo.setAuthor(Long.valueOf(paramMap.get("author").toString())); + fieldVo.setIsCommon(Integer.valueOf(paramMap.get("isCommon").toString())); + + // 循环单元格 Cell + for (int cellNum = 0; cellNum <= Row.getLastCellNum(); cellNum++) { + Cell cell = Row.getCell(cellNum); + String cellStr = ExcelUtil.getCellValue(cell).trim(); + switch (cellNum) { // 逐单元格处理 + + case 0: + fieldVo.setFieldEn(cellStr); + break; + case 1: + fieldVo.setFieldCn(cellStr); + break; + case 2: + paramMap.put("fieldType", cellStr); + Long fieldTypeId = fieldTypeMapper.findIdByFieldType(paramMap); + if (fieldTypeId != 0) + fieldVo.setFieldTypeId(fieldTypeId); + else + fieldVo.setFieldTypeId(new Long(0)); //异常1:如果字段类型没法匹配,如何处理? + break; + case 3: + Integer valueType = 0; + if (cellStr.equals("数值型")) { + valueType = 1; + } + if (cellStr.equals("字符型")) { + valueType = 2; + } + if (cellStr.equals("枚举型")) { + valueType = 3; + } + if (cellStr.equals("小数型")) { + valueType = 4; + } + fieldVo.setValueType(valueType); + break; + case 4: + fieldVo.setValueScope(cellStr); + break; + case 5: + if (ExcelUtil.getCellValue(cell).equals("Y")) { + fieldVo.setIsDerivative(1); + } else { + fieldVo.setIsDerivative(0); + } + break; + case 6: + if (cellStr.equals("Y")) { + fieldVo.setIsOutput(1); + } else if (cellStr.equals("N")) { + fieldVo.setIsOutput(0); + } + break; + case 7://这里只处理公式原始值,不确定回显字段及字段绑定 + fieldVo.setFormula(cellStr); + break; + default: + break; + } + } + if (fieldVo.getFieldEn() != null) { + paramMap.put("fieldEn", fieldVo.getFieldEn()); + Field OldFieldVo = fieldMapper.findByFieldName(paramMap); + if (OldFieldVo != null) { + existRows++; + // fieldVo.setId(OldFieldVo.getId()); + // 不能直接更新字段,需先修改已使用到的地方 + // fieldMapper.updateField(paramMap); + } else { + // 防止重复字段 + if (fieldEnList.contains(fieldVo.getFieldEn())) { + repeatRows++; + } else { + sucRows++; + // 加入到list,等待批量更新 + fieldVoList.add(fieldVo); + fieldEnList.add(fieldVo.getFieldEn()); + } + } + } + } catch (Exception e) { + failRows++; + e.printStackTrace(); + } + }// end for Row + }// end first sheet + if (fieldVoList.size() > 0) { + fieldMapper.batchCreateField(fieldVoList); + paramMap.put("status", 1);// 导入后字段状态默认启用 + fieldUserMapper.batchCreateFieldUserRel(paramMap); + } + resultMap.put("sucRows", sucRows); + resultMap.put("failRows", failRows); + resultMap.put("repeatRows", repeatRows); + resultMap.put("existRows", existRows); + return resultMap; + } + + @Override + public Field findByFieldCn(Map paramMap) { + return fieldMapper.findByFieldCn(paramMap); + } + + /** + * 查找某字段类型所有的<子类型>拼成逗号分隔的字符串 + * + * @return + */ + public String getAllFieldTypeId(String ids, String pid, String engineId) { + + Map param = new HashMap(); + Long userId = SessionManager.getLoginAccount().getUserId(); + param.put("userId", userId); + param.put("engineId", engineId); + param.put("parentId", pid); + + String sid = fieldTypeMapper.findTypeIdByParentId(param); + if (sid != null && sid.length() > 0) { + if (ids.equals("")) + ids = sid; + else + ids = ids + "," + sid; + + String arrIds[] = sid.split(","); + for (int i = 0; i < arrIds.length; i++) { + String str = getAllFieldTypeId("", arrIds[i], engineId); + if (!str.equals("")) + ids = ids + "," + str; + } + } + return ids; + } + + /** + * 查找某字段类型所有的<父类型>拼成逗号分隔的字符串 + * + * @return + */ + public String getAllParentFieldTypeId(String ids, String id, String engineId) { + + Map param = new HashMap(); + Long userId = SessionManager.getLoginAccount().getUserId(); + param.put("userId", userId); + if (engineId == null || engineId.equals("")) { + engineId = null; + } + param.put("engineId", engineId); + param.put("fieldTypeId", id); + + String pid = fieldTypeMapper.findParentIdByTypeId(param); + String s = ""; + if (!pid.equals("0")) { + ids = id + "," + getAllParentFieldTypeId("", pid, engineId); + } else { + return id; + } + + return ids; + } + + /** + * 公共检查字段类型下的所有字段是否被使用 供删除时校验用 + * + * @return + */ + @Override + public Map checkFieldType(Map paramMap) { + + String pid = (String) paramMap.get("pid"); + String engineId = (String) paramMap.get("engineId"); + + String strfieldTypeIds = getAllFieldTypeId("", pid, engineId); + + + if (strfieldTypeIds != null && strfieldTypeIds.length() > 0) + strfieldTypeIds = pid + "," + strfieldTypeIds; //加上当前节点 + else + strfieldTypeIds = pid; + + List fieldTypeIds = StringUtil.toLongList(strfieldTypeIds); + paramMap.put("fieldTypeIds", fieldTypeIds); + + //获取所有字段类型下的所有启用和停用状态的字段id,逗号分割 + String fieldIds = ""; + fieldIds = fieldMapper.findFieldIdsByTypeIds(paramMap); + + if (fieldIds != null) { + String arrIds[] = fieldIds.split(","); + for (int i = 0; i < arrIds.length; i++) { + + paramMap.put("fieldId", arrIds[i]); + + checkField(paramMap); + if ((boolean) paramMap.get("beUsed")) { + break; // 遇到第一个字段存在被使用的情况就跳出循环来 + } + } + } + paramMap.put("fieldTypeIds", strfieldTypeIds); + paramMap.put("fieldIds", fieldIds); + return paramMap; + } + + public Map deleteNode(@RequestParam Map paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + String strFieldIds = ""; + strFieldIds = (String) paramMap.get("fieldIds"); + List fieldIds = StringUtil.toLongList(strFieldIds); + paramMap.put("fieldIds", fieldIds); + + List fieldTypeIds = StringUtil.toLongList((String) paramMap.get("fieldTypeIds")); + paramMap.put("fieldTypeIds", fieldTypeIds); + + //先更新字段状态状态为-1 + boolean f = false; + if (!strFieldIds.equals("")) + f = fieldUserMapper.deleteFieldByIds(paramMap); + else + f = true; + //再更新字段类型树状态为-1 + boolean ft = fieldTypeMapper.updateFieldTypeByTypeIds(paramMap); + //删除没有字段的空节点 + boolean ftd = fieldTypeMapper.deleteFieldTypeByTypeIds(paramMap); + + paramMap.put("fieldUpdate", f); + paramMap.put("fieldTypeUpdate", ft); + + Integer result = -1; + if (f && ft) { + result = 1; + } + paramMap.put("result", result); + + return paramMap; + } + + /** + * 从回收站还原一个或多个同类型或不同类型字段同时还原字段类型 + * + * @return + */ + public boolean backEngFieldType(Map paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + String basicFieldTypeIds = fieldMapper.findFieldTypeIdsByFieldId(paramMap); + + String strFieldTypeIds = basicFieldTypeIds; + + String arrIds[] = basicFieldTypeIds.split(","); + for (int i = 0; i < arrIds.length; i++) { + String str = getAllParentFieldTypeId("", arrIds[i], (String) paramMap.get("engineId")); + if (!str.equals("")) { + strFieldTypeIds = strFieldTypeIds + "," + str; + } + } + + //更新指定字段状态为1 + boolean f = fieldUserMapper.backFieldByIds(paramMap); + + //更新指定类型节点状态为1 + List fieldTypeIds = StringUtil.toLongList(strFieldTypeIds); + paramMap.put("fieldTypeIds", fieldTypeIds); + boolean ft = fieldTypeMapper.backFieldTypeByTypeIds(paramMap); + //ft 有两种情况:true是通过删除树节点还原会更新,如果通过删除字段还原,执行结果是false. + boolean result = false; + if (f) + result = true; + + return result; + + } + + @Override + public int isExistsFieldType(Map paramMap) { + return fieldTypeMapper.isExists(paramMap); + } + + @Override + public int isExistsDefaultTreeName(Map paramMap) { + return fieldTypeMapper.isExistsDefaultTreeName(paramMap); + } + + @Override + public String findFieldIdsByTypeIds(Map paramMap) { + return fieldMapper.findFieldIdsByTypeIds(paramMap); + } + + @Override + public String findOrgFieldIdsByTypeIds(Map paramMap) { + return fieldMapper.findOrgFieldIdsByTypeIds(paramMap); + } + + /** + * 生成引擎批量测试的样本数据 + * + * @return + */ + @Override + public String createEngineTestData(@RequestParam Map paramMap) { + + Long userId = SessionManager.getLoginAccount().getUserId(); + paramMap.put("userId", userId); + + //构造虚拟测试数据 输入字段id既是原生字段 + +// String strIds = (String) paramMap.get("Ids"); +// List Ids = StringUtil.toLongList(strIds); +// paramMap.put("Ids", Ids); +// List fieldList = fieldMapper.findFieldByIds(paramMap); + + List fieldList = (List) paramMap.get("fieldList"); + + Integer fieldCt = fieldList.size(); //获取字段个数 + + Long rowCt = Long.valueOf((String) paramMap.get("rowCt")).longValue(); //样本数 + double nullCtRatio = new Double((String) paramMap.get("nullCtRatio")); + Long nullCt = (long) (nullCtRatio * rowCt * fieldCt / 100); //所有样本参数中参数为空的总个数 + double elseCtRatio = new Double((String) paramMap.get("elseCtRatio")); + Long elseCt = (long) (elseCtRatio * rowCt * fieldCt / 100); //所有样本参数中超界参数的总个数 + + int iNullCt = 0; //初始化参数为空的计数器 + int iElseCt = 0; //初始化参数超界的计数器 + + Random random = new Random(); + StringBuffer testData = new StringBuffer(); + for (int i = 0; i < rowCt; i++) { + int colNums = fieldList.size(); + + int ct = 0; + for (Iterator iterator = fieldList.iterator(); iterator.hasNext(); ) { + + boolean flag = false; //异常开关 + + Field field = (Field) iterator.next(); + + String fieldEn = field.getFieldEn(); + Integer valueType = field.getValueType(); + String valueScope = field.getValueScope(); + + testData.append("\"").append(fieldEn).append("\"").append(":"); + + //优先按照随机情况赋值 + int nullKey = random.nextInt(2); //nullKey=1时表示用null + if (nullKey == 1 && iNullCt < nullCt) { + testData.append("\"\""); + iNullCt += 1; + flag = true; + } + + if (!flag) { + int elseKey = random.nextInt(2); //elseKey=1时表示用else + if (elseKey == 1 && iElseCt < elseCt && valueType != 2) { //超界的(字符类型字段没有超界) + if (valueType == 1) { + String minS = valueScope.substring(1, valueScope.indexOf(",")); //(1,5) 1 + String maxS = valueScope.substring(valueScope.indexOf(",") + 1, valueScope.length() - 1); //(1,5) 5 (1,) 右开区间 + if (!maxS.equals("")) {//超界 右边界存在加1 + int v = Integer.parseInt(maxS) + 1; + testData.append("\"" + v + "\""); + } else if (maxS.equals("") && !minS.equals("")) { + int v = Integer.parseInt(minS) - 1; + testData.append("\"" + v + "\"");//超界 左边界存在减1 + } + } + if (valueType == 3) { + testData.append("\"" + "-999999" + "\""); //按照统一枚举值处理 负数的最大位数 + } + iElseCt += 1; + flag = true; + } + } + + if (!flag) { + //按照正常取值范围赋值 + if (valueType == 1) {//数值型 + String minS = valueScope.substring(1, valueScope.indexOf(",")); //(1,5) 1 + String maxS = valueScope.substring(valueScope.indexOf(",") + 1, valueScope.length() - 1); //(1,5) 5 + testData.append("\"" + getRandomInt(minS, maxS) + "\""); + } else if (valueType == 2) {//字符型 + testData.append("\"" + getRandomString(6) + "\""); //6位长度随机数字字符 + } else if (valueType == 3) {//枚举型 + String arrValueScope[] = valueScope.split(","); + int l = arrValueScope.length; + int k = random.nextInt(l) % (l + 1); + //随机取值 + for (int j = 0; j < arrValueScope.length; j++) { + if (j == k) { + String value = arrValueScope[j]; + String tV = value.substring(value.indexOf(":") + 1, value.length()); + testData.append("\"" + tV + "\""); + } + } + } + } + + ct += 1; + if (ct != fieldCt) + testData.append(","); + + } + //每条样本数据缺少唯一id,将来结果查询如何对应? + testData.append("\r\n"); + + } + + //把生成的数据存入txt文件并返回路径 + String fileName = ""; + String fileUrl = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); + fileName = paramMap.get("engineId") + "_" + paramMap.get("versionId") + "_" + sdf.format(new Date()) + ".txt"; + fileUrl = paramMap.get("downloadDir") + "/" + fileName; + File newFile = new File(fileUrl); + if (newFile.createNewFile()) { + PrintWriter p = new PrintWriter(new FileOutputStream(newFile.getAbsolutePath())); + p.write(testData.toString()); + p.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + return fileName; + } + +// /** +// * 引擎批量测试的结果转成pdf文件 +// * +// * @return +// */ +// @Override +// public String createEngineTestResultPdf(@RequestParam Map paramMap) { +// +// Integer id = Integer.valueOf(String.valueOf(paramMap.get("resultSetId"))); +// EngineResultSet resultSet = new EngineResultSet(); +// resultSet.setId(id); +// resultSet = resultSetMapper.getResultSetById(resultSet); +// +// //createPDFWithChinese(); +// String fileName = ""; +// String fileUrl = ""; +// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_hhmmss"); +// fileName = sdf.format(new Date()) + ".pdf"; +// fileUrl = paramMap.get("path") + fileName; +// +// try { +// Document document = new Document(); +// PdfWriter.getInstance(document, new FileOutputStream(fileUrl)); +// document.open(); +// +// BaseFont bfChi = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); +// Font fontChi = new Font(bfChi, 12, Font.NORMAL); +// +// document.add(new Paragraph("客户分析报告", fontChi)); +// +// document.add(new Paragraph("结果详情", fontChi)); +// PdfPTable table = new PdfPTable(2); +// table.setWidthPercentage(100); +// table.setWidthPercentage(100); +// table.addCell(new Paragraph("用户ID: " + id, fontChi)); +// table.addCell(new Paragraph("引擎名称: " + resultSet.getEngine_name(), fontChi)); +// +// String result = resultSet.getResult(); +// if (result == null || result.equals("") || result.equals("1")) { +// result = "通过"; +// } else if (result.equals("2")) { +// result = "拒绝"; +// } +// +// table.addCell(new Paragraph("决策建议:" + result, fontChi)); +// String score = resultSet.getScorecardscore(); +// if (score == null) score = ""; +// table.addCell(new Paragraph("信用评分: " + score + "分", fontChi)); +// document.add(table); +// +// document.add(new Paragraph("黑名单", fontChi)); +// PdfPTable table2 = new PdfPTable(3); +// table2.setWidthPercentage(100); +// table2.setWidthPercentage(100); +// table2.addCell(new Paragraph("名单类型", fontChi)); +// table2.addCell(new Paragraph("名单名称", fontChi)); +// table2.addCell(new Paragraph("名单描述", fontChi)); +// +// List resultSetLists = resultSet.getResultSetList(); +// +// //是否命中标志 +// boolean flag = false; +// if (resultSet.getResultSetList().size() > 0) { +// for (Iterator iterator = resultSetLists.iterator(); iterator.hasNext(); ) { +// ResultSetList resultSetList = (ResultSetList) iterator.next(); +// if (resultSetList.getType() == 1) { +// flag = true; +// table2.addCell(new Paragraph(resultSetList.getVersionCode(), fontChi)); +// table2.addCell(new Paragraph(resultSetList.getName(), fontChi)); +// table2.addCell(new Paragraph(resultSetList.getDescription(), fontChi)); +// } +// } +// } +// if (!flag) { +// PdfPCell cell = new PdfPCell(new Paragraph("未命中", fontChi)); +// cell.setColspan(3); +// table2.addCell(cell); +// } +// +// document.add(table2); +// +// document.add(new Paragraph("白名单", fontChi)); +// PdfPTable table3 = new PdfPTable(3); +// table3.setWidthPercentage(100); +// table3.setWidthPercentage(100); +// table3.addCell(new Paragraph("名单类型", fontChi)); +// table3.addCell(new Paragraph("名单名称", fontChi)); +// table3.addCell(new Paragraph("名单描述", fontChi)); +// +// flag = false; //重置为false +// if (resultSet.getResultSetList().size() > 0) { +// for (Iterator iterator = resultSetLists.iterator(); iterator.hasNext(); ) { +// ResultSetList resultSetList = (ResultSetList) iterator.next(); +// if (resultSetList.getType() == 2) { +// flag = true; +// table3.addCell(new Paragraph(resultSetList.getVersionCode(), fontChi)); +// table3.addCell(new Paragraph(resultSetList.getName(), fontChi)); +// table3.addCell(new Paragraph(resultSetList.getDescription(), fontChi)); +// } +// } +// } +// if (!flag) { +// PdfPCell cell = new PdfPCell(new Paragraph("未命中", fontChi)); +// cell.setColspan(3); +// table3.addCell(cell); +// } +// +// document.add(table3); +// +// document.add(new Paragraph("硬性拒绝规则", fontChi)); +// PdfPTable table4 = new PdfPTable(4); +// table4.setWidthPercentage(100); +// table4.setWidthPercentage(100); +// table4.addCell(new Paragraph("规则ID", fontChi)); +// table4.addCell(new Paragraph("规则名称", fontChi)); +// table4.addCell(new Paragraph("命中原因", fontChi)); +// table4.addCell(new Paragraph("指标表现", fontChi)); +// +// flag = false; //重置为false +// if (resultSet.getResultSetList().size() > 0) { +// for (Iterator iterator = resultSetLists.iterator(); iterator.hasNext(); ) { +// ResultSetList resultSetList = (ResultSetList) iterator.next(); +// if (resultSetList.getType() == 3) { +// flag = true; +// table4.addCell(new Paragraph(resultSetList.getVersionCode(), fontChi)); +// table4.addCell(new Paragraph(resultSetList.getName(), fontChi)); +// table4.addCell(new Paragraph(resultSetList.getDescription(), fontChi)); +// table4.addCell(new Paragraph("", fontChi)); +// } +// } +// } +// if (!flag) { +// PdfPCell cell = new PdfPCell(new Paragraph("未命中", fontChi)); +// cell.setColspan(4); +// table4.addCell(cell); +// } +// +// document.add(table4); +// +// document.add(new Paragraph("加减分规则", fontChi)); +// document.add(new Paragraph()); +// PdfPTable table5 = new PdfPTable(4); +// table5.setWidthPercentage(100); +// table5.setWidthPercentage(100); +// table5.addCell(new Paragraph("规则ID", fontChi)); +// table5.addCell(new Paragraph("规则名称", fontChi)); +// table5.addCell(new Paragraph("命中原因", fontChi)); +// table5.addCell(new Paragraph("指标表现", fontChi)); +// +// flag = false; //重置为false +// if (resultSet.getResultSetList().size() > 0) { +// for (Iterator iterator = resultSetLists.iterator(); iterator.hasNext(); ) { +// ResultSetList resultSetList = (ResultSetList) iterator.next(); +// if (resultSetList.getType() == 4) { +// flag = true; +// table5.addCell(new Paragraph(resultSetList.getVersionCode(), fontChi)); +// table5.addCell(new Paragraph(resultSetList.getName(), fontChi)); +// table5.addCell(new Paragraph(resultSetList.getDescription(), fontChi)); +// table5.addCell(new Paragraph("", fontChi)); +// } +// } +// } +// if (!flag) { +// PdfPCell cell = new PdfPCell(new Paragraph("未命中", fontChi)); +// cell.setColspan(4); +// table5.addCell(cell); +// } +// +// document.add(table5); +// +// document.close(); +// +// +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (DocumentException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// return fileName; +// +// } + + /** + * 生成字符型随机数 + * + * @return + */ + public static String getRandomString(int length) { + String base = "abcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < length; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + + /** + * 生成指定范围内的随机整数 + * + * @return + */ + public static int getRandomInt(String minS, String maxS) { + + int min = 0, max = 0; + + if (minS.indexOf(".") >= 0) { // 3.90 | .9 + minS = minS.substring(0, minS.indexOf(".")); + } + + if (maxS.indexOf(".") >= 0) { // 3.90 + maxS = maxS.substring(0, maxS.indexOf(".")); + } + + if (maxS.equals("") && !minS.equals("")) { // (4,) 右开区间 + min = Integer.parseInt(minS); + max = min + 10000; + } else if (minS.equals("") && !maxS.equals("")) { // (,10) 左开区间 + max = Integer.parseInt(maxS); + min = max - 10000; + } else if (!minS.equals("") && !maxS.equals("")) {// (4,10) 左右闭区间 + min = Integer.parseInt(minS); + max = Integer.parseInt(maxS); + } + + Random random = new Random(); + int i = random.nextInt(max) % (max - min + 1) + min; + + return i; + + } + + @Override + public int fieldValidate(String fieldEn, String fieldCn, String engineId, Long fieldId) { + return 0; + } + + @Override + public int updateFieldFolder(UpdateFolderParam param) { + int result = fieldMapper.updateFieldFolder(param); + return result; + } + @Override + public String getFieldEnById(Long id) { + return fieldMapper.findFieldNameById(id); + } + + @Override + public List queryByIds(Collection ids) { + if (ids==null||ids.size()==0){ + return new ArrayList<>(); + } + return fieldMapper.selectByIds(ids); + } + + @Override + public List queryByEns(Collection ens) { + if (ens==null||ens.size()==0){ + return new ArrayList<>(); + } + return fieldMapper.selectByEns(ens); + } + + @Override + public List queryByOrganAndCns(Collection cns,Long organId) { + if (cns==null||cns.size()==0){ + return new ArrayList<>(); + } + return fieldMapper.selectByOrganCns(cns,organId); + } + + public void sqlFieldCheck(Map map){ + if (map.containsKey("sqlStatement")){ + Object sqlStatement = map.get("sqlStatement"); + if (sqlStatement!=null&&!"".equals(sqlStatement)){ + String param = sqlStatement.toString().toUpperCase(); + for (String match :KEY_WORDS) { + if ( param.contains(match)){ + throw new ApiException(ErrorCodeEnum.SQL_FIELD_HAVE_RISK.getCode(),ErrorCodeEnum.SQL_FIELD_HAVE_RISK.getMessage()+":"+match); + } + } + } + } + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldTypeServiceImp.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldTypeServiceImp.java new file mode 100644 index 0000000..1a301e6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/service/imp/FieldTypeServiceImp.java @@ -0,0 +1,94 @@ +package com.risk.riskmanage.datamanage.service.imp; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import com.risk.riskmanage.datamanage.model.FieldType; +import com.risk.riskmanage.datamanage.model.request.FieldTreeParam; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Service; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.datamanage.service.FieldTypeService; + +import javax.annotation.Resource; + +@Service +public class FieldTypeServiceImp extends BaseService implements + FieldTypeService { + @Resource + + @Override + public List getFieldTypeList(Map paramMap) { + return fieldTypeMapper.getFieldTypeList(paramMap); + } + + @Override + public boolean createFieldType(FieldType fieldTypeVo, + Map paramMap) { + // 检查字段类型是否存在 + //if (fieldTypeMapper.findIdByFieldType(paramMap) == 0) { + if (fieldTypeMapper.createFieldType(fieldTypeVo)) { + paramMap.put("fieldTypeId", fieldTypeVo.getId()); + if (fieldTypeUserMapper.createFieldTypeUserRel(paramMap)) { + return true; + } else + return false; + } else + return false; +// } else +// return false; + } + + @Override + public boolean updateFieldType(FieldTreeParam param) { + param.setOrganId(SessionManager.getLoginAccount().getOrganId()); + param.setUserId(SessionManager.getLoginAccount().getUserId()); + fieldTypeMapper.updateFieldType(param); + fieldTypeUserMapper.updateFieldTypeUserRel(param); + return true; + } + + @Override + public FieldType findFieldTypeById(Map paramMap) { + return fieldTypeMapper.findFieldTypeById(paramMap); + } + + @Override + public String findNodeIds(Map paramMap) { + return fieldTypeUserMapper.findNodeIds(paramMap); + } + + @Override + public List findFieldType(Map paramMap) { + return fieldTypeMapper.findFieldType(paramMap); + } + @Override + public List getTreeList(FieldTreeParam param) { + param.setOrganId(SessionManager.getLoginAccount().getOrganId()); + param.setUserId(SessionManager.getLoginAccount().getUserId()); + List fieldTypes = fieldTypeMapper.selectFieldTypeList(param); + List collect = fieldTypes.stream().filter(fieldType -> fieldType.getParentId() == 0).collect(Collectors.toList()); + for (FieldType fieldType : collect) { + fieldType.setChildren(this.assembleTreeList(fieldTypes,fieldType)); + } + return collect; + } + + private FieldType[] assembleTreeList(List fieldTypes,FieldType root){ + List children = new ArrayList(); + for (FieldType fieldType : fieldTypes) { + if (fieldType.getParentId().equals(root.getId())){ + fieldType.setChildren(this.assembleTreeList(fieldTypes,fieldType)); + children.add(fieldType); + } + } + if (children.size()==0){ + return new FieldType[0]; + } + return children.toArray( new FieldType[children.size()]); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldEnumVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldEnumVo.java new file mode 100644 index 0000000..59bd661 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldEnumVo.java @@ -0,0 +1,32 @@ +package com.risk.riskmanage.datamanage.vo; + +import java.util.List; + +import com.risk.riskmanage.datamanage.model.Field; + +/** + * 字段枚举包装类 + * 主要用于决策选项中,选择字段要加载字段对应的枚举值(如果字段是枚举的话) + */ +public class FieldEnumVo { + + private Field field; + + private List enums; + + public Field getField() { + return field; + } + + public void setField(Field field) { + this.field = field; + } + + public List getEnums() { + return enums; + } + + public void setEnums(List enums) { + this.enums = enums; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldExcelVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldExcelVo.java new file mode 100644 index 0000000..498bcec --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldExcelVo.java @@ -0,0 +1,150 @@ +package com.risk.riskmanage.datamanage.vo; + +import java.util.Date; + +public class FieldExcelVo { + + /** + * 主键 + * */ + private Integer id; + + /** + * 字段英文名 + * */ + private String fieldEn; + + /** + * 字段中文名 + * */ + private String fieldCn; + + /** + * 字段类型名称 + * */ + private String fieldType; + + /** + * 字段存值类型 + * */ + private String valueType; + + /** + * 字段约束范围 + * */ + private String valueScope; + + /** + * 是否衍生字段 + * */ + private String isDerivative; + + /** + * 是否输出字段 + * */ + private String isOutput; + + /** + * 衍生字段公式 + * */ + private String formula; + + /** + * 创建人 + * */ + private String author; + + /** + * 创建时间 + * */ + private Date created; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getFieldEn() { + return fieldEn; + } + + public void setFieldEn(String fieldEn) { + this.fieldEn = fieldEn; + } + + public String getFieldCn() { + return fieldCn; + } + + public void setFieldCn(String fieldCn) { + this.fieldCn = fieldCn; + } + + public String getFieldType() { + return fieldType; + } + + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + + public String getValueType() { + return valueType; + } + + public void setValueType(String valueType) { + this.valueType = valueType; + } + + public String getValueScope() { + return valueScope; + } + + public void setValueScope(String valueScope) { + this.valueScope = valueScope; + } + + public String getIsDerivative() { + return isDerivative; + } + + public void setIsDerivative(String isDerivative) { + this.isDerivative = isDerivative; + } + + public String getIsOutput() { + return isOutput; + } + + public void setIsOutput(String isOutput) { + this.isOutput = isOutput; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldFormulaVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldFormulaVo.java new file mode 100644 index 0000000..089e5cf --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldFormulaVo.java @@ -0,0 +1,89 @@ +package com.risk.riskmanage.datamanage.vo; + +import java.io.Serializable; + +public class FieldFormulaVo implements Serializable { + + private static final long serialVersionUID = 1L; + + // [{fvalue: "0",formula: "a",farr: [{fieldCN:"引擎字段1-1",fieldCond:[{"inputOne":"c","inputThree":"5"},{"inputOne":"b","inputThree":"12"}]},{fieldCN:"通用字段2贷前",fieldCond:[{"inputOne":"(30,40]","inputThree":"5"},{"inputOne":"[45,51)","inputThree":"12"}]}]}]; + + /** + * 衍生字段公式设置对应的值 + * */ + private String fvalue; + + /** + * 衍生字段公式 + * */ + private String formula; + + /** + * 衍生字段公式里字段的条件区域设置 + * */ + private Integer idx; + + /** + * 衍生字段公式里字段的条件区域设置 + * */ + private String farr; + + /** + * 衍生字段公式里条件区域设置的某个字段中文名 + * */ + private String fieldCN; + + /** + * 衍生字段公式里条件区域设置的某个字段的具体设置 + * */ + private String fieldCond; + + public String getFvalue() { + return fvalue; + } + + public void setFvalue(String fvalue) { + this.fvalue = fvalue; + } + + public String getFormula() { + return formula; + } + + public void setFormula(String formula) { + this.formula = formula; + } + + public Integer getIdx() { + return idx; + } + + public void setIdx(Integer idx) { + this.idx = idx; + } + + public String getFarr() { + return farr; + } + + public void setFarr(String farr) { + this.farr = farr; + } + + public String getFieldCN() { + return fieldCN; + } + + public void setFieldCN(String fieldCN) { + this.fieldCN = fieldCN; + } + + public String getFieldCond() { + return fieldCond; + } + + public void setFieldCond(String fieldCond) { + this.fieldCond = fieldCond; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldSubCondVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldSubCondVo.java new file mode 100644 index 0000000..66a341f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datamanage/vo/FieldSubCondVo.java @@ -0,0 +1,108 @@ +package com.risk.riskmanage.datamanage.vo; + +import java.io.Serializable; + +public class FieldSubCondVo implements Serializable{ + + private static final long serialVersionUID = 1L; + + //[{"fieldId":"43","operator":"in","fieldValue":"b","logical":"and"}] + + /** + * 条件字段编号 + * */ + private Integer fieldId; + + /** + * 条件字段的运算符 + * */ + private String operator; + + /** + * 条件字段的条件设置值 + * */ + private String fieldValue; + + /** + * 条件字段间的逻辑符 + * */ + private String logical; + + /** + * 条件字段的值类型 + * */ + private Integer valueType; + + /** + * 条件字段的取值范围 + * */ + private String valueScope; + + /** + * 条件字段的取值范围拆解后的数组 + * */ + private String[] values; + + /** + * 条件字段的字段名 + */ + private String fieldCn; + + + public Integer getFieldId() { + return fieldId; + } + public void setFieldId(Integer fieldId) { + this.fieldId = fieldId; + } + public String getOperator() { + return operator; + } + public void setOperator(String operator) { + this.operator = operator; + } + public String getFieldValue() { + return fieldValue; + } + public void setFieldValue(String fieldValue) { + this.fieldValue = fieldValue; + } + public String getLogical() { + return logical; + } + public void setLogical(String logical) { + this.logical = logical; + } + public Integer getValueType() { + return valueType; + } + public void setValueType(Integer valueType) { + this.valueType = valueType; + } + public String getValueScope() { + return valueScope; + } + public void setValueScope(String valueScope) { + this.valueScope = valueScope; + } + public String[] getValues() { + if(valueType == 3){ + values = valueScope.split(","); + }else{ + values = new String[]{valueScope}; + } + return values; + } + public void setValues(String[] values) { + this.values = values; + } + public String getFieldCn() { + return fieldCn; + } + public void setFieldCn(String fieldCn) { + this.fieldCn = fieldCn; + } + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/controller/DataSourceController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/controller/DataSourceController.java new file mode 100644 index 0000000..ebfe65f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/controller/DataSourceController.java @@ -0,0 +1,59 @@ +package com.risk.riskmanage.datasource.controller; + +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.datasource.model.request.DataSourceListParam; +import com.risk.riskmanage.datasource.model.vo.DataSourceVo; +import com.risk.riskmanage.datasource.service.DataSourceService; +import com.risk.riskmanage.logger.ArchivesLog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/datasource") +public class DataSourceController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + DataSourceService dataSourceService; + + @RequestMapping(value = "save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.DATA_SOURCE_SAVE) + public ResponseEntityDto save(@RequestBody DataSourceVo dataSourceVo) { + Integer result = dataSourceService.saveDataSource(dataSourceVo); + return ResponseEntityBuilder.buildNormalResponse(result); + } + + @RequestMapping(value = "update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.DATA_SOURCE_MODIFY) + public ResponseEntityDto update(@RequestBody DataSourceVo dataSourceVo) { + Integer result = dataSourceService.updateDataSource(dataSourceVo); + return ResponseEntityBuilder.buildNormalResponse(result); + } + + @RequestMapping(value = "/getDataSource/{id}", method = RequestMethod.GET) + public ResponseEntityDto getDataSourceById(@PathVariable Integer id) { + DataSourceVo dataSourceVo = dataSourceService.getDataSourceById(id); + return ResponseEntityBuilder.buildNormalResponse(dataSourceVo); + } + + @RequestMapping(value = "getDataSourceList", method = RequestMethod.POST) + public ResponseEntityDto getDataSourceList(@RequestBody DataSourceListParam param) { + Map result = dataSourceService.getDataSourceList(param); + return ResponseEntityBuilder.buildNormalResponse(result); + } + + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @ArchivesLog(operationType = OpTypeConst.DATA_SOURCE_DELETE) + public ResponseEntityDto deleteDataSourceById(@PathVariable Integer id) { + Integer result = dataSourceService.deleteDataSourceById(id); + return ResponseEntityBuilder.buildNormalResponse(result); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/mapper/DataSourceMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/mapper/DataSourceMapper.java new file mode 100644 index 0000000..dd1cda4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/mapper/DataSourceMapper.java @@ -0,0 +1,9 @@ +package com.risk.riskmanage.datasource.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.datasource.model.DataSource; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DataSourceMapper extends BaseMapper { +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/DataSource.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/DataSource.java new file mode 100644 index 0000000..18f5233 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/DataSource.java @@ -0,0 +1,107 @@ +package com.risk.riskmanage.datasource.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("t_field_data_source") +public class DataSource implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 连接名称 + */ + private String name; + + /** + * 数据源类型:MySQL、Oracle、SQLServer、Hive、Spark、Redis + */ + private String type; + + /** + * 主机地址 + */ + private String host; + + /** + * 用户名 + */ + private String userName; + + /** + * 密码 + */ + private String password; + + /** + * 端口 + */ + private String port; + + /** + * 数据库名称 + */ + private String dbName; + + /** + * 状态 0:无效,1:有效 + */ + private Integer status; + + /** + * 创建人 + */ + private Integer creator; + + /** + * 修改人 + */ + private Integer modifier; + + /** + * 企业编号 + */ + private Integer organId; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 连接地址 + */ + private String url; + + /** + * spark路径 + */ + private String sparkHome; + + /** + * spark应用程序的名称 + */ + private String appName; + + /** + * spark地址 + */ + private String masterUrl; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/request/DataSourceListParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/request/DataSourceListParam.java new file mode 100644 index 0000000..675048f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/request/DataSourceListParam.java @@ -0,0 +1,15 @@ +package com.risk.riskmanage.datasource.model.request; + +import com.risk.riskmanage.common.model.PageDto; +import lombok.Data; + +import java.util.List; + +@Data +public class DataSourceListParam extends PageDto { + + /** + * 数据源类型 + */ + private List typeList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/vo/DataSourceVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/vo/DataSourceVo.java new file mode 100644 index 0000000..607b495 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/model/vo/DataSourceVo.java @@ -0,0 +1,112 @@ +package com.risk.riskmanage.datasource.model.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class DataSourceVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Integer id; + + /** + * 连接名称 + */ + private String name; + + /** + * 数据源类型:MySQL、Oracle、SQLServer、Hive、Spark、Redis + */ + private String type; + + /** + * 主机地址 + */ + private String host; + + /** + * 用户名 + */ + private String userName; + + /** + * 密码 + */ + private String password; + + /** + * 端口 + */ + private String port; + + /** + * 数据库名称 + */ + private String dbName; + + /** + * 状态 0:无效,1:有效 + */ + private Integer status; + + /** + * 创建人 + */ + private Integer creator; + + /** + * 创建人名称 + */ + private String creatorName; + + /** + * 修改人 + */ + private Integer modifier; + + /** + * 修改人名称 + */ + private String modifierName; + + /** + * 企业编号 + */ + private Integer organId; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 连接地址 + */ + private String url; + + /** + * spark路径 + */ + private String sparkHome; + + /** + * spark应用程序的名称 + */ + private String appName; + + /** + * spark地址 + */ + private String masterUrl; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/DataSourceService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/DataSourceService.java new file mode 100644 index 0000000..126a59b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/DataSourceService.java @@ -0,0 +1,21 @@ +package com.risk.riskmanage.datasource.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.risk.riskmanage.datasource.model.DataSource; +import com.risk.riskmanage.datasource.model.request.DataSourceListParam; +import com.risk.riskmanage.datasource.model.vo.DataSourceVo; + +import java.util.Map; + +public interface DataSourceService extends IService { + + Integer saveDataSource(DataSourceVo dataSource); + + Integer updateDataSource(DataSourceVo dataSource); + + DataSourceVo getDataSourceById(Integer id); + + Map getDataSourceList(DataSourceListParam param); + + Integer deleteDataSourceById(Integer id); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/impl/DataSourceServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/impl/DataSourceServiceImpl.java new file mode 100644 index 0000000..c0ade57 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/datasource/service/impl/DataSourceServiceImpl.java @@ -0,0 +1,107 @@ +package com.risk.riskmanage.datasource.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.datasource.mapper.DataSourceMapper; +import com.risk.riskmanage.datasource.model.DataSource; +import com.risk.riskmanage.datasource.model.request.DataSourceListParam; +import com.risk.riskmanage.datasource.model.vo.DataSourceVo; +import com.risk.riskmanage.datasource.service.DataSourceService; +import com.risk.riskmanage.system.mapper.UserMapper; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class DataSourceServiceImpl extends ServiceImpl implements DataSourceService { + + @Resource + public DataSourceMapper dataSourceMapper; + + @Resource + public UserMapper userMapper; + + @Override + public Integer saveDataSource(DataSourceVo dataSourceVo) { + User user = SessionManager.getLoginAccount(); + Long organId = user.getOrganId(); + DataSource dataSource = new DataSource(); + BeanUtils.copyProperties(dataSourceVo, dataSource); + dataSource.setCreator(user.getUserId().intValue()); + dataSource.setModifier(user.getUserId().intValue()); + dataSource.setOrganId(organId.intValue()); + return dataSourceMapper.insert(dataSource); + } + + @Override + public Integer updateDataSource(DataSourceVo dataSourceVo) { + User user = SessionManager.getLoginAccount(); + DataSource dataSource = new DataSource(); + BeanUtils.copyProperties(dataSourceVo, dataSource); + dataSource.setModifier(user.getUserId().intValue()); + return dataSourceMapper.updateById(dataSource); + } + + @Override + public DataSourceVo getDataSourceById(Integer id) { + DataSource dataSource = dataSourceMapper.selectById(id); + DataSourceVo dataSourceVo = new DataSourceVo(); + BeanUtils.copyProperties(dataSource, dataSourceVo); + User creator = userMapper.findUserById(dataSource.getCreator()); + User modifier = userMapper.findUserById(dataSource.getModifier()); + dataSourceVo.setCreatorName(creator.getAccount()); + dataSourceVo.setModifierName(modifier.getAccount()); + return dataSourceVo; + } + + @Override + public Map getDataSourceList(DataSourceListParam param) { + Map result = new HashMap<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DataSource::getStatus, 1); + if(param.getTypeList()!=null&&!param.getTypeList().isEmpty()){ + queryWrapper.in(DataSource::getType, param.getTypeList()); + } + queryWrapper.orderByDesc(DataSource::getUpdateTime); + if (param.getPageNo()>0 && param.getPageSize()>0){ + PageHelper.startPage(param.getPageNo(), param.getPageSize()); + } + List dataSourceList = dataSourceMapper.selectList(queryWrapper); + PageInfo pageInfo = new PageInfo<>(dataSourceList); + pageInfo.setList(null); + result.put("pager", pageInfo); + + List dataSourceVoList = new ArrayList<>(); + for (DataSource dataSource : dataSourceList) { + DataSourceVo dataSourceVo = new DataSourceVo(); + BeanUtils.copyProperties(dataSource, dataSourceVo); + User creator = userMapper.findUserById(dataSource.getCreator()); + User modifier = userMapper.findUserById(dataSource.getModifier()); + dataSourceVo.setCreatorName(creator.getAccount()); + dataSourceVo.setModifierName(modifier.getAccount()); + dataSourceVoList.add(dataSourceVo); + } + result.put("data", dataSourceVoList); + + return result; + } + + @Override + public Integer deleteDataSourceById(Integer id) { + DataSource dataSource = new DataSource(); + dataSource.setId(id); + dataSource.setStatus(0); + return dataSourceMapper.updateById(dataSource); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Engine.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Engine.java new file mode 100644 index 0000000..b7daea4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Engine.java @@ -0,0 +1,93 @@ +package com.risk.riskmanage.engine.model; + +import lombok.Data; +import java.io.Serializable; +import java.util.Date; +import java.util.List; +/** + * + * 〈一句话功能简述〉 + * 〈功能详细描述〉 + */ +@Data +public class Engine implements Serializable { + private static final long serialVersionUID = -6611916471057697499L; + + /** + * 主键id + */ + private Long id; + /** + * 引擎编号 + */ + private String code; + /** + * 引擎名称 + */ + private String name; + /** + * 引擎描述 + */ + private String description; + /** + * 引擎状态 + */ + private Integer status; + /** + * 创建时间 + */ + private Date createDatetime; + /** + * 修改时间 + */ + private Date updateDatetime; + /** + * 创建人 + */ + private Long creator; + /** + * 修改人 + */ + private Long userId; + + /** + * 公司编号 + */ + private Long organId; + + /** + * 查询字段 + */ + private String searchString; + + /** + * 引擎版本集合 + * */ + private List engineVersionList; + + /** + * 运行状态 + */ + private int runState; + + /** + * 是否被选中 + */ + private boolean checked; + + /** + * 调用方式 1:同步,2:异步 + */ + private Integer callbackType; + + /** + * 回调地址 + */ + private String callbackUrl; + + /** + * 异常回调地址 + */ + private String exceptionCallbackUrl; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineNode.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineNode.java new file mode 100644 index 0000000..3cc921d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineNode.java @@ -0,0 +1,94 @@ +package com.risk.riskmanage.engine.model; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class EngineNode implements Serializable{ + + private static final long serialVersionUID = -1867357850853531748L; + + /** + * 节点编号 + */ + private Long nodeId; + + /** + * 父节点编号 + */ + private String parentId; + + /** + * 版本编号 + */ + private Long versionId; + + /** + * 节点名称 + */ + private String nodeName; + + /** + * 节点code + */ + private String nodeCode; + + /** + * 节点顺序 + */ + private Integer nodeOrder; + + /** + * 节点类型 + */ + private Integer nodeType; + + /** + * 节点X轴 + */ + private double nodeX; + + /** + * 节点Y轴 + */ + private double nodeY; + + /** + * 节点脚本 + */ + private String nodeScript; + + /** + * 节点json + */ + private String nodeJson; + + /** + * 节点类型,图标等信息 + */ + private String params; + + /** + * 下一节点 + */ + private String nextNodes; + + /** + * 评分卡id + * + */ + private Long cardId; + + /** + * 规则集合 + */ + private List ruleList; + + private Integer lastNextnode; + /** + * 快照信息 + */ + private String snapshot; + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineRule.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineRule.java new file mode 100644 index 0000000..2cd2400 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineRule.java @@ -0,0 +1,73 @@ +package com.risk.riskmanage.engine.model; + +import java.util.Map; + +public class EngineRule { + + private String refused; + + private String code ; + + private String policyName; + + private String desc; + + private String Strtus; + + + private Mapfields; + + + public String getStrtus() { + return Strtus; + } + + public void setStrtus(String strtus) { + Strtus = strtus; + } + + public String getRefused() { + return refused; + } + + public void setRefused(String refused) { + this.refused = refused; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getPolicyName() { + return policyName; + } + + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public Map getFields() { + return fields; + } + + public void setFields(Map fields) { + this.fields = fields; + } + + + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineVersion.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineVersion.java new file mode 100644 index 0000000..d692f09 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/EngineVersion.java @@ -0,0 +1,203 @@ +package com.risk.riskmanage.engine.model; + +import java.io.Serializable; +import java.util.List; + +public class EngineVersion implements Comparable, Serializable { + + private static final long serialVersionUID = 2923432053414979455L; + /** + * 版本编号 + */ + private Long versionId; + + /** + * 引擎编号 + */ + private Long engineId; + + /** + * 版本号 + */ + private Integer version; + + /** + * 子版本 + */ + private Integer subVersion; + + /** + * 部署状态 + */ + private Integer bootState; + + /** + * 版本状态 + */ + private Integer status; + + /** + * 布局方式 + */ + private Integer layout; + + /** + * 创建者 + */ + private Long userId; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改人 + */ + private Long latestUser; + + /** + * 最后修改时间 + */ + private String latestTime; + + /** + * 节点集合 + * */ + private List engineNodeList; + + /** + * 引擎名称 + * */ + private String engineName; + + /** + * 引擎描述 + * */ + private String engineDesc; + + public Long getVersionId() { + return versionId; + } + + public void setVersionId(Long versionId) { + this.versionId = versionId; + } + + public Long getEngineId() { + return engineId; + } + + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + + public Integer getVersion() { + return version; + } + + public void setVersion(Integer version) { + this.version = version; + } + + public Integer getBootState() { + return bootState; + } + + public void setBootState(Integer bootState) { + this.bootState = bootState; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getLayout() { + return layout; + } + + public void setLayout(Integer layout) { + this.layout = layout; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime == null ? null : createTime.trim(); + } + + public Long getLatestUser() { + return latestUser; + } + + public void setLatestUser(Long latestUser) { + this.latestUser = latestUser; + } + + public String getLatestTime() { + return latestTime; + } + + public void setLatestTime(String latestTime) { + this.latestTime = latestTime == null ? null : latestTime.trim(); + } + + public List getEngineNodeList() { + return engineNodeList; + } + + public void setEngineNodeList(List engineNodeList) { + this.engineNodeList = engineNodeList; + } + + public Integer getSubVersion() { + return subVersion; + } + + public void setSubVersion(Integer subVersion) { + this.subVersion = subVersion; + } + + public String getEngineName() { + return engineName; + } + + public void setEngineName(String engineName) { + this.engineName = engineName; + } + + public String getEngineDesc() { + return engineDesc; + } + + public void setEngineDesc(String engineDesc) { + this.engineDesc = engineDesc; + } + + @Override + public int compareTo(EngineVersion o) { + if(version!=o.getVersion()){ + return version-o.getVersion(); + }else if(!(subVersion == o.getSubVersion())){ + return subVersion - o.getSubVersion(); + }else { + return version-o.getVersion(); + } + } + + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/InputParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/InputParam.java new file mode 100644 index 0000000..8a75036 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/InputParam.java @@ -0,0 +1,33 @@ +package com.risk.riskmanage.engine.model; + +import java.util.List; +import java.util.Map; + +public class InputParam { + private Map inputParam; + + private List result; + + public Map getInputParam() { + return inputParam; + } + + public void setInputParam(Map inputParam) { + this.inputParam = inputParam; + } + + public List getResult() { + return result; + } + + public void setResult(List result) { + this.result = result; + } + + + + + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/NodeKnowledge.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/NodeKnowledge.java new file mode 100644 index 0000000..4f7803d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/NodeKnowledge.java @@ -0,0 +1,63 @@ +package com.risk.riskmanage.engine.model; + +import java.io.Serializable; + +/** + * 节点与知识库映射关系模型 + * + * + */ +public class NodeKnowledge implements Serializable { + private static final long serialVersionUID = -55965399064577379L; + /** + * 主键编号 + */ + private Long relId; + + /** + * 节点编号 + */ + private Long nodeId; + + /** + * 知识库信息编号 + */ + private Long knowledgeId; + + /** + * 知识库类型1规则2评分卡 + */ + private Integer knowledgeType; + + public Long getRelId() { + return relId; + } + + public void setRelId(Long relId) { + this.relId = relId; + } + + public Long getNodeId() { + return nodeId; + } + + public void setNodeId(Long nodeId) { + this.nodeId = nodeId; + } + + public Long getKnowledgeId() { + return knowledgeId; + } + + public void setKnowledgeId(Long knowledgeId) { + this.knowledgeId = knowledgeId; + } + + public Integer getKnowledgeType() { + return knowledgeType; + } + + public void setKnowledgeType(Integer knowledgeType) { + this.knowledgeType = knowledgeType; + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Result.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Result.java new file mode 100644 index 0000000..e8e8820 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/Result.java @@ -0,0 +1,61 @@ +package com.risk.riskmanage.engine.model; + +import java.util.List; +import java.util.Map; + +public class Result { + private String resultType;//规则1代表加减法,2拒绝规则 + private Integer id;//规则编号 + private String code;//规则code + private String name; + private String value; + private Map map;//评分 + private List list; + + + public Map getMap() { + return map; + } + public void setMap(Map map) { + this.map = map; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getResultType() { + return resultType; + } + public void setResultType(String resultType) { + this.resultType = resultType; + } + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public List getList() { + return list; + } + public void setList(List list) { + this.list = list; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/request/KnowledgeTreeListParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/request/KnowledgeTreeListParam.java new file mode 100644 index 0000000..7ba3c3b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/request/KnowledgeTreeListParam.java @@ -0,0 +1,16 @@ +package com.risk.riskmanage.engine.model.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class KnowledgeTreeListParam { + private String treeType;//树形分类:0:基础规则树 1:评分卡的树 2:回收站的树 3:决策表树,4:复杂规则树(逗号分割) + private Long organId;//组织id + private Long userId;//用户id + private Integer status;//状态 -1删除 + private Integer type;//1组织通用 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/DecisionFlowOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/DecisionFlowOutputResponse.java new file mode 100644 index 0000000..2eabde8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/DecisionFlowOutputResponse.java @@ -0,0 +1,18 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; + +import java.util.List; + +/** + * 决策流输出内容 (节点类型-》节点列表-》节点输出字段) + * + */ +@Data +public class DecisionFlowOutputResponse { + + /** + * 节点类型集合 + */ + private List nodeTypeList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbInfoOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbInfoOutputResponse.java new file mode 100644 index 0000000..216c21f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbInfoOutputResponse.java @@ -0,0 +1,23 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; +import java.util.List; + +@Data +public class ListDbInfoOutputResponse { + + /** + * 名单库id + */ + private Long id; + + /** + * 名单库名称 + */ + private String listName; + + /** + * 节点策略输出字段集合 + */ + private List listDbOutputList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbOutputResponse.java new file mode 100644 index 0000000..ff93fe0 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/ListDbOutputResponse.java @@ -0,0 +1,18 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; +import java.util.List; + +@Data +public class ListDbOutputResponse { + + /** + * 名单库的统计信息 + */ + private List statisticsOutputList; + + /** + * 名单库信息 + */ + private List listDbInfoOutput; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeInfoResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeInfoResponse.java new file mode 100644 index 0000000..7360bcc --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeInfoResponse.java @@ -0,0 +1,36 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; +import java.util.List; + +/** + * 节点信息 + */ +@Data +public class NodeInfoResponse { + + /** + * 节点编号 + */ + private Long nodeId; + + /** + * 节点名称 + */ + private String nodeName; + + /** + * 节点策略输出字段集合 + */ + private List strategyOutputList; + + /** + * 规则集输出信息 + */ + private RuleOutputResponse ruleOutput; + + /** + * 名单库输出信息 + */ + private ListDbOutputResponse listDbOutput; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeStrategyOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeStrategyOutputResponse.java new file mode 100644 index 0000000..4dc7c7e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeStrategyOutputResponse.java @@ -0,0 +1,24 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; + +/** + * 节点策略输出字段 + */ +@Data +public class NodeStrategyOutputResponse { + + /** + * 字段英文名 + * */ + private String fieldEn; + + /** + * 字段中文名 + * */ + private String fieldCn; + /** + * 字段类型 1数字,2字符串,6json + */ + private Integer valueType; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeTypeResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeTypeResponse.java new file mode 100644 index 0000000..e81104f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/NodeTypeResponse.java @@ -0,0 +1,27 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; + +import java.util.List; + +/** + * 节点类型 + */ +@Data +public class NodeTypeResponse { + + /** + * 节点类型 + */ + private Integer nodeType; + + /** + * 节点类型名称 + */ + private String nodeTypeName; + + /** + * 节点信息集合 + */ + private List nodeInfoList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleInfoOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleInfoOutputResponse.java new file mode 100644 index 0000000..470336a --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleInfoOutputResponse.java @@ -0,0 +1,29 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; + +import java.util.List; + +@Data +public class RuleInfoOutputResponse { + + /** + * 规则id + */ + private Long id; + + /** + * 名称 + * */ + private String name; + + /** + * 代码 + * */ + private String code; + + /** + * 节点策略输出字段集合 + */ + private List ruleOutputList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleOutputResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleOutputResponse.java new file mode 100644 index 0000000..731ef81 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/engine/model/response/param/RuleOutputResponse.java @@ -0,0 +1,19 @@ +package com.risk.riskmanage.engine.model.response.param; + +import lombok.Data; + +import java.util.List; + +@Data +public class RuleOutputResponse { + + /** + * 规则的统计信息 + */ + private List statisticsOutputList; + + /** + * 规则信息 + */ + private List ruleInfoList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/controller/InterfaceController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/controller/InterfaceController.java new file mode 100644 index 0000000..ce597cc --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/controller/InterfaceController.java @@ -0,0 +1,136 @@ +package com.risk.riskmanage.interfacemanage.controller; + +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.model.requestParam.QueryListParam; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.interfacemanage.model.InterfaceInfo; +import com.risk.riskmanage.interfacemanage.model.request.InterfaceListParam; +import com.risk.riskmanage.interfacemanage.model.request.InterfaceUpdateStatusParam; +import com.risk.riskmanage.interfacemanage.model.vo.InterfaceVo; +import com.risk.riskmanage.interfacemanage.service.InterfaceService; +import com.risk.riskmanage.logger.ArchivesLog; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; + +/** + * 提供interface相关接口 + * + * @apiDefine interface 2.接口管理 + */ +@RestController +@RequestMapping("v3/interface") +public class InterfaceController { + + @Autowired + InterfaceService interfaceService; + + @RequestMapping("testInterface") + public String test(){ + String str = "{\n" + + " \"status\": \"1\",\n" + + " \"error\": \"00000000\",\n" + + " \"msg\": null,\n" + + " \"data\": {\n" + + " \"name\": \"张三\",\n" + + " \"age\": 25\n" + + " }\n" + + "}"; + return str; + } + + /** + * @api {POST} /v3/interface/getInterfaceInfo/{id} 3.19. V3获取Interface信息 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Long} id : 规则id + * @apiSuccess {String} status 状态:1成功,0失败 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-07T05:12:52.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":16,"fieldId":10000,"fieldValue":"test01","ruleId":666},{"id":17,"fieldId":10000,"fieldValue":"test02","ruleId":666}]}} + */ + @RequestMapping(value = "getInterfaceInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getInterfaceById(@PathVariable Long id) { + if (id==null){ + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + InterfaceVo interfaceVo = interfaceService.getInterfaceById(id); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(interfaceVo); + return ruleResponseEntityDto; + } + + //测试http请求,并获得响应 + @PostMapping("getHttpResponse") + public ResponseEntityDto getHttpResponse(@RequestBody InterfaceInfo interfaceInfo) { + String result = interfaceService.getHttpResponse(interfaceInfo); + ResponseEntityDto interfaceResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(result); + return interfaceResponseEntityDto; + } + + //查询所有接口 + @PostMapping("getInterfaceList") + public ResponseEntityDto getInterfaceList(@RequestBody QueryListParam param) { +// PageBean pageBean = interfaceService.pageQuery(param.getPageNo(), param.getPageSize()); +// ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(pageBean); + + PageInfo pageInfo = interfaceService.queryByEntity(param); + HashMap responseMap = new HashMap<>(); + responseMap.put("pageInfo",pageInfo); + responseMap.put("klist",pageInfo.getList()); + pageInfo.setList(null); + ResponseEntityDto interfaceResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap); + + return interfaceResponseEntityDto; + } + + //添加接口 + @PostMapping("addInterface") + @ArchivesLog(operationType = OpTypeConst.ADD_INTERFACE) + public ResponseEntityDto addInterface(@RequestBody InterfaceVo interfaceVo ) { + InterfaceVo insert = interfaceService.inserInterfaceInfo(interfaceVo); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert); + return ruleResponseEntityDto; + } + + //删除接口 + @PostMapping("deleteInterface") + @ArchivesLog(operationType = OpTypeConst.DELETE_INTERFACE) + public ResponseEntityDto deleteInterface(@RequestBody InterfaceVo interfaceVo ) { + Boolean bool = interfaceService.deleteInterfaceInfo(interfaceVo); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(bool); + return ruleResponseEntityDto; + } + + //编辑接口 + @PostMapping("updateInterface") + @ArchivesLog(operationType = OpTypeConst.UPDATE_INTERFACE) + public ResponseEntityDto updateInterface(@RequestBody InterfaceVo interfaceVo ) { + InterfaceVo insert = interfaceService.updateInterfaceInfo(interfaceVo); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert); + return ruleResponseEntityDto; + } + + //批量更新接口状态 + @PostMapping("updateInterfaceStatus") + @ArchivesLog(operationType = OpTypeConst.UPDATE_INTERFACE_STATUS) + public ResponseEntityDto updateStatus(@RequestBody InterfaceUpdateStatusParam param) { + Long[] ids = param.getIds(); + Integer status = param.getStatus(); + if (ids==null||ids.length==0||status==null){ + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + boolean updateResult = interfaceService.updateStatus(ids, status); + if (updateResult){ + return ResponseEntityBuilder.buildNormalResponse(updateResult); + }else { + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR); + } + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/mapper/InterfaceMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/mapper/InterfaceMapper.java new file mode 100644 index 0000000..ef8fbe9 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/mapper/InterfaceMapper.java @@ -0,0 +1,18 @@ +package com.risk.riskmanage.interfacemanage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.interfacemanage.model.InterfaceInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface InterfaceMapper extends BaseMapper { + int updateStatus(@Param(value = "ids") Long[] ids, @Param(value = "status") Integer status); + + List queryInterfaceList(InterfaceInfo interfaceInfo); + + List queryLimit(@Param(value = "start")int start, @Param(value = "size")int size); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/InterfaceInfo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/InterfaceInfo.java new file mode 100644 index 0000000..2c4280c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/InterfaceInfo.java @@ -0,0 +1,61 @@ +package com.risk.riskmanage.interfacemanage.model; + +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +@TableName("t_field_interface") +public class InterfaceInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + private Integer id; //接口id + + private String name; //接口名称 + + private String url; //请求地址 + + private String method; //请求方法 + + private String requestHeaders; //请求体类型 + + private String requestBody; //请求参数体 + + private String bindParam; //绑定参数 + + private String responseBody; //请求响应体 + + private Long creator; //创建者 + + private Long modifier; //修改者 + + private Long organId; //企业编号 + + private Integer status; //请求状态 + + private Date createTime; //创建时间 + + private Date updateTime; //更新时间 + + private String requestType; + + @TableField(exist = false) + private String username; //用户名 + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceListParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceListParam.java new file mode 100644 index 0000000..22530e9 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceListParam.java @@ -0,0 +1,22 @@ +package com.risk.riskmanage.interfacemanage.model.request; + +import com.risk.riskmanage.interfacemanage.model.InterfaceInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class InterfaceListParam { + protected Integer pageNo = 1; // 第几页 + protected Integer pageSize = 10; // 每页的数量 + + +// protected Boolean search = false; // 是否搜索 + + protected InterfaceInfo interfaceInfo;//查询实体对象 + +// protected Integer parentId = 0; // 文件夹的id +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateParent.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateParent.java new file mode 100644 index 0000000..7ed758b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateParent.java @@ -0,0 +1,15 @@ +package com.risk.riskmanage.interfacemanage.model.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors +public class InterfaceUpdateParent { + private Long[] ids;//规则id + private Long parentId;//文件夹id +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateStatusParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateStatusParam.java new file mode 100644 index 0000000..137b868 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/request/InterfaceUpdateStatusParam.java @@ -0,0 +1,16 @@ +package com.risk.riskmanage.interfacemanage.model.request; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors +public class InterfaceUpdateStatusParam { + private Long[] ids;//id + private Integer status;//状态 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/vo/InterfaceVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/vo/InterfaceVo.java new file mode 100644 index 0000000..77b11ea --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/model/vo/InterfaceVo.java @@ -0,0 +1,64 @@ +package com.risk.riskmanage.interfacemanage.model.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors +@TableName("t_field_interface") +public class InterfaceVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; //接口id + + private String name; //接口名称 + + private String url; //请求地址 + + private String method; //请求方法 + + private String requestHeaders; //请求体类型 + + private String requestBody; //请求参数体 + + private String bindParam; //绑定参数 + + private String responseBody; //请求响应体 + + private Long creator; //创建者 + + private Long modifier; //修改者 + + private Long organId; //企业编号 + + private Long status; //请求状态 + + private Date createTime; //创建时间 + + private Date updateTime; //更新时间 + + private String requestType; + + @TableField(exist = false) + private String username; //用户名 + + @TableField(exist = false) + private String creatorName; //创建者姓名 + + @TableField(exist = false) + private String modifierName; //修改者姓名 + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/InterfaceService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/InterfaceService.java new file mode 100644 index 0000000..7817510 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/InterfaceService.java @@ -0,0 +1,31 @@ +package com.risk.riskmanage.interfacemanage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.model.requestParam.QueryListParam; +import com.risk.riskmanage.interfacemanage.model.InterfaceInfo; +import com.risk.riskmanage.interfacemanage.model.request.InterfaceListParam; +import com.risk.riskmanage.interfacemanage.model.vo.InterfaceVo; + +public interface InterfaceService extends IService { + InterfaceVo getInterfaceById(Long id); + +// Map getInterfaceList(PageDto pageDto); + + PageInfo queryByEntity( QueryListParam param); + + InterfaceVo inserInterfaceInfo(InterfaceVo interfaceVo); + + InterfaceVo updateInterfaceInfo(InterfaceVo interfaceVo); + + //更新接口 + boolean updateStatus(Long[] ids, Integer status); + + //删除接口 + Boolean deleteInterfaceInfo(InterfaceVo interfaceVo); + +// public PageBean pageQuery(int currentPage, int pageSize); + + //http请求 + String getHttpResponse(InterfaceInfo interfaceInfo); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/impl/InterfaceServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/impl/InterfaceServiceImpl.java new file mode 100644 index 0000000..205f848 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/interfacemanage/service/impl/InterfaceServiceImpl.java @@ -0,0 +1,207 @@ +package com.risk.riskmanage.interfacemanage.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.requestParam.QueryListParam; +import com.risk.riskmanage.interfacemanage.mapper.InterfaceMapper; +import com.risk.riskmanage.interfacemanage.model.InterfaceInfo; +import com.risk.riskmanage.interfacemanage.model.request.InterfaceListParam; +import com.risk.riskmanage.interfacemanage.model.vo.InterfaceVo; +import com.risk.riskmanage.interfacemanage.service.InterfaceService; +import com.risk.riskmanage.system.mapper.UserMapper; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@Service +public class InterfaceServiceImpl extends ServiceImpl implements InterfaceService { + @Resource + InterfaceMapper interfaceMapper; + + @Resource + UserMapper userMapper; + + @Autowired + private RestTemplate restTemplate; + + @Value("${runner.url}") + private String runnerUrl; + + @Override + public String getHttpResponse(InterfaceInfo interfaceInfo) { + HttpHeaders httpHeaders = new HttpHeaders(); + // 设置请求头 + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + // 封装请求体 + JSONObject body = JSONObject.parseObject(JSONObject.toJSONString(interfaceInfo)); + // 封装参数和头信息 + HttpEntity httpEntity = new HttpEntity(body, httpHeaders); + String url = runnerUrl + "/manager/invokeInterface"; + ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); + return responseEntity.getBody(); + } + + @Override + public Boolean deleteInterfaceInfo(InterfaceVo interfaceVo) { + interfaceMapper.deleteById(interfaceVo.getId()); + return true; + } + + @Override + public InterfaceVo updateInterfaceInfo(InterfaceVo interfaceVo) { + InterfaceInfo interfaceInfo = new InterfaceInfo(); + BeanUtils.copyProperties(interfaceVo,interfaceInfo); + User user = SessionManager.getLoginAccount(); + //设置创建者和修改者id + interfaceInfo.setModifier(user.getUserId()); + interfaceMapper.updateById(interfaceInfo); + return interfaceVo; + } + + @Override + @Transactional + public boolean updateStatus(Long[] ids, Integer status) { + int updateNum = interfaceMapper.updateStatus(ids, status); + if (updateNum>0){ + return true; + } + return false; + } + + //添加接口信息 + @Override + public InterfaceVo inserInterfaceInfo(InterfaceVo interfaceVo) { + //拷贝VO到Info对象 + InterfaceInfo interfaceInfo = new InterfaceInfo(); + BeanUtils.copyProperties(interfaceVo, interfaceInfo); + User user = SessionManager.getLoginAccount(); + //设置创建者和修改者id + interfaceInfo.setCreator(user.getUserId()); + interfaceInfo.setModifier(user.getUserId()); + interfaceInfo.setOrganId(user.getOrganId()); + interfaceInfo.setStatus(1); + //插入并获取insert后实体对象返回id + boolean save = this.save(interfaceInfo); + if (!save) { + throw new ApiException(ErrorCodeEnum.INTERFACE_SAVE_ERROR.getCode(), ErrorCodeEnum.INTERFACE_SAVE_ERROR.getMessage()); + } + return interfaceVo; + } + + @Override + public PageInfo queryByEntity(QueryListParam interfaceListParam) { + InterfaceInfo interfaceInfo = interfaceListParam.getEntity(); + + + Integer pageNo = interfaceListParam.getPageNum(); + Integer pageSize = interfaceListParam.getPageSize(); + if (pageNo > 0 && pageSize > 0) { + PageHelper.startPage(pageNo, pageSize); + } + Wrapper wrapper = createWrapper(interfaceListParam.getEntity()); + List interfaceList = interfaceMapper.selectList(wrapper); + PageInfo pageInfo = new PageInfo(interfaceList); + + +// 级联操作完成拼装 + List interfaceVos = new ArrayList<>(); + + User user = SessionManager.getLoginAccount(); + for(InterfaceInfo info: interfaceList){ + InterfaceVo interfaceVo = new InterfaceVo(); + BeanUtils.copyProperties(info,interfaceVo); + interfaceVo.setUsername(user.getNickName()); + //设置创建者昵称 + interfaceVo.setCreatorName(userMapper.findNickNameById(info.getCreator())); + //设置修改者昵称 + interfaceVo.setModifierName(userMapper.findNickNameById(info.getModifier())); + interfaceVos.add(interfaceVo); + } + pageInfo.setList(interfaceVos); + + + return pageInfo; + } + + @Override + public InterfaceVo getInterfaceById(Long id) { + InterfaceInfo info = interfaceMapper.selectById(id); + InterfaceVo interfaceVo = new InterfaceVo(); + BeanUtils.copyProperties(info,interfaceVo); + User user = SessionManager.getLoginAccount(); + interfaceVo.setUsername(user.getNickName()); + //设置创建者昵称 + interfaceVo.setCreatorName(userMapper.findNickNameById(info.getCreator())); + //设置修改者昵称 + interfaceVo.setModifierName(userMapper.findNickNameById(info.getModifier())); + return interfaceVo; + } + + //新插入数据的准备工作 +// private InterfaceVo initParam(InterfaceVo interfaceVo) { +// //加入用户信息 +// User user = SessionManager.getLoginAccount(); +// interfaceVo.setOrganId(user.getOrganId()); +// interfaceVo.setUsername(user.getNickName()); +// +// return interfaceVo; +// } + + //唯一性检查 + private boolean checkUniqueness(InterfaceVo vo) { + InterfaceInfo interfaceInfo = new InterfaceInfo(); + interfaceInfo.setName(vo.getName()); + InterfaceInfo info = this.getOne(new QueryWrapper<>(interfaceInfo)); + if (info != null) { + throw new ApiException(ErrorCodeEnum.INTERFACE_NAME_REPEAT.getCode(), ErrorCodeEnum.INTERFACE_NAME_REPEAT.getMessage()); + } + return true; + } + + //创建查询器 + private Wrapper createWrapper(InterfaceInfo query){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (query!=null){ + if (StringUtils.isNotBlank(query.getName())){ + wrapper.like(InterfaceInfo::getName,query.getName()); + } + if (StringUtils.isNotBlank(query.getMethod())){ + wrapper.eq(InterfaceInfo::getMethod,query.getMethod()); + } + if (StringUtils.isNotBlank(query.getUrl())){ + wrapper.eq(InterfaceInfo::getUrl,query.getUrl()); + } + if (query.getStatus()!=null){ + wrapper.eq(InterfaceInfo::getStatus,query.getStatus()); + }else { + wrapper.ne(InterfaceInfo::getStatus,-1); + } + }else { + wrapper.ne(InterfaceInfo::getStatus,-1); + } + wrapper.orderByDesc(InterfaceInfo::getId); + return wrapper; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/ExcelHeader.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/ExcelHeader.java new file mode 100644 index 0000000..eb2fef6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/ExcelHeader.java @@ -0,0 +1,30 @@ +package com.risk.riskmanage.knowledge.common.consts; + +/** + * ClassName:ExcelHeader
+ * Description: Excel表头配置.
+ */ +public class ExcelHeader { + + /** + * 规则表头名称 + * */ + public static final String[] RULE_HEADER = {"规则名称","规则代码","规则描述","优先级","条件","输出"}; + + /** + * 规则表头对应属性名称 + * */ + public static final String[] RULE_ClASS = {"name","versionCode","description","priority","fieldContent","content"}; + + /** + * 评分卡表头名称 + * */ + public static final String[] SCORECARD_HEADER = {"评分卡名称","评分卡代码","评分卡描述","版本号","指标详情","评分卡规则内容"}; + + /** + * 评分卡表头对应属性名称 + * */ + public static final String[] SCORECARD_ClASS = {"name","versionCode","description","version","fieldContent","content"}; + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Status.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Status.java new file mode 100644 index 0000000..aef53e4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Status.java @@ -0,0 +1,35 @@ +package com.risk.riskmanage.knowledge.common.consts; + +/** + * ClassName:ExcelHeader
+ * Description: 通用状态.
+ */ +public class Status { + + /** + * 启用 + * */ + public static final int ENABLED = 1; + + /** + * 停用 + * */ + public static final int DISABLE =0; + + /** + * 删除 + * */ + public static final int DELETE =-1; + + /** + * 输出 + * */ + public static final int IS_OUTPUT =1; + + /** + * 不输出 + * */ + public static final int IS_NOT_OUTPUT =0; + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Type.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Type.java new file mode 100644 index 0000000..bf01eaa --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/common/consts/Type.java @@ -0,0 +1,44 @@ +package com.risk.riskmanage.knowledge.common.consts; +/** + * ClassName:ExcelHeader
+ * Description: 通用类型.
+ * @see + */ +public class Type { + /** + * 系统的 + * */ + public static final int SYSTEMATIC =0; + + /** + * 组织的 + * */ + public static final int ORGANIZATIONAL =1; + + /** + * 引擎的 + * */ + public static final int ENGINE =2; + + /** + * 树类型为规则集 + * */ + public static final int RULE_TREE =0; + + /** + * 树类型为评分卡 + * */ + public static final int SCORECARD_TREE =0; + + /** + * 树类型为回收站 + * */ + public static final int RECYCLE_TREE =0; + + /** + * 知识库映射类型 + */ + public static final int POLICY = 1; + + public static final int SCORECARD = 2; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/controller/v2/KnowledgeTreeController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/controller/v2/KnowledgeTreeController.java new file mode 100644 index 0000000..abd585b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/controller/v2/KnowledgeTreeController.java @@ -0,0 +1,206 @@ +package com.risk.riskmanage.knowledge.controller.v2; + +import com.risk.riskmanage.common.basefactory.BaseController; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.knowledge.common.consts.Status; +import com.risk.riskmanage.knowledge.model.KnowledgeTree; +import com.risk.riskmanage.knowledge.model.Rule; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.rule.service.RuleService; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import com.risk.riskmanage.util.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +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.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.*; + +/** + * 提供 knowledge 相关接口 + * + * @apiName knowledge + * @apiDefine knowledge 3.规则管理 + */ +@Controller("KnowledgeTreeControllerV2") +@RequestMapping("/v2/knowledge/tree") +@ResponseBody +public class KnowledgeTreeController extends BaseController { + @Autowired + private RuleService ruleService; + + + /** + * @api {POST} /v2/knowledge/tree/list 3.01. 节点 获取目录 list:规则集、物流、银行、回收站等 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Integer} parentId parentId + * @apiParam {String} tree_type 树形分类(默认为0) 0:规则树,1:评分卡的树,2:回收站的树。(多个逗号分割) + * @apiParam {Integer} [type] 目录类型(默认为1) 0:系统的目录、1:组织的目录、2:引擎的目录 + * @apiSuccess {String} status 状态:1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"parentId":0,"tree_type":"0,2","type":1} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"parentId":1155,"tree_type":[0,2],"engineId":null,"type":1,"userId":135,"organId":46,"sort":true,"kArray":[{"id":1038,"name":"规则集","parentId":0,"userId":1,"organId":46,"engineId":null,"created":1498722046000,"type":1,"treeType":0,"status":1,"updated":1610332377000,"children":[{"id":1052,"name":"准入规则","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1498725927000,"type":1,"treeType":0,"status":1,"updated":1498725963000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1055,"name":"首贷反欺诈1","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1498725941000,"type":1,"treeType":0,"status":1,"updated":1505019204000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1056,"name":"反欺诈2","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1498725943000,"type":1,"treeType":0,"status":1,"updated":1498725975000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1057,"name":"反欺诈3","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1498725945000,"type":1,"treeType":0,"status":1,"updated":1498725980000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1058,"name":"复贷反欺诈1","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1505021066000,"type":1,"treeType":0,"status":1,"updated":1505021076000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1070,"name":"储蓄卡","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1520228395000,"type":1,"treeType":0,"status":1,"updated":1520228402000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1079,"name":"有盾","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1523523861000,"type":1,"treeType":0,"status":1,"updated":1523523866000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1080,"name":"同盾","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1526268525000,"type":1,"treeType":0,"status":1,"updated":1526268530000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1081,"name":"富数","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1526537754000,"type":1,"treeType":0,"status":1,"updated":1526537758000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1082,"name":"通讯录","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1527823577000,"type":1,"treeType":0,"status":1,"updated":1527823583000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1083,"name":"规则集MS","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1527823577000,"type":1,"treeType":0,"status":1,"updated":1527823583000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1084,"name":"规则集MX","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1559825319000,"type":1,"treeType":0,"status":1,"updated":1559825347000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1087,"name":"规则集TZ","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1559825352000,"type":1,"treeType":0,"status":1,"updated":1559825370000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1088,"name":"规则集YD","parentId":1038,"userId":135,"organId":46,"engineId":null,"created":1559825373000,"type":1,"treeType":0,"status":1,"updated":1559825378000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1122,"name":"规则集DY","parentId":1038,"userId":136,"organId":46,"engineId":null,"created":1610701146000,"type":1,"treeType":0,"status":1,"updated":1610703786000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1103,"name":"物流","parentId":0,"userId":141,"organId":46,"engineId":null,"created":1609742341000,"type":1,"treeType":0,"status":1,"updated":1611304985000,"children":[{"id":1104,"name":"网点余额不足风险","parentId":1103,"userId":141,"organId":46,"engineId":null,"created":1610332019000,"type":1,"treeType":0,"status":1,"updated":1610332055000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1109,"name":"银行","parentId":0,"userId":142,"organId":46,"engineId":null,"created":1610503557000,"type":1,"treeType":0,"status":1,"updated":1610503562000,"children":[{"id":1110,"name":"信用卡","parentId":1109,"userId":142,"organId":46,"engineId":null,"created":1610503567000,"type":1,"treeType":0,"status":1,"updated":1610503576000,"children":[{"id":1111,"name":"客服智能营销服务","parentId":1110,"userId":142,"organId":46,"engineId":null,"created":1610503699000,"type":1,"treeType":0,"status":1,"updated":1610503702000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1112,"name":"智能短信服务","parentId":1110,"userId":142,"organId":46,"engineId":null,"created":1610503750000,"type":1,"treeType":0,"status":1,"updated":1610503752000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1113,"name":"信用卡新户礼客户准入","parentId":1110,"userId":142,"organId":46,"engineId":null,"created":1610503758000,"type":1,"treeType":0,"status":1,"updated":1610503760000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1039,"name":"回收站","parentId":0,"userId":1,"organId":46,"engineId":null,"created":1498722046000,"type":1,"treeType":2,"status":1,"updated":1498722046000,"children":[{"id":1123,"name":"新建文件夹","parentId":1039,"userId":136,"organId":46,"engineId":null,"created":1610701170000,"type":1,"treeType":0,"status":-1,"updated":1611643120000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1129,"name":"新建文件夹","parentId":1039,"userId":143,"organId":46,"engineId":null,"created":1611545787000,"type":1,"treeType":0,"status":-1,"updated":1611643122000,"children":[{"id":1130,"name":"新建文件夹","parentId":1129,"userId":143,"organId":46,"engineId":null,"created":1611545828000,"type":1,"treeType":0,"status":1,"updated":1611545828000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1131,"name":"新建文件夹","parentId":1039,"userId":144,"organId":46,"engineId":null,"created":1611573817000,"type":1,"treeType":0,"status":-1,"updated":1611643123000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1132,"name":"新建文件夹","parentId":1039,"userId":144,"organId":46,"engineId":null,"created":1611575638000,"type":1,"treeType":0,"status":-1,"updated":1612409450000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1},{"id":1155,"name":"新建文件夹","parentId":1039,"userId":145,"organId":46,"engineId":null,"created":1612494472000,"type":1,"treeType":0,"status":-1,"updated":1612494477000,"children":[],"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}],"isParent":"true","icon":"../resource/images/datamanage/cabage.png","isLastNode":"true","directoryType":1}]}} + */ + @RequestMapping(value = "/list", method = RequestMethod.POST) + public ResponseEntityDto list(@RequestBody Map param) { + List list = s.knowledgeTreeService.getTreeList(param); + return ResponseEntityBuilder.buildNormalResponse(list); + } + /** + * save:(保存新增节点) + * @param param 请求参数集合 + * @return + * + */ + /** + * @api {POST} /v2/knowledge/tree/save 3.02. 节点 新增 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Integer} name 节点名字 + * @apiParam {Integer} parentId parentId + * @apiParam {Integer} treeType 树形分类 0:规则树、1:评分卡的树、2:回收站的树 + * @apiParam {Integer} [type] 默认值为1,表示组织的目录 + * @apiParam {Integer} engineId null + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"name":"我是文件夹1047","parentId":"0","treeType":"0","type":"1","engineId":""} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"name":"我是文件夹1047","parentId":"0","treeType":"0","type":"1","engineId":"","userId":135,"organId":46,"result":1,"node":{"id":1162,"name":"我是文件夹1047","parentId":0,"userId":135,"organId":46,"engineId":null,"created":null,"type":1,"treeType":0,"status":1,"updated":null,"children":null,"isParent":"true","icon":"../resource/images/authority/folder.png","isLastNode":"","directoryType":1}}} + */ + @RequestMapping(value = "/save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_KNOWLEDGE_TREE) + public ResponseEntityDto save(@RequestBody Map param) { + KnowledgeTree k = new KnowledgeTree(); + Map paramMap = getParam(param); + k.setName((String) param.get("name")); + if (param.containsKey("treeType") + && !StringUtil.isBlank(param.get("treeType").toString())) { + k.setTreeType(Integer.parseInt(param.get("treeType").toString())); + } + // 加 + if (null == paramMap.get("type") || "".equals(paramMap.get("type"))) { + paramMap.put("type", 1); + } + if (paramMap.containsKey("type") + && !StringUtil.isBlank(param.get("type").toString())) { + k.setType(Integer.parseInt(paramMap.get("type").toString())); + } + if (paramMap.containsKey("organId") + && !StringUtil.isBlank(param.get("organId").toString())) { + k.setOrganId(Long.parseLong(paramMap.get("organId").toString())); + } + if (paramMap.containsKey("engineId") + && !StringUtil.isBlank(param.get("engineId").toString())) { + k.setEngineId(Long.parseLong(paramMap.get("engineId").toString())); + } + if (param.containsKey("parentId") + && !StringUtil.isBlank(param.get("parentId").toString())) { + k.setParentId(Long.parseLong(param.get("parentId").toString())); + } + if (paramMap.containsKey("userId") + && !StringUtil.isBlank(param.get("userId").toString())) { + k.setUserId(Long.parseLong(paramMap.get("userId").toString())); + } + k.setStatus(Status.ENABLED); + boolean flag = s.knowledgeTreeService.insertTree(k); + if (flag) { + param.put("result", 1); + } else { + param.put("result", -1); + } + param.put("node", k); + return ResponseEntityBuilder.buildNormalResponse(param); + } + + /** + * @api {POST} /v2/knowledge/tree/update 3.03. 节点 修改/删除 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Integer} id 节点id + * @apiParam {String} name 节点名称 + * @apiParam {Integer} engineId engineId + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * 修改: + * {"id":1162,"name":"文件夹1127","engineId":""} + * 删除: + * {"id":1162,"status":"-1","type":"1","engineId":"","parentId":0} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":1162,"name":"文件夹1127","engineId":"","userId":135,"organId":46,"result":1}} + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_KNOWLEDGE_TREE) + public ResponseEntityDto update(@RequestBody Map param) { + if (null == param.get("type") || "".equals(param.get("type"))) { + param.put("type", 1); + } + Long id = Long.parseLong(param.get("id").toString()); + KnowledgeTree k = s.knowledgeTreeService.findById(id); + param.putAll(getParam(param)); + if (param.containsKey("name")) { + k.setName((String) param.get("name")); + } + if (param.containsKey("status")) { + int status = Integer.parseInt(param.get("status").toString()); + k.setStatus(status); + List idList = new ArrayList(); + Map map = new HashMap(); + map.put("parentIds", StringUtil.toLongList(k.getId().toString())); + map.put("type", param.get("type")); + map.put("engineId", param.get("engineId")); + map.put("organId", k.getOrganId()); + if (status == -1) { + map.put("status", StringUtil.toLongList("0,1")); + } + if (status == 1) { + map.put("status", StringUtil.toLongList("-1")); + } + if (k.getTreeType() == 0) { + List rlist = s.ruleService.getRuleList(map); + if (rlist != null && rlist.size() > 0) { + for (Rule r : rlist) { + idList.add(r.getId()); + } + map.put("status", status); + map.put("idList", idList); +// s.ruleService.updateRuleStatus(map); + ruleService.updateStatus(idList, status); + } + } + if (k.getTreeType() == 3) { +// decisionTablesService.updateStatus(idList.toArray(new Long[idList.size()]),status); + } + } + if (param.containsKey("parentId")) { + k.setParentId(Long.parseLong(param.get("parentId").toString())); + } + boolean flag = s.knowledgeTreeService.updateTree(k); + if (flag) { + param.put("result", 1); + } else { + param.put("result", -1); + } + return ResponseEntityBuilder.buildNormalResponse(param); + } + + /** + * getParam:(根据用户角色或权限,获取所需参数集合) + * + * @return paramMap + */ + private Map getParam(Map paramMap) { + User user = SessionManager.getLoginAccount(); + paramMap.put("userId", user.getUserId()); + paramMap.put("organId", user.getOrganId()); + return paramMap; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/EngineRuleRelMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/EngineRuleRelMapper.java new file mode 100644 index 0000000..0ee7ef5 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/EngineRuleRelMapper.java @@ -0,0 +1,40 @@ +package com.risk.riskmanage.knowledge.mapper; + +import java.util.List; +import java.util.Map; + +import com.risk.riskmanage.knowledge.model.KnowledgeTreeRel; +import com.risk.riskmanage.common.mapper.BaseMapper; + +/** + * ClassName:KnowledgeTreeRelMapper
+ * Description:引擎与引用规则关系 mapper + * @see + * */ +public interface EngineRuleRelMapper extends BaseMapper{ + + /** + * insertRel:(批量插入关系) + * + * @param param 关系集合 + * @return + * */ + public int insertRel(Map param); + + /** + * deleteRel:(批量删除关系) + * + * @param param 关系集合 + * @return + * */ + public int deleteRel(Map param); + + /** + * getRuleIdsByEngineId:(根据引擎id,获取引用规则id集合) + * + * @param param 关系集合 + * @return + * */ + public List getRuleIdsByEngineId(Long engineId); + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeMapper.java new file mode 100644 index 0000000..d4b32bb --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeMapper.java @@ -0,0 +1,48 @@ +package com.risk.riskmanage.knowledge.mapper; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.engine.model.request.KnowledgeTreeListParam; +import com.risk.riskmanage.knowledge.model.KnowledgeTree; + +import java.util.List; +import java.util.Map; + +/** + * ClassName:KnowledgeTreeMapper
+ * Description:知识库目录mapper + * @see + * + * */ +public interface KnowledgeTreeMapper extends BaseMapper{ + + /** + * getTreeList:(根据父节点id和组织id,查询其下的所有子节点) + * + * @param paramMap 参数集合 + * @return 父节点下的所有子节点 + * */ + public List getTreeList(Map paramMap); + public List getTreeListV2(Map paramMap); + + /** + * batchInsert:(批量新增节点) + * + * @param k 节点信息集合 + * @return + * */ + public int batchInsert(List k); + + /** + * getTreeList:(根据父节点id和组织id,查询其下的所有子节点,若节点下规则,则过滤掉) + * + * @param paramMap 参数集合 + * @return 父节点下的所有子节点 + * */ + public List getTreeDataForEngine(Map paramMap); + + public List getTreeDataForEngineV2(Map paramMap); + + Long getTreeId(KnowledgeTree knowledgeTree); + + List selectFolderList(KnowledgeTreeListParam param); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeRelMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeRelMapper.java new file mode 100644 index 0000000..33a9f36 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/KnowledgeTreeRelMapper.java @@ -0,0 +1,40 @@ +package com.risk.riskmanage.knowledge.mapper; + +import java.util.List; +import java.util.Map; + +import com.risk.riskmanage.knowledge.model.KnowledgeTreeRel; +import com.risk.riskmanage.common.mapper.BaseMapper; + +/** + * ClassName:KnowledgeTreeRelMapper
+ * Description:规则管理树形目录与引擎关系 mapper + * @see + * + * */ +public interface KnowledgeTreeRelMapper extends BaseMapper{ + + /** + * insertRel:(批量插入关系) + * + * @param list 关系集合 + * @return + * */ + public int insertRel(Map param); + + /** + * deleteRel:(批量删除关系) + * + * @param engineId 引擎id + * @return + * */ + public int deleteRel(Long engineId); + + /** + * findTreeIdsByEngineId:(根据引擎id,获取引擎使用的组织目录节点的id的集合) + * + * @param engineId 引擎id + * @return + * */ + public List findTreeIdsByEngineId(Long engineId); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleContentMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleContentMapper.java new file mode 100644 index 0000000..baa805c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleContentMapper.java @@ -0,0 +1,55 @@ +package com.risk.riskmanage.knowledge.mapper; + +import java.util.List; + +import com.risk.riskmanage.knowledge.model.RuleContent; +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.engine.model.NodeKnowledge; + +/** + * ClassName:RuleContentInfoMapper
+ * Description:规则内容mapper + * @see + * */ +public interface RuleContentMapper extends BaseMapper{ + + /** + * getRuleContentList : (根据规则id,,获取规则内容集合) + * + * @param ruleId 规则id + * @return 规则下的所有内容 + * */ + public List getRuleContentList(Long ruleId); + + /** + * insertRuleContent: (批量新增规则内容记录) + * + * @param ruleContentList 规则内容信息 + * @return + * */ + public int insertRuleContent(List ruleContentList); + + /** + * updateRuleContent : (批量修改规则内容记录) + * + * @param rlist 规则内容信息集合 + * @return + * */ + public boolean updateRuleContent(List rlist); + + /** + * deleteRuleContent : (批量删除规则内容记录) + * + * @param rlist 规则内容信息集合 + * @return + * */ + public boolean deleteRuleContent(List rlist); + + /** + * 根据引擎节点选择的规则查询字段 + * @param nodeKnowledge 引擎规则关系 + * @return 查询到在规则字段 + * @see + */ + public List selectNodeByRuleList(NodeKnowledge nodeKnowledge); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleFieldMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleFieldMapper.java new file mode 100644 index 0000000..920ff5c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleFieldMapper.java @@ -0,0 +1,74 @@ +package com.risk.riskmanage.knowledge.mapper; + +import java.util.List; +import java.util.Map; + +import com.risk.riskmanage.knowledge.model.RuleField; +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.engine.model.NodeKnowledge; + +/** + * ClassName:RuleFieldMapper
+ * Description:规则字段mapper + * @see + * */ +public interface RuleFieldMapper extends BaseMapper{ + + /** + * getFieldList : (根据规则id,,获取规则下的所有字段) + * + * @param ruleId 规则id + * @return 规则下的所有字段 + * */ + public List getFieldList(Long ruleId); + + /** + * insertField : (批量新增字段记录) + * + * @param rlist 字段信息集合 + * @return + * */ + public int insertField(List ruleFieldlist); + + /** + * updateField : (批量修改字段记录) + * + * @param rlist 字段信息集合 + * @return + * */ + public boolean updateField(List rlist); + + /** + * deleteField : (批量删除字段记录) + * + * @param rlist 字段信息集合 + * @return + * */ + public boolean deleteField(List rlist); + + + /** + * getNodeByList : (根据引擎节点得到所用字段) + * @author wenyu.cao + * @param nodeid 节点编号 + * @return 返回字段list + * */ + public List getNodeByList(NodeKnowledge knowledge); + + /** + * + * 根据规则得到规则引用字段 + * @param nodeKnowledge + * @return + * @see + */ + public List selectNodeByRuleList( NodeKnowledge nodeKnowledge); + /** + * + * 根据规则id得到规则引用字段 + * @param paramMap 规则id集合 + * @return + * @see + */ + public List selectByRuleList(Map paramMap); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleMapper.java new file mode 100644 index 0000000..624e682 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/mapper/RuleMapper.java @@ -0,0 +1,96 @@ +package com.risk.riskmanage.knowledge.mapper; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.engine.model.NodeKnowledge; +import com.risk.riskmanage.knowledge.model.Rule; + +import java.util.List; +import java.util.Map; + +/** + * ClassName:OrganRuleMapper
+ * Description:规则mapper + * @see + * */ +public interface RuleMapper extends BaseMapper{ + + /** + * getRuleList:(获取规则集合) + * + * @param paramMap 参数集合 + * @return 规则集合 + * */ + public List getRuleList(Map paramMap); + + /** + * updateRuleStatus:(批量修改规则状态记录) + * + * @param paramMap 参数集合 + * @return + * */ + public int updateRuleStatus(Map paramMap); + /** + * getNodeByRuleList : (根据引擎节点得到所用规则) + * @author wenyu.cao + * @param nodeid 节点编号 + * @return 返回字段list + * */ + public List getNodeByRuleList(NodeKnowledge knowledge); + + /** + * 根据规则类型查询规则 + * @param list 规则编号 + * @return + * @see + */ + public List selectnodeByInRoleid(List list); + + /** + * 根据父节点id查找,节点下所有规则id的集合 + * @param list 规则编号 + * @return + * @see + */ + public List getRuleIdsByParentId(Map param); + + /** + * getRuleList:(查找引用了某些字段的规则集合) + * + * @param paramMap 参数集合 + * @return 规则集合 + * */ + public List checkByField(Map paramMap); + + /** + * 效验规则名称唯一性 + * @param param 参数集合 + * @return + * @see + */ + public int countOnlyRuleName(Map param); + + /** + * 效验规则代码唯一性 + * @param param 参数集合 + * @return + * @see + */ + public int countOnlyRuleCode(Map param); + + /** + * getFieldIdsByRuleId:(根据规则id,获取规则所用字段id和Key) + * + * @param idList 规则id集合 + * @return + * */ + public List getFieldIdsByRuleId(List idList); + + public List getRuleListByType(Map paramMap); + + public List getNodeAddOrSubRulesByNodeId(Long nodeId); + + List getRuleListByIds(Map xxx); + + List getAllCodeNameParentId(); +// Set getAllName(); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/EngineRuleRel.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/EngineRuleRel.java new file mode 100644 index 0000000..be32455 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/EngineRuleRel.java @@ -0,0 +1,43 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; +/** + * ClassName:KnowledgeTreeRel
+ * Description: 引擎与引用规则关系实体类
+ */ +public class EngineRuleRel implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 引擎id + * */ + private Long engineId; + + /** + * 树形目录id + * */ + private Long ruleId; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getEngineId() { + return engineId; + } + + public void setEngineId(Long engineId) { + this.engineId = engineId; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTree.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTree.java new file mode 100644 index 0000000..6bd39af --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTree.java @@ -0,0 +1,229 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.Date; + +import org.codehaus.jackson.annotate.JsonIgnore; +/** + * ClassName:KnowledgeTreeVo
+ * Description: 知识库树形菜单实体类.
+ */ +public class KnowledgeTree implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 目录名称 + * */ + private String name; + + /** + * 父节点id + * */ + private Long parentId; + + /** + * 创建人id + * */ + private Long userId; + + /** + * 组织id + * */ + private Long organId; + + + /** + * 引擎id + * */ + private Long engineId; + + /** + * 创建日期 + * */ + private Date created; + + /** + * 目录类型 0 : 系统的目录 1:组织的目录 2: 引擎的目录 + * */ + private Integer type; + + /** + * 树形分类:0:规则树 1:评分卡的树 2:回收站的树 + * */ + private Integer treeType; + + /** + * 状态 0 :停用 ,1 : 启用,-1:删除 + * */ + private Integer status; + + /** + * 修改日期 + * */ + private Date updated; + + /** + * 子类集合 + * */ + private KnowledgeTree[] children; + + /** + * 是否为父类 + * */ + private String isParent = "true"; + + /** + *文件夹图片路径 + * */ + private String icon=""; + + private String isLastNode=""; + + private Integer directoryType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } + + public Long getEngineId() { + return engineId; + } + + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + + @JsonIgnore + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + @JsonIgnore + public Date getUpdated() { + return updated; + } + + public void setUpdated(Date updated) { + this.updated = updated; + } + + public KnowledgeTree[] getChildren() { + return children; + } + + public void setChildren(KnowledgeTree[] children) { + this.children = children; + } + + public String getIsParent() { + return isParent; + } + + public void setIsParent(String isParent) { + this.isParent = isParent; + } + + public Integer getTreeType() { + return treeType; + } + + public void setTreeType(Integer treeType) { + this.treeType = treeType; + } + + public String getIcon() { +// if((int)treeType == 2 || (int)treeType == 3){ +// icon = "../resource/images/datamanage/cabage.png"; +// isLastNode ="true"; +// }else{ +// icon = "../resource/images/authority/folder.png"; +// } + return icon; + } + + public Integer getDirectoryType() { + return directoryType = type ; + } + + public String getIsLastNode() { +// if((int)treeType == 2 || (int)treeType == 3){ +// isLastNode ="true"; +// } + return isLastNode; + } + + @Override + public String toString() { + return "KnowledgeTree [id=" + id + ", name=" + name + ", parentId=" + + parentId + ", userId=" + userId + ", organId=" + organId + + ", engineId=" + engineId + ", created=" + created + ", type=" + + type + ", treeType=" + treeType + ", status=" + status + + ", updated=" + updated + ", children=" + + Arrays.toString(children) + ", isParent=" + isParent + + ", icon=" + icon + ", isLastNode=" + isLastNode + + ", directoryType=" + directoryType + "]"; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTreeRel.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTreeRel.java new file mode 100644 index 0000000..a227ca6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/KnowledgeTreeRel.java @@ -0,0 +1,51 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; +/** + * ClassName:KnowledgeTreeRel
+ * Description: 规则管理树形目录与引擎关系实体类
+ * @see + */ +public class KnowledgeTreeRel implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 引擎id + * */ + private Long engineId; + + /** + * 树形目录id + * */ + private Long treeId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getEngineId() { + return engineId; + } + + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + + public Long getTreeId() { + return treeId; + } + + public void setTreeId(Long treeId) { + this.treeId = treeId; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/Rule.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/Rule.java new file mode 100644 index 0000000..03d773a --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/Rule.java @@ -0,0 +1,423 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * ClassName:OrganRuleVo
+ * Description: 规则实体类.
+ * @see + */ +public class Rule implements Serializable,Cloneable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 名称 + * */ + private String name; + + /** + * 代码 + * */ + private String code; + + /** + * 描述 + * */ + private String description; + + /** + * 优先级 + * */ + private Integer priority; + + /** + * 父节点id + * */ + private Long parentId; + + /** + *修改人id + * */ + private Long userId; + + /** + *创建人id + * */ + private Long author; + + /** + *创建人名称 + * */ + private String authorName; + + /** + * 组织id + * */ + private Long organId; + + /** + * 引擎id + * */ + private Long engineId; + + /** + * 规则类型 0 : 系统的规则 1:组织的规则 2: 引擎的规则 + * */ + private Integer type; + + /** + * 逻辑关系"非" 0:不是非 1:是非 + * */ + private Integer isNon; + + /** + * 状态 0 :停用 ,1 : 启用,-1:删除 + * */ + private Integer status; + /** + * 审批规则 5 :通过 ,2 : 拒绝,3:人工审批 4:简化流程 + */ + public int ruleAudit; + /** + * 规则字段集合 + * */ + private List ruleFieldList; + + /** + * 规则内容集合 + * */ + private List ruleContentList; + + /** + * 创建日期 + * */ + private Date created; + + /** + * 修改日期 + * */ + private Date updated; + + /** + * 规则具体内容 + * */ + public String content; + + /** + * 0硬性拒绝规则1加减分规则 + */ + private Integer ruleType; + + /** + *得分 + */ + private Integer score; + + /** + *逻辑关系符,存储条件区域最后一个逻辑符号,值有')'、'))'、'-1' + */ + private String lastLogical; + + /** + * 引擎名 + * */ + private String engineName; + + /** + * 规则节点名称 + * */ + private String engineNodeName; + + /** + * 规则节点名称 + * */ + private Long engineNodeId; + + /** + * 区分规则集和规则 + * */ + private int showType = 0; + + private Integer difficulty;//规则难度:1-简单规则,2复杂规则 + + private String resultFieldEn;//存放是否命中的字段 + + private String scoreFieldEn;//存放得分的字段en + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public int getRuleAudit() { + return ruleAudit; + } + + public void setRuleAudit(int ruleAudit) { + this.ruleAudit = ruleAudit; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getPriority() { + return priority; + } + + public void setPriority(Integer priority) { + this.priority = priority; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getAuthor() { + return author; + } + + public void setAuthor(Long author) { + this.author = author; + } + + public String getAuthorName() { + return authorName; + } + + public void setAuthorName(String authorName) { + this.authorName = authorName; + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } + + public Long getEngineId() { + return engineId; + } + + public void setEngineId(Long engineId) { + this.engineId = engineId; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public List getRuleFieldList() { + return ruleFieldList; + } + + public void setRuleFieldList(List ruleFieldList) { + this.ruleFieldList = ruleFieldList; + } + + public List getRuleContentList() { + return ruleContentList; + } + + public void setRuleContentList(List ruleContentList) { + this.ruleContentList = ruleContentList; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getUpdated() { + return updated; + } + + public void setUpdated(Date updated) { + this.updated = updated; + } + + public Integer getIsNon() { + return isNon; + } + + public void setIsNon(Integer isNon) { + this.isNon = isNon; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getRuleType() { + if(ruleAudit == 2) { + ruleType = 0; + }else{ + ruleType = 1; + } + return ruleType; + } + + public void setRuleType(Integer ruleType) { + this.ruleType = ruleType; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + public String getLastLogical() { + return lastLogical; + } + + public void setLastLogical(String lastLogical) { + this.lastLogical = lastLogical; + } + + public String getEngineName() { + return engineName; + } + + public void setEngineName(String engineName) { + this.engineName = engineName; + } + + + + public String getEngineNodeName() { + return engineNodeName; + } + + public void setEngineNodeName(String engineNodeName) { + this.engineNodeName = engineNodeName; + } + + public Long getEngineNodeId() { + return engineNodeId; + } + + public void setEngineNodeId(Long engineNodeId) { + this.engineNodeId = engineNodeId; + } + + public int getShowType() { + return showType; + } + + public void setShowType(int showType) { + this.showType = showType; + } + + public Integer getDifficulty() { + return difficulty; + } + + public void setDifficulty(Integer difficulty) { + this.difficulty = difficulty; + } + + @Override + public Object clone() throws CloneNotSupportedException { + // TODO Auto-generated method stub + return super.clone(); + } + + public String getResultFieldEn() { + return resultFieldEn; + } + + public void setResultFieldEn(String resultFieldEn) { + this.resultFieldEn = resultFieldEn; + } + + public String getScoreFieldEn() { + return scoreFieldEn; + } + + public void setScoreFieldEn(String scoreFieldEn) { + this.scoreFieldEn = scoreFieldEn; + } + + @Override + public String toString() { + return "EngineRule [id=" + id + ", name=" + name + ", versionCode=" + code + ", description=" + description + ", priority=" + + priority + ", parentId=" + parentId + ", userId=" + userId + ", author=" + author + ", authorName=" + + authorName + ", organId=" + organId + ", engineId=" + engineId + ", type=" + type + ", isNon=" + isNon + + ", status=" + status + ", ruleAudit=" + ruleAudit + ", ruleFieldList=" + ruleFieldList + + ", ruleContentList=" + ruleContentList + ", created=" + created + ", updated=" + updated + + ", content=" + content + ", ruleType=" + ruleType + ", score=" + score + ", lastLogical=" + + lastLogical + ", engineName=" + engineName + ", engineNodeName=" + engineNodeName + ", engineNodeId=" + + engineNodeId + ", showType=" + showType + "]"; + } + + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleContent.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleContent.java new file mode 100644 index 0000000..8dac2eb --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleContent.java @@ -0,0 +1,156 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; + +import com.risk.riskmanage.util.StringUtil; + +/** + * ClassName:RuleContentVo
+ * Description: 规则内容实体类.
+ * @see + */ +public class RuleContent implements Serializable{ + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 字段名 + * */ + private String field; + + /** + * 字段值 + * */ + private String fieldValue; + + /** + * 字段id + * */ + private String fieldId; + + /** + * 规则Id + * */ + private Long ruleId; + /** + * 类型:1 常量、2 变量 + */ + private Integer variableType; + + + /** + * 关联的字段的英文名称 + * */ + private String fieldEn; + + /** + * 关联的字段的值类型 + * */ + private Integer valueType; + + public Integer getVariableType() { + return variableType; + } + + public void setVariableType(Integer variableType) { + this.variableType = variableType; + } + + public void setValues(String[] values) { + this.values = values; + } + + /** + * 关联的字段的取值范围 + * */ + private String valueScope; + + /** + * 关联的字段的值拆解后的数组 + * */ + private String[] values; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getFieldValue() { + return fieldValue; + } + + public void setFieldValue(String fieldValue) { + this.fieldValue = fieldValue; + } + + public String getFieldId() { + return fieldId; + } + + public void setFieldId(String fieldId) { + this.fieldId = fieldId; + } + + public Long getRuleId() { + return ruleId; + } + + public void setRuleId(Long ruleId) { + this.ruleId = ruleId; + } + + public Integer getValueType() { + return valueType; + } + + public void setValueType(Integer valueType) { + this.valueType = valueType; + } + + public String getValueScope() { + return valueScope; + } + + public void setValueScope(String valueScope) { + this.valueScope = valueScope; + } + + public String[] getValues() { + if(!StringUtil.isBlank(valueScope)){ + if(valueType == 3){ + values = valueScope.split(","); + }else{ + values = new String[]{valueScope}; + } + }else{ + values = null; + } + return values; + } + + public String getFieldEn() { + return fieldEn; + } + + public void setFieldEn(String fieldEn) { + this.fieldEn = fieldEn; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleExcel.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleExcel.java new file mode 100644 index 0000000..9b6e5ff --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleExcel.java @@ -0,0 +1,74 @@ +package com.risk.riskmanage.knowledge.model; + +public class RuleExcel { + + /** + * 规则名称 + * */ + private String name; + + /** + * 规则代码 + * */ + private String code; + + /** + * 规则描述 + * */ + private String description; + + /** + * 优先级 + * */ + private Integer priority; + + /** + * 规则字段内容 + * */ + private String fieldContent; + + /** + * 规则内容 + * */ + private String content; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public Integer getPriority() { + return priority; + } + public void setPriority(Integer priority) { + this.priority = priority; + } + public String getFieldContent() { + return fieldContent; + } + public void setFieldContent(String fieldContent) { + this.fieldContent = fieldContent; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleField.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleField.java new file mode 100644 index 0000000..2a95589 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/RuleField.java @@ -0,0 +1,167 @@ +package com.risk.riskmanage.knowledge.model; + +import java.io.Serializable; + +import com.risk.riskmanage.util.StringUtil; + +/** + * ClassName:RuleFieldVo
+ * Description: 规则字段实体类.
+ * @see + */ +public class RuleField implements Serializable{ + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + * */ + private Long id; + + /** + * 逻辑运算符 + * */ + private String logical; + + /** + * 字段内容 + * */ + private String field; + + /** + * 运算符 + * */ + private String operator; + + /** + * 字段值 + * */ + private String fieldValue; + + /** + * 关联的规则的id + * */ + private Long ruleId; + + /** + * 关联的字段的id + * */ + private String fieldId; + + /** + * 关联的字段的英文名称 + * */ + private String fieldEn; + + /** + * 关联的字段的值类型 + * */ + private Integer valueType; + + /** + * 关联的字段的取值范围 + * */ + private String valueScope; + + /** + * 关联的字段的值拆解后的数组 + * */ + private String[] values; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLogical() { + return logical; + } + + public void setLogical(String logical) { + this.logical = logical; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getOperator() { + return operator; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public String getFieldValue() { + return fieldValue; + } + + public void setFieldValue(String fieldValue) { + this.fieldValue = fieldValue; + } + + public Long getRuleId() { + return ruleId; + } + + public void setRuleId(Long ruleId) { + this.ruleId = ruleId; + } + + public String getFieldId() { + return fieldId; + } + + public void setFieldId(String fieldId) { + this.fieldId = fieldId; + } + + public Integer getValueType() { + return valueType; + } + + public void setValueType(Integer valueType) { + this.valueType = valueType; + } + + public String getValueScope() { + return valueScope; + } + + public void setValueScope(String valueScope) { + this.valueScope = valueScope; + } + + public String[] getValues() { + if(!StringUtil.isBlank(valueScope)){ + if(valueType == 3){ + values = valueScope.split(","); + }else{ + values = new String[]{valueScope}; + } + }else{ + values = null; + } + return values; + } + + public String getFieldEn() { + return fieldEn; + } + + public void setFieldEn(String fieldEn) { + this.fieldEn = fieldEn; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/response/UploadResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/response/UploadResponse.java new file mode 100644 index 0000000..8face32 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/model/response/UploadResponse.java @@ -0,0 +1,19 @@ +package com.risk.riskmanage.knowledge.model.response; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UploadResponse { + private Integer existRows;//已存在行数 + private Integer sucRows;//成功条数 + private Integer repeatRows;//重复条数 + private Integer failRows;//失败条数 + private Integer total; + private Map result;//执行结果 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/KnowledgeTreeService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/KnowledgeTreeService.java new file mode 100644 index 0000000..0b684ec --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/KnowledgeTreeService.java @@ -0,0 +1,60 @@ +package com.risk.riskmanage.knowledge.service; + +import java.util.*; + +import com.risk.riskmanage.engine.model.request.KnowledgeTreeListParam; +import com.risk.riskmanage.knowledge.model.KnowledgeTree; + +/** + * ClassName:KnowledgeTreeService
+ * Description: 知识库目录接口.
+ * @see + */ +public interface KnowledgeTreeService { + + /** + * getTreeList:(根据父节点id和组织id,查询其下的所有子节点) + * + * @param paramMap 参数集合 + * @return 父节点下的所有子节点 + * */ + public List getTreeList(Map paramMap); + + /** + * findById:(根据id,查询节点记录) + * + * @param id 节点id + * @return + * */ + public KnowledgeTree findById(Long id); + + /** + * insertTree:(新增节点记录) + * + * @param k 节点信息 + * @return + * */ + public boolean insertTree(KnowledgeTree k); + + + + /** + * updateTree:(修改节点记录) + * + * @param k 节点信息 + * @return + * */ + public boolean updateTree(KnowledgeTree k); + + + + /** + * getTreeList:(根据父节点id和组织id,查询其下的所有子节点,若节点下规则,则过滤掉) + * + * @param paramMap 参数集合 + * @return 父节点下的所有子节点 + * */ + public List getTreeDataForEngine(Map paramMap); + + List getFolderList(KnowledgeTreeListParam param); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/RuleService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/RuleService.java new file mode 100644 index 0000000..1a36800 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/RuleService.java @@ -0,0 +1,35 @@ +package com.risk.riskmanage.knowledge.service; + + +import com.risk.riskmanage.knowledge.model.Rule; + +import java.util.List; +import java.util.Map; + +/** + * ClassName:RuleService
+ * Description: 规则接口.
+ * @see + */ +public interface RuleService { + + /** + * getRuleList:(获取规则集合) + * + * @param paramMap 参数集合 + * @return 规则集合 + * */ + public List getRuleList(Map paramMap); + + + + + + + + + + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/KnowledgeTreeServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/KnowledgeTreeServiceImpl.java new file mode 100644 index 0000000..0a1aee1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/KnowledgeTreeServiceImpl.java @@ -0,0 +1,178 @@ +package com.risk.riskmanage.knowledge.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.engine.model.request.KnowledgeTreeListParam; +import com.risk.riskmanage.knowledge.model.KnowledgeTree; +import com.risk.riskmanage.knowledge.service.KnowledgeTreeService; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import com.risk.riskmanage.util.StringUtil; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * ClassName:KnowledgeTreeServiceImpl
+ * Description: 知识库目录接口实现类.
+ */ +@Service +public class KnowledgeTreeServiceImpl extends BaseService implements KnowledgeTreeService { + + + @Override + public List getTreeList(Map param) { + + try { + if (param.get("parentId").toString().equals("99999999")) { + param.put("parentId", 0); + } + } catch (Exception e) { + } + + // if (this.isBlack(param.get("parentId"))) { + // param.put("parentId", 0); + // } + + if (null == param.get("parentId") || "".equals(param.get("parentId"))) { + param.put("parentId", 0); + } + if (null == param.get("type") || "".equals(param.get("type"))) { + param.put("type", 1); + } + if (null == param.get("status") || "".equals(param.get("status"))) { + param.put("status", new int[]{1}); + } + + if (param.get("treeType")!=null&&!"".equals(param.get("treeType").toString())){ + String name = param.get("treeType").toString(); + switch (name){ + case "0": + param.put("name", "基础规则集"); + param.put("tree_type", "0"); + break; + case "1": + param.put("name", "评分卡"); + param.put("tree_type", "1"); + break; + case "2": + param.put("name", "回收站"); + param.put("tree_type", "2"); + break; + case "3": + param.put("name", "决策表"); + param.put("tree_type", "3"); + break; + case "4": + param.put("name", "决策树"); + param.put("tree_type", "4"); + break; + case "5": + param.put("name", "复杂规则集合"); + param.put("tree_type", "5"); + break; + case "7": + param.put("name","脚本规则集"); + param.put("tree_type","7"); + break; + case "8": + param.put("name","集合操作"); + param.put("tree_type","8"); + break; + default: + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + }else { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + param.putAll(getParam(param)); + param.put("sort", true); + param.put("tree_type", StringUtil.toLongList(param.get("tree_type").toString())); + List klist = knowledgeTreeMapper.getTreeListV2(param); + String engineIdStr = (String) param.get("engineId"); + for (KnowledgeTree knowledgeTree : klist) { + param.put("parentId", knowledgeTree.getId()); + if (!StringUtil.isBlank(engineIdStr) && (int) knowledgeTree.getType() == 1 && knowledgeTree.getTreeType() == 0) { + knowledgeTree.setName(knowledgeTree.getName() + "(通用)"); + } + knowledgeTree.setChildren(getChildren(param)); + } + KnowledgeTree[] kArray = new KnowledgeTree[klist.size()]; + kArray = klist.toArray(kArray); + param.put("children", kArray); + + param.put("id", 99999999); + + ArrayList list = new ArrayList<>(); + list.add(param); + return list; + } + + @Override + public KnowledgeTree findById(Long id) { + // TODO Auto-generated method stub + return knowledgeTreeMapper.selectByPrimaryKey(id); + } + + @Override + public boolean insertTree(KnowledgeTree k) { + knowledgeTreeMapper.insertSelective(k); + return true; + } + + @Override + public boolean updateTree(KnowledgeTree k) { + knowledgeTreeMapper.updateByPrimaryKeySelective(k); + return true; + } + + + + @Override + public List getTreeDataForEngine(Map paramMap) { + // TODO Auto-generated method stub + // return knowledgeTreeMapper.getTreeDataForEngine(paramMap); + return knowledgeTreeMapper.getTreeDataForEngineV2(paramMap); + } + + @Override + public List getFolderList(KnowledgeTreeListParam param) { + User user = SessionManager.getLoginAccount(); + param.setOrganId(user.getOrganId()); + + List list = knowledgeTreeMapper.selectFolderList(param); + return list; + } + + private Map getParam(Map paramMap) { + User user = SessionManager.getLoginAccount(); + paramMap.put("userId", user.getUserId()); + paramMap.put("organId", user.getOrganId()); + return paramMap; + } + + /** + * getChildren:(获取树形节点的子节点信息) + * + * @param param 请求参数集合 + * @return + * + */ + private KnowledgeTree[] getChildren(Map param) { + List klist = knowledgeTreeMapper.getTreeList(param); + String engineIdStr = (String) param.get("engineId"); + for (KnowledgeTree knowledgeTree : klist) { + param.put("parentId", knowledgeTree.getId()); + if (!StringUtil.isBlank(engineIdStr) && (int) knowledgeTree.getType() == 1 && knowledgeTree.getTreeType() == 0) { + knowledgeTree.setName(knowledgeTree.getName() + "(通用)"); + } + knowledgeTree.setChildren(getChildren(param)); + } + KnowledgeTree[] kArray = new KnowledgeTree[klist.size()]; + kArray = klist.toArray(kArray); + return kArray; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/RuleServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/RuleServiceImpl.java new file mode 100644 index 0000000..8b588b6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/knowledge/service/impl/RuleServiceImpl.java @@ -0,0 +1,41 @@ +package com.risk.riskmanage.knowledge.service.impl; + + +import com.risk.riskmanage.common.basefactory.BaseService; + + +import com.risk.riskmanage.knowledge.mapper.RuleMapper; +import com.risk.riskmanage.knowledge.model.*; + +import com.risk.riskmanage.knowledge.service.KnowledgeTreeService; + +import com.risk.riskmanage.knowledge.service.RuleService; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +import java.util.*; + + +/** + * ClassName:RuleServiceImpl
+ * Description: 规则接口实现类.
+ */ +@Service +public class RuleServiceImpl extends BaseService implements RuleService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Resource + private RuleMapper ruleMapper; + + @Override + public List getRuleList(Map paramMap) { + return ruleMapper.getRuleList(paramMap); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLog.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLog.java new file mode 100644 index 0000000..d93341b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLog.java @@ -0,0 +1,21 @@ +package com.risk.riskmanage.logger; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +/** + * ClassName:ArchivesLog
+ * Description: 日志操作类型注解.
+ */ +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ArchivesLog { + + public String operationType() default ""; + + public String operationName() default ""; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLogAspect.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLogAspect.java new file mode 100644 index 0000000..903ce42 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/ArchivesLogAspect.java @@ -0,0 +1,150 @@ +package com.risk.riskmanage.logger; + +import com.risk.riskmanage.common.constants.OpTypeEnum; +import com.risk.riskmanage.logger.mapper.LoggerMapper; +import com.risk.riskmanage.logger.model.Logger; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.RequestUtil; +import com.risk.riskmanage.util.SessionManager; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.*; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Date; +import java.util.Map; + +@Aspect +@Component +public class ArchivesLogAspect { + + @Resource + private LoggerMapper loggerMapper; + + private Date startTime; // 开始时间 + private Date endTime; // 结束时间 + private HttpServletRequest request = null; + + @Pointcut("@annotation(com.risk.riskmanage.logger.ArchivesLog))") + public void controllerAspect() { + } + + @Before("controllerAspect()") + public void doBefore() { + request = getHttpServletRequest(); + startTime = new Date(); + } + + @AfterReturning(pointcut="controllerAspect()", returning="returnValue") + public void doAfter(JoinPoint joinPoint,Object returnValue) { + handleLog(joinPoint,null,returnValue); + } + + @AfterThrowing(value="controllerAspect()",throwing="e") + public void doAfter(JoinPoint joinPoint, Exception e) { + handleLog(joinPoint, e,null); + } + + + /** + * @Description: 方法调用后触发 记录结束时间 + * + * @param joinPoint + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void handleLog(JoinPoint joinPoint,Exception e,Object retValue) { + try { + User user = SessionManager.getLoginAccount(); + String targetName = joinPoint.getTarget().getClass().getName(); + String methodName = joinPoint.getSignature().getName(); + Object[] arguments = joinPoint.getArgs(); + Class targetClass = Class.forName(targetName); + Method[] methods = targetClass.getMethods(); + String operationName = ""; + for (Method method : methods) { + if (method.getName().equals(methodName)) { + Class[] clazzs = method.getParameterTypes(); + if (clazzs!=null&&clazzs.length == arguments.length&&method.getAnnotation(ArchivesLog.class)!=null) { + operationName = method.getAnnotation(ArchivesLog.class).operationType(); + break; + } + } + } + + endTime = new Date(); + Logger log = new Logger(); + log.setStartTime(startTime); + log.setEndTime(endTime); + if(user!=null){ + log.setOpUserId(user.getUserId()); + log.setOrganId(user.getOrganId()); + } + if (request.getScheme()!=null){ + log.setRequestPath(request.getRequestURL().toString()); + }else { + log.setRequestPath("npe"); + } + log.setMethod(methodName); + + //获取请求参数 + if(!operationName.equals("登入")){ + Map map = request.getParameterMap(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + for(String name : map.keySet()){ + String[] values=map.get(name); + String val = Arrays.toString(values); + sb.append(name+"="+val.substring(1,val.length()-1)).append(","); + } + sb = sb.deleteCharAt(sb.length()-1); + sb.append("}"); + log.setRequestParam(sb.toString()); + } + + //获取响应参数 + if(e !=null){ + log.setResponseParam(e.getMessage()); + }else{ + if(retValue!=null){ + log.setResponseParam(retValue.toString()); + } + } + + for (OpTypeEnum examType : OpTypeEnum.values()) { + if (operationName.equals(examType.getType()) ) { + log.setOpType(examType.getValue()); + } + } + log.setOpName(operationName); + log.setIp(RequestUtil.getClientIP(request)); + loggerMapper.insertSelective(log); + + } catch (ClassNotFoundException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (SecurityException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + /** + * @Description: 获取request + * + * @param + * @return HttpServletRequest + */ + public HttpServletRequest getHttpServletRequest(){ + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes sra = (ServletRequestAttributes)ra; + HttpServletRequest request = sra.getRequest(); + return request; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/controller/v2/LoggerController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/controller/v2/LoggerController.java new file mode 100644 index 0000000..fe33741 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/controller/v2/LoggerController.java @@ -0,0 +1,102 @@ +package com.risk.riskmanage.logger.controller.v2; + +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.BaseController; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.model.Logger; +import com.risk.riskmanage.logger.model.request.LoggerParam; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Controller("loggerControllerV2") +@RequestMapping("v2/sysLog") +@ResponseBody +public class LoggerController extends BaseController { + + /** + * @api {POST} /v2/sysLog/getLogList 6.51. 获取日志列表 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} pageNo 页数 + * @apiParam {Integer} pageSize 每页的条数 + * @apiParam {String} searchKey 搜索关键字 + * @apiParam {String} startDate 搜索开始时间 + * @apiParam {String} endDate 搜索结束时间 + * @apiSuccess {JSON} pager 分页信息 + * @apiSuccess {JSONArray} logList 日志列表 + * @apiSuccess (logList) {Long} id 日志Id + * @apiSuccess (logList) {String} opType 操作类型 + * @apiSuccess (logList) {String} organName 公司名称 + * @apiSuccess (logList) {String} opName 操作名称 + * @apiSuccess (logList) {Long} opUserId 操作人员id + * @apiSuccess (logList) {String} opUserName 操作人员名称 + * @apiSuccess (logList) {Long} organId 组织id + * @apiSuccess (logList) {String} method 方法名 + * @apiSuccess (logList) {String} requestPath 请求地址 + * @apiSuccess (logList) {String} requestParam 请求参数 + * @apiSuccess (logList) {String} responseParam 响应参数 + * @apiSuccess (logList) {String} ip 请求ip + * @apiSuccess (logList) {Long} startTime 开始时间 + * @apiSuccess (logList) {Long} endTime 结束时间 + * @apiParamExample {json} 请求示例: + * {"pageNo":1,"pageSize":2,"searchKey":"修改","startDate":"2021-3-11","endDate":"2021-3-21"} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":283,"pages":142,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3,4,5,6,7,8],"navigateFirstPage":1,"navigateLastPage":8,"firstPage":1,"lastPage":8},"logList":[{"id":5345,"opType":"updateSysMenu","organName":"rik","opName":"修改系统菜单","opUserId":1,"opUserName":"超级管理员","organId":1,"method":"update","requestPath":"http://localhost:8080/Riskmanage/v2/sysMenu/update","requestParam":"}","responseParam":"ResponseEntityDto(super=com.risk.riskmanage.common.model.ResponseEntityDto@8bc7d62e, status=1, error=00000000, msg=null, data=1)","ip":"0:0:0:0:0:0:0:1","startTime":1616251925000,"endTime":1616251938000},{"id":5342,"opType":"updateOrgan","organName":"rik","opName":" 修改组织信息","opUserId":1,"opUserName":"超级管理员","organId":1,"method":"update","requestPath":"http://localhost:8080/Riskmanage/v2/sysOrganization/update","requestParam":"}","responseParam":"ResponseEntityDto(super=com.risk.riskmanage.common.model.ResponseEntityDto@8bc7d62e, status=1, error=00000000, msg=null, data=1)","ip":"0:0:0:0:0:0:0:1","startTime":1616234345000,"endTime":1616234352000}]}} + */ + @RequestMapping(value = "getLogList", method = RequestMethod.POST) + public ResponseEntityDto getLogList(@RequestBody LoggerParam loggerParam){ + Map param = JSONObject.parseObject(JSONObject.toJSONString(loggerParam), Map.class); + User user = SessionManager.getLoginAccount(); + if(!user.getNickName().equals("超级管理员")){ + param.put("organId", user.getOrganId()); + } + PageHelper.startPage(loggerParam.getPageNo(), loggerParam.getPageSize()); + List logList = s.loggerService.getLogList(param); + PageInfo pageInfo = new PageInfo(logList); + pageInfo.setList(null); + HashMap modelMap = new HashMap<>(); + modelMap.put("pager", pageInfo); + modelMap.put("logList", logList); + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/sysLog/getLogInfo/{id} 6.52. 获取日志详情 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 日志Id(url参数) + * @apiSuccess {Long} id 日志Id + * @apiSuccess {String} opType 操作类型 + * @apiSuccess {String} organName 公司名称 + * @apiSuccess {String} opName 操作名称 + * @apiSuccess {Long} opUserId 操作人员id + * @apiSuccess {String} opUserName 操作人员名称 + * @apiSuccess {Long} organId 组织id + * @apiSuccess {String} method 方法名 + * @apiSuccess {String} requestPath 请求地址 + * @apiSuccess {String} requestParam 请求参数 + * @apiSuccess {String} responseParam 响应参数 + * @apiSuccess {String} ip 请求ip + * @apiSuccess {Long} startTime 开始时间 + * @apiSuccess {Long} endTime 结束时间 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":5342,"opType":"updateOrgan","organName":"rik","opName":" 修改组织信息","opUserId":1,"opUserName":"超级管理员","organId":1,"method":"update","requestPath":"http://localhost:8080/Riskmanage/v2/sysOrganization/update","requestParam":"}","responseParam":"ResponseEntityDto(super=com.risk.riskmanage.common.model.ResponseEntityDto@8bc7d62e, status=1, error=00000000, msg=null, data=1)","ip":"0:0:0:0:0:0:0:1","startTime":1616234345000,"endTime":1616234352000}} + */ + @RequestMapping(value = "getLogInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getLogInfo(@PathVariable Long id){ + Logger logger = s.loggerService.findById(id); + return ResponseEntityBuilder.buildNormalResponse(logger); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/mapper/LoggerMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/mapper/LoggerMapper.java new file mode 100644 index 0000000..34b6528 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/mapper/LoggerMapper.java @@ -0,0 +1,30 @@ +package com.risk.riskmanage.logger.mapper; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.logger.model.Logger; + +import java.util.Date; +import java.util.List; +import java.util.Map; +/** + * ClassName:LoggerMapper
+ * Description:日志mapper + * */ +public interface LoggerMapper extends BaseMapper{ + + /** + * getLogList :(获取日志集合) + * + * @param param 参数集合 + * @return + * */ + public List getLogList(Map param); + + /** + * 查询最后登录时间 + * @param userId + * @return + */ + public List getLastLoginInfo(Long userId); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/Logger.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/Logger.java new file mode 100644 index 0000000..0733762 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/Logger.java @@ -0,0 +1,167 @@ +package com.risk.riskmanage.logger.model; + +import java.util.Date; + +/** + * ClassName:Logger
+ * Description: 日志实体类.
+ */ +public class Logger { + + /** + * 主键 + * */ + private Long id; + + /** + * 操作类型 + * */ + private String opType; + + + /** + * 公司名称 + * */ + private String organName; + + /** + * 操作名称 + * */ + private String opName; + + /** + * 操作人员id + * */ + private Long opUserId; + + /** + * 操作人员id + * */ + private String opUserName; + + /** + * 组织id + * */ + private Long organId; + + /** + * 方法名 + * */ + private String method; + + /** + * 请求地址 + * */ + private String requestPath; + + /** + * 请求参数 + * */ + private String requestParam; + + /** + * 响应参数 + * */ + private String responseParam; + + /** + * 请求ip + * */ + private String ip; + + /** + * 开始时间 + * */ + private Date startTime; + /** + * 结束时间 + * */ + private Date endTime; + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getOpType() { + return opType; + } + public void setOpType(String opType) { + this.opType = opType; + } + public Long getOpUserId() { + return opUserId; + } + public void setOpUserId(Long opUserId) { + this.opUserId = opUserId; + } + public String getMethod() { + return method; + } + public void setMethod(String method) { + this.method = method; + } + public String getRequestPath() { + return requestPath; + } + public void setRequestPath(String requestPath) { + this.requestPath = requestPath; + } + public String getRequestParam() { + return requestParam; + } + public void setRequestParam(String requestParam) { + this.requestParam = requestParam; + } + public String getResponseParam() { + return responseParam; + } + public void setResponseParam(String responseParam) { + this.responseParam = responseParam; + } + public Date getStartTime() { + return startTime; + } + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + public Date getEndTime() { + return endTime; + } + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + public Long getOrganId() { + return organId; + } + public void setOrganId(Long organId) { + this.organId = organId; + } + public String getIp() { + return ip; + } + public void setIp(String ip) { + this.ip = ip; + } + public String getOpName() { + return opName; + } + public void setOpName(String opName) { + this.opName = opName; + } + public String getOpUserName() { + return opUserName; + } + public void setOpUserName(String opUserName) { + this.opUserName = opUserName; + } + public String getOrganName() { + return organName; + } + public void setOrganName(String organName) { + this.organName = organName; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/request/LoggerParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/request/LoggerParam.java new file mode 100644 index 0000000..b8ad8c1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/model/request/LoggerParam.java @@ -0,0 +1,12 @@ +package com.risk.riskmanage.logger.model.request; + +import com.risk.riskmanage.common.model.BaseParam; +import lombok.Data; + +@Data +public class LoggerParam extends BaseParam { + + private String searchKey; + private String startDate; + private String endDate; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/LogService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/LogService.java new file mode 100644 index 0000000..d37e3d0 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/LogService.java @@ -0,0 +1,38 @@ +package com.risk.riskmanage.logger.service; + +import com.risk.riskmanage.logger.model.Logger; + +import java.util.Date; +import java.util.List; +import java.util.Map; +/** + * ClassName:LogService
+ * Description:日志接口 + * */ +public interface LogService { + + /** + * getLogList :(获取日志集合) + * + * @param param 参数集合 + * @return + * */ + public List getLogList(Map param); + + + /** + * findById :(根据id获取日志) + * + * @param id 日志记录id + * @return + * */ + public Logger findById(Long id); + + /** + * 查询最后登录时间 + * @param userId + * @return + */ + public List getLastLoginInfo(Long userId); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/impl/LogServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/impl/LogServiceImpl.java new file mode 100644 index 0000000..df19ed1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/logger/service/impl/LogServiceImpl.java @@ -0,0 +1,34 @@ +package com.risk.riskmanage.logger.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.logger.model.Logger; +import com.risk.riskmanage.logger.service.LogService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Map; +/** + * ClassName:LogService
+ * Description:日志接口实现 + * */ +@Service +public class LogServiceImpl extends BaseService implements LogService{ + + @Override + public List getLogList(Map param) { + // TODO Auto-generated method stub + return loggerMapper.getLogList(param); + } + + @Override + public Logger findById(Long id) { + // TODO Auto-generated method stub + return loggerMapper.selectByPrimaryKey(id); + } + + @Override + public List getLastLoginInfo(Long userId) { + return loggerMapper.getLastLoginInfo(userId); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/redis/RedisManager.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/redis/RedisManager.java new file mode 100644 index 0000000..940fac9 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/redis/RedisManager.java @@ -0,0 +1,125 @@ +package com.risk.riskmanage.redis; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +@Component +public class RedisManager { + // 0-表示永远不过期 + private int expire = 0; + + @Autowired + private JedisPool jedisPool; + + public RedisManager() {} + + /** + * @Title: init + * @Description: 初始化方法,用来初始化 + * @param 设定文件 + * @return void 返回类型 + * @throws + */ + public void init() { + } + + /** + * @Title: get + * @Description: 根据key来获得一条特定的缓存数据 + * @param @param key string类型的key + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public String get(String key) { + String value = null; + Jedis jedis = jedisPool.getResource(); + try { + value = jedis.get(key); + } catch (Exception e) { + //释放redis对象 + jedisPool.returnBrokenResource(jedis); + e.printStackTrace(); + } finally { + //返还到连接池 + if (jedis != null) { + jedisPool.returnResource(jedis); + } + } + return value; + } + + /** + * @Title: set + * @Description: 向redis数据库中缓存数据,key,value都为字符串的类型 + * @param @param key + * @param @param value + * @param @param expire 0为永不过期,其他时间则会设置对应的过期时间 + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public String set(String key, String value, int expire) { + Jedis jedis = jedisPool.getResource(); + try { + jedis.set(key, value); + if (expire != 0) { + jedis.expire(key, expire); + } + } catch (Exception e) { + //释放redis对象 + jedisPool.returnBrokenResource(jedis); + e.printStackTrace(); + } finally { + //返还到连接池 + if (jedis != null) { + jedisPool.returnResource(jedis); + } + } + return value; + } + + /** + * @Title: del + * @Description: 根据特定的string类型的key来删除redis数据库中的缓存数据 + * @param @param key 设定文件 + * @return void 返回类型 + * @throws + */ + public void del(String key) { + Jedis jedis = jedisPool.getResource(); + try { + jedis.del(key); + } finally { + if (jedis != null) { + jedis.close(); + } + } + } + + /** + * 获取key的剩余过期时间,单位秒 + * @param key + * @return + */ + public Long ttl(String key) { + Long value = null; + Jedis jedis = jedisPool.getResource(); + try { + value = jedis.ttl(key); + } catch (Exception e) { + //释放redis对象 + jedisPool.returnBrokenResource(jedis); + e.printStackTrace(); + } finally { + //返还到连接池 + if (jedis != null) { + jedisPool.returnResource(jedis); + } + } + return value; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConditionConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConditionConst.java new file mode 100644 index 0000000..7242f46 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConditionConst.java @@ -0,0 +1,17 @@ +package com.risk.riskmanage.rule.consts; + +public class RuleConditionConst { + + public static final long DEFAULT_CONDITION_PARENT_ID = 0;//根节点父ID + public static final int RELATION_CONDITION_TYPE = 1;//关系节点类型 + public static final int EXPRESSION_CONDITION_TYPE = 2;//表达式节点类型 + + public static final String LOOP_RULE_LOGICAL = "for";//循环规则的逻辑符号 + public static final int LOOP_RULE_ROOT = 3;//循环规则的根节点 + public static final int LOOP_RULE_RESULT_CONDITION = 4;//循环规则的结果条件 + + public static final String CONDITION_GROUP_LOGICAL = "condGroup";//循环规则的逻辑符号 + public static final int CONDITION_GROUP_ROOT = 5;//循环规则的根节点 + public static final int CONDITION_GROUP_RESULT_CONDITION = 6;//循环规则的结果条件 + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConst.java new file mode 100644 index 0000000..40aa495 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleConst.java @@ -0,0 +1,20 @@ +package com.risk.riskmanage.rule.consts; + +public class RuleConst { + public static final int STATUS_ENABLED = 1;//启用状态,默认 + public static final int STATUS_DEAD = 0;//停用状态 + public static final int STATUS_DELETE = -1;//删除状态 + + + public static final int TYPE_SYSTEM = 0;//系统规则 + public static final int TYPE_ORGAN = 1;//组织规则,默认 + public static final int TYPE_ENGINE = 2;//引擎规则 + + public static final int RULE_TYPE_TERMINATION = 0;//终止 + public static final int RULE_TYPE_SCORING = 1;//计分 + + public static final int RULE_AUDIT_TERMINATION = 2;//终止 + public static final int RULE_AUDIT_SCORING = 5;//继续 + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleRunnerConst.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleRunnerConst.java new file mode 100644 index 0000000..4a29e58 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/consts/RuleRunnerConst.java @@ -0,0 +1,86 @@ +package com.risk.riskmanage.rule.consts; + +import java.util.Map; + +public class RuleRunnerConst { + public static final String RULE_FILE_HEAD = " package com.baoying.enginex.executor.drools \\r\\n" + + " import java.util.Map;\\r\\n" + + " import java.util.List;\\r\\n" + + " import java.util.ArrayList;\\r\\n" + + " import java.util.HashMap;\\r\\n" + + " import com.baoying.enginex.executor.engineModel.model.InputParam;\\r\\n" + + " import com.baoying.enginex.executor.engineModel.model.Result;\\r\\n" + + " import com.baoying.enginex.executor.engineModel.model.EngineRule;\\r\\n"; + public static final String RULE_NAME_PREFIX = " rule \t"; + public static final String RULE_SALIENCE_PREFIX = "\\r\\n salience\\t "; + public static final String RULE_CONDITION_PREFIX = "\\r\\n when \\r\\n"; + public static final String CONDITION_DETAIL_PREFIX = "\\t $inputParam : InputParam();\\r\\n Map"; + public static final String CONDITION_DETAIL_SUFFIX = " \t from $inputParam.inputParam;\\r\\n"; + public static final String RULE_DISPOSE_PREFIX = "\\t then \\r\\n"; + public static final String DISPOSE_PREFIX = + "\\t List resultList =$inputParam.getResult();\\r\\n" + + "\\t Result result =new Result(); \\r\\n" + + "\\t result.setResultType(\""; + public static final String DISPOSE_INFIX = "\"); \\r\\n" + + "\\t result.setVersionCode(\""; + public static final String DISPOSE_SUFFIX = "\"); \\r\\n" + + "\\t Map map =new HashMap<>(); \\r\\n"; + + public static final String SCORE_PREFIX = "\\t map.put(\"score\","; + public static final String SCORE_SUFFIX = "); \\r\\n"; + + public static final String RULE_END = "\\t result.setMap(map); \\r\\n" + + " resultList.add(result); \\r\\n" + + "\\t $inputParam.setResult(resultList); \\r\\n" + + " end\\r\\n"; + + public static final int DEFAULT_TYPE = 1; + + //拼装规则执行的content + public static String fitRuleContent(String code, Integer salience, String rule, Integer type, Integer score, Map contentMap) { + String content = ""; + if (salience == null || salience < 0) { + salience = 0; + } + if (type == null) { + type = DEFAULT_TYPE; + } + content += RULE_FILE_HEAD + + RULE_NAME_PREFIX + code + + RULE_SALIENCE_PREFIX + salience + + RULE_CONDITION_PREFIX + + CONDITION_DETAIL_PREFIX + rule + + CONDITION_DETAIL_SUFFIX + + RULE_DISPOSE_PREFIX + + DISPOSE_PREFIX + type + + DISPOSE_INFIX + code+ + DISPOSE_SUFFIX; + if (score!=null){ + content += SCORE_PREFIX+score+SCORE_SUFFIX; + } + + if (contentMap!=null&&!contentMap.isEmpty()){ + for (String s : contentMap.keySet()) { + content+="\\t\\t map.put(\""+s+"\",\""+contentMap.get(s)+"\");\\n"; + } + + } + content += RULE_END; + + return content; + } + +// public static void main(String[] args) { +// String versionCode = "rule1"; +// Integer salience = null; +// String rule = "age>10"; +// Integer type = null; +// Integer score = 10; +// Map contentMap = new HashMap<>(); +// contentMap.put("a","a"); +// contentMap.put("b","b"); +// contentMap.put("c","c"); +// String s = fitContent(versionCode, salience, rule, type, score,contentMap); +// System.out.println(s); +// } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleInfoController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleInfoController.java new file mode 100644 index 0000000..e066cae --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleInfoController.java @@ -0,0 +1,265 @@ +package com.risk.riskmanage.rule.controller; + +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.model.requestParam.UpdateStatusParam; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.knowledge.model.response.UploadResponse; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.rule.model.request.RuleListParamV2; +import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam; +import com.risk.riskmanage.rule.model.vo.RuleVo; +import com.risk.riskmanage.rule.service.RuleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; + + +@Controller("ruleControllerV3") +@RequestMapping("v3/rule") +public class RuleInfoController { + + @Autowired + private RuleService ruleService; + + + /** + * @api {POST} /v3/rule/getRuleInfo/{id} 3.19. V3获取rule信息 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Long} id : 规则id + * @apiSuccess {String} status 状态:1成功,0失败 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-07T05:12:52.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":16,"fieldId":10000,"fieldValue":"test01","ruleId":666},{"id":17,"fieldId":10000,"fieldValue":"test02","ruleId":666}]}} + */ + @ResponseBody + @RequestMapping(value = "getRuleInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getRuleInfo(@PathVariable Long id) { + if (id == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + RuleVo ruleVo = ruleService.queryById(id,2); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo); + return ruleResponseEntityDto; + } + + + /** + * @api {POST} /v3/rule/getRuleList 3.20. V3规则 列表 list + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Integer} [pageNum] 第几页,有默认值1 + * @apiParam {Integer} [pageSize] 每页的数量,有默认值10 + * @apiParam {object} [ruleInfo] 查询条件rule对象(不加查询条件则返回全部,以下参数未此对象的字段) + * @apiParam (ruleInfo) {Long} [id] rule的id + * @apiParam (ruleInfo) {String} [name] rule的名字 + * @apiParam (ruleInfo) {String} [versionCode] rule的代码 + * @apiParam (ruleInfo) {String} [description] rule的描述信息 + * @apiParam (ruleInfo) {Integer} [priority] 优先级 + * @apiParam (ruleInfo) {String} [parentId] 父节点id(文件夹id) + * @apiParam (ruleInfo) {Integer} [priority] 优先级 + * @apiParam (ruleInfo) {Long} [author] 用户id + * @apiParam (ruleInfo) {Long} [userId] 用户id + * @apiParam (ruleInfo) {Long} [organId] 组织id + * @apiParam (ruleInfo) {Integer} [engineId] 引擎id(原表内容未用到) + * @apiParam (ruleInfo) {Integer} [status] 状态id(0 :停用 ,1 : 启用,-1:删除) + * @apiParam (ruleInfo) {Integer} [type] 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则) + * @apiParam (ruleInfo) {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是 + * @apiParam (ruleInfo) {String} [content] 规则执行内容 + * @apiParam (ruleInfo) {Integer} [ruleType] 规则类型(0硬性拒绝规则,1加减分规则) + * @apiParam (ruleInfo) {Integer} [ruleAudit] 规则审核(2 终止,5 继续) + * @apiParam (ruleInfo) {Integer} [score] 规则得分 + * @apiParam (ruleInfo) {String} [lastLogical] 最后逻辑(原表内容未用到) + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"pageNum":1,"pageSize":10,"ruleInfo":{"id":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-06T09:07:27.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":""}} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-07T05:12:52.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},{"id":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},{"id":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":16,"fieldId":10000,"fieldValue":"test01","ruleId":666},{"id":17,"fieldId":10000,"fieldValue":"test02","ruleId":666}]}} + */ + @ResponseBody + @RequestMapping(value = "getRuleList", method = RequestMethod.POST) + public ResponseEntityDto getRuleList(@RequestBody RuleListParamV2 ruleListParam) { + PageInfo pageInfo = ruleService.queryByEntity(ruleListParam); + HashMap responseMap = new HashMap<>(); + responseMap.put("pageInfo", pageInfo); + responseMap.put("klist", pageInfo.getList()); + pageInfo.setList(null); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap); + return ruleResponseEntityDto; + } + + /** + * @api {POST} /v3/rule/addRule 3.21. V3添加规则 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {String} name rule的名字 + * @apiParam {String} versionCode rule的代码 + * @apiParam {String} description rule的描述信息 + * @apiParam {Integer} priority 优先级 + * @apiParam {String} parentId 父节点id(文件夹id) + * @apiParam {Integer} [status] 状态id(0 :停用 ,1 : 启用,-1:删除)默认启用 + * @apiParam {Integer} [type] 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则)默认组织规则 + * @apiParam {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是 + * @apiParam {String} [content] 规则执行内容 + * @apiParam {Integer} ruleType 规则类型(0硬性拒绝规则,1加减分规则) + * @apiParam {Integer} [ruleAudit] 规则审核(2 终止,5 继续)根据ruleType推定拒绝规则为终止 + * @apiParam {Integer} [score] 规则得分 + * @apiParam {String} [lastLogical] 最后逻辑(原表内容未用到) + * @apiParam {object} [ruleConditionVo] 规则对应的一颗规则条件的树形对象 + * @apiParam (ruleConditionVo) {String} logical 逻辑符号&&、||(仅关系表达式) + * @apiParam (ruleConditionVo) {Long} fieldId 字段id(仅条件表达式) + * @apiParam (ruleConditionVo) {String} operator 操作符(仅条件表达式) + * @apiParam (ruleConditionVo) {String} fieldValue 字段值(仅条件表达式) + * @apiParam (ruleConditionVo) {Integer} conditionType 条件类型1.关系表达式,2.条件表达式 + * @apiParam (ruleConditionVo) {List} [children] 子对象列表,和所属对象相同 + * @apiParam {List} [ruleContentInfoList] 同一规则下的content对象list + * @apiParam (ruleContentInfoList) {Long} [fieldId] 字段id + * @apiParam (ruleContentInfoList) {String} [fieldValue] 字段值 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"name":"2021_4_6测试接口02","versionCode":"test2021_4_7","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"status":1,"type":1,"isNon":null,"content":"test","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"logical":"&&","conditionType":"1","children":[{"fieldId":"0","operator":">","fieldValue":"10","conditionType":"1"},{"fieldId":"0","operator":"<","fieldValue":"100","conditionType":"1"}]},"ruleContentInfoList":[{"fieldId":"10000","fieldValue":"test1"},{"fieldId":"10000","fieldValue":"test2"}]} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":668,"name":"2021_4_6测试接口02","versionCode":"test2021_4_7","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":null,"updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":17,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":668,"parentId":0,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":18,"logical":null,"fieldId":null,"operator":">","fieldValue":"10","ruleId":668,"parentId":17,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":19,"logical":null,"fieldId":null,"operator":"<","fieldValue":"100","ruleId":668,"parentId":17,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":18,"fieldId":10000,"fieldValue":"test1","ruleId":668},{"id":19,"fieldId":10000,"fieldValue":"test2","ruleId":668}]}} + */ + @ResponseBody + @RequestMapping(value = "addRule", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_RULE) + public ResponseEntityDto addRule(@RequestBody RuleVo ruleVo) { + RuleVo insert = ruleService.insertRuleInfo(ruleVo); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert); + return ruleResponseEntityDto; + } + + /** + * @api {POST} /v3/rule/updateRule 3.22. V3修改规则 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {Long} id rule的id + * @apiParam {String} name rule的名字 + * @apiParam {String} versionCode rule的代码 + * @apiParam {String} description rule的描述信息 + * @apiParam {Integer} priority 优先级 + * @apiParam {String} parentId 父节点id(文件夹id) + * @apiParam {Long} author 用户id + * @apiParam {Long} userId 用户id + * @apiParam {Long} organId 组织id + * @apiParam {Integer} [engineId] 引擎id(原表内容未用到) + * @apiParam {Integer} status 状态id(0 :停用 ,1 : 启用,-1:删除) + * @apiParam {Integer} type 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则) + * @apiParam {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是 + * @apiParam {String} [content] 规则执行内容 + * @apiParam {Integer} ruleType 规则类型(0硬性拒绝规则,1加减分规则) + * @apiParam {Integer} [ruleAudit] 规则审核(2 终止,5 继续)根据ruleType推定拒绝规则为终止 + * @apiParam {Integer} [score] 规则得分 + * @apiParam {String} [lastLogical] 最后逻辑(原表内容未用到) + * @apiParam {object} [ruleConditionVo] 规则对应的一颗规则条件的树形对象 + * @apiParam (ruleConditionVo) {Long} [id] 条件id + * @apiParam (ruleConditionVo) {String} logical 逻辑符号&&、||(仅关系表达式) + * @apiParam (ruleConditionVo) {Long} fieldId 字段id(仅条件表达式) + * @apiParam (ruleConditionVo) {String} operator 操作符(仅条件表达式) + * @apiParam (ruleConditionVo) {String} fieldValue 字段值(仅条件表达式) + * @apiParam (ruleConditionVo) {Long} [ruleId] 规则id + * @apiParam (ruleConditionVo) {Long} [parentId] 条件父节点id + * @apiParam (ruleConditionVo) {Integer} conditionType 条件类型1.关系表达式,2.条件表达式 + * @apiParam (ruleConditionVo) {List} [children] 子对象列表,和所属对象相同 + * @apiParam {List} [ruleContentInfoList] 同一规则下的content对象list + * @apiParam (ruleContentInfoList) {Long} [id] content主键id + * @apiParam (ruleContentInfoList) {Long} fieldId 字段id + * @apiParam (ruleContentInfoList) {String} fieldValue 字段值 + * @apiParam (ruleContentInfoList) {Long} [ruleId] 规则id + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":667,"name":"2021_4_7测试接口","versionCode":"test2021_4_7第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":5,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":6,"logical":null,"fieldId":0,"operator":">","fieldValue":"1000","ruleId":666,"parentId":5,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":7,"logical":null,"fieldId":0,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":5,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":10,"fieldId":"10000","fieldValue":"test01","ruleId":666},{"id":11,"fieldId":"10000","fieldValue":"test02","ruleId":666}]} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":667,"name":"2021_4_7测试接口","versionCode":"test2021_4_7第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"id":20,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":667,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"id":21,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":667,"parentId":20,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"id":22,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":667,"parentId":20,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"id":20,"fieldId":10000,"fieldValue":"test01","ruleId":667},{"id":21,"fieldId":10000,"fieldValue":"test02","ruleId":667}]}} + */ + @ResponseBody + @RequestMapping(value = "updateRule", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_RULE) + public ResponseEntityDto updateRule(@RequestBody RuleVo rule) { + RuleVo update = ruleService.updateRuleInfo(rule); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update); + return ruleResponseEntityDto; + } + + /** + * @api {POST} /v3/rule/updateRuleStatus 3.23. V3修改状态 + * @apiGroup knowledge + * @apiVersion 2.0.0 + * @apiParam {LongArray} ids 规则id数组 + * @apiParam {Integer} status 目标状态:0未启用,1启用,2删除 + * @apiSuccess {String} status 状态:1成功,0失败 + * @apiParamExample {json} 请求示例: + * {"ids":[666,667],"status":"1"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":true} + */ + @ResponseBody + @RequestMapping(value = "updateRuleStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_STATUS) + public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) { + UpdateStatusParam.checkParam(param); + boolean updateResult = ruleService.updateStatus(param.getList(), param.getStatus()); + if (updateResult) { + return ResponseEntityBuilder.buildNormalResponse(updateResult); + } else { + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR); + } + + } + + @ResponseBody + @RequestMapping(value = "updateRuleParent", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_STATUS) + public ResponseEntityDto updateParent(@RequestBody UpdateFolderParam param) { + UpdateFolderParam.checkNotNull(param); + boolean updateResult = ruleService.updateParent(param.getIds(), param.getFolderId()); + if (updateResult) { + return ResponseEntityBuilder.buildNormalResponse(updateResult); + } else { + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR); + } + } + + // 查询简单规则 + @ResponseBody + @RequestMapping(value = "getSimpleRule/{id}", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SELECT_SAMPLE_RULE) + public ResponseEntityDto getSimpleRule(@PathVariable Long id) { + if (id == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + RuleVo ruleVo = ruleService.queryById(id,1); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo); + return ruleResponseEntityDto; + } + @ResponseBody + @RequestMapping(value = "upload", method = RequestMethod.POST) + public ResponseEntityDto upload(HttpServletRequest request)throws Exception{ + CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); + if (!multipartResolver.isMultipart(request)) { + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.RULE_UPLOAD_ERROR); + } + UploadResponse upload = ruleService.upload(request); + return ResponseEntityBuilder.buildNormalResponse(upload); + } + @ResponseBody + @RequestMapping(value = "getScriptRule/{id}", method = RequestMethod.POST) + public ResponseEntityDto getScriptRule(@PathVariable Long id) { + if (id == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + RuleVo ruleVo = ruleService.queryById(id,3); + ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo); + return ruleResponseEntityDto; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleVersionController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleVersionController.java new file mode 100644 index 0000000..44a5bc8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/controller/RuleVersionController.java @@ -0,0 +1,90 @@ +package com.risk.riskmanage.rule.controller; + +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.model.requestParam.StatusParam; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.rule.model.vo.RuleVersionVo; +import com.risk.riskmanage.rule.service.RuleVersionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Controller +@ResponseBody +@RequestMapping("/v3/ruleVersion") +public class RuleVersionController { + + @Autowired + private RuleVersionService versionService; + /** + * 查询指定版本下的内容 + * @param versionId + * @return + */ + @PostMapping("/getRuleVersionInfo/{versionId}") + public ResponseEntityDto getRuleVersionInfo(@PathVariable Long versionId) { + RuleVersionVo version =versionService.queryById(versionId); + return ResponseEntityBuilder.buildNormalResponse(version); + } + + /** + * 新增一个版本 + * @param version + * @return + */ + @PostMapping("/addRuleVersion") + @ArchivesLog(operationType = OpTypeConst.SAVE_RULE_VERSION) + public ResponseEntityDto addRuleVersion(@RequestBody RuleVersionVo version){ + boolean b = versionService.addVersion(version); + if (!b){ + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION); + } + List< RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId()); + return ResponseEntityBuilder.buildNormalResponse(ruleVersionList); + } + + /** + * 复制版本 + * @param version + * @return + */ + @PostMapping("/copyRuleVersion") + @ArchivesLog(operationType = OpTypeConst.COPY_RULE_VERSION) + public ResponseEntityDto copyRuleVersion(@RequestBody RuleVersionVo version){ + boolean b = versionService.copyVersion(version); + List< RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId()); + return ResponseEntityBuilder.buildNormalResponse(ruleVersionList); + } + + /** + * 修改版本 + * @param version + * @return + */ + @PostMapping("/updateRuleVersion") + @ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_VERSION) + public ResponseEntityDto updateRuleVersion(@RequestBody RuleVersionVo version){ + boolean b = versionService.updateVersion(version); + List ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId()); + return ResponseEntityBuilder.buildNormalResponse(ruleVersionList); + } + + /** + * 修改状态 + * @param statusParam + * @return + */ + @RequestMapping(value = "/updateRuleVersionStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_VERSION_STATUS) + public ResponseEntityDto updateStatus(@RequestBody StatusParam statusParam) { + versionService.updateStatus(statusParam); + List ruleVersionList = versionService.queryVersionListByRuleId(statusParam.getTacticsId()); + return ResponseEntityBuilder.buildNormalResponse(ruleVersionList); + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleConditionInfoMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleConditionInfoMapper.java new file mode 100644 index 0000000..8627b4e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleConditionInfoMapper.java @@ -0,0 +1,15 @@ +package com.risk.riskmanage.rule.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.rule.model.RuleConditionInfo; +import org.apache.ibatis.annotations.Mapper; + +/** + * (RuleConditionInfo)表数据库访问层 + */ +@Mapper +public interface RuleConditionInfoMapper extends BaseMapper { + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleFieldInfoMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleFieldInfoMapper.java new file mode 100644 index 0000000..7328f05 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleFieldInfoMapper.java @@ -0,0 +1,9 @@ +package com.risk.riskmanage.rule.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.rule.model.RuleFieldInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RuleFieldInfoMapper extends BaseMapper { +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleInfoMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleInfoMapper.java new file mode 100644 index 0000000..a6a12ee --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleInfoMapper.java @@ -0,0 +1,26 @@ +package com.risk.riskmanage.rule.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.rule.model.RuleInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * Rule表数据库访问层 + */ +@Mapper +public interface RuleInfoMapper extends BaseMapper { + + RuleInfo queryById(Integer id); + + List queryRuleList(RuleInfo ruleInfo); + + int updateStatus(@Param(value = "ids") Long[] ids, @Param(value = "status") Integer status); + + int updateParent(@Param(value = "ids") Long[] ids,@Param(value = "parentId") Long parentId); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleLoopGroupActionMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleLoopGroupActionMapper.java new file mode 100644 index 0000000..a075fa8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleLoopGroupActionMapper.java @@ -0,0 +1,17 @@ +package com.risk.riskmanage.rule.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.rule.model.RuleLoopGroupAction; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * (RuleLoopGroupAction)表数据库访问层 + */ +public interface RuleLoopGroupActionMapper extends BaseMapper { + + + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleVersionMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleVersionMapper.java new file mode 100644 index 0000000..81a459d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/mapper/RuleVersionMapper.java @@ -0,0 +1,10 @@ +package com.risk.riskmanage.rule.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.rule.model.RuleVersion; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RuleVersionMapper extends BaseMapper { +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleConditionInfo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleConditionInfo.java new file mode 100644 index 0000000..c245842 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleConditionInfo.java @@ -0,0 +1,77 @@ +package com.risk.riskmanage.rule.model; + +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.risk.riskmanage.rule.model.vo.RuleConditionVo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.ArrayList; +import java.util.Date; +import java.io.Serializable; +import java.util.List; + +/** + * 规则条件表(t_rule_condition)实体类 + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +@TableName("`t_rule_condition`") +public class RuleConditionInfo + implements Serializable { + private static final long serialVersionUID = -55937038829167862L; + + @TableId(type = IdType.AUTO) + private Long id;//主键ID + + private String logical;//关系节点的逻辑符号:&&(并关系),||(或关系) + + private Long fieldId;//表达式节点对应的字段id + + private String fieldEn;//字段的en或者json类型的key + private Integer fieldType;//字段的类型:1中间变量 2 入参 + + private String operator;//表达式节点的操作符 + + private Integer variableType;//变量类型 + + private String fieldValue;//表达式节点对应字段的限定值 + + private String executionLogic;//表达式执行逻辑 + + private Long ruleId;//规则表的id + + private Long versionId;//规则版本的id + + private Long parentId;//父节点的id + + private Integer conditionType;//规则节点的类型:1-关系节点,2-表达式节点 + + private Date createTime;//创建时间 + + private Date updateTime;//修改时间 + + @TableField(exist = false) + private String insertTempId;//插入时临时id + + @TableField(exist = false) + private String TempParentId;//插入时临时父id + + @TableField(exist = false) + private Integer valueType;//字段值类型 + + @TableField(exist = false) + private List loopGroupActions = new ArrayList<>();//循环组对应的条件 + + @TableField(exist = false) + private RuleConditionVo loopResultCondition;//for对应的结果条件的计算条件树 + @TableField(exist = false) + private RuleConditionVo condGroupResultCondition;//条件组对应的结果计算条件树 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleFieldInfo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleFieldInfo.java new file mode 100644 index 0000000..c380f82 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleFieldInfo.java @@ -0,0 +1,38 @@ +package com.risk.riskmanage.rule.model; + +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@TableName("t_rule_field") +public class RuleFieldInfo implements Serializable { + private static final long serialVersionUID = -132321133324148507L; + @TableId(type = IdType.AUTO) + private Long id; + + private String logical;//逻辑运算符 + + private String operator;//运算符 + + private String fieldValue;//字段值 + + private Long ruleId;//关联的规则的id + + private String fieldId;//关联的字段的id + @TableField(exist = false) + private String fieldEn;//关联的字段的英文名称 + @TableField(exist = false) + private String field;//字段内容 + @TableField(exist = false) + private Integer valueType;//关联的字段的值类型 + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleInfo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleInfo.java new file mode 100644 index 0000000..b347a52 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleInfo.java @@ -0,0 +1,81 @@ +package com.risk.riskmanage.rule.model; + +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.risk.riskmanage.rule.model.vo.RuleVersionVo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.beans.BeanUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.io.Serializable; +import java.util.List; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +@TableName("t_rule") +public class RuleInfo implements Serializable { + private static final long serialVersionUID = -13354133324148507L; + @TableId(type = IdType.AUTO) + private Long id;//主键 + + private String name;//规则名称 + + private String code;//规则代码 + + private String description;//规则描述 + + private Integer priority;//规则优先级 + + private Long parentId;//父节点id + + private Long author;//创建人id + + private Long userId;//修改人id + + private Long organId;//组织id + + private Integer engineId; + + private Integer status;//状态 0 :停用 ,1 : 启用,-1:删除 + + private Integer type;//规则类型 0 : 系统的规则 1:组织的规则 2: 引擎的规则 + + private Integer isNon;//逻辑关系“非”,0:否 ,1:是 + + private String content;//规则具体内容 + + private Date created; + + private Date updated; + + private Integer ruleType;//0硬性拒绝规则1加减分规则 + + private Integer ruleAudit; + + private Integer score;//得分 + + private String lastLogical;//逻辑关系符 + + private Integer difficulty;//规则难度:1-简单规则,2复杂规则 + + private String scriptType;//脚本类型python,js,groovy + + private String resultFieldEn;//存放是否命中的字段 + + private String scoreFieldEn;//存放得分的字段en + @TableField(exist = false) + private String authorName;//创建人名称,需要去其他表查询 + @TableField(exist = false) + private List parentIds; + @TableField(exist = false) + private List ruleVersionList; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleLoopGroupAction.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleLoopGroupAction.java new file mode 100644 index 0000000..9ff31b5 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleLoopGroupAction.java @@ -0,0 +1,58 @@ +package com.risk.riskmanage.rule.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.io.Serializable; + +/** + * (RuleLoopGroupAction)实体类 + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +@TableName("t_rule_loop_group_action") +public class RuleLoopGroupAction implements Serializable { + private static final long serialVersionUID = -47370055295043749L; + /** + * 循环组动作表主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + /** + * 对应条件表中for的id + */ + private Long conditionForId; + /** + * 对应条件表中条件id + */ + private Long conditionGroupId; + /** + * 动作类型 1-求和,2-赋值,3-输出输出变量,4-输出常量 + */ + private Integer actionType; + /** + * 动作的key + */ + private String actionKey; + /** + * 动作的value + */ + private String actionValue; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleVersion.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleVersion.java new file mode 100644 index 0000000..1003ae2 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/RuleVersion.java @@ -0,0 +1,78 @@ +package com.risk.riskmanage.rule.model; + +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@TableName("`t_rule_version`") +public class RuleVersion implements Serializable { + private static final long serialVersionUID = -1850194333747447612L; + /** + * 规则版本主键id + */ + @TableId( type = IdType.AUTO) + private Long id; + /** + * 规则id + */ + private Long ruleId; + /** + * 规则版本号 + */ + private String versionCode; + /** + * 描述信息 + */ + private String description; + /** + * 状态:-1 删除 0停用 1启用 + */ + private Integer status; + /** + * 规则结果en(命中情况) + */ + private String resultFieldEn; + /** + * 规则得分 + */ + private Integer score; + /** + * 规则得分的en + */ + private String scoreFieldEn; + /** + * 组织id + */ + private Long organId; + /** + * 创建者id + */ + private Long createUserId; + /** + * 修改者id + */ + private Long updateUserId; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 快照信息 + */ + private String snapshot; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/param/RuleSetNodeResultParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/param/RuleSetNodeResultParam.java new file mode 100644 index 0000000..a2426a4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/param/RuleSetNodeResultParam.java @@ -0,0 +1,18 @@ +package com.risk.riskmanage.rule.model.param; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RuleSetNodeResultParam { + private Long id;//规则的id + private Integer difficulty;//标识:1基础规则,2复杂规则,3脚本规则 + private Long versionId;//版本id + private String resultEn; + private String scoreEn; + private String code; + private String name; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleListParamV2.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleListParamV2.java new file mode 100644 index 0000000..e7f8898 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleListParamV2.java @@ -0,0 +1,23 @@ +package com.risk.riskmanage.rule.model.request; + +import com.risk.riskmanage.rule.model.RuleInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class RuleListParamV2 { + protected Integer pageNum = 1; // 第几页 + protected Integer pageSize = 10; // 每页的数量 + + +// protected Boolean search = false; // 是否搜索 + + protected RuleInfo ruleInfo;//查询实体对象 + +// protected Integer parentId = 0; // 文件夹的id +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleUpdateStatusParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleUpdateStatusParam.java new file mode 100644 index 0000000..1e242a4 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/request/RuleUpdateStatusParam.java @@ -0,0 +1,16 @@ +package com.risk.riskmanage.rule.model.request; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors +public class RuleUpdateStatusParam { + private String ids;//id + private Integer status;//状态 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleConditionVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleConditionVo.java new file mode 100644 index 0000000..548f5d6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleConditionVo.java @@ -0,0 +1,19 @@ +package com.risk.riskmanage.rule.model.vo; + +import com.risk.riskmanage.rule.model.RuleConditionInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + + + +import java.util.List; +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +public class RuleConditionVo extends RuleConditionInfo { + + private List children;//规则子节点 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVersionVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVersionVo.java new file mode 100644 index 0000000..b8a9687 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVersionVo.java @@ -0,0 +1,21 @@ +package com.risk.riskmanage.rule.model.vo; + + +import com.risk.riskmanage.rule.model.RuleVersion; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RuleVersionVo extends RuleVersion { + private RuleConditionVo ruleConditionVo;//规则对应的结点树 + + private List tacticsOutputList;//输出字段 + + private List failOutputList;//失败输出字段 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVo.java new file mode 100644 index 0000000..3271f29 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/model/vo/RuleVo.java @@ -0,0 +1,29 @@ +package com.risk.riskmanage.rule.model.vo; + + + + +import com.risk.riskmanage.rule.model.RuleFieldInfo; +import com.risk.riskmanage.rule.model.RuleInfo; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors +public class RuleVo extends RuleInfo { + + private RuleConditionVo ruleConditionVo;//规则对应的结点树 + + private List ruleFieldList;//简单规则条件列表 + + private List tacticsOutputList;//输出字段 + + private List ruleVersionList;//规则版本列表 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleConditionService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleConditionService.java new file mode 100644 index 0000000..f647865 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleConditionService.java @@ -0,0 +1,38 @@ +package com.risk.riskmanage.rule.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.risk.riskmanage.rule.model.RuleConditionInfo; +import com.risk.riskmanage.rule.model.vo.RuleConditionVo; + +import java.util.List; + +/** + * (RuleConditionInfo)表服务接口 + */ +public interface RuleConditionService extends IService { + + + /** + * 根据ruleId查询装配好返回 + * @param versionId 规则版本id + * @return 对象列表 + */ + RuleConditionVo queryByVersionId(Long versionId); + + /** + * 新增数据 + * @param ruleConditionVo 实例对象 + * @return 实例对象 + */ + RuleConditionVo insertRuleCondition(RuleConditionVo ruleConditionVo,Long ruleId); + + RuleConditionVo updateRuleCondition(Long ruleId,RuleConditionVo ruleConditionVo); + + boolean deleteRuleCondition(Long ruleId,Long versionId); + + + RuleConditionVo assemble(List list); + + List disassemble(RuleConditionVo vo,Long ruleId,boolean needTempId); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleFieldInfoService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleFieldInfoService.java new file mode 100644 index 0000000..83fc0ed --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleFieldInfoService.java @@ -0,0 +1,21 @@ +package com.risk.riskmanage.rule.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +import com.risk.riskmanage.rule.model.RuleFieldInfo; + +import com.risk.riskmanage.rule.model.vo.RuleVo; + +import java.util.List; + +public interface RuleFieldInfoService extends IService { + List queryByRuleId(Long ruleId); + + boolean insertRuleField(List list,Long ruleId); + + boolean updateRuleField(List list,Long ruleId); + + boolean deleteRuleField(Long ruleId); + + public String assemblyRuleContent(RuleVo rule, List fieldInfoList); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleLoopGroupActionService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleLoopGroupActionService.java new file mode 100644 index 0000000..e995ab7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleLoopGroupActionService.java @@ -0,0 +1,18 @@ +package com.risk.riskmanage.rule.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.risk.riskmanage.rule.mapper.RuleLoopGroupActionMapper; +import com.risk.riskmanage.rule.model.RuleLoopGroupAction; + +import java.util.List; + +/** + * (RuleLoopGroupAction)表服务接口 + */ +public interface RuleLoopGroupActionService extends IService { + + List getRuleLoopList(Long forId,Long conditionId); + + boolean addLoopGroupList(Long forId,Long conditionId, List loopGroupActions); + boolean deleteLoopGroupByForId(Long forId); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleService.java new file mode 100644 index 0000000..723d169 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleService.java @@ -0,0 +1,54 @@ +package com.risk.riskmanage.rule.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; + +import com.risk.riskmanage.knowledge.model.response.UploadResponse; +import com.risk.riskmanage.rule.model.RuleInfo; +import com.risk.riskmanage.rule.model.request.RuleListParamV2; +import com.risk.riskmanage.rule.model.vo.RuleVo; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + + +public interface RuleService extends IService { + + /** + * 通过ID查询单条数据 + * @param id 主键 + * @return 实例对象 + */ + RuleVo queryById(Long id,Integer difficulty); + + /** + * 根据实体类条件查询 + * @param ruleListParam + * @return + */ + public PageInfo queryByEntity(RuleListParamV2 ruleListParam); + + + /** + * 新增数据 + * @param rule 实例对象 + * @return 实例对象 + */ + RuleVo insertRuleInfo(RuleVo rule); + + /** + * 修改数据 + * @param rule 实例对象 + * @return 实例对象 + */ + RuleVo updateRuleInfo(RuleVo rule); + + + boolean updateStatus(List ids,Integer status); + + boolean updateParent(List ids,Long parentId); + + UploadResponse upload(HttpServletRequest request) throws Exception; + + List queryFieldEnByRuleId(Long ruleId); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleVersionService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleVersionService.java new file mode 100644 index 0000000..9ac79f0 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/RuleVersionService.java @@ -0,0 +1,27 @@ +package com.risk.riskmanage.rule.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.risk.riskmanage.common.model.requestParam.StatusParam; +import com.risk.riskmanage.rule.model.RuleVersion; +import com.risk.riskmanage.rule.model.vo.RuleVersionVo; + +import java.util.List; + +public interface RuleVersionService extends IService { + RuleVersionVo queryById(Long id); + + List queryVersionListByRuleId(Long RuleId); + + + + List queryFieldEnByVersionId(Long versionId); + + int addVersionList(List versionList); + boolean addVersion(RuleVersionVo version); + + boolean copyVersion(RuleVersionVo version); + + boolean updateVersion(RuleVersionVo version); + + boolean updateStatus(StatusParam statusParam); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleConditionServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleConditionServiceImpl.java new file mode 100644 index 0000000..b0c8bad --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleConditionServiceImpl.java @@ -0,0 +1,342 @@ +package com.risk.riskmanage.rule.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.risk.riskmanage.rule.consts.RuleConditionConst; +import com.risk.riskmanage.rule.mapper.RuleConditionInfoMapper; +import com.risk.riskmanage.rule.model.RuleConditionInfo; + + +import com.risk.riskmanage.rule.model.RuleLoopGroupAction; +import com.risk.riskmanage.rule.model.vo.RuleConditionVo; +import com.risk.riskmanage.rule.service.RuleConditionService; +import com.risk.riskmanage.rule.service.RuleLoopGroupActionService; +import org.springframework.beans.BeanUtils; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * (RuleConditionInfo)表服务实现类 + */ +@Service("ruleConditionService2") +public class RuleConditionServiceImpl extends ServiceImpl implements RuleConditionService { + @Resource + private RuleConditionInfoMapper ruleConditionInfoMapper; + + @Resource + private RuleLoopGroupActionService loopGroupActionService; + + /** + * 查询整个规则的节点并且装配成树 + * + * @param versionId 规则版本id + * @return + */ + @Override + public RuleConditionVo queryByVersionId(Long versionId) { + if (versionId == null) { + return null; + } + //构造查询条件,查询条件列表 + RuleConditionVo result = null; + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RuleConditionInfo::getVersionId,versionId); + List ruleConditionInfoList = ruleConditionInfoMapper.selectList(queryWrapper); + //组装为需要的树形结构 + if (ruleConditionInfoList != null) { + result = this.assemble(ruleConditionInfoList); + } + return result; + } + + + /** + * 新增数据 + * + * @param ruleConditionVo 实例对象 + * @return 实例对象 + */ + @Override + @Transactional + public RuleConditionVo insertRuleCondition(RuleConditionVo ruleConditionVo, Long ruleId) { + if (ruleConditionVo == null || ruleId == null) { + return null; + } + Long versionId = ruleConditionVo.getVersionId(); + if (versionId==null){ + versionId=0L; + } + Long parentId = RuleConditionConst.DEFAULT_CONDITION_PARENT_ID; + //将插入的条件树拆解 + List list = this.disassemble(ruleConditionVo, ruleId, true); + for (RuleConditionInfo info : list) { + info.setVersionId(versionId); + } + //找出唯一根节点 + RuleConditionInfo root = null; + for (RuleConditionInfo info : list) { + if (info.getParentId() == parentId) { + root = info; + break; + } + } + //递归插入所有数据 + boolean saveResult = this.save(list, root); + if (!saveResult) { + return null; + } + return null; + } + + /** + * 修改规则条件 + * + * @param ruleConditionVo + * @return + */ + @Override + @Transactional + public RuleConditionVo updateRuleCondition(Long ruleId, RuleConditionVo ruleConditionVo) { + if (ruleId == null) { + return null; + } + //删除一个规则下的所有条件 + boolean delete = this.deleteRuleCondition(ruleId,ruleConditionVo.getVersionId()); + RuleConditionVo ruleCondition = null; + if (!delete) { + ruleCondition = this.queryByVersionId(ruleConditionVo.getVersionId()); + } + //插入条件树 + if ((delete || ruleCondition == null) && ruleConditionVo != null) { + RuleConditionVo insertResult = this.insertRuleCondition(ruleConditionVo, ruleId); + return insertResult; + } + return null; + } + + /** + * 删除根据规则id规则条件 + * + * @param ruleId + * @return + */ + @Override + @Transactional + public boolean deleteRuleCondition(Long ruleId,Long versionId) { + if (ruleId == null) { + return false; + } + //删除循环动作子表中的内容 + RuleConditionInfo info = new RuleConditionInfo(); + if (ruleId!=null){ + info.setRuleId(ruleId); + } + info.setVersionId(versionId); + info.setLogical(RuleConditionConst.LOOP_RULE_LOGICAL); + List ruleConditionInfoList = ruleConditionInfoMapper.selectList(new QueryWrapper<>(info)); + for (RuleConditionInfo ruleConditionInfo : ruleConditionInfoList) { + loopGroupActionService.deleteLoopGroupByForId(ruleConditionInfo.getId()); + } + //删除条件表内容 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(RuleConditionInfo::getVersionId,versionId); + if (ruleId!=null){ + queryWrapper.eq(RuleConditionInfo::getRuleId,ruleId); + } + int delete = ruleConditionInfoMapper.delete(queryWrapper); + return delete > 0 ? true : false; + } + + + //装配方法,将规则条件List装配成一个规则树并返回 + @Override + public RuleConditionVo assemble(List list) { + RuleConditionVo root = null; + //转换为Vo + List rcVoList = transferToVoList(list); + //获取根节点,根节点只有一个的时候进行操作,并且返回拼装好的规则树,否则返回null + List collect = rcVoList.stream().filter(rc -> { + return rc.getParentId() == RuleConditionConst.DEFAULT_CONDITION_PARENT_ID; + }).collect(Collectors.toList()); + if (collect.size() == 1) { + root = collect.get(0); + RuleConditionVo ruleTree = coupling(rcVoList, root); + return ruleTree; + } + return null; + } + + + // 拆解方法,将规则条件Vo转换未规则条件list + @Override + public List disassemble(RuleConditionVo vo, Long ruleId, boolean needTempId) { + if (vo == null) { + return null; + } + if (needTempId) { + vo.setParentId(RuleConditionConst.DEFAULT_CONDITION_PARENT_ID); + vo.setInsertTempId(UUID.randomUUID().toString().replace("-", "")); + } + List voList = decoupling(vo, ruleId, needTempId); + List ruleConditionInfoList = transferToInfoList(voList); + return ruleConditionInfoList; + } + + //存储 + @Transactional + public boolean save(List list, RuleConditionInfo root) { + String tempId = root.getInsertTempId(); + //保存根节点 + int insert = ruleConditionInfoMapper.insert(root); + if (insert <= 0) { + return false; + } + Long id = root.getId(); + for (int i = 0; i < list.size(); i++) { + RuleConditionInfo info = list.get(i); + //保存根节点的子节点 + if (tempId.equals(info.getTempParentId())) { + info.setParentId(id); + //递归保存每个节点和子节点 + save(list, info); + //对有动作的循环条件保存循环动作表内容 + if (root.getLogical()!=null&&RuleConditionConst.LOOP_RULE_LOGICAL.equals(root.getLogical())&&info.getLoopGroupActions()!=null){ + loopGroupActionService.addLoopGroupList(id,info.getId(),info.getLoopGroupActions()); + } + } + } + return true; + } + + //耦合方法:将规则节点列表耦合规则树(),循环规则的子节点需要去查循环表获取 + private RuleConditionVo coupling(List list, RuleConditionVo root) { + List children = new ArrayList<>(); + for (RuleConditionVo rc : list) { + //处理root的子节点 + if (root.getId().equals(rc.getParentId())) { + RuleConditionVo rcVo = coupling(list, rc); + String logical = root.getLogical(); + + if (logical!=null&&!"".equals(logical)){ + switch (logical){ + //当root为for节点,则此子节点需要拼上循环动作 + case RuleConditionConst.LOOP_RULE_LOGICAL: + List loopList = loopGroupActionService.getRuleLoopList(root.getId(),rc.getId()); + rcVo.setLoopGroupActions(loopList); + if (rc.getConditionType()==RuleConditionConst.LOOP_RULE_RESULT_CONDITION){ + root.setLoopResultCondition(rcVo); + continue; + } + break; + //当root为条件组节点,则此子节点需要拼上条件组结果 + case RuleConditionConst.CONDITION_GROUP_LOGICAL: + if (rc.getConditionType()==RuleConditionConst.CONDITION_GROUP_RESULT_CONDITION){ + root.setCondGroupResultCondition(rcVo); + continue; + } + break; + + + + } + + } +// if (root.getLogical() != null && RuleConditionConst.LOOP_RULE_LOGICAL.equals(root.getLogical())) { +// List loopList = loopGroupActionService.getRuleLoopList(root.getId(),rc.getId()); +// rcVo.setLoopGroupActions(loopList); +// if (rc.getConditionType()==RuleConditionConst.LOOP_RULE_RESULT_CONDITION){ +// root.setLoopResultCondition(rcVo); +// continue; +// } +// } + // + children.add(rcVo); + } + } + root.setChildren(children); + return root; + } + + //解耦方法:将规则树解耦为节点列表 + private List decoupling(RuleConditionVo vo, Long ruleId, boolean needTempId) { + List list = new ArrayList<>(); + List children = vo.getChildren(); + + //处理条件树根节点的子条件 + if (children != null && children.size() > 0) { + for (int i = 0; i < children.size(); i++) { + RuleConditionVo child = children.get(i); + if (needTempId) { + child.setInsertTempId(UUID.randomUUID().toString().replace("-", "")); + child.setTempParentId(vo.getInsertTempId()); + } + List childList = decoupling(child, ruleId, needTempId); + list.addAll(childList); + } + } + vo.setRuleId(ruleId); + list.add(vo); + //处理for条件的结果条件 + Integer conditionType = vo.getConditionType(); + if (conditionType!=null){ + switch (conditionType){ + case RuleConditionConst.LOOP_RULE_ROOT: + RuleConditionVo loopResult = vo.getLoopResultCondition(); + loopResult.setRuleId(ruleId); + loopResult.setTempParentId(vo.getInsertTempId()); + loopResult.setInsertTempId(UUID.randomUUID().toString().replace("-", "")); + List loopResultList = decoupling(loopResult, ruleId, needTempId); + list.addAll(loopResultList); + break; + case RuleConditionConst.CONDITION_GROUP_ROOT: + RuleConditionVo condGroupResult = vo.getCondGroupResultCondition(); + condGroupResult.setRuleId(ruleId); + condGroupResult.setTempParentId(vo.getInsertTempId()); + condGroupResult.setInsertTempId(UUID.randomUUID().toString().replace("-", "")); + List condGroupResultList = decoupling(condGroupResult, ruleId, needTempId); + list.addAll(condGroupResultList); + break; + } + } +// if (vo.getConditionType()==RuleConditionConst.LOOP_RULE_ROOT){ +// RuleConditionVo loopResult = vo.getLoopResultCondition(); +// loopResult.setRuleId(ruleId); +// loopResult.setTempParentId(vo.getInsertTempId()); +// loopResult.setInsertTempId(UUID.randomUUID().toString().replace("-", "")); +// List loopResultList = decoupling(loopResult, ruleId, needTempId); +// list.addAll(loopResultList); +// } + return list; + } + + //List转换为List + private List transferToVoList(List list) { + List rcVoList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + RuleConditionVo rcVo = new RuleConditionVo(); + BeanUtils.copyProperties(list.get(i), rcVo); + rcVoList.add(rcVo); + } + return rcVoList; + } + + //List转换为List + private List transferToInfoList(List list) { + List rcList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + RuleConditionInfo rc = new RuleConditionInfo(); + BeanUtils.copyProperties(list.get(i), rc); + rcList.add(rc); + } + return rcList; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleFieldInfoServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleFieldInfoServiceImpl.java new file mode 100644 index 0000000..b4f2ed1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleFieldInfoServiceImpl.java @@ -0,0 +1,368 @@ +package com.risk.riskmanage.rule.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.datamanage.common.ValueType; +import com.risk.riskmanage.rule.mapper.RuleFieldInfoMapper; +import com.risk.riskmanage.rule.model.RuleFieldInfo; +import com.risk.riskmanage.rule.model.vo.RuleVo; +import com.risk.riskmanage.rule.service.RuleFieldInfoService; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class RuleFieldInfoServiceImpl extends ServiceImpl implements RuleFieldInfoService { + @Resource + private RuleFieldInfoMapper ruleFieldInfoMapper; + @Override + public List queryByRuleId(Long ruleId) { + RuleFieldInfo ruleFieldInfo = new RuleFieldInfo(); + ruleFieldInfo.setRuleId(ruleId); + List ruleFieldInfoList = ruleFieldInfoMapper.selectList(new QueryWrapper<>(ruleFieldInfo)); + + return ruleFieldInfoList; + } + + @Override + @Transactional + public boolean insertRuleField(List list, Long ruleId) { + for (RuleFieldInfo ruleFieldInfo : list) { + ruleFieldInfo.setRuleId(ruleId); + } + this.saveBatch(list); + return false; + } + + @Override + @Transactional + public boolean updateRuleField(List list, Long ruleId) { + boolean b = this.deleteRuleField(ruleId); + if (!b){ + List ruleFieldInfoList = this.queryByRuleId(ruleId); + if (ruleFieldInfoList!=null&&ruleFieldInfoList.size()>0){ + throw new ApiException("修改简单规则条件异常","修改简单规则条件异常"); + } + } + for (RuleFieldInfo ruleFieldInfo : list) { + ruleFieldInfo.setRuleId(ruleId); + } + this.saveBatch(list); + return false; + } + + + @Override + @Transactional + public boolean deleteRuleField(Long ruleId) { + RuleFieldInfo ruleFieldInfo = new RuleFieldInfo(); + ruleFieldInfo.setRuleId(ruleId); + return this.remove(new QueryWrapper<>(ruleFieldInfo)); + } + + public String assemblyRuleContent(RuleVo rule, List fieldInfoList) { + if (rule.getRuleType()==null){ + rule.setRuleType(1); + } + List ruleFieldList = fieldInfoList.stream().map(item -> { + item.setFieldEn(item.getFieldId().split("\\|")[1]); + return item; + }).collect(Collectors.toList()); + + String ruleStr = ""; // ( this['age'] > 18 && this['age'] < 80 ) + String functionStr = ""; + + // ((-车损明细名称-==-底大边(右)||-车损明细名称-==-底大边外板(右))&&-车损明细类型-==-1)&&-车型名称-==-吉利全球鹰RX6453B01多用途乘用车 + Map>> map = cycleRuleHandle(ruleFieldList); + String firstLogical = ""; + if(!ruleFieldList.isEmpty()){ + firstLogical = ruleFieldList.get(0).getLogical(); + if(firstLogical.contains("&&")){ + firstLogical = firstLogical.substring(0, firstLogical.indexOf("&&")); + } else if(firstLogical.contains("||")){ + firstLogical = firstLogical.substring(0, firstLogical.indexOf("||")); + } + } + if (!map.isEmpty()) { +// List ruleContents = rule.getRuleContentInfoList(); + List tacticsOutputList = rule.getTacticsOutputList(); + for (String key : map.keySet()) { + List attributeNameSet = tacticsOutputList.stream().map(item -> { + String attributeName = ""; + String fieldValue = item.getFieldValue(); + if(item.getVariableType() == 2 && fieldValue.contains(key + "[")){ + attributeName = fieldValue.substring(fieldValue.indexOf("[") + 1, fieldValue.lastIndexOf("]")); + } + return attributeName; + }).filter(item -> StringUtils.isNotBlank(item)).collect(Collectors.toList()); + + String attributeName = attributeNameSet.size() > 0 ? attributeNameSet.get(0) : ""; + + ruleStr = " " + key + "(this['" + key + "'], $inputParam) "; + functionStr += createDroolsFunction(key, attributeName, map.get(key), firstLogical); + } + } + + for (int i = 0; i < ruleFieldList.size(); i++) { + RuleFieldInfo ruleField = ruleFieldList.get(i); + if (!"-1".equals(ruleField.getLogical())) { + String logical = ruleField.getLogical(); + if (i == 0 && !map.isEmpty()) { + logical = logical.replace(firstLogical, ""); + } + ruleStr = ruleStr + " " + logical; + } + + // 字符、数组型的值需要加引号 + if (ruleField.getValueType() == ValueType.Char.getValue() || ruleField.getValueType() == ValueType.Array.getValue()) { + ruleStr = ruleStr + " this['" + ruleField.getFieldId().split("\\|")[1] + "'] " + + ruleField.getOperator() + " \"" + ruleField.getFieldValue() + "\" "; + } else { + ruleStr = ruleStr + " this['" + ruleField.getFieldId().split("\\|")[1] + "'] " + + ruleField.getOperator() + " " + ruleField.getFieldValue() + " "; + } + } + + if (map.isEmpty()) { + if (StringUtils.isNotBlank(rule.getLastLogical()) && !"-1".equals(rule.getLastLogical())) { + ruleStr = ruleStr + rule.getLastLogical(); + } + } + + String enginerule = "package com.baoying.enginex.executor.drools\\r\\n"; + enginerule += "import java.util.Map;\\r\\n"; + enginerule += "import java.util.List;\\r\\n"; + enginerule += "import java.util.Set;\\r\\n"; + enginerule += "import java.util.HashSet;\\r\\n"; + enginerule += "import java.util.ArrayList;\\r\\n"; + enginerule += "import java.util.HashMap;\r\n"; + enginerule += "import com.baoying.enginex.executor.engineModel.model.InputParam;\\r\\n"; + enginerule += "import com.baoying.enginex.executor.engineModel.model.Result;\\r\\n"; + enginerule += "import com.baoying.enginex.executor.engineModel.model.EngineRule;\\r\\n"; + enginerule += "import com.alibaba.fastjson.JSONObject;\\r\\n"; + enginerule += "rule \"" + rule.getCode() + "\"\\r\\n"; + enginerule += "salience " + rule.getPriority() + "\\r\\n"; + enginerule += "when\\r\\n"; + enginerule += "\\t $inputParam : InputParam();\\r\\n"; + enginerule += "\\t Map(" + ruleStr + ") from $inputParam.inputParam;\\r\\n"; + enginerule += "then\\r\\n"; + enginerule += "\\t List resultList = $inputParam.getResult();\\r\\n"; + enginerule += "\\t Result result = new Result(); \\r\\n"; + enginerule += "\\t result.setResultType(\"" + rule.getRuleType() + "\"); \\r\\n"; + enginerule += "\\t result.setVersionCode(\"" + rule.getCode() + "\"); \\r\\n"; + enginerule += "\\t Map map = new HashMap<>(); \\r\\n"; + + if (rule.getScore() != null) { + enginerule += "\\t map.put(\"score\"," + rule.getScore() + "); \\r\\n"; + } + +// enginerule +=outputparam; + enginerule += "\\t result.setMap(map); \\r\\n"; + enginerule += "\\t resultList.add(result); \\r\\n"; + enginerule += "\\t $inputParam.setResult(resultList); \\r\\n"; + enginerule += "end\\r\\n"; + + enginerule += "\\r\\n" + functionStr; + + return enginerule; + } + + /** + * 循环规则处理 + * + * @param ruleFieldList + * @return + */ + private Map>> cycleRuleHandle(List ruleFieldList) { + List> groupRuleFields = new ArrayList<>(); + List ruleFields = new ArrayList<>(); + // ((-车损明细名称-==-底大边(右)||-车损明细名称-==-底大边外板(右))&&-车损明细类型-==-1)&&-车型名称-==-吉利全球鹰RX6453B01多用途乘用车 + Stack stack = new Stack<>(); + for (RuleFieldInfo ruleField : ruleFieldList) { + String logical = ruleField.getLogical(); + + // 纯括号 + if(!logical.contains("&&") && !logical.contains("||")){ + if(logical.contains("(")){ + for(int i=0; i(ruleFields)); + ruleFields = new ArrayList<>(); + ruleFields.add(ruleField); + } else { + ruleFields.add(ruleField); + } + + if(logical.contains("(")){ + String rightLogical = ""; + if(logical.contains("&&")){ + rightLogical = logical.substring(logical.indexOf("&&") + 1); + } else if(logical.contains("||")){ + rightLogical = logical.substring(logical.indexOf("||") + 1); + } + for(int i=0; i(ruleFields)); + + // map中key为数组名称,value为该数组循环需要满足的多个条件判断单元 + Map>> map = new HashMap<>(); + ruleFieldList.clear(); + for (List ruleFields1 : groupRuleFields) { + RuleFieldInfo ruleField = ruleFields1.get(0); + if (ruleField.getFieldEn().contains("[") && ruleField.getFieldEn().contains("]")) { + String key = ruleField.getFieldEn().substring(0, ruleField.getFieldEn().indexOf("[")); + if (!map.containsKey(key)) { + List> ruleFieldList1 = new ArrayList<>(); + ruleFieldList1.add(ruleFields1); + map.put(key, ruleFieldList1); + } else { + List> ruleFieldList1 = map.get(key); + ruleFieldList1.add(ruleFields1); + } + } else { + // ruleFieldListNew为剔除数组外,剩余的普通字段集合 + ruleFieldList.add(ruleField); + } + } + + return map; + } + + /** + * 拼接drools自定义函数 + * + * @param functionName + * @param groupRuleFields + * @return + */ + private String createDroolsFunction(String functionName, String attributeName, List> groupRuleFields, String groupBracket) { + String[] variableArr = new String[groupRuleFields.size()]; + String[] conditionStrArr = new String[groupRuleFields.size()]; + for (int i = 0; i < groupRuleFields.size(); i++) { + variableArr[i] = "unit" + i; + String condition = ""; + List groupRuleField = groupRuleFields.get(i); + for (int j = 0; j < groupRuleField.size(); j++) { + RuleFieldInfo ruleField = groupRuleField.get(j); + String logical = ruleField.getLogical(); + String fieldEn = ruleField.getFieldEn(); + if (fieldEn.contains("[") && fieldEn.contains("]")) { + fieldEn = fieldEn.substring(fieldEn.indexOf("[") + 1, fieldEn.lastIndexOf("]")); + } + String operator = ruleField.getOperator(); + String fieldValue = ruleField.getFieldValue(); + + if (ruleField.getValueType() == ValueType.Char.getValue()) { + if ("==".equals(operator) || "contains".equals(operator)) { + operator = operator.replace("==", "equals"); + condition += logical + " map.get(\"" + fieldEn + "\").toString()." + operator + "(\"" + fieldValue + "\") "; + } else if ("!=".equals(operator) || "not contains".equals(operator) || "notContains".equals(operator)) { + operator = operator.replace("!=", "equals") + .replace("not contains", "contains") + .replace("notContains", "contains"); + condition += logical + " !map.get(\"" + fieldEn + "\").toString()." + operator + "(\"" + fieldValue + "\") "; + } + } else { + condition += logical + " Integer.valueOf(map.get(\"" + fieldEn + "\").toString()) " + operator + " " + fieldValue + " "; + } + } + condition += groupBracket; + + String setStr = ""; + if(StringUtils.isNotBlank(attributeName)){ + setStr = "\\t\\t\\t set.add(" + "map.get(\"" + attributeName + "\").toString()" + ");\\r\\n"; + } + String conditionStr = "\\t\\t if(" + condition + "){\\r\\n" + + "\\t\\t\\t " + variableArr[i] + " ++;\\r\\n" + + setStr + + "\\t\\t }\\r\\n"; + + conditionStrArr[i] = conditionStr; + } + + // 变量定义 + String variableStr = ""; + for (String variable : variableArr) { + variableStr += "\\t int " + variable + " = 0;\\r\\n"; + } + + // for循环内容 + String forContent = ""; + forContent += "\\t Set set = new HashSet();\\r\\n"; + forContent += "\\t for(Object obj : objList){\\r\\n"; + forContent += "\\t\\t Map map = JSONObject.parseObject(JSONObject.toJSONString(obj), Map.class);\\r\\n"; + for (String conditionStr : conditionStrArr) { + forContent += conditionStr; + } + forContent += "\\t }\\r\\n"; + + // 返回结果判断 + String resultJudge = ""; + resultJudge += "\\t if("; + for (int i = 0; i < variableArr.length; i++) { + if (i == 0) { + resultJudge += variableArr[i] + " > 0 "; + } else { + resultJudge += "&& " + variableArr[i] + " > 0 "; + } + } + resultJudge += "){\\r\\n"; + resultJudge += "\\t\\t return true;\\r\\n"; + resultJudge += "\\t }\\r\\n"; + + // 函数内容 + String functionStr = ""; + functionStr += "function Boolean " + functionName + "(List objList, InputParam inputParam){\\r\\n"; + functionStr += "\\t Map> outmap = inputParam.getOutputParam();\\r\\n"; + functionStr += variableStr; + functionStr += forContent; + if(StringUtils.isNotBlank(attributeName)){ + functionStr += "\\t outmap.put(\"" + functionName + "["+ attributeName + "]\", set);\\r\\n"; + } + functionStr += "\\t inputParam.setOutputParam(outmap);\\r\\n"; + functionStr += resultJudge; + functionStr += "\\t return false;\\r\\n"; + functionStr += "}\\r\\n"; + + return functionStr; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleLoopGroupActionServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleLoopGroupActionServiceImpl.java new file mode 100644 index 0000000..b1a4054 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleLoopGroupActionServiceImpl.java @@ -0,0 +1,54 @@ +package com.risk.riskmanage.rule.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.risk.riskmanage.rule.model.RuleLoopGroupAction; +import com.risk.riskmanage.rule.mapper.RuleLoopGroupActionMapper; +import com.risk.riskmanage.rule.service.RuleLoopGroupActionService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * (RuleLoopGroupAction)表服务实现类 + */ +@Service("ruleLoopGroupActionService") +public class RuleLoopGroupActionServiceImpl extends ServiceImpl implements RuleLoopGroupActionService { + @Resource + private RuleLoopGroupActionMapper ruleLoopGroupActionMapper; + + @Override + public List getRuleLoopList(Long forId, Long conditionId) { + RuleLoopGroupAction ruleLoopGroupAction = new RuleLoopGroupAction(); + ruleLoopGroupAction.setConditionForId(forId); + ruleLoopGroupAction.setConditionGroupId(conditionId); + List loopList = ruleLoopGroupActionMapper.selectList(new QueryWrapper<>(ruleLoopGroupAction)); + if (loopList==null){ + loopList = new ArrayList<>(); + } + return loopList; + } + + @Override + public boolean addLoopGroupList(Long forId,Long conditionId, List loopGroupActions) { + for (RuleLoopGroupAction loopGroupAction : loopGroupActions) { + loopGroupAction.setConditionForId(forId); + loopGroupAction.setConditionGroupId(conditionId); + } + boolean add = this.saveBatch(loopGroupActions); + return add; + } + + @Override + public boolean deleteLoopGroupByForId(Long forId) { + if (forId==null){ + return false; + } + RuleLoopGroupAction ruleLoopGroupAction = new RuleLoopGroupAction(); + ruleLoopGroupAction.setConditionForId(forId); + ruleLoopGroupActionMapper.delete(new QueryWrapper<>(ruleLoopGroupAction)); + return true; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleServiceImpl.java new file mode 100644 index 0000000..a83939a --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleServiceImpl.java @@ -0,0 +1,627 @@ +package com.risk.riskmanage.rule.service.impl; + + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.datamanage.mapper.FieldMapper; +import com.risk.riskmanage.datamanage.model.Field; +import com.risk.riskmanage.knowledge.common.consts.Status; +import com.risk.riskmanage.common.utils.ExcelUtil; +import com.risk.riskmanage.knowledge.mapper.RuleMapper; +import com.risk.riskmanage.knowledge.model.KnowledgeTree; +import com.risk.riskmanage.knowledge.model.Rule; +import com.risk.riskmanage.knowledge.model.response.UploadResponse; +import com.risk.riskmanage.knowledge.service.KnowledgeTreeService; +import com.risk.riskmanage.rule.consts.RuleConst; +import com.risk.riskmanage.rule.mapper.RuleInfoMapper; +import com.risk.riskmanage.rule.model.*; +import com.risk.riskmanage.rule.model.request.RuleListParamV2; +import com.risk.riskmanage.rule.model.vo.RuleVersionVo; +import com.risk.riskmanage.rule.model.vo.RuleVo; +import com.risk.riskmanage.rule.service.*; +import com.risk.riskmanage.system.mapper.UserMapper; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.tactics.consts.TacticsType; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import com.risk.riskmanage.tactics.service.TacticsOutputService; +import com.risk.riskmanage.util.SessionManager; +import com.risk.riskmanage.util.StringUtil; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 组织规则维护表(RuleInfo)表服务实现类 + */ +@Service("ruleService2") +public class RuleServiceImpl extends ServiceImpl implements RuleService { + @Resource + private RuleInfoMapper ruleInfoMapper; + + @Autowired + private RuleVersionService versionService; + @Resource + private RuleConditionService ruleConditionService; + @Resource + private RuleFieldInfoService ruleFieldInfoService; + + @Resource + private TacticsOutputService outputService; + + @Resource + private UserMapper userMapper; + + @Resource + private FieldMapper fieldMapper; + @Resource + private RuleMapper ruleMapper; + @Resource + private KnowledgeTreeService knowledgeTreeService; + + @Override + public RuleVo queryById(Long id, Integer difficulty) { + //查询规则 + RuleInfo ruleInfo = ruleInfoMapper.selectById(id); + if (ruleInfo == null) { + return null; + } + RuleVo ruleVo = new RuleVo(); + BeanUtils.copyProperties(ruleInfo, ruleVo); + List tacticsOutputList = new ArrayList<>(); + if (difficulty == null || (difficulty != 1 && difficulty != 2 && difficulty != 3)) { + difficulty = ruleInfo.getDifficulty(); + } + switch (difficulty) { + case 1: + List list = ruleFieldInfoService.queryByRuleId(id); + tacticsOutputList = outputService.queryByTactics(new TacticsOutput(id, TacticsType.BASE_RULE)); + ruleVo.setTacticsOutputList(tacticsOutputList); + ruleVo.setRuleFieldList(list); + break; + case 2: + //查询版本 + List ruleVersionList = versionService.queryVersionListByRuleId(id); + ruleVo.setRuleVersionList(ruleVersionList); + break; + } + return ruleVo; + } + + + @Override + public PageInfo queryByEntity(RuleListParamV2 ruleListParam) { + + RuleInfo query = ruleListParam.getRuleInfo(); + Integer pageNum = ruleListParam.getPageNum(); + Integer pageSize = ruleListParam.getPageSize(); + if (query != null && query.getName() != null && !"".equals(query.getName())) { + query.setName("%" + query.getName() + "%"); + } + if (pageNum > 0 && pageSize > 0) { + PageHelper.startPage(pageNum, pageSize); + } + query.setOrganId(SessionManager.getLoginAccount().getOrganId()); + List ruleInfoList = ruleInfoMapper.queryRuleList(query); + PageInfo pageInfo = new PageInfo(ruleInfoList); + + //TODO 循环查用户表,待优化 + for (RuleInfo info : ruleInfoList) { + if (info != null && info.getAuthor() != null) { + info.setAuthorName(userMapper.findNickNameById(info.getAuthor())); + } + } + return pageInfo; + } + + + @Override + @Transactional + public RuleVo insertRuleInfo(RuleVo vo) { + Integer difficulty = vo.getDifficulty(); + if (difficulty == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + //初始化基本参数 + RuleVo ruleVo = initParam(vo); + //拷贝VO到Info对象 + RuleInfo ruleInfo = new RuleInfo(); + BeanUtils.copyProperties(ruleVo, ruleInfo); + if (difficulty == 1) { + ruleInfo.setContent(ruleFieldInfoService.assemblyRuleContent(vo, vo.getRuleFieldList())); + } + //插入并获取insert后实体对象返回id + boolean save = this.save(ruleInfo); + if (!save) { + throw new ApiException(ErrorCodeEnum.RULE_SAVE_ERROR.getCode(), ErrorCodeEnum.RULE_SAVE_ERROR.getMessage()); + } + Long ruleId = ruleInfo.getId(); + + switch (difficulty) { + case 1: + //插入子表(ruleField)数据 + ruleFieldInfoService.insertRuleField(vo.getRuleFieldList(), ruleId); + //插入子表自定义输出数据 + outputService.insertTacticsOutput(ruleId, ruleVo.getTacticsOutputList()); + break; + case 2: + //插入版本表数据 + List ruleVersionList = ruleVo.getRuleVersionList(); + if (ruleVersionList != null && ruleVersionList.size() > 0) { + for (RuleVersionVo ruleVersionVo : ruleVersionList) { + ruleVersionVo.setRuleId(ruleId); + } + versionService.addVersionList(ruleVersionList); + } + ruleVo.setRuleVersionList(versionService.queryVersionListByRuleId(vo.getId())); + break; + } + return ruleVo; + } + + /** + * 修改数据 + * + * @param vo 实例对象 + * @return 实例对象 + */ + @Override + @Transactional + public RuleVo updateRuleInfo(RuleVo vo) { + if (vo.getId() == null || vo.getDifficulty() == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + Integer difficulty = vo.getDifficulty(); + RuleInfo ruleInfo = new RuleInfo(); + BeanUtils.copyProperties(vo, ruleInfo); + //修改主表数据 + if (difficulty == 1) { + ruleInfo.setContent(ruleFieldInfoService.assemblyRuleContent(vo, vo.getRuleFieldList())); + } + boolean updateResult = this.updateById(ruleInfo); + if (!updateResult) { + throw new ApiException(ErrorCodeEnum.SERVER_ERROR.getCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + } + Long ruleId = vo.getId(); + switch (difficulty) { + case 1: + outputService.updateTacticsOutput(ruleId, vo.getTacticsOutputList(), TacticsType.BASE_RULE); + //插入子表(ruleField)数据 + ruleFieldInfoService.updateRuleField(vo.getRuleFieldList(), ruleId); + break; + case 2: + List ruleVersionList = vo.getRuleVersionList(); + if (ruleVersionList != null && ruleVersionList.size() > 0) { + RuleVersionVo ruleVersionVo = ruleVersionList.get(0); + ruleVersionVo.setRuleId(vo.getId()); + versionService.updateVersion(ruleVersionVo); + } + vo.setRuleVersionList(versionService.queryVersionListByRuleId(ruleId)); + break; + } + return vo; + } + + /** + * 通过主键修改状态,支持批量 + * + * @param ids 主键id集合 + * @param status 状态代号 + * @return + */ + @Override + @Transactional + public boolean updateStatus(List ids, Integer status) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(RuleInfo::getId, ids); + RuleInfo info = new RuleInfo(); + info.setStatus(status); + return this.update(info, wrapper); + } + + @Override + @Transactional + public boolean updateParent(List ids, Long parentId) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(RuleInfo::getId, ids); + RuleInfo info = new RuleInfo(); + info.setParentId(parentId); + return this.update(info, wrapper); + } + + //唯一性检查 + private boolean checkUniqueness(RuleVo vo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(RuleInfo::getName, vo.getName()); + queryWrapper.ne(RuleInfo::getStatus, -1); + queryWrapper.eq(RuleInfo::getOrganId, SessionManager.getLoginAccount().getOrganId()); + queryWrapper.and(wrapper -> wrapper.eq(RuleInfo::getName, vo.getName()).or().eq(RuleInfo::getCode, vo.getCode())); + RuleInfo info = this.getOne(queryWrapper); + if (info != null) { + if (info.getCode().equals(vo.getCode())) { + throw new ApiException(ErrorCodeEnum.RULE_CODE_REPEAT.getCode(), ErrorCodeEnum.RULE_CODE_REPEAT.getMessage()); + } else if (info.getName().equals(vo.getName())) { + throw new ApiException(ErrorCodeEnum.RULE_NAME_REPEAT.getCode(), ErrorCodeEnum.RULE_NAME_REPEAT.getMessage()); + } + } + return true; + } + + //新插入数据的准备工作 + private RuleVo initParam(RuleVo vo) { + this.checkUniqueness(vo); + //加入用户信息 + User user = SessionManager.getLoginAccount(); + vo.setUserId(user.getUserId()); + vo.setOrganId(user.getOrganId()); + vo.setAuthor(user.getUserId()); + //加入状态信息 + vo.setType(RuleConst.TYPE_ORGAN); + vo.setStatus(RuleConst.STATUS_ENABLED); + //加入规则类型 + if (vo == null || vo.getRuleAudit() == null) { + throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage()); + } + switch (vo.getRuleAudit()) { + case RuleConst.RULE_AUDIT_TERMINATION: + vo.setRuleType(RuleConst.RULE_TYPE_TERMINATION); + break; + case RuleConst.RULE_AUDIT_SCORING: + vo.setRuleType(RuleConst.RULE_TYPE_SCORING); + break; + default: + vo.setRuleType(RuleConst.RULE_TYPE_TERMINATION); + } + + return vo; + } + + @Override + @Transactional + public UploadResponse upload(HttpServletRequest request) throws Exception { + MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; + Iterator iter = multiRequest.getFileNames(); + //查出原有的规则内容 + List rules = ruleMapper.getAllCodeNameParentId(); + //将文件夹和code结合起来 + Set nameSet = new HashSet<>(); + //将文件夹和规则名结合起来 + Set codeSet = new HashSet<>(); + for (Rule rule : rules) { + codeSet.add(rule.getCode() + "/" + rule.getParentId()); + nameSet.add(rule.getName() + "/" + rule.getParentId()); + } + //重复的code集合 + Set rpCodeSet = new HashSet<>(); + //重复的名字集合 + Set rpNameSet = new HashSet<>(); + //重复行数 + int repeatRows = 0; + //失败行数 + int failRows = 0; + //成功行数 + int sucRows = 0; + //已存在行数 + int existRows = 0; + //总行数 + int total = 0; + //存放重复的list + List rpCodeList = new ArrayList(); + List rpNameList = new ArrayList(); + //已存在的list + List existCodeList = new ArrayList(); + List existNameList = new ArrayList(); + //文件夹不存在的List + List folderNotExistList = new ArrayList(); + + Map map = new HashMap(); + //处理excel + while (iter.hasNext()) { + MultipartFile file = multiRequest.getFile(iter.next().toString()); + boolean isXlsx = false; + String fileName = file.getOriginalFilename(); + + if (fileName.endsWith(".xlsx")) { + isXlsx = true; + } + InputStream input = file.getInputStream(); + Workbook wb = null; + //根据文件格式(2003或者2007)来初始化 + if (isXlsx) + wb = new XSSFWorkbook(input); + else + wb = new HSSFWorkbook(input); + Sheet sheet = wb.getSheetAt(0); +// POIFSFileSystem fs = new POIFSFileSystem(file.getInputStream()); +// HSSFWorkbook wb = new HSSFWorkbook(fs); +// Sheet Sheet = wb.getSheetAt(0); + User user = SessionManager.getLoginAccount(); + Long userId = user.getUserId(); + + if (sheet != null) { + try { + HashMap paramMap = new HashMap<>(); + paramMap.put("parentId", "0"); + paramMap.put("treeType", "0"); + paramMap.put("type", "1"); + List treeList = knowledgeTreeService.getTreeList(paramMap); + HashMap cache = new HashMap<>(); + Map folder = treeList.get(0); + List rlist = new ArrayList(); + //遍历excel,从第二行开始 即 rowNum=1,逐个获取单元格的内容,然后进行格式处理,最后插入数据库 + for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { + total++; + Row hssfRow = sheet.getRow(rowNum); + if (hssfRow == null || hssfRow.getCell(0) == null) { + continue; + } + RuleVo rule = new RuleVo(); + rule.setName(ExcelUtil.formatCell(hssfRow.getCell(1))); + rule.setCode(ExcelUtil.formatCell(hssfRow.getCell(2))); + rule.setDescription(ExcelUtil.formatCell(hssfRow.getCell(3))); + rule.setPriority(Integer.parseInt(ExcelUtil.formatCell(hssfRow.getCell(4)).replace(".0", ""))); + String folderName = ExcelUtil.formatCell(hssfRow.getCell(0)); + Long folderId = this.getFolderId(folder, cache, folderName); + + rule.setAuthor(userId); + rule.setUserId(userId); + rule.setOrganId(user.getOrganId()); + rule.setStatus(Status.ENABLED); + rule.setType(1); + rule.setRuleType(1); + rule.setRuleAudit(5); + rule.setScore(1); + rule.setDifficulty(1); + //如果未匹配成功则不插入, + if (folderId == 0L && (folderName != null || !"".equals(folderName))) { + failRows++; + folderNotExistList.add(folderName); + continue; + } + rule.setParentId(folderId); + //判断规则code和name是否重复 + if (rpCodeSet.contains(rule.getCode() + "/" + rule.getParentId())) { + repeatRows++; + rpCodeList.add(folderName + "/" + rule.getCode()); + continue; + } + if (rpNameSet.contains(rule.getName() + "/" + rule.getParentId())) { + repeatRows++; + rpNameList.add(folderName + "/" + rule.getName()); + continue; + } + //判断规则code和name是否在数据库中已存在 + if (codeSet.contains(rule.getCode() + "/" + rule.getParentId())) { + existRows++; + existCodeList.add(folderName + "/" + rule.getCode()); + continue; + } + if (nameSet.contains(rule.getName() + "/" + rule.getParentId())) { + existRows++; + existNameList.add(folderName + "/" + rule.getName()); + continue; + } + + String ruleFields = ExcelUtil.formatCell(hssfRow.getCell(5)); + rule.setLastLogical(this.checkLastLogical(ruleFields)); + ruleFields = this.removeLastLogical(ruleFields, rule.getLastLogical()); + rule.setRuleFieldList(this.handExcelDataForRuleField(ruleFields, userId)); + String ruleContents = ExcelUtil.formatCell(hssfRow.getCell(6)); +// rule.setRuleContentInfoList(this.handExcelDataForRuleContent(ruleContents, userId)); + rule.setTacticsOutputList(this.handExcelDataForRuleContent(ruleContents, userId)); + + rlist.add(rule); + rpCodeSet.add(rule.getCode() + "/" + rule.getParentId()); + rpNameSet.add(rule.getName() + "/" + rule.getParentId()); + } + map.put("existNameList", existNameList); + map.put("existCodeList", existCodeList); + map.put("rpCodeList", rpCodeList); + map.put("rpNameList", rpNameList); + map.put("folderNotExistList", folderNotExistList); + for (RuleVo rule : rlist) { + RuleVo vo = this.insertRuleInfo(rule); + if (vo != null) { + sucRows++; + } + } + } catch (Exception e) { + e.printStackTrace(); + return new UploadResponse(existRows, sucRows, repeatRows, failRows, total, map); + } + } + } + return new UploadResponse(existRows, sucRows, repeatRows, failRows, total, map); + } + + @Override + public List queryFieldEnByRuleId(Long ruleId) { + RuleInfo rule = this.getById(ruleId); + if (rule == null) { + return null; + } + Integer difficulty = rule.getDifficulty(); + //字段en + Set fieldEns = new HashSet<>(); + //字段id + Set fieldIds = new HashSet<>(); + if (difficulty != null) { + + List ruleFieldInfoList = ruleFieldInfoService.queryByRuleId(ruleId); + if (ruleFieldInfoList != null && ruleFieldInfoList.size() > 0) { + for (RuleFieldInfo ruleFieldInfo : ruleFieldInfoList) { + String fieldId = ruleFieldInfo.getFieldId(); + if (fieldId != null && fieldId.contains("|")) { + fieldEns.add(ruleFieldInfo.getFieldId().split("\\|")[1]); + } else { + fieldIds.add(Long.valueOf(ruleFieldInfo.getFieldId())); + } + } + } + for (Long fieldId : fieldIds) { + String fieldName = fieldMapper.findFieldNameById(fieldId); + fieldEns.add(fieldName); + } + } + return new ArrayList<>(fieldEns); + } + + + //获取文件夹id + private Long getFolderId(Map folder, Map cache, String folderName) { + //没有文件夹名称则为0 + if (folderName == null || "".equals(folderName)) { + return 0L; + } + //已经缓存则直接返回 + if (cache.containsKey(folderName)) { + return cache.get(folderName); + } + String[] split = folderName.split("/"); + //类型转换:处理老表格式问题 + if (folder.get("name") != null && folder.get("name").equals(split[0]) && split.length > 1) { + List children = JSON.parseArray(JSON.toJSONString(folder.get("children")), KnowledgeTree.class); + + //设置初始的父id为0; + Long parentId = 0L; + for (int i = 1; i < split.length; i++) { + KnowledgeTree knowledgeTree = checkFolderId(children, split[i]); + //未匹配成功,需要创建文件夹并且并且将children设置为null + if (knowledgeTree == null || knowledgeTree.getChildren() == null) { + //todo 报错未完成创建文件夹,先报异常 + children = null; +// throw new ApiException(ErrorCodeEnum.FOLDER_NOT_EXIST.getVersionCode(),folderName+"<-->文件夹不存在"); + break; + } else {//匹配成功直接替换 + children = Arrays.asList(knowledgeTree.getChildren()); + //记录父id,如果下次匹配失败则会根据这次返回的parentId来创建文件夹 + parentId = knowledgeTree.getId(); + } + //匹配到最后,返回id,并且将此文件夹名和对应id插入到cache中 + if (i == split.length - 1) { + cache.put(folderName, knowledgeTree.getId()); + return knowledgeTree.getId(); + } + } + } + return 0L; + } + + //验证是否匹配到文件夹 + private KnowledgeTree checkFolderId(List folderList, String folderName) { + if (folderList == null) { + return null; + } + for (KnowledgeTree knowledgeTree : folderList) { + if (folderName.equals(knowledgeTree.getName())) { + return knowledgeTree; + } + } + return null; + } + + //确定最后一个逻辑字符 + private String checkLastLogical(String ruleFields) { + String patternStr = "^(\\(+)"; + if (!ruleFields.matches(patternStr)) { + return "-1"; + } else { + String str = "(\\)+$)"; + Pattern pattern = Pattern.compile(str); + Matcher matcher = pattern.matcher(ruleFields); + if (matcher.find()) { + return matcher.group(0); + } + } + return "-1"; + } + + //删除条件中最后的括号部分 + private String removeLastLogical(String ruleFields, String lastLogical) { + if (lastLogical != null && !"".equals(lastLogical) && !lastLogical.equals("-1")) { + return ruleFields.substring(0, ruleFields.length() - lastLogical.length()); + } + return ruleFields; + } + + public List handExcelDataForRuleField(String ruleFields, Long userId) { + List ruleFieldList = new ArrayList(); + if (!StringUtil.isBlank(ruleFields)) { + String patten = "(\\)*)(&&|\\|\\|)"; + ruleFields = ruleFields.replaceAll("\\n", ""); + ruleFields = ruleFields.replaceAll(patten, "\n$1$2"); + String[] field = ruleFields.trim().split("\n"); + for (int i = 0; i < field.length; i++) { + String[] str = field[i].split("-"); + RuleFieldInfo ruleField = new RuleFieldInfo(); + ruleField.setLogical(str[0]); + ruleField.setField(str[1]); + ruleField.setOperator(str[2]); + ruleField.setFieldValue(str[3]); + Field fieldInfo = findByFieldCn(userId, ruleField.getField()); + ruleField.setFieldId(fieldInfo.getId() + "|" + fieldInfo.getFieldEn()); + ruleField.setValueType(fieldInfo.getValueType()); + + ruleFieldList.add(ruleField); + } + } + return ruleFieldList; + } + + public List handExcelDataForRuleContent(String ruleContents, Long userId) { + List tacticsOutputList = new ArrayList(); + if (!StringUtil.isBlank(ruleContents)) { + String[] content = ruleContents.trim().split("\n"); + for (int i = 0; i < content.length; i++) { + String[] str = content[i].split("="); + TacticsOutput tacticsOutput = new TacticsOutput(); + Field field = this.findByFieldCn(userId, str[0]); + tacticsOutput.setFieldId(field.getId()); + tacticsOutput.setFieldEn(field.getFieldEn()); + String fieldValue = str[1]; + Integer variableType = 1; + Pattern pattern = Pattern.compile("^(\\{)([\\s|\\S]+)(\\})$"); + Matcher matcher = pattern.matcher(fieldValue); + if (matcher.find()) { + Field field1 = this.findByFieldCn(userId, matcher.group(2).trim()); + fieldValue = field1.getId().toString() + "|" + field1.getFieldEn(); + variableType = 2; + } + tacticsOutput.setFieldValue(fieldValue); + tacticsOutput.setVariableType(variableType); + tacticsOutput.setTacticsType("base_rule"); + tacticsOutputList.add(tacticsOutput); + } + } + return tacticsOutputList; + } + + public Field findByFieldCn(Long userId, String fieldCn) { + Map fieldMap = new HashMap(); + fieldMap.put("userId", userId); + fieldMap.put("fieldCn", fieldCn); + Field field = fieldMapper.findByFieldCn(fieldMap); + return field; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleVersionServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleVersionServiceImpl.java new file mode 100644 index 0000000..f7b066a --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/rule/service/impl/RuleVersionServiceImpl.java @@ -0,0 +1,228 @@ +package com.risk.riskmanage.rule.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.risk.riskmanage.common.model.requestParam.StatusParam; +import com.risk.riskmanage.datamanage.mapper.FieldMapper; +import com.risk.riskmanage.rule.mapper.RuleVersionMapper; +import com.risk.riskmanage.rule.model.RuleConditionInfo; +import com.risk.riskmanage.rule.model.RuleVersion; +import com.risk.riskmanage.rule.model.vo.RuleConditionVo; +import com.risk.riskmanage.rule.model.vo.RuleVersionVo; +import com.risk.riskmanage.rule.service.RuleConditionService; +import com.risk.riskmanage.rule.service.RuleVersionService; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.tactics.consts.TacticsType; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import com.risk.riskmanage.tactics.service.TacticsOutputService; +import com.risk.riskmanage.util.CustomValueUtils; +import com.risk.riskmanage.util.SessionManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Service +public class RuleVersionServiceImpl extends ServiceImpl implements RuleVersionService { + private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private RuleVersionMapper versionMapper; + @Autowired + private RuleConditionService conditionService; + @Autowired + private TacticsOutputService outputService; + @Autowired + private FieldMapper fieldMapper; + @Autowired + private ThreadPoolTaskExecutor threadPoolTaskExecutor; + + @Override + public RuleVersionVo queryById(Long id) { + RuleVersion ruleVersion = versionMapper.selectById(id); + RuleVersionVo result = new RuleVersionVo(); + if (ruleVersion==null){ + return result; + } + BeanUtils.copyProperties(ruleVersion,result); + //查询ruleCondition组装成树形结构 + RuleConditionVo ruleConditionVo = conditionService.queryByVersionId(id); + List tacticsOutputList = outputService.queryByTactics(new TacticsOutput(id, TacticsType.COMPLEX_RULE,TacticsType.OutType.SUCCESS_OUT)); + List failOutputList = outputService.queryByTactics(new TacticsOutput(id, TacticsType.COMPLEX_RULE,TacticsType.OutType.FAIL_OUT)); + result.setRuleConditionVo(ruleConditionVo); + result.setTacticsOutputList(tacticsOutputList); + result.setFailOutputList(failOutputList); + return result; + } + + @Override + public List queryVersionListByRuleId(Long RuleId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RuleVersion::getRuleId,RuleId); + queryWrapper.eq(RuleVersion::getStatus,1); + queryWrapper.orderByDesc(RuleVersion::getId); + List ruleVersionList = versionMapper.selectList(queryWrapper); + List ruleVersionVoList = new ArrayList<>(); + for (RuleVersion ruleVersion : ruleVersionList) { + RuleVersionVo versionVo = new RuleVersionVo(); + BeanUtils.copyProperties(ruleVersion,versionVo); + ruleVersionVoList.add(versionVo); + } + return ruleVersionVoList; + } + + @Override + public List queryFieldEnByVersionId(Long versionId) { + Set fieldEns= new HashSet<>(); + Set fieldIds= new HashSet<>(); + RuleConditionVo ruleConditionVo = conditionService.queryByVersionId(versionId); + List ruleConditionInfoList = conditionService.disassemble(ruleConditionVo, versionId, false); + for (RuleConditionInfo info : ruleConditionInfoList) { + if (info.getFieldEn()!=null&&info.getFieldType()!=1&&!info.getFieldEn().startsWith("%")){ + if (info.getFieldEn().contains(".")){ + fieldEns.add(info.getFieldEn().split("\\.")[0]); + } + else { + fieldEns.add(info.getFieldEn()); + } + }else if(info.getFieldId()!=null){ + fieldIds.add(info.getFieldId()); + } + if (info.getVariableType()!=null){ + if (info.getVariableType()==2&&info.getFieldValue()!=null&&!info.getFieldValue().contains("%")){ + fieldEns.add(info.getFieldValue()); + }else if (info.getVariableType()==3){ + fieldEns.addAll(CustomValueUtils.getFieldEnSet(info.getFieldValue())); + } + } + } + for (Long fieldId : fieldIds) { + String fieldName= fieldMapper.findFieldNameById(fieldId); + fieldEns.add(fieldName); + } + return new ArrayList<>(fieldEns); + } + + @Override + @Transactional + public int addVersionList(List versionList) { + int result = 0; + for (RuleVersionVo versionVo : versionList) { + boolean b = addVersion(versionVo); + if (b){ + result++; + } + } + return result; + } + + @Override + @Transactional + public boolean addVersion(RuleVersionVo version) { + User loginUser = SessionManager.getLoginAccount(); + version.setOrganId(loginUser.getOrganId()); + version.setCreateUserId(loginUser.getUserId()); + version.setUpdateUserId(loginUser.getUserId()); + version.setCreateTime(null); + version.setUpdateTime(null); + version.setStatus(1); + if (version.getVersionCode()==null){ + version.setVersionCode("V:0"); + } + if (version.getDescription()==null){ + version.setDescription("初始版本"); + } + int insert = versionMapper.insert(version); + if (insert>0){ + this.addVersionDetail(version); + this.saveSnapshot(version.getId()); + return true; + }else { + logger.error("新增规则版本失败{}",version); + } + return false; + } + @Transactional + public boolean addVersionDetail(RuleVersionVo version){ + RuleConditionVo ruleConditionVo = version.getRuleConditionVo(); + ruleConditionVo.setVersionId(version.getId()); + //添加条件信息 + conditionService.insertRuleCondition(ruleConditionVo,version.getRuleId()); + //添加输出字段 + List tacticsOutputList = version.getTacticsOutputList(); + if (tacticsOutputList!=null&&tacticsOutputList.size()>0){ + outputService.insertTacticsOutput(version.getId(),tacticsOutputList ); + } + List failOutputList = version.getFailOutputList(); + if (failOutputList!=null&&failOutputList.size()>0){ + outputService.insertTacticsOutput(version.getId(),failOutputList ); + } + return true; + } + + @Override + @Transactional + public boolean copyVersion(RuleVersionVo version) { + RuleVersionVo versionVo = this.queryById(version.getId()); + versionVo.setId(null); + versionVo.setVersionCode(version.getVersionCode()); + versionVo.setDescription(version.getDescription()); + return this.addVersion(versionVo); + } + + @Override + @Transactional + public boolean updateVersion(RuleVersionVo version) { + Long versionId = version.getId(); + if (versionId==null){ + return false; + } + User loginUser = SessionManager.getLoginAccount(); + version.setUpdateUserId(loginUser.getUserId()); + //修改版本主表 + versionMapper.updateById(version); + //修改条件表 + conditionService.updateRuleCondition(version.getRuleId(),version.getRuleConditionVo()); + //修改策略输出 + outputService.updateTacticsOutput(versionId,version.getTacticsOutputList(),version.getFailOutputList(),TacticsType.COMPLEX_RULE); + this.saveSnapshot(versionId); + return true; + } + + + @Override + @Transactional + public boolean updateStatus(StatusParam statusParam) { + LambdaQueryWrapper updateWrapper = new LambdaQueryWrapper<>(); + updateWrapper.in(RuleVersion::getId,statusParam.getIds()); + updateWrapper.eq(RuleVersion::getRuleId,statusParam.getTacticsId()); + RuleVersion ruleVersion = new RuleVersion(); + ruleVersion.setStatus(statusParam.getStatus()); + boolean update = this.update(ruleVersion, updateWrapper); + return update; + } + + + private boolean saveSnapshot(Long versionId){ + threadPoolTaskExecutor.execute(new Runnable() { + @Override + public void run() { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + RuleVersionVo versionVo = queryById(versionId); + versionVo.setSnapshot(null); + wrapper.eq(RuleVersion::getId,versionId).set(RuleVersion::getSnapshot, JSON.toJSONString(versionVo)); + versionMapper.update(null,wrapper); + } + }); + return true; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/aop/ExceptionAop.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/aop/ExceptionAop.java new file mode 100644 index 0000000..330f3e7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/aop/ExceptionAop.java @@ -0,0 +1,113 @@ +package com.risk.riskmanage.spring.aop; + +import com.alibaba.fastjson.JSONObject; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.util.AccountSessionWrap; +import com.risk.riskmanage.util.RequestUtil; +import com.risk.riskmanage.util.SessionManager; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartRequest; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * 异常处理 + */ +@Order(1) +@Aspect +@Component +public class ExceptionAop { + private static final Logger logger = LoggerFactory.getLogger(ExceptionAop.class); + public static final String EDP = "execution(* com.risk.riskmanage.*.controller..*.*(..))"; + + /** + * 处理运行异常的切面 + */ + @Around(EDP) + public Object deal(ProceedingJoinPoint pjp) throws Throwable { + Object returnMessage = null; + Long beginTimeMills = System.currentTimeMillis(); + String className = pjp.getTarget().getClass().getName(); + String methodName = pjp.getSignature().getName(); + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes sra = (ServletRequestAttributes) ra; + HttpServletRequest request = sra.getRequest(); + String addIp = RequestUtil.getClientIP(request); + String requestMethod = request.getMethod(); + StringBuffer requestURL = request.getRequestURL(); + MethodSignature methodSignature = (MethodSignature) pjp.getSignature(); + + AccountSessionWrap session = SessionManager.getSession(); + Long userId = session.getUser() != null && session.getUser().getUserId() != null ? session.getUser().getUserId() : 0; + String reqUuid = null; + String argsWrap = null; + + try { + reqUuid = session.getTraceId(); + argsWrap = getParam(pjp.getArgs(), methodSignature.getParameterNames()); + logger.info("===>> 切面BEGIN: {} - {} {} enter {}.{} method, ### traceId:{} ###, request args: {}, userId:{} ===>>", + addIp, requestMethod, requestURL, className, methodName, reqUuid, argsWrap, userId); + returnMessage = pjp.proceed(); + } catch (ApiException e1) { + logger.info("方法[" + pjp.getSignature().getName() + "]发生业务异常Exception-{}", e1); + returnMessage = ResponseEntityBuilder.buildErrorResponse(e1.errCode, e1.message); + } catch (NullPointerException e2) { + logger.error("方法[" + pjp.getSignature().getName() + "]发生运行时异常NullPointerException-{}", e2); + returnMessage = ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.NULL_POINT_EREXCEPTION.getCode(), ErrorCodeEnum.NULL_POINT_EREXCEPTION.getMessage()); + } catch (ClassCastException e2) { + logger.error("方法[" + pjp.getSignature().getName() + "]发生运行时异常ClassCastException-{}", e2); + returnMessage = ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.CLASS_CAST_EXCEPTION.getCode(), ErrorCodeEnum.CLASS_CAST_EXCEPTION.getMessage()); + } catch (Exception e2) { + logger.error("方法[" + pjp.getSignature().getName() + "]发生运行时异常Exception-{}", e2); + returnMessage = ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR.getCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + } catch (Throwable e) { + logger.error("方法[" + pjp.getSignature().getName() + "]发生运行时异常Throwable-{}", e); + returnMessage = ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR.getCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + } + logger.info("<<==== 切面END: exit {}.{} method,### traceId:{}, userId:{}, cost time: {} ms ###, returnResult:{} <<====", + className, methodName, reqUuid, userId, (System.currentTimeMillis() - beginTimeMills), JSONObject.toJSONString(returnMessage)); + return returnMessage; + + } + + private String getParam(Object[] fieldValues, String[] filedNames) { + if (fieldValues == null + || fieldValues.length == 0 + || filedNames == null + || filedNames.length == 0 + || fieldValues.length != filedNames.length) { + return null; + } + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < fieldValues.length; i++) { + if (fieldValues[i] instanceof HttpServletRequest + || fieldValues[i] instanceof MultipartRequest + || fieldValues[i] instanceof HttpServletResponse + || fieldValues[i] instanceof HttpSession) { + continue; + } + stringBuffer.append("{"); + if (i < filedNames.length) { + stringBuffer.append(filedNames[i]); + stringBuffer.append(":"); + } + stringBuffer.append(JSONObject.toJSONString(fieldValues[i])); + stringBuffer.append("},"); + } + return stringBuffer.toString(); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/interceptor/SessionInterceptor.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/interceptor/SessionInterceptor.java new file mode 100644 index 0000000..710e870 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/spring/interceptor/SessionInterceptor.java @@ -0,0 +1,99 @@ +package com.risk.riskmanage.spring.interceptor; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.risk.riskmanage.common.constants.Constants; +import com.risk.riskmanage.common.constants.ServiceFilterConstant; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.redis.RedisManager; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.AccountSessionWrap; +import com.risk.riskmanage.util.CommonUtil; +import com.risk.riskmanage.util.RequestUtil; +import com.risk.riskmanage.util.SessionManager; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; + +/** + * 会话拦截器 + */ +@Component +public class SessionInterceptor extends HandlerInterceptorAdapter { + private Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private RedisManager redisManager; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String uri = request.getRequestURI(); + String ip = RequestUtil.getClientIP(request); + AccountSessionWrap acsw = new AccountSessionWrap(ip, uri); + String reqUuid = CommonUtil.getUUID(); + String requestMethod = request.getMethod(); + StringBuffer requestURL = request.getRequestURL(); + acsw.setTraceId(reqUuid); + String token = request.getHeader(Constants.SYSTEM_KEY_TOKEN); + logger.debug("===>> 【会话拦截】-BEGIN: {} - {} {}, ### traceId:{},{}, token:{} ### ===>>", ip, requestMethod, requestURL, reqUuid, uri, token); + SessionManager.setSession(acsw); + if (ServiceFilterConstant.isSessionFilter(uri)) { + return true; + } + if (StringUtils.isBlank(token)) { + output(response, ErrorCodeEnum.ERROR_TOKEN_EXPIRE.getCode(),ErrorCodeEnum.ERROR_TOKEN_EXPIRE.getMessage()); + return false; + } + + try { + String value = redisManager.get(token); + if(StringUtils.isBlank(value)){ + output(response, ErrorCodeEnum.ERROR_TOKEN_EXPIRE.getCode(),ErrorCodeEnum.ERROR_TOKEN_EXPIRE.getMessage()); + return false; + } + + // token更新频率,设置离过期时间还剩n秒以内才更新一次token + Long time = redisManager.ttl(token); + if(time.intValue() <= Constants.LOGIN_TOKEN_REFRESH_TIME.intValue()){ + redisManager.set(token, value, Constants.LOGIN_TOKEN_TIME.intValue()); + } + + User user = JSONObject.parseObject(value, User.class); + acsw.setUser(user); + } catch (ApiException e1) { + output(response, e1.errCode, e1.getMessage()); + return false; + } catch (Exception e) { + logger.error("【会话拦截】调用Token验证服务异常,uri:{},token:{},IP:{}",uri,token,ip,e); + output(response, ErrorCodeEnum.SERVER_ERROR.getCode(), ErrorCodeEnum.SERVER_ERROR.getMessage()); + return false; + } + + return true; + } + + private void output(HttpServletResponse response, String errCode, String errMsg) { + ResponseEntityDto ret = ResponseEntityBuilder.buildErrorResponse(errCode, errMsg); + try { + logger.info("【会话拦截】未通过,{\"errCode\":" + errCode + ",\"errMsg:\":" + errMsg + "}"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Type", "application/json;charset=UTF-8"); + byte[] jsonBytes = JSON.toJSONBytes(ret); + OutputStream output = response.getOutputStream(); + output.write(jsonBytes); + output.flush(); + } catch (IOException e) { + logger.error("【会话拦截】输出响应报文异常!,{},{}",errCode,errMsg, e); + } + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/LoginController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/LoginController.java new file mode 100644 index 0000000..434a689 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/LoginController.java @@ -0,0 +1,99 @@ + +package com.risk.riskmanage.system.controller.v2; + +import com.alibaba.fastjson.JSONObject; +import com.risk.riskmanage.common.basefactory.BaseController; +import com.risk.riskmanage.common.constants.Constants; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.redis.RedisManager; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.model.request.LoginInfoParam; +import com.risk.riskmanage.util.AccountSessionWrap; +import com.risk.riskmanage.util.MD5; +import com.risk.riskmanage.util.SessionManager; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +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.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * @apiDefine account 1. 账户 + */ +@Controller("loginControllerV2") +@RequestMapping("/v2/login/*") +public class LoginController extends BaseController{ + + @Autowired + private RedisManager redisManager; + + /** + * @api {POST} /v2/login/login 1.01. 用户登录 + * @apiGroup account + * @apiVersion 1.0.1 + * @apiParam {String} account 账号 + * @apiParam {String} password 密码 + * @apiSuccess {String} token 会话token + * @apiParamExample {json} Request: + * {"account":"admin","password":"123456"} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"token":"21fd6379df134ea590a462e4de1f6b33"}} + */ + @ResponseBody + @RequestMapping(value = "/login") + @ArchivesLog(operationType = OpTypeConst.LOGIN) + public ResponseEntityDto login(@RequestBody LoginInfoParam param) { + Map map = new HashMap<>(); + String account = param.getAccount(); + String password = param.getPassword(); + if(!("".equals(account)) && !("".equals(password))){ + User user = s.userService.selectLoginInfo(account.trim(), MD5.GetMD5Code(password)); + if(null != user && user.getStatus()==1){ + String token = UUID.randomUUID().toString().replaceAll("-", ""); + redisManager.set(token, JSONObject.toJSONString(user), Constants.LOGIN_TOKEN_TIME.intValue()); + map.put("token", token); + + AccountSessionWrap acsw = new AccountSessionWrap(null, null); + acsw.setUser(user); + SessionManager.setSession(acsw); + }else{ + return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.LOGIN_ERROR); + } + } + return ResponseEntityBuilder.buildNormalResponse(map); + } + + /** + * @api {POST} /v2/login/logout 1.02. 用户登出 + * @apiGroup account + * @apiVersion 1.0.1 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} Request: + * {} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":null} + */ + @ResponseBody + @RequestMapping(value = "logout", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.LOGOUT) + public ResponseEntityDto logout(HttpServletRequest request) { + String token = request.getHeader(Constants.SYSTEM_KEY_TOKEN); + if(StringUtils.isNotBlank(token)){ + redisManager.del(token); + } + return ResponseEntityBuilder.buildNormalResponse(); + } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysMenuController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysMenuController.java new file mode 100644 index 0000000..3f14787 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysMenuController.java @@ -0,0 +1,423 @@ +package com.risk.riskmanage.system.controller.v2; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.CcpBaseController; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.BaseParam; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.engine.model.Engine; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.system.model.SysMenu; +import com.risk.riskmanage.system.model.SysUser; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.model.response.SysMenuVo; +import com.risk.riskmanage.util.SessionManager; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +@Controller("sysMenuControllerV2") +@RequestMapping("v2/sysMenu") +@ResponseBody +public class SysMenuController extends CcpBaseController { + + /** + * @api {POST} /v2/sysMenu/getMenuList 6.31. 获取资源列表 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} pageNo 页数 + * @apiParam {Integer} pageSize 每页的条数 + * @apiSuccess {JSON} pager 分页信息 + * @apiSuccess {JSONArray} listMenu 资源列表 + * @apiSuccess (listMenu) {Long} id 资源编号 + * @apiSuccess (listMenu) {Long} userId 分配者 + * @apiSuccess (listMenu) {String} name 资源名称 + * @apiSuccess (listMenu) {String} versionCode 资源代号 + * @apiSuccess (listMenu) {String} url 资源路径 + * @apiSuccess (listMenu) {Long} parentId 父节点 + * @apiSuccess (listMenu) {String} des 资源描述 + * @apiSuccess (listMenu) {Long} birth 创建时间 + * @apiSuccess (listMenu) {String} icon 图标 + * @apiSuccess (listMenu) {Integer} sort 顺序(值越小优先级越高) + * @apiSuccess (listMenu) {Integer} status 状态:0停用,1启用, -1删除 + * @apiParamExample {json} 请求示例: + * {"pageNo":1,"pageSize":2} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":17,"pages":9,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3,4,5,6,7,8],"navigateFirstPage":1,"navigateLastPage":8,"lastPage":8,"firstPage":1},"listMenu":[{"id":1,"userId":0,"name":"引擎管理","versionCode":"0001","url":"sysMenu/getChildMenu","parentId":0,"des":"引擎管理","birth":1498721562000,"icon":null,"sort":0,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"hidden":false},{"id":2,"userId":0,"name":"规则管理","versionCode":"0002","url":"sysMenu/getChildMenu","parentId":0,"des":"规则管理","birth":1498807962000,"icon":"bb","sort":5,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"hidden":false}]}} + */ + @RequestMapping(value = "getMenuList", method = RequestMethod.POST) + public ResponseEntityDto getMenuList(@RequestBody BaseParam baseParam) { + PageHelper.startPage(baseParam.getPageNo(),baseParam.getPageSize()); + // 获取所有菜单 + List listMenu = s.sysMenuService.getAllSysMenu(); + PageInfo pageInfo = new PageInfo(listMenu); + pageInfo.setList(null); + HashMap modelMap = new HashMap<>(); + modelMap.put("listMenu", listMenu); + modelMap.put("pager", pageInfo); + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/sysMenu/save 6.32. 创建资源 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {String} name 资源名称 + * @apiParam {String} versionCode 资源代号 + * @apiParam {String} url 资源路径 + * @apiParam {Long} parentId 父节点 + * @apiParam {String} des 资源描述 + * @apiParam {String} icon 图标 + * @apiParam {Integer} sort 顺序(值越小优先级越高) + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"name":"测试资源","versionCode":"0066","url":"testMenu","parentId":0,"des":"测试资源描述","icon":"el-icon-eleme","sort":2} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_SYS_MENU) + public ResponseEntityDto save(@RequestBody SysMenu sysMenu) { + List list = s.sysMenuService.validateMenuOnly(sysMenu); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_MENU_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_MENU_NAME_REPEAT.getMessage()); + } + int num = s.sysMenuService.createSysMenu(sysMenu); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysMenu/getMenuInfo/{id} 6.33. 获取资源详情 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 资源编号(url参数) + * @apiSuccess {Long} id 资源编号 + * @apiSuccess {Long} userId 分配者 + * @apiSuccess {String} name 资源名称 + * @apiSuccess {String} versionCode 资源代号 + * @apiSuccess {String} url 资源路径 + * @apiSuccess {Long} parentId 父节点 + * @apiSuccess {String} des 资源描述 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {String} icon 图标 + * @apiSuccess {Integer} sort 顺序(值越小优先级越高) + * @apiSuccess {Integer} status 状态:0停用,1启用, -1删除 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"id":32,"userId":135,"name":"测试资源","versionCode":"0066","url":"testMenu","parentId":0,"des":"测试资源描述","birth":1616760174000,"icon":"el-icon-eleme","sort":2,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"hidden":false}} + */ + @RequestMapping(value = "/getMenuInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getMenuInfo(@PathVariable long id) { + SysMenu sysMenu = s.sysMenuService.findById(id); + return ResponseEntityBuilder.buildNormalResponse(sysMenu); + } + + /** + * @api {POST} /v2/sysMenu/update 6.34. 修改资源 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 资源编号 + * @apiParam {String} name 资源名称 + * @apiParam {String} versionCode 资源代号 + * @apiParam {String} url 资源路径 + * @apiParam {Long} parentId 父节点 + * @apiParam {String} des 资源描述 + * @apiParam {String} icon 图标 + * @apiParam {Integer} sort 顺序(值越小优先级越高) + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":32,"name":"测试资源1","versionCode":"0067","url":"testMenu","parentId":0,"des":"测试资源描述","icon":"el-icon-eleme","sort":5} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_MENU) + public ResponseEntityDto update(@RequestBody SysMenu sysMenu) { + List list = s.sysMenuService.validateMenuOnly(sysMenu); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_MENU_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_MENU_NAME_REPEAT.getMessage()); + } + int num = s.sysMenuService.updateSysMenu(sysMenu); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysMenu/updateStatus 6.35. 资源删除 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} status 状态:-1删除 + * @apiParam {String} ids 资源编号,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"status":-1,"ids":"26"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "updateStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_MENU_STATUS) + public ResponseEntityDto updateStatus(@RequestBody Map param) { + int status = (Integer) param.get("status"); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if (ids != "") { + String[] strs = ids.split(","); + for (int i = 0; i < strs.length; i++) { + list.add(Integer.parseInt(strs[i])); + } + } + + if (list != null && list.size() > 0) { + num = s.sysMenuService.updateStatus(status, list); + } + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysMenu/getTreeMenu 6.36. 新增/修改资源获取父节点树 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} parentId 父节点Id + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"parentId":0} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":[{"id":22,"userId":0,"name":"模型管理","versionCode":"0007","url":"sysMenu/getChildMenu","parentId":0,"des":"模型管理","birth":1498980762000,"icon":null,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"isHidden":false},{"id":23,"userId":0,"name":"数据源管理","versionCode":"0008","url":"sysMenu/getChildMenu","parentId":0,"des":"数据源管理","birth":1498984362000,"icon":null,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"isHidden":false},{"id":24,"userId":0,"name":"黑白名单库管理","versionCode":"0009","url":"sysMenu/getChildMenu","parentId":0,"des":"黑白名单库管理","birth":1498987962000,"icon":null,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"isHidden":false},{"id":25,"userId":0,"name":"评分卡管理","versionCode":"0010","url":"sysMenu/getChildMenu","parentId":0,"des":"评分卡管理","birth":1498897962000,"icon":null,"status":1,"roleId":0,"checked":false,"chkDisabled":false,"isHidden":false}]} + */ + @RequestMapping(value = "getTreeMenu", method = RequestMethod.POST) + public ResponseEntityDto getTreeMenu(@RequestBody Map param){ + long parentId = Long.valueOf(param.get("parentId").toString()); + List listMenu = s.sysMenuService.getAllValidMenu(); + if(listMenu!=null&&listMenu.size()>0){ + for(int i=0;i param){ + long roleId = Long.valueOf(param.get("roleId").toString()); + long organRoleId = 0; + List listAll = new ArrayList(); + //获取登录用户id + User user = SessionManager.getLoginAccount(); + long userId = user.getUserId(); + long orgId = user.getOrganId(); + //获取登录人角色id + SysUser sysUser = s.sysUserService.findRoleByUserId(userId); + if(sysUser!=null){ + organRoleId = sysUser.getSysRole().getId(); + } + //角色资源 + List listRoleMenu = s.sysMenuService.findTreeList(roleId); + if(orgId==1){ + //全部启用资源 + listAll = s.sysMenuService.getAllValidMenu(); + if(listAll!=null&&listAll.size()>0){ + for(int i=0;i 0) { + for (int j = 0; j < listRoleMenu.size(); j++) { + long id_j = listRoleMenu.get(j).getId(); + if (id_j == id_i) { + listAll.get(i).setChecked(true); + } + } + } + } + } + + }else{ + //公司资源 + listAll = s.sysMenuService.findTreeList(organRoleId); + if(listAll!=null&&listAll.size()>0){ + for(int i=0;i 0) { + for (int j = 0; j < listRoleMenu.size(); j++) { + long id_j = listRoleMenu.get(j).getId(); + if (id_j == id_i) { + listAll.get(i).setChecked(true); + } + } + } + } + } + } + return ResponseEntityBuilder.buildNormalResponse(listAll); + } + /** + * @api {POST} /v2/sysMenu/insertRoleMenu 6.38.1. 权限分配,保存、修改资源树 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} roleId 角色编号 + * @apiParam {String} ids 资源编号,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"roleId":76,"ids":"1,18,2,15,3,16,17,4,11,12,19"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":11} + */ + @RequestMapping(value = "insertRoleMenu", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_OR_UPDATE_MENU_ROLE) + public ResponseEntityDto insertRoleMenu(@RequestBody Map param) { + long roleId = Long.valueOf(param.get("roleId").toString()); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if (ids != "") { + String[] strs = ids.split(","); + for (int i = 0; i < strs.length; i++) { + list.add(Integer.parseInt(strs[i])); + } + if (list != null && list.size() > 0) { + num = s.sysMenuService.insertRoleMenu(roleId, list); + } + }else{ + num = s.sysMenuService.deleteRoleMenu(roleId); + } + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysMenu/insertRoleEngine 6.38.2. 权限分配,保存、修改引擎树 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} roleId 角色编号 + * @apiParam {String} ids 引擎Id,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"roleId":76,"ids":"1,1_217,11_217,111_217,112_217,1121_217,12_217,121_217,122_217,1221_217,123_217,1231_217,13_217,131_217,132_217,1321_217,133_217,1331_217,14_217,141_217,15_217,151_217"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":22} + */ + @RequestMapping(value = "insertRoleEngine", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_ROLE_ENGINE) + public ResponseEntityDto insertRoleEngine(@RequestBody Map param) { + long roleId = Long.valueOf(param.get("roleId").toString()); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if (ids != "") { + String[] strs = ids.split(","); + for (int i = 0; i < strs.length; i++) { + list.add(strs[i]); + } + if (list != null && list.size() > 0) { + num = s.sysMenuService.insertRoleEngine(roleId, list); + } + }else{ + num = s.sysMenuService.deleteRoleEngine(roleId); + //初始化公司管理员引擎权限: + Engine engineVo = new Engine(); + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + //查询角色所在公司 + long organ_id = s.sysRoleService.getOrganByRoleId(roleId); + engineVo.setOrganId(organ_id); + if(organId==1){ + String idstr = "1,"; + List list_str = new ArrayList(); + + } + } + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysMenu/getMenus 6.39. 获取菜单信息 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":[{"title":"系统首页","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"引擎列表","index":"sysMenu/getChildMenu","icon":"xx","subs":[]},{"title":"引擎管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"指标管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"规则管理","index":"sysMenu/getChildMenu","icon":"bb","subs":[]},{"title":"评分卡管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"模型管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"数据源管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"黑白名单库管理","index":"sysMenu/getChildMenu","icon":null,"subs":[]},{"title":"系统管理","index":"sysMenu/getChildMenu","icon":null,"subs":[{"title":"用户管理","index":"sysUser/view","icon":null,"subs":[]},{"title":"角色管理","index":"sysRole/view","icon":"aa","subs":[]},{"title":"日志管理","index":"log/index","icon":null,"subs":[]}]}]} + */ + @RequestMapping(value = "getMenus", method = RequestMethod.POST) + public ResponseEntityDto getMenus(){ + List menuList = new ArrayList<>(); + User user = SessionManager.getLoginAccount(); + long orgId = user.getOrganId(); + long userId = user.getUserId(); + if(orgId==1){ + menuList = s.sysMenuService.getAllValidMenu(); + }else{ + long roleId = 0; + SysUser sysUser = s.sysUserService.findRoleByUserId(userId); + if(sysUser!=null){ + roleId = sysUser.getSysRole().getId(); + } + menuList = s.sysMenuService.findTreeList(roleId); + } + + long parentId = 0; + List result = recursionMenu(menuList, parentId); + + return ResponseEntityBuilder.buildNormalResponse(result); + } + + /** + * 递归获取子菜单 + * @param menuList + * @param parentId + * @return + */ + private List recursionMenu(List menuList, long parentId){ + List sysMenuVoList = new ArrayList<>(); + for(SysMenu sysMenu : menuList) { + if(sysMenu.getParentId() == parentId){ + SysMenuVo sysMenuVo = new SysMenuVo(); + sysMenuVo.setTitle(sysMenu.getName()); + sysMenuVo.setIndex(StringUtils.isBlank(sysMenu.getUrl()) ? UUID.randomUUID().toString() : sysMenu.getUrl()); + sysMenuVo.setIcon(sysMenu.getIcon()); + + List sysMenuVos = recursionMenu(menuList, sysMenu.getId()); + if(!sysMenuVos.isEmpty()){ + sysMenuVo.setSubs(sysMenuVos); + } + + sysMenuVoList.add(sysMenuVo); + } + } + return sysMenuVoList; + } + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysOrganizationController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysOrganizationController.java new file mode 100644 index 0000000..d698b44 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysOrganizationController.java @@ -0,0 +1,194 @@ +package com.risk.riskmanage.system.controller.v2; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.CcpBaseController; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.BaseParam; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.system.model.SysOrganization; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Controller("sysOrganizationControllerV2") +@RequestMapping("v2/sysOrganization") +@ResponseBody +public class SysOrganizationController extends CcpBaseController{ + + /** + * @api {POST} /v2/sysOrganization/getOrganList 6.41. 获取组织列表 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} pageNo 页数 + * @apiParam {Integer} pageSize 每页的条数 + * @apiSuccess {JSON} pager 分页信息 + * @apiSuccess {JSONArray} listOrgan 组织列表 + * @apiSuccess (listOrgan) {Long} id 组织编号 + * @apiSuccess (listOrgan) {String} name 组织名称 + * @apiSuccess (listOrgan) {String} versionCode 组织代号 + * @apiSuccess (listOrgan) {Integer} status 状态:0禁用,1启用 + * @apiSuccess (listOrgan) {String} author 创建者 + * @apiSuccess (listOrgan) {Long} birth 创建时间 + * @apiSuccess (listOrgan) {String} token 唯一标识 + * @apiParamExample {json} 请求示例: + * {"pageNo":1,"pageSize":2} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"listOrgan":[{"id":46,"name":"管理员","versionCode":"007","email":null,"telephone":null,"status":1,"author":"超级管理员","birth":1498722046000,"token":"4f15125c-93c0-43fb-9ed2-e0b92763fa3d"}],"pager":{"pageNum":1,"pageSize":2,"size":1,"startRow":1,"endRow":1,"total":1,"pages":1,"list":null,"prePage":0,"nextPage":0,"isFirstPage":true,"isLastPage":true,"hasPreviousPage":false,"hasNextPage":false,"navigatePages":8,"navigatepageNums":[1],"navigateFirstPage":1,"navigateLastPage":1,"lastPage":1,"firstPage":1}}} + */ + @RequestMapping(value = "getOrganList", method = RequestMethod.POST) + public ResponseEntityDto getOrganList(@RequestBody BaseParam baseParam){ + PageHelper.startPage(baseParam.getPageNo(), baseParam.getPageSize()); + List listOrgan = s.sysOrganizationService.getAllSysOrganization(); + PageInfo pageInfo = new PageInfo(listOrgan); + pageInfo.setList(null); + HashMap modelMap = new HashMap<>(); + modelMap.put("listOrgan", listOrgan); + modelMap.put("pager", pageInfo); + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/sysOrganization/getAllValidOrgan 6.42. 获取所有已启用组织 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiSuccess {Long} id 组织编号 + * @apiSuccess {String} name 组织名称 + * @apiSuccess {String} versionCode 组织代号 + * @apiSuccess {Integer} status 状态:0禁用,1启用 + * @apiSuccess {String} author 创建者 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {String} token 唯一标识 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":[{"id":46,"name":"管理员","versionCode":"007","email":null,"telephone":null,"status":1,"author":"超级管理员","birth":1498722046000,"token":"4f15125c-93c0-43fb-9ed2-e0b92763fa3d"},{"id":1,"name":"rik","versionCode":"0001","email":"123.com ","telephone":"1234567489","status":1,"author":"超级管理员","birth":1498721562000,"token":"6a6ea35e-aabe-4e64-bd98-dae304b10a21"}]} + */ + @RequestMapping(value = "getAllValidOrgan", method = RequestMethod.POST) + public ResponseEntityDto getAllValidOrgan(){ + List list = new ArrayList<>(); + User user = SessionManager.getLoginAccount(); + Long organId = user.getOrganId(); + if(organId.longValue() == 1){ + list = s.sysOrganizationService.getAllValidOrgan(); + } else { + SysOrganization sysOrganization = s.sysOrganizationService.findById(organId); + list.add(sysOrganization); + } + return ResponseEntityBuilder.buildNormalResponse(list); + } + + /** + * @api {POST} /v2/sysOrganization/save 6.43. 创建组织 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {String} name 组织名称 + * @apiParam {String} versionCode 组织代号 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"name":"测试公司","versionCode":"666"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_ORGAN) + public ResponseEntityDto save(@RequestBody SysOrganization sysOrganization) { + //验证唯一性 + List list = s.sysOrganizationService.validateOrganOnly(sysOrganization); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_ORGAN_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_ORGAN_NAME_REPEAT.getMessage()); + } + int num = s.sysOrganizationService.createSysOrganization(sysOrganization); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysOrganization/getOrganInfo/{id} 6.44. 获取组织详情 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 组织编号(url参数) + * @apiSuccess {Long} id 组织编号 + * @apiSuccess {String} name 组织名称 + * @apiSuccess {String} versionCode 组织代号 + * @apiSuccess {Integer} status 状态:0禁用,1启用 + * @apiSuccess {String} author 创建者 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {String} token 唯一标识 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":46,"name":"管理员","versionCode":"007","email":null,"telephone":null,"status":1,"author":"超级管理员","birth":1498722046000,"token":"4f15125c-93c0-43fb-9ed2-e0b92763fa3d"}} + */ + @RequestMapping(value = "/getOrganInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getOrganInfo(@PathVariable long id){ + SysOrganization sysOrganization = s.sysOrganizationService.findById(id); + return ResponseEntityBuilder.buildNormalResponse(sysOrganization); + } + + /** + * @api {POST} /v2/sysOrganization/update 6.45. 修改组织 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 组织编号 + * @apiParam {String} name 组织名称 + * @apiParam {String} versionCode 组织代号 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":47,"name":"测试公司2","versionCode":"666"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_ORGAN) + public ResponseEntityDto update(@RequestBody SysOrganization sysOrganization) { + //验证唯一性 + List list = s.sysOrganizationService.validateOrganOnly(sysOrganization); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_ORGAN_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_ORGAN_NAME_REPEAT.getMessage()); + } + int num = s.sysOrganizationService.updateSysOrganization(sysOrganization); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysOrganization/updateStatus 6.46. 组织停用、启用、删除 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} status 状态:0停用,1启用, -1删除 + * @apiParam {String} ids 用户Id,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"status":0,"ids":"46"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "updateStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_ORGAN_STATUS) + public ResponseEntityDto updateStates(@RequestBody Map param){ + int status = (Integer) param.get("status"); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if(ids!=""){ + String[] strs = ids.split(","); + for(int i=0;i0){ + num = s.sysOrganizationService.updateStatus(status,list); + } + return ResponseEntityBuilder.buildNormalResponse(num); + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysRoleController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysRoleController.java new file mode 100644 index 0000000..45a1736 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysRoleController.java @@ -0,0 +1,225 @@ +package com.risk.riskmanage.system.controller.v2; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.CcpBaseController; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.BaseParam; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.system.model.SysRole; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Controller("sysRoleControllerV2") +@RequestMapping("v2/sysRole") +@ResponseBody +public class SysRoleController extends CcpBaseController{ + + /** + * @api {POST} /v2/sysRole/getRoleList 6.21. 获取角色列表 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} pageNo 页数 + * @apiParam {Integer} pageSize 每页的条数 + * @apiSuccess {JSON} pager 分页信息 + * @apiSuccess {JSONArray} listRole 角色列表 + * @apiSuccess (listRole) {Integer} id 角色编号 + * @apiSuccess (listRole) {Integer} organId 组织编号 + * @apiSuccess (listRole) {String} roleName 角色名称 + * @apiSuccess (listRole) {String} author 创建者 + * @apiSuccess (listRole) {Long} birth 创建时间 + * @apiSuccess (listRole) {Integer} status 状态:0禁用,1启用 + * @apiParamExample {json} 请求示例: + * {"pageNo":1,"pageSize":2} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"listRole":[{"id":72,"organId":46,"roleName":"业务管理员","roleCode":null,"roleDesc":null,"author":"超级管理员","birth":1498725111000,"status":1},{"id":71,"organId":46,"roleName":"引擎管理员","roleCode":null,"roleDesc":null,"author":"超级管理员","birth":1498725103000,"status":1}],"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":3,"pages":2,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2],"navigateFirstPage":1,"navigateLastPage":2,"firstPage":1,"lastPage":2}}} + */ + @RequestMapping(value = "/getRoleList", method = RequestMethod.POST) + public ResponseEntityDto getRoleList(@RequestBody BaseParam baseParam){ + List listRole = null; + //获取公司管理员所在公司 + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + PageHelper.startPage(baseParam.getPageNo(),baseParam.getPageSize()); + if(organId==1){ + //获取所有未删除角色 + listRole = s.sysRoleService.getAllRoles(); + }else{ + //获取本公司未删除角色 + listRole = s.sysRoleService.getAllSysRole(organId); + } + PageInfo pageInfo = new PageInfo(listRole); + pageInfo.setList(null); + HashMap modelMap = new HashMap<>(); + modelMap.put("listRole", listRole); + modelMap.put("pager", pageInfo); + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/sysRole/getAllValidRole 6.22. 根据公司获取所有启用角色 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} organId 组织编号 + * @apiSuccess {Integer} id 角色编号 + * @apiSuccess {Integer} organId 组织编号 + * @apiSuccess {String} roleName 角色名称 + * @apiSuccess {String} author 创建者 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {Integer} status 状态:0禁用,1启用 + * @apiParamExample {json} 请求示例: + * {"organId":46} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":[{"id":70,"organId":46,"roleName":"管理员","roleCode":null,"roleDesc":null,"author":"超级管理员","birth":1498724751000,"status":1},{"id":71,"organId":46,"roleName":"引擎管理员","roleCode":null,"roleDesc":null,"author":"超级管理员","birth":1498725103000,"status":1},{"id":72,"organId":46,"roleName":"业务管理员","roleCode":null,"roleDesc":null,"author":"超级管理员","birth":1498725111000,"status":1}]} + */ + @RequestMapping(value = "getAllValidRole", method = RequestMethod.POST) + public ResponseEntityDto getAllValidRole(@RequestBody Map param){ + String author = ""; + User user = SessionManager.getLoginAccount(); + Long orgId = user.getOrganId(); + if(orgId==1){ + author = "超级管理员"; + } + + long organId = orgId; + if(param.get("organId") != null){ + organId = Long.valueOf(param.get("organId").toString()); + } + List list = s.sysRoleService.getAllValidRole(organId,author); + return ResponseEntityBuilder.buildNormalResponse(list); + } + + /** + * @api {POST} /v2/sysRole/save 6.23. 创建角色 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} organId 组织编号 + * @apiParam {String} roleName 角色名称 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"organId":1,"roleName":"浏览者"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_SYS_ROLE) + public ResponseEntityDto save(@RequestBody SysRole sysRole) { + //确保每个公司只能创建一个公司管理员 + User user = SessionManager.getLoginAccount(); + Long or_id = user.getOrganId(); + if(or_id==1){ + sysRole.setAuthor(user.getNickName()); + //查询公司管理员是否存在 + List list_role = s.sysRoleService.getOrganRoleByAuthor(sysRole); + if(list_role!=null&&list_role.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_ROLE_ADMIN_REPEAT.getCode(), ErrorCodeEnum.CREATE_ROLE_ADMIN_REPEAT.getMessage()); + } + }else{ + sysRole.setAuthor(user.getNickName()); + } + //验证名称唯一性 + List list = s.sysRoleService.validateRoleOnly(sysRole); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_ROLE_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_ROLE_NAME_REPEAT.getMessage()); + } + int num = s.sysRoleService.createSysRole(sysRole); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysRole/getRoleInfo/{id} 6.24. 获取角色详情 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 角色编号(url参数) + * @apiSuccess {Integer} id 角色编号 + * @apiSuccess {Integer} organId 组织编号 + * @apiSuccess {String} roleName 角色名称 + * @apiSuccess {String} author 创建者 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {Integer} status 状态:0禁用,1启用 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":76,"organId":46,"roleName":"浏览者","roleCode":null,"roleDesc":null,"author":"管理员","birth":1563634443000,"status":1}} + */ + @RequestMapping(value = "/getRoleInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getRoleInfo(@PathVariable long id){ + SysRole sysrole = null; + //获取管理员所在公司 + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + if(organId==1){ + sysrole = s.sysRoleService.findByAId(id); + }else{ + sysrole = s.sysRoleService.findById(id,organId); + } + return ResponseEntityBuilder.buildNormalResponse(sysrole); + } + + /** + * @api {POST} /v2/sysRole/update 6.25. 修改角色 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} id 角色编号 + * @apiParam {Integer} organId 组织编号 + * @apiParam {String} roleName 角色名称 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":77,"organId":1,"roleName":"浏览者2"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_ROLE) + public ResponseEntityDto update(@RequestBody SysRole sysRole) { + List list = s.sysRoleService.validateRoleOnly(sysRole); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_ROLE_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_ROLE_NAME_REPEAT.getMessage()); + } + int num = s.sysRoleService.updateSysRole(sysRole); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysRole/updateStatus 6.26. 角色停用、启用、删除 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} status 状态:0停用,1启用, -1删除 + * @apiParam {String} ids 用户Id,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"status":0,"ids":"77"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "updateStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_ROLE_STATUS) + public ResponseEntityDto updateStates(@RequestBody Map param){ + int status = (Integer) param.get("status"); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if(ids!=""){ + String[] strs = ids.split(","); + for(int i=0;i0){ + num = s.sysRoleService.updateStatus(status,list); + } + return ResponseEntityBuilder.buildNormalResponse(num); + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysUserController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysUserController.java new file mode 100644 index 0000000..13e5398 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/controller/v2/SysUserController.java @@ -0,0 +1,236 @@ +package com.risk.riskmanage.system.controller.v2; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.risk.riskmanage.common.basefactory.BaseController; +import com.risk.riskmanage.common.constants.OpTypeConst; +import com.risk.riskmanage.common.enums.ErrorCodeEnum; +import com.risk.riskmanage.common.exception.ApiException; +import com.risk.riskmanage.common.model.BaseParam; +import com.risk.riskmanage.common.model.ResponseEntityDto; +import com.risk.riskmanage.common.utils.ResponseEntityBuilder; +import com.risk.riskmanage.logger.ArchivesLog; +import com.risk.riskmanage.system.model.SysUser; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @apiDefine sysManager 6.系统管理 + */ +@Controller("sysUserControllerV2") +@RequestMapping("v2/sysUser") +@ResponseBody +public class SysUserController extends BaseController{ + + /** + * @api {POST} /v2/sysUser/getUserList 6.11. 获取用户列表 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} pageNo 页数 + * @apiParam {Integer} pageSize 每页的条数 + * @apiSuccess {JSON} pager 分页信息 + * @apiSuccess {JSONArray} listUser 用户列表 + * @apiSuccess (listUser) {Long} id 用户Id + * @apiSuccess (listUser) {Long} organId 组织编号 + * @apiSuccess (listUser) {String} employeeId 员工编号 + * @apiSuccess (listUser) {String} account 账号 + * @apiSuccess (listUser) {String} nickName 姓名 + * @apiSuccess (listUser) {String} cellphone 手机号 + * @apiSuccess (listUser) {String} email 邮箱 + * @apiSuccess (listUser) {Integer} status 状态:0停用,1启用, -1删除 + * @apiSuccess (listUser) {String} author 创建人 + * @apiSuccess (listUser) {Long} birth 创建时间 + * @apiSuccess (listUser) {JSON} sysRole 角色信息 + * @apiSuccess (sysRole) {Long} id 角色编号 + * @apiSuccess (sysRole) {String} roleName 角色名称 + * @apiSuccess (listUser) {JSON} sysOrgan 公司信息 + * @apiSuccess (sysOrgan) {Long} id 组织编号 + * @apiSuccess (sysOrgan) {String} name 组织名称 + * @apiParamExample {json} 请求示例: + * {"pageNo":1,"pageSize":2} + * @apiSuccessExample {json} Success-Response: + * {"status":"1","error":"00000000","msg":null,"data":{"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":12,"pages":6,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3,4,5,6],"navigateFirstPage":1,"navigateLastPage":6,"lastPage":6,"firstPage":1},"listUser":[{"id":149,"organId":46,"employeeId":"011","account":"rong360","password":"4m774i0~4m2&5n1c4i55296#2@1j010i","nickName":"rong","email":"11@qq.com","cellphone":"15222222222","qq":null,"latestTime":null,"latestIp":null,"status":1,"birth":1613801940000,"author":"超级管理员","sysRole":{"id":70,"organId":0,"roleName":"管理员","roleCode":null,"roleDesc":null,"author":null,"birth":null,"status":0},"sysOrgan":{"id":46,"name":"管理员","versionCode":null,"email":null,"telephone":null,"status":0,"author":null,"birth":null,"token":null}},{"id":148,"organId":46,"employeeId":"010","account":"yljr","password":"4m774i0~4m2&5n1c4i55296#2@1j010i","nickName":"yljr","email":"11@qq.com","cellphone":"15222222222","qq":null,"latestTime":null,"latestIp":null,"status":1,"birth":1613720093000,"author":"超级管理员","sysRole":{"id":70,"organId":0,"roleName":"管理员","roleCode":null,"roleDesc":null,"author":null,"birth":null,"status":0},"sysOrgan":{"id":46,"name":"管理员","versionCode":null,"email":null,"telephone":null,"status":0,"author":null,"birth":null,"token":null}}]}} + */ + @RequestMapping(value = "getUserList", method = RequestMethod.POST) + public ResponseEntityDto getUserList(@RequestBody BaseParam baseParam){ + SysUser sysUser = new SysUser(); + //获取登录人所在公司 + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + sysUser.setOrganId(organId); + PageHelper.startPage(baseParam.getPageNo(), baseParam.getPageSize()); + List listUser = s.sysUserService.getAllUsers(sysUser); + PageInfo pageInfo = new PageInfo(listUser); + pageInfo.setList(null); + HashMap modelMap = new HashMap<>(); + modelMap.put("listUser", listUser); + modelMap.put("pager", pageInfo); + return ResponseEntityBuilder.buildNormalResponse(modelMap); + } + + /** + * @api {POST} /v2/sysUser/save 6.12. 创建用户 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} organId 组织编号 + * @apiParam {String} employeeId 员工编号 + * @apiParam {String} account 账号 + * @apiParam {String} nickName 姓名 + * @apiParam {String} cellphone 手机号 + * @apiParam {String} email 邮箱 + * @apiParam {JSON} sysRole 角色信息 + * @apiParam (sysRole) {Long} id 角色编号 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"organId":46,"employeeId":"012","account":"testuser","nickName":"张三","email":"11@qq.com","cellphone":"15222222222","sysRole":{"id":71}} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "save", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.SAVE_SYS_USER) + public ResponseEntityDto save(@RequestBody SysUser sysUser){ + String nickName = sysUser.getNickName(); + if(nickName.equals("超级管理员")){ + throw new ApiException(ErrorCodeEnum.CREATE_USER_NAME_ERROR.getCode(), ErrorCodeEnum.CREATE_USER_NAME_ERROR.getMessage()); + } + String account = sysUser.getAccount(); + sysUser.setAccount(account); + //验证唯一性 + List list = s.sysUserService.validateUserOnly(sysUser); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_USER_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_USER_NAME_REPEAT.getMessage()); + } + long num = s.sysUserService.createSysUser(sysUser); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysUser/getUserInfo/{id} 6.13. 获取用户详情 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 用户Id(url参数) + * @apiSuccess {Long} id 用户Id + * @apiSuccess {Long} organId 组织编号 + * @apiSuccess {String} employeeId 员工编号 + * @apiSuccess {String} account 账号 + * @apiSuccess {String} nickName 姓名 + * @apiSuccess {String} cellphone 手机号 + * @apiSuccess {String} email 邮箱 + * @apiSuccess {Integer} status 状态:0停用,1启用, -1删除 + * @apiSuccess {String} author 创建人 + * @apiSuccess {Long} birth 创建时间 + * @apiSuccess {JSON} sysRole 角色信息 + * @apiSuccess (sysRole) {Long} id 角色编号 + * @apiSuccess (sysRole) {String} roleName 角色名称 + * @apiSuccess {JSON} sysOrgan 公司信息 + * @apiSuccess (sysOrgan) {Long} id 组织编号 + * @apiSuccess (sysOrgan) {String} name 组织名称 + * @apiParamExample {json} 请求示例: + * {} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":{"id":149,"organId":46,"employeeId":"011","account":"rong360","password":"4m774i0~4m2&5n1c4i55296#2@1j010i","nickName":"rong","email":"11@qq.com","cellphone":"15222222222","qq":null,"latestTime":null,"latestIp":null,"status":1,"birth":1613801940000,"author":"超级管理员","sysRole":{"id":70,"organId":0,"roleName":"管理员","roleCode":null,"roleDesc":null,"author":null,"birth":null,"status":0},"sysOrgan":{"id":46,"name":null,"versionCode":null,"email":null,"telephone":null,"status":0,"author":null,"birth":null,"token":null}}} + */ + @RequestMapping(value = "/getUserInfo/{id}", method = RequestMethod.POST) + public ResponseEntityDto getUserInfo(@PathVariable long id) { + SysUser sysUser = new SysUser(); + sysUser.setId(id); + //获取用户所在公司 + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + sysUser.setOrganId(organId); + SysUser result = s.sysUserService.findById(sysUser); + return ResponseEntityBuilder.buildNormalResponse(result); + } + + /** + * @api {POST} /v2/sysUser/update 6.14. 修改用户 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 用户Id + * @apiParam {Long} organId 组织编号 + * @apiParam {String} employeeId 员工编号 + * @apiParam {String} account 账号 + * @apiParam {String} nickName 姓名 + * @apiParam {String} cellphone 手机号 + * @apiParam {String} email 邮箱 + * @apiParam {JSON} sysRole 角色信息 + * @apiParam (sysRole) {Long} id 角色编号 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":150,"organId":46,"employeeId":"012","account":"testuser2","nickName":"张三","email":"11@qq.com","cellphone":"15222222222","sysRole":{"id":72}} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "update", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_USER) + public ResponseEntityDto update(@RequestBody SysUser sysUser) { + String account = sysUser.getAccount(); + sysUser.setAccount(account); + List list = s.sysUserService.validateUserOnly(sysUser); + if(list!=null&&list.size()>0){ + throw new ApiException(ErrorCodeEnum.CREATE_USER_NAME_REPEAT.getCode(), ErrorCodeEnum.CREATE_USER_NAME_REPEAT.getMessage()); + } + int num = s.sysUserService.updateSysUser(sysUser); + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysUser/updateStatus 6.15. 用户停用、启用、删除 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Integer} status 状态:0停用,1启用, -1删除 + * @apiParam {String} ids 用户Id,逗号分隔 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"status":0,"ids":"150,151"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":2} + */ + @RequestMapping(value = "updateStatus", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDATE_SYS_USER_STATUS) + public ResponseEntityDto updateStatus(@RequestBody Map param){ + int status = (Integer) param.get("status"); + String ids = (String)param.get("ids"); + int num = 0; + List list = new ArrayList(); + + if(ids!=""){ + String[] strs = ids.split(","); + for(int i=0;i0){ + num = s.sysUserService.updateStates(status,list); + } + return ResponseEntityBuilder.buildNormalResponse(num); + } + + /** + * @api {POST} /v2/sysUser/updatePassword 6.16. 修改密码 + * @apiGroup sysManager + * @apiVersion 2.0.0 + * @apiParam {Long} id 用户Id + * @apiParam {String} password 新密码 + * @apiSuccess {String} status 状态: 1成功, 0失败 + * @apiParamExample {json} 请求示例: + * {"id":136,"password":"654321"} + * @apiSuccessExample {json} 成功返回数据示例: + * {"status":"1","error":"00000000","msg":null,"data":1} + */ + @RequestMapping(value = "updatePassword", method = RequestMethod.POST) + @ArchivesLog(operationType = OpTypeConst.UPDTE_PASSWORD) + public ResponseEntityDto updatePassword(@RequestBody SysUser sysUser){ + int num = s.sysUserService.updatePassword(sysUser); + return ResponseEntityBuilder.buildNormalResponse(num); + } + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/DepartmentMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/DepartmentMapper.java new file mode 100644 index 0000000..c955fe3 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/DepartmentMapper.java @@ -0,0 +1,25 @@ + +package com.risk.riskmanage.system.mapper; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.system.model.Department; + +/** + * ClassName:DepartmentMapper
+ * Description: 部门mapper.
+ * @see + */ +public interface DepartmentMapper extends BaseMapper { + + /** + * isExist:(根据相应的条件判断是否存在重复值).
+ * @return 返回行数 + */ + Integer isExist(Department department); + + /** + * deleteDept:(根据部门ids删除部门信息).
+ */ + void deleteDept(Long []deletIds); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/MenuMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/MenuMapper.java new file mode 100644 index 0000000..65791f1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/MenuMapper.java @@ -0,0 +1,60 @@ + +package com.risk.riskmanage.system.mapper; + +import java.util.List; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.system.model.Menu; + +/** + * ClassName:MenuMapper
+ * Description: 菜单mapper.
+ * @see + */ +public interface MenuMapper extends BaseMapper { + /** + * isExist:(根据相应的条件判断是否存在重复值).
+ * @author wz + * @param menu 菜单实体类 + * @return 返回行数 + */ + Integer isExist(Menu menu); + + /** + * deleteRole:(根据菜单ids删除菜单信息).
+ * @author wz + * @param deletIds 菜单ids + */ + void deleteMenu(Long []deletIds); + + /** + * selectByRole:(根据角色查询).
+ * @author wz + * @param menu + * @return 查询的菜单类 + */ + List selectByRole(Menu menu); + + /** + * deleteMenuRole:(删除菜单角色关联表).
+ * @author wz + * @param menu 菜单实体类 + */ + void deleteMenuRole(Menu menu); + + /** + * insertMenuRole:(添加菜单角色关联表).
+ * @author wz + * @param menu 菜单实体类 + */ + void insertMenuRole(Menu menu); + + /** + * findUserMenuByUser:(根据登录用户名查询相应授权菜单列表).
+ * @author wz + * @param loginName + * @return 根据登录用户名查询相应授权菜单列表 + */ + List findUserMenuByUser(String loginName); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/RoleMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/RoleMapper.java new file mode 100644 index 0000000..7f40884 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/RoleMapper.java @@ -0,0 +1,30 @@ + +package com.risk.riskmanage.system.mapper; + +import com.risk.riskmanage.system.model.Role; +import com.risk.riskmanage.common.mapper.BaseMapper; + + +/** + * ClassName:RoleMapper
+ * Description: 角色管理mapper层.
+ * @see + */ +public interface RoleMapper extends BaseMapper{ + + /** + * isExist:(根据相应的条件判断是否存在重复值).
+ * @author wz + * @param role 角色实体类 + * @return 返回行数 + */ + Integer isExist(Role role); + + /** + * deleteRole:(根据角色ids删除角色信息).
+ * @author wz + * @param deletIds 角色ids + */ + void deleteRole(Long []deletIds); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysMenuMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..96477ce --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysMenuMapper.java @@ -0,0 +1,112 @@ + +package com.risk.riskmanage.system.mapper; + +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysMenu; + + +public interface SysMenuMapper { + + /** + * 查询所有资源 + * @return + */ + public List getAllSysMenu(); + /** + * 查询单条资源 + * @param id + * @return + */ + public SysMenu findById(long id); + /** + * 新增资源 + * @param sysMenu + * @return + */ + public int createSysMenu(SysMenu sysMenu); + /** + * 修改资源 + * @param sysMenu + * @return + */ + public int updateSysMenu(SysMenu sysMenu); + /** + * 删除资源 + * @param id + * @return + */ + public int deleteSysMenu(long id); + + /** + * 修改资源状态 + * @param id + * @param idList + * @return + */ + public int updateStatus(@Param("status") int status, @Param("list") List list); + + /** + * 通过父节点查询子菜单 + * @param id + * @return + */ + public List findChildByParent(long parentId); + + /** + * 通过角色菜单关系表及父节点查询菜单 + */ + public List findRoleMenuByParent(@Param ("parentId")long parentId, @Param("roleId") long roleId); + + /** + * 保存角色菜单关系 + */ + public int insertRoleMenu(@Param("roleId") long roleId ,@Param("list") List list); + + /** + * 删除角色菜单关系(实现修改) + */ + public int deleteRoleMenu(long roleId); + /** + * 分配资源树 + * @param roleId + * @return + */ + public List findTreeList(long roleId); + /** + * 获取所有启用资源 + * @return + */ + public List getAllValidMenu(); + + /** + * 获取引擎资源树 + */ + public List> getEngineTree(long roleId); + + /** + * 保存引擎树 + */ + public int insertRoleEngine(@Param ("roleId") long roleId,@Param ("list") List list); + /** + * 删除引擎树(实现修改) + */ + public int deleteRoleEngine(long roleId); + + /** + * 验证唯一性 + */ + public List validateMenuOnly(SysMenu sysMenu); + /** + * 验证是否有查看菜单的权限 + */ + public List validatePermission(@Param("roleId")long roleId,@Param("url")String url); + /** + * 验证是否有该引擎的权限 + */ + public List> validateEnginePermission(@Param("roleId")long roleId,@Param("id_e") String id_e); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysOrganizationMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysOrganizationMapper.java new file mode 100644 index 0000000..c9b8369 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysOrganizationMapper.java @@ -0,0 +1,59 @@ + +package com.risk.riskmanage.system.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysOrganization; + + + +public interface SysOrganizationMapper { + /** + * 查询所有公司 + * @return + */ + public List getAllSysOrganization(); + /** + * 获取所有启用公司 + * @return + */ + public List getAllValidOrgan(); + /** + * 查询单个公司 + * @param id + * @return + */ + public SysOrganization findById(long id); + /** + * 创建公司 + * @param SysOrganization + * @return + */ + public int createSysOrganization(SysOrganization SysOrganization); + /** + * 修改组织 + * @param SysOrganization + * @return + */ + public int updateSysOrganization(SysOrganization SysOrganization); + /** + * 删除组织 + * @param id + * @return + */ + public int deleteSysOrganization(long id); + + /** + * 修改公司状态(停用/启用、删除) + * @param states + * @return + */ + public int updateStatus(@Param ("status") int status,@Param ("list") List list); + /** + * 验证唯一性 + */ + public List validateOrganOnly(SysOrganization SysOrganization); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysRoleMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..915e860 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysRoleMapper.java @@ -0,0 +1,91 @@ + +package com.risk.riskmanage.system.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysRole; + + + +public interface SysRoleMapper { + /** + * 获取本组织所有角色 + * @return + */ + public List getAllSysRole(long organId); + /** + * 获取所有角色 + */ + public List getAllRoles(); + /** + * 获取本组织启用的角色 + * @param organId + * @return + */ + public List getAllValidRole(@Param("organId")long organId,@Param("author")String author); + /** + * 查询本组织的单个角色 + * @param id + * @return + */ + public SysRole findById(@Param("id") long id, @Param("organId") long organId); + /** + * 查询单个角色 + * @param id + * @return + */ + public SysRole findByAId(long id); + + /** + * 创建本组织角色 + * @param sysRole + * @return + */ + public int createSysRole(SysRole sysRole); + /** + * 修改本公司角色 + * @param sysRole + * @return + */ + public int updateSysRole(SysRole sysRole); + /** + * 删除本公司角色 + * @param id + * @return + */ + public int deleteSysRole(long id); + /** + * 创建公司管理员角色 + */ + public int createOrganRole(SysRole sysRole); + /** + * 修改角色状态(停用、启用、删除) + * @param id + * @param idList + * @return + */ + public int updateStatus(@Param("status") int status, @Param("list") List list); + /** + * 根据角色查询角色所在公司 + */ + public long getOrganByRoleId(long roleId); + + /** + * 验证角色唯一性 + */ + public List validateRoleOnly(SysRole sysRole); + /** + * 查询公司管理员角色id + */ + public List getOrganRoleByAuthor(SysRole sysRole); + /** + * 删除本公司所有角色 + */ + public int deleteAllRoles(long organId); + /** + * 删除多个公司的所有角色 + */ + public int deleteRolesByOrgans(@Param("status") Integer status,@Param("list")List list); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysUserMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..2efd2dd --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/SysUserMapper.java @@ -0,0 +1,124 @@ + +package com.risk.riskmanage.system.mapper; + +import java.util.List; + + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysUser; + + + + + +public interface SysUserMapper { + /** + * 查询搜索用户 + */ + public List getAllUsers(SysUser sysUser); + /** + * 查询本组织单个用户 + * @param + * @return + */ + public SysUser findById(SysUser sysUser); + /** + * 创建本公司用户 + * @param sysUser + * @return + */ + public long createSysUser(SysUser sysUser); + /** + * 添加用户角色关系 + * @param userId + * @param roleId + * @return + */ + public int insertUserRole(@Param("userId") long userId, + @Param("roleId") long roleId, + @Param("organId") long organId); + /** + * 修改本公司用户 + * @param sysUser + * @return + */ + public int updateSysUser(SysUser sysUser); + /** + * 修改用户角色关系 + * @param sysUser + * @return + */ + public int updateUserRole(SysUser sysUser); + /** + * 删除本公司用户 + * @param id + * @return + */ + public int deleteSysUser(long id); + /** + * 修改用户状态(停用/启用/删除) + * @param states + * @return + */ + public int updateStates(@Param ("status") int status,@Param ("list") List list); + /** + * 通过用户id查询角色 + * @param userId + * @return + */ + public SysUser findRoleByUserId(long userId); + + /** + * 重置密码 + */ + public int resetPassword(SysUser sysUser); + + /** + * 修改密码 + */ + public int updatePassword(SysUser sysUser); + + /** + * 本公司账号员工编号唯一性 + */ + public List validateUserOnly(SysUser sysUser); + + /** + * 删除本公司的所有账号 + */ + public int deleteAllUser(long organId); + /** + * 删除本公司的用户角色关系 + */ + public int deleteAllUserRole(long organId); + /** + * 删除多个公司的所有账号 + */ + public int deleteUsersByOrgans(@Param("status")Integer status,@Param("list")List list); + /** + * 删除多个公司的用户角色关系 + */ + public int deleteUserRoleByOrgan(@Param("status")Integer status,@Param("list")List list); + /** + * 删除角色账号关联关系 + */ + public int deleteUserRoleById(long RoleId); + /** + * 查询本角色下的所有账号 + */ + public List getUserIdsByRoleId(long roleId); + /** + * 删除角色关联的所有账号 + */ + public int deleteUsersByIds(@Param("status") Integer status,@Param("list")List list); + + /** + * 批量删除角色账号关系 + */ + public int deleteBatchUserRole(@Param("status") Integer status,@Param("list")List list); + /** + * 批量查询角色关联的账号 + */ + public List getBatchUserIdsByRoleId(List list); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/UserMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/UserMapper.java new file mode 100644 index 0000000..a4675f9 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/mapper/UserMapper.java @@ -0,0 +1,70 @@ +package com.risk.riskmanage.system.mapper; + +import com.risk.riskmanage.common.mapper.BaseMapper; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.model.UserRole; + +import java.util.List; +import java.util.Set; + +/** + * @ClassName: UserMapper
+ * @Description: 后台用户管理mapper接口.
+ */ +public interface UserMapper extends BaseMapper { + /** + * isExist:(根据相应的条件判断是否存在重复值).
+ * + * @param user 用户实体类 + * @return 返回行数 + * @author wz + */ + Integer isExist(User user); + + /** + * selectLoginInfo:(用户登录判断).
+ * + * @param user 用户实体类 + * @return User + * @author wz + */ + User selectLoginInfo(User user); + + /** + * deleteDept:(根据用户ids删除用户信息).
+ * + * @param user 用户id + * @author wz + */ + void deleteUser(User user); + + /** + * insertUserRole:(增加记录到用户角色关系表).
+ * + * @param userRolelist 用户角色关系list + * @author wz + */ + void insertUserRole(List userRolelist); + + /** + * deleteUserRole:(根据用户ids删除用户角色关联表信息).
+ * + * @param deletIds 用户ids + * @author wz + */ + void deleteUserRole(Long[] deletIds); + + /** + * findUserMenuSet:(根据用户名获取所授权的菜单).
+ * + * @param loginName + * @return 根据用户名获取所授权的菜单 + * @author wz + */ + Set findUserMenuSet(String loginName); + + User findUserById(Integer userId); + + String findNickNameById(Long id); + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Department.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Department.java new file mode 100644 index 0000000..8e9bb06 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Department.java @@ -0,0 +1,122 @@ +package com.risk.riskmanage.system.model; + +import java.io.Serializable; + +import com.risk.riskmanage.common.model.BasePage; + +/** + * ClassName:DepartmentVo
+ * Description: 后台部门管理实体类.
+ */ +public class Department extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 部门id + */ + private Long id; + /** + * 部门名称 + */ + private String deptName; + /** + * 部门编号 + */ + private String deptCode; + /** + * 部门排序 + */ + private Integer deptOrder; + /** + * 状态 + */ + private Integer status; + /** + * 创建人 + */ + private String creator; + /** + * 创建时间 + */ + private String createTime; + /** + * 最后修改人 + */ + private String updater; + /** + * 最后修改时间 + */ + private String updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeptCode() { + return deptCode; + } + + public void setDeptCode(String deptCode) { + this.deptCode = deptCode; + } + + public Integer getDeptOrder() { + return deptOrder; + } + + public void setDeptOrder(Integer deptOrder) { + this.deptOrder = deptOrder; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getUpdater() { + return updater; + } + + public void setUpdater(String updater) { + this.updater = updater; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Menu.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Menu.java new file mode 100644 index 0000000..f97484c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Menu.java @@ -0,0 +1,249 @@ +package com.risk.riskmanage.system.model; + +import java.io.Serializable; +import java.util.Arrays; + +import com.risk.riskmanage.common.model.BasePage; + +/** + * ClassName:MenuVo
+ * Description: 系统菜单管理界面.
+ */ +public class Menu extends BasePage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 菜单主键id + */ + private Long id; + /** + * 父id + */ + private Long pid; + /** + * 菜单名称 + */ + private String name; + /** + * 菜单类型 + */ + private Integer type; + /** + * 菜单顺序 + */ + private Integer muneOrder; + /** + * easyui展开 + */ + private String state; + /** + * 菜单链接 + */ + private String url; + /** + * 菜单编号 + */ + private String menuCode; + /** + * 菜单图标 + */ + private String icon; + /** + * 菜单描述 + */ + private String description; + /** + * 菜单状态 + */ + private Integer status; + /** + * 创建人 + */ + private String creator; + /** + * 创建时间 + */ + private String createTime; + /** + * 最后修改人 + */ + private String updater; + /** + * 最后修改时间 + */ + private String updateTime; + + /** + * 父类 + */ + private Long _parentId; + + /** + * 角色编码 + */ + private String roleCode; + + /** + * 删除ids数组 + */ + private Long []deletIds; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public Long[] getDeletIds() { + return deletIds; + } + + public void setDeletIds(Long[] deletIds) { + this.deletIds = deletIds; + } + + public String getRoleCode() { + return roleCode; + } + + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + + public Long get_parentId() { + return _parentId; + } + + public void set_parentId(Long _parentId) { + this._parentId = _parentId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPid() { + return pid; + } + + public void setPid(Long pid) { + this.pid = pid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getMuneOrder() { + return muneOrder; + } + + public void setMuneOrder(Integer muneOrder) { + this.muneOrder = muneOrder; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getMenuCode() { + return menuCode; + } + + public void setMenuCode(String menuCode) { + this.menuCode = menuCode; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getUpdater() { + return updater; + } + + public void setUpdater(String updater) { + this.updater = updater; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + @Override + public String toString() { + return "Menu [id=" + id + ", pid=" + pid + ", name=" + name + ", type=" + + type + ", muneOrder=" + muneOrder + ", state=" + state + + ", url=" + url + ", menuCode=" + menuCode + ", icon=" + icon + + ", description=" + description + ", status=" + status + + ", creator=" + creator + ", createTime=" + createTime + + ", updater=" + updater + ", updateTime=" + updateTime + + ", _parentId=" + _parentId + ", roleCode=" + roleCode + + ", deletIds=" + Arrays.toString(deletIds) + "]"; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/MenuJson.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/MenuJson.java new file mode 100644 index 0000000..9f2856d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/MenuJson.java @@ -0,0 +1,57 @@ +package com.risk.riskmanage.system.model; + +import java.util.List; + +/** + * ClassName:MenuJson
+ * Description: 转化成前端需要菜单实体类.
+ */ +public class MenuJson { + + private String menuid; + private String icon; + private String menuname; + private String url; + private List menus; + + public String getMenuid() { + return menuid; + } + + public void setMenuid(String menuid) { + this.menuid = menuid; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getMenuname() { + return menuname; + } + + public void setMenuname(String menuname) { + this.menuname = menuname; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public List getMenus() { + return menus; + } + + public void setMenus(List menus) { + this.menus = menus; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Pager.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Pager.java new file mode 100644 index 0000000..c298da1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Pager.java @@ -0,0 +1,78 @@ +package com.risk.riskmanage.system.model; + +public class Pager { + + private int rows = 10; + private int totalResult; + private int page; + + private String sortField; + private String order; + + public Pager() { + } + + public Pager(int totalResult) { + this.totalResult = totalResult; + } + + public int getRows() { + return rows; + } + + public void setRows(int rows) { + this.rows = rows; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotalPage() { + return (totalResult + rows - 1) / rows; + } + + public int getTotalResult() { + return totalResult; + } + + public void setTotalResult(int totalResult) { + this.totalResult = totalResult; + } + + public int getCurrentResult() { + if (page == 0) return 0; + else return (page - 1) * rows; + } + + public String getSortField() { + return sortField; + } + + public void setSortField(String sortField) { + this.sortField = sortField; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public int getPageCount() { + int pagecount = 0; + if (totalResult % rows == 0) { + pagecount = totalResult / rows; + } else { + pagecount = totalResult / rows + 1; + } + return pagecount; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Role.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Role.java new file mode 100644 index 0000000..3e99a36 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/Role.java @@ -0,0 +1,132 @@ +package com.risk.riskmanage.system.model; + +import java.io.Serializable; + +import com.risk.riskmanage.common.model.BasePage; + +/** + * ClassName:RoleVo
+ * Description: 角色实体类.
+ */ +public class Role extends BasePage implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long id; + /** + * 角色名称 + */ + private String name; + /** + * 角色编码 + */ + private String roleCode; + /** + * 角色描述 + */ + private String descripttion; + /** + * 状态 + */ + private Integer status; + /** + * 创建人 + */ + private String creator; + /** + * 创建时间 + */ + private String createTime; + /** + * 最后修改人 + */ + private String updater; + /** + * 最后修改时间 + */ + private String updateTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getRoleCode() { + return roleCode; + } + + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + + public String getDescripttion() { + return descripttion; + } + + public void setDescripttion(String descripttion) { + this.descripttion = descripttion; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getUpdater() { + return updater; + } + + public void setUpdater(String updater) { + this.updater = updater; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + @Override + public String toString() { + return "Role [id=" + id + ", name=" + name + ", roleCode=" + roleCode + + ", descripttion=" + descripttion + ", status=" + status + + ", creator=" + creator + ", createTime=" + createTime + + ", updater=" + updater + ", updateTime=" + updateTime + "]"; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysMenu.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysMenu.java new file mode 100644 index 0000000..57103e5 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysMenu.java @@ -0,0 +1,33 @@ +package com.risk.riskmanage.system.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.util.Date; + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = false) +public class SysMenu implements Serializable { + + private static final long serialVersionUID = -1L; + + private long id; + private long userId;//分配者 + private String name; //资源名称 + private String code;//资源代号 + private String url;//路径 + private long parentId;//父节点 + private String des; + private Date birth;//创建时间 + private String icon;//图标 + private Integer sort; // 菜单顺序 + private int status;//状态 + private long roleId;//角色id + private boolean checked;//菜单默认选中 + private boolean chkDisabled;//节点是否禁用 + private boolean isHidden;//节点是否隐藏 + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysOrganization.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysOrganization.java new file mode 100644 index 0000000..ee1d046 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysOrganization.java @@ -0,0 +1,89 @@ + +package com.risk.riskmanage.system.model; + +import java.io.Serializable; +import java.util.Date; + + + +public class SysOrganization implements Serializable { + + private static final long serialVersionUID = -1L; + + private long id;//组织编号 + private String name;//组织名称 + private String code;//组织代号 + private String email; + private String telephone; + private int status;//0禁用1启用 + private String author;//创建者 + private Date birth;//创建时间 + private String token;//唯一标识 + + + + public String getToken() { + return token; + } + public void setToken(String token) { + this.token = token; + } + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + } + public long getId() { + return id; + } + public void setId(long id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + public String getTelephone() { + return telephone; + } + public void setTelephone(String telephone) { + this.telephone = telephone; + } + public int getStatus() { + return status; + } + public void setStatus(int status) { + this.status = status; + } + public Date getBirth() { + return birth; + } + public void setBirth(Date birth) { + this.birth = birth; + } + @Override + public String toString() { + return "SysOrganization [id=" + id + ", name=" + name + ", versionCode=" + code + + ", email=" + email + ", telephone=" + telephone + ", status=" + + status + ", author=" + author + ", birth=" + birth + + ", token=" + token + "]"; + } + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysRole.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysRole.java new file mode 100644 index 0000000..13a5124 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysRole.java @@ -0,0 +1,83 @@ + +package com.risk.riskmanage.system.model; + +import java.io.Serializable; +import java.util.Date; + + + +public class SysRole implements Serializable { + + private static final long serialVersionUID = -1L; + + private long id; + private long organId; + private String roleName; + private String roleCode;//角色代号 + private String roleDesc; + private String author;//创建者 + private Date birth;//创建时间 + private int status; //状态0禁用1启用 + + + + + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + } + public Date getBirth() { + return birth; + } + public void setBirth(Date birth) { + this.birth = birth; + } + public long getOrganId() { + return organId; + } + public void setOrganId(long organId) { + this.organId = organId; + } + public long getId() { + return id; + } + public void setId(long id) { + this.id = id; + } + public String getRoleName() { + return roleName; + } + public void setRoleName(String roleName) { + this.roleName = roleName; + } + public String getRoleCode() { + return roleCode; + } + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + public String getRoleDesc() { + return roleDesc; + } + public void setRoleDesc(String roleDesc) { + this.roleDesc = roleDesc; + } + public int getStatus() { + return status; + } + public void setStatus(int status) { + this.status = status; + } + @Override + public String toString() { + return "SysRole [id=" + id + ", organId=" + organId + ", roleName=" + + roleName + ", roleCode=" + roleCode + ", roleDesc=" + roleDesc + + ", author=" + author + ", birth=" + birth + ", status=" + + status + "]"; + } + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysSuccess.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysSuccess.java new file mode 100644 index 0000000..dc40640 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysSuccess.java @@ -0,0 +1,40 @@ +package com.risk.riskmanage.system.model; + +public class SysSuccess { + + private boolean success; + private String msg; + + public SysSuccess() { + } + + public SysSuccess(boolean value, String msg) { + super(); + this.success = value; + this.msg = msg; + } + + public boolean getSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + @Override + public String toString() { + return "SysSuccess [success=" + success + ", msg=" + msg + "]"; + } + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysUser.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysUser.java new file mode 100644 index 0000000..3d09363 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/SysUser.java @@ -0,0 +1,138 @@ +package com.risk.riskmanage.system.model; + +import java.io.Serializable; +import java.util.Date; + +public class SysUser implements Serializable { + + private static final long serialVersionUID = -1L; + + private long id;//用户(主键) + private long organId;//组织编号 + private String employeeId;//员工编号 + private String account;//账户 + private String password; + private String nickName;//昵称 + private String email; + private String cellphone; + private String qq; + private String latestTime; + private String latestIp; + private int status; + private Date birth;//创建时间 + private String author;//创建人 + private SysRole sysRole;//角色对象 + private SysOrganization sysOrgan;//公司对象 + + + + + + public SysOrganization getSysOrgan() { + return sysOrgan; + } + public void setSysOrgan(SysOrganization sysOrgan) { + this.sysOrgan = sysOrgan; + } + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + } + public String getEmployeeId() { + return employeeId; + } + public void setEmployeeId(String employeeId) { + this.employeeId = employeeId; + } + public long getId() { + return id; + } + public void setId(long id) { + this.id = id; + } + public long getOrganId() { + return organId; + } + public void setOrganId(long organId) { + this.organId = organId; + } + public String getAccount() { + return account; + } + public void setAccount(String account) { + this.account = account; + } + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + public String getNickName() { + return nickName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + public String getCellphone() { + return cellphone; + } + public void setCellphone(String cellphone) { + this.cellphone = cellphone; + } + public String getQq() { + return qq; + } + public void setQq(String qq) { + this.qq = qq; + } + public String getLatestTime() { + return latestTime; + } + public void setLatestTime(String latestTime) { + this.latestTime = latestTime; + } + public String getLatestIp() { + return latestIp; + } + public void setLatestIp(String latestIp) { + this.latestIp = latestIp; + } + public int getStatus() { + return status; + } + public void setStatus(int status) { + this.status = status; + } + public SysRole getSysRole() { + return sysRole; + } + public void setSysRole(SysRole sysRole) { + this.sysRole = sysRole; + } + public Date getBirth() { + return birth; + } + public void setBirth(Date birth) { + this.birth = birth; + } + @Override + public String toString() { + return "SysUser [id=" + id + ", organId=" + organId + ", employeeId=" + + employeeId + ", account=" + account + ", password=" + password + + ", nickName=" + nickName + ", email=" + email + ", cellphone=" + + cellphone + ", qq=" + qq + ", latestTime=" + latestTime + + ", latestIp=" + latestIp + ", status=" + status + ", birth=" + + birth + ", author=" + author + ", sysOrgan="+sysOrgan+", sysRole=" + sysRole + "]"; + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/User.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/User.java new file mode 100644 index 0000000..36b6a22 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/User.java @@ -0,0 +1,205 @@ +package com.risk.riskmanage.system.model; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.Date; + +import com.risk.riskmanage.common.model.BasePage; + +/** + * @ClassName: UserVo
+ * @Description: 后台用户实体类.
+ */ +public class User extends BasePage implements Serializable { + + /** + * serialVersionUID:TODO(序列化对象使用) + */ + private static final long serialVersionUID = 1L; + + /** + * 关系id + */ + private Long userId; + /** + * 企业id + */ + private Long organId; + /** + * 用户id + */ + private String account; + /** + * 用户密码 + */ + private String password; + + /** + * 昵称 + */ + private String nickName; + /** + * 邮箱 + */ + private String email; + /** + * 电话 + */ + private String cellphone; + /** + * qq + */ + private String qq; + /** + * + */ + private String latestTime; + /** + * 最后一次登录IP + */ + private String latestIp; + /** + * 状态 + */ + private Integer status; + /** + * 创建时间 + */ + private Date birth; + /** + * 创建时间 + */ + private Long parentId; + /** + * 删除ids数组 + */ + private Long []deletIds; + + public Long[] getDeletIds() { + return deletIds; + } + + public void setDeletIds(Long[] deletIds) { + this.deletIds = deletIds; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getOrganId() { + return organId; + } + + public void setOrganId(Long organId) { + this.organId = organId; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCellphone() { + return cellphone; + } + + public void setCellphone(String cellphone) { + this.cellphone = cellphone; + } + + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq; + } + + + + public String getLatestTime() { + return latestTime; + } + + public void setLatestTime(String latestTime) { + this.latestTime = latestTime; + } + + public String getLatestIp() { + return latestIp; + } + + public void setLatestIp(String latestIp) { + this.latestIp = latestIp; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Date getBirth() { + return birth; + } + + public void setBirth(Date birth) { + this.birth = birth; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + @Override + public String toString() { + return "User [userId=" + userId + ", organId=" + organId + ", account=" + + account + ", password=" + password + ", nickName=" + nickName + + ", email=" + email + ", cellphone=" + cellphone + ", qq=" + qq + + ", latestTime=" + latestTime + ", latestIp=" + latestIp + + ", status=" + status + ", birth=" + birth + ", parentId=" + + parentId + ", deletIds=" + Arrays.toString(deletIds) + "]"; + } + + + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/UserRole.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/UserRole.java new file mode 100644 index 0000000..e7d4983 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/UserRole.java @@ -0,0 +1,54 @@ + +package com.risk.riskmanage.system.model; + +import java.io.Serializable; + +import com.risk.riskmanage.common.model.BasePage; + +/** + * ClassName:UserRoleVo
+ * Description: 用户角色实体类.
+ */ +public class UserRole extends BasePage implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + private Long id; + /** + * 用户id + */ + private Long userId; + /** + * 角色编码 + */ + private String roleCode; + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public String getRoleCode() { + return roleCode; + } + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + @Override + public String toString() { + return "UserRole [id=" + id + ", userId=" + userId + ", roleCode=" + + roleCode + "]"; + } + + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/request/LoginInfoParam.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/request/LoginInfoParam.java new file mode 100644 index 0000000..619ce56 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/request/LoginInfoParam.java @@ -0,0 +1,9 @@ +package com.risk.riskmanage.system.model.request; + +import lombok.Data; + +@Data +public class LoginInfoParam { + private String account;// 账号 + private String password;// 密码 +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/response/SysMenuVo.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/response/SysMenuVo.java new file mode 100644 index 0000000..d667580 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/model/response/SysMenuVo.java @@ -0,0 +1,41 @@ +package com.risk.riskmanage.system.model.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.io.Serializable; +import java.util.List; + +/** + * 系统菜单返回对象 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ToString(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SysMenuVo implements Serializable { + private static final long serialVersionUID = 621966254529550199L; + + /** + * 菜单名称 + */ + private String title; + + /** + * 菜单地址 + */ + private String index; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 子菜单 + */ + private List subs; + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/DepartmentService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/DepartmentService.java new file mode 100644 index 0000000..4cc6582 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/DepartmentService.java @@ -0,0 +1,70 @@ + +package com.risk.riskmanage.system.service; + +import java.util.List; + +import com.risk.riskmanage.system.model.Department; + +/** + * ClassName:DepartmentService
+ * Description: 部门service接口.
+ */ +public interface DepartmentService { + + /** + * getDeptList:(根据相应条件查询部门信息列表).
+ * @author wz + * @param departmentVo + * @return 部门信息列表 + */ + List getDeptList(Department department); + + /** + * getDeptCount:(根据相应条件返回记录行数).
+ * @author wz + * @param departmentVo + * @return 返回部门记录行数 + */ + int getDeptCount(Department department); + + /** + * insertDept:(新增部门记录).
+ * @author wz + * @param departmentVo + */ + void insertDept(Department department); + + /** + * updateDept:(新增部门记录).
+ * @author wz + * @param departmentVo + */ + void updateDept(Department department); + + /** + * isExistByDeptName:(判断是否存在相同部门名称).
+ * @author wz + * @param deptName 部门名称 + * @param deptId 部门主键id + * @return true为存在相同的部门名称 + */ + boolean isExistByDeptName(String deptName,Long deptId); + + /** + * isExistByDeptCode:(判断是否存在相同部门编号).
+ * @author wz + * @param deptCode 部门编号 + * @param deptId 部门主键id + * @return true为存在相同的部门编号 + */ + boolean isExistByDeptCode(String deptCode,Long deptId); + + /** + * deleteDept:(根据部门ids删除部门信息).
+ * @author wz + * @param deletIds 部门ids + */ + void deleteDept(Long []deletIds ); + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/MenuSevice.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/MenuSevice.java new file mode 100644 index 0000000..4fd3af3 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/MenuSevice.java @@ -0,0 +1,95 @@ + +package com.risk.riskmanage.system.service; + +import java.util.List; + +import com.risk.riskmanage.system.model.Menu; +import com.risk.riskmanage.system.model.MenuJson; + + +/** + * ClassName:MenuSevice
+ * Description: 菜单service.
+ */ +public interface MenuSevice { + /** + * getMenuList:(根据相应条件查询菜单信息列表).
+ * @author wz + * @param menuVo + * @return 菜单信息列表 + */ + List getMenuList(Menu menu); + + /** + * getMenuCount:(根据相应条件返回记录行数).
+ * @author wz + * @param menuVo + * @return 返回菜单记录行数 + */ + int getMenuCount(Menu menu); + + /** + * insertMenu:(新增菜单记录).
+ * @author wz + * @param menuVo + */ + void insertMenu(Menu menu); + + /** + * updateMenu:(新增菜单记录).
+ * @author wz + * @param menuVo + */ + void updateMenu(Menu menu); + + /** + * isExistByMenuName:(判断是否存在相同菜单名称).
+ * @author wz + * @param menuName 菜单名称 + * @param menuId 菜单主键id + * @return true为存在相同的菜单名称 + */ + boolean isExistByMenuName(String menuName,Long menuId); + + /** + * isExistByMenuCode:(判断是否存在相同菜单编号).
+ * @author wz + * @param menuCode 菜单编号 + * @param menuId 菜单主键id + * @return true为存在相同的菜单编号 + */ + boolean isExistByMenuCode(String menuCode,Long menuId); + + /** + * deleteMenu:(根据菜单ids删除菜单信息).
+ * @author wz + * @param deletIds 菜单ids + */ + void deleteMenu(Long []deletIds ); + + /** + * selectByRole:(根据角色查询).
+ * @author wz + * @param menuVo + * @return 查询的菜单类 + */ + List selectByRole(Menu menu); + + /** + * deleteMenu:(返回true为角色权限修改成功).
+ * @author wz + * @param deletIds 菜单ids + * @param roleCode 角色编号 + * @return 返回true为角色权限修改成功 + */ + boolean addMenuRole(Long []deletIds,String roleCode); + + /** + * findUserMenuByUser:(根据登录用户名查询相应授权菜单列表).
+ * @author wz + * @param loginName + * @return 根据登录用户名查询相应授权菜单列表 + */ + List findUserMenuByUser(String loginName); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/RoleService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/RoleService.java new file mode 100644 index 0000000..9b2a780 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/RoleService.java @@ -0,0 +1,69 @@ + +package com.risk.riskmanage.system.service; + +import java.util.List; + +import com.risk.riskmanage.system.model.Role; + +/** + * ClassName:RoleService
+ * Description: 角色管理service接口.
+ */ +public interface RoleService { + + /** + * getRoleList:(根据相应条件查询角色信息列表).
+ * @author wz + * @param role + * @return 角色信息列表 + */ + List getRoleList(Role role); + + /** + * getRoleCount:(根据相应条件返回记录行数).
+ * @author wz + * @param role + * @return 返回角色记录行数 + */ + int getRoleCount(Role role); + + /** + * insertRole:(新增角色记录).
+ * @author wz + * @param role + */ + void insertRole(Role role); + + /** + * updateRole:(新增角色记录).
+ * @author wz + * @param role + */ + void updateRole(Role role); + + /** + * isExistByRoleName:(判断是否存在相同角色名称).
+ * @author wz + * @param roleName 角色名称 + * @param roleId 角色主键id + * @return true为存在相同的角色名称 + */ + boolean isExistByRoleName(String roleName,Long roleId); + + /** + * isExistByRoleCode:(判断是否存在相同角色编号).
+ * @author wz + * @param roleCode 角色编号 + * @param roleId 角色主键id + * @return true为存在相同的角色编号 + */ + boolean isExistByRoleCode(String roleCode,Long roleId); + + /** + * deleteRole:(根据角色ids删除角色信息).
+ * @author wz + * @param deletIds 角色ids + */ + void deleteRole(Long []deletIds ); +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysMenuService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysMenuService.java new file mode 100644 index 0000000..58cde53 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysMenuService.java @@ -0,0 +1,109 @@ + +package com.risk.riskmanage.system.service; + +import com.risk.riskmanage.system.model.SysMenu; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + + +public interface SysMenuService { + /** + * 查询所有资源 + * @return + */ + public List getAllSysMenu(); + /** + * 查询单条资源 + * @param id + * @return + */ + public SysMenu findById(long id); + /** + * 新增资源 + * @param sysMenu + * @return + */ + public int createSysMenu(SysMenu sysMenu); + /** + * 修改资源 + * @param sysMenu + * @return + */ + public int updateSysMenu(SysMenu sysMenu); + /** + * 删除资源 + * @param id + * @return + */ + public int deleteSysMenu(long id); + + /** + * 修改资源状态 + * @param id + * @param idList + * @return + */ + public int updateStatus(@Param("status") int status, @Param("list") List list); + + /** + * 通过父节点查询子菜单 + * @param id + * @return + */ + public List findChildByParent(long parentId); + + /** + * 通过角色菜单关系表及父节点查询菜单 + */ + public List findRoleMenuByParent(@Param ("parentId")long parentId, @Param("roleId") long roleId); + + /** + * 保存角色菜单关系(实现修改) + */ + public int insertRoleMenu(@Param("roleId") long roleId ,@Param("list") List list); + /** + * 分配资源树 + * @param roleId + * @return + */ + public List findTreeList(long roleId); + /** + * 获取所有启用资源 + * @return + */ + public List getAllValidMenu(); + + /** + * 获取引擎资源树 + */ + public List> getEngineTree(long roleId); + + /** + * 保存引擎树 + */ + public int insertRoleEngine(@Param ("roleId") long roleId,@Param ("list") List list); + /** + * 删除引擎树(实现修改) + */ + public int deleteRoleEngine(long roleId); + + /** + * 删除角色菜单关系(实现修改) + */ + public int deleteRoleMenu(long roleId); + /** + * 验证唯一性 + */ + public List validateMenuOnly(SysMenu sysMenu); + + /** + * 验证是否有查看菜单的权限 + */ + public List validatePermission(@Param("roleId")long roleId,@Param("url")String url); + /** + * 验证是否有该引擎的权限 + */ + public List> validateEnginePermission(@Param("roleId")long roleId,@Param("id_e") String id_e); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysOrganizationService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysOrganizationService.java new file mode 100644 index 0000000..4cc7d8c --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysOrganizationService.java @@ -0,0 +1,57 @@ +package com.risk.riskmanage.system.service; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysOrganization; + + + + +public interface SysOrganizationService { + /** + * 查询所有公司 + * @return + */ + public List getAllSysOrganization(); + /** + * 获取所有启用公司 + * @return + */ + public List getAllValidOrgan(); + /** + * 查询单个公司 + * @param id + * @return + */ + public SysOrganization findById(long id); + /** + * 创建公司 + * @param SysOrganization + * @return + */ + public int createSysOrganization(SysOrganization SysOrganization); + /** + * 修改公司 + * @param SysOrganization + * @return + */ + public int updateSysOrganization(SysOrganization SysOrganization); + /** + * 删除公司 + * @param id + * @return + */ + public int deleteSysOrganization(long id); + /** + * 修改公司状态(停用/启用、删除) + * @param states + * @return + */ + public int updateStatus(@Param ("status") int status,@Param ("list") List list); + /** + * 验证唯一性 + */ + public List validateOrganOnly(SysOrganization SysOrganization); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysRoleService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysRoleService.java new file mode 100644 index 0000000..4225dfb --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysRoleService.java @@ -0,0 +1,91 @@ +package com.risk.riskmanage.system.service; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.risk.riskmanage.system.model.SysRole; + + + + + +public interface SysRoleService { + /** + * 获取本组织所有角色 + * @param organId + * @return + */ + public List getAllSysRole(long organId); + /** + * 获取所有角色 + */ + public List getAllRoles(); + /** + * 获取本组织启用的角色 + * @param organId + * @return + */ + public List getAllValidRole(@Param("organId")long organId,@Param("author")String author); + /** + * 查询本组织的单个用户 + * @param id + * @return + */ + public SysRole findById(@Param("id") long id, @Param("organId") long organId); + /** + * 查询单个角色 + * @param id + * @return + */ + public SysRole findByAId(long id); + /** + * 创建本组织角色 + * @param sysRole + * @return + */ + public int createSysRole(SysRole sysRole); + /** + * 修改本公司角色 + * @param sysRole + * @return + */ + public int updateSysRole(SysRole sysRole); + /** + * 删除本公司角色 + * @param id + * @return + */ + public int deleteSysRole(long id); + /** + * 创建公司管理员角色 + */ + public int createOrganRole(SysRole sysRole); + /** + * 修改角色状态(启用、停用、删除) + * @param id + * @param idList + * @return + */ + public int updateStatus(@Param("status") int status,@Param("list") List list); + /** + * 根据角色查询角色所在公司 + */ + public long getOrganByRoleId(long roleId); + /** + * 验证角色唯一性 + */ + public List validateRoleOnly(SysRole sysRole); + /** + * 查询公司管理员角色id + */ + public List getOrganRoleByAuthor(SysRole sysRole); + /** + * 删除本公司所有角色 + */ + public int deleteAllRoles(long organId); + /** + * 删除多个公司的所有角色 + */ + public int deleteRolesByOrgans(@Param("status") Integer status,@Param("list")List list); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysUserService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysUserService.java new file mode 100644 index 0000000..51f8044 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/SysUserService.java @@ -0,0 +1,111 @@ + +package com.risk.riskmanage.system.service; + +import com.risk.riskmanage.system.model.SysUser; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + + + + +public interface SysUserService { + /** + * 查询搜索用户 + */ + public List getAllUsers(SysUser sysUser); + /** + * 查询本组织单个用户 + * @param + * @return + */ + public SysUser findById(SysUser sysUser); + /** + * 创建本公司用户 + * @param sysUser + * @return + */ + public long createSysUser(SysUser sysUser); + /** + * 修改本公司用户 + * @param user + * @return + */ + public int updateSysUser(SysUser user); + /** + * 删除本公司用户 + * @param id + * @return + */ + public int deleteSysUser(long id); + /** + * 修改用户状态(停用/启用) + * @param + * @return + */ + public int updateStates(@Param ("status") int status,@Param ("list") List list); + /** + * 通过用户id查询角色 + * @param userId + * @return + */ + public SysUser findRoleByUserId(long userId); + + /** + * 重置密码 + */ + public int resetPassword(SysUser sysUser); + + /** + * 修改密码 + */ + public int updatePassword(SysUser sysUser); + + /** + * 本公司账号员工编号唯一性 + */ + public List validateUserOnly(SysUser sysUser); + /** + * 删除本公司的所有账号 + */ + public int deleteAllUser(long organId); + + /** + * 删除本公司的用户角色关系 + */ + public int deleteAllUserRole(long organId); + + /** + * 删除多个公司的所有账号 + */ + public int deleteUsersByOrgans(@Param("status")Integer status,@Param("list")List list); + + /** + * 删除多个公司的用户角色关系 + */ + public int deleteUserRoleByOrgan(@Param("status")Integer status,@Param("list")List list); + + /** + * 删除角色账号关联关系 + */ + public int deleteUserRoleById(long RoleId); + + /** + * 查询本角色下的所有账号 + */ + public List getUserIdsByRoleId(long roleId); + /** + * 删除角色关联的所有账号 + */ + public int deleteUsersByIds(@Param("status") Integer status,@Param("list")List list); + + /** + * 批量删除角色账号关系 + */ + public int deleteBatchUserRole(@Param("status") Integer status,@Param("list")List list); + /** + * 批量查询角色关联的账号 + */ + public List getBatchUserIdsByRoleId(List list); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/UserService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/UserService.java new file mode 100644 index 0000000..ae23cd3 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/UserService.java @@ -0,0 +1,80 @@ + +package com.risk.riskmanage.system.service; + +import com.risk.riskmanage.system.model.User; + +import java.util.List; +import java.util.Set; + +/** + * ClassName:UserService
+ * Description: 后台用户管理service接口.
+ */ +public interface UserService { + + /** + * getUserList:(返回后台用户列表).
+ * @author wz + * @param user + * @return 用户列表 + */ + List getUserList(User user); + + /** + * getUserCount:(返回后台用户行数).
+ * @author wz + * @param user + * @return 返回后台用户行数 + */ + int getUserCount(User user); + + /** + * insertUser:(新增后台用户记录).
+ * @author wz + * @param user + */ + void insertUser(User user); + + /** + * updateUser:(修改后台用户记录).
+ * @author wz + * @param user + */ + void updateUser(User user); + + /** + * isExistByLoginName:(判断是否存在相同后台用户名称).
+ * @author wz + * @param loginName 后台用户登录名称 + * @param userId 后台用户主键id + * @return true为存在相同的后台用户登录名称 + */ + boolean isExistByLoginName(String loginName,Long userId); + + /** + * isExistUser:(是否存在用户).
+ * @author wz + * @param loginName 用户名 + * @param password 密码 + * @return User 返回存在用户或者null + */ + User selectLoginInfo(String loginName,String password); + + /** + * deleteUser:(根据后台用户ids删除后台用户信息).
+ * @author wz + * @param deletIds 后台用户ids + * @param status 状态 + */ + void deleteUser(Long []deletIds,Integer status); + + /** + * findUserMenuSet:(根据用户名获取所授权的菜单).
+ * @author wz + * @param loginName + * @return 根据用户名获取所授权的菜单 + */ + Set findUserMenuSet(String loginName); + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/DepartmentServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/DepartmentServiceImpl.java new file mode 100644 index 0000000..7c8b8ac --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/DepartmentServiceImpl.java @@ -0,0 +1,73 @@ + +package com.risk.riskmanage.system.service.impl; + +import java.util.List; + +import com.risk.riskmanage.system.service.DepartmentService; +import org.springframework.stereotype.Service; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.Department; + +/** + * ClassName:DepartmentServiceImpl
+ * Description: TODO ADD FUNCTION.
+ */ +@Service +public class DepartmentServiceImpl extends BaseService implements DepartmentService { + + @Override + public List getDeptList(Department department) { + return departmentMapper.selectByExample(department); + } + + @Override + public int getDeptCount(Department department) { + return departmentMapper.countByExample(department); + } + + @Override + public void insertDept(Department department) { + departmentMapper.insertSelective(department); + } + + @Override + public void updateDept(Department department) { + departmentMapper.updateByPrimaryKeySelective(department); + } + + @Override + public boolean isExistByDeptName(String deptName,Long deptId) { + if(deptName != null && !("".equals(deptName))){ + Department department = new Department(); + department.setId(deptId); + department.setDeptName(deptName); + int rowCount=departmentMapper.isExist(department); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public boolean isExistByDeptCode(String deptCode,Long deptId) { + if(deptCode != null && !("".equals(deptCode))){ + Department department = new Department(); + department.setDeptCode(deptCode); + department.setId(deptId); + int rowCount=departmentMapper.isExist(department); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public void deleteDept(Long []deletIds) { + departmentMapper.deleteDept(deletIds); + } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/MenuServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..5b7ce67 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/MenuServiceImpl.java @@ -0,0 +1,129 @@ + +package com.risk.riskmanage.system.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import com.risk.riskmanage.system.service.MenuSevice; +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.Menu; +import com.risk.riskmanage.system.model.MenuJson; +import org.springframework.stereotype.Service; + +@Service +public class MenuServiceImpl extends BaseService implements MenuSevice { + + @Override + public List getMenuList(Menu menu) { + return menuMapper.selectByExample(menu); + } + + @Override + public int getMenuCount(Menu menu) { + return menuMapper.countByExample(menu); + } + + @Override + public void insertMenu(Menu menu) { + menuMapper.insertSelective(menu); + } + + @Override + public void updateMenu(Menu menu) { + menuMapper.updateByPrimaryKeySelective(menu); + } + + @Override + public boolean isExistByMenuName(String menuName, Long menuId) { + if(menuName != null && !("".equals(menuName))){ + Menu menu = new Menu(); + menu.setId(menuId); + menu.setName(menuName); + int rowCount=menuMapper.isExist(menu); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public boolean isExistByMenuCode(String menuCode, Long menuId) { + if(menuCode != null && !("".equals(menuCode))){ + Menu menu = new Menu(); + menu.setId(menuId); + menu.setMenuCode(menuCode); + int rowCount=menuMapper.isExist(menu); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public void deleteMenu(Long[] deletIds) { + menuMapper.deleteMenu(deletIds); + } + + @Override + public List selectByRole(Menu menu) { + return menuMapper.selectByRole(menu); + } + + @Override + public boolean addMenuRole(Long[] deletIds, String roleCode) { + if(deletIds.length>0 && roleCode !=null ){ + Menu menu = new Menu(); + menu.setRoleCode(roleCode); + menuMapper.deleteMenuRole(menu); + for (int i = 0; i < deletIds.length; i++) { + menu.setId(deletIds[i]); + menuMapper.insertMenuRole(menu); + } + return true; + } + return false; + } + + @Override + public List findUserMenuByUser(String loginName) { + if(loginName != null && !("".equals(loginName))){ + List menuList = menuMapper.findUserMenuByUser(loginName); + List menuOneList = new ArrayList(); + for (Menu menu : menuList) { + if(menu.getPid() == 1){ + menuOneList.add(menu); + } + } + + List menuJsonList = new ArrayList(); + + for(Menu menuOne : menuOneList){ + MenuJson menuJson = new MenuJson(); + menuJson.setMenuid(menuOne.getId().toString()); + menuJson.setIcon(menuOne.getIcon()); + menuJson.setMenuname(menuOne.getName()); + List menuTwoList = new ArrayList(); + for(Menu menu : menuList){ + if(menu.getPid() == menuOne.getId()){ + MenuJson menuJsonTemp = new MenuJson(); + menuJsonTemp.setMenuid(menu.getId().toString()); + menuJsonTemp.setIcon(menu.getIcon()); + menuJsonTemp.setMenuname(menu.getName()); + menuJsonTemp.setUrl(menu.getUrl()); + menuTwoList.add(menuJsonTemp); + } + } + menuJson.setMenus(menuTwoList); + menuJsonList.add(menuJson); + } + + return menuJsonList; + + } + return null; + } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/RoleServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..21a9f9f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/RoleServiceImpl.java @@ -0,0 +1,73 @@ + +package com.risk.riskmanage.system.service.impl; + +import java.util.List; + +import com.risk.riskmanage.system.service.RoleService; +import org.springframework.stereotype.Service; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.Role; + +/** + * ClassName:RoleServiceImpl
+ * Description: 角色管理service接口实现.
+ */ +@Service +public class RoleServiceImpl extends BaseService implements RoleService { + + @Override + public List getRoleList(Role role) { + return roleMapper.selectByExample(role); + } + + @Override + public int getRoleCount(Role role) { + return roleMapper.countByExample(role); + } + + @Override + public void insertRole(Role role) { + roleMapper.insertSelective(role); + } + + @Override + public void updateRole(Role role) { + roleMapper.updateByPrimaryKeySelective(role); + } + + @Override + public boolean isExistByRoleName(String roleName, Long roleId) { + if(roleName != null && !("".equals(roleName))){ + Role role = new Role(); + role.setId(roleId); + role.setName(roleName); + int rowCount=roleMapper.isExist(role); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public boolean isExistByRoleCode(String roleCode, Long roleId) { + if(roleCode != null && !("".equals(roleCode))){ + Role role = new Role(); + role.setId(roleId); + role.setRoleCode(roleCode); + int rowCount=roleMapper.isExist(role); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public void deleteRole(Long[] deletIds) { + roleMapper.deleteRole(deletIds); + } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysMenuServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..76ef2a7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,160 @@ + +package com.risk.riskmanage.system.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.SysMenu; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.service.SysMenuService; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class SysMenuServiceImpl extends BaseService implements SysMenuService { + /** + * 查询所有资源 + */ + @Override + public List getAllSysMenu() { + return sysMenuMapper.getAllSysMenu(); + } + /** + * 查询单条资源 + */ + @Override + public SysMenu findById(long id) { + return sysMenuMapper.findById(id); + } + /** + * 新增资源 + */ + @Override + public int createSysMenu(SysMenu sysMenu) { + //获取登录人信息 + User user = SessionManager.getLoginAccount(); + //分配者 + long userId = user.getUserId(); + sysMenu.setUserId(userId); + return sysMenuMapper.createSysMenu(sysMenu); + } + /** + * 修改资源 + */ + @Override + public int updateSysMenu(SysMenu sysMenu) { + return sysMenuMapper.updateSysMenu(sysMenu); + } + /** + * 删除资源 + */ + @Override + public int deleteSysMenu(long id) { + return sysMenuMapper.deleteSysMenu(id); + } + /** + * 修改资源状态 + */ + @Override + public int updateStatus(int status, List list) { + return sysMenuMapper.updateStatus(status, list); + } + /** + * 通过父节点查询子菜单 + */ + @Override + public List findChildByParent(long parentId) { + return sysMenuMapper.findChildByParent(parentId); + } + /** + * 通过角色菜单关系表及父节点查询菜单 + */ + @Override + public List findRoleMenuByParent(long parentId, long roleId) { + return sysMenuMapper.findRoleMenuByParent(parentId, roleId); + } + + /** + * 获取所有启用资源 + */ + @Override + public List getAllValidMenu() { + return sysMenuMapper.getAllValidMenu(); + } + + /** + * 分配资源树 + */ + @Override + public List findTreeList(long roleId) { + return sysMenuMapper.findTreeList(roleId); + } + /** + * 保存、修改资源树(实现修改) + */ + @Override + public int insertRoleMenu(long roleId, List list) { + //先删除原关系 + sysMenuMapper.deleteRoleMenu(roleId); + //保存菜单角色关系 + int insertNum = sysMenuMapper.insertRoleMenu(roleId, list); + return insertNum; + } + + /** + * 获取引擎资源树 + */ + @Override + public List> getEngineTree(long roleId) { + return sysMenuMapper.getEngineTree(roleId) ; + } + /** + * 保存引擎树 + */ + @Override + public int insertRoleEngine(long roleId, List list) { + //先删除原关系 + sysMenuMapper.deleteRoleEngine(roleId); + //保存菜单角色关系 + int insertNum = sysMenuMapper.insertRoleEngine(roleId, list); + return insertNum; + } + /** + * 删除引擎树 + */ + @Override + public int deleteRoleEngine(long roleId) { + return sysMenuMapper.deleteRoleEngine(roleId); + } + /** + * 删除资源树 + */ + @Override + public int deleteRoleMenu(long roleId) { + return sysMenuMapper.deleteRoleMenu(roleId); + } + /** + * 验证唯一性 + */ + @Override + public List validateMenuOnly(SysMenu sysMenu) { + return sysMenuMapper.validateMenuOnly(sysMenu); + } + /** + * 验证是否有查看资源的权限 + */ + @Override + public List validatePermission(long roleId, String url) { + return sysMenuMapper.validatePermission(roleId, url); + } + /** + * 验证是否有访问该引擎的权限 + */ + @Override + public List> validateEnginePermission(long roleId, + String id_e) { + return sysMenuMapper.validateEnginePermission(roleId, id_e); + } + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysOrganizationServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysOrganizationServiceImpl.java new file mode 100644 index 0000000..5d86cd8 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysOrganizationServiceImpl.java @@ -0,0 +1,97 @@ + +package com.risk.riskmanage.system.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.SysOrganization; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.service.SysOrganizationService; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.UUID; + +@Service +public class SysOrganizationServiceImpl extends BaseService implements SysOrganizationService { + /** + * 查询公司 + */ + @Override + public List getAllSysOrganization() { + return sysOrganizationMapper.getAllSysOrganization(); + } + /** + * 查询单个公司 + */ + @Override + public SysOrganization findById(long id) { + return sysOrganizationMapper.findById(id); + } + /** + * 创建公司 + */ + @Override + public int createSysOrganization(SysOrganization SysOrganization) { + //获取登录人信息(超级管理员) + User user = SessionManager.getLoginAccount(); + String nickName = user.getNickName(); + SysOrganization.setAuthor(nickName); + //生成token唯一标识 + String uuid = UUID.randomUUID().toString(); + SysOrganization.setToken(uuid); + return sysOrganizationMapper.createSysOrganization(SysOrganization); + } + /** + * 修改公司 + */ + @Override + public int updateSysOrganization(SysOrganization SysOrganization) { + return sysOrganizationMapper.updateSysOrganization(SysOrganization); + } + /** + * 删除公司 + */ + @Override + public int deleteSysOrganization(long id) { + //删除对应的角色 + sysRoleMapper.deleteAllRoles(id); + //删除对应的用户 + sysUserMapper.deleteAllUser(id); + //删除用户角色关系 + sysUserMapper.deleteAllUserRole(id); + //删除公司 + int num = sysOrganizationMapper.deleteSysOrganization(id); + return num; + } + /** + * 批量修改公司状态 + */ + @Override + public int updateStatus(int status, List list) { + //删除、停用、启用每个公司下的所有角色 + sysRoleMapper.deleteRolesByOrgans(status,list); + //删除、停用、启用每个公司下的所有账号 + sysUserMapper.deleteUsersByOrgans(status,list); + //删除、停用、启用每个公司下的所有用户角色关系 + sysUserMapper.deleteUserRoleByOrgan(status,list); + //删除、停用、启用公司 + int num = sysOrganizationMapper.updateStatus(status, list); + return num; + } + /** + * 获取所有启用公司 + */ + @Override + public List getAllValidOrgan() { + return sysOrganizationMapper.getAllValidOrgan(); + } + /** + * 验证唯一性 + */ + @Override + public List validateOrganOnly( + SysOrganization SysOrganization) { + return sysOrganizationMapper.validateOrganOnly(SysOrganization); + } + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysRoleServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..27129dc --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,151 @@ + +package com.risk.riskmanage.system.service.impl; + + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.SysRole; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.service.SysRoleService; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class SysRoleServiceImpl extends BaseService implements SysRoleService { + /** + * 获取本组织所有角色 + * @return + */ + @Override + public List getAllSysRole(long organId) { + return sysRoleMapper.getAllSysRole(organId); + } + /** + * 获取所有角色 + */ + @Override + public List getAllRoles() { + return sysRoleMapper.getAllRoles(); + } + /** + * 获取本组织的单个角色 + */ + @Override + public SysRole findById(long id,long organId) { + return sysRoleMapper.findById(id,organId); + } + /** + * 查询单个角色 + */ + @Override + public SysRole findByAId(long id) { + return sysRoleMapper.findByAId(id); + } + /** + * 创建本公司的角色 + */ + @Override + public int createSysRole(SysRole sysRole) { + return sysRoleMapper.createSysRole(sysRole); + } + /** + * 修改本公司角色 + */ + @Override + public int updateSysRole(SysRole sysRole) { + //获取管理员所在公司 + User user = SessionManager.getLoginAccount(); + long organId = user.getOrganId(); + if(organId!=1){ + //修改本公司角色 + sysRole.setOrganId(organId); + } + return sysRoleMapper.updateSysRole(sysRole); + } + /** + * 删除本公司角色 + */ + @Override + public int deleteSysRole(long id) { + //查询本角色对应的账号id + List list = sysUserMapper.getUserIdsByRoleId(id); + //删除本角色下账号 + if (list!=null&&list.size()>0){ + sysUserMapper.deleteUsersByIds(-1,list); + } + //删除账号角色关系 + sysUserMapper.deleteUserRoleById(id); + //删除角色 + int num = sysRoleMapper.deleteSysRole(id); + return num; + } + /** + * 创建公司管理员角色 + */ + @Override + public int createOrganRole(SysRole sysRole) { + return sysRoleMapper.createOrganRole(sysRole); + } + /** + * 修改角色状态(启用、停用、删除) + */ + @Override + public int updateStatus(int status, List list) { + //查询角色下的账号id + List listu = sysUserMapper.getBatchUserIdsByRoleId(list); + //批量删除角色关联账号 + if (listu!=null&&listu.size()>0){ + sysUserMapper.deleteUsersByIds(status,listu); + } + //批量删除角色账号关系 + sysUserMapper.deleteBatchUserRole(status,list); + //批量删除角色 + int num = sysRoleMapper.updateStatus(status, list); + return num; + } + /** + * 根据角色查询公司 + */ + @Override + public long getOrganByRoleId(long roleId) { + return sysRoleMapper.getOrganByRoleId(roleId); + } + /** + * 验证角色唯一性 + */ + @Override + public List validateRoleOnly(SysRole sysRole) { + return sysRoleMapper.validateRoleOnly(sysRole); + } + /** + * 查询公司管理员角色id + */ + @Override + public List getOrganRoleByAuthor(SysRole sysRole) { + return sysRoleMapper.getOrganRoleByAuthor(sysRole); + } + /** + * 获取公司启用角色 + */ + @Override + public List getAllValidRole(long organId, String author) { + return sysRoleMapper.getAllValidRole(organId, author); + } + /** + * 删除本公司所有角色 + * + */ + @Override + public int deleteAllRoles(long organId) { + return sysRoleMapper.deleteAllRoles(organId); + } + /** + * 删除多个公司的所有角色 + */ + @Override + public int deleteRolesByOrgans(Integer status, List list) { + return sysRoleMapper.deleteRolesByOrgans(status, list); + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysUserServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..0fe8db1 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,193 @@ + +package com.risk.riskmanage.system.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.SysUser; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.service.SysUserService; +import com.risk.riskmanage.util.MD5; +import com.risk.riskmanage.util.SessionManager; +import org.springframework.stereotype.Service; + +import java.util.List; + + + +@Service +public class SysUserServiceImpl extends BaseService implements SysUserService { + /** + * 查询搜索用户 + */ + @Override + public List getAllUsers(SysUser sysUser) { + return sysUserMapper.getAllUsers(sysUser); + } + /** + * 查询本组织单个用户 + * @return + */ + @Override + public SysUser findById(SysUser sysUser) { + return sysUserMapper.findById(sysUser); + } + /** + * 创建用户 + */ + @Override + public long createSysUser(SysUser sysUser) { + long num = 0; + //密码加密 + String password = MD5.GetMD5Code("111111"); + sysUser.setPassword(password); + //创建人 + User user = SessionManager.getLoginAccount(); + String nickName = user.getNickName(); + sysUser.setAuthor(nickName); + //创建用户并返回id + sysUserMapper.createSysUser(sysUser); + long uId = sysUser.getId(); + long roleId = sysUser.getSysRole().getId(); + long orgaId = sysUser.getOrganId(); + if(uId!=0&&roleId!=0){ + //添加表关系 + num = sysUserMapper.insertUserRole(uId, roleId,orgaId); + } + return num; + } + /** + * 修改本公司用户 + */ + @Override + public int updateSysUser(SysUser sysUser) { + int num = 0; + //修改用户 + int updateNum = sysUserMapper.updateSysUser(sysUser); + //修改用户角色关系 + if(updateNum==1){ + num = sysUserMapper.updateUserRole(sysUser); + } + return num; + } + /** + * 删除本公司用户 + */ + @Override + public int deleteSysUser(long id) { + //删除单个用户 + int num = sysUserMapper.deleteSysUser(id); + return num; + } + /** + * 修改用户状态 + */ + @Override + public int updateStates(int status,List list) { + return sysUserMapper.updateStates(status,list); + } + /** + * 通过用户id查询角色 + */ + @Override + public SysUser findRoleByUserId(long userId) { + return sysUserMapper.findRoleByUserId(userId); + } + /** + * 重置密码 + */ + @Override + public int resetPassword(SysUser sysUser) { + //密码加密 + String password = MD5.GetMD5Code("111111"); + sysUser.setPassword(password); + return sysUserMapper.resetPassword(sysUser); + } + /** + * 修改密码 + */ + @Override + public int updatePassword(SysUser sysUser) { + //获取登录人id +// User user = SessionManager.getLoginAccount(); +// long id = user.getUserId(); + //密码加密 + String password = MD5.GetMD5Code(sysUser.getPassword()); + sysUser.setPassword(password); +// sysUser.setId(id); + return sysUserMapper.updatePassword(sysUser); + } + /** + * 本公司账号员工编号唯一性 + */ + @Override + public List validateUserOnly(SysUser sysUser) { + return sysUserMapper.validateUserOnly(sysUser); + } + /** + * 删除本公司所有账号 + */ + @Override + public int deleteAllUser(long organId) { + return sysUserMapper.deleteAllUser(organId); + } + /** + * 删除本公司所有账号角色关系 + */ + @Override + public int deleteAllUserRole(long organId) { + return sysUserMapper.deleteAllUserRole(organId); + } + + /** + * 删除多个公司的所有用户 + */ + @Override + public int deleteUsersByOrgans(Integer status, List list) { + return sysUserMapper.deleteUsersByOrgans(status, list); + } + /** + * 删除多个公司的用户角色关系 + */ + @Override + public int deleteUserRoleByOrgan(Integer status, List list) { + return sysUserMapper.deleteUserRoleByOrgan(status, list); + } + /** + * 删除角色账号关联关系 + */ + @Override + public int deleteUserRoleById(long RoleId) { + return sysUserMapper.deleteUserRoleById(RoleId); + } + /** + * 查询角色下的所有账号 + */ + @Override + public List getUserIdsByRoleId(long roleId) { + return sysUserMapper.getUserIdsByRoleId(roleId); + } + /** + * 删除角色关联的账号 + */ + @Override + public int deleteUsersByIds(Integer status, List list) { + int result = 0; + if (list!=null&&list.size()>0){ + result = sysUserMapper.deleteUsersByIds(status, list); + } + return result; + } + /** + * 批量删除角色账号关系 + */ + @Override + public int deleteBatchUserRole(Integer status, List list) { + return sysUserMapper.deleteBatchUserRole(status, list); + } + /** + * 批量查询角色关联的账号 + */ + @Override + public List getBatchUserIdsByRoleId(List list) { + return sysUserMapper.getBatchUserIdsByRoleId(list); + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/UserServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..68d1a33 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/system/service/impl/UserServiceImpl.java @@ -0,0 +1,118 @@ + +package com.risk.riskmanage.system.service.impl; + +import com.risk.riskmanage.common.basefactory.BaseService; +import com.risk.riskmanage.system.model.User; +import com.risk.riskmanage.system.model.UserRole; +import com.risk.riskmanage.system.service.UserService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; + +/** + * ClassName:UserServiceImpl
+ * Description: 后台用户管理service接口实现类.
+ */ +@Service +public class UserServiceImpl extends BaseService implements UserService { + + @Override + public List getUserList(User user) { + return userMapper.selectByExample(user); + } + + @Override + public int getUserCount(User user) { + return userMapper.countByExample(user); + } + + @Override + public void insertUser(User user) { + List userRolelist = new ArrayList(); + String roleCodes = user.getUserId().toString(); + if(roleCodes != null || !("".equals(roleCodes)) ){ + List roleCodeList = Arrays.asList(roleCodes.split(",")); + userMapper.insertSelective(user); + for (int i = 0; i < roleCodeList.size(); i++) { + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleCode(roleCodeList.get(i)); + userRolelist.add(userRole); + } + userMapper.insertUserRole(userRolelist); + } + } + + @Override + public void updateUser(User user) { + List userRolelist = new ArrayList(); + String roleCodes =user.getUserId().toString(); + if(roleCodes != null && !("".equals(roleCodes)) ){ + List roleCodeList = Arrays.asList(roleCodes.split(",")); + for (int i = 0; i < roleCodeList.size(); i++) { + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleCode(roleCodeList.get(i)); + userRolelist.add(userRole); + } + userMapper.deleteUserRole(new Long[]{user.getUserId()}); + + userMapper.insertUserRole(userRolelist); + userMapper.updateByPrimaryKeySelective(user); + }else{ + userMapper.updateByPrimaryKeySelective(user); + } + + } + + @Override + public boolean isExistByLoginName(String loginName, Long userId) { + if(loginName != null && !("".equals(loginName))){ + User user = new User(); + user.setAccount(loginName); + user.setUserId(userId); + int rowCount=userMapper.isExist(user); + if(rowCount>0){ + return true; + } + } + return false; + } + + @Override + public User selectLoginInfo(String loginName,String password) { + if(loginName != null && !("".equals(loginName))){ + User user = new User(); + user.setAccount(loginName); + user.setPassword(password); + User userInfo=userMapper.selectLoginInfo(user); + if(userInfo != null){ + return userInfo; + } + } + return null; + } + + @Override + public void deleteUser(Long[] deletIds,Integer status) { + User user = new User(); + user.setDeletIds(deletIds); + if(status == -1){ + user.setStatus(-1); + userMapper.deleteUserRole(deletIds); + }else if(status == 1){ + user.setStatus(1); + } + userMapper.deleteUser(user); + } + + @Override + public Set findUserMenuSet(String loginName) { + return userMapper.findUserMenuSet(loginName); + } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/consts/TacticsType.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/consts/TacticsType.java new file mode 100644 index 0000000..0406026 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/consts/TacticsType.java @@ -0,0 +1,17 @@ +package com.risk.riskmanage.tactics.consts; + +public class TacticsType { + public static final String DECISION_TABLES = "decision_tables";//决策表 + public static final String DECISION_TREE = "decision_tree";//决策树 + public static final String SCORECARD = "scorecard";//评分卡 + public static final String LIST_DB = "list_db";//名单库 + public static final String MODELS = "models";//模型 + public static final String COMPLEX_RULE = "complex_rule";//复杂规则 + public static final String BASE_RULE = "base_rule";//基础规则 + + + public static class OutType{ + public static final String SUCCESS_OUT = "success";//成功时输出 + public static final String FAIL_OUT = "fail";//失败时输出 + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/mapper/TacticsOutputMapper.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/mapper/TacticsOutputMapper.java new file mode 100644 index 0000000..51a611f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/mapper/TacticsOutputMapper.java @@ -0,0 +1,9 @@ +package com.risk.riskmanage.tactics.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TacticsOutputMapper extends BaseMapper { +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/model/TacticsOutput.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/model/TacticsOutput.java new file mode 100644 index 0000000..3d71da6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/model/TacticsOutput.java @@ -0,0 +1,78 @@ +package com.risk.riskmanage.tactics.model; + +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.io.Serializable; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +@TableName("t_tactics_output") +public class TacticsOutput implements Serializable { + @TableField(exist = false) + private static final long serialVersionUID = 699491471584300246L; + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; + /** + * 字段id + */ + private Long fieldId; + /** + * 字段的en + */ + private String fieldEn; + /** + * 字段值 + */ + private String fieldValue; + /** + * 字段值的类型:1 常量、2 变量,3.自定义 + */ + private Integer variableType; + /** + * 关联的策略id + */ + private Long tacticsId; + /** + * 关联的策略类型 base_rule.基础规则 scorecard.评分卡 decision_tables.决策表 decision_tree.决策树 complex_rule.复杂规则 list_db.名单库 models.机器学习模型 + */ + private String tacticsType; + /** + * 输出条件 + */ + private String outCondition; + /** + * 输出类型:success为成功时候输出,fail为失败时候的输出 + */ + private String outType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + public TacticsOutput(Long tacticsId, String tacticsType) { + this.tacticsId = tacticsId; + this.tacticsType = tacticsType; + } + + public TacticsOutput(Long tacticsId, String tacticsType, String outType) { + this.tacticsId = tacticsId; + this.tacticsType = tacticsType; + this.outType = outType; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/TacticsOutputService.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/TacticsOutputService.java new file mode 100644 index 0000000..dd89758 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/TacticsOutputService.java @@ -0,0 +1,23 @@ +package com.risk.riskmanage.tactics.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.risk.riskmanage.tactics.model.TacticsOutput; + + +import java.util.List; + + +public interface TacticsOutputService extends IService { + boolean insertTacticsOutput(Long tacticsId,List list); + + boolean insertTacticsOutput(Long tacticsId,List list,String outType); + + + List queryByTactics(TacticsOutput entity); + + boolean updateTacticsOutput(Long tacticsId, List list,String tacticsType); + + boolean updateTacticsOutput(Long tacticsId, List successList, List failList,String tacticsType); + + boolean deleteByTactics(TacticsOutput entity); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/impl/TacticsOutputServiceImpl.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/impl/TacticsOutputServiceImpl.java new file mode 100644 index 0000000..de41196 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/tactics/service/impl/TacticsOutputServiceImpl.java @@ -0,0 +1,90 @@ +package com.risk.riskmanage.tactics.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.risk.riskmanage.tactics.consts.TacticsType; +import com.risk.riskmanage.tactics.mapper.TacticsOutputMapper; +import com.risk.riskmanage.tactics.model.TacticsOutput; +import com.risk.riskmanage.tactics.service.TacticsOutputService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class TacticsOutputServiceImpl extends ServiceImpl implements TacticsOutputService { + @Transactional + @Override + public boolean insertTacticsOutput(Long tacticsId, List list) { + if (tacticsId == null) { + return false; + } + if (list == null || list.size() == 0) { + return true; + } + for (TacticsOutput tacticsOutput : list) { + tacticsOutput.setTacticsId(tacticsId); + } + boolean saveResult = this.saveBatch(list); + return saveResult; + } + + @Override + public boolean insertTacticsOutput(Long tacticsId, List list, String outType) { + if (tacticsId == null || StringUtils.isBlank(outType)) { + return false; + } + if (list == null || list.size() == 0) { + return true; + } + for (TacticsOutput tacticsOutput : list) { + tacticsOutput.setTacticsId(tacticsId); + tacticsOutput.setOutType(outType); + } + boolean saveResult = this.saveBatch(list); + return saveResult; + } + + @Override + public List queryByTactics(TacticsOutput entity) { + return this.list(new QueryWrapper<>(entity)); + } + + @Transactional + @Override + public boolean updateTacticsOutput(Long tacticsId, List list, String tacticsType) { + TacticsOutput tacticsOutput = new TacticsOutput(tacticsId, tacticsType); + boolean delete = this.deleteByTactics(tacticsOutput); + if (!delete && this.queryByTactics(tacticsOutput).size() != 0) { + return false; + } + return this.insertTacticsOutput(tacticsId, list); + } + + @Transactional + @Override + public boolean updateTacticsOutput(Long tacticsId, List successList, List failList, String tacticsType) { + TacticsOutput tacticsOutput = new TacticsOutput(tacticsId, tacticsType); + boolean delete = this.deleteByTactics(tacticsOutput); + if (!delete && this.queryByTactics(tacticsOutput).size() != 0) { + return false; + } + if (successList != null && !successList.isEmpty()) { + this.insertTacticsOutput(tacticsId, successList, TacticsType.OutType.SUCCESS_OUT); + } + if (failList != null && !failList.isEmpty()) { + this.insertTacticsOutput(tacticsId, failList, TacticsType.OutType.FAIL_OUT); + } + return true; + } + + @Transactional + @Override + public boolean deleteByTactics(TacticsOutput entity) { + return this.remove(new QueryWrapper<>(entity)); + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/AccountSessionWrap.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/AccountSessionWrap.java new file mode 100644 index 0000000..a0121bc --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/AccountSessionWrap.java @@ -0,0 +1,32 @@ +package com.risk.riskmanage.util; + +import com.risk.riskmanage.system.model.User; +import lombok.Data; + +/** + * session 包装类 + */ +@Data +public class AccountSessionWrap { + public AccountSessionWrap(String ip, String requestUri) { + init(null, ip, requestUri); + } + + public AccountSessionWrap(User user, String ip, String requestUri) { + init(user, ip, requestUri); + } + + private void init(User user, String ip, String requestUri) { + setUser(user); + setIp(ip); + setRequestUri(requestUri); + } + + /** session */ + private User user; + private String ip; + private String requestUri; + /** 请求唯一标识 */ + private String traceId; + +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/BracketMatchUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/BracketMatchUtil.java new file mode 100644 index 0000000..aadda0f --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/BracketMatchUtil.java @@ -0,0 +1,47 @@ +package com.risk.riskmanage.util; + +import org.apache.commons.lang3.StringUtils; +import java.util.Stack; + +/** + * 括号匹配工具类 + */ +public class BracketMatchUtil { + + public static boolean matching(String expression) { + + if (StringUtils.isBlank(expression)) { + return false; + } + + Stack stack = new Stack<>(); + + for (int index = 0; index < expression.length(); index++) { + switch (expression.charAt(index)) { + case '(': + stack.push(expression.charAt(index)); + break; + case '{': + stack.push(expression.charAt(index)); + break; + case ')': + if (!stack.empty() && stack.peek() == '(') { + stack.pop(); + } + break; + + case '}': + if (!stack.empty() && stack.peek() == '{') { + stack.pop(); + } + } + } + + if (stack.empty()) { + return true; + } + + return false; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CollectionUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CollectionUtil.java new file mode 100644 index 0000000..e458ec6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CollectionUtil.java @@ -0,0 +1,109 @@ +package com.risk.riskmanage.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class CollectionUtil { + + /** + * 集合判非空 + * + * @param collection + * @return + */ + public static boolean isNotNullOrEmpty(Collection collection) { + if (null == collection || collection.isEmpty()){ + return false; + } + return true; + } + + /** + * map判非空 + * + * @param map + * @return + */ + public static boolean isNotNullOrEmpty(Map map) { + if (null == map || map.isEmpty()){ + return false; + } + return true; + } + + /** + * 获取多个集合并集 + * @param list + * @return + */ + public static Set getUnion(List> list) { + Set set = new HashSet(); + if (list == null) { + list = new ArrayList>(); + } + int size = list.size(); + if (size > 1) { + for (int i = 0; i < size; i++) { + int j = i + 1; + if (j < size) { + list.get(0).removeAll(list.get(j)); + list.get(0).addAll(list.get(j)); + if (i == size - 2) { + List resultList = list.get(0); + for (Object result : resultList) { + set.add(result); + } + } + } + } + } else { + // 只有一个集合则直接插入结果 + for (List subList : list) { + for (Object result : subList) { + set.add(result); + } + } + } + return set; + + } + + /** + * 获取多个集合交集 + * @param list + * @return + */ + public static Set getIntersection(List> list) { + Set set = new HashSet(); + int size = list.size(); + if (size > 1) { + // 集合个数大于1,取交集 + for (int i = 0; i < size; i++) { + int j = i + 1; + if (j < size) { + list.get(0).retainAll(list.get(j)); + if (i == size - 2) { + List resultList = list.get(0); + for (Object result : resultList) { + set.add(result); + } + } + } + } + } else { + // 只有一个集合则不取交集 + for (List subList : list) { + for (Object result : subList) { + set.add(result); + } + } + } + + return set; + + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CommonUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CommonUtil.java new file mode 100644 index 0000000..4dc9db6 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CommonUtil.java @@ -0,0 +1,186 @@ +package com.risk.riskmanage.util; + +import org.apache.commons.lang3.StringUtils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Calendar; +import java.util.Date; +import java.util.Random; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CommonUtil { + // MD5简单加密 + public static String MD5Purity(String plainText) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(plainText.getBytes()); + byte b[] = md.digest(); + int i; + StringBuffer buf = new StringBuffer(""); + for (int offset = 0; offset < b.length; offset++) { + i = b[offset]; + if (i < 0) + i += 256; + if (i < 16) + buf.append("0"); + buf.append(Integer.toHexString(i)); + } + plainText = buf.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return plainText; + } + + public static String Md5Sixteen(String plainText) { + String result = null; + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(plainText.getBytes()); + byte b[] = md.digest(); + int i; + StringBuffer buf = new StringBuffer(""); + for (int offset = 0; offset < b.length; offset++) { + i = b[offset]; + if (i < 0) + i += 256; + if (i < 16) + buf.append("0"); + buf.append(Integer.toHexString(i)); + } + result = buf.toString().substring(8, 24); + System.out.println("mdt 16bit: " + buf.toString().substring(8, 24)); + System.out.println("md5 32bit: " + buf.toString()); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return result; + } + + // 生成4位随机数验证码 + public static int getCode() { + return (int) (Math.random() * 9000 + 1000); + } + + /** + * Boolean 类型转换string + * + * @param param + * @return + */ + public static String booleanToString(Boolean param) { + if (null != param) { + return param ? "1" : "0"; + } else { + return "0"; + } + } + + /** + * 获取当前日期几年前的日期 + * @param date 日期 + * @param year 年 + * @return + */ + public static Date getBeforeDate(Date date,int year){ + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.add(Calendar.YEAR,year); + return cal.getTime(); + } + + public static boolean validateNewAdress(String address) { + if(StringUtils.isBlank(address)) { + return false; + } + String specChar = "[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?-~ - ]"; + String addressChar = "^(.*[\u4e00-\u9fa5]+.*([0-9]|[零一二三四五六七八九十壹贰叁肆伍陆柒捌玖拾])+.*)|(.*([0-9]|[零一二三四五六七八九十壹贰叁肆伍陆柒捌玖拾])+.*[\u4e00-\u9fa5]+.*)$"; + Pattern pattern = Pattern.compile(specChar); + Pattern reg = Pattern.compile(addressChar); + Matcher matcher1 = pattern.matcher(address); + Matcher matcher2= reg.matcher(address); + if (matcher1.matches() || !matcher2.matches() || address.length() < 12 || address.length() > 50) { + return false; + } else { + return true; + } + } + + /** + * 获取一个唯一的序列号,助于排错 + * + * @return 唯一序列号 + */ + public static String getUUID() { + return UUID.randomUUID().toString().replaceAll("-", ""); + } + + /** + * 版本号转换成数字 + * + * @author: liuyafei + * @date 创建时间:2016年10月10日 + * @version 1.0 + * @parameter + * @return + */ + public static int transVersionToNum(String version) { + int num = 0; + String[] msg = version.split("\\."); + int len = msg.length; + if (len >= 3) { + num += Integer.parseInt(msg[2]); + } + if (len >= 2) { + num += Integer.parseInt(msg[1]) * 10; + } + if (len >= 1) { + num += Integer.parseInt(msg[0]) * 100; + } + return num; + } + + /** + * 生成指定范围内随机数 + * @param min 最小随机数 + * @param max 最大随机数 + * @return 随机数 + */ + public static int getRandom(int min, int max) { + Random random = new Random(); + int maxrand = random.nextInt(max); + int s = maxrand % (max - min + 1) + min; + return s; + } + + /** + * 概率 + * @param i 概率值 + * @return + */ + public static boolean rendomChance(int i) { + Random r = new Random(); + int next = r.nextInt(101); + return next > 0 && next <= i; + } + + /** + * 获取当前倒推X秒的时间 + * + * @param second + * @return + */ + public static Date getSubSecondDate(int second) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.SECOND, cal.get(Calendar.SECOND) - second); + return cal.getTime(); + } + + public static void main(String[] args) { + boolean r = rendomChance(50); + System.out.println(r); + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CustomValueUtils.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CustomValueUtils.java new file mode 100644 index 0000000..4f56598 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/CustomValueUtils.java @@ -0,0 +1,32 @@ +package com.risk.riskmanage.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.util.HashSet; +import java.util.Set; + +public class CustomValueUtils { + + public static final Set getFieldEnSet(String custom) { + Set fieldEns = new HashSet<>(); + if (custom != null && !"".equals(custom)) { + JSONObject jsonObject = JSON.parseObject(custom); + Object farr = jsonObject.get("farr"); + if (farr != null) { + JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(farr)); + if (jsonArray != null && jsonArray.size() > 0) { + for (Object o : jsonArray) { + JSONObject field = JSON.parseObject(JSON.toJSONString(o)); + Object fieldEn = field.get("fieldEn"); + if (fieldEn != null && !"".equals(fieldEn)) { + fieldEns.add(fieldEn.toString()); + } + } + } + } + } + return fieldEns; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/DataHelp.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/DataHelp.java new file mode 100644 index 0000000..e0b0837 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/DataHelp.java @@ -0,0 +1,40 @@ +package com.risk.riskmanage.util; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +public class DataHelp { + public static int day=0; + public static String getNowDate(){ + Date date = new Date(); + SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String s = simple.format(date); + return s; + } + public static String getEndDate(){ + SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.DATE, + DataHelp.day); + Date monday = c.getTime(); + String s = simple.format(monday); + return s; + } + public static String getNowDateString(){ + Date date = new Date(); + SimpleDateFormat simple = new SimpleDateFormat("yyyyMMddHHmmss"); + String s = simple.format(date); + return s; + } + public static String getDay(){ + Date date = new Date(); + SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd"); + String s = simple.format(date); + return s; + } + public static void main(String[] args) { + System.out.println(getNowDate()); + System.out.println(getNowDateString()); + + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ImageCut.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ImageCut.java new file mode 100644 index 0000000..46569b2 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ImageCut.java @@ -0,0 +1,50 @@ +package com.risk.riskmanage.util; + +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Toolkit; +import java.awt.image.BufferedImage; +import java.awt.image.CropImageFilter; +import java.awt.image.FilteredImageSource; +import java.awt.image.ImageFilter; +import java.io.File; + +import javax.imageio.ImageIO; + +public class ImageCut { + /** + * 截取图片 + * @param srcImageFile 原图片地址 + * @param x 截取时的x坐标 + * @param y 截取时的y坐标 + * @param desWidth 截取的宽度 + * @param desHeight 截取的高度 + */ + public static void imgCut(String srcImageFile, int x, int y, int desWidth, + int desHeight) { + try { + Image img; + ImageFilter cropFilter; + BufferedImage bi = ImageIO.read(new File(srcImageFile+"_src.jpg")); + int srcWidth = bi.getWidth(); + int srcHeight = bi.getHeight(); + if (srcWidth >= desWidth && srcHeight >= desHeight) { + Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT); + cropFilter = new CropImageFilter(x, y, desWidth, desHeight); + img = Toolkit.getDefaultToolkit().createImage( + new FilteredImageSource(image.getSource(), cropFilter)); + BufferedImage tag = new BufferedImage(desWidth, desHeight, + BufferedImage.TYPE_INT_RGB); + Graphics g = tag.getGraphics(); + g.drawImage(img, 0, 0, null); + g.dispose(); + //输出文件 + ImageIO.write(tag, "JPEG", new File(srcImageFile+"_cut.jpg")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ListPageUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ListPageUtil.java new file mode 100644 index 0000000..1dd7965 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ListPageUtil.java @@ -0,0 +1,96 @@ +package com.risk.riskmanage.util; + +import java.util.Collections; +import java.util.List; + +/** + * 类说明 + */ +public class ListPageUtil { + /**原集合*/ + private List data; + + /** 上一页 */ + private int lastPage; + + /** 当前页 */ + private int nowPage; + + /** 下一页 */ + private int nextPage; +// + /** 每页条数 */ + private int pageSize; + + /** 总页数 */ + private int totalPage; + + /** 总数据条数 */ + private int totalCount; + + public int getPageSize() { + return pageSize; + } + + public List getData() { + return data; + } + public int getLastPage() { + return lastPage; + } + + public int getNowPage() { + return nowPage; + } + + public int getNextPage() { + return nextPage; + } + + public int getTotalPage() { + return totalPage; + } + + public int getTotalCount() { + return totalCount; + } + + public ListPageUtil(List data,int nowPage,int pageSize) { + if (data == null || data.isEmpty()) { + throw new IllegalArgumentException("data must be not empty!"); + } + + this.data = data; + this.pageSize = pageSize; + + this.nowPage = nowPage; + this.totalCount = data.size(); + this.totalPage = (totalCount + pageSize - 1) / pageSize; + this.lastPage = nowPage-1>1? nowPage-1:1; + this.nextPage = nowPage>=totalPage? totalPage: nowPage + 1; + + } + + /** + * 得到分页后的数据 + * + * @param pageNum 页码 + * @return 分页后结果 + */ + public List getPagedList() { + int fromIndex = (nowPage - 1) * pageSize; + if (fromIndex >= data.size()) { + return Collections.emptyList();//空数组 + } + if(fromIndex<0){ + return Collections.emptyList();//空数组 + } + int toIndex = nowPage * pageSize; + if (toIndex >= data.size()) { + toIndex = data.size(); + } + return data.subList(fromIndex, toIndex); + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/MD5.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/MD5.java new file mode 100644 index 0000000..1ca244a --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/MD5.java @@ -0,0 +1,91 @@ + +package com.risk.riskmanage.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * ClassName:MD5
+ * Description: md5加密工具类.
+ */ +public class MD5 { + /** + * 全局数组 + */ + private static final String[] DIGITS = { "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "H", "i", + "j", "k", "l", "m", "n", "~", "$", "@", "%", "*", "#", "&", "!" }; + + public MD5() { + } + + /** + * byteToArrayString:(返回形式为数字跟字符串).
+ * @author wz + * @param bByte byte + * @return 返回形式为数字跟字符串 + */ + private static String byteToArrayString(byte bByte) { + int iRet = bByte; + if (iRet < 0) { + iRet += 256; + } + int iD1 = iRet / 32; + int iD2 = iRet % 32; + return DIGITS[iD1] + DIGITS[iD2]; + } + + /** + * byteToNum:(返回形式只为数字).
+ * @param bByte byte + * @return 返回形式只为数字 + */ + private static String byteToNum(byte bByte) { + int iRet = bByte; + System.out.println("iRet1=" + iRet); + if (iRet < 0) { + iRet += 256; + } + return String.valueOf(iRet); + } + + /** + * byteToString:(转换字节数组为16进制字串).
+ * @param bByte byte数组 + * @return 返回转换字节数组为16进制字串 + */ + private static String byteToString(byte[] bByte) { + StringBuffer sBuffer = new StringBuffer(); + for (int i = 0; i < bByte.length; i++) { + sBuffer.append(byteToArrayString(bByte[i])); + } + return sBuffer.toString(); + } + + /** + * GetMD5Code:(md5加密).
+ * @author wz + * @param param 需要加密的字段 + * @return 加密后的字段 + */ + public static String GetMD5Code(String param) { + String resultString = null; + try { + resultString = new String(param); + MessageDigest md = MessageDigest.getInstance("MD5"); + // md.digest() 该函数返回值为存放哈希值结果的byte数组 + resultString = byteToString(md.digest(param.getBytes())); + } catch (NoSuchAlgorithmException ex) { + ex.printStackTrace(); + } + return resultString; + } + + +// public static void main(String[] args) { +// MD5 getMD5 = new MD5(); +// System.out.println(getMD5.GetMD5Code("123456")); +// } + +} + diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PageBean.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PageBean.java new file mode 100644 index 0000000..5ed5c33 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PageBean.java @@ -0,0 +1,66 @@ +package com.risk.riskmanage.util; + +import java.util.List; + +/** + * @param + */ +public class PageBean { + + private int totalCount;//总记录数 + private int totalPage;//总页数 + private int currentPage;//当前页码 + private int pageSize;//每页显示的条数 + private List list;//每页显示的数据集合 + + public int getTotalCount() { + return totalCount; + } + + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + } + + public int getTotalPage() { + return totalPage; + } + + public void setTotalPage(int totalPage) { + this.totalPage = totalPage; + } + + public int getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + @Override + public String toString() { + return "PageBean{" + + "totalCount=" + totalCount + + ", totalPage=" + totalPage + + ", currentPage=" + currentPage + + ", pageSize=" + pageSize + + ", list=" + list + + '}'; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PagerJsonResponse.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PagerJsonResponse.java new file mode 100644 index 0000000..f10e3d0 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/PagerJsonResponse.java @@ -0,0 +1,82 @@ +package com.risk.riskmanage.util; + +import java.io.Serializable; +import java.util.List; + +import com.risk.riskmanage.system.model.Pager; + +public class PagerJsonResponse { + /** + * Current page + */ + private int page; + + /** + * Total pages + */ + private int total; + + /** + * Total number of records + */ + private int records; + private int pagecount; + + /** + * Contains the actual data + */ + private List rows; + + public PagerJsonResponse() { + + } + + public PagerJsonResponse(List rows, Pager pager) { + this.rows = rows; + this.total = pager.getTotalResult(); + this.records = pager.getTotalResult(); + this.page = pager.getPage(); + this.pagecount = pager.getPageCount(); + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public int getRecords() { + return records; + } + + public void setRecords(int records) { + this.records = records; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getPagecount() { + return pagecount; + } + + public void setPagecount(int pagecount) { + this.pagecount = pagecount; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Properties.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Properties.java new file mode 100644 index 0000000..f7658cf --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Properties.java @@ -0,0 +1,12 @@ +package com.risk.riskmanage.util; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Properties { + String name(); +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/RequestUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/RequestUtil.java new file mode 100644 index 0000000..2cc5c14 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/RequestUtil.java @@ -0,0 +1,37 @@ +package com.risk.riskmanage.util; + +import javax.servlet.http.HttpServletRequest; + +public class RequestUtil { + /** + * 获取客户端IP, 考虑web server代理 + * + * @param request + * @return + */ + public static String getClientIP(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.indexOf(',') > 0) { + ip = ip.substring(0, ip.indexOf(',')).trim(); + } + + return ip; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ResponseUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ResponseUtil.java new file mode 100644 index 0000000..effd3d7 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/ResponseUtil.java @@ -0,0 +1,16 @@ +package com.risk.riskmanage.util; + +import com.github.pagehelper.PageInfo; + +import java.util.HashMap; +import java.util.Map; + +public class ResponseUtil { + public static Map getResponseMap(PageInfo pageInfo){ + HashMap responseMap = new HashMap<>(); + responseMap.put("pageInfo",pageInfo); + responseMap.put("klist",pageInfo.getList()); + pageInfo.setList(null); + return responseMap; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Section.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Section.java new file mode 100644 index 0000000..e78c904 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/Section.java @@ -0,0 +1,22 @@ +package com.risk.riskmanage.util; + + +public class Section { + + public float x; + public float y; + + public Section(float low,float hight){ + + x=low; + y=hight; + } + + public String toString() { + return "[" + x + "," + y + "]"; + } + + boolean isSample(Section section) { + return x == section.x && y == section.y; + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SectionUtils.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SectionUtils.java new file mode 100644 index 0000000..6abfb77 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SectionUtils.java @@ -0,0 +1,233 @@ +package com.risk.riskmanage.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SectionUtils { + public final static float max_float = Integer.MAX_VALUE; + public final static float min_float = Integer.MIN_VALUE; + + private static void SecSort(Section[] secs, int low, int high) { + int i = low; + int j = high; + Section temp = secs[low]; + while (i < j) { + while (i < j && temp.x < secs[j].x) + j--; + if (i < j) { + secs[i] = secs[j]; + i++; + } + while (i < j && temp.x > secs[i].x) + i++; + if (i < j) { + secs[j] = secs[i]; + j--; + } + } + secs[i] = temp; + + if (low < i) + SecSort(secs, low, i - 1); + if (high > j) + SecSort(secs, j + 1, high); + } + + private static boolean inSection(Section[] secs, Section s, int offset) { + boolean ret = false; + for (int k = 0; k < secs.length; k++) { + if (secs[k].x == secs[k].y || s.x == s.y) + continue; + + if (secs[k].x == s.x || secs[k].y == s.y) + continue; + + if (secs[k].x <= s.x && secs[k].y >= s.y && offset != k) { + ret = true; + break; + } else if (secs[k].x <= s.x && s.x < secs[k].y && offset != k) { + ret = true; + break; + } + } + return ret; + + } + + public static boolean checkSectionCoincide(List section_list) { + boolean ret = false; + String temp = ""; + float min = 0; + float max = 0; + + Section[] sections = new Section[section_list.size()]; + for (int i = 0; i < section_list.size(); i++) { + temp = section_list.get(i); + String chars[] = temp.split(","); + if (chars.length == 2) { + if ("(".equals(chars[0]) || "[".equals(chars[0])) { + min = min_float; + } else { + if (chars[0].indexOf("(") == 0) { + temp = chars[0].replace("(", ""); + min = parseFloat(temp); + } else if (chars[0].indexOf("[") == 0) { + temp = chars[0].replace("[", ""); + min = parseFloat(temp); + } + } + if (")".equals(chars[1]) || "]".equals(chars[1])) { + max = max_float; + } else { + if (chars[1].indexOf(")") > 0) { + temp = chars[1].replace(")", ""); + max = parseFloat(temp); + } else if (chars[1].indexOf("]") > 0) { + temp = chars[1].replace("]", ""); + max = parseFloat(temp); + } + } + sections[i] = new Section(min, max); + } else { + sections[i] = new Section(parseFloat(temp), parseFloat(temp)); + } + } + + int n = sections.length; + SecSort(sections, 0, n - 1); + for (int i = 0; i < n; i++) { + ret = inSection(sections, sections[i], i); + if (ret) + break; + } + return ret; + } + + public static boolean checkSectionValid(List section_list) { + boolean ret_min = false; + boolean ret_max = false; + boolean ret_lr = false; + String temp = ""; + + HashMap left_hp = new HashMap(); + HashMap right_hp = new HashMap(); + HashMap collection = new HashMap(); + + for (int i = 0; i < section_list.size(); i++) { + temp = section_list.get(i); + String chars[] = temp.split(","); + + if (chars.length == 2) { + if ("(".equals(chars[0]) || "[".equals(chars[0])) { + if ("(".equals(chars[0])) + ret_min = true; + } else { + if (chars[0].indexOf("(") == 0) { + temp = chars[0].replace("(", ""); + collection.put(temp, temp); + if (left_hp.get(chars[0]) != null) { + left_hp.put(chars[0], left_hp.get(chars[0]) + 1); + } else { + left_hp.put(chars[0], 1); + } + } else if (chars[0].indexOf("[") == 0) { + temp = chars[0].replace("[", ""); + collection.put(temp, temp); + if (left_hp.get(chars[0]) != null) { + left_hp.put(chars[0], left_hp.get(chars[0]) + 1); + } else { + left_hp.put(chars[0], 1); + } + } + } + + if (")".equals(chars[1]) || "]".equals(chars[1])) { + if (")".equals(chars[1])) + ret_max = true; + } else { + if (chars[1].indexOf(")") > 0) { + temp = chars[1].replace(")", ""); + collection.put(temp, temp); + + if (right_hp.get(chars[1]) != null) { + right_hp.put(chars[1], right_hp.get(chars[1]) + 1); + } else { + right_hp.put(chars[1], 1); + } + } else if (chars[1].indexOf("]") > 0) { + temp = chars[1].replace("]", ""); + collection.put(temp, temp); + if (right_hp.get(chars[1]) != null) { + right_hp.put(chars[1], right_hp.get(chars[1]) + 1); + } else { + right_hp.put(chars[1], 1); + } + } + } + } else { + if (right_hp.get(String.format("%s]", temp)) != null) { + right_hp.put(String.format("%s]", temp), + right_hp.get(String.format("%s]", temp)) + 1); + } else { + right_hp.put(String.format("%s]", temp), 1); + } + + if (left_hp.get(String.format("[%s", temp)) != null) { + left_hp.put(String.format("[%s", temp), + left_hp.get(String.format("[%s", temp)) + 1); + } else { + left_hp.put(String.format("[%s", temp), 1); + } + } + } + + int ct1 = 0; + int ct2 = 0; + for (Map.Entry entry : left_hp.entrySet()) { + String key = entry.getKey(); + ct1++; + if (key.indexOf("(") == 0) { + key = key.replace("(", ""); + key = String.format("%s]", key); + if (right_hp.get(key) != null && right_hp.get(key) == 1) { + + ct2++; + } + + } else if (key.indexOf("[") == 0) { + key = key.replace("[", ""); + key = String.format("%s)", key); + if (right_hp.get(key) != null && right_hp.get(key) == 1) { + ct2++; + } + } + } + + if (ct1 == ct2) { + ret_lr = true; + } + return (ret_min && ret_max && ret_lr); + } + + public static float parseFloat(String s) { + float i = 0f; + try { + i = Float.parseFloat(s); + } catch (Exception e) { + e.printStackTrace(); + } + return i; + } + + public static void main(String[] args) { + ArrayList section_list = new ArrayList(); + section_list.add("[0,3)"); + section_list.add("(4,)"); + section_list.add("(,0.5)"); + section_list.add("[3,4]"); + System.out.println("区间是否完整:"+checkSectionValid(section_list)); //检测表达式区间完整度 + System.out.println("区间是否重叠:"+checkSectionCoincide(section_list)); //检测表达式区间完整度 + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SessionManager.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SessionManager.java new file mode 100644 index 0000000..bd3b2ae --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SessionManager.java @@ -0,0 +1,29 @@ +package com.risk.riskmanage.util; + +import com.alibaba.ttl.TransmittableThreadLocal; +import com.risk.riskmanage.system.model.User; + +/** + * session管理类 + */ +public class SessionManager { + + private static TransmittableThreadLocal session = new TransmittableThreadLocal() { + + }; + public static AccountSessionWrap getSession() { + return session.get(); + } + + public static void setSession(AccountSessionWrap conn) { + session.set(conn); + } + + public static User getLoginAccount(){ + if(getSession() != null){ + return getSession().getUser(); + } else { + return null; + } + } +} \ No newline at end of file diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/StringUtil.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/StringUtil.java new file mode 100644 index 0000000..ad9a90b --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/StringUtil.java @@ -0,0 +1,467 @@ +package com.risk.riskmanage.util; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +/** + * @ClassName: StringUtil + * @Description: String 工具类 + */ +public class StringUtil { + + /** + *

判断是否是有效的字符串,空字符串为无效字符串

+ * + * @param str + * @return boolean + */ + public static boolean isValidStr(String str) { + return str != null && str.trim().length() > 0; + } + + /** + *

判断是字符串否是为空,字符串为空,返回 "",反之返回其字符串本身.

+ * + *

if str is null then convret str to "".

+ * + * @param str + * @return String + */ + public static String convertStrIfNull(String str) { + return str == null ? SysConstant.EMPTY_STRING : str; + } + + /** + *

根据字符串转换为布尔值.

+ * + * @param str + * @return boolean + */ + public static boolean getStrToBoolean(String str) { + return isValidStr(str) ? str.toLowerCase().trim().equals(SysConstant.TRUE) : false; + } + + /** + *

根据字符串转换为 整型(int)并返回;转换失败,则返回0.

+ * + *

convert str value to int. if fail,then return 0.

+ * + * @param str + * @return int + */ + public static int getStrToInt(String str) { + try { + return Integer.parseInt(str); + } catch (NumberFormatException e) { + return 0; + } + } + + /** + *

根据字符串转换为 整型(int)并返回;转换失败,则返回 指定的值.

+ * + *

convert str value to int. if fail,then return defaultvalue.

+ * + * @param str + * @param defaultValue + * @return int + */ + public static int getStrToInt(String str, int defaultValue) { + try { + return Integer.parseInt(str); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /** + *

根据字符串转换为long.

+ * + * @param str + * @return long + */ + public static long getStrTolong(String str) { + long result = 0; + if (!isValidStr(str)) { + return result; + } + try { + result = Long.parseLong(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据字符串转换为double.

+ * + *

convert String to double

+ * + * @param str + * @return double + */ + public static double getStrTodouble(String str) { + double result = 0; + if (!isValidStr(str)) { + return result; + } + try { + result = Double.parseDouble(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据字符串转换为BigDecimal.

+ * + *

convert String object to BigDecimal

+ * + * @param str + * @return BigDecimal + */ + public static BigDecimal getStrToBigDecimal(String str) { + BigDecimal result = new BigDecimal(0); + if (!isValidStr(str)) { + return result; + } + try { + result = new BigDecimal(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据字符串转换为Integer.

+ * + *

convert String to Integer.

+ * + * @param str + * @return Integer + */ + public static Integer getStrToInteger(String str) { + Integer result = new Integer(0); + if (!isValidStr(str)) { + return result; + } + try { + result = Integer.valueOf(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据字符串转换为Long.

+ * + *

convert String to Long.

+ * + * @param str + * @return Long + */ + public static Long getStrToLong(String str) { + Long result = new Long(0); + if (!isValidStr(str)) { + return result; + } + try { + result = Long.valueOf(str.trim()); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据字符串转换为Double.

+ * + *

convert String to Double

+ * + * @param str + * @return Double + */ + public static Double getStrToDouble(String str) { + Double result = new Double(0); + if (!isValidStr(str)) { + return result; + } + try { + result = Double.valueOf(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return result; + } + + /** + *

根据数组转换为字符串,用","拼接.

+ *

例:

+ *

    String[] strArray = new String[]{"How","do","you","do"};

+ *

    拼接后字符串样例:How,do,you,do

+ * + *

convert Object array to String use ",".

+ * + * @param Object[] + * @return String + */ + public static String getArrToStr(Object[] obj) { + if (obj == null) { + return null; + } + + StringBuffer buffer = new StringBuffer(); + if (obj.length > 0) { + buffer.append(obj[0]); + } + + for (int m = 1; m < obj.length; m++) { + buffer.append(SysConstant.COMMA).append(obj[m]); + } + + return buffer.toString(); + } + + /** + *

去掉重复数据(1,2,3,2,4 => 1,2,3,4)

+ * + * @param metadata + * @param tagStr + * @return String + */ + public static String removeEqualStr(String metadata, String tagStr) { + if (!StringUtil.isValidStr(metadata)) { + return SysConstant.EMPTY_STRING; + } + Set set = new HashSet(); + String[] arr = metadata.split(tagStr); + for (String temp : arr) { + if (StringUtil.isValidStr(temp)) { + set.add(temp); + } + } + Iterator it = set.iterator(); + StringBuffer returnMetadata = new StringBuffer(); + while (it.hasNext()) { + returnMetadata.append(it.next() + tagStr); + } + return returnMetadata.toString().substring(0,returnMetadata.length() - 1); + } + + /** + *

查询是否有重复数据

+ * + * @param strArr + * @param str + * @param tagStr + * @return boolean + */ + public static boolean hasEqualStr(String strArr, String str, String tagStr) { + boolean bool = false; + if (StringUtil.isValidStr(strArr)) { + String[] arr = strArr.split(tagStr); + for (String temp : arr) { + if (temp.equals(str)) { + bool = true; + break; + } + } + } + return bool; + } + + /** + *

根据字符串将其转换编码为UTF-8的字符串.

+ * + *

convert type to utf-8

+ * + * @param str + * @return utf-8 string + */ + public static String toUtf8String(String str) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c >= 0 && c <= 255) { + sb.append(c); + } else { + byte[] b; + try { + b = Character.toString(c).getBytes("utf-8"); + } catch (Exception ex) { + b = new byte[0]; + } + for (int j = 0; j < b.length; j++) { + int k = b[j]; + if (k < 0) + k += 256; + sb.append("%" + Integer.toHexString(k).toUpperCase()); + } + } + } + return sb.toString(); + } + + /** + *

根据字符串指定的位置更新字符串内容

+ * + * @param formString 被更新字符串 + * @param updateIndex 选择更新位数 + * @param updateValue 更新为值 + * + * @return String + */ + public static String formatIntegrity(String formatString, int updateIndex, char updateValue) { + if (!isValidStr(formatString)) { + return formatString; + } + if (updateIndex < 1) { + return formatString; + } + if (updateIndex > formatString.length()) { + return formatString; + } + char[] formatStringChar = formatString.toCharArray(); + formatStringChar[updateIndex] = updateValue; + + return String.valueOf(formatStringChar); + } + + /** + *

转换特殊字符

+ * + * @param str 含有特殊字符的字符串 + * + * @return String + */ + public static String converSpecialChar(String str) { + if (!isValidStr(str)) { + return str; + } + str = str.trim(); + if (str.indexOf("\\") >= 0) { + str = str.replaceAll("\\\\", "\\\\\\\\\\\\\\\\"); + } + if (str.indexOf("'") >= 0) { + str = str.replaceAll("'", "\\\\'"); + } + if (str.indexOf("\"") >= 0) { + str = str.replaceAll("\"", "\\\\\""); + } + if (str.indexOf("%") >= 0) { + str = str.replaceAll("%", "\\\\%"); + } + return str; + } + + /** + *

获取字符串字节长度(包含中文和中文符号)

+ * + * @param str 含有中文和中文符号的字符串 + * + * @return int + */ + public static int getLength(String str){ + return str.replaceAll("[\u4E00-\u9FA5\u3000-\u303F\uFF00-\uFFEF]", "rr").length(); + } + + /** + *

此排序方法仅应用于数字类型的string数字排序

+ * + * @param arrays 有long类型的数字组成的String 数组 + * @return 排序后的数组 + */ + public static String[] sortArrays(String[] arrays){ + for(int i = 0; i < arrays.length - 1; i++) { + String temp =""; + for(int j = 0; j < arrays.length - i - 1; j++) { + if(StringUtil.getStrTolong(arrays[j]) >StringUtil.getStrTolong(arrays[j +1])) { + temp = arrays[j + 1]; + arrays[j + 1] = arrays[j]; + arrays[j] = temp; + } + } + } + return arrays; + } + + /** + *

此排序方法仅应用于浮点类型的string数字排序

+ * + * @param arrays 有浮点类型的数字组成的String 数组 + * @return 排序后的数组 + */ + public static String[] sortArraystoBigDecimal(String[] arrays) { + for (int i = 0; i < arrays.length - 1; i++) { + String temp = ""; + for (int j = 0; j < arrays.length - i - 1; j++) { + if (StringUtil.getStrToBigDecimal(arrays[j]).compareTo( + StringUtil.getStrToBigDecimal(arrays[j + 1])) == 1) { + temp = arrays[j + 1]; + arrays[j + 1] = arrays[j]; + arrays[j] = temp; + } + } + } + return arrays; + } + + /** + *

判断字符串是否为NUll,或者为空字符

+ * @param str 字符串 + * @return boolean + * */ + public static boolean isBlank(String str){ + if(str == null || str.equals("")){ + return true; + } + return false; + } + + + /** + *

将字符拆分,并放入list集合

+ * @param str 字符串 + * @return list + * */ + public static List toLongList(String str){ + List idList = new ArrayList(); + if(!isBlank(str)){ + String[] idsArray = str.split(","); + for (int i = 0; i < idsArray.length; i++) { + idList.add(Long.parseLong(idsArray[i])); + } + } + return idList; + } + + + public static String listToString(List list, char separator) { + return org.apache.commons.lang.StringUtils.join(list.toArray(),separator); + } + + public static void main(String[] args) { + //String result = "aaaa ,,aaa"; + //System.out.println(getLength(result)); + + String[] strArray = new String[]{"How","d$o","you","do"}; + strArray = new String[]{"5.36","5.003","1.36","9.87","3.33333379"}; + //strArray = StringUtil.sortArrays(strArray); + strArray = StringUtil.sortArraystoBigDecimal(strArray); + String str = StringUtil.getArrToStr(strArray); + System.out.println(str); + + //System.out.println(StringUtil.formatIntegrity("dkkemnkn", 2, '6')); + + } + + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SysConstant.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SysConstant.java new file mode 100644 index 0000000..7ecc106 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/SysConstant.java @@ -0,0 +1,94 @@ +package com.risk.riskmanage.util; + +/** + * @ClassName: SysConstant + * @Description: 系统常量类 + */ +public final class SysConstant { + + public static final String EMPTY_STRING =""; + + public static final String SPACE =" "; + + public static final String COMMA =","; + + public static final String SEMICOLON =";"; + + public static final String MINUS ="-"; + + public static final String UNDERLINE ="_"; + + public static final String DATA_POINT ="."; + + public static final String POINT ="\\."; + + public static final String COLON =":"; + + public static final String WN ="// "; + + public static final String AT ="@"; + + public static final String SLASH ="/"; + + public static final String BACKSLASH ="\\\\"; + + public static final String YES ="Y"; + + public static final String NO ="N"; + + public static final String TRUE ="true"; + + public static final String FALSE ="false"; + + public static final String LEFT_BRACKET ="("; + + public static final String RIGHT_BRACKET =")"; + + public static final String ELLIPSIS ="..."; + + public static final String ESCAPE ="\\"; + + public static final String EXCLAMATION ="!"; + + public static final String INFINITY ="∞"; + + /** + * 系统统一操作成功码 + */ + public static final String SUCCESS_CODE = "200"; + + /** + * 系统统一操作成功提示信息 + */ + public static final String SUCCESS_MESSAGE = "操作成功"; + + /** + * 系统统一操作失败码 + */ + public static final String FAIL_CODE = "500"; + + /** + * 系统统一操作失败提示信息 + */ + public static final String FAIL_MESSAGE = "操作失败"; + + /** + * 系统统一操作失败码 + */ + public static final String UNUSE_CODE = "300"; + + /** + * 系统统一操作失败提示信息 + */ + public static final String UNUSE_MESSAGE = "已停用"; + + /** + * 系统统一操作失败码 + */ + public static final String DEL_CODE = "400"; + + /** + * 系统统一操作失败提示信息 + */ + public static final String DEL_MESSAGE = "已删除"; +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/UploadController.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/UploadController.java new file mode 100644 index 0000000..70d919e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/UploadController.java @@ -0,0 +1,74 @@ +package com.risk.riskmanage.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; +import com.risk.riskmanage.common.basefactory.BaseController; + + +/** + * @ClassName: UploadController
+ * @Description: TODO ADD FUNCTION.
+ */ +@Controller + +public class UploadController extends BaseController { + static Logger log = LoggerFactory.getLogger(UploadController.class); + + @RequestMapping("/upload") + public ModelAndView uploadFile( + @RequestParam(value = "file", required = true) MultipartFile file, + HttpServletRequest request, ModelMap model) { + log.info(" upload file " + file); + InputStream is = null; + OutputStream os = null; + + try { + + is = file.getInputStream(); + + File destFile = new File("C:\\img", "123456.jpg"); + // 获取文件类型ID + os = new FileOutputStream(destFile); + + byte[] b = new byte[4096]; + int length = 0; + while (true) { + length = is.read(b); + if (length < 0) + break; + os.write(b, 0, length); + } + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + try { + if (is != null) { + is.close(); + } + if (os != null) { + os.close(); + } + } catch (Exception e) { + e.printStackTrace(); + + } finally { + System.gc(); + } + } + return new ModelAndView("uploadResult"); + } + + } diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpClient.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpClient.java new file mode 100644 index 0000000..5e4a4bf --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpClient.java @@ -0,0 +1,317 @@ +package com.risk.riskmanage.util.https; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; +import org.apache.commons.httpclient.Header; +import org.apache.commons.httpclient.HttpMethod; +import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; +import org.apache.commons.httpclient.cookie.CookiePolicy; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.multipart.PartBase; +import org.apache.commons.httpclient.params.HttpClientParams; +import org.apache.commons.httpclient.params.HttpConnectionManagerParams; +import org.apache.commons.httpclient.params.HttpMethodParams; +import org.apache.commons.httpclient.protocol.Protocol; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +public class HttpClient implements java.io.Serializable { + + static Logger log=LoggerFactory.getLogger(HttpClient.class); + + private static final long serialVersionUID = -176092625883595547L; + private static final int OK = 200; // OK: Success! + private static final int NOT_MODIFIED = 304; // Not Modified: There was no new data to return. + private static final int BAD_REQUEST = 400; // Bad Request: The request was invalid. An accompanying error message will explain why. This is the status versionCode will be returned during rate limiting. + private static final int NOT_AUTHORIZED = 401; // Not Authorized: Authentication credentials were missing or incorrect. + private static final int FORBIDDEN = 403; // Forbidden: The request is understood, but it has been refused. An accompanying error message will explain why. + private static final int NOT_FOUND = 404; // Not Found: The URI requested is invalid or the resource requested, such as a user, does not exists. + private static final int NOT_ACCEPTABLE = 406; // Not Acceptable: Returned by the Search API when an invalid format is specified in the request. + private static final int INTERNAL_SERVER_ERROR = 500;// Internal Server Error: Something is broken. Please post to the group so the Weibo team can investigate. + private static final int BAD_GATEWAY = 502;// Bad Gateway: Weibo is down or being upgraded. + private static final int SERVICE_UNAVAILABLE = 503;// Service Unavailable: The Weibo servers are up, but overloaded with requests. Try again later. The search and trend methods use this to indicate when you are being rate limited. + + private final static boolean DEBUG = true; + org.apache.commons.httpclient.HttpClient client = null; + + private MultiThreadedHttpConnectionManager connectionManager; + private int maxSize; + + public HttpClient() { + this(150, 30000, 30000, 1024 * 1024); + } + + public HttpClient(int maxConPerHost, int conTimeOutMs, int soTimeOutMs, + int maxSize) { + connectionManager = new MultiThreadedHttpConnectionManager(); + HttpConnectionManagerParams params = connectionManager.getParams(); + params.setDefaultMaxConnectionsPerHost(maxConPerHost); + params.setConnectionTimeout(conTimeOutMs); + params.setSoTimeout(soTimeOutMs); + + HttpClientParams clientParams = new HttpClientParams(); + // 忽略cookie 避免 Cookie rejected 警告 + clientParams.setCookiePolicy(CookiePolicy.IGNORE_COOKIES); + client = new org.apache.commons.httpclient.HttpClient(clientParams, + connectionManager); + Protocol myhttps = new Protocol("https", new MySSLSocketFactory(), 443); + Protocol.registerProtocol("https", myhttps); + this.maxSize = maxSize; + } + + /** + * log调试 + * + */ + private static void log(String message) { + if (DEBUG) { + log.debug(message); + } + } + + /** + * 处理http getmethod 请求 + * + */ + public int getHttps(String url){ + log.debug(" in getHttps,url="+url); + GetMethod method = new GetMethod(url); + int responseCode = -1; + try { + method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, + new DefaultHttpMethodRetryHandler(3, false)); + client.executeMethod(method); + responseCode = method.getStatusCode(); + log.info("https StatusCode:" + responseCode); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + method.releaseConnection(); + return responseCode; + } + } + public String get(String url) throws Exception { + return get(url, new PostParameter[0]).asString(); + } + + public Response get(String url, PostParameter[] params) + throws Exception { + log("Request:"); + log("GET:" + url); + if (null != params && params.length > 0) { + String encodedParams = HttpClient.encodeParameters(params); + if (-1 == url.indexOf("?")) { + url += "?" + encodedParams; + } else { + url += "&" + encodedParams; + } + } + GetMethod getmethod = new GetMethod(url); + return httpRequest(getmethod); + + } + + /** + * 处理http post请求 + * + */ + + public Response post(String url, PostParameter[] params) + throws Exception { + return post(url, params, true); + + } + + public Response post(String url, PostParameter[] params, + Boolean WithTokenHeader) throws HttpsException { + log("Request:"); + log("POST" + url); + PostMethod postMethod = new PostMethod(url); + for (int i = 0; i < params.length; i++) { + postMethod.addParameter(params[i].getName(), params[i].getValue()); + } + HttpMethodParams param = postMethod.getParams(); + param.setContentCharset("UTF-8"); + if (WithTokenHeader) { + return httpRequest(postMethod); + } else { + return httpRequest(postMethod, WithTokenHeader); + } + } + + /** + * 处理http post请求 + * + */ + + public String post(String url, Map params) + throws Exception { + String strResult = null; + + Response response= post(url, params, true); + if (response !=null) { + // 取出回应字串 + strResult = response.getResponseAsString(); + } + return strResult; + } + + public Response post(String url, Map params, + Boolean WithTokenHeader) throws HttpsException { + log("Request:"); + log("POST" + url); + PostMethod postMethod = new PostMethod(url); + postMethod.addRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8"); + + for (Map.Entry entry : params.entrySet()) { + postMethod.addParameter(entry.getKey(), entry + .getValue()); + } + + HttpMethodParams param = postMethod.getParams(); + param.setContentCharset("UTF-8"); + if (WithTokenHeader) { + return httpRequest(postMethod); + } else { + return httpRequest(postMethod, WithTokenHeader); + } + } + public Response httpRequest(HttpMethod method) throws HttpsException { + return httpRequest(method, true); + } + + public Response httpRequest(HttpMethod method, Boolean WithTokenHeader) + throws HttpsException { + InetAddress ipaddr; + int responseCode = -1; + try { + ipaddr = InetAddress.getLocalHost(); + List
headers = new ArrayList
(); + method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, + new DefaultHttpMethodRetryHandler(3, false)); + client.executeMethod(method); + Header[] resHeader = method.getResponseHeaders(); + responseCode = method.getStatusCode(); + log("Response:"); + log("https StatusCode:" + String.valueOf(responseCode)); + + for (Header header : resHeader) { + log(header.getName() + ":" + header.getValue()); + } + Response response = new Response(); + response.setResponseAsString(method.getResponseBodyAsString()); + log(response.toString() + "\n"); + + if (responseCode != OK) + + { + try { + throw new HttpsException(getCause(responseCode)); + } catch (Exception e) { + e.printStackTrace(); + } + } + return response; + + } catch (IOException ioe) { + throw new HttpsException(ioe.getMessage(), ioe, responseCode); + } finally { + method.releaseConnection(); + } + + } + + /* + * 对parameters进行encode处理 + */ + public static String encodeParameters(PostParameter[] postParams) { + StringBuffer buf = new StringBuffer(); + for (int j = 0; j < postParams.length; j++) { + if (j != 0) { + buf.append("&"); + } + try { + buf.append(URLEncoder.encode(postParams[j].getName(), "UTF-8")) + .append("=") + .append(URLEncoder.encode(postParams[j].getValue(), + "UTF-8")); + } catch (java.io.UnsupportedEncodingException neverHappen) { + } + } + return buf.toString(); + } + + private static class ByteArrayPart extends PartBase { + private byte[] mData; + private String mName; + + public ByteArrayPart(byte[] data, String name, String type) + throws IOException { + super(name, type, "UTF-8", "binary"); + mName = name; + mData = data; + } + + protected void sendData(OutputStream out) throws IOException { + out.write(mData); + } + + protected long lengthOfData() throws IOException { + return mData.length; + } + + protected void sendDispositionHeader(OutputStream out) + throws IOException { + super.sendDispositionHeader(out); + StringBuilder buf = new StringBuilder(); + buf.append("; filename=\"").append(mName).append("\""); + out.write(buf.toString().getBytes()); + } + } + + private static String getCause(int statusCode) { + String cause = null; + switch (statusCode) { + case NOT_MODIFIED: + break; + case BAD_REQUEST: + cause = "The request was invalid. An accompanying error message will explain why. This is the status versionCode will be returned during rate limiting."; + break; + case NOT_AUTHORIZED: + cause = "Authentication credentials were missing or incorrect."; + break; + case FORBIDDEN: + cause = "The request is understood, but it has been refused. An accompanying error message will explain why."; + break; + case NOT_FOUND: + cause = "The URI requested is invalid or the resource requested, such as a user, does not exists."; + break; + case NOT_ACCEPTABLE: + cause = "Returned by the Search API when an invalid format is specified in the request."; + break; + case INTERNAL_SERVER_ERROR: + cause = "Something is broken. Please post to the group so the Weibo team can investigate."; + break; + case BAD_GATEWAY: + cause = "Weibo is down or being upgraded."; + break; + case SERVICE_UNAVAILABLE: + cause = "Service Unavailable: The Weibo servers are up, but overloaded with requests. Try again later. The search and trend methods use this to indicate when you are being rate limited."; + break; + default: + cause = ""; + } + return statusCode + ":" + cause; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpsException.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpsException.java new file mode 100644 index 0000000..3b5ef7d --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/HttpsException.java @@ -0,0 +1,45 @@ +package com.risk.riskmanage.util.https; + + +public class HttpsException extends Exception { + private int statusCode = -1; + private int errorCode = -1; + private String request; + private String error; + private static final long serialVersionUID = -2623309261327598087L; + + public HttpsException(String msg) { + super(msg); + } + + public HttpsException(Exception cause) { + super(cause); + } + + public HttpsException(String msg, Exception cause) { + super(msg, cause); + } + + public HttpsException(String msg, Exception cause, int statusCode) { + super(msg, cause); + this.statusCode = statusCode; + + } + + public int getStatusCode() { + return this.statusCode; + } + + public int getErrorCode() { + return errorCode; + } + + public String getRequest() { + return request; + } + + public String getError() { + return error; + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/MySSLSocketFactory.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/MySSLSocketFactory.java new file mode 100644 index 0000000..ca7914e --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/MySSLSocketFactory.java @@ -0,0 +1,100 @@ +package com.risk.riskmanage.util.https; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.UnknownHostException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.SocketFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.commons.httpclient.params.HttpConnectionParams; +import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; + + +public class MySSLSocketFactory implements ProtocolSocketFactory { + private SSLContext sslcontext = null; + private SSLContext createSSLContext() { + SSLContext sslcontext = null; + try { + sslcontext = SSLContext.getInstance("SSL"); + sslcontext.init(null, + new TrustManager[] { new TrustAnyTrustManager() }, + new java.security.SecureRandom()); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } + return sslcontext; + } + + private SSLContext getSSLContext() { + if (this.sslcontext == null) { + this.sslcontext = createSSLContext(); + } + return this.sslcontext; + } + + public Socket createSocket(Socket socket, String host, int port, + boolean autoClose) throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(socket, host, + port, autoClose); + } + + public Socket createSocket(String host, int port) throws IOException, + UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(host, port); + } + + public Socket createSocket(String host, int port, InetAddress clientHost, + int clientPort) throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(host, port, + clientHost, clientPort); + } + + public Socket createSocket(String host, int port, InetAddress localAddress, + int localPort, HttpConnectionParams params) throws IOException, + UnknownHostException, ConnectTimeoutException { + if (params == null) { + throw new IllegalArgumentException("Parameters may not be null"); + } + int timeout = params.getConnectionTimeout(); + SocketFactory socketfactory = getSSLContext().getSocketFactory(); + if (timeout == 0) { + return socketfactory.createSocket(host, port, localAddress, + localPort); + } else { + Socket socket = socketfactory.createSocket(); + SocketAddress localaddr = new InetSocketAddress(localAddress, + localPort); + SocketAddress remoteaddr = new InetSocketAddress(host, port); + socket.bind(localaddr); + socket.connect(remoteaddr, timeout); + return socket; + } + } + + private static class TrustAnyTrustManager implements X509TrustManager { + public void checkClientTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + } + + public void checkServerTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + } + + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[] {}; + } + } +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/PostParameter.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/PostParameter.java new file mode 100644 index 0000000..1bb8664 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/PostParameter.java @@ -0,0 +1,206 @@ +package com.risk.riskmanage.util.https; + +import java.io.File; +import java.net.URLEncoder; +import java.util.List; + + + + +public class PostParameter implements java.io.Serializable{ + String name; + String value; + private File file = null; + + private static final long serialVersionUID = -8708108746980739212L; + + public PostParameter(String name, String value) { + this.name = name; + this.value = value; + } + + public PostParameter(String name, double value) { + this.name = name; + this.value = String.valueOf(value); + } + + public PostParameter(String name, int value) { + this.name = name; + this.value = String.valueOf(value); + } + + public PostParameter(String name, File file) { + this.name = name; + this.file = file; + } + + public String getName(){ + return name; + } + public String getValue(){ + return value; + } + + public File getFile() { + return file; + } + + public boolean isFile(){ + return null != file; + } + + private static final String JPEG = "image/jpeg"; + private static final String GIF = "image/gif"; + private static final String PNG = "image/png"; + private static final String OCTET = "application/octet-stream"; + + /** + * + * @return content-type + */ + public String getContentType() { + if (!isFile()) { + throw new IllegalStateException("not a file"); + } + String contentType; + String extensions = file.getName(); + int index = extensions.lastIndexOf("."); + if (-1 == index) { + // no extension + contentType = OCTET; + } else { + extensions = extensions.substring(extensions.lastIndexOf(".") + 1).toLowerCase(); + if (extensions.length() == 3) { + if ("gif".equals(extensions)) { + contentType = GIF; + } else if ("png".equals(extensions)) { + contentType = PNG; + } else if ("jpg".equals(extensions)) { + contentType = JPEG; + } else { + contentType = OCTET; + } + } else if (extensions.length() == 4) { + if ("jpeg".equals(extensions)) { + contentType = JPEG; + } else { + contentType = OCTET; + } + } else { + contentType = OCTET; + } + } + return contentType; + } + + + public static boolean containsFile(PostParameter[] params) { + boolean containsFile = false; + if(null == params){ + return false; + } + for (PostParameter param : params) { + if (param.isFile()) { + containsFile = true; + break; + } + } + return containsFile; + } + /*package*/ static boolean containsFile(List params) { + boolean containsFile = false; + for (PostParameter param : params) { + if (param.isFile()) { + containsFile = true; + break; + } + } + return containsFile; + } + + public static PostParameter[] getParameterArray(String name, String value) { + return new PostParameter[]{new PostParameter(name,value)}; + } + public static PostParameter[] getParameterArray(String name, int value) { + return getParameterArray(name,String.valueOf(value)); + } + + public static PostParameter[] getParameterArray(String name1, String value1 + , String name2, String value2) { + return new PostParameter[]{new PostParameter(name1, value1) + , new PostParameter(name2, value2)}; + } + public static PostParameter[] getParameterArray(String name1, int value1 + , String name2, int value2) { + return getParameterArray(name1,String.valueOf(value1),name2,String.valueOf(value2)); + } + + @Override + public int hashCode() { + int result = name.hashCode(); + result = 31 * result + value.hashCode(); + result = 31 * result + (file != null ? file.hashCode() : 0); + return result; + } + + @Override public boolean equals(Object obj) { + if (null == obj) { + return false; + } + if (this == obj) { + return true; + } + if (obj instanceof PostParameter) { + PostParameter that = (PostParameter) obj; + + if (file != null ? !file.equals(that.file) : that.file != null) + return false; + + return this.name.equals(that.name) && + this.value.equals(that.value); + } + return false; + } + + @Override + public String toString() { + return "PostParameter{" + + "name='" + name + '\'' + + ", value='" + value + '\'' + + ", file=" + file + + '}'; + } + + public int compareTo(Object o) { + int compared; + PostParameter that = (PostParameter) o; + compared = name.compareTo(that.name); + if (0 == compared) { + compared = value.compareTo(that.value); + } + return compared; + } + + public static String encodeParameters(PostParameter[] httpParams) { + if (null == httpParams) { + return ""; + } + StringBuffer buf = new StringBuffer(); + for (int j = 0; j < httpParams.length; j++) { + if (httpParams[j].isFile()) { + throw new IllegalArgumentException("parameter [" + httpParams[j].name + "]should be text"); + } + if (j != 0) { + buf.append("&"); + } + try { + buf.append(URLEncoder.encode(httpParams[j].name, "UTF-8")) + .append("=").append(URLEncoder.encode(httpParams[j].value, "UTF-8")); + } catch (java.io.UnsupportedEncodingException neverHappen) { + } + } + return buf.toString(); + + } + +} diff --git a/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/Response.java b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/Response.java new file mode 100644 index 0000000..83bdd09 --- /dev/null +++ b/jar-enginex-manager/src/main/java/com/risk/riskmanage/util/https/Response.java @@ -0,0 +1,226 @@ +package com.risk.riskmanage.util.https; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.zip.GZIPInputStream; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + + +public class Response { + private final static boolean DEBUG = true; + static Logger log = LoggerFactory.getLogger(Response.class); + + + private static ThreadLocal builders = + new ThreadLocal() { + @Override + protected DocumentBuilder initialValue() { + try { + return + DocumentBuilderFactory.newInstance() + .newDocumentBuilder(); + } catch (ParserConfigurationException ex) { + throw new ExceptionInInitializerError(ex); + } + } + }; + + private int statusCode; + private Document responseAsDocument = null; + private String responseAsString = null; + private InputStream is; + private HttpURLConnection con; + private boolean streamConsumed = false; + + public Response() { + + } + public Response(HttpURLConnection con) throws IOException { + this.con = con; + this.statusCode = con.getResponseCode(); + if(null == (is = con.getErrorStream())){ + is = con.getInputStream(); + } + if (null != is && "gzip".equals(con.getContentEncoding())) { + // the response is gzipped + is = new GZIPInputStream(is); + } + } + + // for test purpose + /*package*/ Response(String content) { + this.responseAsString = content; + } + + public int getStatusCode() { + return statusCode; + } + + public String getResponseHeader(String name) { + if (con != null) + return con.getHeaderField(name); + else + return null; + } + + /** + * Returns the response stream.
+ * This method cannot be called after calling asString() or asDcoument()
+ * It is suggested to call disconnect() after consuming the stream. + * + * Disconnects the internal HttpURLConnection silently. + * @return response body stream + * @throws HttpsException + * @see #disconnect() + */ + public InputStream asStream() { + if(streamConsumed){ + throw new IllegalStateException("Stream has already been consumed."); + } + return is; + } + + /** + * Returns the response body as string.
+ * Disconnects the internal HttpURLConnection silently. + * @return response body + * @throws HttpsException + */ + public String asString() throws HttpsException{ + if(null == responseAsString){ + BufferedReader br; + try { + InputStream stream = asStream(); + if (null == stream) { + return null; + } + br = new BufferedReader(new InputStreamReader(stream, "UTF-8")); + StringBuffer buf = new StringBuffer(); + String line; + while (null != (line = br.readLine())) { + buf.append(line).append("\n"); + } + this.responseAsString = buf.toString(); + /* if(Configuration.isDalvik()){ + this.responseAsString = unescape(responseAsString); + }*/ + log(responseAsString); + stream.close(); + con.disconnect(); + streamConsumed = true; + } catch (NullPointerException npe) { + // don't remember in which case npe can be thrown + throw new HttpsException(npe.getMessage(), npe); + } catch (IOException ioe) { + throw new HttpsException(ioe.getMessage(), ioe); + } + } + return responseAsString; + } + + /** + * Returns the response body as org.w3c.dom.Document.
+ * Disconnects the internal HttpURLConnection silently. + * @return response body as org.w3c.dom.Document + * @throws HttpsException + */ + public Document asDocument() throws HttpsException { + if (null == responseAsDocument) { + try { + // it should be faster to read the inputstream directly. + // but makes it difficult to troubleshoot + this.responseAsDocument = builders.get().parse(new ByteArrayInputStream(asString().getBytes("UTF-8"))); + } catch (SAXException saxe) { + throw new HttpsException("The response body was not well-formed:\n" + responseAsString, saxe); + } catch (IOException ioe) { + throw new HttpsException("There's something with the connection.", ioe); + } + } + return responseAsDocument; + } + + public InputStreamReader asReader() { + try { + return new InputStreamReader(is, "UTF-8"); + } catch (java.io.UnsupportedEncodingException uee) { + return new InputStreamReader(is); + } + } + + public void disconnect(){ + con.disconnect(); + } + + private static Pattern escaped = Pattern.compile("&#([0-9]{3,5});"); + + /** + * Unescape UTF-8 escaped characters to string. + * @author pengjianq...@gmail.com + * + * @param original The string to be unescaped. + * @return The unescaped string + */ + public static String unescape(String original) { + Matcher mm = escaped.matcher(original); + StringBuffer unescaped = new StringBuffer(); + while (mm.find()) { + mm.appendReplacement(unescaped, Character.toString( + (char) Integer.parseInt(mm.group(1), 10))); + } + mm.appendTail(unescaped); + return unescaped.toString(); + } + + @Override + public String toString() { + if(null != responseAsString){ + return responseAsString; + } + return "Response{" + + "statusCode=" + statusCode + + ", response=" + responseAsDocument + + ", responseString='" + responseAsString + '\'' + + ", is=" + is + + ", con=" + con + + '}'; + } + + private void log(String message) { + if (DEBUG) { + log.debug("[" + new java.util.Date() + "]" + message); + } + } + + private void log(String message, String message2) { + if (DEBUG) { + log(message + message2); + } + } + + public String getResponseAsString() { + return responseAsString; + } + + public void setResponseAsString(String responseAsString) { + this.responseAsString = responseAsString; + } + + public void setStatusCode(int statusCode) { + this.statusCode = statusCode; + } + +} diff --git a/jar-enginex-manager/src/main/resources/application-dev.properties b/jar-enginex-manager/src/main/resources/application-dev.properties new file mode 100644 index 0000000..20810bd --- /dev/null +++ b/jar-enginex-manager/src/main/resources/application-dev.properties @@ -0,0 +1,26 @@ +server.port=8085 +server.servlet.context-path=/Riskmanage + +logging.config=classpath:logging-config.xml + +# mysql +spring.datasource.default.url = jdbc:mysql://47.102.125.25:3306/zsxntest?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true +spring.datasource.default.username = root +spring.datasource.default.password = enginex513 +spring.datasource.default.driver-class-name = com.mysql.cj.jdbc.Driver + +# redis +redis.host=47.102.125.25 +redis.port=6379 +redis.db=0 +redis.password=enginex123 +redis.pool.maxTotal=3000 +redis.pool.maxIdle=100 +redis.pool.maxWait=1000 +redis.pool.timeout=100000 + + +runner.url: http://localhost:8081 + +# \u76D1\u63A7\u4E2D\u5FC3 \u6570\u636E\u5B58\u50A8\u65B9\u5F0F mysql \u6216\u8005 hbase +monitor.data.storage.type=mysql \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/application-prod.properties b/jar-enginex-manager/src/main/resources/application-prod.properties new file mode 100644 index 0000000..e5eae43 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/application-prod.properties @@ -0,0 +1,27 @@ +server.port=8080 +server.servlet.context-path=/Riskmanage + +logging.config=classpath:logging-config.xml + +# mysql +spring.datasource.default.url = jdbc:mysql://localhost:3306/riskmanage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true +spring.datasource.default.username = root +spring.datasource.default.password = enginex513! +spring.datasource.default.driver-class-name = com.mysql.cj.jdbc.Driver + +# redis +redis.host=localhost +redis.port=6379 +redis.db=0 +redis.password=enginex123! +redis.pool.maxTotal=3000 +redis.pool.maxIdle=100 +redis.pool.maxWait=1000 +redis.pool.timeout=100000 + + +runner.url: http://localhost:8082 + + +# \u76D1\u63A7\u4E2D\u5FC3 \u6570\u636E\u5B58\u50A8\u65B9\u5F0F mysql \u6216\u8005 hbase +monitor.data.storage.type=mysql \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/application-test.properties b/jar-enginex-manager/src/main/resources/application-test.properties new file mode 100644 index 0000000..c107bd1 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/application-test.properties @@ -0,0 +1,25 @@ +server.port=8080 +server.servlet.context-path=/Riskmanage + +logging.config=classpath:logging-config.xml + +# mysql +spring.datasource.default.url = jdbc:mysql://localhost:3306/riskmanage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true +spring.datasource.default.username = root +spring.datasource.default.password = enginex513 +spring.datasource.default.driver-class-name = com.mysql.cj.jdbc.Driver + +# redis +redis.host=localhost +redis.port=6379 +redis.db=0 +redis.password=enginex123 +redis.pool.maxTotal=3000 +redis.pool.maxIdle=100 +redis.pool.maxWait=1000 +redis.pool.timeout=100000 + +runner.url: http://localhost:8081 + +# \u76D1\u63A7\u4E2D\u5FC3 \u6570\u636E\u5B58\u50A8\u65B9\u5F0F mysql \u6216\u8005 hbase +monitor.data.storage.type=mysql \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/application.properties b/jar-enginex-manager/src/main/resources/application.properties new file mode 100644 index 0000000..257b306 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.profiles.active=dev \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/datamanage/FieldCondMapper.xml b/jar-enginex-manager/src/main/resources/datamanage/FieldCondMapper.xml new file mode 100644 index 0000000..4e6ebae --- /dev/null +++ b/jar-enginex-manager/src/main/resources/datamanage/FieldCondMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + insert into t_field_condition ( field_id, condition_value, content + , cond_field_id, cond_field_operator, cond_field_value, cond_field_logical + , created) + values + + ( #{fieldCond.fieldId}, #{fieldCond.conditionValue}, #{fieldCond.content} + , #{fieldCond.condFieldId}, #{fieldCond.condFieldOperator}, #{fieldCond.condFieldValue}, #{fieldCond.condFieldLogical} + , now() ) + + + + + + + + + delete from t_field_condition where field_id = #{id} + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/datamanage/FieldMapper.xml b/jar-enginex-manager/src/main/resources/datamanage/FieldMapper.xml new file mode 100644 index 0000000..598ff48 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/datamanage/FieldMapper.xml @@ -0,0 +1,836 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, field_en, field_cn, field_typeid, value_type, value_scope, is_derivative, is_output, is_common, formula, formula_show, used_fieldid, orig_fieldid, author, created, is_use_sql, data_source_id, sql_statement, sql_variable, is_interface, interface_id, interface_parse_field, json_value,dict_variable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into t_field ( field_en, field_cn, field_typeid + , value_type, value_scope, is_derivative + , is_output, formula, formula_show, orig_fieldid, used_fieldid + , is_common, author, created, is_use_sql, data_source_id, sql_statement, sql_variable + , is_interface, interface_id, interface_parse_field, json_value, organ_id,dict_variable) + values ( #{fieldEn}, #{fieldCn}, #{fieldTypeId} + , #{valueType}, #{valueScope}, #{isDerivative} + , #{isOutput}, #{formula}, #{formulaShow}, #{origFieldId}, #{usedFieldId} + , #{isCommon}, #{author}, now(), #{isUseSql}, #{dataSourceId}, #{sqlStatement}, #{sqlVariable} + , #{isInterface}, #{interfaceId}, #{interfaceParseField}, #{jsonValue}, #{organId},#{dictVariable}) + + + + insert into t_field ( field_en, field_cn, field_typeid + , value_type, value_scope, is_derivative + , is_output, formula, formula_show, is_common, author, created, + , is_interface, interface_id, interface_parse_field, json_value,dict_variable) + values + + ( + #{field.fieldEn}, #{field.fieldCn}, #{field.fieldTypeId} + , #{field.valueType}, #{field.valueScope}, #{field.isDerivative} + , #{field.isOutput}, #{field.formula}, #{field.formulaShow}, #{field.isCommon}, #{field.author}, now() + , #{isInterface}, #{interfaceId}, #{interfaceParseField}, #{jsonValue},#{dictVariable} + ) + + + + + update t_field + set field_en = #{fieldEn}, field_cn = #{fieldCn}, field_typeid = #{fieldTypeId} + , value_type = #{valueType}, value_scope = #{valueScope}, is_derivative = #{isDerivative} + , is_output = #{isOutput}, formula = #{formula}, formula_show = #{formulaShow} + , orig_fieldid = #{origFieldId}, used_fieldid = #{usedFieldId}, is_common = #{isCommon} + , is_use_sql = #{isUseSql}, data_source_id = #{dataSourceId}, sql_statement = #{sqlStatement}, sql_variable = #{sqlVariable} + ,is_interface = #{isInterface}, interface_id = #{interfaceId}, interface_parse_field = #{interfaceParseField}, json_value = #{jsonValue},dict_variable = #{dictVariable} + where id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update t_field + set field_typeid = #{folderId} + where id in + + #{id} + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/datamanage/FieldTypeMapper.xml b/jar-enginex-manager/src/main/resources/datamanage/FieldTypeMapper.xml new file mode 100644 index 0000000..5b7ca91 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/datamanage/FieldTypeMapper.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + insert into t_field_type ( field_type, parent_id, is_common ,type) + values ( #{fieldType}, #{parentId}, #{isCommon} ,#{type}) + + + + update t_field_type + set field_type = #{fieldType} + where id = #{id} + + + + update t_field_type_user_rel + set status = -1 + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and engine_id = #{engineId} + and field_typeid in + + #{item} + + and status = 1 + + + + delete from t_field_type_user_rel + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and engine_id = #{engineId} + and field_typeid in + + #{item} + + and field_typeid not in + ( select field_typeid + from t_field f,t_field_user_rel r + where f.id = r.field_id + and f.field_typeid in + + #{item} + + ) + + + + update t_field_type_user_rel + set status = 1 + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and engine_id = #{engineId} + and field_typeid in + + #{item} + + and status = -1 + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/datamanage/FieldTypeUserMapper.xml b/jar-enginex-manager/src/main/resources/datamanage/FieldTypeUserMapper.xml new file mode 100644 index 0000000..4b16380 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/datamanage/FieldTypeUserMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + insert into t_field_type_user_rel ( field_typeid, organ_id, engine_id, user_id, created ) + values ( #{fieldTypeId}, #{organId}, #{engineId}, #{userId}, now() ) + + + + insert into t_field_type_user_rel ( field_typeid, organ_id, engine_id, user_id, created ) + select field_typeid, organ_id, #{engineId}, #{userId}, now() + from t_field_type_user_rel r + where r.field_typeid in + + #{item} + + and field_typeid not in ( select field_typeid from t_field_type_user_rel where engine_id = #{engineId}) + and engine_id is null + + + + + + delete from t_field_type_user_rel + where + organ_id = ( select organ_id from t_user where user_id = #{userId} ) + + and engine_id = #{engineId} + + + and engine_id is null + + and field_typeid = #{fieldTypeId} + + + + update t_field_type_user_rel + set user_id = #{userId}, created = now() + + ,status = #{status} + + where organ_id =#{organId} + and field_typeid = #{id} + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/datamanage/FieldUserMapper.xml b/jar-enginex-manager/src/main/resources/datamanage/FieldUserMapper.xml new file mode 100644 index 0000000..62985cc --- /dev/null +++ b/jar-enginex-manager/src/main/resources/datamanage/FieldUserMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + insert into t_field_user_rel (field_id, organ_id, engine_id, user_id, status, created, updated) + values (#{fieldId}, #{organId}, #{engineId}, #{userId}, #{status}, now(), now()) + + + + insert into t_field_user_rel (field_id, organ_id, engine_id, user_id, status, created, updated) + select id, #{organId}, #{engineId}, #{userId}, #{status}, now(), now() + from t_field t + where t.author = #{author} + and not exists ( select r.field_id from t_field_user_rel r where t.id = r.field_id ) + + + + insert into t_field_user_rel (field_id, organ_id, engine_id, user_id, status, created, updated) + select id, #{organId}, #{engineId}, #{userId}, #{status}, now(), now() + from t_field f + where f.field_typeid in + + #{item} + + and not exists ( select 1 + from ( select f.id,f.field_en,f.field_cn + from t_field f,t_field_user_rel fu + where f.id = fu.field_id + and fu.organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and fu.engine_id = ${engineId} )y + where f.field_en = y.field_en or f.field_cn = y.field_cn or f.id = y.id + ) + + + + insert into t_field_user_rel (field_id, organ_id, engine_id, user_id, status, created, updated) + select id, #{organId}, #{engineId}, #{userId}, 1, now(), now() + from t_field f + where f.id in + + #{item} + + and not exists ( select 1 + from ( select f.id,f.field_en,f.field_cn + from t_field f,t_field_user_rel fu + where f.id = fu.field_id + and fu.organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and fu.engine_id = ${engineId} )y + where f.field_en = y.field_en or f.field_cn = y.field_cn or f.id = y.id + ) + + + + update t_field_user_rel + set user_id = #{userId} , updated = now() + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + + and engine_id = #{engineId} + + + and engine_id is null + + and field_id = #{Id} + + + + update t_field_user_rel + set status=#{status} + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + + and engine_id = #{engineId} + + + and engine_id is null + + and field_id in + + #{item} + + + + + update t_field_user_rel + set status = -1 + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and engine_id = #{engineId} + and field_id in + + #{item} + + and status = 1 + + + + update t_field_user_rel + set status = 1 + where organ_id = ( select organ_id from t_user where user_id = #{userId} ) + and engine_id = #{engineId} + and field_id in + + #{item} + + and status = -1 + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/excleTemplate/field.xlsx b/jar-enginex-manager/src/main/resources/excleTemplate/field.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..13f39a6a53bca9e4008de8927b4ac91023cf1471 GIT binary patch literal 9104 zcma)i1yo$i(k`w8!7Vt01$PY|g1c+b;O@cQ9fAaR4+IJB?ry;?IKegiL-Ov)IsE6{ z_j;|FJ!__<_t#z3HT7*dNk}LJu%{6uvo7#-{m+00eK52(kh8P4v1gD2iD7`gfcqte zg?sap790$W1p*8V7mU zeUgEjuY+c+Z8wBYUTEELAb18QegBEXRQ3A+Pv13RG{e-7n4z2(DE$ysN^6W8n%Rul5W`qz5gUe$oAG=zDHAvx z9Ut@9Y>tMtks`Y+n7J@Nli5IHa>o^aQO(tgd7yBS!ZMbgOXxhtz7L z$$;8UFUa<_w$RSH=x>hg>~!J|i*+29bqiV7NgqZYmh2hCx9^J2TLfOJmtX{d3ldW4 zAQpvUG;bq5;<@%PldGxIh>e2-Qr>^WhPS4wU@LW4@~%Y--w_*-Th28xw-jb#cSpoz z@v*0(v@+9X+D~t2L)suJ1;a;W?#5K3NHY2geLE~5@-}xBvg&5a2o?oj7#@?#+y=-0 zy4PG#b$c{W2A7M*^hLztE{^jMRueYt)pB3^*Tq9$?Qh*SH^NOie9aCew+c0N>)ur& zHUn&on)?SmmW|NX7xzi4^7XIv`opyw%&mdJi^7+g2u1JGR###noo+t7f*U2z_V^ih zinX$|gBbq?_~}+}^X->ULngdg{!MjpqqmFx9$DNYj~{UY`07u^9u% z!kc9GV|x`8c50*fZ8;eG{o5^}3f^G24SN@4y&=ZS(^7|xIGofZhnZc9uF15|hYdQ# z3j^Xb=!|5WgoFLCCF3sL?T8GionA3z2_A7FEV}|Df z-65ag`uAJ`34+VT;#ZdVcLC(z0?yWU=JqB=Mh?$2 z%CVUsSr=%}XTySl;ruVzUn)#b3y_eYZk@x3(z~L%aO{1r6PY`l7hOy)?VP7wv~V`> zL!t&fv>;>B`Vc8i4E|Pm5Hjc?wet}-b?ZRo4a#LQ~t`F`ftVT?wu1yS?N)hPbT*^tULu%xj)(riP_vF4aUuW1e zzF^D_OYJaxtv#htqy4&BWM`n`B5ij0YG=8rZiKWJUmK+)bKO-}J8J_0yUvJ9vBJ3C zQYcf#bFaZ^U!uX*b!c5G^WC0L=%vCBeQ8YclDwj}xD%B@|E$o4^GI)2pmY1Wt(46- z6fc~q(}N{>hdXq;U`*iLtFCdn&s+EEe!8}Ovn@!OuP4+hAw{BhNJ1#)-aJYH+`GYa zu-ERJBWjtX&w!tx6dFdAyUto^<<-Tua|!O+_Zixpk~@@oj*x7xb+$_Vt!=#VDTSH$ zqO#(mlUA8Vnb4Nge0TFHWdwBrx*YPNUlH|l=9nxp?T-LGZz0_Yk$mfr%A;Ve4*=ih zG2&`-T%?^uiL@)G6;2k~b$VDY^kwTE2j5!K6xY4`oTLx0FTFxi{x;Z;9qsK48n0af zxx;I*Z;K*hl%%OR7a=v$;dfnr(ppy`5z^nzL*9ad!$0WM0Z*@=KO1$u5OtX+B0o(x zXT4c^=vKrK{fw`&HsqaLXb?=h=N=k7OwF8@08F=wJNoXfe+*wX`Z{EquVC^q1F;|X zTXtrp0SaG18eZ05u3V`A_QSShhk|WJI6_lykEV>N*CY}2!>&^Yb)iSAJeWKx5|lw0 z5$?{+8Bq_ZmmQN*tZzpHaJy+Nvz)IIX?PtMD*#@e-kOunObPM!)1IsI6GN6mnS6we zt^0fY|MxI@I&wi_ReAu&C`I{Un$^|Z8|RLv+PE-03+tDGoib| z{w5XT29dx{l|~`kthbMZPG1*zl)APtbb?ghV0WP>)NC*Wt!LU>pE?98a@YB#-&l7sJa$mM-oFxSY6vJ6kc*GUqf;XvIiDSP9PL0{+es_1PWTN zRa>M#3H>-)q*7@zlOQ~N=SGfrCU7b|9gef#u(vgxWDZrbqC)rn`nH?p_#&*JASykB z?{@3_$HwGa{+$-uPRMxC{I!zf*6X`P+2+=CkE^|YRjVe(AFYq)^VY4NyD%Mm8q97t z7nA(y{2n*MJ6=Cey1-X9Oe{Ly0^2(pLu8wHXnksS+vbLTB()}YQ;Bv}2{2tdeLWhS zgINAVw%2iJz~geoDHe?AVtLuN&K-Uuh1NU7vEBti$Rv7&>kP9Rm@*iAVv;C&)PFP7 zwIuj`j?Ec6PsQx+3!pmgtCo|2#dwpn{405XMcUUF;nGY_rAK@uDq2xuZOQM@cb6!a z`AA2i!~5o5<>rlpixV^0V+)GaV5a7LSmw(qSH3!_jPOVDDfGLCQ=|!>9h1uL+OqRU zGlRKD>7RRJ$GPJZvX2O#9LZ>;!`~(J)xyeFts>_9B{9)aHPN`MK3P3b@#Cm)S5nA9 zr74G~_;v@fI9}>pR5ykMhHG82Lwi(Gv+$I2AEX3F{vBbvO2a6YZ)4^siaaBqLQ0mS zzAd()(p!R&T`0XWX5xcH9ZKM9#ilddJAdhXoF_Wv;p%QkkRF~ zbtM?ozbY;P!W8bJw_6OXjsPEkEets1`X$^rVdA=A5EU=wOti&mZu7 zw~4bHDij>j>hTDA+|K9hVkU}40J)3*_yQ@i)Y5C${yvDf_ zRj3*ctH#I2i0(J`NKPdS0*Z>%CVOcP_uEd85)=aJy%}wX1bh^@Q;~9%nj&N_H<)7S z*4JTFl05+jB&a*!v)OSaf5_Me3+l`Iul5va~umjeSs z`h8^BJGfdH**{fC(^{5MFI6#rMs|7ONJ9~kvR^h`(`j4xxj6%KeWTHUK!KQ9!sAHR zOWFp~nj?C-~8MmSrChKYchJ`euK~!?N5(IBJ|X zM>tx)!!_z!U$HT4{?OQ!TZAntJw(At$*I84WQFjCgCWZNYRgme8 zxo!sATBvbgT%g5~YBz#jbmuZOCn1aQcOsjzoxB%9I8yk&R5qN>u_`lzbi!O;Rm0`3 z=$dmVbZ_c^9=YSzvJPmtj6w3OP<&f`$KLqf{kCyO_IUCRdEqC@dQ=D=MZIVaL(`XI z0B?pCEfd|r<7+$BTvO#^1e--SD62zs`ls^f@Ln^Q+&?tuo3*zx-;;qc zPt%!bgfe$Bmuj$48bx5?Bz|Pxce8w7&x(NRo6UFrGHc>c`~t59tk2;K+G`E? zl@(q-|Cj-=d^n)HqzLobkw>dX=`QOsHad=5`6M~jrRF-Ed_m{e=J`QoZcI1`=m(u)kWycm^2-OrX%9d)5@9#dQIW-n4btXON@IF#mKmt`4<$k_ye=E zSr4D3D%0`Pcf9EGmMk!Qk}U!T;P|9 zK0Q6FH?>oqhny9yA-SDRvY#Sk=G+*gC`O_=+rbuE<6e(E_?|9f=nY9)MY3LknX+?P z!i#xf?OB@5>E_C3y*Yrvv4dmJLn}-t(W14~U{?+jxNXJPdG6 zd`-LDhaT2rPHUFbvB5eaz=QtwOHD;2}8%aH#x;G{KGi zna^~LrE2Nk<%9Bd<68n3>d{ulYB8w zG&g=zF+qK$aJ@9sPelDT>@*A{i4Bruh;`xe%$uj)tcU8C;zg`uKp<1#om5GBNo56` zW>qv!Kaz^EVA;vao5yn^7(;iom~9qp2q(H+KkBm(VB_4&>O``+_B)7)>%`imqg@ZQ zR-f(Uv#_kye(yC_2mATV>dt49gy)Lj+T@OvIm(S?xXSNkskU8}z;gKnAFo3c-I#36 z7g-yc$7<hkv_8SrMy#*hZ3tQjcVZC1I zK;1+{Gaf<}Q~R-w<6|t5iNApm%mS~icYyJ&m*O>>eM~1RV6{9jTH4mJWetuclL}vt zS%o;9;`O-0xH~dSS+GnJ4@QWr5~a9pxLi79Zi2HZWu+?<0tN+k@$DO8Y(dd!qDv$B zF`+kN)Jpojt-gc^f+DWaccXBm-{K&cRy2xZHp)$f$z4~{Kj@I?w0B|yDg(1I0qWJg z8kGHbq03KFmMe-q;SFf6`@UL0}&!ZE;{H5Go{A-ry<3@ zV{F@vKq+V&b`oc@K^vxf1O=+-`4i%nV?$*}?uCHkc7DkfYnh3uxahdFrK%(G3+)HW z9CrAMh{W2uFeQr+i=$x@<;wYl#xDhn=X?egZQxDa=jJ6@hx@DLt%wN8mP*-atV?d$^m=rYYK zYIh^@;e`U*9P8QH+x5QCeGMU4%ImL_{s;xn1|ddf}}N ztv7*E3XiUUG1A%yvIYRftp{+=5RinAAg_zc;6tDKjXvBtiwv3dmUwxL3*`rf7=9Xp zt3z{9WCm|CpBv(hyY=SR6JGc*4o**28pem?oF8$zKMU{U#9#md%;$!CrQte11FN#a zTdyr{D|q7g)5D4QIqyy$cCGp4Gd~)%iwZ^4u+M!N9v4qU**l+q_^}ie1GP(B4>d%I zUMY$uHxLcwVPS~%{dzeKbZ|s?o$Y_QT7E+z)Ef@m{o?v1);K@JaIPKv<+)(kyh=|- zx~NHiZqf>}ygme!5f&Pb;r7w4*6s=LOg*eLV}u*6Gx#Q~^NX zO_#+ULnhZNlt_rVzKu8WImz9|?s6>y1Fl(43_yO#yIR^j+3Q8rdd3bM*nIHn@zuZf z=g(k{BazaiB@IM5pb$U!#CHo3J{==*Drw* z$~Jcr4M*-qHY5H1K#QZ)T|5Qe@vNAv2f6e}+#k)cS0>NTvHT^nn0N}w^#10TJ`RVX zq%bhIca7<68OfSMEBmkJ9>Kb-Swc&%xe>G<3Z}>d;HT zA}b~x#urcC8NupAQ29a5sivGa79(QZo)@m(kkKBKqA-kRym1{AbZLv%uJ*vo>B6EP4ek?b zjCRMp9FAlC84hSl5tG2F1z=j9W4Ia$bSK4I9+H~s?<6*IfJkGbznZSroLjTCt$KH-_dIU`AOhwJ9A$7FN=4!%a(x5pY@#fsqGa;&8yFqsA;UQcU zc6U6~`LGGYvB8k~%Ii`4)&$8CVOzE0#aal7i?V3Tq>@)lqqh0MfyS+9bCdQ8BT{44 zc%j9yh0@T>H{1xtDWQb4sA~pQMjKltuspFL9_i|6yrzH+5+E`l9EZB?^4}v_-j5st7*9(3xe1| zjaMsB6Yz;>0QEQQP4w)H3>6*hOs(GkDs2N|nIt;}Z~~p%A5pAkbYcblfV;$;+`Gi2 zqYQLqaM>6Al>^!ek|k*WG7Z6oi84URbh+0Kk{>o&cbC&}N2xfp5Qq*Ifc}QQm1jIqa-}!*jB%_H^UQ%f{BJ0~UQgO*_ifTJ2lj zP4^-GrR@k$1+zhLl_(% za^sCl<_GI}D<4ZIRqBs~OO&vq89w3~abD`k5$%aoZil(foLv+3pg>gyCd>;OP4p8( zFTbxQCs0JInW%=>WFr9E(Nw^xM=aG1^gFvDr9_-ipAQt6=N-%S{xN-~oA6)yc`zV= zb?uBSo_D)Ha5^oDapfP?w#u2`TK42#xKwVW3=5B#+ZY6sN+n>ca`J>GI-eD6manykomDUTgh1s zoQn2j5XwpOb}zpQ{?G_x%NfvgV{Ki$KeGBdIY)Sug=SMJCe6_z8Z+F_J!h^J<>Czt z4A-cgBj4b$vqVs7nK2#G8?AsO#n5kCTCKLU$-P=KM4{xF!#4txlRF*lG2@!mgJRtN z- zP^X4s_MJ6#7$nTD64OQEn|zHIGX$0qZgD%K+z%Jtc56kK%K{5`lyX6~(VLIW2Ff+a zE7^BPOeYC&(h<_%`MLUCfIaNfeK1&CQo(|{L9SYufxR+1_W4QYW!J+gKWKS6xIALr zxWhC7-6?>Aq{u1a(;-{x7z;^mY@Ft6+pT8}v~u#`tN={Vzv3yK}RahvsrW*+)x$yJ494J3Aa-gYHg zsaNT$=N~qJzJe;eR#>&ADIqA~iKH=#Ee?C$3Rdu#%G+#n-@Q2u{eI;5J8e6+)gDD; zhiC{gVKFr$NV0!DwZr!ikO?eqRgRoHpDaogz(bToRT`@;6-e*_l29P=r#~7>60O-? z)92LQ>aRn@)qP}nftRShEpb|BS@B1mNc7RxrBetA@gAJ%*kGXwK; zNdW7$po~M2_l|X|J(&77)X8A)O~KXK$mh;#>Wcw{!;#e;I-v!R;@#zomYCXB+NQJi zGXwT}7&%FB2#jBc+;2Ah`O1J62MipH81%kK@UQFi+rYmQZBHrZ_jn@agu|5 zJOw@J{C4{OFP&c@^WU63@fE+vle4Gsw+9CP>F@a?15d)g{Zam1?f*PL@EoG&wD=!w zAJCTm%jthe^5^Q$ncY9?51^FsNBu9J_rKlr6W95BJl!-c)USN=-xU6dQWXB*64djF zKF?%Netx4=`**efmDirzd0tKZvEv3}SO2ZHdT!x)kMWO%d{E2r$--Y9$N&F(w+FGi zAl3iyTmRf4&l#>i9#j6V_J{9!KIP}7%^w5nAkqxv_wTU%w@E*d)xXEn3QPZ9;eSxq m|D5@A^7={l_o})6FWo;>wwxsNuV6(5J?H@olCvjz()%Bm-l~uQ literal 0 HcmV?d00001 diff --git a/jar-enginex-manager/src/main/resources/excleTemplate/listDb.xlsx b/jar-enginex-manager/src/main/resources/excleTemplate/listDb.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5e0fe7e299036af8bef43026c231199231bb3716 GIT binary patch literal 8927 zcmaJ{1yqz<*B-i4x;v!1yE_D=yK88W?(P(%OBzX~JC!b_k?xYNAN0G|E8qRUv)0Tz zYi7s$KKtx__S(-V%7B5x0-jcg{CB~p>t74z@q;nYNYMdk=g6S=D2Dd<1@up`VPS0$ zCJ+FC3lsoA{->CMogKZKjdey`hcp-ya`2)5A+kfIMMP+#b$Ir7FbIHWUvd0!s>Oo)eR0L7~%4{tAe_>3%G&wYI89@7Axj z-m;MGOY3+*K`eouG|Vm~L~MbHR{PS5anfF=m;Lm(kBAJAo4;AdRs>Y-ge-6tN3OV_v6jO92YOXa zl%HmJ4i$r->pJGFxJq?_23)YGu{ojg9krP&PEG`!TWQ`@w6dq!XBmMR5bBbcnazuj zeIxHNspB)3uI#+4D=ROy`Z1$-$*mNSW0P1AST0PF8W zT3hWKf6!>%-Zor={s}Mg?sc%#BfN%>@S^+^UL&A`$rHX_@j41!L}a<@nb7j&Zy zTv9VVF?)mL6vO7tq;}INaOA!&Hy7hB@3dHTJKv0SIm%OQXz5VuEjL?!fgg*^29Gq) zXP$y@DZ|)CBj>jxeY1e|HV5C0m4Sf))*#g!kGG-M9}d)!)j`#K6!sEaJeLq+rGTgHgiN=Vy_&MLgV08ledW_N(cSco4h zu=`Hjj|8_m#81B5vrf0D^cYMwq#~Hms*LWax2bWNv=a3RUrLS{xhpDWUZ?=iu8#GG zf#PMYux==Z^>i4ctK8tHUCo?`oyQRwdvS1Ab3bhNY1AXaCyYyuTI%#2dTKSz;MN(;F@VbB@KjI9 z8|+WqUG}VuDIal1e8m05AGkX^Ist8-kS~ZEk?CSY>pS#+5E#0M6L%#ZV4Rc?*zU~JeZ{=x4P1HCS z=5rRt#*QvAl7UOuN4Iw2>EPX4)O`9nuhvAkx>{&K)!|%i%o%Q;NFKp0cN|~ET>vBR zQzNwb%8R$!6Y2@qf3GTFkGQ&7|EwqfE`az;z!m6VJSS{||CVUv`Z`>1f^f`POP*J~HM*M`Eh1r|8U^vXvAJX8)X zm$w#~a94$f0Gk})5>HgCj3GP;2qrR>ZzKU|5+uYgN{&@+@sp&o4dN2*%$6Hp%L{8r zO9!Rih6aa{V6;nvH-Rhbgi9`~7~Q=zO)Z&3TnYIhEaj+er8=S!R_c&HeJY-Djfx?e zBbvW2NG7kL>6-M)Y*yV2)hW>Zi*%9aoCzjX`pS3qNR~TY+K(@xe@Ib|IP#1n;^+6h z9ELyXMci7Kw}>k%Dl}$da9Nh(j(F2QDpqrr9N16EvAE|f%BYL%gSED^_ifzi6ci5> zfw&&FN*2yK(2Zr8FIYQI2Ou5?nYM2LlYX-{?KIYAi0Ii3lkOgTx@lSOJjSXp4ojTN zQ<38TV3HH<#Z0ccr?KYRUSHL#EPlQmuWtCBOJ)V+yxo41QiSCd5$E9d$|S~#m2T;+ z9NM--Jl)v@rb3##;i?W4XxN%)7I%p_W-mM0zK3Sni{5%O(+9=t4{3LnoY+&SpNhEW z++HPXa~iu?Go_Gx{P3=dHA%^Fy7^oCTl}|MQ81VR=0TlX-YdfyEn{4$dX0fIWXU>) zqhxA2hF{5So4Sjn%9^@O5-w-SE7H1kQm{C}Zs?gTP?s9JYo$C7QFT90h7jbh?-(JC zSD#5Bjh~#EA&oPi7eiTa-IPLEXxz*P)HZu<3u$h&o)b~J;#;pbW*s9>-R({7TjvhB z5Tus@*H$fd1~|sl?k)6iuG~O9PULEnd}eEz+nQSjYf{JPc$FJWimN$A-5_;5WN9^Y z<$7u`G*Ei93`toRyQZ`vvqaiS_h!|d$O0>Lk1(kEro~3JVb3mHjtT$&EP6VdAG65G z+{DJ@+1bpU42Lug@t7Ofzlzx3Vn2m{rpCU83=o$CxfOHEhvi!ou-HVig>3Kl7)0?wytx|l2$|6#SqliUDx49FtJvF+a3ldY zP+8s%NQb3?`QUzD6c_d!l8J*Ct}e#VUFwS~Tm#Dsi4kZtZfM8yWJeH}a^Hq+%cp0h zn1(mgJtzir%-GvUV`wMnXLiV%D0FLZVA0sdU zymO*(#6@3NPe-sN^IBIA1Sp^&L~ETNa0c-vs{Tqh;Nara!Uf1w-?M zHT+yt!6`ayNlpnpUr(Z$rB->tB?P7jz?`Tn+*Fdzfw_lR#U6=;8wD+6oKwjir&-~{ zSt}OodT(qd%7EgiwsQc31N@EQ`q>p8zGKqp==rXC`Z8@j-QwNtzJP#t(Ea`Xd)LZV z8Va308Qh2SnaZX6+4BC=yYS^;GtJP7?n>`5Ug}9HlcpWsWJ@4ZMftd%p$!3Mkp@^c`({a4WDdHYF&AD1SC==o^bucPeno z%i(~;KudpvSb*XS%qmkRP5QNVwEf_oZY zln-EMMd1cpE1zDOiu?46wP~w&Ta?NDOA?ZI?*e{q7BLd% zT-t$IBIkCiHgu-H-E5*7MDEg;Aj*`!K%O%m%@5QR;wFMK_zm(FF2ydGEc1ny9-K?j zx;OYdC~bwxgs?jc43t*a%?KBSD(n22W-&0+JQOwp+xo4yTf>)czA`5$J+t z<$-*XM;AN0>pVG#jR!vJv@v}cA5z%4gCf+xd=arZ0jjCV$IjeU1N+xadWDt&5Q?SM zpdlpS62-Qo*1j-U9bzynsN1~g#k!_5WT)&bEp%_?AtslN#5F)lWnEck%0Ew((n#;a zrn*R~uW!UN#xe29QgD)(IPZ*=j()PO;3-Yy{^3M5sIJaB>$=qUy|4kY$=OCfwH%FB z1al#~ZYD4u#(oi@&`vKzU;@ulVyBDNl*#i4Y!Vgwtz05Grt(>pY`8D(81*DkK{#}` z`7FYZlTy|XU(7>S)RrKGF7*eT1=aXj9b%n028_AMbE+q7qqZb5W3rEe)ZCVEPTvL8 zk!OiCN=P~RQCQPw>QhyjHdTOODZvmr?})LI!Y&ch5Nk~>X&SvWnYl+cw=BZyqgAl` zrew{;uq-}E!@W@)?sukAfemUIly4oFpw6MrQzXw(-YDK-U^UY+FDWsMI;1+{q$1`j z*A~vjLOa*4Nei4_qf`5gEYeiV<4L@*8$YLExiHI>vxAC!^wK-C!XqeHUr9@DLvbRK z!$jT6g=^R{x`J9V4qwCXHPFkO1x81NG4W z9C8f5XG;bPIh-G3c7PAapS|q+_eF$fkH^HaEC7J;>$GrmdSh+k_|zLsY1;tjrqS>D z^&kB7KX^f#MvxR^7ADuIv-^SWD-vNdX5)ftS+nK!O;h+3#;+^f!SP%KHD3&-pw7KTLkEi!J)S>Jcg%D=AU-T$uOL9=T~B6# zUuXvwPdUq};s{W9r8(;+1#;*nb#Z~ zw`1)DqB-LT;@*?WLu;|Zt#7KJpqy2S^XdW!1RIKPZ!hwQ+*fYQkowd$ z(T(*yo2%o}L%m`<@n83O^Gb<^iJm~z83VlXth%$bK^DXmXC@v0we5T(`%>%VA;gPH z-3(wp6I?J3c1-5i0mLuZZNhm?4P!{27{)pQRC%QDa90QuweXQHUyI2fLh3TAkYuBX zViO+ofQ6*nUvKSCP>vjF++-L)?~(ckheaD4jIlsf5WZZZCIrjt7Qtklt^R<& zaM3EU(Xv5!oAt4paIJNdWAFn)lYNeOlp-&AbG9xxp=G^SoUV5E2N>9Qn1gW(XmA!= zk+Qw2Ss_=GDfLm!sZu)Ph0uj;WBtO)dLJxo!%2(ZAmHAuo9fa5Pr=O$XV$l6g>YZT z7*%LnS#S0yox&=aFr7p!z6oN#ca3vOebu`M=emh!!nm&z5vJ2o6EjsYLqEtkPaim% z`YAJoH9y$T9i6kf!G1K1#B6KsNGRtJh=(uu{<}y(r1~r3O*&2w;8(7aolh>tFQCCj z_KDFvY+406y+-KyHm>_=<$7_W4-g zb9%iAdJLXQ9wS4Kx9v5Rnos(8BZ3c?W7JNgnurhAZtiwhQjFnU+7?58 z%KBDK;*SBIv_!7`>*$P|b)j^W^WkLGQL;WZRvB2m@lifA5kCgzm1-9btaJSai5wa_ z3~i-&k$1S66EQ^8!3T@{?os|=i6la35MXW-jyxWIOUKJLHrYqRx-Q z5gWwBM0yX}RY!|eB*bANp}GdB0PRNe*yN#cBWA0~(f5kSUo1%}mf`Q;}3T<;bdOVUDU+^wk@%K`mVcDF^S& zeV@cUlhhzv>oj~9G_l!{y^ay?I&<8-TlD3=FiXYmMbc3h|3`5It4s5$7v-sWAMNtu zTglhcJOLiy#MO zc9i@OHlm^P^qMdS{(&ONK%^TMMXsAsVYWIX`b4)I=yAO$$fn`ZUJqofLPMt9B(Lx) z*imfBuhPEwR8Xk_tFquG#4OS%MlTL))D5^homnDS1HI()BML}o#YDEDzr7-fq*!#W zwj`F|jjCzVzF!+8)9&pi3W8SS@GlFbv^mr8Ni}*Q2A?kOuJ@(j<&^Q+(NEx?0nEJ7fq~Dt=dZ4(i1Y zp2S8vSy4dYl(Hy9v^K%Zikry}AZ_j_Hyr}{=1VkLNZ69kc#04ckr8GVhd`AHZvCy8 z4Y%siZ=~hNeyb*a{mu#8PJHC#WHT|?oxIwGwJQ#|pEQ&e9Ex?+BGUCSrC z;z{P!mJ=gYH%DR0;I2%Ir4AywvZ>PTmko(EHNw6DQ-Diui%+SKTgz*KZ9u>c{!D1o zQac1ecrfn&2pTU`&6?fo%L3=>(c$u{T>;B59j?9iWp#PJP)pKHS;eUe>*?Tk2sha%049hH_UE zpYbj%qh1AO%0AeeoqSw9&bu+o^5*oqv4T*Sk`<;y#_c8=3F+0srJCHHaP4y?>_#OT zlxo)o%wd|Ip_WyFzwD8PTFhdlVQh8XYyuueExDiW1zd2xK*3BU^OiPO8`m}`8RTXU z^~>^ki*Itflz>H-=J#!Tv|oB}b*0y#s72pl?b|4}#5AU%SY0xL;b6v1R+HHwf5t6W z81&*`dwxC>@7>L-ql2~53&T%Go&uGyKzY8yq{{b{Bf|$->E1`ZKho9WxRpQ3-=Fn- zJLU zyfh)98V|Xr?UdCIs}~i`S5)1Z+wK}^XG@qvGMfxzEs=U78WjMoyec}|u0s@NRIK=2 ze7=W?LwJ)KMLJ46R}1qE_>4-tL6NPRv*>}K6+MddR0cTulDY{+dnV2RW05<)K$uR@ zp*u5*Aj1o;tF<3%-XtW-P#9=rBncz73jFSjtrs)L3p@!iZBoW!=K%dMYs(}^1I+?4 z@u~b&QtDIMuO#Km*qShi%BsV2MAdM-RB;)%r)~~6K1{lv0^z6CtYE!Jt#ZSdQs4{e zqCMaCXWBe&sZda;^JSk7?cf83GDbYPxG+9#%LAFF}^QbHLqSBCsBtPDr@{#^QVZuF&)#9kqA^vJEn8v7744d%>Mi6+COKxSGPr^5XRr z1X73T#KP?E^!zfRdYBDKN6INY_Q?L}G}iv&jYmWE({{1ndZ261m7vb;R^{5HfJnDH zTzA9$5w>J{^(yE0Ce0Fr-{nW#ds@&%-9nQG7uy0ePl+b#9kE)_I*qW8N+N@8W$spo z)w*UEtIp~Q>!-9?5Z>3DPSw}XSeklRdCb+b>R3I%>|kGSSJH&2p3aZ>Aj}^yLI-%) zE(Y~U_?kjiSC$7@D_I`l< z0qM{F@PZ=cmgI5P+4(q1dm8LNjtLyi4IE62UpYBg*qZ%p6AR*7B z-z#daeF8&O03hj;7ltK%C3ZoMWNcRsL!_dOgm0fz!}ks6mrJMz3dJgtyIV_soOczt zmgk;sku-FoXL(_3VgJ!P1-Su7-^i zGF=E2h$WC1#)yz1t@>KtIT>2(y++Ji)&vs9oJ97puw72N_)tlMwOwruq$asY2lR~f z6FUS>78J8&tq_#Y*jK~e&=B1a`7r(TL>|7ifNxOw2$E39*CDL6g^KTlfv`Q)tnU>w zgk53RsXtVPujGExkfmJLS3^8Z`B*vSrg<*FUOB&2N^me;etL0l>8Z-cU&#-(KIe@8 zS>w13U4dcU{D&1pu}|#to|{}em-1A$c3X=CQ+S zqgb4#BJ8^bsR}wc+nvx`qF1e>e4i^n3T4T2>2fMiM3L zbKYxT;a&_T?4eWIrgd>DI8p=b`z|}VJWEfzv$1SBQnGA}u(dw5E9j{bB^=jPF}+ICkB!|Ib$#1x3UkT6ffd6_FG$olxQa#p<+_6Hr_3H8aLrC z5a}`%MmPIAEBOlo`(0XsMvLaH|?Al-UJ40@FvdElf~(HDvvUU z@K7gMjBTqZ3TE-JiM{6%Fd_|LZ?RRh9Xt{5%_2~g<%yU zrRIr@u+Xfj#AP^J$D&6Dc;!7?2^jOTACF=Z&(Q77o+ z)aIx@0t6va@&nD`VLjnjjbxe0S}xg zd&1@j_uZMV!%Fe_qTuWerDBME?Ak+%k!l^{Qtr(G(@_$%T$J3F0M~#USugukKP1Mw zY^ac4$Qy0+;68a>$HKQi$}fk~j%j&1xxC`txg)gTd(z1g(t=LnCZ)+eq=O9W`^WMb>2r}DgJSDkK9Y+7K|V@KDPj2ckw{w4U+Wm43shSAvc)T4dw6ZTVU;pq}CG!_jBIrgOHe+zq)j#Y z>yL@zWI-G_85EV#`ZB>JKQdwp1cA&4V;RB~hfDgr`fJ1Qpa~ySSdeg%H8x}~2kopy z!Ot>DG9>q8`;djGtO4)nMR*Y{XK~Yz_X~m;d_wY0#lD-sHb;QQ2KdqEzN_~a zr^6q*YN^i#VfTlZH|d0Dy-Kzh&syW^+i06lJ5G(*Zy^F1Go3=RMU zK=kHm7@CqnSodU|Lz@c+<*PmlZWA^8)fMcjWBsOLBOyplcn`Gpb$-apj-tFAq_^SoL5 zZD$Abr=9<5ot|5GK92isVeoM}_tbp-J)HYrVEy^*>5mlX-}KINkI#9a-yXaEsrH){ zdT!u(H}l&7|0A{Z==Yzn{jZyTVswA4rwF_Litr!&?w@=6Im7#;`zvaB|E2qz?^Tq6 T_?fIIkAInfdX(!Vc+&enU~V@P literal 0 HcmV?d00001 diff --git a/jar-enginex-manager/src/main/resources/interfacemanage/InterfaceMapper.xml b/jar-enginex-manager/src/main/resources/interfacemanage/InterfaceMapper.xml new file mode 100644 index 0000000..6de1e8b --- /dev/null +++ b/jar-enginex-manager/src/main/resources/interfacemanage/InterfaceMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + update riskmanage.t_field_interface set status = #{status} + where id in + + #{interfaceId} + + + + + + + + + + diff --git a/jar-enginex-manager/src/main/resources/knowledge/EngineRuleRelMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/EngineRuleRelMapper.xml new file mode 100644 index 0000000..7131811 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/EngineRuleRelMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + id + engine_id as engineId, + rule_id as ruleId + + + + + + insert into t_engine_rule_rel (engine_id,rule_id) + values + + (#{engineId},#{item}) + + + + + delete from t_engine_rule_rel where engine_id =#{engineId} + + and rule_id in + + #{item} + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeMapper.xml new file mode 100644 index 0000000..7405c8e --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeMapper.xml @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + id, + name, + parent_id, + user_id, + organ_id, + engine_id, + status, + type, + tree_type, + created, + updated + + + + k.id, + k.name, + k.parent_id, + k.user_id, + k.organ_id, + k.engine_id, + k.status, + k.type, + k.tree_type, + k.created, + k.updated + + + + + + + + + + + + + + insert into t_knowledge_tree (name,parent_id,user_id, + + organ_id, + + + engine_id, + + status,type,tree_type,created,updated) + values(#{name},#{parentId},#{userId}, + + #{organId}, + + + #{engineId}, + + #{status},#{type},#{treeType},now(), now()) + + + + + insert into t_knowledge_tree (name,parent_id,user_id, + + organ_id, + + + engine_id, + + status,type,tree_type,created,updated) + values(#{item.name},#{item.parentId},#{item.userId}, + + #{item.organId}, + + + #{item.engineId}, + + #{item.status},#{item.type},#{item.treeType},now(), now()) + + + + + + update t_knowledge_tree set + + name = #{name}, + + + status = #{status}, + + + type = #{type}, + + + parent_id = #{parentId}, + + updated = now() where id = #{id} + + + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeRelMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeRelMapper.xml new file mode 100644 index 0000000..17e5a1f --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/KnowledgeTreeRelMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + id + engine_id as engineId, + knowledge_tree_id as treeId + + + + insert into t_engine_knowledge_tree_rel (engine_id,knowledge_tree_id) + values + + (#{engineId},#{item}) + + + + + delete from t_engine_knowledge_tree_rel where engine_id =#{engineId} + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/knowledge/RuleContentMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/RuleContentMapper.xml new file mode 100644 index 0000000..f6e588e --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/RuleContentMapper.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + r.id, + t.field_cn as field, + r.field_id as fieldId, + r.field_value as fieldValue, + r.rule_id as ruleId, + t.field_en as fieldEn, + t.value_type as valueType, + t.value_scope as valueScope, + r.variable_type as variableType + + + + + + insert into t_rule_content (field_id,field_value,rule_id,variable_type) + values + + (#{item.fieldId},#{item.fieldValue},#{item.ruleId},#{item.variableType}) + + + + + + + + update t_rule_content set + + field_id = #{item.fieldId} + + + ,field_value = #{item.fieldValue} + + + ,variable_type = #{item.variableType} + + where id = #{item.id} + + + + + + delete from t_rule_content where id = #{item.id} + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/knowledge/RuleFieldMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/RuleFieldMapper.xml new file mode 100644 index 0000000..f0515dc --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/RuleFieldMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + r.id , + r.logical, + r.operator, + t.field_cn as field, + r.field_value as fieldValue, + r.rule_id as ruleId, + r.field_id as fieldId, + t.field_en as fieldEn, + t.value_type as valueType, + t.value_scope as valueScope + + + + + + insert into t_rule_field + (logical,operator,field_value,rule_id,field_id) + values + + ( + #{item.logical}, + #{item.operator}, + #{item.fieldValue}, + #{item.ruleId}, + TRIM(#{item.fieldId}) + ) + + + + + + + + update t_rule_field set + + logical = #{item.logical} + + + ,operator = #{item.operator} + + + ,field_value = #{item.fieldValue} + + + ,field_id = TRIM(#{item.fieldId}) + + where id = #{item.id} + + + + + + delete from t_rule_field where id = #{item.id} + + + + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/knowledge/RuleMapper.xml b/jar-enginex-manager/src/main/resources/knowledge/RuleMapper.xml new file mode 100644 index 0000000..4dd79d4 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/knowledge/RuleMapper.xml @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + r.id, + r.name, + r.code, + r.description, + r.priority, + r.parent_id, + r.user_id, + r.author, + u.nick_name as nick_name, + r.organ_id, + r.engine_id, + r.status, + r.rule_audit, + r.type, + r.score, + r.last_logical, + r.is_non, + r.created, + r.updated, + r.rule_type, + r.difficulty + + + + r.id, + r.name, + r.code, + r.description, + r.priority, + r.parent_id, + r.user_id, + r.author, + u.nick_name, + r.organ_id, + r.engine_id, + (CASE r.STATUS + WHEN r.id IN ( + SELECT + rule_id + FROM + t_engine_rule_rel td + WHERE + engine_id =#{engineId} + ) THEN + 1 + ELSE + 0 + END) AS status, + r.rule_audit, + r.type, + r.score, + r.last_logical, + r.is_non, + r.created, + r.updated, + r.rule_type + + + + r.id, + r.name, + r.code, + r.description, + r.engine_id, + r.priority, + r.parent_id, + r.user_id, + r.author, + r.organ_id, + r.engine_id, + r.status, + r.type, + r.is_non, + r.rule_audit, + r.score, + r.last_logical, + r.created, + r.updated, + r.rule_type + + + + + + + + + insert into t_rule ( + name, + code, + description, + priority, + parent_id, + user_id, + author, + + content, + + + organ_id, + + + engine_id, + + + rule_audit, + + + score, + + + last_logical, + + status,type,is_non,created,updated,rule_type,difficulty) + values( + #{name}, + #{code}, + #{description}, + #{priority}, + #{parentId}, + #{userId}, + #{author}, + + #{content}, + + + #{organId}, + + + #{engineId}, + + + #{ruleAudit}, + + + #{score}, + + + #{lastLogical}, + + #{status},#{type},#{isNon},now(), now(),#{ruleType},#{difficulty} + ) + + + + update t_rule set + + name = #{name}, + + + code = #{code}, + + + content = #{content}, + + + description = #{description}, + + + priority = #{priority}, + + + status = #{status}, + + + type = #{type}, + + + is_non = #{isNon}, + + + rule_type = #{ruleType}, + + + rule_audit = #{ruleAudit}, + + + last_logical = #{lastLogical}, + + + difficulty = #{difficulty}, + + score = #{score}, + updated = now() where id = #{id} + + + + update t_rule set status = #{status} where id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/logger/loggerMapper.xml b/jar-enginex-manager/src/main/resources/logger/loggerMapper.xml new file mode 100644 index 0000000..0d054bc --- /dev/null +++ b/jar-enginex-manager/src/main/resources/logger/loggerMapper.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + l.id, + l.op_type, + l.op_name, + l.op_user_id, + u.nick_name, + o.name as organ_name, + l.organ_id, + l.method, + l.request_path, + l.request_param, + l.response_param, + l.ip, + l.start_time, + l.end_time + + + + insert into t_logger (op_type,op_name,op_user_id,organ_id,method,request_path,request_param,response_param,ip,start_time,end_time) + values(#{opType},#{opName},#{opUserId},#{organId},#{method},#{requestPath},#{requestParam},#{responseParam},#{ip},#{startTime},#{endTime}) + + + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/logging-config.xml b/jar-enginex-manager/src/main/resources/logging-config.xml new file mode 100644 index 0000000..a6ff773 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/logging-config.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/rule/RuleMapper.xml b/jar-enginex-manager/src/main/resources/rule/RuleMapper.xml new file mode 100644 index 0000000..a33c018 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/rule/RuleMapper.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, name, code, description, priority, parent_id, author, user_id, organ_id, engine_id, status, type, is_non, content, created, updated, rule_type, rule_audit, score, last_logical,difficulty,script_type,result_field_en,score_field_en + + + + + + + + update t_rule set status = #{status} + where id in + + #{ruleId} + + + + update t_rule set parent_id = #{parentId} + where id in + + #{ruleId} + + + + + diff --git a/jar-enginex-manager/src/main/resources/system/DepartmentMapper.xml b/jar-enginex-manager/src/main/resources/system/DepartmentMapper.xml new file mode 100644 index 0000000..6ad8111 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/DepartmentMapper.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + INSERT INTO + manager_organization + + + org_name, + + + org_code, + + status, + updateTime + + values + + + #{deptName}, + + + #{deptCode}, + + 1, + now() + + + + + + + UPDATE manager_organization SET + + org_name = #{deptName} + + + ,org_code = #{deptCode} + + ,updateTime = now() + WHERE + status=1 + + and id = #{id} + + + + + UPDATE manager_organization SET + status=-1 + WHERE + id + IN + + #{deletIds} + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/MenuMapper.xml b/jar-enginex-manager/src/main/resources/system/MenuMapper.xml new file mode 100644 index 0000000..0e94fc4 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/MenuMapper.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO + manager_menu + + + pid, + + + name, + + + menu_code, + + + type, + + + url, + + + icon, + + status, + updateTime + + values + + + #{pid}, + + + #{name}, + + + #{menuCode}, + + + #{type}, + + + #{url}, + + + #{icon}, + + 1, + now() + + + + + + + UPDATE manager_menu SET + + pid = #{pid}, + + + name = #{name}, + + + type = #{type}, + + + url = #{url}, + + + icon = #{icon}, + + + name = #{name} + + + ,menu_code = #{menuCode} + + ,updateTime = now() + WHERE + status=1 + + and id = #{id} + + + + + UPDATE manager_menu SET + status=-1 + WHERE + id + IN + + #{deletIds} + + + + + DELETE FROM + manager_menu_role + WHERE + 1=1 + + and role_code = #{roleCode} + + + + + INSERT INTO + manager_menu_role + + + menu_id, + + + role_code + + + values + + + #{id}, + + + #{roleCode} + + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/RoleMapper.xml b/jar-enginex-manager/src/main/resources/system/RoleMapper.xml new file mode 100644 index 0000000..d9945f8 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/RoleMapper.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + INSERT INTO + manager_role + + + name, + + + role_code, + + status, + updateTime + + values + + + #{name}, + + + #{roleCode}, + + 1, + now() + + + + + + + UPDATE manager_role SET + + name = #{name} + + + ,role_code = #{roleCode} + + ,updateTime = now() + WHERE + status=1 + + and id = #{id} + + + + + UPDATE manager_role SET + status=-1 + WHERE + id + IN + + #{deletIds} + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/SysMenuMapper.xml b/jar-enginex-manager/src/main/resources/system/SysMenuMapper.xml new file mode 100644 index 0000000..942b1b9 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/SysMenuMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + resource_id, user_id, name, code, url, parent_id, des, birth, icon, sort, status + + + + + + + + + + + + + + + + + + + + + + + + + + insert into t_resource (user_id, name, code, url, parent_id, des, birth, icon, sort) + values (#{userId}, #{name}, #{code}, #{url}, #{parentId}, #{des}, now(), #{icon}, #{sort}) + + + + + insert into t_role_resource_rel (role_id, resource_id) + values + + (#{roleId}, #{ids}) + + + + + + insert into t_role_engine (role_id, id_str) + values + + (#{roleId}, #{ids}) + + + + + update t_resource set name=#{name}, + url=#{url}, + + des=#{des}, + + + icon=#{icon}, + + + user_id=#{userId}, + + + parent_id=#{parentId}, + + + sort=#{sort}, + + code=#{code} + where resource_id = #{id} + + + + update t_resource set status = -1 where resource_id = #{id} + + + + + delete from t_role_resource_rel where role_id = #{roleId} + + + + + delete from t_role_engine where role_id = #{roleId} + + + + update t_resource set status=#{status} + + + resource_id in + #{ids} + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/SysOrganizationMapper.xml b/jar-enginex-manager/src/main/resources/system/SysOrganizationMapper.xml new file mode 100644 index 0000000..cfee23c --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/SysOrganizationMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + organ_id, name, code, email, telephone, status, birth, author,token + + + + + + + + + + + + + insert into t_organization (name, code, email, telephone, status, author, birth, token) + values (#{name}, #{code}, #{email}, #{telephone}, 1, #{author}, now(), #{token}) + + + + update t_organization set name=#{name}, + + email=#{email}, + + + telephone=#{telephone}, + + + author=#{author}, + + code=#{code} + where organ_id=#{id} + + + + update t_organization set status = -1 where organ_id=#{id} + + + + update t_organization set status=#{status} + + + organ_id in + #{ids} + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/SysRoleMapper.xml b/jar-enginex-manager/src/main/resources/system/SysRoleMapper.xml new file mode 100644 index 0000000..c76cd23 --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/SysRoleMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + role_id, organ_id, role_name, role_code, role_desc, author, birth, status + + + + + + + + + + + + + + + + + + + + + + insert into t_role (role_id, organ_id, role_name, role_code, role_desc, author, birth, status) + values (#{id}, #{organId}, #{roleName}, #{roleCode}, #{roleDesc}, #{author}, now(), 1) + + + + insert into t_role (role_id, organ_id, role_name, role_code, role_desc, author, birth, status) + values (#{id}, #{organId}, #{roleName}, #{roleCode}, #{roleDesc}, #{author}, now(), 1) + + + + update t_role set + + organ_id=#{organId}, + + + role_desc=#{roleDesc}, + + + role_code=#{roleCode}, + + role_name=#{roleName} + where role_id = #{id} + + + + update t_role set status = -1 where role_id = #{id} + + + + update t_role set status=#{status} + + + role_id in + #{ids} + + + + + + + update t_role set status = -1 where organ_id = #{organId} + + + + update t_role set status = #{status} + + + organ_id in + #{ids} + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/SysUserMapper.xml b/jar-enginex-manager/src/main/resources/system/SysUserMapper.xml new file mode 100644 index 0000000..f9b385a --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/SysUserMapper.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + user_id, organ_id, employee_id, account, password, nick_name, email, cellphone, qq, latest_time, latest_ip, status, birth, author + + + + + + + + + + + + + + + + + + + + + + + insert into t_user (organ_id, employee_id, account, password, nick_name, email, cellphone, qq, latest_time, latest_ip, status, birth, author) + values (#{organId}, #{employeeId}, #{account}, #{password}, #{nickName}, #{email}, #{cellphone}, #{qq}, #{latestTime}, #{latestIp}, 1, now(), #{author}) + + + + + insert into t_user_role_rel (user_id, role_id,organ_id) + values (#{userId}, #{roleId},#{organId}) + + + + + update t_user set account=#{account}, + + organ_id=#{organId}, + + + password = #{password}, + + + employee_id=#{employeeId}, + + + email=#{email}, + + + cellphone=#{cellphone}, + + + qq=#{qq}, + + + latest_time=#{latestTime}, + + + latest_ip=#{latestIp}, + + + birth=#{birth}, + + + author=#{author}, + + nick_name=#{nickName} + where user_id=#{id} + + + + + update t_user_role_rel set + + organ_id=#{organId}, + + user_id=#{id}, role_id=#{sysRole.id} + where user_id=#{id} + + + + + update t_user set status=-1 + where user_id=#{id} + + + + + update t_user set status=#{status} + + + user_id in + #{ids} + + + + + + + + update t_user set password = #{password} where user_id=#{id} + + + + + update t_user set password = #{password} where user_id=#{id} + + + + + update t_user set status = -1 where organ_id=#{organId} + + + + + update t_user_role_rel set status = -1 where organ_id = #{organId} + + + + update t_user set status = #{status} + + + organ_id in + #{ids} + + + + + + + update t_user_role_rel set status = #{status} + + + organ_id in + #{ids} + + + + + + + + update t_user_role_rel set status = -1 where role_id = #{roleId} + + + + + update t_user set status = #{status} + + + user_id in + #{ids} + + + + + + + + update t_user_role_rel set status = #{status} + + + role_id in + #{ids} + + + + + + \ No newline at end of file diff --git a/jar-enginex-manager/src/main/resources/system/UserMapper.xml b/jar-enginex-manager/src/main/resources/system/UserMapper.xml new file mode 100644 index 0000000..6b8637e --- /dev/null +++ b/jar-enginex-manager/src/main/resources/system/UserMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO + manager_user + + + login_name, + + + name, + + + password, + + + email, + + + phone, + + + dept_code, + + status, + updateTime + + values + + + #{loginName}, + + + #{name}, + + + #{password}, + + + #{email}, + + + #{phone}, + + + #{deptCode}, + + 0, + now() + + + + + UPDATE manager_user SET + + login_name = #{loginName}, + + + name = #{name}, + + + password = #{password}, + + + email = #{email}, + + + phone = #{phone}, + + + dept_code = #{deptCode}, + + updateTime = now() + WHERE + status !=-1 + + and id = #{id} + + + + + INSERT INTO manager_user_role + (user_id,role_code) + values + + (#{item.userId},#{item.roleCode}) + + + + + + + + + DELETE FROM + manager_user_role + WHERE + user_id + IN + + #{deletIds} + + + + + UPDATE manager_user SET + status=#{status} + WHERE + id + IN + + #{item} + + + + + + + + + + \ No newline at end of file