Browse Source

输入文档消息相关

recovery
ma 4 years ago
parent
commit
d264adcbf4
  1. 3
      tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java
  2. 1
      tall/src/main/java/com/ccsens/tall/persist/mapper/SysOperationMessageMapper.java
  3. 6
      tall/src/main/java/com/ccsens/tall/service/IInputDocService.java
  4. 29
      tall/src/main/java/com/ccsens/tall/service/IRobotService.java
  5. 53
      tall/src/main/java/com/ccsens/tall/service/InputDocService.java
  6. 97
      tall/src/main/java/com/ccsens/tall/service/RobotService.java
  7. 19
      tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java
  8. 19
      tall/src/main/java/com/ccsens/tall/web/InputDocController.java

3
tall/src/main/java/com/ccsens/tall/bean/vo/MessageVo.java

@ -218,7 +218,8 @@ public class MessageVo {
MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value, projectName, WebConstant.Message.TYPE_LINK, Message.getProjectSettings(projectId)))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.TaskName.value,taskName));
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.TaskName.value,taskName))
.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,deliverName));
return inform;
}
}

1
tall/src/main/java/com/ccsens/tall/persist/mapper/SysOperationMessageMapper.java

@ -1,6 +1,7 @@
package com.ccsens.tall.persist.mapper;
import com.ccsens.tall.bean.po.SysOperation;
import com.ccsens.tall.bean.po.SysOperationMessage;
import com.ccsens.tall.bean.po.SysOperationMessageExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

6
tall/src/main/java/com/ccsens/tall/service/IInputDocService.java

@ -45,7 +45,7 @@ public interface IInputDocService {
* @param param docId 文档id
* fileId 文件id
*/
void uploadForDoc(InputDocDto.UploadForDoc param,Long userId);
void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) throws Exception;
/**
* 查看文档文件上传记录
@ -76,11 +76,11 @@ public interface IInputDocService {
* 删除输入文档中的文件
* @param param
*/
void delDocOfFile(InputDocDto.DeleteDocOfFile param);
void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception;
/**
* 修改上传文件的备注信息
* @param param
*/
void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param);
void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param,Long userId) throws Exception;
}

29
tall/src/main/java/com/ccsens/tall/service/IRobotService.java

@ -70,6 +70,33 @@ public interface IRobotService {
*/
void addCommentRobotSend(Long userId, ProTaskDetail proTaskDetail) throws Exception;
/**
* 上传输入文档的文件消息记录
* @param currentUserId
* @param task
* @param deliverable
* @throws Exception
*/
void uploadForDocRobotSend(Long currentUserId,ProTaskDetail task,String deliverable) throws Exception;
/**
* 删除输入文档中的文件消息记录
* @param userId
* @param taskDetail
* @param name
* @throws Exception
*/
void delDocRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/**
* 修改输入文档中的备注 消息记录
* @param userId
* @param taskDetail
* @param name
* @throws Exception
*/
void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception;
/**
* 查询模板
* @param code
@ -82,4 +109,6 @@ public interface IRobotService {
* @param taskRemind 需要发送的任务信息
*/
void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception;
}

53
tall/src/main/java/com/ccsens/tall/service/InputDocService.java

