From 40a7c066a25adb1218b8c402a64db0a5c7801a42 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 7 Jul 2022 14:19:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/entity/LoggerContext.java | 3 + .../organization/entity/commom/FieldInfo.java | 124 +++++++++++ .../entity/logview/bo/AbstractEquator.java | 203 ++++++++++++++++++ .../entity/logview/bo/Equator.java | 31 +++ .../entity/logview/bo/FieldBaseEquator.java | 133 ++++++++++++ .../entity/logview/bo/FieldInfo.java | 120 +++++++++++ .../entity/logview/bo/GetterBaseEquator.java | 168 +++++++++++++++ .../entity/logview/vo/LogViewVO.java | 10 +- .../organization/enums/OperateTypeEnum.java | 5 +- .../organization/mapper/job/JobMapper.java | 2 + .../organization/mapper/job/JobMapper.xml | 10 + .../mapper/post/PostInfoMapper.java | 1 + .../mapper/post/PostInfoMapper.xml | 9 + .../organization/mapper/post/PostMapper.java | 1 + .../organization/mapper/post/PostMapper.xml | 15 +- .../mapper/scheme/GradeMapper.java | 2 + .../mapper/scheme/GradeMapper.xml | 7 + .../mapper/scheme/LevelMapper.java | 2 + .../mapper/scheme/LevelMapper.xml | 9 + .../mapper/scheme/SchemeMapper.java | 2 + .../mapper/scheme/SchemeMapper.xml | 10 + .../mapper/sequence/SequenceMapper.java | 1 + .../mapper/sequence/SequenceMapper.xml | 10 + .../mapper/sislog/SISLogMapper.xml | 6 +- .../mapper/staff/StaffMapper.java | 2 + .../organization/mapper/staff/StaffMapper.xml | 10 + .../mapper/staff/StaffPlanMapper.java | 2 + .../mapper/staff/StaffPlanMapper.xml | 10 + .../transmethod/LogViewTransMethod.java | 9 + .../engine/organization/util/LogAspect.java | 4 - .../util/OrganizationWrapper.java | 51 ++++- .../organization/web/JobController.java | 2 +- .../organization/wrapper/CompWrapper.java | 28 ++- .../organization/wrapper/DemoWrapper.java | 2 +- .../wrapper/DepartmentWrapper.java | 45 ++-- .../organization/wrapper/GradeWrapper.java | 30 ++- .../organization/wrapper/GroupWrapper.java | 7 - .../wrapper/HrmResourceWrapper.java | 10 - .../organization/wrapper/JobWrapper.java | 51 +++-- .../organization/wrapper/LevelWrapper.java | 26 ++- .../organization/wrapper/PostInfoWrapper.java | 27 ++- .../organization/wrapper/PostWrapper.java | 23 +- .../organization/wrapper/SchemeWrapper.java | 26 ++- .../organization/wrapper/SequenceWrapper.java | 32 ++- .../wrapper/StaffPlanWrapper.java | 29 ++- .../organization/wrapper/StaffWrapper.java | 29 ++- 46 files changed, 1207 insertions(+), 132 deletions(-) create mode 100644 src/com/engine/organization/entity/commom/FieldInfo.java create mode 100644 src/com/engine/organization/entity/logview/bo/AbstractEquator.java create mode 100644 src/com/engine/organization/entity/logview/bo/Equator.java create mode 100644 src/com/engine/organization/entity/logview/bo/FieldBaseEquator.java create mode 100644 src/com/engine/organization/entity/logview/bo/FieldInfo.java create mode 100644 src/com/engine/organization/entity/logview/bo/GetterBaseEquator.java diff --git a/src/com/engine/organization/entity/LoggerContext.java b/src/com/engine/organization/entity/LoggerContext.java index 8d4a6df1..140200e6 100644 --- a/src/com/engine/organization/entity/LoggerContext.java +++ b/src/com/engine/organization/entity/LoggerContext.java @@ -67,4 +67,7 @@ public class LoggerContext implements Serializable { // 日志信息 private String message; + // 名称 + private String value; + } diff --git a/src/com/engine/organization/entity/commom/FieldInfo.java b/src/com/engine/organization/entity/commom/FieldInfo.java new file mode 100644 index 00000000..481e4cd6 --- /dev/null +++ b/src/com/engine/organization/entity/commom/FieldInfo.java @@ -0,0 +1,124 @@ +package com.engine.organization.entity.commom; + +import java.util.Objects; + +/** + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public class FieldInfo { + /** + * 字段名称 + */ + private String fieldName; + /** + * 第一个字段的类型 + */ + private Class firstFieldType; + /** + * 第二个字段的类型 + */ + private Class secondFieldType; + /** + * 第一个对象的值 + */ + private Object firstVal; + /** + * 第二个对象的值 + */ + private Object secondVal; + + public FieldInfo() { + } + + public FieldInfo(String fieldName, Class firstFieldType, Class secondFieldType) { + this.fieldName = fieldName; + this.firstFieldType = firstFieldType; + this.secondFieldType = secondFieldType; + } + + public FieldInfo(String fieldName, Class fieldType, Object firstVal, Object secondVal) { + this.fieldName = fieldName; + this.firstFieldType = fieldType; + this.secondFieldType = fieldType; + this.firstVal = firstVal; + this.secondVal = secondVal; + } + + public FieldInfo(String fieldName, Class firstFieldType, Class secondFieldType, Object firstVal, Object secondVal) { + this.fieldName = fieldName; + this.firstFieldType = firstFieldType; + this.secondFieldType = secondFieldType; + this.firstVal = firstVal; + this.secondVal = secondVal; + } + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public Class getFirstFieldType() { + return firstFieldType; + } + + public void setFirstFieldType(Class firstFieldType) { + this.firstFieldType = firstFieldType; + } + + public Object getFirstVal() { + return firstVal; + } + + public void setFirstVal(Object firstVal) { + this.firstVal = firstVal; + } + + public void setSecondFieldType(Class secondFieldType) { + this.secondFieldType = secondFieldType; + } + + public Class getSecondFieldType() { + return secondFieldType; + } + + public Object getSecondVal() { + return secondVal; + } + + public void setSecondVal(Object secondVal) { + this.secondVal = secondVal; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + FieldInfo fieldInfo = (FieldInfo) o; + return Objects.equals(fieldName, fieldInfo.fieldName) && + Objects.equals(firstFieldType, fieldInfo.firstFieldType) && + Objects.equals(secondFieldType, fieldInfo.secondFieldType) && + Objects.equals(firstVal, fieldInfo.firstVal) && + Objects.equals(secondVal, fieldInfo.secondVal); + } + + @Override + public int hashCode() { + return Objects.hash(fieldName, firstFieldType, secondFieldType, firstVal, secondVal); + } + + @Override + public String toString() { + return "FieldInfo{" + + "fieldName='" + fieldName + '\'' + + ", firstFieldType=" + firstFieldType + + ", secondFieldType=" + secondFieldType + + ", firstVal=" + firstVal + + ", secondVal=" + secondVal + + '}'; + } +} diff --git a/src/com/engine/organization/entity/logview/bo/AbstractEquator.java b/src/com/engine/organization/entity/logview/bo/AbstractEquator.java new file mode 100644 index 00000000..98f693ad --- /dev/null +++ b/src/com/engine/organization/entity/logview/bo/AbstractEquator.java @@ -0,0 +1,203 @@ +package com.engine.organization.entity.logview.bo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 对比器抽象类 + * + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public abstract class AbstractEquator implements Equator { + private static final List> WRAPPER = Arrays.asList(Byte.class, Short.class, + Integer.class, Long.class, Float.class, Double.class, Character.class, + Boolean.class, String.class); + private List includeFields; + private List excludeFields; + /** + * 是否只比对两个类都包含的属性,若为 true 则比对两个类字段的次,否则比对两个类字段的并集 + *

+ * 只对要比对的两个对象为不同类型时有效 + *

+ * 默认为 true + */ + private boolean bothExistFieldOnly = true; + + public AbstractEquator() { + includeFields = Collections.emptyList(); + excludeFields = new ArrayList<>(); + excludeFields.add("creator"); + excludeFields.add("createTime"); + excludeFields.add("updateTime"); + excludeFields.add("deleteType"); + } + + /** + * @param bothExistFieldOnly 是否只对比两个类都包含的字段 + */ + public AbstractEquator(boolean bothExistFieldOnly) { + includeFields = Collections.emptyList(); + excludeFields = Collections.emptyList(); + this.bothExistFieldOnly = bothExistFieldOnly; + } + + /** + * 指定包含或排除某些字段 + * + * @param includeFields 包含字段,若为 null 或空集,则不指定 + * @param excludeFields 排除字段,若为 null 或空集,则不指定 + */ + public AbstractEquator(List includeFields, List excludeFields) { + this.includeFields = includeFields; + this.excludeFields = excludeFields; + } + + /** + * 指定包含或排除某些字段 + * + * @param includeFields 包含字段,若为 null 或空集,则不指定 + * @param excludeFields 排除字段,若为 null 或空集,则不指定 + * @param bothExistFieldOnly 是否只对比两个类都包含的字段,默认为 true + */ + public AbstractEquator(List includeFields, List excludeFields, boolean bothExistFieldOnly) { + this.includeFields = includeFields; + this.excludeFields = excludeFields; + this.bothExistFieldOnly = bothExistFieldOnly; + } + + /** + * 只要没有不相等的属性,两个对象就全相等 + * + * @param first 对象1 + * @param second 对象2 + * @return 两个对象是否全相等 + */ + @Override + public boolean isEquals(Object first, Object second) { + List diff = getDiffFields(first, second); + return diff == null || diff.isEmpty(); + } + + /** + * 对比两个对象的指定属性是否相等,默认为两个对象是否 equals + *

+ * 子类可以通过覆盖此方法对某些特殊属性进行比对 + * + * @param fieldInfo 当前比对属性信息 + * @return 属性是否相等 + */ + protected boolean isFieldEquals(FieldInfo fieldInfo) { + // 先判断排除,如果需要排除,则无论在不在包含范围,都一律不比对 + if (isExclude(fieldInfo)) { + return true; + } + // 如果有指定需要包含的字段而且当前字段不在需要包含的字段中则不比对 + if (!isInclude(fieldInfo)) { + return true; + } + return nullableEquals(fieldInfo.getFirstVal(), fieldInfo.getSecondVal()); + } + + /** + * 确定是否需要比较这个字段,子类可以扩展这个方法,自定义判断方式 + */ + protected boolean isInclude(FieldInfo fieldInfo) { + // 没有指定需要包含的字段,则全部都包含 + if (includeFields == null || includeFields.isEmpty()) { + return true; + } + return includeFields.contains(fieldInfo.getFieldName()); + } + + /** + * 确定是否需要需要排除这个字段,子类可以扩展这个方法,自定义判断方式 + */ + protected boolean isExclude(FieldInfo fieldInfo) { + // 如果有指定需要排除的字段,而且当前字段是需要排除字段,则直接返回 true + return excludeFields != null && !excludeFields.isEmpty() && excludeFields.contains(fieldInfo.getFieldName()); + } + + /** + * 如果简单数据类型的对象则直接进行比对 + * + * @param first 对象1 + * @param second 对象2 + * @return 不同的字段信息,相等返回空集,不等则 FieldInfo 的字段名为对象的类型名称 + */ + List compareSimpleField(Object first, Object second) { + boolean eq = Objects.equals(first, second); + if (eq) { + return Collections.emptyList(); + } else { + Object obj = first == null ? second : first; + Class clazz = obj.getClass(); + // 不等的字段名称使用类的名称 + + return Collections.singletonList("[" + clazz.getSimpleName() + "]:由" + first + "修改为" + second); + } + } + + /** + * 判断是否为原始数据类型 + * + * @param first 对象1 + * @param second 对象2 + * @return 是否为原始数据类型 + */ + boolean isSimpleField(Object first, Object second) { + Object obj = first == null ? second : first; + Class clazz = obj.getClass(); + return clazz.isPrimitive() || WRAPPER.contains(clazz); + } + + /** + * 根据配置的规则决定取两个对象字段的交集或并集 + */ + Set getAllFieldNames(Set firstFields, Set secondFields) { + Set allFields; + // 只取交集 + if (isBothExistFieldOnly()) { + allFields = firstFields.stream().filter(secondFields::contains).collect(Collectors.toSet()); + } else { + // 否则取并集 + allFields = new HashSet<>(firstFields); + allFields.addAll(secondFields); + } + return allFields; + } + + private boolean nullableEquals(Object first, Object second) { + if (first instanceof Collection + && second instanceof Collection) { + // 如果两个都是集合类型,尝试转换为数组再进行深度比较 + return Objects.deepEquals(((Collection) first).toArray(), ((Collection) second).toArray()); + } + return Objects.deepEquals(first, second); + } + + public void setIncludeFields(List includeFields) { + this.includeFields = includeFields; + } + + public void setExcludeFields(List excludeFields) { + this.excludeFields = excludeFields; + } + + public void setBothExistFieldOnly(boolean bothExistFieldOnly) { + this.bothExistFieldOnly = bothExistFieldOnly; + } + + public List getIncludeFields() { + return includeFields; + } + + public List getExcludeFields() { + return excludeFields; + } + + public boolean isBothExistFieldOnly() { + return bothExistFieldOnly; + } +} diff --git a/src/com/engine/organization/entity/logview/bo/Equator.java b/src/com/engine/organization/entity/logview/bo/Equator.java new file mode 100644 index 00000000..5b01d5b0 --- /dev/null +++ b/src/com/engine/organization/entity/logview/bo/Equator.java @@ -0,0 +1,31 @@ +package com.engine.organization.entity.logview.bo; + +import java.util.List; + + +/** + * 对象比对器,用于对比两个对象的所有属性是否完全相等 + * + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public interface Equator { + /** + * 两个对象是否全相等 + * + * @param first 对象1 + * @param second 对象2 + * @return 两个对象是否全相等 + */ + boolean isEquals(Object first, Object second); + + /** + * 获取不相等的属性 + * + * @param first 对象1 + * @param second 对象2 + * @return 不相等的属性,键为属性名,值为属性类型 + */ + List getDiffFields(Object first, Object second); +} diff --git a/src/com/engine/organization/entity/logview/bo/FieldBaseEquator.java b/src/com/engine/organization/entity/logview/bo/FieldBaseEquator.java new file mode 100644 index 00000000..5248c974 --- /dev/null +++ b/src/com/engine/organization/entity/logview/bo/FieldBaseEquator.java @@ -0,0 +1,133 @@ +package com.engine.organization.entity.logview.bo; + +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 基于属性的比对器 + * + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public class FieldBaseEquator extends AbstractEquator { + private static final Map, Map> CACHE = new ConcurrentHashMap<>(); + + // 忽略 + private List ignoreFields = new ArrayList<>(); + + public FieldBaseEquator() { + } + + public FieldBaseEquator(boolean bothExistFieldOnly) { + super(bothExistFieldOnly); + } + + public FieldBaseEquator(List includeFields, List excludeFields, boolean bothExistFieldOnly) { + super(includeFields, excludeFields, bothExistFieldOnly); + } + + /** + * 指定包含或排除某些字段 + * + * @param includeFields 包含字段,若为 null 或空集,则不指定 + * @param excludeFields 排除字段,若为 null 或空集,则不指定 + */ + public FieldBaseEquator(List includeFields, List excludeFields) { + super(includeFields, excludeFields); + } + + /** + * {@inheritDoc} + */ + @Override + public List getDiffFields(Object first, Object second) { + if (first == second) { + return Collections.emptyList(); + } + // 先尝试判断是否为简单数据类型 + if (isSimpleField(first, second)) { + return compareSimpleField(first, second); + } + Set allFieldNames; + // 获取所有字段 + Map firstFields = getAllFields(first); + Map secondFields = getAllFields(second); + if (first == null) { + allFieldNames = secondFields.keySet(); + } else if (second == null) { + allFieldNames = firstFields.keySet(); + } else { + allFieldNames = getAllFieldNames(firstFields.keySet(), secondFields.keySet()); + } + List diffFields = new LinkedList<>(); + for (String fieldName : allFieldNames) { + try { + Field firstField = firstFields.getOrDefault(fieldName, null); + Field secondField = secondFields.getOrDefault(fieldName, null); + Object firstVal = null; + Class firstType = null; + Class secondType = null; + Object secondVal = null; + if (firstField != null) { + firstField.setAccessible(true); + firstVal = firstField.get(first); + firstType = firstField.getType(); + } + if (secondField != null) { + secondField.setAccessible(true); + secondVal = secondField.get(second); + secondType = secondField.getType(); + } + FieldInfo fieldInfo = new FieldInfo(fieldName, firstType, secondType); + fieldInfo.setFirstVal(firstVal); + fieldInfo.setSecondVal(secondVal); + if (!isFieldEquals(fieldInfo) && isNoneEmpty(firstVal, secondVal)) { + diffFields.add("[" + fieldName + "]:由\"" + firstVal + "\"修改为\"" + secondVal + "\""); + } + } catch (IllegalAccessException e) { + throw new IllegalStateException("获取属性进行比对发生异常: " + fieldName, e); + } + } + return diffFields; + } + + private Map getAllFields(Object obj) { + if (obj == null) { + return Collections.emptyMap(); + } + return CACHE.computeIfAbsent(obj.getClass(), k -> { + Map fieldMap = new HashMap<>(8); + Class cls = k; + while (cls != Object.class) { + Field[] fields = cls.getDeclaredFields(); + for (Field field : fields) { + // 一些通过字节码注入改写类的框架会合成一些字段,如 jacoco 的 $jacocoData 字段 + // 正常情况下这些字段都需要被排除掉 + if (!field.isSynthetic()) { + fieldMap.put(field.getName(), field); + } + } + cls = cls.getSuperclass(); + } + return fieldMap; + }); + } + + + /** + * 判断是否为”“与null之间的转换 + * + * @param firstVal + * @param secondVal + * @return + */ + private boolean isNoneEmpty(Object firstVal, Object secondVal) { + String first = null == firstVal ? "" : firstVal.toString(); + String second = null == secondVal ? "" : secondVal.toString(); + return !StringUtils.isAllBlank(first, second); + } +} diff --git a/src/com/engine/organization/entity/logview/bo/FieldInfo.java b/src/com/engine/organization/entity/logview/bo/FieldInfo.java new file mode 100644 index 00000000..11a9f68b --- /dev/null +++ b/src/com/engine/organization/entity/logview/bo/FieldInfo.java @@ -0,0 +1,120 @@ +package com.engine.organization.entity.logview.bo; + +import java.util.Objects; + +/** + * 不同的属性 + * + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public class FieldInfo { + /** + * 字段名称 + */ + private String fieldName; + /** + * 第一个字段的类型 + */ + private Class firstFieldType; + /** + * 第二个字段的类型 + */ + private Class secondFieldType; + /** + * 第一个对象的值 + */ + private Object firstVal; + /** + * 第二个对象的值 + */ + private Object secondVal; + + public FieldInfo() { + } + + public FieldInfo(String fieldName, Class firstFieldType, Class secondFieldType) { + this.fieldName = fieldName; + this.firstFieldType = firstFieldType; + this.secondFieldType = secondFieldType; + } + + public FieldInfo(String fieldName, Class fieldType, Object firstVal, Object secondVal) { + this.fieldName = fieldName; + this.firstFieldType = fieldType; + this.secondFieldType = fieldType; + this.firstVal = firstVal; + this.secondVal = secondVal; + } + + public FieldInfo(String fieldName, Class firstFieldType, Class secondFieldType, Object firstVal, Object secondVal) { + this.fieldName = fieldName; + this.firstFieldType = firstFieldType; + this.secondFieldType = secondFieldType; + this.firstVal = firstVal; + this.secondVal = secondVal; + } + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public Class getFirstFieldType() { + return firstFieldType; + } + + public void setFirstFieldType(Class firstFieldType) { + this.firstFieldType = firstFieldType; + } + + public Object getFirstVal() { + return firstVal; + } + + public void setFirstVal(Object firstVal) { + this.firstVal = firstVal; + } + + public void setSecondFieldType(Class secondFieldType) { + this.secondFieldType = secondFieldType; + } + + public Class getSecondFieldType() { + return secondFieldType; + } + + public Object getSecondVal() { + return secondVal; + } + + public void setSecondVal(Object secondVal) { + this.secondVal = secondVal; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + FieldInfo fieldInfo = (FieldInfo) o; + return Objects.equals(fieldName, fieldInfo.fieldName) && + Objects.equals(firstFieldType, fieldInfo.firstFieldType) && + Objects.equals(secondFieldType, fieldInfo.secondFieldType) && + Objects.equals(firstVal, fieldInfo.firstVal) && + Objects.equals(secondVal, fieldInfo.secondVal); + } + + @Override + public int hashCode() { + return Objects.hash(fieldName, firstFieldType, secondFieldType, firstVal, secondVal); + } + + @Override + public String toString() { + return "[\"" + fieldName + "\":由\"" + firstVal + "\"修改为\"" + secondVal; + } +} diff --git a/src/com/engine/organization/entity/logview/bo/GetterBaseEquator.java b/src/com/engine/organization/entity/logview/bo/GetterBaseEquator.java new file mode 100644 index 00000000..a1274d16 --- /dev/null +++ b/src/com/engine/organization/entity/logview/bo/GetterBaseEquator.java @@ -0,0 +1,168 @@ +package com.engine.organization.entity.logview.bo; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 基于 getter 方法比对两个对象 + *

+ * 所有无参的 get 和 is 方法都认为是对象的属性 + *

+ * + * @author:dxfeng + * @createTime: 2022/07/06 + * @version: 1.0 + */ +public class GetterBaseEquator extends AbstractEquator { + private static final String GET = "get"; + private static final String IS = "is"; + private static final String GET_IS = "get|is"; + private static final String GET_CLASS = "getClass"; + private static final Map, Map> CACHE = new ConcurrentHashMap<>(); + + public GetterBaseEquator() { + } + + /** + * @param bothExistFieldOnly 是否只对比两个类都包含的字段 + */ + public GetterBaseEquator(boolean bothExistFieldOnly) { + super(bothExistFieldOnly); + } + + /** + * 指定包含或排除某些字段 + * + * @param includeFields 包含字段,若为 null 或空集,则不指定 + * @param excludeFields 排除字段,若为 null 或空集,则不指定 + */ + public GetterBaseEquator(List includeFields, List excludeFields) { + super(includeFields, excludeFields); + } + + /** + * 指定包含或排除某些字段 + * + * @param includeFields 包含字段,若为 null 或空集,则不指定 + * @param excludeFields 排除字段,若为 null 或空集,则不指定 + * @param bothExistFieldOnly 是否只对比两个类都包含的字段,默认为 true + */ + public GetterBaseEquator(List includeFields, List excludeFields, boolean bothExistFieldOnly) { + super(includeFields, excludeFields, bothExistFieldOnly); + } + + /** + * {@inheritDoc} + */ + @Override + public List getDiffFields(Object first, Object second) { + if (first == null && second == null) { + return Collections.emptyList(); + } + // 先尝试判断是否为普通数据类型 + if (isSimpleField(first, second)) { + return compareSimpleField(first, second); + } + Set allFieldNames; + // 获取所有字段 + Map firstGetters = getAllGetters(first); + Map secondGetters = getAllGetters(second); + if (first == null) { + allFieldNames = secondGetters.keySet(); + } else if (second == null) { + allFieldNames = firstGetters.keySet(); + } else { + allFieldNames = getAllFieldNames(firstGetters.keySet(), secondGetters.keySet()); + } + List diffFields = new LinkedList<>(); + for (String fieldName : allFieldNames) { + try { + Method firstGetterMethod = firstGetters.getOrDefault(fieldName, null); + Method secondGetterMethod = secondGetters.getOrDefault(fieldName, null); + Object firstVal = firstGetterMethod != null ? firstGetterMethod.invoke(first) : null; + Object secondVal = secondGetterMethod != null ? secondGetterMethod.invoke(second) : null; + FieldInfo fieldInfo = new FieldInfo(fieldName, getReturnType(firstGetterMethod), getReturnType(secondGetterMethod)); + fieldInfo.setFirstVal(firstVal); + fieldInfo.setSecondVal(secondVal); + if (!isFieldEquals(fieldInfo)) { + diffFields.add("[" + fieldName + "]:由" + firstVal + "修改为" + secondVal); + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("获取属性进行比对发生异常: " + fieldName, e); + } + } + return diffFields; + } + + private Class getReturnType(Method method) { + return method == null ? null : method.getReturnType(); + } + + /** + * 获取类中的所有 getter 方法 + * + * @return key -> fieldName, value -> getter + */ + private Map getAllGetters(Object obj) { + if (obj == null) { + return Collections.emptyMap(); + } + return CACHE.computeIfAbsent(obj.getClass(), k -> { + Class clazz = obj.getClass(); + Map getters = new LinkedHashMap<>(8); + while (clazz != Object.class) { + Method[] methods = clazz.getDeclaredMethods(); + for (Method m : methods) { + // getter 方法必须是 public 且没有参数的 + if (!Modifier.isPublic(m.getModifiers()) || m.getParameterTypes().length > 0) { + continue; + } + if (m.getReturnType() == Boolean.class || m.getReturnType() == boolean.class) { + // 如果返回值是 boolean 则兼容 isXxx 的写法 + if (m.getName().startsWith(IS)) { + String fieldName = uncapitalize(m.getName().substring(2)); + getters.put(fieldName, m); + continue; + } + } + // 以get开头但排除getClass()方法 + if (m.getName().startsWith(GET) && !GET_CLASS.equals(m.getName())) { + String fieldName = uncapitalize(m.getName().replaceFirst(GET_IS, "")); + getters.put(fieldName, m); + } + } + clazz = clazz.getSuperclass(); //得到父类,然后赋给自己 + } + return getters; + }); + } + + /** + * 来自commons-lang3包的StringUtils + *

+ * 用于使首字母小写 + */ + private String uncapitalize(final String str) { + int strLen; + if (str == null || (strLen = str.length()) == 0) { + return str; + } + final int firstCodepoint = str.codePointAt(0); + final int newCodePoint = Character.toLowerCase(firstCodepoint); + if (firstCodepoint == newCodePoint) { + return str; + } + final int[] newCodePoints = new int[strLen]; + int outOffset = 0; + newCodePoints[outOffset++] = newCodePoint; + for (int inOffset = Character.charCount(firstCodepoint); inOffset < strLen; ) { + final int codepoint = str.codePointAt(inOffset); + newCodePoints[outOffset++] = codepoint; + inOffset += Character.charCount(codepoint); + } + return new String(newCodePoints, 0, outOffset); + } +} diff --git a/src/com/engine/organization/entity/logview/vo/LogViewVO.java b/src/com/engine/organization/entity/logview/vo/LogViewVO.java index ade133d8..30ecef24 100644 --- a/src/com/engine/organization/entity/logview/vo/LogViewVO.java +++ b/src/com/engine/organization/entity/logview/vo/LogViewVO.java @@ -19,7 +19,7 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor @OrganizationTable(pageId = "caef4d3e-fc3d-11ec-a203-00e04c680716", - fields = "t.id, t.operator_name, t.create_time, t.operate_type, t.client_ip, t.operate_module_name,t.operate_desc,t.message", + fields = "t.id, t.operator_name, t.create_time, t.operate_type, t.client_ip, t.operate_module_name,t.operate_desc,t.message,t.value,t.params_str", fromSql = "FROM hr_log t ", primarykey = "id", tableType = WeaTableType.NONE @@ -38,13 +38,19 @@ public class LogViewVO { @OrganizationTableColumn(text = "操作描述", width = "16%", column = "operate_desc") private String operateDesc; + @OrganizationTableColumn(text = "对象", width = "16%", column = "value") + private String value; + @OrganizationTableColumn(text = "所属模块", width = "16%", column = "operate_module_name") private String operateModuleName; - @OrganizationTableColumn(text = "修改详情", width = "16%",column = "message") + @OrganizationTableColumn(text = "修改详情", width = "16%", column = "message") private String showDetail; @OrganizationTableColumn(text = "操作IP", width = "16%", column = "client_ip") private String clientIp; + @OrganizationTableColumn(text = "操作参数", width = "16%", column = "params_str") + private String paramsStr; + } diff --git a/src/com/engine/organization/enums/OperateTypeEnum.java b/src/com/engine/organization/enums/OperateTypeEnum.java index f4d4c4fa..1d2c8952 100644 --- a/src/com/engine/organization/enums/OperateTypeEnum.java +++ b/src/com/engine/organization/enums/OperateTypeEnum.java @@ -10,7 +10,10 @@ public enum OperateTypeEnum { ADD("1", "新增"), UPDATE("2", "更新"), - DELETE("4", "删除"); + DELETE("4", "删除"), + MOVE("5", "转移"), + MERGE("6", "合并"), + COPY("7", "复制"); private String value; diff --git a/src/com/engine/organization/mapper/job/JobMapper.java b/src/com/engine/organization/mapper/job/JobMapper.java index ca39a750..7a93dad0 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.java +++ b/src/com/engine/organization/mapper/job/JobMapper.java @@ -53,6 +53,8 @@ public interface JobMapper { */ JobPO getJobById(@Param("id") Long id); + List getJobsByIds(@Param("ids") Collection ids); + /** * 根据父ID查询元素 * diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml index 43688af8..5ed38b6e 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.xml +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -345,6 +345,16 @@ and parent_dept = #{parentDepartment} + and ifnull(parent_job,0) = diff --git a/src/com/engine/organization/mapper/post/PostInfoMapper.java b/src/com/engine/organization/mapper/post/PostInfoMapper.java index 8bb8b1d4..10a55536 100644 --- a/src/com/engine/organization/mapper/post/PostInfoMapper.java +++ b/src/com/engine/organization/mapper/post/PostInfoMapper.java @@ -76,4 +76,5 @@ public interface PostInfoMapper { int deleteByIds(@Param("ids") Collection ids); + List getPostInfosByIds(@Param("ids") Collection ids); } diff --git a/src/com/engine/organization/mapper/post/PostInfoMapper.xml b/src/com/engine/organization/mapper/post/PostInfoMapper.xml index 72c8d90b..7781a8ea 100644 --- a/src/com/engine/organization/mapper/post/PostInfoMapper.xml +++ b/src/com/engine/organization/mapper/post/PostInfoMapper.xml @@ -65,6 +65,15 @@ from jcl_org_post_info t where post_info_name = #{postInfoName} and post_id = #{postId} AND delete_type = 0 + update jcl_org_post_info diff --git a/src/com/engine/organization/mapper/post/PostMapper.java b/src/com/engine/organization/mapper/post/PostMapper.java index 22e104d1..ad3bd827 100644 --- a/src/com/engine/organization/mapper/post/PostMapper.java +++ b/src/com/engine/organization/mapper/post/PostMapper.java @@ -67,4 +67,5 @@ public interface PostMapper { */ int deleteByIds(@Param("ids") Collection ids); + List getPostsByIds(@Param("ids") Collection ids); } diff --git a/src/com/engine/organization/mapper/post/PostMapper.xml b/src/com/engine/organization/mapper/post/PostMapper.xml index 0b5aa607..2ab3c223 100644 --- a/src/com/engine/organization/mapper/post/PostMapper.xml +++ b/src/com/engine/organization/mapper/post/PostMapper.xml @@ -49,13 +49,25 @@ + update jcl_org_post @@ -114,7 +126,6 @@ - UPDATE jcl_org_post SET delete_type = 1 diff --git a/src/com/engine/organization/mapper/scheme/GradeMapper.java b/src/com/engine/organization/mapper/scheme/GradeMapper.java index eb1fa65a..562aaee5 100644 --- a/src/com/engine/organization/mapper/scheme/GradeMapper.java +++ b/src/com/engine/organization/mapper/scheme/GradeMapper.java @@ -79,4 +79,6 @@ public interface GradeMapper { int getCountByTag(@Param("tag") int tag); List listUsedId(); + + List getGradeNameByIds(@Param("ids") Collection ids); } diff --git a/src/com/engine/organization/mapper/scheme/GradeMapper.xml b/src/com/engine/organization/mapper/scheme/GradeMapper.xml index 00ef24cf..46b23399 100644 --- a/src/com/engine/organization/mapper/scheme/GradeMapper.xml +++ b/src/com/engine/organization/mapper/scheme/GradeMapper.xml @@ -59,6 +59,13 @@ from JCL_ORG_JOBDT where delete_type = 0 + update jcl_org_grade diff --git a/src/com/engine/organization/mapper/scheme/LevelMapper.java b/src/com/engine/organization/mapper/scheme/LevelMapper.java index e0bf5d69..eaa33e9b 100644 --- a/src/com/engine/organization/mapper/scheme/LevelMapper.java +++ b/src/com/engine/organization/mapper/scheme/LevelMapper.java @@ -96,4 +96,6 @@ public interface LevelMapper { * @return */ ArrayList getTreeData(); + + List getLevelsByIds(@Param("ids")Collection ids); } diff --git a/src/com/engine/organization/mapper/scheme/LevelMapper.xml b/src/com/engine/organization/mapper/scheme/LevelMapper.xml index 73e115a0..f9b961c7 100644 --- a/src/com/engine/organization/mapper/scheme/LevelMapper.xml +++ b/src/com/engine/organization/mapper/scheme/LevelMapper.xml @@ -80,6 +80,15 @@ from jcl_org_level where delete_type = '0' + update jcl_org_level diff --git a/src/com/engine/organization/mapper/scheme/SchemeMapper.java b/src/com/engine/organization/mapper/scheme/SchemeMapper.java index ea41da19..5c710083 100644 --- a/src/com/engine/organization/mapper/scheme/SchemeMapper.java +++ b/src/com/engine/organization/mapper/scheme/SchemeMapper.java @@ -87,4 +87,6 @@ public interface SchemeMapper { * @return */ ArrayList getTreeData(); + + List getSchemesByIds(@Param("ids")Collection ids); } diff --git a/src/com/engine/organization/mapper/scheme/SchemeMapper.xml b/src/com/engine/organization/mapper/scheme/SchemeMapper.xml index daff34ff..e7c8a485 100644 --- a/src/com/engine/organization/mapper/scheme/SchemeMapper.xml +++ b/src/com/engine/organization/mapper/scheme/SchemeMapper.xml @@ -78,6 +78,16 @@ from jcl_org_scheme where delete_type = '0' + diff --git a/src/com/engine/organization/mapper/sequence/SequenceMapper.java b/src/com/engine/organization/mapper/sequence/SequenceMapper.java index 9d53fd71..ca78376c 100644 --- a/src/com/engine/organization/mapper/sequence/SequenceMapper.java +++ b/src/com/engine/organization/mapper/sequence/SequenceMapper.java @@ -85,4 +85,5 @@ public interface SequenceMapper { */ int getCountByTag(@Param("tag") int tag); + List getSequencesByIds(Collection ids); } diff --git a/src/com/engine/organization/mapper/sequence/SequenceMapper.xml b/src/com/engine/organization/mapper/sequence/SequenceMapper.xml index a764662f..4192895f 100644 --- a/src/com/engine/organization/mapper/sequence/SequenceMapper.xml +++ b/src/com/engine/organization/mapper/sequence/SequenceMapper.xml @@ -64,6 +64,16 @@ select sequence_id from JCL_ORG_JOB + update jcl_org_sequence diff --git a/src/com/engine/organization/mapper/sislog/SISLogMapper.xml b/src/com/engine/organization/mapper/sislog/SISLogMapper.xml index 06ee20e6..5c376b9f 100644 --- a/src/com/engine/organization/mapper/sislog/SISLogMapper.xml +++ b/src/com/engine/organization/mapper/sislog/SISLogMapper.xml @@ -50,7 +50,8 @@ delete_type, operate_module_name, operate_module, - message + message, + value #{operateDesc}, @@ -65,7 +66,8 @@ #{deleteType}, #{operateModuleName}, #{operateModule}, - #{message} + #{message}, + #{value} diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.java b/src/com/engine/organization/mapper/staff/StaffMapper.java index a2ffa394..2293a0b7 100644 --- a/src/com/engine/organization/mapper/staff/StaffMapper.java +++ b/src/com/engine/organization/mapper/staff/StaffMapper.java @@ -63,4 +63,6 @@ public interface StaffMapper { * @return */ List listUsedId(); + + List getStaffsByIds(@Param("ids") Collection ids); } diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.xml b/src/com/engine/organization/mapper/staff/StaffMapper.xml index af99fd66..911a6938 100644 --- a/src/com/engine/organization/mapper/staff/StaffMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffMapper.xml @@ -63,6 +63,16 @@ and job_id = #{jobId} + update jcl_org_staff diff --git a/src/com/engine/organization/mapper/staff/StaffPlanMapper.java b/src/com/engine/organization/mapper/staff/StaffPlanMapper.java index 2317f4d5..863706c6 100644 --- a/src/com/engine/organization/mapper/staff/StaffPlanMapper.java +++ b/src/com/engine/organization/mapper/staff/StaffPlanMapper.java @@ -72,4 +72,6 @@ public interface StaffPlanMapper { * @return */ List listUsedId(); + + List getStaffPlansByIds(@Param("ids") Collection ids); } diff --git a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml index 8b58e308..ea85b493 100644 --- a/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffPlanMapper.xml @@ -64,6 +64,16 @@ from JCL_ORG_STAFF where delete_type = 0 + update jcl_org_staffplan diff --git a/src/com/engine/organization/transmethod/LogViewTransMethod.java b/src/com/engine/organization/transmethod/LogViewTransMethod.java index 0a89ae48..a730fb5f 100644 --- a/src/com/engine/organization/transmethod/LogViewTransMethod.java +++ b/src/com/engine/organization/transmethod/LogViewTransMethod.java @@ -22,6 +22,15 @@ public class LogViewTransMethod { case "4": operateType = OperateTypeEnum.DELETE.getLabel(); break; + case "5": + operateType = OperateTypeEnum.MOVE.getLabel(); + break; + case "6": + operateType = OperateTypeEnum.MERGE.getLabel(); + break; + case "7": + operateType = OperateTypeEnum.COPY.getLabel(); + break; default: break; } diff --git a/src/com/engine/organization/util/LogAspect.java b/src/com/engine/organization/util/LogAspect.java index 3a02ec1a..fbfb4eee 100644 --- a/src/com/engine/organization/util/LogAspect.java +++ b/src/com/engine/organization/util/LogAspect.java @@ -9,8 +9,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Method; -import java.lang.reflect.Parameter; -import java.util.Arrays; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -46,7 +44,6 @@ public class LogAspect { boolean f = method.isAnnotationPresent(Log.class); if (f) { Log annotation = method.getAnnotation(Log.class); - Parameter[] parameters = method.getParameters(); String value = annotation.operateType().getValue(); String operateDesc = annotation.operateDesc(); String operateModuleName = annotation.operateModule().getName(); @@ -54,7 +51,6 @@ public class LogAspect { loggerContext.setOperateDesc(operateDesc); loggerContext.setCreateTime(new Date()); loggerContext.setOperateType(value); - loggerContext.setParamsStr(Arrays.toString(parameters)); loggerContext.setMethodName(method.getName()); loggerContext.setClassName(clazz.getName()); loggerContext.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); diff --git a/src/com/engine/organization/util/OrganizationWrapper.java b/src/com/engine/organization/util/OrganizationWrapper.java index 97849ef9..35bc46d2 100644 --- a/src/com/engine/organization/util/OrganizationWrapper.java +++ b/src/com/engine/organization/util/OrganizationWrapper.java @@ -1,9 +1,13 @@ package com.engine.organization.util; +import com.alibaba.fastjson.JSON; import com.engine.core.impl.Service; import com.engine.organization.entity.LoggerContext; +import com.engine.organization.entity.logview.bo.FieldBaseEquator; +import org.apache.commons.collections.CollectionUtils; import java.lang.reflect.Method; +import java.util.List; /** * @author:dxfeng @@ -12,19 +16,50 @@ import java.lang.reflect.Method; */ public class OrganizationWrapper extends Service { - /** * 记录操作日志 * - * @param clazz - * @param message + * @param clazz 调用类 + * @param value 对象名称 + * @param params 传参 + * @param before 原始对象 + * @param after 更新后对象 */ - public void writeOperateLog(Class clazz, - String message) { + public void writeOperateLog(Class clazz, String value, String params, + Object before, Object after) { Method method = clazz.getEnclosingMethod(); - LoggerContext loggerContext = LoggerContext.builder().operatorId(user.getUID()).clientIp(user.getLoginip()).operatorName(user.getLastname()).message(message).build(); - LogAspect logAspect = new LogAspect(clazz, method, loggerContext); - logAspect.start(); + LoggerContext loggerContext; + if (null != before) { + if (null != after) { + FieldBaseEquator fieldBaseEquator = new FieldBaseEquator(); + List diffFields = fieldBaseEquator.getDiffFields(before, after); + if (CollectionUtils.isEmpty(diffFields)) { + return; + } + StringBuilder message = new StringBuilder(); + for (int i = 0; i < diffFields.size(); i++) { + message.append(i + 1).append(".").append(diffFields.get(i)).append("
"); + } + loggerContext = LoggerContext.builder().operatorId(user.getUID()).value(value).clientIp(user.getLoginip()).paramsStr(params).operatorName(user.getLastname()).message(message.toString()).build(); + + } else { + loggerContext = LoggerContext.builder().operatorId(user.getUID()).value(value).clientIp(user.getLoginip()).paramsStr(params).operatorName(user.getLastname()).message(JSON.toJSONString(before)).build(); + } + LogAspect logAspect = new LogAspect(clazz, method, loggerContext); + logAspect.start(); + } + } + + + /** + * @param clazz 调用类 + * @param value 对象名称 + * @param params 传参 + * @param message 日志描述信息 + */ + public void writeOperateLog(Class clazz, String value, String params, + String message) { + writeOperateLog(clazz, value, params, message, null); } diff --git a/src/com/engine/organization/web/JobController.java b/src/com/engine/organization/web/JobController.java index 774e82d6..9e93de61 100644 --- a/src/com/engine/organization/web/JobController.java +++ b/src/com/engine/organization/web/JobController.java @@ -184,7 +184,7 @@ public class JobController { public ReturnResult copyJobItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody JobCopyParam param) { try { User user = HrmUserVarify.getUser(request, response); - return ReturnResult.successed(getJobWrapper(user).copyJobItem(param.getIds(), param.getDepartment())); + return ReturnResult.successed(getJobWrapper(user).copyJobItem(param)); } catch (Exception e) { return ReturnResult.exceptionHandle(e); } diff --git a/src/com/engine/organization/wrapper/CompWrapper.java b/src/com/engine/organization/wrapper/CompWrapper.java index 6d48c958..2abff738 100644 --- a/src/com/engine/organization/wrapper/CompWrapper.java +++ b/src/com/engine/organization/wrapper/CompWrapper.java @@ -5,12 +5,15 @@ import com.api.browser.bean.SearchConditionGroup; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.company.param.CompSearchParam; +import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.department.param.DepartmentMoveParam; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.service.CompService; import com.engine.organization.service.impl.CompServiceImpl; import com.engine.organization.util.OrganizationWrapper; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; @@ -28,6 +31,10 @@ public class CompWrapper extends OrganizationWrapper { return ServiceUtil.getService(CompServiceImpl.class, user); } + private CompMapper getCompMapper() { + return MapperProxyFactory.getProxy(CompMapper.class); + } + /** * 列表 * @@ -49,7 +56,7 @@ public class CompWrapper extends OrganizationWrapper { public Long saveBaseComp(Map params) { Long companyId = getCompService(user).saveBaseComp(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), params.get("comp_name").toString(), JSON.toJSONString(params), "新增分部"); return companyId; } @@ -60,9 +67,10 @@ public class CompWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "更新分部禁用标识", operateModule = LogModuleNameEnum.COMPANY) public int updateForbiddenTagById(CompSearchParam params) { + CompPO compPO = getCompMapper().listById(params.getId()); int updateForbiddenTagById = getCompService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), compPO.getCompName(), JSON.toJSONString(params), compPO, getCompMapper().listById(params.getId())); return updateForbiddenTagById; } @@ -74,9 +82,11 @@ public class CompWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "更新分部信息", operateModule = LogModuleNameEnum.COMPANY) public Long updateComp(Map params) { + long id = Long.parseLong(params.get("id").toString()); + CompPO compPO = getCompMapper().listById(id); Long companyId = getCompService(user).updateComp(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), compPO.getCompName(), JSON.toJSONString(params), compPO, getCompMapper().listById(id)); return companyId; } @@ -87,9 +97,12 @@ public class CompWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.DELETE, operateDesc = "删除分部信息", operateModule = LogModuleNameEnum.COMPANY) public int deleteByIds(Collection ids) { + List compsByIds = getCompMapper().getCompsByIds(ids); int deleteByIds = getCompService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(ids)); + for (CompPO compsById : compsByIds) { + writeOperateLog(new Object() { + }.getClass(), compsById.getCompName(), JSON.toJSONString(ids), "删除分部信息"); + } return deleteByIds; } @@ -99,11 +112,12 @@ public class CompWrapper extends OrganizationWrapper { * @param moveParam * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "转移分部", operateModule = LogModuleNameEnum.COMPANY) + @Log(operateType = OperateTypeEnum.MOVE, operateDesc = "转移分部", operateModule = LogModuleNameEnum.COMPANY) public int moveCompany(DepartmentMoveParam moveParam) { + CompPO compPO = getCompMapper().listById(moveParam.getId()); int moveCompany = getCompService(user).moveCompany(moveParam); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(moveParam)); + }.getClass(), compPO.getCompName(), JSON.toJSONString(moveParam), compPO, getCompMapper().listById(moveParam.getId())); return moveCompany; } diff --git a/src/com/engine/organization/wrapper/DemoWrapper.java b/src/com/engine/organization/wrapper/DemoWrapper.java index 39e4752f..02116e50 100644 --- a/src/com/engine/organization/wrapper/DemoWrapper.java +++ b/src/com/engine/organization/wrapper/DemoWrapper.java @@ -27,7 +27,7 @@ public class DemoWrapper extends OrganizationWrapper { @Log(operateType = OperateTypeEnum.DELETE, operateDesc = "operateDesc") public ReturnResult testDemo(String name) { List list = getDemoService(user).list(name); - writeOperateLog(new Object(){}.getClass(), "记录testDemo操作日志"); + //writeOperateLog(new Object(){}.getClass(), "记录testDemo操作日志"); return ReturnResult.successed(list); } } diff --git a/src/com/engine/organization/wrapper/DepartmentWrapper.java b/src/com/engine/organization/wrapper/DepartmentWrapper.java index 208429c0..904a5a09 100644 --- a/src/com/engine/organization/wrapper/DepartmentWrapper.java +++ b/src/com/engine/organization/wrapper/DepartmentWrapper.java @@ -4,15 +4,19 @@ import com.alibaba.fastjson.JSON; import com.api.browser.bean.SearchConditionGroup; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; +import com.engine.organization.entity.DeleteParam; import com.engine.organization.entity.department.param.*; +import com.engine.organization.entity.department.po.DepartmentPO; import com.engine.organization.entity.department.vo.SingleDeptTreeVO; import com.engine.organization.entity.job.vo.SingleJobTreeVO; import com.engine.organization.entity.searchtree.SearchTreeParams; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.service.DepartmentService; import com.engine.organization.service.impl.DepartmentServiceImpl; import com.engine.organization.util.OrganizationWrapper; +import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.page.PageInfo; import com.engine.organization.util.response.ReturnResult; import weaver.hrm.User; @@ -33,6 +37,10 @@ public class DepartmentWrapper extends OrganizationWrapper { return ServiceUtil.getService(DepartmentServiceImpl.class, user); } + private DepartmentMapper getDepartmentMapper() { + return MapperProxyFactory.getProxy(DepartmentMapper.class); + } + public ReturnResult getDeptListByPid(QuerySingleDeptListParam param) { PageInfo singleDeptTreeVOS = getDepartmentService(user).getDeptListByPid(param); return ReturnResult.successed(singleDeptTreeVOS); @@ -87,7 +95,7 @@ public class DepartmentWrapper extends OrganizationWrapper { public Long saveBaseForm(Map params) { Long departmentId = getDepartmentService(user).saveBaseForm(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), params.get("dept_name").toString(), JSON.toJSONString(params), "新增部门"); return departmentId; } @@ -99,9 +107,10 @@ public class DepartmentWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "更新部门禁用标记", operateModule = LogModuleNameEnum.DEPARTMENT) public int updateForbiddenTagById(DeptSearchParam params) { + DepartmentPO deptById = getDepartmentMapper().getDeptById(params.getId()); int updateForbiddenTagById = getDepartmentService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), deptById.getDeptName(), JSON.toJSONString(params), deptById, getDepartmentMapper().getDeptById(params.getId())); return updateForbiddenTagById; } @@ -111,11 +120,13 @@ public class DepartmentWrapper extends OrganizationWrapper { * @param params * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "更新部门信息", operateModule = LogModuleNameEnum.DEPARTMENT) + @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "更新部门", operateModule = LogModuleNameEnum.DEPARTMENT) public Long updateForm(Map params) { + long id = Long.parseLong(params.get("id").toString()); + DepartmentPO deptById = getDepartmentMapper().getDeptById(id); Long departmentId = getDepartmentService(user).updateForm(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), deptById.getDeptName(), JSON.toJSONString(params), deptById, getDepartmentMapper().getDeptById(id)); return departmentId; } @@ -126,9 +137,12 @@ public class DepartmentWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.DELETE, operateDesc = "删除部门", operateModule = LogModuleNameEnum.DEPARTMENT) public int deleteByIds(Collection ids) { + List departmentPOS = getDepartmentMapper().getDeptsByIds(ids); int deleteByIds = getDepartmentService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(ids)); + for (DepartmentPO departmentPO : departmentPOS) { + writeOperateLog(new Object() { + }.getClass(), departmentPO.getDeptName(), JSON.toJSONString(ids), "删除部门"); + } return deleteByIds; } @@ -176,11 +190,14 @@ public class DepartmentWrapper extends OrganizationWrapper { * @param copyParam * @return */ - @Log(operateType = OperateTypeEnum.ADD, operateDesc = "复制部门", operateModule = LogModuleNameEnum.DEPARTMENT) + @Log(operateType = OperateTypeEnum.COPY, operateDesc = "复制部门", operateModule = LogModuleNameEnum.DEPARTMENT) public int copyDepartment(DeptCopyParam copyParam) { + List departmentPOS = getDepartmentMapper().getDeptsByIds(DeleteParam.builder().ids(copyParam.getIds()).build().getIds()); int copyDepartment = getDepartmentService(user).copyDepartment(copyParam); - writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(copyParam)); + for (DepartmentPO departmentPO : departmentPOS) { + writeOperateLog(new Object() { + }.getClass(), departmentPO.getDeptName(), JSON.toJSONString(copyParam), "复制部门[" + departmentPO.getDeptName() + "]"); + } return copyDepartment; } @@ -200,11 +217,12 @@ public class DepartmentWrapper extends OrganizationWrapper { * @param mergeParam * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "合并部门", operateModule = LogModuleNameEnum.DEPARTMENT) + @Log(operateType = OperateTypeEnum.MERGE, operateDesc = "合并部门", operateModule = LogModuleNameEnum.DEPARTMENT) public int mergeDepartment(DepartmentMergeParam mergeParam) { + DepartmentPO departmentPO = getDepartmentMapper().getDeptById(mergeParam.getId()); int mergeDepartment = getDepartmentService(user).mergeDepartment(mergeParam); writeOperateLog(new Object() { - }.getClass(), "合并部门【" + JSON.toJSONString(mergeParam) + "】"); + }.getClass(), departmentPO.getDeptName(), JSON.toJSONString(mergeParam), departmentPO, getDepartmentMapper().getDeptById(departmentPO.getId())); return mergeDepartment; } @@ -223,11 +241,12 @@ public class DepartmentWrapper extends OrganizationWrapper { * @param moveParam * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateDesc = "转移部门", operateModule = LogModuleNameEnum.DEPARTMENT) + @Log(operateType = OperateTypeEnum.MOVE, operateDesc = "转移部门", operateModule = LogModuleNameEnum.DEPARTMENT) public int moveDepartment(DepartmentMoveParam moveParam) { + DepartmentPO departmentPO = getDepartmentMapper().getDeptById(moveParam.getId()); int moveDepartment = getDepartmentService(user).moveDepartment(moveParam); writeOperateLog(new Object() { - }.getClass(), "转移部门【" + JSON.toJSONString(moveParam) + "】"); + }.getClass(), departmentPO.getDeptName(), JSON.toJSONString(moveParam), departmentPO, getDepartmentMapper().getDeptById(departmentPO.getId())); return moveDepartment; } } diff --git a/src/com/engine/organization/wrapper/GradeWrapper.java b/src/com/engine/organization/wrapper/GradeWrapper.java index 167a0cca..0cf8583b 100644 --- a/src/com/engine/organization/wrapper/GradeWrapper.java +++ b/src/com/engine/organization/wrapper/GradeWrapper.java @@ -5,15 +5,18 @@ import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.scheme.param.GradeSearchParam; +import com.engine.organization.entity.scheme.po.GradePO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.scheme.GradeMapper; import com.engine.organization.service.GradeService; import com.engine.organization.service.impl.GradeServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -29,6 +32,10 @@ public class GradeWrapper extends OrganizationWrapper { return ServiceUtil.getService(GradeServiceImpl.class, user); } + private GradeMapper getGradeMapper() { + return MapperProxyFactory.getProxy(GradeMapper.class); + } + /** * 职级列表 @@ -46,11 +53,11 @@ public class GradeWrapper extends OrganizationWrapper { * @param param * @return */ - @Log(operateType = OperateTypeEnum.ADD, operateModule = LogModuleNameEnum.GRADE, operateDesc = "新增职等") + @Log(operateType = OperateTypeEnum.ADD, operateModule = LogModuleNameEnum.GRADE, operateDesc = "新增职级") public int saveGrade(GradeSearchParam param) { int saveGrade = getGradeService(user).saveGrade(param); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(param)); + }.getClass(), param.getGradeName(), JSON.toJSONString(param), "新增职级"); return saveGrade; } @@ -62,9 +69,10 @@ public class GradeWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.GRADE, operateDesc = "更新职级") public int updateGrade(GradeSearchParam param) { + GradePO original = getGradeMapper().getGradeByID(param.getId()); int updateGrade = getGradeService(user).updateGrade(param); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(param)); + }.getClass(), original.getGradeName(), JSON.toJSONString(param), original, getGradeMapper().getGradeByID(param.getId())); return updateGrade; } @@ -75,9 +83,10 @@ public class GradeWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.GRADE, operateDesc = "更新职级禁用标识") public int updateForbiddenTagById(GradeSearchParam params) { + GradePO original = getGradeMapper().getGradeByID(params.getId()); int updateForbiddenTagById = getGradeService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(params)); + }.getClass(), original.getGradeName(), JSON.toJSONString(params), original, getGradeMapper().getGradeByID(params.getId())); return updateForbiddenTagById; } @@ -86,11 +95,14 @@ public class GradeWrapper extends OrganizationWrapper { * * @param ids */ - @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.GRADE, operateDesc = "删除职等") - public int deleteByIds(@Param("ids") Collection ids) { + @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.GRADE, operateDesc = "删除职级") + public int deleteByIds(Collection ids) { + List gradeNameByIds = getGradeMapper().getGradeNameByIds(ids); int deleteByIds = getGradeService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), JSON.toJSONString(ids)); + for (String gradeName : gradeNameByIds) { + writeOperateLog(new Object() { + }.getClass(), gradeName, JSON.toJSONString(ids), "删除职级"); + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/GroupWrapper.java b/src/com/engine/organization/wrapper/GroupWrapper.java index c40660d2..4296b797 100644 --- a/src/com/engine/organization/wrapper/GroupWrapper.java +++ b/src/com/engine/organization/wrapper/GroupWrapper.java @@ -1,10 +1,6 @@ package com.engine.organization.wrapper; -import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; -import com.engine.organization.annotation.Log; -import com.engine.organization.enums.LogModuleNameEnum; -import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.service.GroupService; import com.engine.organization.service.impl.GroupServiceImpl; import com.engine.organization.util.OrganizationWrapper; @@ -40,11 +36,8 @@ public class GroupWrapper extends OrganizationWrapper { * @param params * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.GROUP, operateDesc = "更新集团") public boolean updateGroup(Map params) { boolean updateGroup = getGroupService(user).updateGroup(params); - writeOperateLog(new Object() { - }.getClass(), "更新集团【" + JSON.toJSONString(params) + "】"); return updateGroup; } diff --git a/src/com/engine/organization/wrapper/HrmResourceWrapper.java b/src/com/engine/organization/wrapper/HrmResourceWrapper.java index 8ed0e4dd..32c35df8 100644 --- a/src/com/engine/organization/wrapper/HrmResourceWrapper.java +++ b/src/com/engine/organization/wrapper/HrmResourceWrapper.java @@ -1,12 +1,8 @@ package com.engine.organization.wrapper; -import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; -import com.engine.organization.annotation.Log; import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; import com.engine.organization.entity.searchtree.SearchTreeParams; -import com.engine.organization.enums.LogModuleNameEnum; -import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.service.HrmResourceService; import com.engine.organization.service.impl.HrmResourceServiceImpl; import com.engine.organization.util.OrganizationWrapper; @@ -37,11 +33,8 @@ public class HrmResourceWrapper extends OrganizationWrapper { return getHrmResourceService(user).getSaveForm(); } - @Log(operateType = OperateTypeEnum.ADD, operateModule = LogModuleNameEnum.RESOURCE, operateDesc = "新增人员") public Long saveBaseForm(Map params) { Long resourceId = getHrmResourceService(user).saveBaseForm(params); - writeOperateLog(new Object() { - }.getClass(), "新增人员【" + JSON.toJSONString(params) + "】"); return resourceId; } @@ -49,11 +42,8 @@ public class HrmResourceWrapper extends OrganizationWrapper { return getHrmResourceService(user).getBaseForm(params); } - @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.RESOURCE, operateDesc = "更新人员信息") public int updateForm(Map params) { int updateForm = getHrmResourceService(user).updateForm(params); - writeOperateLog(new Object() { - }.getClass(), "更新人员信息【" + JSON.toJSONString(params) + "】"); return updateForm; } diff --git a/src/com/engine/organization/wrapper/JobWrapper.java b/src/com/engine/organization/wrapper/JobWrapper.java index 6efff744..9262b54a 100644 --- a/src/com/engine/organization/wrapper/JobWrapper.java +++ b/src/com/engine/organization/wrapper/JobWrapper.java @@ -5,15 +5,20 @@ import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; +import com.engine.organization.entity.DeleteParam; +import com.engine.organization.entity.job.param.JobCopyParam; import com.engine.organization.entity.job.param.JobMergeParam; import com.engine.organization.entity.job.param.JobSearchParam; +import com.engine.organization.entity.job.po.JobPO; import com.engine.organization.entity.searchtree.SearchTreeParams; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.service.JobService; import com.engine.organization.service.impl.JobServiceImpl; import com.engine.organization.util.OrganizationFormItemUtil; import com.engine.organization.util.OrganizationWrapper; +import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.response.ReturnResult; import weaver.hrm.User; @@ -33,6 +38,10 @@ public class JobWrapper extends OrganizationWrapper { return ServiceUtil.getService(JobServiceImpl.class, user); } + private JobMapper getJobMapper() { + return MapperProxyFactory.getProxy(JobMapper.class); + } + /** * 左侧树 * @@ -101,7 +110,7 @@ public class JobWrapper extends OrganizationWrapper { public Long saveBaseForm(Map params) { Long jobId = getJobService(user).saveBaseForm(params); writeOperateLog(new Object() { - }.getClass(), "新增岗位【" + JSON.toJSONString(params) + "】"); + }.getClass(), params.get("job_name").toString(), JSON.toJSONString(params), "新增岗位"); return jobId; } @@ -111,26 +120,30 @@ public class JobWrapper extends OrganizationWrapper { * @param params * @return */ - @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.JOB, operateDesc = "更新岗位信息") + @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.JOB, operateDesc = "更新岗位") public Long updateForm(Map params) { + long id = Long.parseLong(params.get("id").toString()); + JobPO jobById = getJobMapper().getJobById(id); Long jobId = getJobService(user).updateForm(params); writeOperateLog(new Object() { - }.getClass(), "更新岗位信息【" + JSON.toJSONString(params) + "】"); + }.getClass(), jobById.getJobName(), JSON.toJSONString(params), jobById, getJobMapper().getJobById(id)); return jobId; } /** * 复制岗位到指定部门 * - * @param ids - * @param department + * @param param * @return */ - @Log(operateType = OperateTypeEnum.ADD, operateModule = LogModuleNameEnum.JOB, operateDesc = "复制岗位到部门") - public int copyJobItem(String ids, String department) { - int copyJobItem = getJobService(user).copyJobItem(ids, department); - writeOperateLog(new Object() { - }.getClass(), "复制岗位到部门,岗位ID【" + ids + "】,部门ID【" + department + "】"); + @Log(operateType = OperateTypeEnum.COPY, operateModule = LogModuleNameEnum.JOB, operateDesc = "复制岗位") + public int copyJobItem(JobCopyParam param) { + List jobPOS = getJobMapper().getJobsByIds(DeleteParam.builder().ids(param.getIds()).build().getIds()); + int copyJobItem = getJobService(user).copyJobItem(param.getIds(), param.getDepartment()); + for (JobPO jobPO : jobPOS) { + writeOperateLog(new Object() { + }.getClass(), jobPO.getJobName(), JSON.toJSONString(param), "复制岗位[" + jobPO.getJobName() + "]"); + } return copyJobItem; } @@ -142,9 +155,10 @@ public class JobWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.JOB, operateDesc = "更新岗位禁用标识") public int updateForbiddenTagById(JobSearchParam params) { + JobPO jobById = getJobMapper().getJobById(params.getId()); int updateForbiddenTagById = getJobService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), "更新岗位禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), jobById.getJobNo(), JSON.toJSONString(params), jobById, getJobMapper().getJobById(params.getId())); return updateForbiddenTagById; } @@ -154,11 +168,14 @@ public class JobWrapper extends OrganizationWrapper { * @param ids * @return */ - @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.JOB, operateDesc = "删除岗位信息") + @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.JOB, operateDesc = "删除岗位") public int deleteByIds(Collection ids) { + List jobPOS = getJobMapper().getJobsByIds(ids); int deleteByIds = getJobService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除岗位信息【" + JSON.toJSONString(ids) + "】"); + for (JobPO jobPO : jobPOS) { + writeOperateLog(new Object() { + }.getClass(), jobPO.getJobName(), JSON.toJSONString(ids), "删除岗位"); + } return deleteByIds; } @@ -193,11 +210,13 @@ public class JobWrapper extends OrganizationWrapper { return getJobService(user).getMergeForm(); } - @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.JOB, operateDesc = "合并岗位") + @Log(operateType = OperateTypeEnum.MERGE, operateModule = LogModuleNameEnum.JOB, operateDesc = "合并岗位") public int mergeJob(JobMergeParam mergeParam) { + JobPO jobById = getJobMapper().getJobById(mergeParam.getId()); int mergeJob = getJobService(user).mergeJob(mergeParam); writeOperateLog(new Object() { - }.getClass(), "合并岗位【" + JSON.toJSONString(mergeParam) + "】"); + }.getClass(), jobById.getJobNo(), JSON.toJSONString(mergeParam), jobById, getJobMapper().getJobById(mergeParam.getId())); + return mergeJob; } } diff --git a/src/com/engine/organization/wrapper/LevelWrapper.java b/src/com/engine/organization/wrapper/LevelWrapper.java index a75352ce..c3160208 100644 --- a/src/com/engine/organization/wrapper/LevelWrapper.java +++ b/src/com/engine/organization/wrapper/LevelWrapper.java @@ -5,15 +5,18 @@ import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.TreeData; import com.engine.organization.entity.scheme.param.LevelSearchParam; +import com.engine.organization.entity.scheme.po.LevelPO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.scheme.LevelMapper; import com.engine.organization.service.LevelService; import com.engine.organization.service.impl.LevelServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -27,6 +30,10 @@ public class LevelWrapper extends OrganizationWrapper { return ServiceUtil.getService(LevelServiceImpl.class, user); } + private LevelMapper getLevelMapper() { + return MapperProxyFactory.getProxy(LevelMapper.class); + } + /** * 职等列表 * @@ -47,7 +54,7 @@ public class LevelWrapper extends OrganizationWrapper { public int saveLevel(LevelSearchParam param) { int saveLevel = getLevelService(user).saveLevel(param); writeOperateLog(new Object() { - }.getClass(), "新增职等【" + JSON.toJSONString(param) + "】"); + }.getClass(), param.getLevelName(), JSON.toJSONString(param), "新增职等"); return saveLevel; } @@ -59,9 +66,10 @@ public class LevelWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.LEVEL, operateDesc = "更新职等") public int updateLevel(LevelSearchParam param) { + LevelPO levelByID = getLevelMapper().getLevelByID(param.getId()); int updateLevel = getLevelService(user).updateLevel(param); writeOperateLog(new Object() { - }.getClass(), "更新职等【" + JSON.toJSONString(param) + "】"); + }.getClass(), levelByID.getLevelName(), JSON.toJSONString(param), levelByID, getLevelMapper().getLevelByID(param.getId())); return updateLevel; } @@ -72,9 +80,10 @@ public class LevelWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.LEVEL, operateDesc = "更新职等禁用标识") public int updateForbiddenTagById(LevelSearchParam params) { + LevelPO levelByID = getLevelMapper().getLevelByID(params.getId()); int updateForbiddenTagById = getLevelService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), "更新职等禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), levelByID.getLevelName(), JSON.toJSONString(params), levelByID, getLevelMapper().getLevelByID(params.getId())); return updateForbiddenTagById; } @@ -84,10 +93,13 @@ public class LevelWrapper extends OrganizationWrapper { * @param ids */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.LEVEL, operateDesc = "删除职等") - public int deleteByIds(@Param("ids") Collection ids) { + public int deleteByIds(Collection ids) { + List levelPOS = getLevelMapper().getLevelsByIds(ids); int deleteByIds = getLevelService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除职等【" + JSON.toJSONString(ids) + "】"); + for (LevelPO levelPO : levelPOS) { + writeOperateLog(new Object() { + }.getClass(), levelPO.getLevelName(), JSON.toJSONString(ids), "删除职等"); + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/PostInfoWrapper.java b/src/com/engine/organization/wrapper/PostInfoWrapper.java index 49bcbd44..7b671a3c 100644 --- a/src/com/engine/organization/wrapper/PostInfoWrapper.java +++ b/src/com/engine/organization/wrapper/PostInfoWrapper.java @@ -4,15 +4,18 @@ import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.postion.param.PostInfoSearchParam; +import com.engine.organization.entity.postion.po.PostInfoPO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.post.PostInfoMapper; import com.engine.organization.service.PostInfoService; import com.engine.organization.service.impl.PostInfoServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -26,6 +29,10 @@ public class PostInfoWrapper extends OrganizationWrapper { return ServiceUtil.getService(PostInfoServiceImpl.class, user); } + private PostInfoMapper getPostInfoMapper() { + return MapperProxyFactory.getProxy(PostInfoMapper.class); + } + /** * 职务信息列表 * @@ -46,7 +53,8 @@ public class PostInfoWrapper extends OrganizationWrapper { public int savePostInfo(PostInfoSearchParam param) { int savePostInfo = getPostInfoService(user).savePostInfo(param); writeOperateLog(new Object() { - }.getClass(), "新增职务信息【" + JSON.toJSONString(param) + "】"); + }.getClass(), param.getPostInfoName(), JSON.toJSONString(param), "新增职务信息"); + return savePostInfo; } @@ -58,9 +66,10 @@ public class PostInfoWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.POSTINFO, operateDesc = "更新职务信息") public int updatePostInfo(PostInfoSearchParam param) { + PostInfoPO postInfoByID = getPostInfoMapper().getPostInfoByID(param.getId()); int updatePostInfo = getPostInfoService(user).updatePostInfo(param); writeOperateLog(new Object() { - }.getClass(), "更新职务信息【" + JSON.toJSONString(param) + "】"); + }.getClass(), postInfoByID.getPostInfoName(), JSON.toJSONString(param), postInfoByID, getPostInfoMapper().getPostInfoByID(param.getId())); return updatePostInfo; } @@ -71,9 +80,10 @@ public class PostInfoWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.POSTINFO, operateDesc = "更新职务信息禁用标识") public int updateForbiddenTagById(PostInfoSearchParam params) { + PostInfoPO postInfoByID = getPostInfoMapper().getPostInfoByID(params.getId()); int updateForbiddenTagById = getPostInfoService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), "更新职务信息禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), postInfoByID.getPostInfoName(), JSON.toJSONString(params), postInfoByID, getPostInfoMapper().getPostInfoByID(params.getId())); return updateForbiddenTagById; } @@ -83,10 +93,13 @@ public class PostInfoWrapper extends OrganizationWrapper { * @param ids */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.POSTINFO, operateDesc = "删除职务信息") - public int deleteByIds(@Param("ids") Collection ids) { + public int deleteByIds(Collection ids) { + List postInfoPOS = getPostInfoMapper().getPostInfosByIds(ids); int deleteByIds = getPostInfoService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除职务信息【" + JSON.toJSONString(ids) + "】"); + for (PostInfoPO postInfoPO : postInfoPOS) { + writeOperateLog(new Object() { + }.getClass(), postInfoPO.getPostInfoName(), JSON.toJSONString(ids), "删除职务信息"); + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/PostWrapper.java b/src/com/engine/organization/wrapper/PostWrapper.java index 8a68a4de..2a06ecca 100644 --- a/src/com/engine/organization/wrapper/PostWrapper.java +++ b/src/com/engine/organization/wrapper/PostWrapper.java @@ -7,13 +7,15 @@ import com.engine.organization.entity.TreeData; import com.engine.organization.entity.postion.po.PostPO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.post.PostMapper; import com.engine.organization.service.PostService; import com.engine.organization.service.impl.PostServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -27,6 +29,10 @@ public class PostWrapper extends OrganizationWrapper { return ServiceUtil.getService(PostServiceImpl.class, user); } + private PostMapper getPostMapper() { + return MapperProxyFactory.getProxy(PostMapper.class); + } + /** * 新增职务分类 * @@ -37,7 +43,7 @@ public class PostWrapper extends OrganizationWrapper { public int savePost(PostPO postPO) { int savePost = getPostService(user).savePost(postPO); writeOperateLog(new Object() { - }.getClass(), "新增职等【" + JSON.toJSONString(postPO) + "】"); + }.getClass(), postPO.getPostName(), JSON.toJSONString(postPO), "新增职务分类"); return savePost; } @@ -49,9 +55,10 @@ public class PostWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.POST, operateDesc = "更新职务分类") public int updatePost(PostPO postPO) { + PostPO postByID = getPostMapper().getPostByID(postPO.getId()); int updatePost = getPostService(user).updatePost(postPO); writeOperateLog(new Object() { - }.getClass(), "更新职务分类【" + JSON.toJSONString(postPO) + "】"); + }.getClass(), postByID.getPostName(), JSON.toJSONString(postPO), postByID, getPostMapper().getPostByID(postPO.getId())); return updatePost; } @@ -61,10 +68,13 @@ public class PostWrapper extends OrganizationWrapper { * @param ids */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.POST, operateDesc = "删除职务分类") - public int deleteByIds(@Param("ids") Collection ids) { + public int deleteByIds(Collection ids) { + List postPOS = getPostMapper().getPostsByIds(ids); int deleteByIds = getPostService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除职务分类【" + JSON.toJSONString(ids) + "】"); + for (PostPO postPO : postPOS) { + writeOperateLog(new Object() { + }.getClass(), postPO.getPostName(), JSON.toJSONString(ids), "删除职务分类"); + } return deleteByIds; } @@ -80,6 +90,7 @@ public class PostWrapper extends OrganizationWrapper { /** * 获取左侧树 + * * @return */ public TreeData getTreeData() { diff --git a/src/com/engine/organization/wrapper/SchemeWrapper.java b/src/com/engine/organization/wrapper/SchemeWrapper.java index 7d191602..abec2fbf 100644 --- a/src/com/engine/organization/wrapper/SchemeWrapper.java +++ b/src/com/engine/organization/wrapper/SchemeWrapper.java @@ -5,12 +5,14 @@ import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.fieldset.vo.TypeTreeVO; import com.engine.organization.entity.scheme.param.SchemeSearchParam; +import com.engine.organization.entity.scheme.po.SchemePO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.scheme.SchemeMapper; import com.engine.organization.service.SchemeService; import com.engine.organization.service.impl.SchemeServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; @@ -29,6 +31,10 @@ public class SchemeWrapper extends OrganizationWrapper { return ServiceUtil.getService(SchemeServiceImpl.class, user); } + private SchemeMapper getSchemeMapper() { + return MapperProxyFactory.getProxy(SchemeMapper.class); + } + /** * 等级方案列表 * @@ -49,7 +55,7 @@ public class SchemeWrapper extends OrganizationWrapper { public int save(SchemeSearchParam param) { int save = getSchemeService(user).save(param); writeOperateLog(new Object() { - }.getClass(), "新增等级方案【" + JSON.toJSONString(param) + "】"); + }.getClass(), param.getSchemeName(), JSON.toJSONString(param), "新增等级方案"); return save; } @@ -61,9 +67,10 @@ public class SchemeWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.SCHEME, operateDesc = "更新等级方案") public int updateScheme(SchemeSearchParam param) { + SchemePO schemeByID = getSchemeMapper().getSchemeByID(param.getId()); int updateScheme = getSchemeService(user).updateScheme(param); writeOperateLog(new Object() { - }.getClass(), "更新等级方案【" + JSON.toJSONString(param) + "】"); + }.getClass(), schemeByID.getSchemeName(), JSON.toJSONString(param), schemeByID, getSchemeMapper().getSchemeByID(param.getId())); return updateScheme; } @@ -74,9 +81,10 @@ public class SchemeWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.SCHEME, operateDesc = "更新等级方案禁用标识") public int updateForbiddenTagById(SchemeSearchParam params) { + SchemePO schemeByID = getSchemeMapper().getSchemeByID(params.getId()); int updateForbiddenTagById = getSchemeService(user).updateForbiddenTagById(params); writeOperateLog(new Object() { - }.getClass(), "更新等级方案禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), schemeByID.getSchemeName(), JSON.toJSONString(params), schemeByID, getSchemeMapper().getSchemeByID(params.getId())); return updateForbiddenTagById; } @@ -86,10 +94,14 @@ public class SchemeWrapper extends OrganizationWrapper { * @param ids */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.SCHEME, operateDesc = "删除等级方案") - public int deleteByIds(@Param("ids") Collection ids) { + public int deleteByIds(Collection ids) { + List schemePOS = getSchemeMapper().getSchemesByIds(ids); int deleteByIds = getSchemeService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "更新等级方案禁用标识【" + JSON.toJSONString(ids) + "】"); + for (SchemePO schemePO : schemePOS) { + writeOperateLog(new Object() { + }.getClass(), schemePO.getSchemeName(), JSON.toJSONString(ids), "删除等级方案"); + + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/SequenceWrapper.java b/src/com/engine/organization/wrapper/SequenceWrapper.java index aef6d3ce..0b52d331 100644 --- a/src/com/engine/organization/wrapper/SequenceWrapper.java +++ b/src/com/engine/organization/wrapper/SequenceWrapper.java @@ -4,15 +4,18 @@ import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.sequence.param.SequenceSearchParam; +import com.engine.organization.entity.sequence.po.SequencePO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.sequence.SequenceMapper; import com.engine.organization.service.SequenceService; import com.engine.organization.service.impl.SequenceServiceImpl; import com.engine.organization.util.OrganizationWrapper; -import org.apache.ibatis.annotations.Param; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -26,6 +29,10 @@ public class SequenceWrapper extends OrganizationWrapper { return ServiceUtil.getService(SequenceServiceImpl.class, user); } + private SequenceMapper getSequenceMapper() { + return MapperProxyFactory.getProxy(SequenceMapper.class); + } + /** * 岗位列表 * @@ -46,7 +53,7 @@ public class SequenceWrapper extends OrganizationWrapper { public int saveSequence(SequenceSearchParam param) { int saveSequence = getSequenceService(user).saveSequence(param); writeOperateLog(new Object() { - }.getClass(), "新增岗位序列【" + JSON.toJSONString(param) + "】"); + }.getClass(), param.getSequenceName(), JSON.toJSONString(param), "新增岗位序列"); return saveSequence; } @@ -58,22 +65,24 @@ public class SequenceWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.SEQUENCE, operateDesc = "更新岗位序列") public int updateSequence(SequenceSearchParam param) { + SequencePO sequenceByID = getSequenceMapper().getSequenceByID(param.getId()); int updateSequence = getSequenceService(user).updateSequence(param); writeOperateLog(new Object() { - }.getClass(), "更新岗位序列【" + JSON.toJSONString(param) + "】"); + }.getClass(), sequenceByID.getSequenceName(), JSON.toJSONString(param), sequenceByID, getSequenceMapper().getSequenceByID(param.getId())); return updateSequence; } /** * 更新禁用标记 * - * @param params + * @param param */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.SEQUENCE, operateDesc = "更新岗位序列禁用标识") - public int updateForbiddenTagById(SequenceSearchParam params) { - int updateForbiddenTagById = getSequenceService(user).updateForbiddenTagById(params); + public int updateForbiddenTagById(SequenceSearchParam param) { + SequencePO sequenceByID = getSequenceMapper().getSequenceByID(param.getId()); + int updateForbiddenTagById = getSequenceService(user).updateForbiddenTagById(param); writeOperateLog(new Object() { - }.getClass(), "更新岗位序列禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), sequenceByID.getSequenceName(), JSON.toJSONString(param), sequenceByID, getSequenceMapper().getSequenceByID(param.getId())); return updateForbiddenTagById; } @@ -83,10 +92,13 @@ public class SequenceWrapper extends OrganizationWrapper { * @param ids */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.SEQUENCE, operateDesc = "删除岗位序列") - public int deleteByIds(@Param("ids") Collection ids) { + public int deleteByIds( Collection ids) { + List sequencePOS = getSequenceMapper().getSequencesByIds(ids); int deleteByIds = getSequenceService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除岗位序列【" + JSON.toJSONString(ids) + "】"); + for (SequencePO sequencePO : sequencePOS) { + writeOperateLog(new Object() { + }.getClass(), sequencePO.getSequenceName(), JSON.toJSONString(ids), "删除岗位序列"); + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/StaffPlanWrapper.java b/src/com/engine/organization/wrapper/StaffPlanWrapper.java index 86da341f..bd9628fb 100644 --- a/src/com/engine/organization/wrapper/StaffPlanWrapper.java +++ b/src/com/engine/organization/wrapper/StaffPlanWrapper.java @@ -4,15 +4,19 @@ import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.staff.param.StaffPlanSearchParam; +import com.engine.organization.entity.staff.po.StaffPlanPO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.staff.StaffPlanMapper; import com.engine.organization.service.StaffPlanService; import com.engine.organization.service.impl.StaffPlanServiceImpl; import com.engine.organization.util.OrganizationWrapper; +import com.engine.organization.util.db.MapperProxyFactory; import org.apache.ibatis.annotations.Param; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; /** @@ -26,6 +30,10 @@ public class StaffPlanWrapper extends OrganizationWrapper { return ServiceUtil.getService(StaffPlanServiceImpl.class, user); } + private StaffPlanMapper getStaffPlanMapper() { + return MapperProxyFactory.getProxy(StaffPlanMapper.class); + } + /** * 编制方案列表 * @@ -46,7 +54,7 @@ public class StaffPlanWrapper extends OrganizationWrapper { public int saveStaffPlan(StaffPlanSearchParam param) { int saveStaffPlan = getStaffPlanService(user).saveStaffPlan(param); writeOperateLog(new Object() { - }.getClass(), "新增编制方案【" + JSON.toJSONString(param) + "】"); + }.getClass(), param.getPlanName(), JSON.toJSONString(param), "新增编制方案"); return saveStaffPlan; } @@ -58,22 +66,24 @@ public class StaffPlanWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.STAFFPLAN, operateDesc = "更新编制方案") public int updateStaffPlan(StaffPlanSearchParam param) { + StaffPlanPO staffPlanByID = getStaffPlanMapper().getStaffPlanByID(param.getId()); int updateStaffPlan = getStaffPlanService(user).updateStaffPlan(param); writeOperateLog(new Object() { - }.getClass(), "更新编制方案【" + JSON.toJSONString(param) + "】"); + }.getClass(), staffPlanByID.getPlanName(), JSON.toJSONString(param), staffPlanByID, getStaffPlanMapper().getStaffPlanByID(param.getId())); return updateStaffPlan; } /** * 更新禁用标记 * - * @param params + * @param param */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.STAFFPLAN, operateDesc = "更新编制方案禁用标识") - public int updateForbiddenTagById(StaffPlanSearchParam params) { - int updateForbiddenTagById = getStaffPlanService(user).updateForbiddenTagById(params); + public int updateForbiddenTagById(StaffPlanSearchParam param) { + StaffPlanPO staffPlanByID = getStaffPlanMapper().getStaffPlanByID(param.getId()); + int updateForbiddenTagById = getStaffPlanService(user).updateForbiddenTagById(param); writeOperateLog(new Object() { - }.getClass(), "更新编制方案禁用标识【" + JSON.toJSONString(params) + "】"); + }.getClass(), staffPlanByID.getPlanName(), JSON.toJSONString(param), staffPlanByID, getStaffPlanMapper().getStaffPlanByID(param.getId())); return updateForbiddenTagById; } @@ -84,9 +94,12 @@ public class StaffPlanWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.STAFFPLAN, operateDesc = "删除编制方案") public int deleteByIds(@Param("ids") Collection ids) { + List staffPlanPOS = getStaffPlanMapper().getStaffPlansByIds(ids); int deleteByIds = getStaffPlanService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除编制方案【" + JSON.toJSONString(ids) + "】"); + for (StaffPlanPO staffPlanPO : staffPlanPOS) { + writeOperateLog(new Object() { + }.getClass(), staffPlanPO.getPlanName(), JSON.toJSONString(ids), "删除编制方案"); + } return deleteByIds; } diff --git a/src/com/engine/organization/wrapper/StaffWrapper.java b/src/com/engine/organization/wrapper/StaffWrapper.java index 078c8512..597f2b9c 100644 --- a/src/com/engine/organization/wrapper/StaffWrapper.java +++ b/src/com/engine/organization/wrapper/StaffWrapper.java @@ -4,15 +4,22 @@ import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.organization.annotation.Log; import com.engine.organization.entity.staff.param.StaffSearchParam; +import com.engine.organization.entity.staff.po.StaffPO; +import com.engine.organization.entity.staff.po.StaffPlanPO; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; +import com.engine.organization.mapper.staff.StaffMapper; +import com.engine.organization.mapper.staff.StaffPlanMapper; import com.engine.organization.service.StaffService; import com.engine.organization.service.impl.StaffServiceImpl; import com.engine.organization.util.OrganizationWrapper; +import com.engine.organization.util.db.MapperProxyFactory; import weaver.hrm.User; import java.util.Collection; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @description: @@ -25,6 +32,14 @@ public class StaffWrapper extends OrganizationWrapper { return ServiceUtil.getService(StaffServiceImpl.class, user); } + private StaffMapper getStaffMapper() { + return MapperProxyFactory.getProxy(StaffMapper.class); + } + + private StaffPlanMapper getStaffPlanMapper() { + return MapperProxyFactory.getProxy(StaffPlanMapper.class); + } + /** * 编制列表 * @@ -45,7 +60,7 @@ public class StaffWrapper extends OrganizationWrapper { public int saveStaff(StaffSearchParam param) { int saveStaff = getStaffService(user).saveStaff(param); writeOperateLog(new Object() { - }.getClass(), "新增编制上报【" + JSON.toJSONString(param) + "】"); + }.getClass(), getStaffPlanMapper().getStaffPlanByID(param.getPlanId()).getPlanName(), JSON.toJSONString(param), "新增编制上报"); return saveStaff; } @@ -57,9 +72,10 @@ public class StaffWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.UPDATE, operateModule = LogModuleNameEnum.STAFF, operateDesc = "更新编制上报") public int updateStaff(StaffSearchParam param) { + StaffPO staffByID = getStaffMapper().getStaffByID(param.getId()); int updateStaff = getStaffService(user).updateStaff(param); writeOperateLog(new Object() { - }.getClass(), "更新编制上报【" + JSON.toJSONString(param) + "】"); + }.getClass(), getStaffPlanMapper().getStaffPlanByID(param.getPlanId()).getPlanName(), JSON.toJSONString(param), staffByID, getStaffMapper().getStaffByID(param.getId())); return updateStaff; } @@ -71,9 +87,14 @@ public class StaffWrapper extends OrganizationWrapper { */ @Log(operateType = OperateTypeEnum.DELETE, operateModule = LogModuleNameEnum.STAFF, operateDesc = "删除编制上报") public int deleteByIds(Collection ids) { + List staffPOS = getStaffMapper().getStaffsByIds(ids); + List staffPlansByIds = getStaffPlanMapper().getStaffPlansByIds(ids); + Map collect = staffPlansByIds.stream().collect(Collectors.toMap(StaffPlanPO::getId, StaffPlanPO::getPlanName)); int deleteByIds = getStaffService(user).deleteByIds(ids); - writeOperateLog(new Object() { - }.getClass(), "删除编制上报【" + JSON.toJSONString(ids) + "】"); + for (StaffPO staffPO : staffPOS) { + writeOperateLog(new Object() { + }.getClass(), collect.get(staffPO.getId()), JSON.toJSONString(ids), "删除编制上报"); + } return deleteByIds; }