CommentController.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package jnpf.flowable.controller;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import io.swagger.v3.oas.annotations.Operation;
  4. import io.swagger.v3.oas.annotations.Parameter;
  5. import io.swagger.v3.oas.annotations.Parameters;
  6. import io.swagger.v3.oas.annotations.tags.Tag;
  7. import jakarta.validation.Valid;
  8. import jnpf.base.ActionResult;
  9. import jnpf.base.UserInfo;
  10. import jnpf.base.controller.SuperController;
  11. import jnpf.base.entity.SuperBaseEntity;
  12. import jnpf.base.vo.PageListVO;
  13. import jnpf.base.vo.PaginationVO;
  14. import jnpf.constant.MsgCode;
  15. import jnpf.exception.WorkFlowException;
  16. import jnpf.flowable.entity.CommentEntity;
  17. import jnpf.flowable.entity.TaskEntity;
  18. import jnpf.flowable.entity.TemplateNodeEntity;
  19. import jnpf.flowable.enums.NodeEnum;
  20. import jnpf.flowable.model.comment.CommentCrForm;
  21. import jnpf.flowable.model.comment.CommentListVO;
  22. import jnpf.flowable.model.comment.CommentPagination;
  23. import jnpf.flowable.model.templatenode.nodejson.NodeModel;
  24. import jnpf.flowable.service.CommentService;
  25. import jnpf.flowable.service.TaskService;
  26. import jnpf.flowable.service.TemplateNodeService;
  27. import jnpf.flowable.util.ServiceUtil;
  28. import jnpf.permission.entity.UserEntity;
  29. import jnpf.util.JsonUtil;
  30. import jnpf.util.StringUtil;
  31. import jnpf.util.UploaderUtil;
  32. import jnpf.util.UserProvider;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.web.bind.annotation.*;
  35. import java.util.List;
  36. import java.util.StringJoiner;
  37. import java.util.stream.Collectors;
  38. /**
  39. * 流程评论
  40. *
  41. * @author JNPF开发平台组
  42. * @version V3.1.0
  43. * @copyright 引迈信息技术有限公司
  44. */
  45. @Tag(name = "流程评论", description = "Comment")
  46. @RestController
  47. @RequestMapping("/api/workflow/comment")
  48. public class CommentController extends SuperController<CommentService, CommentEntity> {
  49. @Autowired
  50. private ServiceUtil serviceUtil;
  51. @Autowired
  52. private CommentService commentService;
  53. @Autowired
  54. private TaskService taskService;
  55. @Autowired
  56. private TemplateNodeService templateNodeService;
  57. /**
  58. * 获取流程评论列表
  59. *
  60. * @param pagination 分页模型
  61. * @return
  62. */
  63. @Operation(summary = "获取流程评论列表")
  64. @GetMapping
  65. public ActionResult<PageListVO<CommentListVO>> list(CommentPagination pagination) {
  66. List<CommentEntity> list = commentService.getlist(pagination);
  67. List<String> replyId = list.stream().map(CommentEntity::getReplyId).filter(StringUtil::isNotEmpty).collect(Collectors.toList());
  68. List<CommentEntity> replyList = commentService.getlist(replyId);
  69. List<CommentListVO> listVO = JsonUtil.getJsonToList(list, CommentListVO.class);
  70. List<String> userId = list.stream().map(SuperBaseEntity.SuperCBaseEntity::getCreatorUserId).collect(Collectors.toList());
  71. userId.addAll(replyList.stream().map(CommentEntity::getCreatorUserId).collect(Collectors.toList()));
  72. UserInfo userInfo = UserProvider.getUser();
  73. List<UserEntity> userName = serviceUtil.getUserName(userId);
  74. for (CommentListVO commentModel : listVO) {
  75. UserEntity userEntity = userName.stream().filter(t -> t.getId().equals(commentModel.getCreatorUserId())).findFirst().orElse(null);
  76. if (commentModel.getCreatorUserId().equals(userInfo.getUserId()) && !"1".equals(String.valueOf(commentModel.getDeleteShow()))) {
  77. commentModel.setIsDel(1); //1-删除按钮显示
  78. } else if ("1".equals(String.valueOf(commentModel.getDeleteShow()))) {
  79. commentModel.setIsDel(2); //1-删除按钮显示
  80. commentModel.setText("该评论已被删除");
  81. } else {
  82. commentModel.setIsDel(0);
  83. }
  84. commentModel.setCreatorUser(userEntity != null ? userEntity.getRealName() + "/" + userEntity.getAccount() : "");
  85. commentModel.setCreatorUserHeadIcon(userEntity != null ? UploaderUtil.uploaderImg(userEntity.getHeadIcon()) : commentModel.getCreatorUserHeadIcon());
  86. List<CommentEntity> collect = replyList.stream().filter(t -> t.getId().equals(commentModel.getReplyId())).collect(Collectors.toList());
  87. StringJoiner name = new StringJoiner(",");
  88. StringJoiner text = new StringJoiner(",");
  89. for (CommentEntity replyEntity : collect) {
  90. if (null != replyEntity) {
  91. UserEntity user = userName.stream().filter(t -> t.getId().equals(replyEntity.getCreatorUserId())).findFirst().orElse(null);
  92. if (user != null) {
  93. name.add(user.getRealName() + "/" + user.getAccount());
  94. }
  95. String resText = ("1".equals(String.valueOf(replyEntity.getDeleteShow())) || "1".equals(String.valueOf(replyEntity.getDeleteMark()))) ? "该评论已被删除" : replyEntity.getText();
  96. text.add(resText);
  97. }
  98. }
  99. commentModel.setReplyText(text.toString());
  100. commentModel.setReplyUser(name.toString());
  101. CommentEntity entity = list.stream().filter(e -> ObjectUtil.equals(e.getId(), commentModel.getId())).findFirst().orElse(null);
  102. if (null != entity) {
  103. commentModel.setFile(entity.getFiles());
  104. }
  105. }
  106. PaginationVO vo = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  107. return ActionResult.page(listVO, vo);
  108. }
  109. /**
  110. * 新建流程评论
  111. *
  112. * @param commentForm 流程评论模型
  113. * @return
  114. */
  115. @Operation(summary = "新建流程评论")
  116. @PostMapping
  117. @Parameters({
  118. @Parameter(name = "commentForm", description = "流程评论模型", required = true),
  119. })
  120. public ActionResult create(@RequestBody @Valid CommentCrForm commentForm) throws WorkFlowException {
  121. CommentEntity entity = JsonUtil.getJsonToBean(commentForm, CommentEntity.class);
  122. entity.setFiles(commentForm.getFile());
  123. commentService.create(entity);
  124. return ActionResult.success(MsgCode.SU002.get());
  125. }
  126. /**
  127. * 删除流程评论
  128. *
  129. * @param id 主键
  130. * @return
  131. */
  132. @Operation(summary = "删除流程评论")
  133. @DeleteMapping("/{id}")
  134. @Parameters({
  135. @Parameter(name = "id", description = "主键", required = true),
  136. })
  137. public ActionResult delete(@PathVariable("id") String id) {
  138. CommentEntity entity = commentService.getInfo(id);
  139. if (entity.getCreatorUserId().equals(UserProvider.getUser().getUserId())) {
  140. boolean delComment = false;
  141. TaskEntity task = taskService.getInfoSubmit(entity.getTaskId(), TaskEntity::getId, TaskEntity::getFlowId);
  142. if (task != null) {
  143. TemplateNodeEntity nodeEntity = templateNodeService.getList(task.getFlowId()).stream().filter(e -> StringUtil.equals(NodeEnum.global.getType(), e.getNodeType())).findFirst().orElse(null);
  144. if (nodeEntity != null) {
  145. NodeModel nodeModel = JsonUtil.getJsonToBean(nodeEntity.getNodeJson(), NodeModel.class);
  146. delComment = nodeModel.getHasCommentDeletedTips();
  147. }
  148. }
  149. commentService.delete(entity, delComment);
  150. return ActionResult.success(MsgCode.SU003.get());
  151. }
  152. return ActionResult.success(MsgCode.FA003.get());
  153. }
  154. }