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); MessageVo.Inform inform = new MessageVo.Inform(projectId, userId);
inform.appendMessage(new MessageVo.Message(WebConstant.TemplateParam.Operator.value, userName)) 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.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; return inform;
} }
} }

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

@ -1,6 +1,7 @@
package com.ccsens.tall.persist.mapper; package com.ccsens.tall.persist.mapper;
import com.ccsens.tall.bean.po.SysOperation; import com.ccsens.tall.bean.po.SysOperation;
import com.ccsens.tall.bean.po.SysOperationMessage;
import com.ccsens.tall.bean.po.SysOperationMessageExample; import com.ccsens.tall.bean.po.SysOperationMessageExample;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; 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 * @param param docId 文档id
* fileId 文件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 * @param param
*/ */
void delDocOfFile(InputDocDto.DeleteDocOfFile param); void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception;
/** /**
* 修改上传文件的备注信息 * 修改上传文件的备注信息
* @param param * @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; 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 * @param code
@ -82,4 +109,6 @@ public interface IRobotService {
* @param taskRemind 需要发送的任务信息 * @param taskRemind 需要发送的任务信息
*/ */
void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception; 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; private ProTaskInputDocMapper proTaskInputDocMapper;
@Resource @Resource
private Snowflake snowflake; private Snowflake snowflake;
@Resource
private RobotService robotService;
@Resource
private ProTaskDetailMapper proTaskDetailMapper;
@ -206,17 +210,13 @@ public class InputDocService implements IInputDocService {
* @param param docId 文档id * @param param docId 文档id
*/ */
@Override @Override
public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) { public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) throws Exception{
//将之前的文件设置为不使用
// ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample();
// proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId());
// ProTaskInputRecord newProTaskInputRecord = new ProTaskInputRecord();
// newProTaskInputRecord.setStatus((byte)0);
// proTaskInputRecordMapper.updateByExampleSelective(newProTaskInputRecord,proTaskInputRecordExample);
if (ArrayUtil.isEmpty(param.getFileIds()) && StrUtil.isBlank(param.getRemark())){ if (ArrayUtil.isEmpty(param.getFileIds()) && StrUtil.isBlank(param.getRemark())){
throw new BaseException("请上传文件或填写备注信息"); throw new BaseException("请上传文件或填写备注信息");
} }
if (ObjectUtil.isNull(proTaskInputDocMapper.selectByPrimaryKey(param.getDocId()))){ ProTaskInputDoc doc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId());
if (ObjectUtil.isNull(doc)){
throw new BaseException("输入文档不存在或已删除"); throw new BaseException("输入文档不存在或已删除");
} }
//多文件添加 //多文件添加
@ -260,6 +260,10 @@ public class InputDocService implements IInputDocService {
} }
//TODO 发送消息 //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(); ProTaskInputDoc newDoc = new ProTaskInputDoc();
@ -374,6 +365,8 @@ public class InputDocService implements IInputDocService {
proTaskInputDoc.setId(param.getDocId()); proTaskInputDoc.setId(param.getDocId());
proTaskInputDoc.setRecStatus((byte)2); proTaskInputDoc.setRecStatus((byte)2);
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc); proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
} }
/** /**
@ -381,7 +374,7 @@ public class InputDocService implements IInputDocService {
* @param param * @param param
*/ */
@Override @Override
public void delDocOfFile(InputDocDto.DeleteDocOfFile param) { public void delDocOfFile(InputDocDto.DeleteDocOfFile param,Long userId) throws Exception{
//查看该输入文档下是否还有正在使用的文件 //查看该输入文档下是否还有正在使用的文件
ProTaskInputRecord proTaskInputRecord = proTaskInputRecordMapper.selectByPrimaryKey(param.getRecordId()); ProTaskInputRecord proTaskInputRecord = proTaskInputRecordMapper.selectByPrimaryKey(param.getRecordId());
@ -403,6 +396,13 @@ public class InputDocService implements IInputDocService {
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc); 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 * @param param
*/ */
@Override @Override
public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param) { public void updateDocOfRemark(InputDocDto.UpdateDocOfRemark param,Long userId) throws Exception{
ProTaskInputRecord record = new ProTaskInputRecord(); ProTaskInputRecord record = new ProTaskInputRecord();
record.setId(param.getRecordId()); record.setId(param.getRecordId());
if (StrUtil.isNotBlank(param.getRemark())){ if (StrUtil.isNotBlank(param.getRemark())){
record.setRemark(param.getRemark()); record.setRemark(param.getRemark());
} }
proTaskInputRecordMapper.updateByPrimaryKeySelective(record); 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)); 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.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.po.ProTaskDetail;
import com.ccsens.util.WechatUtil; import com.ccsens.util.WechatUtil;
import com.ccsens.util.wx.WxGzhUtil; import com.ccsens.util.wx.WxGzhUtil;
import com.ccsens.util.wx.WxTemplateMessage; import com.ccsens.util.wx.WxTemplateMessage;
@ -166,4 +167,22 @@ public class WxTemplateUtil {
message.setData(data); message.setData(data);
return message; 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 @MustLoginTall
@ApiOperation(value = "给输入文档上传文件", notes = "1007:给输入文档上传文件") @ApiOperation(value = "给输入文档上传文件", notes = "1007:给输入文档上传文件")
@RequestMapping(value = "/uploadForDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @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); log.info("给输入文档上传文件:{}",params);
iInputDocService.uploadForDoc(params.getParam(),params.getUserId()); iInputDocService.uploadForDoc(params.getParam(),params.getUserId());
log.info("给输入文档上传文件"); log.info("给输入文档上传文件");
@ -95,8 +95,8 @@ public class InputDocController {
log.info("修改输入文档"); log.info("修改输入文档");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@OperateType(value = 16)
@MustLogin @MustLoginTall
@ApiOperation(value = "删除输入文档", notes = "1007:删除输入文档") @ApiOperation(value = "删除输入文档", notes = "1007:删除输入文档")
@RequestMapping(value = "/delDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "/delDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) { public JsonResponse delDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) {
@ -106,23 +106,24 @@ public class InputDocController {
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@MustLogin @OperateType(value = 16)
@MustLoginTall
@ApiOperation(value = "删除输入文档中的文件", notes = "1007:删除输入文档中的文件") @ApiOperation(value = "删除输入文档中的文件", notes = "1007:删除输入文档中的文件")
@RequestMapping(value = "/delDocOfFile", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @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); log.info("删除输入文档中的文件:{}",params);
iInputDocService.delDocOfFile(params.getParam()); iInputDocService.delDocOfFile(params.getParam(),params.getUserId());
log.info("删除输入文档中的文件"); log.info("删除输入文档中的文件");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@OperateType(value = 14) @OperateType(value = 14)
@MustLogin @MustLoginTall
@ApiOperation(value = "修改上传文件的备注信息", notes = "1007:修改上传文件的备注信息") @ApiOperation(value = "修改上传文件的备注信息", notes = "1007:修改上传文件的备注信息")
@RequestMapping(value = "/updateDocOfRemark", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @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); log.info("修改上传文件的备注信息:{}",params);
iInputDocService.updateDocOfRemark(params.getParam()); iInputDocService.updateDocOfRemark(params.getParam(),params.getUserId());
log.info("修改上传文件的备注信息"); log.info("修改上传文件的备注信息");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }

Loading…
Cancel
Save