# knife-utils **Repository Path**: luotianhao25182/knife-utils ## Basic Information - **Project Name**: knife-utils - **Description**: hzero项目工具包 - **Primary Language**: Unknown - **License**: MulanPSL-1.0 - **Default Branch**: 1.0.0.RELEASE - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2020-11-28 - **Last Updated**: 2022-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目工具类,功能维度 ## 业务层 1. 工作流的启动简单化,使用构造者模式。启动时的流程变量校验的抽象化。 2. 单据更新/校验状态,单据撤回抽象化 3. 手动分页 ## 系统层 1. 批量查询主键条件生成工具 2. 属性拷贝工具 3. 对象转xml的工具、xml转json的工具 # 包结构 ## business 业务层 ### halm 资产云系统中的 #### dto - Attribute 存放类似`{"curr":"1&@&信息类资产","target":"1&@&信息类资产"}`结构的数据 #### util - AtnAttributeUtl 将attribute字段转化为以attribute字段名为key,Attribute为value的map ### report 简易报表生成工具 #### annotations - KnifeReportHeaderColumnAnnotation 标记报表生成的头字段 - KnifeReportLineColumnAnnotation 标记报表生成的行字段 #### builder - KnifeReportColumnsBuilder builder ##### director - KnifeReportTemplateDirector 中介者 ##### impl - DefaultKnifeReportColumnsBuilder 默认构造者 #### dto - KnifeReportColumnOrder 标记报表字段顺序 - KnifeReportHeaderColumn 报表头字段 - KnifeReportLineColumn 报表行字段 - KnifeReportTable 报表结果 #### enums - ColumnOrderEnum 报表字段顺序维护 ### service - KnifeOrderHelper - 更新单据状态 - 撤回单据 - 提交单据(整合了下面的workflow相关方法),并更新单据状态为审批中 - 获取当前登录用户是否是单据创建人的标识 - 删除头行数据 - KnifeOrderHelperImpl 提供了上面接口的通用实现 ### workflow #### builder - KnifeWorkflowRequestBuilder 工作流启动参数构造者 ##### director - KnifeWorkflowRequestDirector 中介者负责与构造者沟通创建工作流启动请求参数 #### dto - KnifeWorkflowVar 流程变量dto #### mapper - KnifeWorkflowMapper 在工作流数据库中的查询 ### KnifeCheckStatusUtil - 校验单据状态 - 获取指定属性名的属性 ### KnifeDateUtil - 获取当前时间之前/后多少天的时间 - 判断时间是否相等,支持为空的时间 ### KnifePageUtil - 手动进行分页操作 ### KnifeWorkflowKeyUtil - 构造流程启动或撤销时的业务主键 ### KnifeWorkflowUtil - 校验流程是否启动成功 - 校验工作流启动时必输流程变量是否都有 ### KnifeListSplitUtil - 支持按count数进行拆分list集合 - 支持临界count位置处元素符合延续获取条件时,能继续获取符合延续条件的元素;例如临界count位置处元素有个编号为001的属性,要求属性为001的元素必须在一个list内时 ## system ### annotation - KnifeField 字段拷贝必需的注解,作用于目标对象的属性上 - KnifeValidateStrLength 字符串类型字段校验注解,作用于目标对象的属性上 ### copy - KnifeBeanUtil 依靠上面的KnifeField注解进行拷贝 ### mapper - KnifePrimaryKeyUtil 进行构造in查询条件 ### sql - KnifeSqlUtil 执行sql语句,并返回Java对象,支持mysql和Oracle ### str - KnifeStringUtil 截断字符串;校验字符串的长度,并返回友好的提示信息 ### xml - KnifeXmlUtil 将对象转化为xml或者将xml转化为JSONObject对象 ## interfaces.common 日志记录功能的实现 ### annoations - KnifeInterfaceLog 接口日志记录 - KnifeMethodLog 方法日志记录 - KnifeValidate 待校验字段 ### aspect - KnifeInterfaceLogAdvice 接口日志切面 - KnifeMethodLogAdvice 方法日志切面 ### concurrent - KnifeInterfaceRecordThread 日志记录的线程 - KnifeInterfaceRecordThreadPool 用于记录日志的线程池 ### constants - KnifeInterfaceCodeEnum 接口/方法编码及对应描述,用于日志记录 - KnifeInterfaceLogDirection 接口/方法的标记,用于区别该条日志的类型:例如入站或出站或内部方法调用或定时任务等 ### entity - KnifeFile 附件实体类,用于提供日志文件的id - KnifeInterfaceLogRecord 日志记录的实体类 ### handler - KnifeCglibHandler cglib代理的日志记录切面 - KnifeJdkHandler jdk代理的日志记录切面 ### helper - KnifeInterfaceLogHelper 日志记录过程中日志对象的构建和持久化,及一些通用的方法 - director - KnifeInterfaceLogDirector 创建日志,并进行持久化的中介者 - impl - KnifeAopInterfaceLogHelperImpl 接口日志具体构造的实现类 - KnifeAopMethodLogHelperImpl 方法日志具体构造的实现类 - KnifeRestTemplateInterfaceLogHelperImpl restTemplate调用第三方系统,做日志记录具体的实现类 ### json - KnifeDateTimeSerializer Date类型时间字段进行序列化 - KnifeDateTimeDeserializer 字符串格式时间字段进行反序列化 ### mapper - KnifeInterfaceLogRecordMapper 日志mapper ### utils - file - KnifeFileName 用来获取文件名的方法 - KnifeFileUpload 用来上传文件的方法 - KnifeInputStream 用来获取文件输入流的方法 - KnifeLogParamUtil 日志记录功能入参记录工具 - KnifeReflectUtil 反射工具类 - KnifeRestTemplateProxyUtil 创建代理对象 - KnifeSpringUtil 获取spring bean对象的工具 - KnifeValidateUtil 用于自定义注解的校验功能 ## data.permission 数据权限 ### annoations - PermissionControl 是否开启权限控制 ### builder - DataPermissionBuilder 构造数据权限leftjoin和where条件sql的接口 - impl - DefaultDataPermissionBuilder 默认提供的leftjoin和where条件sql构造工具 ### constants - DataPermissionSql 数据权限功能必须要的sql,不同的项目需要不同的配置 - SqlSymbol 常用的sql变量 ### dto - DataPermissionDTO 数据权限类,包含leftjoin和where字段 - HrOrgUnit 提供组织信息的类,不同项目可以用自己项目的 - OrderColumnDTO 数据权限维度 - UserInfoDTO 提供当前用户信息的类 ### plugins - function - OrgInfoFunction 组织levelPath获取和替换操作,如果项目上没有需要替换当前登陆用户组织levlpath,则无需关注 - UserInfoFunction 获取用户基础信息 - helper - DataPermissionHelper 实现数据权限的工具类 - UserDetailHelper 设置或获取当前登陆用户的信息工具类 - DefaultDataPermissionPlugin 数据权限拦截器 - SimpleSqlSource 用于生成权限sql的会话