SmartBeanUtil.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package net.lab1024.smartadmin.util;
  2. import net.lab1024.smartadmin.constant.BpmConst;
  3. import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO;
  4. import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO;
  5. import org.apache.commons.beanutils.PropertyUtils;
  6. import org.springframework.beans.BeanUtils;
  7. import java.util.Collections;
  8. import java.util.Date;
  9. import java.util.List;
  10. import java.util.stream.Collectors;
  11. public class SmartBeanUtil {
  12. /**
  13. * 复制bean的属性
  14. *
  15. * @param source 源 要复制的对象
  16. * @param target 目标 复制到此对象
  17. */
  18. public static void copyProperties(Object source, Object target) {
  19. BeanUtils.copyProperties(source, target);
  20. }
  21. /**
  22. * 复制对象
  23. *
  24. * @param source 源 要复制的对象
  25. * @param target 目标 复制到此对象
  26. * @param <T>
  27. * @return
  28. */
  29. public static <T> T copy(Object source, Class<T> target) {
  30. if(source == null || target == null){
  31. return null;
  32. }
  33. try {
  34. T newInstance = target.newInstance();
  35. BeanUtils.copyProperties(source, newInstance);
  36. return newInstance;
  37. } catch (Exception e) {
  38. throw new RuntimeException(e);
  39. }
  40. }
  41. /**
  42. * 复制list
  43. *
  44. * @param source
  45. * @param target
  46. * @param <T>
  47. * @param <K>
  48. * @return
  49. */
  50. public static <T, K> List<K> copyList(List<T> source, Class<K> target) {
  51. if (null == source || source.isEmpty()) {
  52. return Collections.emptyList();
  53. }
  54. return source.stream().map(e -> copy(e, target)).collect(Collectors.toList());
  55. }
  56. /**
  57. * 复制对象(自动设置操作人员信息)
  58. *
  59. * @param source 源 要复制的对象
  60. * @param target 目标 复制到此对象
  61. * @param requestToken 登录对象
  62. * @param <T>
  63. * @return
  64. */
  65. public static <T> T copy(Object source, Class<T> target, RequestTokenBO requestToken) {
  66. return copy(source, target, requestToken.getEmployeeBO());
  67. }
  68. /**
  69. * 复制对象(自动设置操作人员信息)
  70. *
  71. * @param source 源 要复制的对象
  72. * @param target 目标 复制到此对象
  73. * @param employeeBO 登录用户
  74. * @param <T>
  75. * @return
  76. */
  77. public static <T> T copy(Object source, Class<T> target, EmployeeBO employeeBO) {
  78. if(source == null || target == null){
  79. return null;
  80. }
  81. try {
  82. T newInstance = target.newInstance();
  83. BeanUtils.copyProperties(source, newInstance);
  84. try {
  85. Object id = PropertyUtils.getProperty(newInstance, "id");
  86. if (id == null) {
  87. setInsertInfo(newInstance, employeeBO);
  88. }else {
  89. setUpdateInfo(newInstance, employeeBO);
  90. }
  91. //setUpdateInfo(newInstance, employeeBO);
  92. } catch (Exception e) {
  93. e.printStackTrace();
  94. }
  95. return newInstance;
  96. } catch (Exception e) {
  97. throw new RuntimeException(e);
  98. }
  99. }
  100. /**
  101. * 设置默认新增信息
  102. * @return
  103. */
  104. public static void setInsertInfo(Object obj, EmployeeBO employeeBO) {
  105. if(obj == null){
  106. return;
  107. }
  108. Date date = SmartDateUtil.getDate();;
  109. try {
  110. Class type = PropertyUtils.getPropertyType(obj, "createBy");
  111. if (type == Integer.class) {
  112. PropertyUtils.setProperty(obj, "createBy", employeeBO.getId().intValue());
  113. } else if (type == Long.class) {
  114. PropertyUtils.setProperty(obj, "createBy", employeeBO.getId());
  115. }else{
  116. PropertyUtils.setProperty(obj, "createBy", employeeBO.getId().toString());
  117. }
  118. } catch (Exception e) {
  119. e.printStackTrace();
  120. }
  121. try {
  122. PropertyUtils.setProperty(obj, "createTime", date);
  123. } catch (Exception e) {
  124. e.printStackTrace();
  125. }
  126. try {
  127. PropertyUtils.setProperty(obj, "department", employeeBO.getDepartmentId().toString());
  128. } catch (Exception e) {
  129. e.printStackTrace();
  130. }
  131. try {
  132. PropertyUtils.setProperty(obj, "company", employeeBO.getCompanyId().toString());
  133. } catch (Exception e) {
  134. e.printStackTrace();
  135. }
  136. try {
  137. PropertyUtils.setProperty(obj, "delFlag", BpmConst.DEL_FLAG_0);
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. }
  141. setUpdateInfo(obj,employeeBO);
  142. }
  143. /**
  144. * 设置默认更新信息
  145. * @return
  146. */
  147. public static void setUpdateInfo(Object obj, EmployeeBO employeeBO) {
  148. if(obj == null){
  149. return;
  150. }
  151. Date date = SmartDateUtil.getDate();
  152. try {
  153. Class type = PropertyUtils.getPropertyType(obj, "updateBy");
  154. if (type == Integer.class) {
  155. PropertyUtils.setProperty(obj, "updateBy", employeeBO.getId().intValue());
  156. }else if (type == Long.class) {
  157. PropertyUtils.setProperty(obj, "updateBy", employeeBO.getId());
  158. } else {
  159. PropertyUtils.setProperty(obj, "updateBy", employeeBO.getId().toString());
  160. }
  161. } catch (Exception e) {
  162. e.printStackTrace();
  163. }
  164. try {
  165. PropertyUtils.setProperty(obj, "updateTime", date);
  166. } catch (Exception e) {
  167. e.printStackTrace();
  168. }
  169. }
  170. }