@ -51,6 +51,10 @@ public class InputDocService implements IInputDocService {
private ProTaskInputDocMapper proTaskInputDocMapper;
@Resource
private Snowflake snowflake;
@Resource
private RobotService robotService;
@Resource
private ProTaskDetailMapper proTaskDetailMapper;
@ -206,17 +210,13 @@ public class InputDocService implements IInputDocService {
* @param param docId 文档id
*/
@Override
public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) {
//将之前的文件设置为不使用
// ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample();
// proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId());
// ProTaskInputRecord newProTaskInputRecord = new ProTaskInputRecord();
// newProTaskInputRecord.setStatus((byte)0);
// proTaskInputRecordMapper.updateByExampleSelective(newProTaskInputRecord,proTaskInputRecordExample);
public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) throws Exception{
if (ArrayUtil.isEmpty(param.getFileIds()) && StrUtil.isBlank(param.getRemark())){
throw new BaseException("请上传文件或填写备注信息");
}
if (ObjectUtil.isNull(proTaskInputDocMapper.selectByPrimaryKey(param.getDocId()))){
ProTaskInputDoc doc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId());
if (ObjectUtil.isNull(doc)){
throw new BaseException("输入文档不存在或已删除");
}
//多文件添加
@ -260,6 +260,10 @@ public class InputDocService implements IInputDocService {
}
//TODO 发送消息
ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(doc.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)){
robotService.uploadForDocRobotSend(userId,taskDetail,doc.getName());
}
}
@ -328,19 +332,6 @@ public class InputDocService implements IInputDocService {
}
}
//删除记录表中已上传的文档
// if (1 == proTaskInputDoc.getIsUpload()){
// ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample();
// proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId());
// List<ProTaskInputRecord> proTaskInputRecords = proTaskInputRecordMapper.selectByExample(proTaskInputRecordExample);
// for (ProTaskInputRecord record:proTaskInputRecords){
// ProTaskInputRecord inputRecord = new ProTaskInputRecord();
// inputRecord.setId(record.getId());
// inputRecord.setStatus((byte)0);
// inputRecord.setRecStatus((byte)2);
// proTaskInputRecordMapper.updateByPrimaryKeySelective(inputRecord);
// }
// }
//修改数据
ProTaskInputDoc newDoc = new ProTaskInputDoc();
@ -374,6 +365,8 @@ public class InputDocService implements IInputDocService {
proTaskInputDoc.setId(param.getDocId());
proTaskInputDoc.setRecStatus((byte)2);
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
}
/**
@ -381,7 +374,7 @@ public class InputDocService implements IInputDocService {
* @param param
*/
@Override
public void delDocOfFile(InputDocDto.DeleteDocOfFile param) {
public void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception{
//查看该输入文档下是否还有正在使用的文件
ProTaskInputRecord proTaskInputRecord = proTaskInputRecordMapper.selectByPrimaryKey(param.getRecordId());
@ -403,6 +396,13 @@ public class InputDocService implements IInputDocService {
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
}
//TODO 发送消息
ProTaskInputDoc doc = proTaskInputDocMapper.selectByPrimaryKey(record.getInputDocId());
ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(doc.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)){
robotService.delDocRobotSend(userId,taskDetail,doc.getName());
}
}
/**
@ -410,13 +410,20 @@ public class InputDocService implements IInputDocService {
* @param param
*/
@Override
public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param) {
public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param,Long userId) throws Exception{
ProTaskInputRecord record = new ProTaskInputRecord();
record.setId(param.getRecordId());
if (StrUtil.isNotBlank(param.getRemark())){
record.setRemark(param.getRemark());
}
proTaskInputRecordMapper.updateByPrimaryKeySelective(record);
//TODO 发送消息
ProTaskInputDoc doc = proTaskInputDocMapper.selectByPrimaryKey(record.getInputDocId());
ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(doc.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)){
robotService.updateRemarkRobotSend(userId,taskDetail,doc.getName());
}
}
}

97
tall/src/main/java/com/ccsens/tall/service/RobotService.java

@ -386,6 +386,103 @@ public class RobotService implements IRobotService{
RobotUtil.setWxTemplate(WxTemplateUtil.getAddComment(project.getId(), userName));
}
/**
*上传输入文档文件 系统消息
*/
@Override
public void uploadForDocRobotSend(Long currentUserId, ProTaskDetail task, String deliverable) throws Exception {
String userName = userService.getUserNameByUserId(currentUserId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(task.getProjectId());
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.TaskName.value,task.getName()),
new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,deliverable)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(task.getExecutorRole());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
MessageVo.Inform inform = MessageVo.uploadForDocComment(currentUserId, userName, project.getId(), project.getName(), task.getName(),deliverable);
RobotUtil.setInform(inform);
// 添加wx消息通知
RobotUtil.setWxTemplate(WxTemplateUtil.uploadFileForDoc(project.getId(), userName,project.getName(),task.getName(),deliverable));
}
/**
* 删除输入文档中的文件
* @param userId 当前用户id
* @param taskDetail 任务详情对象
* @param name 文档名称
*/
@Override
public void delDocRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception{
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(taskDetail.getProjectId());
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.TaskName.value,taskDetail.getName()),
new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,name)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(taskDetail.getExecutorRole());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
}
/**
* 修改输入文档备注 消息记录
* @param userId
* @param taskDetail
* @param name
* @throws Exception
*/
@Override
public void updateRemarkRobotSend(Long userId, ProTaskDetail taskDetail, String name) throws Exception {
String userName = userService.getUserNameByUserId(userId);
String projectName = "";
SysProject project = sysProjectDao.selectByPrimaryKey(taskDetail.getProjectId());
if (ObjectUtil.isNotNull(project)){
projectName = project.getName();
}
//生成消息
RobotUtil.Message message = new RobotUtil.Message(project.getId());
message.appendParams(
new MessageVo.Message(WebConstant.TemplateParam.Operator.value,userName),
new MessageVo.Message(WebConstant.TemplateParam.ProjectName.value,projectName),
new MessageVo.Message(WebConstant.TemplateParam.TaskName.value,taskDetail.getName()),
new MessageVo.Message(WebConstant.TemplateParam.Deliverable.value,name)
);
//获取角色内成员的手机号
String[] memberPhone = getMemberPhonesByRoleId(taskDetail.getExecutorRole());
if(memberPhone.length != 0){
message.appendMentionedMobileList(memberPhone);
}
RobotUtil.setRobotMessage(message);
}
/**
* 通过机器人发送提醒消息
*/

