| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- package com.xjrsoft.module.evaluate.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- 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.entity.EvaluateTemplate;
- import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
- import com.xjrsoft.module.evaluate.mapper.EvaluateTemplateMapper;
- 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 com.xjrsoft.module.organization.entity.Department;
- import com.xjrsoft.module.organization.mapper.DepartmentMapper;
- import com.xjrsoft.module.system.entity.DictionaryDetail;
- 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;
- private EvaluateTemplateMapper evaluateTemplateMapper;
- private DepartmentMapper departmentMapper;
- @Override
- public MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto){
- //获取模板基本信息
- MPJLambdaWrapper<EvaluateTemplate> evaluateTemplateMPJLambdaWrapper = new MPJLambdaWrapper<>();
- evaluateTemplateMPJLambdaWrapper
- .select(EvaluateTemplate::getId)
- .selectAs(DictionaryDetail::getName, MakeEvaluateItemVo::getEvaluateTypeCN)
- .select(EvaluateTemplate.class, x -> VoToColumnUtil.fieldsToColumns(MakeEvaluateItemVo.class).contains(x.getProperty()))
- .eq(EvaluateTemplate::getId, dto.getEvaluateTemplateId())
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, EvaluateTemplate::getEvaluateType);
- MakeEvaluateItemVo makeEvaluateItemVo = evaluateTemplateMapper.selectJoinOne(MakeEvaluateItemVo.class,evaluateTemplateMPJLambdaWrapper);
- List<String> deptIdList = new ArrayList<>();
- try {
- ObjectMapper objectMapper = new ObjectMapper();
- deptIdList = objectMapper.readValue(makeEvaluateItemVo.getDeptIds(), new TypeReference<List<String>>() {});
- }catch (Exception e){
- }
- if(deptIdList != null && deptIdList.size() > 0){
- LambdaQueryWrapper<Department> departmentLambdaQueryWrapper = new LambdaQueryWrapper<>();
- departmentLambdaQueryWrapper
- .in(Department::getId, deptIdList);
- List<Department> departmentList = departmentMapper.selectList(departmentLambdaQueryWrapper);
- StringBuilder deptStr = new StringBuilder();
- for (int i = 0; i < departmentList.size(); i++) {
- deptStr.append(departmentList.get(i).getName());
- if(i < departmentList.size() - 1){
- deptStr.append(",");
- }
- }
- makeEvaluateItemVo.setDeptIdsCN(deptStr.toString());
- }
- //获取模板下的所有评价子项集合
- 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);
- }
- }
|