|
|
@@ -0,0 +1,92 @@
|
|
|
+package com.xjrsoft.module.evaluate.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
|
|
|
+import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
|
|
|
+import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
|
|
|
+import com.xjrsoft.module.evaluate.vo.EvaluateItemGroupByTopicVo;
|
|
|
+import com.xjrsoft.module.evaluate.vo.EvaluateItemVo;
|
|
|
+import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 评价项
|
|
|
+* @Author szs
|
|
|
+* @Date: 2024-01-15
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapper, EvaluateItem> implements IEvaluateItemService {
|
|
|
+
|
|
|
+ private EvaluateItemMapper evaluateItemMapper;
|
|
|
+ @Override
|
|
|
+ public MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto) {
|
|
|
+ MakeEvaluateItemVo makeEvaluateItemVo = new MakeEvaluateItemVo();
|
|
|
+ //获取模板基本信息
|
|
|
+
|
|
|
+ //获取模板下的所有评价子项集合
|
|
|
+ MPJLambdaWrapper<EvaluateItem> evaluateItemWrapper = new MPJLambdaWrapper<>();
|
|
|
+ evaluateItemWrapper
|
|
|
+ .select(EvaluateItem::getId)
|
|
|
+ .select(EvaluateItem.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateItemVo.class).contains(x.getProperty()))
|
|
|
+ .eq(EvaluateItem::getEvaluateTemplateId, dto.getEvaluateTemplateId());
|
|
|
+
|
|
|
+ List<EvaluateItemVo> evaluateItemVoList = this.selectJoinList(EvaluateItemVo.class, evaluateItemWrapper);
|
|
|
+
|
|
|
+ Map<String, List<EvaluateItemVo>> groupedEvaluateItemVo = evaluateItemVoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(EvaluateItemVo::getTopic));
|
|
|
+
|
|
|
+ List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList = new ArrayList<>();
|
|
|
+ groupedEvaluateItemVo.forEach((topic, group) -> {
|
|
|
+ evaluateItemGroupByTopicVoList.add(new EvaluateItemGroupByTopicVo(){{
|
|
|
+ setTopic(topic);
|
|
|
+ setEvaluateItemVoList(group);
|
|
|
+ }});
|
|
|
+ });
|
|
|
+
|
|
|
+ makeEvaluateItemVo.setEvaluateItemGroupByTopicVoList(evaluateItemGroupByTopicVoList);
|
|
|
+
|
|
|
+ return makeEvaluateItemVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public Boolean addEvaluateItem(List<AddEvaluateItemDto> dto) {
|
|
|
+ //获取sortCode的最大数量
|
|
|
+ QueryWrapper<EvaluateItem> queryWrapperSortcode = new QueryWrapper<>();
|
|
|
+ queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
|
|
|
+ EvaluateItem e = this.getOne(queryWrapperSortcode);
|
|
|
+ int sortCode = e.getSortCode() + 1;
|
|
|
+ List<EvaluateItem> evaluateItemList = new ArrayList<>();
|
|
|
+ for (AddEvaluateItemDto addEvaluateItemDto : dto) {
|
|
|
+ addEvaluateItemDto.setSortCode(sortCode++);
|
|
|
+ EvaluateItem evaluateItem = BeanUtil.toBean(addEvaluateItemDto, EvaluateItem.class);
|
|
|
+ evaluateItem.setCreateDate(new Date());
|
|
|
+ evaluateItemList.add(evaluateItem);
|
|
|
+ }
|
|
|
+ return this.saveBatch(evaluateItemList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean updateEvaluateItem(List<AddEvaluateItemDto> dto) {
|
|
|
+ //先物理删除数据库中该模板下的所有评价项
|
|
|
+ evaluateItemMapper.physicalDeleteEvaluateItem(dto.get(0).getEvaluateTemplateId());
|
|
|
+ //添加新的评价项
|
|
|
+ return addEvaluateItem(dto);
|
|
|
+ }
|
|
|
+}
|