diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/entity/InsideOutsideMeeting.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/entity/InsideOutsideMeeting.java index 324b3b84..13583910 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/entity/InsideOutsideMeeting.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/entity/InsideOutsideMeeting.java @@ -2,6 +2,7 @@ package com.adc.da.slrs.InsideOntSideMeeting.entity; import com.adc.da.att.entity.AttFileEO; import com.adc.da.base.entity.BaseEntity; +import com.adc.da.utils.annotation.CompareField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,6 +36,7 @@ public class InsideOutsideMeeting extends BaseEntity { @TableId(value = "ID", type = IdType.ID_WORKER_STR) private String id; + @CompareField(fieldName = "会议名称") @ApiModelProperty(value = "会议名称") @TableField("MEETING_NAME") private String meetingName; @@ -42,27 +44,33 @@ public class InsideOutsideMeeting extends BaseEntity { /** * 课题名称,可通过调取功能从政策课题模块中获取 */ + @CompareField(fieldName = "课题名称") @ApiModelProperty(value = "课题名称") @TableField("TOPIC_NAME") private String topicName; + @CompareField(fieldName = "会议主办单位") @ApiModelProperty(value = "会议主办单位") @TableField("MEETING_ORGANIZER") private String meetingOrganizer; + @CompareField(fieldName = "会议时间") @ApiModelProperty(value = "会议时间") @TableField("MEETING_TIME") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") private Date meetingTime; + @CompareField(fieldName = "会议地点") @ApiModelProperty(value = "会议地点") @TableField("MEETING_ADDRESS") private String meetingAddress; + @CompareField(fieldName = "参会人员") @ApiModelProperty(value = "参会人员") @TableField("PARTICIPANTS") private String participants; + @CompareField(fieldName = "会议纪要") @ApiModelProperty(value = "会议纪要") @TableField("MEETING_MINUTES") private String meetingMinutes; @@ -71,10 +79,12 @@ public class InsideOutsideMeeting extends BaseEntity { @TableField(exist = false) private List meetingMinutesList; + @CompareField(fieldName = "会议主要内容") @ApiModelProperty(value = "会议主要内容") @TableField("MEETING_CONTENT") private String meetingContent; + @CompareField(fieldName = "1级会议分类") @ApiModelProperty(value = "1级会议分类") @TableField("FIRST_MEETING_TYPE") private String firstMeetingType; @@ -83,6 +93,7 @@ public class InsideOutsideMeeting extends BaseEntity { @TableField(exist = false) private String firstMeetingTypeName; + @CompareField(fieldName = "2级会议分类") @ApiModelProperty(value = "2级会议分类") @TableField("SECOND_MEETING_TYPE") private String secondMeetingType; @@ -91,6 +102,7 @@ public class InsideOutsideMeeting extends BaseEntity { @TableField(exist = false) private String secondMeetingTypeName; + @CompareField(fieldName = "会议议题") @ApiModelProperty(value = "会议议题") @TableField(exist = false) private List meetingTopicList; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/service/impl/InsideOutsideMeetingServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/service/impl/InsideOutsideMeetingServiceImpl.java index b5664e4f..72a87f96 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/service/impl/InsideOutsideMeetingServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/InsideOntSideMeeting/service/impl/InsideOutsideMeetingServiceImpl.java @@ -13,12 +13,14 @@ import com.adc.da.slrs.InsideOntSideMeeting.entity.MeetingTopic; import com.adc.da.slrs.InsideOntSideMeeting.service.InsideOutsideMeetingService; import com.adc.da.slrs.InsideOntSideMeeting.service.MeetingTopicService; import com.adc.da.slrs.sarLawsInformation.entity.SarLawsInformation; +import com.adc.da.slrs.sarLawsTopic.entity.SarLawsTopic; import com.adc.da.slrs.sarUpdLog.entity.SarUpdLog; import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; import com.adc.da.slrs.tsDictionaryType.service.ITsDicTypeService; import com.adc.da.util.LoginUserUtil; import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.annotation.CompareField; import com.adc.da.utils.util.FieldConvertUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -527,34 +529,43 @@ public class InsideOutsideMeetingServiceImpl extends ServiceImpl compareInsideOutsideMeeting(InsideOutsideMeeting oldMeeting, InsideOutsideMeeting newMeeting) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List changes = new ArrayList<>(); - // 不需要比较的字段 - String[] ignoreFields = {"id","validFlag","createTime","modifyTime","meetingMinutesList", "firstMeetingTypeName", "secondMeetingTypeName"}; - List ignoreFieldList = Arrays.asList(ignoreFields); // 获取SarLawsInformation类的所有字段 Field[] fields = InsideOutsideMeeting.class.getDeclaredFields(); for (Field field : fields) { - if (!ignoreFieldList.contains(field.getName())) { + boolean annotationPresent = field.isAnnotationPresent(CompareField.class); + if (annotationPresent) { try { field.setAccessible(true); - String oldValue = String.valueOf(field.get(oldMeeting)); - String newValue = String.valueOf(field.get(newMeeting)); + Object oldValue = field.get(oldMeeting); + Object newValue = field.get(newMeeting); + if (oldValue instanceof Date){ + oldValue = sdf.format((Date)oldValue); + } + if( newValue instanceof Date) { + newValue = sdf.format((Date)newValue); + } if (!Objects.equals(oldValue, newValue)) { if ("firstMeetingType".equals(field.getName()) || "secondMeetingType".equals(field.getName())) { + String oldValueStr = String.valueOf(oldValue); + String newValueStr = String.valueOf(newValue); String typeName = ""; - if (StringUtils.isNotBlank(newValue)) { - typeName = dicTypeService.getDicTypeNameByDicCode(newValue); + if (StringUtils.isNotBlank(newValueStr)) { + typeName = dicTypeService.getDicTypeNameByDicCode(newValueStr); } // 获取资料类型名称 String fieldName = field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1); Method method = InsideOutsideMeeting.class.getMethod("get" + fieldName + "Name"); Object oldTypeName = method.invoke(oldMeeting); - ApiModelProperty annotationsByType = field.getAnnotationsByType(ApiModelProperty.class)[0]; - changes.add(annotationsByType.value() + "由\"" + oldTypeName + "\"改为\"" + typeName + "\""); + CompareField annotationsByType = field.getAnnotationsByType(CompareField.class)[0]; + changes.add(annotationsByType.fieldName() + "由\"" + oldTypeName + "\"改为\"" + typeName + "\""); } else if ("meetingMinutes".equals(field.getName())) { + String oldValueStr = String.valueOf(oldValue); + String newValueStr = String.valueOf(newValue); List fileNameList = new ArrayList<>(); - if (StringUtils.isNotBlank(newValue)) { - String[] split = newValue.split(","); + if (StringUtils.isNotBlank(newValueStr)) { + String[] split = newValueStr.split(","); for (String attId : split) { AttFileEO fileInfo = attFileEOService.getFileInfo(attId); fileNameList.add(fileInfo.getOldFileName()); @@ -572,16 +583,22 @@ public class InsideOutsideMeetingServiceImpl extends ServiceImpl oldList = (List) oldInvoke; + List newList = (List) newInvoke; + if (!isListEqual(oldList, newList)) { + CompareField annotationsByType = field.getAnnotationsByType(CompareField.class)[0]; + changes.add(annotationsByType.fieldName() + "被变更"); + } + } else { + CompareField annotationsByType = field.getAnnotationsByType(CompareField.class)[0]; + changes.add(annotationsByType.fieldName() + "由\"" + oldValue + "\"改为\"" + newValue + "\""); } } } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { @@ -640,4 +657,24 @@ public class InsideOutsideMeetingServiceImpl extends ServiceImpl