消息提醒和待办
parent
b8e9aa5a3a
commit
e411227d44
5
pom.xml
5
pom.xml
|
|
@ -49,6 +49,11 @@
|
||||||
<artifactId>web-infrastructure</artifactId>
|
<artifactId>web-infrastructure</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
|
||||||
|
<version>${spring-cloud-alibaba.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@
|
||||||
<groupId>com.zcloud.domain</groupId>
|
<groupId>com.zcloud.domain</groupId>
|
||||||
<artifactId>web-infrastructure</artifactId>
|
<artifactId>web-infrastructure</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
package com.zcloud.domain.command;
|
package com.zcloud.domain.command;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.alibaba.cola.exception.BizException;
|
import com.alibaba.cola.exception.BizException;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
|
import com.jjb.saas.message.client.message.facede.MessageFacade;
|
||||||
|
import com.jjb.saas.message.client.message.request.MessageSendCmd;
|
||||||
|
import com.jjb.saas.message.client.message.request.MessageTargetCmd;
|
||||||
import com.zcloud.domain.domain.enums.CommonFlagEnum;
|
import com.zcloud.domain.domain.enums.CommonFlagEnum;
|
||||||
import com.zcloud.domain.domain.enums.ScoreStatusEnum;
|
import com.zcloud.domain.domain.enums.ScoreStatusEnum;
|
||||||
import com.zcloud.domain.domain.gateway.ProjectTaskScoreInfoGateway;
|
import com.zcloud.domain.domain.gateway.ProjectTaskScoreInfoGateway;
|
||||||
|
|
@ -9,18 +14,27 @@ import com.zcloud.domain.domain.model.CorpInfoE;
|
||||||
import com.zcloud.domain.domain.model.ProjectTaskScoreInfoE;
|
import com.zcloud.domain.domain.model.ProjectTaskScoreInfoE;
|
||||||
import com.zcloud.domain.dto.ProjectTaskScoreInfoUpdateCmd;
|
import com.zcloud.domain.dto.ProjectTaskScoreInfoUpdateCmd;
|
||||||
import com.zcloud.domain.dto.ProjectTaskSetScoreCmd;
|
import com.zcloud.domain.dto.ProjectTaskSetScoreCmd;
|
||||||
|
import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO;
|
||||||
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
|
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
|
||||||
import com.zcloud.domain.persistence.repository.CorpInfoRepository;
|
import com.zcloud.domain.persistence.repository.CorpInfoRepository;
|
||||||
|
import com.zcloud.domain.persistence.repository.ProjectTaskGroupUserRepository;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskRepository;
|
import com.zcloud.domain.persistence.repository.ProjectTaskRepository;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskScoreInfoRepository;
|
import com.zcloud.domain.persistence.repository.ProjectTaskScoreInfoRepository;
|
||||||
|
import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil;
|
||||||
|
import com.zcloud.gbscommon.todolistmq.event.TodoListDeleteEvent;
|
||||||
|
import com.zcloud.gbscommon.utils.UuidUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -31,11 +45,16 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class ProjectTaskScoreInfoUpdateExe {
|
public class ProjectTaskScoreInfoUpdateExe {
|
||||||
private final ProjectTaskScoreInfoGateway projectTaskScoreInfoGateway;
|
private final ProjectTaskScoreInfoGateway projectTaskScoreInfoGateway;
|
||||||
private final ProjectTaskScoreInfoRepository projectTaskScoreInfoRepository;
|
private final ProjectTaskScoreInfoRepository projectTaskScoreInfoRepository;
|
||||||
private final ProjectTaskRepository projectTaskRepository;
|
private final ProjectTaskRepository projectTaskRepository;
|
||||||
private final CorpInfoRepository corpInfoRepository;
|
private final CorpInfoRepository corpInfoRepository;
|
||||||
|
private final ProjectTaskGroupUserRepository projectTaskGroupUserRepository;
|
||||||
|
@DubboReference
|
||||||
|
private final MessageFacade messageFacade;
|
||||||
|
private final TodoListEventPusherUtil todoListEventPusherUtil;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void execute(ProjectTaskScoreInfoUpdateCmd projectTaskScoreInfoUpdateCmd) {
|
public void execute(ProjectTaskScoreInfoUpdateCmd projectTaskScoreInfoUpdateCmd) {
|
||||||
|
|
@ -66,13 +85,14 @@ public class ProjectTaskScoreInfoUpdateExe {
|
||||||
//判断是否所有人都评分完成,如果完成则修改任务状态为完成
|
//判断是否所有人都评分完成,如果完成则修改任务状态为完成
|
||||||
List<ProjectTaskScoreInfoDO> listByTaskId = projectTaskScoreInfoRepository.getListByTaskId(info.getProjectTaskId());
|
List<ProjectTaskScoreInfoDO> listByTaskId = projectTaskScoreInfoRepository.getListByTaskId(info.getProjectTaskId());
|
||||||
Boolean finish = false;
|
Boolean finish = false;
|
||||||
|
BigDecimal averageScore = null;
|
||||||
if(listByTaskId.size()==listByTaskId.stream().filter(item -> item.getScore() != null).count()){
|
if(listByTaskId.size()==listByTaskId.stream().filter(item -> item.getScore() != null).count()){
|
||||||
BigDecimal totalScore = listByTaskId.stream()
|
BigDecimal totalScore = listByTaskId.stream()
|
||||||
.map(ProjectTaskScoreInfoDO::getScore)
|
.map(ProjectTaskScoreInfoDO::getScore)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
|
||||||
// 计算平均分并保留两位小数
|
// 计算平均分并保留两位小数
|
||||||
BigDecimal averageScore = totalScore.divide(new BigDecimal(listByTaskId.size()),2,RoundingMode.HALF_UP);
|
averageScore = totalScore.divide(new BigDecimal(listByTaskId.size()),2,RoundingMode.HALF_UP);
|
||||||
|
|
||||||
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCORED.getCode(),averageScore);
|
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCORED.getCode(),averageScore);
|
||||||
finish = true;
|
finish = true;
|
||||||
|
|
@ -80,10 +100,36 @@ public class ProjectTaskScoreInfoUpdateExe {
|
||||||
//修改为评分中
|
//修改为评分中
|
||||||
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCOREING.getCode(),null);
|
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCOREING.getCode(),null);
|
||||||
}
|
}
|
||||||
if(finish){
|
//删除对应待办
|
||||||
|
TodoListDeleteEvent event2 = new TodoListDeleteEvent();
|
||||||
|
event2.setForeignSubsidiaryKey(info.getId());// 业务附表ID 没有附表时为foreignKey的值
|
||||||
|
todoListEventPusherUtil.sendMessageDeleteEvent(event2);
|
||||||
|
|
||||||
|
|
||||||
|
if(finish && averageScore !=null){
|
||||||
//完成后,发送消息通知
|
//完成后,发送消息通知
|
||||||
|
List<ProjectTaskGroupUserDO> projectTaskGroupUserDOList = projectTaskGroupUserRepository.getListByTaskId(info.getProjectTaskId());
|
||||||
|
for (ProjectTaskGroupUserDO projectTaskGroupUserDO : projectTaskGroupUserDOList) {
|
||||||
|
MessageSendCmd messageSendCmd = new MessageSendCmd();
|
||||||
|
messageSendCmd.setBusinessId(UuidUtil.get32UUID());
|
||||||
|
MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
|
||||||
|
messageTargetCmd.setUserId(projectTaskGroupUserDO.getUserId());
|
||||||
|
messageSendCmd.setTargetCmd(messageTargetCmd);
|
||||||
|
messageSendCmd.setSourceCode("");
|
||||||
|
messageSendCmd.setNeedTokenEnum(false);
|
||||||
|
Map<String, Object> sendParams = new HashMap<String, Object>();
|
||||||
|
// sendParams.put("FirefightinglistName", info.getFireCheckName());
|
||||||
|
// sendParams.put("checkPeriod", info.getFireCheckTypeName());
|
||||||
|
messageSendCmd.setParams(sendParams);
|
||||||
|
try{
|
||||||
|
log.info("评分完成消息提醒发送消息参数:messageSendCmd: {}", JSONUtil.toJsonStr(messageSendCmd));
|
||||||
|
SingleResponse<Boolean> d = messageFacade.send(messageSendCmd);
|
||||||
|
log.info("评分完成消息提醒发送消息结果:d: {}", JSONUtil.toJsonStr(d));
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("评分完成消息提醒发送消息异常:messageSendCmd: {}", JSONUtil.toJsonStr(messageSendCmd), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,13 @@
|
||||||
package com.zcloud.domain.command;
|
package com.zcloud.domain.command;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.alibaba.cola.exception.BizException;
|
import com.alibaba.cola.exception.BizException;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.jjb.saas.message.client.message.facede.MessageFacade;
|
||||||
|
import com.jjb.saas.message.client.message.request.MessageSendCmd;
|
||||||
|
import com.jjb.saas.message.client.message.request.MessageTargetCmd;
|
||||||
import com.zcloud.domain.command.convertor.ProjectTaskGroupUserCoConvertor;
|
import com.zcloud.domain.command.convertor.ProjectTaskGroupUserCoConvertor;
|
||||||
import com.zcloud.domain.command.convertor.ProjectTaskInfoCoConvertor;
|
import com.zcloud.domain.command.convertor.ProjectTaskInfoCoConvertor;
|
||||||
import com.zcloud.domain.command.convertor.ProjectTaskScoreInfoCoConvertor;
|
import com.zcloud.domain.command.convertor.ProjectTaskScoreInfoCoConvertor;
|
||||||
|
|
@ -17,18 +23,20 @@ import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
|
||||||
import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO;
|
import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO;
|
||||||
import com.zcloud.domain.persistence.dataobject.ProjectTaskInfoDO;
|
import com.zcloud.domain.persistence.dataobject.ProjectTaskInfoDO;
|
||||||
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
|
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskGroupUserRepository;
|
import com.zcloud.domain.persistence.repository.*;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskInfoRepository;
|
import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskRepository;
|
import com.zcloud.gbscommon.todolistmq.event.TodoListAddBatchEvent;
|
||||||
import com.zcloud.domain.persistence.repository.ProjectTaskScoreInfoRepository;
|
import com.zcloud.gbscommon.todolistmq.event.TodoListAddEvent;
|
||||||
import com.zcloud.gbscommon.utils.Tools;
|
import com.zcloud.gbscommon.utils.Tools;
|
||||||
|
import com.zcloud.gbscommon.utils.UuidUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -40,6 +48,7 @@ import java.util.stream.Collectors;
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class ProjectTaskUpdateExe {
|
public class ProjectTaskUpdateExe {
|
||||||
private final ProjectTaskGateway projectTaskGateway;
|
private final ProjectTaskGateway projectTaskGateway;
|
||||||
private final ProjectTaskRepository projectTaskRepository;
|
private final ProjectTaskRepository projectTaskRepository;
|
||||||
|
|
@ -49,6 +58,9 @@ public class ProjectTaskUpdateExe {
|
||||||
private final ProjectTaskInfoRepository projectTaskInfoRepository;
|
private final ProjectTaskInfoRepository projectTaskInfoRepository;
|
||||||
private final ProjectTaskScoreInfoRepository projectTaskScoreInfoRepository;
|
private final ProjectTaskScoreInfoRepository projectTaskScoreInfoRepository;
|
||||||
private final ProjectTaskScoreInfoCoConvertor projectTaskScoreInfoCoConvertor;
|
private final ProjectTaskScoreInfoCoConvertor projectTaskScoreInfoCoConvertor;
|
||||||
|
private final TodoListEventPusherUtil todoListEventPusherUtil;
|
||||||
|
@DubboReference
|
||||||
|
private MessageFacade messageFacade;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void execute(ProjectTaskUpdateCmd projectTaskUpdateCmd) {
|
public void execute(ProjectTaskUpdateCmd projectTaskUpdateCmd) {
|
||||||
|
|
@ -155,13 +167,63 @@ public class ProjectTaskUpdateExe {
|
||||||
//评分状态
|
//评分状态
|
||||||
List<ProjectTaskDO> projectTaskDOExecutingList =projectTaskRepository.getExecutingList();
|
List<ProjectTaskDO> projectTaskDOExecutingList =projectTaskRepository.getExecutingList();
|
||||||
|
|
||||||
|
|
||||||
if(CollUtil.isNotEmpty(projectTaskDOExecutingList)){
|
if(CollUtil.isNotEmpty(projectTaskDOExecutingList)){
|
||||||
projectTaskDOExecutingList.forEach(info->{
|
projectTaskDOExecutingList.forEach(info->{
|
||||||
info.setExecuteStatus(ProjectTaskExecuteStatusEnum.FINISHED.getCode());
|
info.setExecuteStatus(ProjectTaskExecuteStatusEnum.FINISHED.getCode());
|
||||||
});
|
});
|
||||||
List<Long> idFinishedList = projectTaskDOExecutingList.stream().map(ProjectTaskDO::getId).collect(Collectors.toList());
|
List<Long> idFinishedList = projectTaskDOExecutingList.stream().map(ProjectTaskDO::getId).collect(Collectors.toList());
|
||||||
projectTaskRepository.updateExecuteStatusBatchById(ProjectTaskExecuteStatusEnum.FINISHED.getCode(),idFinishedList);
|
projectTaskRepository.updateExecuteStatusBatchById(ProjectTaskExecuteStatusEnum.FINISHED.getCode(),idFinishedList);
|
||||||
|
|
||||||
|
//每一个都需要 消息提醒和待办
|
||||||
|
for (ProjectTaskDO projectTaskDO : projectTaskDOExecutingList) {
|
||||||
|
try{
|
||||||
|
List<TodoListAddEvent> todoListAddEventList = new ArrayList<>();
|
||||||
|
List<ProjectTaskScoreInfoDO> projectTaskScoreInfoDOList = projectTaskScoreInfoRepository.getListByTaskId(projectTaskDO.getProjectTaskId());
|
||||||
|
for (ProjectTaskScoreInfoDO projectTaskScoreInfoDO : projectTaskScoreInfoDOList) {
|
||||||
|
//发送消息
|
||||||
|
MessageSendCmd messageSendCmd = new MessageSendCmd();
|
||||||
|
messageSendCmd.setBusinessId(UuidUtil.get32UUID());
|
||||||
|
MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
|
||||||
|
messageTargetCmd.setUserId(projectTaskScoreInfoDO.getUserId());
|
||||||
|
messageSendCmd.setTargetCmd(messageTargetCmd);
|
||||||
|
messageSendCmd.setSourceCode("");
|
||||||
|
messageSendCmd.setNeedTokenEnum(false);
|
||||||
|
Map<String, Object> sendParams = new HashMap<String, Object>();
|
||||||
|
// sendParams.put("FirefightinglistName", info.getFireCheckName());
|
||||||
|
// sendParams.put("checkPeriod", info.getFireCheckTypeName());
|
||||||
|
messageSendCmd.setParams(sendParams);
|
||||||
|
try{
|
||||||
|
log.info("任务结束消息提醒发送消息参数:messageSendCmd: {}", JSONUtil.toJsonStr(messageSendCmd));
|
||||||
|
SingleResponse<Boolean> d = messageFacade.send(messageSendCmd);
|
||||||
|
log.info("任务结束消息提醒发送消息结果:d: {}", JSONUtil.toJsonStr(d));
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("任务结束消息提醒发送消息异常:messageSendCmd: {}", JSONUtil.toJsonStr(messageSendCmd), e);
|
||||||
|
}
|
||||||
|
//待排查 待办
|
||||||
|
TodoListAddEvent event = new TodoListAddEvent();
|
||||||
|
event.setTitle(projectTaskScoreInfoDO.getUserName() + "-课题评分");
|
||||||
|
// event.setContent("您有一条[" + cmd.getFireCheckName() + "(" + cmd.getFireCheckTypeName() + ")】待检查,请您及时排查,避免超期。");
|
||||||
|
event.setContent("["+projectTaskDO.getProjectName()+"]已结束,请及时对本次课题任务进行评分");
|
||||||
|
event.setForeignKey(projectTaskDO.getId()); // 业务表ID -申请
|
||||||
|
event.setForeignSubsidiaryKey(projectTaskScoreInfoDO.getId()); // 业务附表ID 没有附表时为foreignKey的值
|
||||||
|
event.setReceiveUser(projectTaskScoreInfoDO.getUserId());// user表ID
|
||||||
|
event.setPcFlag(1); // 是否PC端待办 1是 0否
|
||||||
|
event.setAppFlag(1); // 是否APP端待办 1是 0否
|
||||||
|
event.setOtherParams(new JSONObject());
|
||||||
|
todoListAddEventList.add(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
TodoListAddBatchEvent event3 = new TodoListAddBatchEvent();
|
||||||
|
event3.setTodoListAddEventList(todoListAddEventList);
|
||||||
|
todoListEventPusherUtil.sendMessageAddBatchEvent(event3);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("发送待办消息失败",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue