EvaluateManageServiceImpl.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.xjrsoft.module.evaluate.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.github.yulichang.base.MPJBaseServiceImpl;
  8. import com.xjrsoft.common.exception.MyException;
  9. import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
  10. import com.xjrsoft.module.evaluate.dto.EvaluateManageScoreDto;
  11. import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
  12. import com.xjrsoft.module.evaluate.entity.*;
  13. import com.xjrsoft.module.evaluate.mapper.*;
  14. import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
  15. import com.xjrsoft.module.evaluate.vo.*;
  16. import lombok.AllArgsConstructor;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.stream.Collectors;
  24. /**
  25. * @title: 评价管理
  26. * @Author dzx
  27. * @Date: 2024-01-16
  28. * @Version 1.0
  29. */
  30. @Service
  31. @AllArgsConstructor
  32. public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManageMapper, EvaluateManage> implements IEvaluateManageService {
  33. private final EvaluateManageMapper evaluateManageMapper;
  34. private final EvaluateObjectMapper evaluateObjectMapper;
  35. private final EvaluateExecuterMapper evaluateExecuterMapper;
  36. private final EvaluateItemMapper evaluateItemMapper;
  37. private final EvaluateManageItemMapper evaluateManageItemMapper;
  38. @Override
  39. @Transactional(rollbackFor = Exception.class)
  40. public Boolean add(EvaluateManage evaluateManage) {
  41. evaluateManage.setStatus(-1);
  42. evaluateManageMapper.insert(evaluateManage);
  43. return true;
  44. }
  45. @Override
  46. @Transactional(rollbackFor = Exception.class)
  47. public Boolean update(EvaluateManage evaluateManage) {
  48. //TODO 修改分两种情况,一种是还没有发布的修改,一种是已经发布的修改,已发布的修改只能修改结束时间。
  49. evaluateManageMapper.updateById(evaluateManage);
  50. return true;
  51. }
  52. @Override
  53. @Transactional(rollbackFor = Exception.class)
  54. public Boolean delete(List<Long> ids) {
  55. evaluateManageMapper.deleteBatchIds(ids);
  56. evaluateObjectMapper.delete(Wrappers.lambdaQuery(EvaluateObject.class).in(EvaluateObject::getEvaluateManageId, ids));
  57. evaluateExecuterMapper.delete(Wrappers.lambdaQuery(EvaluateExecuter.class).in(EvaluateExecuter::getEvaluateManageId, ids));
  58. return true;
  59. }
  60. @Override
  61. public Page<EvaluateManagePageVo> getPage(Page<EvaluateManagePageDto> page, EvaluateManagePageDto dto) {
  62. return evaluateManageMapper.getPage(page, dto);
  63. }
  64. @Override
  65. public Boolean release(Long id) {
  66. EvaluateManage evaluateManage = evaluateManageMapper.selectById(id);
  67. if(evaluateManage == null){
  68. throw new MyException("未查询到数据,请检查传入的id是否正确");
  69. }
  70. // evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong());
  71. //查询模板中的评价项
  72. List<EvaluateItem> evaluateItemList = evaluateItemMapper.selectList(
  73. new QueryWrapper<EvaluateItem>().lambda()
  74. .eq(EvaluateItem::getEvaluateTemplateId, evaluateManage.getEvaluateTemplateId())
  75. );
  76. //克隆一份,存到评价管理下面,可以采用sql语句
  77. for (EvaluateItem evaluateItem : evaluateItemList) {
  78. EvaluateManageItem manageItem = BeanUtil.toBean(evaluateItem, EvaluateManageItem.class);
  79. manageItem.setEvaluateManageId(evaluateManage.getId());
  80. manageItem.setEvaluateItemId(manageItem.getId());
  81. evaluateManageItemMapper.insert(manageItem);
  82. }
  83. //将评价管理状态改为进行中
  84. evaluateManage.setStatus(1);
  85. //设置两个定时器
  86. //第一个定时器控制结束
  87. //第二个定时器控制定时生成新的评价
  88. if(evaluateManage.getIsAutoCreate() != null && evaluateManage.getIsAutoCreate() == 1 && evaluateManage.getCreateFrequency() != null){
  89. }
  90. evaluateManageMapper.updateById(evaluateManage);
  91. return true;
  92. }
  93. @Override
  94. public Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
  95. Page<EvaluateWritePageVo> mobilePage = evaluateManageMapper.getMobilePage(page, dto);
  96. //获取所有评价管理下的所有的已评对象的得分
  97. Map<String, Map<String, Integer>> scoreByManageIdAndObject = new HashMap<>();
  98. if(dto != null && dto.getStatus() != null && dto.getStatus() == 1){
  99. List<Long> evaluateManageIdList = new ArrayList<>();
  100. List<Long> evaluateObjectIdList = new ArrayList<>();
  101. for (EvaluateWritePageVo record : mobilePage.getRecords()) {
  102. evaluateManageIdList.add(Long.parseLong(record.getEvaluateManageId()));
  103. evaluateObjectIdList.add(Long.parseLong(record.getEvaluateObjectId()));
  104. }
  105. if(evaluateManageIdList.size() > 0 && evaluateObjectIdList.size() > 0){
  106. List<EvaluateManageScoreVo> scoreList = evaluateManageMapper.getScoreList(new EvaluateManageScoreDto(){{
  107. setEvaluateManageIdList(evaluateManageIdList);
  108. setEvaluateObjectIdList(evaluateObjectIdList);
  109. setUserId(StpUtil.getLoginIdAsLong());
  110. }});
  111. //将scoreList解析成map
  112. Map<String, List<EvaluateManageScoreVo>> scoreByManageId = scoreList.stream()
  113. .collect(Collectors.groupingBy(EvaluateManageScoreVo::getEvaluateManageId));
  114. for (Map.Entry<String, List<EvaluateManageScoreVo>> entry : scoreByManageId.entrySet()) {
  115. Map<String, Integer> scoreByObject = new HashMap<>();
  116. for (EvaluateManageScoreVo evaluateManageScoreVo : entry.getValue()) {
  117. scoreByObject.put(evaluateManageScoreVo.getEvaluateObjectId(), evaluateManageScoreVo.getScore());
  118. }
  119. scoreByManageIdAndObject.put(entry.getKey(), scoreByObject);
  120. }
  121. }
  122. }
  123. if(scoreByManageIdAndObject.size() > 0){
  124. for (EvaluateWritePageVo record : mobilePage.getRecords()) {
  125. record.setTotalScore(scoreByManageIdAndObject.get(record.getEvaluateManageId()).get(record.getEvaluateObjectId()));
  126. }
  127. }
  128. return mobilePage;
  129. }
  130. @Override
  131. public EvaluateWriteVo getWriteInfo(Long id) {
  132. return evaluateManageMapper.getWriteInfo(id);
  133. }
  134. @Override
  135. public List<EvaluateManageItemVo> getItemList(Long id) {
  136. return evaluateManageMapper.getItemList(id);
  137. }
  138. @Override
  139. public List<EvaluateManageItemVo> getResultList(Long id) {
  140. return evaluateManageMapper.getResultList(id, StpUtil.getLoginIdAsLong());
  141. }
  142. }