CirculateServiceImpl.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package jnpf.flowable.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.github.yulichang.toolkit.JoinWrappers;
  6. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  7. import jnpf.base.service.SuperServiceImpl;
  8. import jnpf.flowable.entity.CirculateEntity;
  9. import jnpf.flowable.entity.TaskEntity;
  10. import jnpf.flowable.entity.TemplateEntity;
  11. import jnpf.flowable.enums.TaskStatusEnum;
  12. import jnpf.flowable.mapper.CirculateMapper;
  13. import jnpf.flowable.model.operator.OperatorVo;
  14. import jnpf.flowable.model.task.TaskPagination;
  15. import jnpf.flowable.service.CirculateService;
  16. import jnpf.util.StringUtil;
  17. import jnpf.util.UserProvider;
  18. import org.springframework.stereotype.Service;
  19. import java.util.Arrays;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @author :JNPF开发平台组
  25. * @version: V3.1.0
  26. * @copyright 引迈信息技术有限公司
  27. * @date :2024/4/29 下午5:21
  28. */
  29. @Service
  30. public class CirculateServiceImpl extends SuperServiceImpl<CirculateMapper, CirculateEntity> implements CirculateService {
  31. @Override
  32. public List<CirculateEntity> getList(String taskId) {
  33. QueryWrapper<CirculateEntity> queryWrapper = new QueryWrapper<>();
  34. queryWrapper.lambda().eq(CirculateEntity::getTaskId, taskId);
  35. return this.list(queryWrapper);
  36. }
  37. @Override
  38. public List<OperatorVo> getList(TaskPagination pagination) {
  39. String userId = StringUtil.isNotEmpty(pagination.getUserId()) ? pagination.getUserId() : UserProvider.getLoginUserId();
  40. MPJLambdaWrapper<CirculateEntity> wrapper = JoinWrappers.lambda(CirculateEntity.class)
  41. .selectAll(TaskEntity.class)
  42. .leftJoin(TaskEntity.class, TaskEntity::getId, CirculateEntity::getTaskId)
  43. .leftJoin(TemplateEntity.class, TemplateEntity::getId, TaskEntity::getTemplateId)
  44. .selectAs(TemplateEntity::getSystemId, OperatorVo::getSystemName)
  45. .selectAs(CirculateEntity::getNodeName, OperatorVo::getNodeName)
  46. .selectAs(CirculateEntity::getNodeCode, OperatorVo::getNodeCode)
  47. .selectAs(CirculateEntity::getId, OperatorVo::getId)
  48. .selectAs(TaskEntity::getId, OperatorVo::getTaskId)
  49. .selectAs(TaskEntity::getUrgent, OperatorVo::getFlowUrgent)
  50. .selectAs(CirculateEntity::getCreatorTime, OperatorVo::getCreatorTime)
  51. .ne(TaskEntity::getStatus, TaskStatusEnum.CANCEL.getCode())
  52. .eq(CirculateEntity::getUserId, userId);
  53. //关键字(流程名称、流程编码)
  54. String keyWord = pagination.getKeyword();
  55. if (ObjectUtil.isNotEmpty(keyWord)) {
  56. wrapper.and(t -> t.like(TaskEntity::getEnCode, keyWord).or().like(TaskEntity::getFullName, keyWord));
  57. }
  58. //日期范围(近7天、近1月、近3月、自定义)
  59. if (ObjectUtil.isNotEmpty(pagination.getStartTime()) && ObjectUtil.isNotEmpty(pagination.getEndTime())) {
  60. wrapper.between(TaskEntity::getStartTime, new Date(pagination.getStartTime()), new Date(pagination.getEndTime()));
  61. }
  62. //所属流程
  63. String templateId = pagination.getTemplateId();
  64. if (ObjectUtil.isNotEmpty(templateId)) {
  65. wrapper.eq(TaskEntity::getTemplateId, templateId);
  66. }
  67. //所属分类
  68. String category = pagination.getFlowCategory();
  69. if (ObjectUtil.isNotEmpty(category)) {
  70. List<String> categoryList = Arrays.stream(category.split(",")).collect(Collectors.toList());
  71. wrapper.in(TaskEntity::getFlowCategory, categoryList);
  72. }
  73. //是否已读
  74. Integer status = pagination.getStatus();
  75. if (ObjectUtil.isNotEmpty(status)) {
  76. wrapper.in(CirculateEntity::getCirculateRead, status);
  77. }
  78. //发起人员
  79. String creatorUserId = pagination.getCreatorUserId();
  80. if (ObjectUtil.isNotEmpty(creatorUserId)) {
  81. wrapper.in(TaskEntity::getCreatorUserId, creatorUserId);
  82. }
  83. //紧急程度
  84. Integer flowUrgent = pagination.getFlowUrgent();
  85. if (ObjectUtil.isNotEmpty(flowUrgent)) {
  86. wrapper.in(TaskEntity::getUrgent, flowUrgent);
  87. }
  88. //应用主建
  89. String systemId = pagination.getSystemId();
  90. if (ObjectUtil.isNotEmpty(systemId)) {
  91. wrapper.eq(TemplateEntity::getSystemId, systemId);
  92. }
  93. wrapper.orderByDesc(CirculateEntity::getCreatorTime);
  94. Page<OperatorVo> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
  95. Page<OperatorVo> data = this.selectJoinListPage(page, OperatorVo.class, wrapper);
  96. return pagination.setData(data.getRecords(), page.getTotal());
  97. }
  98. }