|
@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.rongwei.sfcommon.utils.MlConstants.THEME_CHECK_STATUS_WAIT;
|
|
|
|
|
@@ -163,94 +164,79 @@ public class ThemeCheckServiceImpl extends ServiceImpl<ThemeCheckDao, ThemeCheck
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void sendMailByCheckId(String themeCheckId) {
|
|
|
- if (StringUtils.isBlank(themeCheckId)) {
|
|
|
- logger.error("检查计划ID 为空");
|
|
|
- return;
|
|
|
- }
|
|
|
+ JSCommonUtils.parameterCheck(() -> StringUtils.isBlank(themeCheckId), "检查计划ID 为空", "");
|
|
|
+
|
|
|
ThemeCheckDo themeCheckDo = this.getById(themeCheckId);
|
|
|
- if (themeCheckDo == null) {
|
|
|
- logger.debug("无法通过ID 获取到检查计划");
|
|
|
- return;
|
|
|
- }
|
|
|
- if (themeCheckDo.getCreatetask() != null && themeCheckDo.getCreatetask() == 1) {
|
|
|
- logger.debug("此检查计划已生成检查任务");
|
|
|
- return;
|
|
|
- }
|
|
|
+ JSCommonUtils.parameterCheck(() -> themeCheckDo == null, "无法通过ID 获取到检查计划", "无法通过ID 获取到检查计划", themeCheckId);
|
|
|
+ JSCommonUtils.parameterCheck(() -> themeCheckDo.getCreatetask() != null && themeCheckDo.getCreatetask() == 1,
|
|
|
+ "此检查计划已生成检查任务", "此检查计划已生成检查任务");
|
|
|
Map<String, Object> queryMap = new HashMap<>();
|
|
|
- queryMap.put("THEMECHECKID", themeCheckId);
|
|
|
- // 获取检查小组人员
|
|
|
- List<ThemeCheckWorkparkDo> themeCheckWorkparks = (List<ThemeCheckWorkparkDo>) themeCheckWorkparkService.listByMap(queryMap);
|
|
|
- if (themeCheckWorkparks.isEmpty()) {
|
|
|
- log.error("该检查计划没有检查小组");
|
|
|
- return;
|
|
|
- }
|
|
|
+ // 获取本次检查计划的
|
|
|
+ List<ThemeCheckWorkparkDo> themeCheckWorkparks = themeCheckWorkparkService
|
|
|
+ .list(new LambdaQueryWrapper<ThemeCheckWorkparkDo>().eq(ThemeCheckWorkparkDo::getThemecheckid, themeCheckId));
|
|
|
+ JSCommonUtils.parameterCheck(themeCheckWorkparks::isEmpty,
|
|
|
+ "本次计划暂无检查小组任务", "本次计划暂无检查小组任务");
|
|
|
// 获取所有检查小组的人员信息
|
|
|
- List<String> userIds = new ArrayList<>();
|
|
|
+
|
|
|
Set<String> uniqueValuesOuter = new HashSet<>();
|
|
|
- for (ThemeCheckWorkparkDo themeCheckWorkparkDo : themeCheckWorkparks) {
|
|
|
- String groupLeader = "";
|
|
|
- if (StringUtils.isNotBlank(themeCheckWorkparkDo.getGroupleader())) {
|
|
|
- groupLeader = themeCheckWorkparkDo.getGroupleader();
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(themeCheckWorkparkDo.getGroupusers())) {
|
|
|
- groupLeader = String.format(INSPECTION_TEAM, groupLeader, themeCheckWorkparkDo.getGroupusers());
|
|
|
+ // 获取检查任务中的所有人员ID
|
|
|
+ List<String> userIds = themeCheckWorkparks.stream().map(data -> {
|
|
|
+ String users = data.getGroupleader();
|
|
|
+ if (StringUtils.isNotBlank(data.getGroupusers())) {
|
|
|
+ users = String.format(INSPECTION_TEAM, users, data.getGroupusers());
|
|
|
}
|
|
|
- String[] apply = groupLeader.split(",");
|
|
|
- for (String s : apply) {
|
|
|
- if (StringUtils.isNotBlank(s)) {
|
|
|
- if (uniqueValuesOuter.add(s)) {
|
|
|
- userIds.add(s);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ return users.split(",");
|
|
|
+ }).flatMap(Arrays::stream).distinct().collect(Collectors.toList());
|
|
|
+ // 获取人员信息
|
|
|
List<SysUserDo> userList = sysUserService.list(new LambdaQueryWrapper<SysUserDo>().in(SysUserDo::getId, userIds));
|
|
|
// 当前检查小组的人员信息
|
|
|
HashSet<String> currentCheckUserIds = new HashSet<>();
|
|
|
+ // 需要保存检查任务的相关数据
|
|
|
List<ThemeCheckItemDo> saveCheckItemList = new ArrayList<ThemeCheckItemDo>();
|
|
|
List<ThemeCheckContentDo> saveCheckContentList = new ArrayList<ThemeCheckContentDo>();
|
|
|
+
|
|
|
// 获取检查小组中的所有检查主题
|
|
|
- List<String> checkTemplateIds = new ArrayList<>();
|
|
|
- Set<String> uniqueValues = new HashSet<>();
|
|
|
- for (ThemeCheckWorkparkDo themeCheckWorkpark : themeCheckWorkparks) {
|
|
|
- String checktemplateid = themeCheckWorkpark.getChecktemplateid();
|
|
|
- if (uniqueValues.add(checktemplateid)) {
|
|
|
- if (StringUtils.isNotBlank(checktemplateid)) {
|
|
|
- checkTemplateIds.add(checktemplateid);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ List<String> checkTemplateIds = themeCheckWorkparks.stream()
|
|
|
+ .map(ThemeCheckWorkparkDo::getChecktemplateid)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.toList());
|
|
|
// 检查主题明细
|
|
|
List<CheckTemplateItemsDo> checkTemplateItemsDos = checkTemplateItemsService.list(new LambdaQueryWrapper<CheckTemplateItemsDo>()
|
|
|
.eq(BaseDo::getDeleted, "0")
|
|
|
.in(CheckTemplateItemsDo::getChecktemplateid, checkTemplateIds)
|
|
|
);
|
|
|
- String mailSubject = MlConstants.THEMECHECK_TYPE_SPECIALCHECK.equals(themeCheckDo.getChecktype()) ? "周五专项检查" : "全厂检查";
|
|
|
+// String mailSubject = MlConstants.THEMECHECK_TYPE_SPECIALCHECK.equals(themeCheckDo.getChecktype()) ? "周五专项检查" : "全厂检查";
|
|
|
// 发送提醒的map
|
|
|
Map<String, String> sendNotifyMap = new HashMap<>();
|
|
|
// 生成检查任务
|
|
|
for (ThemeCheckWorkparkDo info : themeCheckWorkparks) {
|
|
|
- String groupleader = info.getGroupleader();
|
|
|
- String groupusers = info.getGroupusers();
|
|
|
+ String groupLeader = info.getGroupleader();
|
|
|
+ String groupUsers = info.getGroupusers();
|
|
|
currentCheckUserIds.clear();
|
|
|
- if (StringUtils.isNotBlank(groupleader)) {
|
|
|
- currentCheckUserIds.add(groupleader);
|
|
|
+ if (StringUtils.isNotBlank(groupLeader)) {
|
|
|
+ currentCheckUserIds.add(groupLeader);
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(groupusers)) {
|
|
|
- currentCheckUserIds.addAll(new HashSet<>(Arrays.asList(groupusers.split(","))));
|
|
|
+ if (StringUtils.isNotBlank(groupUsers)) {
|
|
|
+ currentCheckUserIds.addAll(new HashSet<>(Arrays.asList(groupUsers.split(","))));
|
|
|
}
|
|
|
+ SysUserDo userDo;
|
|
|
+ List<CheckTemplateItemsDo> chekTempItems;
|
|
|
for (String userId : currentCheckUserIds) {
|
|
|
- SysUserDo userDo = null;
|
|
|
- for (SysUserDo userInfo : userList) {
|
|
|
- if (userId.equals(userInfo.getId())) {
|
|
|
- userDo = userInfo;
|
|
|
- break;
|
|
|
- }
|
|
|
+ userDo = userList.stream().filter(user -> userId.equals(user.getId())).findFirst().orElse(null);
|
|
|
+ if (userDo == null) {
|
|
|
+ logger.error("无法根据用户id:{}获取到用户信息", userId);
|
|
|
+ break;
|
|
|
}
|
|
|
+ // 生成检查任务主表信息
|
|
|
ThemeCheckItemDo themeCheckItemDo = generateThemeCheckItem(userDo, info, themeCheckDo);
|
|
|
saveCheckItemList.add(themeCheckItemDo);
|
|
|
+
|
|
|
+ chekTempItems = checkTemplateItemsDos.stream()
|
|
|
+ .filter(data -> themeCheckItemDo.getId().equals(data.getChecktemplateid()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
int index = 1;
|
|
|
- for (CheckTemplateItemsDo checkTemplate : checkTemplateItemsDos) {
|
|
|
+ // 生成检查任务子表
|
|
|
+ for (CheckTemplateItemsDo checkTemplate : chekTempItems) {
|
|
|
saveCheckContentList.add(generateThemeCheckContent(userDo, themeCheckItemDo, checkTemplate, index));
|
|
|
index++;
|
|
|
}
|