zhongrj
2023-08-24 6e6127f62c11396037d8d0feb35ae8e8155c7aa5
新增填报日志保存公用方法
2 files added
270 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/FillCommon.java 119 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/ReflectCommon.java 151 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/FillCommon.java
New file
@@ -0,0 +1,119 @@
package cn.gistack.sm.sjztmd.service;
import cn.gistack.sm.sjztmd.entity.TbAttResStagChar;
import cn.gistack.sm.sjztmd.util.ReflectCommon;
import cn.gistack.system.user.feign.IUserClient;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class FillCommon<T> {
    @Autowired
    private IUserClient userClient;
    /**
     * 更新审核记录
     * @param oldFillInfo
     * @param newFillInfo
     */
    public void setUpdateCheckLog(T oldFillInfo, T newFillInfo) {
        ReflectCommon<T> reflectCommon = new ReflectCommon<>();
        String fillName = "";
        Integer checkState = (Integer) reflectCommon.getFieldValue(newFillInfo,"checkState");
        String newCheckLog = (String) reflectCommon.getFieldValue(newFillInfo,"checkLog");
        if (checkState==2){
            fillName = "审核";
        }
        if (checkState==3){
            fillName = "退回" + (null==newCheckLog?"":":" + newCheckLog);
        }
        // 拼接
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
        String userName = AuthUtil.getUser().getUserName();
        String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
        StringBuilder builder = new StringBuilder();
        builder.append(time)
            .append(",")
            .append(fillName)
            .append(",")
            .append(userName)
            .append(",")
            .append(phone)
            .append(";");
        // 判断是否存在
        if (null==oldFillInfo){
            // 填报
            reflectCommon.setFieldValue(newFillInfo,"checkLog",builder.toString());
        }else {
            String oldCheckLog = (String) reflectCommon.getFieldValue(oldFillInfo,"checkLog");
            StringBuilder stringBuilder = new StringBuilder(null==oldCheckLog?"":oldCheckLog);
            stringBuilder.append(builder);
            // 填报
            reflectCommon.setFieldValue(newFillInfo,"checkLog",stringBuilder.toString());
        }
    }
    /**
     * 更新操作记录
     * @param oldFillInfo
     * @param newFillInfo
     */
    public void setUpdateLog(T oldFillInfo,T newFillInfo) {
        ReflectCommon<T> reflectCommon = new ReflectCommon<>();
        Integer newCheckState = (Integer) reflectCommon.getFieldValue(newFillInfo,"checkState");
        String newCheckLog = (String) reflectCommon.getFieldValue(newFillInfo,"checkLog");
        String fillName = "";
        if (newCheckState==0){
            fillName = "编辑";
        }
        if (newCheckState==1){
            fillName = "提交";
        }
        if (newCheckState==2){
            fillName = "审核";
        }
        if (newCheckState==3){
            fillName = "退回" + (null==newCheckLog?"":":" + newCheckLog);
        }
        if (newCheckState==4){
            fillName = "编辑";
            if (null!=oldFillInfo) {
                Integer oldCheckState = (Integer) reflectCommon.getFieldValue(oldFillInfo, "checkState");
                reflectCommon.setFieldValue(newFillInfo,"checkState",oldCheckState);
            }
        }
        // 拼接
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
        String userName = AuthUtil.getUser().getUserName();
        String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
        StringBuilder builder = new StringBuilder();
        builder.append(time)
            .append(",")
            .append(fillName)
            .append(",")
            .append(userName)
            .append(",")
            .append(phone)
            .append(";");
        // 判断是否存在
        if (null==oldFillInfo){
            // 填报
            reflectCommon.setFieldValue(newFillInfo,"log",builder.toString());
        }else {
            String oldLog = (String) reflectCommon.getFieldValue(oldFillInfo, "log");
            StringBuilder stringBuilder = new StringBuilder(null==oldLog?"":oldLog);
            stringBuilder.append(builder);
            // 填报
            reflectCommon.setFieldValue(newFillInfo,"log",stringBuilder.toString());
        }
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/ReflectCommon.java
New file
@@ -0,0 +1,151 @@
package cn.gistack.sm.sjztmd.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
 * 反射通用
 * @param <T>
 */
public class ReflectCommon<T> {
    /**
     * 获取对象的属性相关信息
     * @param model
     * @return
     */
    public Map test(T model) {
        //获取说有属性,返回Field类型数组
        Field[] fields = model.getClass().getDeclaredFields();
        Map<String, Object> values = new HashMap<String, Object>();
        try {
            for (int i = 0; i < fields.length; i++) {
                // 获取属性名
                String nameinit = fields[i].getName();
                String name = nameinit;
                // 将属性名的首字母大写,方便获取set和get方法
                name = name.substring(0, 1).toUpperCase() + name.substring(1);
                // 获取属性类型
                String type = fields[i].getGenericType().toString();
                //如果类型是类,要加class 并指定类路径
                if (type.equals("class java.lang.String")) {
                    // 构造get方法
                    Method m = model.getClass().getMethod("get" + name);
                    // 调用get方法获取属性值
                    String value = (String) m.invoke(model);
                    values.put(nameinit, value);
                }
                if (type.equals("class java.lang.Integer")) {
                    // 构造get方法
                    Method m = model.getClass().getMethod("get" + name);
                    // 调用get方法获取属性值
                    Integer value = (Integer) m.invoke(model);
                    values.put(nameinit, value);
                }
                if (type.equals("int")) {
                    // 构造get方法
                    Method m = model.getClass().getMethod("get" + name);
                    // 调用get方法获取属性值
                    Integer value = (Integer) m.invoke(model);
                    values.put(nameinit, value);
                }
                if (type.equals("class java.lang.Boolean")) {
                    // 构造get方法
                    Method m = model.getClass().getMethod("get" + name);
                    // 调用get方法获取属性值
                    String value = (String) m.invoke(model);
                    values.put(nameinit, value);
                }
                if (type.equals("class java.util.Date")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Date value = (Date) m.invoke(model);
                    values.put(nameinit, value);
                }
            }
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 返回
        return values;
    }
    /**
     * 通过属性名称获取属性值
     * @param model
     * @param fieldName 属性名
     * @return
     */
    public Object getFieldValue(T model,String fieldName) {
        //获取说有属性,返回Field类型数组
        Field[] fields = model.getClass().getDeclaredFields();
        try {
            for (Field field : fields) {
                if (field.getName().equals(fieldName)) {
                    // 将属性名的首字母大写,方便获取set和get方法
                    fieldName = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
                    // 构造get方法
                    Method m = model.getClass().getMethod("get" + fieldName);
                    // 调用get方法获取属性值并返回
                    return m.invoke(model);
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        // 返回
        return null;
    }
    /**
     * 通过属性名称给属性赋值
     * @param model
     * @param fieldName 属性名
     * @param value 值
     * @return
     */
    public void setFieldValue(T model,String fieldName,Object value) {
        //获取说有属性,返回Field类型数组
        Field[] fields = model.getClass().getDeclaredFields();
        try {
            for (Field field : fields) {
                if (field.getName().equals(fieldName)) {
                    field.setAccessible(true);
                    field.set(model,value);
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
//    public static void main(String[] args) {
//        User user = new User();
//        user.setAccount("123456");
//        ReflectCommon<User> reflectCommon = new ReflectCommon<User>();
//        String account =(String) reflectCommon.getFieldValue(user, "account");
//        System.out.println("account = " + account);
//        reflectCommon.setFieldValue(user,"account","9999");
//        System.out.println("newaccount = " + user.getAccount());
//    }
}