EvaluateItemServiceImpl.java 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.xjrsoft.module.evaluate.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  6. import com.xjrsoft.common.utils.VoToColumnUtil;
  7. import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
  8. import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
  9. import com.xjrsoft.module.evaluate.entity.EvaluateItem;
  10. import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
  11. import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
  12. import com.xjrsoft.module.evaluate.vo.EvaluateItemGroupByTopicVo;
  13. import com.xjrsoft.module.evaluate.vo.EvaluateItemVo;
  14. import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import java.util.ArrayList;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @title: 评价项
  25. * @Author szs
  26. * @Date: 2024-01-15
  27. * @Version 1.0
  28. */
  29. @Service
  30. @AllArgsConstructor
  31. public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapper, EvaluateItem> implements IEvaluateItemService {
  32. private EvaluateItemMapper evaluateItemMapper;
  33. @Override
  34. public MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto) {
  35. MakeEvaluateItemVo makeEvaluateItemVo = new MakeEvaluateItemVo();
  36. //获取模板基本信息
  37. //获取模板下的所有评价子项集合
  38. MPJLambdaWrapper<EvaluateItem> evaluateItemWrapper = new MPJLambdaWrapper<>();
  39. evaluateItemWrapper
  40. .select(EvaluateItem::getId)
  41. .select(EvaluateItem.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateItemVo.class).contains(x.getProperty()))
  42. .eq(EvaluateItem::getEvaluateTemplateId, dto.getEvaluateTemplateId());
  43. List<EvaluateItemVo> evaluateItemVoList = this.selectJoinList(EvaluateItemVo.class, evaluateItemWrapper);
  44. Map<String, List<EvaluateItemVo>> groupedEvaluateItemVo = evaluateItemVoList.stream()
  45. .collect(Collectors.groupingBy(EvaluateItemVo::getTopic));
  46. List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList = new ArrayList<>();
  47. groupedEvaluateItemVo.forEach((topic, group) -> {
  48. evaluateItemGroupByTopicVoList.add(new EvaluateItemGroupByTopicVo(){{
  49. setTopic(topic);
  50. setEvaluateItemVoList(group);
  51. }});
  52. });
  53. makeEvaluateItemVo.setEvaluateItemGroupByTopicVoList(evaluateItemGroupByTopicVoList);
  54. return makeEvaluateItemVo;
  55. }
  56. @Override
  57. @Transactional
  58. public Boolean addEvaluateItem(List<AddEvaluateItemDto> dto) {
  59. //获取sortCode的最大数量
  60. QueryWrapper<EvaluateItem> queryWrapperSortcode = new QueryWrapper<>();
  61. queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
  62. EvaluateItem e = this.getOne(queryWrapperSortcode);
  63. int sortCode = e.getSortCode() + 1;
  64. List<EvaluateItem> evaluateItemList = new ArrayList<>();
  65. for (AddEvaluateItemDto addEvaluateItemDto : dto) {
  66. addEvaluateItemDto.setSortCode(sortCode++);
  67. EvaluateItem evaluateItem = BeanUtil.toBean(addEvaluateItemDto, EvaluateItem.class);
  68. evaluateItem.setCreateDate(new Date());
  69. evaluateItemList.add(evaluateItem);
  70. }
  71. return this.saveBatch(evaluateItemList);
  72. }
  73. @Override
  74. public Boolean updateEvaluateItem(List<AddEvaluateItemDto> dto) {
  75. //先物理删除数据库中该模板下的所有评价项
  76. evaluateItemMapper.physicalDeleteEvaluateItem(dto.get(0).getEvaluateTemplateId());
  77. //添加新的评价项
  78. return addEvaluateItem(dto);
  79. }
  80. }