| skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/FillCommon.java | ●●●●● patch | view | raw | blame | history | |
| skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/ReflectCommon.java | ●●●●● 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()); // } }