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