From 78b344865fc0471703637f1b2184b5c0179a3d99 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Thu, 26 Oct 2017 11:39:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/pojo/OperateLogModel.java | 10 ++ .../operate/web/facade/BabyBookbuildingFacade.java | 6 +- .../operate/web/facade/OperateLogFacade.java | 115 +++++++++++++++++++++ 3 files changed, 128 insertions(+), 3 deletions(-) diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/OperateLogModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/OperateLogModel.java index d112114..954e561 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/OperateLogModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/OperateLogModel.java @@ -47,6 +47,16 @@ public class OperateLogModel extends BaseModel { //操作备注 private String operateRemark; + private String modifyContent; + + public String getModifyContent() { + return modifyContent; + } + + public void setModifyContent(String modifyContent) { + this.modifyContent = modifyContent; + } + public String getId() { return id; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 0f2b087..e9e1c0a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -609,7 +609,7 @@ public class BabyBookbuildingFacade { patient.setPid(pm.getId()); patient.setCreated(new Date()); patients = yunBookbuildingService.addPregnantBookbuilding(patient); - operateLogFacade.addOptLog(userId,Integer.valueOf(patients.getHospitalId()),patients,"",OptActionEnums.ADD.getId(),"儿童建档时候添加孕妇建档"); + operateLogFacade.addOptLog(userId,Integer.valueOf(patients.getHospitalId()),patients,null,OptActionEnums.ADD.getId(),"儿童建档时候添加孕妇建档"); } } @@ -636,7 +636,7 @@ public class BabyBookbuildingFacade { patient.setCreated(new Date()); patients = yunBookbuildingService.addPregnantBookbuilding(patient); - operateLogFacade.addOptLog(userId,Integer.valueOf(patients.getHospitalId()),patients,"",OptActionEnums.ADD.getId(),"儿童建档时候添加孕妇建档"); + operateLogFacade.addOptLog(userId,Integer.valueOf(patients.getHospitalId()),patients,null,OptActionEnums.ADD.getId(),"儿童建档时候添加孕妇建档"); } @@ -672,7 +672,7 @@ public class BabyBookbuildingFacade { // String hospitalName = organizationService.getOrganization(Integer.valueOf(request.getHospitalId())).getName(); model = babyBookbuildingService.addBabyBookbuilding(model); - operateLogFacade.addOptLog(userId,Integer.valueOf(request.getHospitalId()),model,"",OptActionEnums.ADD.getId(),"儿童建档"); + operateLogFacade.addOptLog(userId,Integer.valueOf(request.getHospitalId()),model,null,OptActionEnums.ADD.getId(),"儿童建档"); if (model == null || model.getId() == null) { br.setErrorcode(ErrorCodeConstants.SYSTEM_ERROR); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/OperateLogFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/OperateLogFacade.java index 5112143..225901b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/OperateLogFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/OperateLogFacade.java @@ -7,12 +7,21 @@ import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.model.UsersQuery; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.OperateLogModel; +import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import java.beans.BeanInfo; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; /** @@ -52,6 +61,11 @@ public class OperateLogFacade { model.setOperateBeforeContent(JsonUtil.array2JsonString(operateBeforeContent)); model.setOperateRemark(operateRemark); + if (operateBeforeContent != null && operateBeforeContent != null ) + { + model.setModifyContent(JsonUtil.array2JsonString(getChangeItems(operateAfterContent, operateBeforeContent))); + } + model.setOperateHospitalId(hospitalId); model.setCreated(new Date()); @@ -59,4 +73,105 @@ public class OperateLogFacade { operateLogService.addOptLog(model); } + + + /** + * 获取更新操作的change item + * @param oldObj + * @param newObj + * @return + */ + public static List getChangeItems(Object oldObj, Object newObj) { + Class cl = oldObj.getClass(); + List changeItems = new ArrayList(); + try { + BeanInfo beanInfo = Introspector.getBeanInfo(cl, Object.class); + + for (PropertyDescriptor propertyDescriptor : beanInfo + .getPropertyDescriptors()) { + String field = propertyDescriptor.getName(); + //获取字段旧值 + String oldProp = getValue(PropertyUtils.getProperty(oldObj, + field)); + //获取字段新值 + String newProp = getValue(PropertyUtils.getProperty(newObj, + field)); + + //对比新旧值 + if (!oldProp.equals(newProp)) { + ChangeItem changeItem = new ChangeItem(); + changeItem.setField(field); + changeItem.setNewValue(newProp); + changeItem.setOldValue(oldProp); + changeItems.add(changeItem); + } + } + } catch (Exception e) { + } + return changeItems; + } + + + /** + * 不同类型转字符串的处理 + * @param obj + * @return + */ + public static String getValue(Object obj) { + if (obj != null) { + if (obj instanceof Date) { + return formatDateW3C((Date) obj); + } else { + return obj.toString(); + } + } else { + return ""; + } + } + + /** + * 将date类型转为字符串形式 + * @param date + * @return + */ + public static String formatDateW3C(Date date) { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + String text = df.format(date); + String result = text.substring(0, 22) + ":" + text.substring(22); + return result; + } + +} + +class ChangeItem { + + private String field; + + private String oldValue; + + private String newValue; + + public String getOldValue() { + return oldValue; + } + + public void setOldValue(String oldValue) { + this.oldValue = oldValue; + } + + public String getNewValue() { + return newValue; + } + + public void setNewValue(String newValue) { + this.newValue = newValue; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } } \ No newline at end of file -- 1.8.3.1