19
tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java

@ -3,6 +3,7 @@ package com.ccsens.tall.util;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.po.ProTaskDetail;
import com.ccsens.util.WechatUtil;
import com.ccsens.util.wx.WxGzhUtil;
import com.ccsens.util.wx.WxTemplateMessage;
@ -166,4 +167,22 @@ public class WxTemplateUtil {
message.setData(data);
return message;
}
/**
* 给输入文档上传文件
* @param projectId
* @param userName
* @param deliverName
* @return
*/
public static WxTemplateMessage uploadFileForDoc(Long projectId, String userName,String projectName, String taskName, String deliverName) {
WxTemplateMessage message = getWxTemplateMessage(projectId);
message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId);
WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData();
data.setFirst(new WxTemplateMessage.TemplateSettings(""));
data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName + "在项目《"+projectName+"》内的"+taskName+"任务上传了输入文档:" + deliverName));
data.setKeyword2(new WxTemplateMessage.TemplateSettings("上传交付物"));
message.setData(data);
return message;
}
}

19
tall/src/main/java/com/ccsens/tall/web/InputDocController.java

@ -59,7 +59,7 @@ public class InputDocController {
@MustLoginTall
@ApiOperation(value = "给输入文档上传文件", notes = "1007:给输入文档上传文件")
@RequestMapping(value = "/uploadForDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse uploadForDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UploadForDoc> params) {
public JsonResponse uploadForDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UploadForDoc> params) throws Exception{
log.info("给输入文档上传文件:{}",params);
iInputDocService.uploadForDoc(params.getParam(),params.getUserId());
log.info("给输入文档上传文件");
@ -95,8 +95,8 @@ public class InputDocController {
log.info("修改输入文档");
return JsonResponse.newInstance().ok();
}
@OperateType(value = 16)
@MustLogin
@MustLoginTall
@ApiOperation(value = "删除输入文档", notes = "1007:删除输入文档")
@RequestMapping(value = "/delDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) {
@ -106,23 +106,24 @@ public class InputDocController {
return JsonResponse.newInstance().ok();
}
@MustLogin
@OperateType(value = 16)
@MustLoginTall
@ApiOperation(value = "删除输入文档中的文件", notes = "1007:删除输入文档中的文件")
@RequestMapping(value = "/delDocOfFile", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delDocOfFile(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDocOfFile> params) {
public JsonResponse delDocOfFile(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDocOfFile> params) throws Exception {
log.info("删除输入文档中的文件:{}",params);
iInputDocService.delDocOfFile(params.getParam());
iInputDocService.delDocOfFile(params.getParam(),params.getUserId());
log.info("删除输入文档中的文件");
return JsonResponse.newInstance().ok();
}
@OperateType(value = 14)
@MustLogin
@MustLoginTall
@ApiOperation(value = "修改上传文件的备注信息", notes = "1007:修改上传文件的备注信息")
@RequestMapping(value = "/updateDocOfRemark", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateDocOfRemark(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UpdateDocOfRemark> params) {
public JsonResponse updateDocOfRemark(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UpdateDocOfRemark> params) throws Exception{
log.info("修改上传文件的备注信息:{}",params);
iInputDocService.updateDocOfRemark(params.getParam());
iInputDocService.updateDocOfRemark(params.getParam(),params.getUserId());
log.info("修改上传文件的备注信息");
return JsonResponse.newInstance().ok();
}

Loading…
Cancel
Save