Переглянути джерело

modify:

1. 上传评审结果限制在会议开始之后;
2. 用户同步修改,延迟删除;
tags/24101601
WendyYang 4 місяці тому
джерело
коміт
50115acb99
5 змінених файлів з 32 додано та 4 видалено
  1. +4
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java
  2. +10
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java
  3. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java
  4. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java
  5. +12
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java

+ 4
- 0
hz-pm-api/src/main/java/com/hz/pm/api/meeting/manage/MeetingManage.java Переглянути файл

@@ -1149,6 +1149,10 @@ public class MeetingManage {
if (!Boolean.TRUE.equals(meeting.getIsInnerProject())) {
throw ReturnException.wrap("此会议未关联项目");
}
LocalDateTime now = LocalDateTime.now();
if (meeting.getStartTime().isAfter(now)) {
throw ReturnException.wrap("会议未开始");
}
MeetingInnerProject mip = meetingInnerProjectService.getById(req.getMeetingProjectId());
if (mip.getReviewResult() != null) {
throw ReturnException.wrap("已上传专家评审结果");


+ 10
- 0
hz-pm-api/src/main/java/com/hz/pm/api/user/manage/SyncMhUserOrgManage.java Переглянути файл

@@ -9,6 +9,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.util.BizUtils;
@@ -40,6 +41,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@@ -109,6 +111,7 @@ public class SyncMhUserOrgManage {
}
}

@Transactional(rollbackFor = Exception.class)
public void syncUsers(LocalDateTime syncDateTime) {
MhRetDTO<List<MhUserDTO>> mhRet = mhApiClient.queryUsers(syncDateTime);
if (mhRet.isOk()) {
@@ -116,6 +119,7 @@ public class SyncMhUserOrgManage {
if (CollUtil.isEmpty(mhUsers)) {
return;
}
LocalDateTime now = LocalDateTime.now();
log.info("同步用户信息:{}条", mhUsers.size());
List<MhUnit> units = mhUnitService.list();
Map<Long, MhUnit> unitMap = CollUtils.listToMap(units, MhUnit::getId);
@@ -148,6 +152,7 @@ public class SyncMhUserOrgManage {
userInfo.setMobile(mhUser.getAccount());
}
userInfo.setMhUnitId(mhUser.getMhUnitId());
userInfo.setSyncTime(now);
savedList.add(userInfo);
}
if (!savedList.isEmpty()) {
@@ -155,6 +160,11 @@ public class SyncMhUserOrgManage {
userInfoService.saveOrUpdateBatch(savedList);
}
}
if (syncDateTime == null) {
Wrapper<UserInfo> delQuery = Wrappers.lambdaQuery(UserInfo.class)
.lt(UserInfo::getSyncTime, now.minusSeconds(1));
userInfoService.remove(delQuery);
}
} else {
log.error("同步用户信息失败:{}", JSONUtil.toJsonStr(mhRet));
}


+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/user/model/entity/UserInfo.java Переглянути файл

@@ -74,4 +74,9 @@ public class UserInfo implements Serializable {
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateBy;

/**
* 最后一次更新时间
*/
private LocalDateTime syncTime;

}

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserProperties.java Переглянути файл

@@ -19,7 +19,7 @@ public class SyncMhUserProperties {

public static final String PREFIX = "sync-mh-user";

private Integer fixedRate = 30;
private Integer fixedRate = 10;

private Boolean open = true;



+ 12
- 3
hz-pm-api/src/main/java/com/hz/pm/api/user/task/SyncMhUserTask.java Переглянути файл

@@ -28,11 +28,20 @@ public class SyncMhUserTask {
private final SyncMhUserProperties syncMhUserProperties;
private final SyncMhUserOrgManage syncMhUserOrgManage;

private volatile Integer fullSyncDate;

@Scheduled(fixedRateString = "#{syncMhUserProperties.getFixedRate()}", timeUnit = TimeUnit.MINUTES)
public void execute() {
Integer fixedRate = syncMhUserProperties.getFixedRate();
LocalDateTime syncDateTime = LocalDateTime.now().minusMinutes(fixedRate + 5L);
syncMhUserOrgManage.syncUsers(syncDateTime);
LocalDateTime now = LocalDateTime.now();
LocalDateTime currSyncDateTime;
if (now.getHour() == 0 && (fullSyncDate == null || fullSyncDate < now.getDayOfYear())) {
currSyncDateTime = null;
fullSyncDate = now.getDayOfYear();
} else {
Integer fixedRate = syncMhUserProperties.getFixedRate();
currSyncDateTime = now.minusMinutes(fixedRate + 3L);
}
syncMhUserOrgManage.syncUsers(currSyncDateTime);
}

}

Завантаження…
Відмінити
Зберегти