From f95310163ace308f804d4e530d7f9c13d3e30cfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Mon, 5 Feb 2024 16:30:48 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96elog=E6=A1=86?=
=?UTF-8?q?=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../salary/elog/LoggerTableController.java | 15 +
.../engine/salary/elog/annotation/Elog.java | 23 +
.../elog/annotation/ElogDetailField.java | 14 +
.../elog/annotation/ElogDetailTable.java | 13 +
.../salary/elog/annotation/ElogField.java | 23 +
.../elog/annotation/ElogPrimaryKey.java | 9 +
.../salary/elog/annotation/ElogTable.java | 14 +
.../salary/elog/annotation/ElogTransform.java | 29 +
.../salary/elog/annotation/HandleElog.java | 17 +
.../salary/elog/annotation/LoggerTarget.java | 22 +
.../salary/elog/annotation/OperateType.java | 15 +
.../elog/async/LoggerMessageListener.java | 30 +
.../engine/salary/elog/config/ELogCache.java | 25 +
.../salary/elog/config/ELogTableChecker.java | 44 +
.../salary/elog/entity/dto/CancelContext.java | 25 +
.../salary/elog/entity/dto/DataTypeEnum.java | 16 +
.../salary/elog/entity/dto/ElogBean.java | 116 ++
.../elog/entity/dto/FilterConditionDto.java | 91 ++
.../engine/salary/elog/entity/dto/Like.java | 31 +
.../salary/elog/entity/dto/LoggerContext.java | 890 ++++++++++
.../elog/entity/dto/LoggerDetailContext.java | 316 ++++
.../elog/entity/dto/ReadInfoEntity.java | 40 +
.../salary/elog/entity/dto/RedoContext.java | 24 +
.../salary/elog/entity/dto/ShowColumsDto.java | 105 ++
.../elog/entity/dto/TableChangeBean.java | 153 ++
.../elog/entity/dto/TableColumnBean.java | 155 ++
.../elog/entity/param/ELogGetLogParam.java | 35 +
.../entity/param/GetDetailChangesParam.java | 29 +
.../engine/salary/elog/enums/ElogConsts.java | 22 +
.../salary/elog/enums/FromTerminalType.java | 48 +
.../engine/salary/elog/enums/LinkType.java | 173 ++
.../salary/elog/enums/OperateAuditType.java | 14 +
.../elog/service/ILocalElogService.java | 13 +
.../elog/service/ILoggerTableService.java | 41 +
.../elog/service/impl/LocalElogService.java | 435 +++++
.../elog/service/impl/LoggerTableService.java | 1453 +++++++++++++++++
.../elog/threadlocal/ElogThreadLocal.java | 75 +
.../salary/elog/util/ElogServiceUtils.java | 92 ++
.../elog/util/ElogSeviceSwitchUtils.java | 1402 ++++++++++++++++
.../salary/elog/util/ElogSeviceUtils.java | 513 ++++++
.../engine/salary/elog/util/ElogUtils.java | 713 ++++++++
.../engine/salary/elog/util/FieldNameMap.java | 94 ++
.../salary/elog/util/LoggerTemplate.java | 631 +++++++
.../elog/util/LoggerTemplateBuilder.java | 21 +
.../salary/elog/util/ResponseResult.java | 135 ++
.../salary/elog/util/SalaryI18nUtil.java | 50 +
.../salary/elog/util/db/IdGenerator.java | 46 +
.../elog/util/db/MapperProxyFactory.java | 79 +
.../engine/salary/elog/util/page/Column.java | 23 +
.../salary/elog/util/page/DataSource.java | 9 +
.../salary/elog/util/page/PageInfo.java | 62 +
.../salary/elog/util/page/SalaryPageUtil.java | 117 ++
.../salary/elog/util/page/TableTitle.java | 13 +
.../elog/web/LoggerTableController.java | 200 +++
.../mapper/elog/ElogTableCheckerMapper.java | 30 +
.../mapper/elog/ElogTableCheckerMapper.xml | 451 +++++
.../mapper/elog/LocalElogAopDaoMapper.java | 45 +
.../mapper/elog/LocalElogAopDaoMapper.xml | 170 ++
.../mapper/elog/LocalElogDaoMapper.java | 219 +++
.../salary/mapper/elog/LocalElogDaoMapper.xml | 412 +++++
.../mapper/elog/QueryCurretValusMapper.java | 8 +
.../mapper/elog/QueryCurretValusMapper.xml | 9 +
62 files changed, 10137 insertions(+)
create mode 100644 src/com/api/salary/elog/LoggerTableController.java
create mode 100644 src/com/engine/salary/elog/annotation/Elog.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogDetailField.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogDetailTable.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogField.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogPrimaryKey.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogTable.java
create mode 100644 src/com/engine/salary/elog/annotation/ElogTransform.java
create mode 100644 src/com/engine/salary/elog/annotation/HandleElog.java
create mode 100644 src/com/engine/salary/elog/annotation/LoggerTarget.java
create mode 100644 src/com/engine/salary/elog/annotation/OperateType.java
create mode 100644 src/com/engine/salary/elog/async/LoggerMessageListener.java
create mode 100644 src/com/engine/salary/elog/config/ELogCache.java
create mode 100644 src/com/engine/salary/elog/config/ELogTableChecker.java
create mode 100644 src/com/engine/salary/elog/entity/dto/CancelContext.java
create mode 100644 src/com/engine/salary/elog/entity/dto/DataTypeEnum.java
create mode 100644 src/com/engine/salary/elog/entity/dto/ElogBean.java
create mode 100644 src/com/engine/salary/elog/entity/dto/FilterConditionDto.java
create mode 100644 src/com/engine/salary/elog/entity/dto/Like.java
create mode 100644 src/com/engine/salary/elog/entity/dto/LoggerContext.java
create mode 100644 src/com/engine/salary/elog/entity/dto/LoggerDetailContext.java
create mode 100644 src/com/engine/salary/elog/entity/dto/ReadInfoEntity.java
create mode 100644 src/com/engine/salary/elog/entity/dto/RedoContext.java
create mode 100644 src/com/engine/salary/elog/entity/dto/ShowColumsDto.java
create mode 100644 src/com/engine/salary/elog/entity/dto/TableChangeBean.java
create mode 100644 src/com/engine/salary/elog/entity/dto/TableColumnBean.java
create mode 100644 src/com/engine/salary/elog/entity/param/ELogGetLogParam.java
create mode 100644 src/com/engine/salary/elog/entity/param/GetDetailChangesParam.java
create mode 100644 src/com/engine/salary/elog/enums/ElogConsts.java
create mode 100644 src/com/engine/salary/elog/enums/FromTerminalType.java
create mode 100644 src/com/engine/salary/elog/enums/LinkType.java
create mode 100644 src/com/engine/salary/elog/enums/OperateAuditType.java
create mode 100644 src/com/engine/salary/elog/service/ILocalElogService.java
create mode 100644 src/com/engine/salary/elog/service/ILoggerTableService.java
create mode 100644 src/com/engine/salary/elog/service/impl/LocalElogService.java
create mode 100644 src/com/engine/salary/elog/service/impl/LoggerTableService.java
create mode 100644 src/com/engine/salary/elog/threadlocal/ElogThreadLocal.java
create mode 100644 src/com/engine/salary/elog/util/ElogServiceUtils.java
create mode 100644 src/com/engine/salary/elog/util/ElogSeviceSwitchUtils.java
create mode 100644 src/com/engine/salary/elog/util/ElogSeviceUtils.java
create mode 100644 src/com/engine/salary/elog/util/ElogUtils.java
create mode 100644 src/com/engine/salary/elog/util/FieldNameMap.java
create mode 100644 src/com/engine/salary/elog/util/LoggerTemplate.java
create mode 100644 src/com/engine/salary/elog/util/LoggerTemplateBuilder.java
create mode 100644 src/com/engine/salary/elog/util/ResponseResult.java
create mode 100644 src/com/engine/salary/elog/util/SalaryI18nUtil.java
create mode 100644 src/com/engine/salary/elog/util/db/IdGenerator.java
create mode 100644 src/com/engine/salary/elog/util/db/MapperProxyFactory.java
create mode 100644 src/com/engine/salary/elog/util/page/Column.java
create mode 100644 src/com/engine/salary/elog/util/page/DataSource.java
create mode 100644 src/com/engine/salary/elog/util/page/PageInfo.java
create mode 100644 src/com/engine/salary/elog/util/page/SalaryPageUtil.java
create mode 100644 src/com/engine/salary/elog/util/page/TableTitle.java
create mode 100644 src/com/engine/salary/elog/web/LoggerTableController.java
create mode 100644 src/com/engine/salary/mapper/elog/ElogTableCheckerMapper.java
create mode 100644 src/com/engine/salary/mapper/elog/ElogTableCheckerMapper.xml
create mode 100644 src/com/engine/salary/mapper/elog/LocalElogAopDaoMapper.java
create mode 100644 src/com/engine/salary/mapper/elog/LocalElogAopDaoMapper.xml
create mode 100644 src/com/engine/salary/mapper/elog/LocalElogDaoMapper.java
create mode 100644 src/com/engine/salary/mapper/elog/LocalElogDaoMapper.xml
create mode 100644 src/com/engine/salary/mapper/elog/QueryCurretValusMapper.java
create mode 100644 src/com/engine/salary/mapper/elog/QueryCurretValusMapper.xml
diff --git a/src/com/api/salary/elog/LoggerTableController.java b/src/com/api/salary/elog/LoggerTableController.java
new file mode 100644
index 0000000..56bd6a5
--- /dev/null
+++ b/src/com/api/salary/elog/LoggerTableController.java
@@ -0,0 +1,15 @@
+package com.api.salary.elog;
+
+import javax.ws.rs.Path;
+
+/**
+ * 日志列表公共接口暴漏
+ *
Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Path("/bs/hrmsalary/elog")
+public class LoggerTableController extends com.engine.salary.elog.web.LoggerTableController{
+}
diff --git a/src/com/engine/salary/elog/annotation/Elog.java b/src/com/engine/salary/elog/annotation/Elog.java
new file mode 100644
index 0000000..7e00ca2
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/Elog.java
@@ -0,0 +1,23 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD})
+public @interface Elog {
+
+ String module();
+
+ String function();
+
+ String operateType();
+
+ String operateTypeName();
+
+ String sql() default "";
+
+ boolean isLocal() default true;
+
+ String infoMethod() default "";
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogDetailField.java b/src/com/engine/salary/elog/annotation/ElogDetailField.java
new file mode 100644
index 0000000..129c57d
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogDetailField.java
@@ -0,0 +1,14 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface ElogDetailField {
+
+ String fieldType() default "varchar";
+ String length() default "50";
+ String fieldName();
+ String desc() default "自定义字段";
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogDetailTable.java b/src/com/engine/salary/elog/annotation/ElogDetailTable.java
new file mode 100644
index 0000000..d5054b7
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogDetailTable.java
@@ -0,0 +1,13 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface ElogDetailTable {
+
+ String module();
+
+ String function() default "common";
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogField.java b/src/com/engine/salary/elog/annotation/ElogField.java
new file mode 100644
index 0000000..a60c1f6
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogField.java
@@ -0,0 +1,23 @@
+package com.engine.salary.elog.annotation;
+
+import com.engine.salary.elog.entity.dto.DataTypeEnum;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface ElogField {
+
+ DataTypeEnum dataType() default DataTypeEnum.VARCHAR;
+
+ int length() default 50;
+
+ String comment() default "自定义字段";
+
+ String defaultValue() default "";
+
+ boolean isNull() default true;
+
+ boolean isKey() default false;
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogPrimaryKey.java b/src/com/engine/salary/elog/annotation/ElogPrimaryKey.java
new file mode 100644
index 0000000..291f825
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogPrimaryKey.java
@@ -0,0 +1,9 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.PARAMETER})
+public @interface ElogPrimaryKey {
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogTable.java b/src/com/engine/salary/elog/annotation/ElogTable.java
new file mode 100644
index 0000000..480caf4
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogTable.java
@@ -0,0 +1,14 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+
+public @interface ElogTable {
+
+ String module();
+
+ String function() default "common";
+}
diff --git a/src/com/engine/salary/elog/annotation/ElogTransform.java b/src/com/engine/salary/elog/annotation/ElogTransform.java
new file mode 100644
index 0000000..120c41d
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/ElogTransform.java
@@ -0,0 +1,29 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD, ElementType.TYPE})
+@Inherited
+public @interface ElogTransform {
+
+ String tablename() default "";
+
+ String name();
+
+ int labelId() default -1;
+
+ String type() default "";
+
+ String valuesKVPairs() default "";
+
+ boolean ignore() default false;
+
+ boolean analyticSubclass() default false;
+
+ boolean analyticList() default false;
+
+ Class> analyticListClass() default void.class;
+
+}
diff --git a/src/com/engine/salary/elog/annotation/HandleElog.java b/src/com/engine/salary/elog/annotation/HandleElog.java
new file mode 100644
index 0000000..387666b
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/HandleElog.java
@@ -0,0 +1,17 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface HandleElog {
+
+ String modulename() default "";
+
+ String functionname() default "";
+
+ String service() default "";
+}
diff --git a/src/com/engine/salary/elog/annotation/LoggerTarget.java b/src/com/engine/salary/elog/annotation/LoggerTarget.java
new file mode 100644
index 0000000..701d4f8
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/LoggerTarget.java
@@ -0,0 +1,22 @@
+package com.engine.salary.elog.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @ClassName: LoggerTarget
+ * @Description 日志构造器-自定义注解
+ * @Author tanghj
+ * @Date 2021/2/10 14:18
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface LoggerTarget {
+// @AliasFor("module")
+ String value() default "";
+
+// @AliasFor("value")
+ String module() default "";
+
+ String function() default "common";
+}
diff --git a/src/com/engine/salary/elog/annotation/OperateType.java b/src/com/engine/salary/elog/annotation/OperateType.java
new file mode 100644
index 0000000..7dbb843
--- /dev/null
+++ b/src/com/engine/salary/elog/annotation/OperateType.java
@@ -0,0 +1,15 @@
+package com.engine.salary.elog.annotation;
+
+public class OperateType {
+ public static final String view = "view";
+ public static final String viewSpan = "查看";
+
+ public static final String add = "add";
+ public static final String addSpan = "新增";
+
+ public static final String update = "update";
+ public static final String updateSpan = "更新";
+
+ public static final String delete = "delete";
+ public static final String deleteSpan = "删除";
+}
diff --git a/src/com/engine/salary/elog/async/LoggerMessageListener.java b/src/com/engine/salary/elog/async/LoggerMessageListener.java
new file mode 100644
index 0000000..2bf5dc9
--- /dev/null
+++ b/src/com/engine/salary/elog/async/LoggerMessageListener.java
@@ -0,0 +1,30 @@
+package com.engine.salary.elog.async;
+
+import com.engine.salary.elog.config.ELogTableChecker;
+import com.engine.salary.elog.entity.dto.LoggerContext;
+import com.engine.salary.elog.service.impl.LocalElogService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @ClassName: LoggerMessageListener
+ * @Description 本地日志存储消息队列监听类
+ * @Author tanghj
+ * @Date 2021/2/10 14:18
+ */
+public class LoggerMessageListener {
+
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
+ LocalElogService localElogService = new LocalElogService();
+
+ public String receiveold(LoggerContext messageBean) {
+
+ new ELogTableChecker().check(messageBean);
+ localElogService.insertLocalElog(messageBean);
+
+ return "";
+ }
+
+
+}
diff --git a/src/com/engine/salary/elog/config/ELogCache.java b/src/com/engine/salary/elog/config/ELogCache.java
new file mode 100644
index 0000000..3affa8c
--- /dev/null
+++ b/src/com/engine/salary/elog/config/ELogCache.java
@@ -0,0 +1,25 @@
+package com.engine.salary.elog.config;
+
+import com.engine.salary.mapper.elog.ElogTableCheckerMapper;
+import com.engine.salary.elog.util.db.MapperProxyFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ELogCache {
+
+ private Map tableCache = new HashMap<>();
+
+ private ElogTableCheckerMapper getTableCheckerMapper() {
+ return MapperProxyFactory.getProxy(ElogTableCheckerMapper.class);
+ }
+
+ public Long getVersion(String mainTable) {
+ Long version = tableCache.get(mainTable);
+ if (version == null) {
+ version = getTableCheckerMapper().getVersion(mainTable);
+ tableCache.put(mainTable, version);
+ }
+ return version;
+ }
+}
diff --git a/src/com/engine/salary/elog/config/ELogTableChecker.java b/src/com/engine/salary/elog/config/ELogTableChecker.java
new file mode 100644
index 0000000..3c4b5b9
--- /dev/null
+++ b/src/com/engine/salary/elog/config/ELogTableChecker.java
@@ -0,0 +1,44 @@
+package com.engine.salary.elog.config;
+
+import com.engine.salary.elog.entity.dto.LoggerContext;
+import com.engine.salary.mapper.elog.ElogTableCheckerMapper;
+import com.engine.salary.elog.util.db.IdGenerator;
+import com.engine.salary.elog.util.db.MapperProxyFactory;
+
+
+public class ELogTableChecker {
+ private static final long version = 0;
+ private ELogCache eLogCache = new ELogCache();
+
+ private ElogTableCheckerMapper getTableCheckerMapper() {
+ return MapperProxyFactory.getProxy(ElogTableCheckerMapper.class);
+ }
+
+ public void check(LoggerContext loggerContext) {
+ String module = loggerContext.getModuleName();
+ String function = loggerContext.getFunctionName();
+ String mainTable = String.format("%s_%slogs", module, function);
+ Long v = eLogCache.getVersion(mainTable);
+ boolean noTable = v == null;
+ if (noTable) {
+ this.initTable(mainTable);
+ v = version;
+ } else {
+ this.checkVersion(mainTable, v);
+ }
+
+ }
+
+ private void checkVersion(String mainTable, Long v) {
+ if (v == version) {
+ return;
+ }
+ }
+
+
+ private void initTable(String mainTable) {
+ getTableCheckerMapper().recordVersion(IdGenerator.generate(), mainTable, version);
+ getTableCheckerMapper().createMainTable(mainTable);
+ getTableCheckerMapper().createDetailTable(mainTable + "_detail");
+ }
+}
diff --git a/src/com/engine/salary/elog/entity/dto/CancelContext.java b/src/com/engine/salary/elog/entity/dto/CancelContext.java
new file mode 100644
index 0000000..d7ecccb
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/CancelContext.java
@@ -0,0 +1,25 @@
+package com.engine.salary.elog.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @ClassName: CancelContext
+ * @Description 撤销实体类
+ * @Author tanghj
+ * @Date 2021/2/10 14:18
+ */
+@ApiModel("撤销实体类")
+public class CancelContext {
+
+ @ApiModelProperty("撤销参数")
+ private T cancleParams;
+
+ public T getCancleParams() {
+ return cancleParams;
+ }
+
+ public void setCancleParams(T cancleParams) {
+ this.cancleParams = cancleParams;
+ }
+}
diff --git a/src/com/engine/salary/elog/entity/dto/DataTypeEnum.java b/src/com/engine/salary/elog/entity/dto/DataTypeEnum.java
new file mode 100644
index 0000000..b31b8e4
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/DataTypeEnum.java
@@ -0,0 +1,16 @@
+package com.engine.salary.elog.entity.dto;
+
+public enum DataTypeEnum {
+ VARCHAR,
+ BIGINT,
+ INT,
+ DATETIME,
+ TEXT,
+ LONGTEXT,
+ DOUBLE,
+ DECIMAL,
+ TINYINT,
+ FLOAT;
+
+
+}
diff --git a/src/com/engine/salary/elog/entity/dto/ElogBean.java b/src/com/engine/salary/elog/entity/dto/ElogBean.java
new file mode 100644
index 0000000..84a24cf
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/ElogBean.java
@@ -0,0 +1,116 @@
+package com.engine.salary.elog.entity.dto;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Date: 2022/5/2 21:51
+ * @Author: deli.xu
+ * @Description: 日志中心bean
+ **/
+public class ElogBean implements Serializable {
+
+
+ private static final long serialVersionUID = 5357552376749564256L;
+ private String module;
+ private String function;
+ private String current;
+ private String pageSize;
+ private String dataset;
+ private String searchMap;
+ private List showColumns = new ArrayList<>();
+ private List filterConditionDtos = new ArrayList<>();
+ private String downloadSize;
+ private String transMethod;
+ private Map authParamsJson;
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getFunction() {
+ return function;
+ }
+
+ public void setFunction(String function) {
+ this.function = function;
+ }
+
+ public String getCurrent() {
+ return current;
+ }
+
+ public void setCurrent(String current) {
+ this.current = current;
+ }
+
+ public String getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(String pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public String getDataset() {
+ return dataset;
+ }
+
+ public void setDataset(String dataset) {
+ this.dataset = dataset;
+ }
+
+ public String getSearchMap() {
+ return searchMap;
+ }
+
+ public void setSearchMap(String searchMap) {
+ this.searchMap = searchMap;
+ }
+
+ public List getShowColumns() {
+ return showColumns;
+ }
+
+ public void setShowColumns(List showColumns) {
+ this.showColumns = showColumns;
+ }
+
+ public List getFilterConditionDtos() {
+ return filterConditionDtos;
+ }
+
+ public void setFilterConditionDtos(List filterConditionDtos) {
+ this.filterConditionDtos = filterConditionDtos;
+ }
+
+ public String getDownloadSize() {
+ return downloadSize;
+ }
+
+ public void setDownloadSize(String downloadSize) {
+ this.downloadSize = downloadSize;
+ }
+
+ public String getTransMethod() {
+ return transMethod;
+ }
+
+ public void setTransMethod(String transMethod) {
+ this.transMethod = transMethod;
+ }
+
+ public Map getAuthParamsJson() {
+ return authParamsJson;
+ }
+
+ public void setAuthParamsJson(Map authParamsJson) {
+ this.authParamsJson = authParamsJson;
+ }
+}
diff --git a/src/com/engine/salary/elog/entity/dto/FilterConditionDto.java b/src/com/engine/salary/elog/entity/dto/FilterConditionDto.java
new file mode 100644
index 0000000..28cb451
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/FilterConditionDto.java
@@ -0,0 +1,91 @@
+package com.engine.salary.elog.entity.dto;
+
+import java.io.Serializable;
+
+/**
+ * @date: 2021/5/25 17:23
+ * @author: deli.xu
+ * @description:
+ */
+public class FilterConditionDto implements Serializable {
+
+ private static final long serialVersionUID = -3399942468474767859L;
+
+ /**
+ * 列名
+ */
+ private String columIndex;
+ /**
+ * 值
+ */
+ private String value;
+
+ /**
+ * 过滤类型
+ */
+ private String type;
+
+ /**
+ * 模糊搜索
+ */
+ private Like like;
+
+ /**
+ * 关联条件
+ */
+ private String connectCondition;
+
+ /**
+ * sql条件
+ */
+ private String sql;
+
+
+ public String getColumIndex() {
+ return columIndex;
+ }
+
+ public void setColumIndex(String columIndex) {
+ this.columIndex = columIndex;
+ }
+
+ 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;
+ }
+
+ public Like getLike() {
+ return like;
+ }
+
+ public void setLike(Like like) {
+ this.like = like;
+ }
+
+ public String getConnectCondition() {
+ return connectCondition;
+ }
+
+ public void setConnectCondition(String connectCondition) {
+ this.connectCondition = connectCondition;
+ }
+
+ public String getSql() {
+ return sql;
+ }
+
+ public void setSql(String sql) {
+ this.sql = sql;
+ }
+}
diff --git a/src/com/engine/salary/elog/entity/dto/Like.java b/src/com/engine/salary/elog/entity/dto/Like.java
new file mode 100644
index 0000000..2caead7
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/Like.java
@@ -0,0 +1,31 @@
+package com.engine.salary.elog.entity.dto;
+
+import java.io.Serializable;
+
+/**
+ * @date: 2021/6/1 17:50
+ * @author: deli.xu
+ * @description:
+ */
+public class Like implements Serializable {
+ private static final long serialVersionUID = -3399942468474767851L;
+ private String prefix;
+ private String suffix;
+
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getSuffix() {
+ return suffix;
+ }
+
+ public void setSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+}
diff --git a/src/com/engine/salary/elog/entity/dto/LoggerContext.java b/src/com/engine/salary/elog/entity/dto/LoggerContext.java
new file mode 100644
index 0000000..f9be10c
--- /dev/null
+++ b/src/com/engine/salary/elog/entity/dto/LoggerContext.java
@@ -0,0 +1,890 @@
+package com.engine.salary.elog.entity.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.engine.salary.elog.annotation.ElogField;
+import com.engine.salary.elog.annotation.ElogTable;
+import com.engine.salary.elog.enums.ElogConsts;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
+import weaver.hrm.User;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName: LoggerContext
+ * @Description 日志实体类。支持通过泛型扩展日志字段
+ * @Author tanghj
+ * @Date 2021/2/10 14:18
+ */
+@ElogTable(module = ElogConsts.BASE_TABLE)
+@ApiModel("日志实体类")
+public class LoggerContext implements Serializable {
+
+ private static final long serialVersionUID = 15869325700230992L;
+
+ private User user;
+
+ @ElogField(comment = "ID", dataType = DataTypeEnum.BIGINT, isKey = true)
+ @ApiModelProperty("日志ID")
+ private long id;
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 36, comment = "日志UUID")
+ @ApiModelProperty("日志UUID")
+ private String uuid = "";
+
+ @ApiModelProperty("自定义日志字段信息")
+ private T customInfo;
+ @ElogField(dataType = DataTypeEnum.DATETIME, comment = "操作时间")
+ @ApiModelProperty("操作时间")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private Date date = new Date();
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 500, comment = "终端信息")
+ @ApiModelProperty("终端信息")
+ private String device = "";
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "-1", comment = "操作人")
+ @ApiModelProperty("操作人")
+ private String operator = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, comment = "操作人姓名")
+ @ApiModelProperty("操作人姓名")
+ private String operatorName = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 10, comment = "租户id")
+ @ApiModelProperty("租户id")
+ private String tenant_key = "";
+
+ /**
+ * 要操作的对象在表中的主键值
+ */
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "-1", comment = "操作目标id")
+ @ApiModelProperty("操作目标id")
+ private String targetId = "";
+
+ @ElogField(dataType = DataTypeEnum.TEXT, comment = "操作目标名称")
+ @ApiModelProperty("操作目标名称(用于显示)")
+ private String targetName = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, comment = "模块")
+ @ApiModelProperty("目标对象类型(大分类,模块,服务)")
+ private String moduleName;// 模块
+
+ /**
+ * 目标对象类型(小分类,模块/服务下的子功能。子项目)
+ * 数据存储是以模块名_子项目名作为最基本的存储单元
+ * 如果是子项目下的子项目 命名为:子项目名_子项目名_子项目名(全部小写)
+ */
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, comment = "服务(方法)")
+ @ApiModelProperty("目标对象类型(小分类,模块/服务下的子功能。子项目)")
+ private String functionName;
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, comment = "访问接口名")
+ @ApiModelProperty("访问接口名")
+ private String interfaceName = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 200, comment = "请求全路径")
+ @ApiModelProperty("请求全路径")
+ private String requestUrl = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 200, comment = "请求地址")
+ @ApiModelProperty("请求地址")
+ private String requestUri = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 50, comment = "操作类型")
+ @ApiModelProperty("操作类型(增删改查等)")
+ private String operateType = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, comment = "操作类型名称")
+ @ApiModelProperty("操作类型名称")
+ private String operateTypeName = "";
+
+ /**
+ * 每个TableChangeBean 为一张表,支持记录多张表的前后值
+ */
+ @ApiModelProperty("修改前、后的值")
+ private List changeValues;// 操作表名,[字段名,值]
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 3000, comment = "操作详细说明")
+ @ApiModelProperty("操作详细说明")
+ private String operatedesc = "";
+
+ @ElogField(dataType = DataTypeEnum.LONGTEXT, comment = "涉及的相关参数")
+ @ApiModelProperty("涉及的相关参数")
+ private Map params;
+
+ @ApiModelProperty("涉及的相关参数-转string存储")
+ private String paramsStr;
+
+ /**
+ * 当作为主表,belongMainId不赋值
+ */
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 36, comment = "所属主表uuid")
+ @ApiModelProperty("所属主表uuid")
+ private String belongMainId = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 50, comment = "操作IP")
+ @ApiModelProperty("操作IP")
+ private String clientIp = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 50, comment = "分组")
+ @ApiModelProperty("分组")
+ private String groupId = "";
+
+ /*@ApiModelProperty("是否明显表")
+ private boolean isDetail;*/
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 1000, comment = "分组标题")
+ @ApiModelProperty("分组标题")
+ private String groupNameLabel = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 200, comment = "重做业务接口")
+ @ApiModelProperty("重做业务接口")
+ private String redoService = "";
+
+ @ElogField(dataType = DataTypeEnum.LONGTEXT, comment = "重做参数")
+ @ApiModelProperty("重做参数")
+ private RedoContext redoContext;
+
+ @ApiModelProperty("重做参数-转String存储")
+ private String redoContextStr;
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 200, comment = "撤销业务接口")
+ @ApiModelProperty("撤销业务接口")
+ private String cancelService = "";
+
+ @ElogField(dataType = DataTypeEnum.LONGTEXT, comment = "撤销参数")
+ @ApiModelProperty("撤销参数")
+ private CancelContext cancelContext;
+
+ @ApiModelProperty("撤销参数-转String存储")
+ private String cancelContextStr;
+
+ @ApiModelProperty("日志明细列表(值变化列表-自动赋值、或者自定义字段)")
+ private List detailContexts;
+
+ @ElogField(dataType = DataTypeEnum.DATETIME, defaultValue = "CURRENT_TIMESTAMP", comment = "创建时间")
+ @ApiModelProperty("创建时间")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private Date create_time;
+
+ @ElogField(dataType = DataTypeEnum.DATETIME, defaultValue = "CURRENT_TIMESTAMP", comment = "修改时间")
+ @ApiModelProperty("修改时间")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private Date update_time;
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "-1", comment = "创建人id")
+ @ApiModelProperty("创建人id")
+ private long creator;
+
+ @ElogField(dataType = DataTypeEnum.INT, defaultValue = "0", comment = "是否删除")
+ @ApiModelProperty("是否删除")
+ private int delete_type;
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "0", comment = "总运行时长")
+ @ApiModelProperty("总运行时长")
+ private long totalRunTime;
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "0", comment = "主方法运行时长")
+ @ApiModelProperty("主方法运行时长")
+ private long mainRunTime;
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, defaultValue = "", comment = "运行结果标识")
+ @ApiModelProperty("运行结果标识")
+ private String result = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 100, defaultValue = "", comment = "来自pc web")
+ @ApiModelProperty("来自终端")
+ private String fromTerminal = "";
+
+ @ElogField(dataType = DataTypeEnum.TEXT, comment = "运行结果描述")
+ @ApiModelProperty("运行结果描述")
+ private String resultDesc = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 3000, comment = "原先内容")
+ @ApiModelProperty("原先内容(et用)")
+ private String old_content = "";
+
+ @ElogField(dataType = DataTypeEnum.VARCHAR, length = 20, comment = "链接类型")
+ @ApiModelProperty("链接类型(et用)")
+ private String link_type = "";
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "0", comment = "链接id")
+ @ApiModelProperty("链接id(et用)")
+ private long link_id;
+
+ @ElogField(dataType = DataTypeEnum.BIGINT, defaultValue = "0", comment = "原先链接id")
+ @ApiModelProperty("原先链接id(et用)")
+ private long old_link_id;
+
+ /**
+ * 开发可以自由传中间临时参数,不会入库
+ */
+ @ApiModelProperty("临时参数")
+ private Object tempParams;
+
+ /**
+ * 是否忽略该日志,不进行数据记录
+ */
+ @ApiModelProperty("是否忽略该日志,不进行数据记录")
+ private boolean logIgnore;
+
+ /**
+ * 审计操作类型
+ */
+ @ApiModelProperty("审计操作类型")
+ protected String operateAuditType;
+
+ /**
+ * 操作人账号
+ */
+ @ApiModelProperty("操作人账号")
+ protected String operateAccount;
+
+ @ApiModelProperty("操作人id(兼容数据库用)")
+ protected long logOperator;
+
+ @ApiModelProperty("操作人id(兼容数据库用)")
+ protected long logTargetid;
+
+ @ApiModelProperty("ES存储大字段功能标识")
+ protected Boolean esFunction;
+
+ @ApiModelProperty("params参数是否忽略记录")
+ private Boolean paramsIgnore = Boolean.FALSE;
+
+ @ApiModelProperty("params请求体keys")
+ private List paramsBodyKeys;
+
+ @ApiModelProperty("日志弱控记录")
+ private Boolean weakElogReocrd = Boolean.FALSE;
+
+ private List clobFieldList;
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+ public List getClobFieldList() {
+ return clobFieldList;
+ }
+
+ public void setClobFieldList(List clobFieldList) {
+ this.clobFieldList = clobFieldList;
+ }
+
+ public Boolean getWeakElogReocrd() {
+ return weakElogReocrd;
+ }
+
+ public void setWeakElogReocrd(Boolean weakElogReocrd) {
+ this.weakElogReocrd = weakElogReocrd;
+ }
+
+ public Boolean getParamsIgnore() {
+ return paramsIgnore;
+ }
+
+ public void setParamsIgnore(Boolean paramsIgnore) {
+ this.paramsIgnore = paramsIgnore;
+ }
+
+ public List getParamsBodyKeys() {
+ return paramsBodyKeys;
+ }
+
+ public void setParamsBodyKeys(List paramsBodyKeys) {
+ this.paramsBodyKeys = paramsBodyKeys;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public T getCustomInfo() {
+ return customInfo;
+ }
+
+ public void setCustomInfo(T customInfo) {
+ this.customInfo = customInfo;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public String getDevice() {
+ return device;
+ }
+
+ public void setDevice(String device) {
+ this.device = device;
+ }
+
+ public String getOperator() {
+ return operator;
+ }
+
+ public void setOperator(String operator) {
+ this.operator = operator;
+ }
+
+ public String getTenant_key() {
+ return tenant_key;
+ }
+
+ public void setTenant_key(String tenant_key) {
+ this.tenant_key = tenant_key;
+ }
+
+ public String getTargetId() {
+ return targetId;
+ }
+
+ public void setTargetId(String targetId) {
+ this.targetId = targetId;
+ }
+
+ public String getTargetName() {
+ return targetName;
+ }
+
+ public void setTargetName(String targetName) {
+ this.targetName = targetName;
+ }
+
+ public String getModuleName() {
+ return moduleName;
+ }
+
+ public void setModuleName(String moduleName) {
+ this.moduleName = moduleName;
+ }
+
+ public String getFunctionName() {
+ return functionName;
+ }
+
+ public void setFunctionName(String functionName) {
+ this.functionName = functionName;
+ }
+
+ public String getInterfaceName() {
+ return interfaceName;
+ }
+
+ public void setInterfaceName(String interfaceName) {
+ this.interfaceName = interfaceName;
+ }
+
+ public String getOperateType() {
+ return operateType;
+ }
+
+ public void setOperateType(String operateType) {
+ this.operateType = operateType;
+ }
+
+ public List getChangeValues() {
+ return changeValues;
+ }
+
+ public void setChangeValues(List changeValues) {
+ this.changeValues = changeValues;
+ }
+
+ public String getOperatedesc() {
+ return operatedesc;
+ }
+
+ public void setOperatedesc(String operatedesc) {
+ this.operatedesc = operatedesc;
+ }
+
+ public Map getParams() {
+ return params;
+ }
+
+ public void setParams(Map params) {
+ this.params = params;
+ }
+
+ /*public String getMainId() {
+ return mainId;
+ }
+
+ public void setMainId(String mainId) {
+ this.mainId = mainId;
+ }
+
+ public String getBelongMainId() {
+ return belongMainId;
+ }
+
+ public void setBelongMainId(String belongMainId) {
+ this.belongMainId = belongMainId;
+ }*/
+
+ public String getClientIp() {
+ return clientIp;
+ }
+
+ public void setClientIp(String clientIp) {
+ this.clientIp = clientIp;
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+/* public boolean isDetail() {
+ return isDetail;
+ }
+
+ public void setDetail(boolean detail) {
+ isDetail = detail;
+ }*/
+
+ public String getGroupNameLabel() {
+ return groupNameLabel;
+ }
+
+ public void setGroupNameLabel(String groupNameLabel) {
+ this.groupNameLabel = groupNameLabel;
+ }
+
+ public String getRedoService() {
+ return redoService;
+ }
+
+ public void setRedoService(String redoService) {
+ this.redoService = redoService;
+ }
+
+ public RedoContext getRedoContext() {
+ return redoContext;
+ }
+
+ public void setRedoContext(RedoContext redoContext) {
+ this.redoContext = redoContext;
+ }
+
+ public CancelContext getCancelContext() {
+ return cancelContext;
+ }
+
+ public void setCancelContext(CancelContext cancelContext) {
+ this.cancelContext = cancelContext;
+ }
+
+ public String getCancelService() {
+ return cancelService;
+ }
+
+ public void setCancelService(String cancelService) {
+ this.cancelService = cancelService;
+ }
+
+ public List getDetailContexts() {
+ return detailContexts;
+ }
+
+ public void setDetailContexts(List detailContexts) {
+ this.detailContexts = detailContexts;
+ }
+
+ public void addDetailContext(LoggerDetailContext loggerDetailContext) {
+ if (this.detailContexts != null) {
+ this.detailContexts.add(loggerDetailContext);
+ } else {
+ this.detailContexts = new ArrayList<>();
+ this.detailContexts.add(loggerDetailContext);
+ }
+ }
+
+ public void addDetailContext(List list) {
+ if (this.detailContexts != null) {
+ this.detailContexts.addAll(list);
+ } else {
+ this.detailContexts = new ArrayList<>();
+ this.detailContexts.addAll(list);
+ }
+ }
+
+ public String getOperatorName() {
+ return operatorName;
+ }
+
+ public void setOperatorName(String operatorName) {
+ this.operatorName = operatorName;
+ }
+
+ public void setOldValues(Object object) {
+ TableChangeBean bean = new TableChangeBean();
+ bean.setOldValue(object);
+ getChangeList().add(bean);
+ }
+
+ public void setOldValueList(List