EvaluateManageServiceImpl.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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.github.yulichang.wrapper.MPJLambdaWrapper;
  9. import com.xjrsoft.common.exception.MyException;
  10. import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
  11. import com.xjrsoft.module.evaluate.dto.EvaluateManageScoreDto;
  12. import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
  13. import com.xjrsoft.module.evaluate.entity.*;
  14. import com.xjrsoft.module.evaluate.mapper.*;
  15. import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
  16. import com.xjrsoft.module.evaluate.vo.*;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.stream.Collectors;
  25. /**
  26. * @title: 评价管理
  27. * @Author dzx
  28. * @Date: 2024-01-16
  29. * @Version 1.0
  30. */
  31. @Service
  32. @AllArgsConstructor
  33. public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManageMapper, EvaluateManage> implements IEvaluateManageService {
  34. private final EvaluateManageMapper evaluateManageMapper;
  35. private final EvaluateObjectMapper evaluateObjectMapper;
  36. private final EvaluateExecuterMapper evaluateExecuterMapper;
  37. private final EvaluateItemMapper evaluateItemMapper;
  38. private final EvaluateManageItemMapper evaluateManageItemMapper;
  39. @Override
  40. @Transactional(rollbackFor = Exception.class)
  41. public Boolean add(EvaluateManage evaluateManage) {
  42. evaluateManage.setStatus(-1);
  43. evaluateManageMapper.insert(evaluateManage);
  44. return true;
  45. }
  46. @Override
  47. @Transactional(rollbackFor = Exception.class)
  48. public Boolean update(EvaluateManage evaluateManage) {
  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. evaluateManageMapper.updateById(evaluateManage);
  86. return true;
  87. }
  88. @Override
  89. public Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
  90. Page<EvaluateWritePageVo> mobilePage = evaluateManageMapper.getMobilePage(page, dto);
  91. //获取所有评价管理下的所有的已评对象的得分
  92. Map<String, Map<String, Integer>> scoreByManageIdAndObject = new HashMap<>();
  93. Map<String, Integer> itemScore = new HashMap<>();
  94. if(dto != null && dto.getStatus() != null && dto.getStatus() == 1){
  95. List<Long> evaluateManageIdList = new ArrayList<>();
  96. List<Long> evaluateObjectIdList = new ArrayList<>();
  97. for (EvaluateWritePageVo record : mobilePage.getRecords()) {
  98. evaluateManageIdList.add(Long.parseLong(record.getEvaluateManageId()));
  99. evaluateObjectIdList.add(Long.parseLong(record.getEvaluateObjectId()));
  100. }
  101. //获取评价管理下的模板下的题目数量
  102. if(evaluateManageIdList.size() > 0){
  103. MPJLambdaWrapper<EvaluateManageItem> evaluateManageItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
  104. evaluateManageItemMPJLambdaWrapper
  105. .selectCount(EvaluateManageItem::getId, EvaluateWritePageVo::getItemCount)
  106. .selectAs(EvaluateManageItem::getEvaluateManageId, EvaluateWritePageVo::getEvaluateManageId)
  107. .in(EvaluateManageItem::getEvaluateManageId, evaluateManageIdList)
  108. .disableSubLogicDel();
  109. List<EvaluateWritePageVo> evaluateWritePageVoList = evaluateManageItemMapper.selectJoinList(EvaluateWritePageVo.class, evaluateManageItemMPJLambdaWrapper);
  110. for (EvaluateWritePageVo e : evaluateWritePageVoList) {
  111. itemScore.put(e.getEvaluateManageId(), e.getItemCount());
  112. }
  113. }
  114. if(evaluateManageIdList.size() > 0 && evaluateObjectIdList.size() > 0){
  115. List<EvaluateManageScoreVo> scoreList = evaluateManageMapper.getScoreList(new EvaluateManageScoreDto(){{
  116. setEvaluateManageIdList(evaluateManageIdList);
  117. setEvaluateObjectIdList(evaluateObjectIdList);
  118. setUserId(StpUtil.getLoginIdAsLong());
  119. }});
  120. //将scoreList解析成map
  121. Map<String, List<EvaluateManageScoreVo>> scoreByManageId = scoreList.stream()
  122. .collect(Collectors.groupingBy(EvaluateManageScoreVo::getEvaluateManageId));
  123. for (Map.Entry<String, List<EvaluateManageScoreVo>> entry : scoreByManageId.entrySet()) {
  124. Map<String, Integer> scoreByObject = new HashMap<>();
  125. for (EvaluateManageScoreVo evaluateManageScoreVo : entry.getValue()) {
  126. scoreByObject.put(evaluateManageScoreVo.getEvaluateObjectId(), evaluateManageScoreVo.getScore());
  127. }
  128. scoreByManageIdAndObject.put(entry.getKey(), scoreByObject);
  129. }
  130. }
  131. }
  132. for (EvaluateWritePageVo record : mobilePage.getRecords()) {
  133. if(scoreByManageIdAndObject.size() > 0){
  134. record.setTotalScore(scoreByManageIdAndObject.get(record.getEvaluateManageId()).get(record.getObjectId()));
  135. }
  136. if(itemScore.size() > 0){
  137. record.setItemCount(itemScore.get(record.getEvaluateManageId()));
  138. }
  139. }
  140. return mobilePage;
  141. }
  142. @Override
  143. public EvaluateWriteVo getWriteInfo(Long id) {
  144. return evaluateManageMapper.getWriteInfo(id);
  145. }
  146. @Override
  147. public List<EvaluateManageItemVo> getItemList(Long id) {
  148. return evaluateManageMapper.getItemList(id);
  149. }
  150. @Override
  151. public List<EvaluateManageItemVo> getResultList(Long id) {
  152. return evaluateManageMapper.getResultList(id, StpUtil.getLoginIdAsLong());
  153. }
  154. }