| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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);
- }
- }
|