TaskLineServiceImpl.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package jnpf.flowable.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import jnpf.base.service.SuperServiceImpl;
  6. import jnpf.flowable.entity.RevokeEntity;
  7. import jnpf.flowable.entity.TaskLineEntity;
  8. import jnpf.flowable.mapper.TaskLineMapper;
  9. import jnpf.flowable.service.RevokeService;
  10. import jnpf.flowable.service.TaskLineService;
  11. import jnpf.util.RandomUtil;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.util.ArrayList;
  15. import java.util.Comparator;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.stream.Collectors;
  19. /**
  20. * 类的描述
  21. *
  22. * @author JNPF@YinMai Info. Co., Ltd
  23. * @version 5.0.x
  24. * @since 2024/8/23 17:37
  25. */
  26. @Service
  27. public class TaskLineServiceImpl extends SuperServiceImpl<TaskLineMapper, TaskLineEntity> implements TaskLineService {
  28. @Autowired
  29. private RevokeService revokeService;
  30. @Override
  31. public List<TaskLineEntity> getList(String taskId) {
  32. QueryWrapper<TaskLineEntity> queryWrapper = new QueryWrapper<>();
  33. queryWrapper.lambda().eq(TaskLineEntity::getTaskId, taskId);
  34. return this.list(queryWrapper);
  35. }
  36. @Override
  37. public void create(String taskId, Map<String, Boolean> conditionResMap) {
  38. if (CollectionUtil.isEmpty(conditionResMap)) {
  39. return;
  40. }
  41. List<TaskLineEntity> createList = new ArrayList<>();
  42. List<TaskLineEntity> updateList = new ArrayList<>();
  43. List<TaskLineEntity> list = this.getList(taskId);
  44. if (CollectionUtil.isNotEmpty(list)) {
  45. conditionResMap.forEach((k, v) -> {
  46. TaskLineEntity entity = list.stream().filter(e -> ObjectUtil.equals(k, e.getLineKey())).findFirst().orElse(null);
  47. if (null != entity) {
  48. Boolean b = conditionResMap.get(entity.getLineKey());
  49. if (null != b) {
  50. entity.setLineValue(String.valueOf(b));
  51. updateList.add(entity);
  52. }
  53. } else {
  54. entity = new TaskLineEntity();
  55. entity.setId(RandomUtil.uuId());
  56. entity.setTaskId(taskId);
  57. entity.setLineKey(k);
  58. entity.setLineValue(String.valueOf(v));
  59. createList.add(entity);
  60. }
  61. });
  62. } else {
  63. conditionResMap.forEach((k, v) -> {
  64. TaskLineEntity entity = new TaskLineEntity();
  65. entity.setId(RandomUtil.uuId());
  66. entity.setTaskId(taskId);
  67. entity.setLineKey(k);
  68. entity.setLineValue(String.valueOf(v));
  69. createList.add(entity);
  70. });
  71. }
  72. if (CollectionUtil.isNotEmpty(createList)) {
  73. this.saveBatch(createList);
  74. }
  75. if (CollectionUtil.isNotEmpty(updateList)) {
  76. this.updateBatchById(updateList);
  77. }
  78. }
  79. @Override
  80. public List<String> getLineKeyList(String taskId) {
  81. List<String> resList = new ArrayList<>();
  82. RevokeEntity revokeEntity = revokeService.getRevokeTask(taskId);
  83. if (null != revokeEntity) {
  84. taskId = revokeEntity.getTaskId();
  85. }
  86. List<TaskLineEntity> list = this.getList(taskId);
  87. Map<String, List<TaskLineEntity>> collect = list.stream().collect(Collectors.groupingBy(TaskLineEntity::getLineKey));
  88. collect.forEach((k, v) -> {
  89. List<TaskLineEntity> sortList = v.stream().sorted(Comparator.comparing(TaskLineEntity::getCreatorTime).reversed()).collect(Collectors.toList());
  90. boolean bo = Boolean.parseBoolean(sortList.get(0).getLineValue());
  91. if (bo) {
  92. resList.add(k);
  93. }
  94. });
  95. return resList;
  96. }
  97. }