diff --git a/src/main/java/com/ydool/common/utils/ColumnUtil.java b/src/main/java/com/ydool/common/utils/ColumnUtil.java new file mode 100644 index 0000000..30941de --- /dev/null +++ b/src/main/java/com/ydool/common/utils/ColumnUtil.java @@ -0,0 +1,117 @@ +package com.ydool.common.utils; +import java.io.Serializable; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.invoke.SerializedLambda; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.function.Function; + +/** + * Java8通过Function函数获取字段名称(获取实体类的字段名称) + * @see + * @author jx + */ +public class ColumnUtil { + + + /** + * 使Function获取序列化能力 + */ + @FunctionalInterface + public interface SFunction extends Function, Serializable {} + /** + * 字段名注解,声明表字段 + */ + + + @Target(ElementType.FIELD) + @Retention(RetentionPolicy.RUNTIME) + public @interface TableField { + String value() default ""; + } + + //默认配置 + static String defaultSplit = ""; + static Integer defaultToType = 0; + + /** + * 获取实体类的字段名称(实体声明的字段名称) + */ + public static String getFieldName(SFunction fn) { + return getFieldName(fn, defaultSplit); + + } + + /** + * 获取实体类的字段名称 + * @param split 分隔符,多个字母自定义分隔符 + */ + public static String getFieldName(SFunction fn, String split) { + return getFieldName(fn, split, defaultToType); + } + + /** + * 获取实体类的字段名称 + * + * @param split 分隔符,多个字母自定义分隔符 + * @param toType 转换方式,多个字母以大小写方式返回 0.不做转换 1.大写 2.小写 + */ + public static String getFieldName(SFunction fn, String split, Integer toType) { + SerializedLambda serializedLambda = getSerializedLambda(fn); + + // 从lambda信息取出method、field、class等 + String fieldName = serializedLambda.getImplMethodName().substring("get".length()); + fieldName = fieldName.replaceFirst(fieldName.charAt(0) + "", (fieldName.charAt(0) + "").toLowerCase()); + Field field; + try { + field = Class.forName(serializedLambda.getImplClass().replace("/", ".")).getDeclaredField(fieldName); + } catch (ClassNotFoundException | NoSuchFieldException e) { + throw new RuntimeException(e); + } + + // 从field取出字段名,可以根据实际情况调整 + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null && tableField.value().length() > 0) { + return tableField.value(); + } else { + + //0.不做转换 1.大写 2.小写 + switch (toType) { + case 1: + return fieldName.replaceAll("[A-Z]", split + "$0").toUpperCase(); + case 2: + return fieldName.replaceAll("[A-Z]", split + "$0").toLowerCase(); + default: + return fieldName.replaceAll("[A-Z]", split + "$0"); + } + + } + + } + + private static SerializedLambda getSerializedLambda(SFunction fn) { + // 从function取出序列化方法 + Method writeReplaceMethod; + try { + writeReplaceMethod = fn.getClass().getDeclaredMethod("writeReplace"); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + + // 从序列化方法取出序列化的lambda信息 + boolean isAccessible = writeReplaceMethod.isAccessible(); + writeReplaceMethod.setAccessible(true); + SerializedLambda serializedLambda; + try { + serializedLambda = (SerializedLambda) writeReplaceMethod.invoke(fn); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + writeReplaceMethod.setAccessible(isAccessible); + return serializedLambda; + } +} \ No newline at end of file diff --git a/src/main/java/com/ydool/staff/controller/AlterationController.java b/src/main/java/com/ydool/staff/controller/AlterationController.java index c0646ad..3d5f237 100644 --- a/src/main/java/com/ydool/staff/controller/AlterationController.java +++ b/src/main/java/com/ydool/staff/controller/AlterationController.java @@ -23,7 +23,7 @@ import javax.annotation.Resource; */ @RestController @RequestMapping(UrlConstant.ALTERATION) -@Api(tags = "人员变更", value = "人员变更") +@Api(tags = "变更记录", value = "变更记录") @ApiSupport(order = 9) public class AlterationController extends BaseController { diff --git a/src/main/java/com/ydool/staff/entity/Alteration.java b/src/main/java/com/ydool/staff/entity/Alteration.java index db3cf30..9b30ba2 100644 --- a/src/main/java/com/ydool/staff/entity/Alteration.java +++ b/src/main/java/com/ydool/staff/entity/Alteration.java @@ -27,6 +27,9 @@ public class Alteration extends BaseEntity{ @ApiModelProperty(value = "关联id") private String relevancyId; + @ApiModelProperty(value = "变更字段名称") + private String fieldName; + @ApiModelProperty(value = "变更前") private String beforeChange; diff --git a/src/main/java/com/ydool/staff/entity/Personnel.java b/src/main/java/com/ydool/staff/entity/Personnel.java index e3662d7..a76fafe 100644 --- a/src/main/java/com/ydool/staff/entity/Personnel.java +++ b/src/main/java/com/ydool/staff/entity/Personnel.java @@ -152,4 +152,7 @@ public class Personnel extends BaseEntity { @ApiModelProperty(value = "审批状态 0 未审批 1 待审批,2已通过,3已拒绝") private Integer auditState; + @ApiModelProperty(value = "单据状态") + private String receipts; + } diff --git a/src/main/java/com/ydool/staff/entity/SelectRequest.java b/src/main/java/com/ydool/staff/entity/SelectRequest.java index 33d4d27..69b9a30 100644 --- a/src/main/java/com/ydool/staff/entity/SelectRequest.java +++ b/src/main/java/com/ydool/staff/entity/SelectRequest.java @@ -65,8 +65,8 @@ public class SelectRequest { @ApiModelProperty(value = "工作状态") private String workState; - @ApiModelProperty(value = "人员招聘单号") - private String recruitNumber; + @ApiModelProperty(value = "单据状态") + private String receipts; @ApiModelProperty(value = "变更标志") private String alterationSign; diff --git a/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java index 509c27a..ef6e3b6 100644 --- a/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java @@ -1,6 +1,7 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -10,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.base.BaseService; import com.ydool.common.constant.AgesConst; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.common.utils.ColumnUtil; import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.dto.PersonnelByExchangeDto; import com.ydool.staff.dto.PersonnelDto; @@ -33,6 +35,7 @@ import com.ydool.staff.service.IAttachmentService; import com.ydool.staff.service.IPersonnelService; import com.ydool.system.entity.Dept; import com.ydool.system.mapper.DeptMapper; +import org.apache.poi.ss.formula.functions.Column; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.util.StringUtils; @@ -160,17 +163,17 @@ public class PersonnelServiceImpl extends BaseService(); } - public void saveAlteration(String details,Object before ,Object after,String type, String id){ + public void saveAlteration(String details,Object before ,Object after,String type, String id,String fieldName){ if (!before.equals(after)){ Alteration alteration = new Alteration(); alteration.setDetails(details); + alteration.setFieldName(fieldName); alteration.setType(type); alteration.setRelevancyId(id); if (ObjectUtil.isNotNull(before)){ @@ -314,7 +318,7 @@ public class PersonnelServiceImpl extends BaseService