package com.xjrsoft.module.evaluate.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.base.MPJBaseServiceImpl; import com.xjrsoft.common.exception.MyException; import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto; import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto; import com.xjrsoft.module.evaluate.entity.EvaluateExecuter; import com.xjrsoft.module.evaluate.entity.EvaluateItem; import com.xjrsoft.module.evaluate.entity.EvaluateManage; import com.xjrsoft.module.evaluate.entity.EvaluateManageItem; import com.xjrsoft.module.evaluate.entity.EvaluateObject; import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper; import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper; import com.xjrsoft.module.evaluate.mapper.EvaluateManageItemMapper; import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper; import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper; import com.xjrsoft.module.evaluate.service.IEvaluateManageService; import com.xjrsoft.module.evaluate.vo.EvaluateManageItemVo; import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo; import com.xjrsoft.module.evaluate.vo.EvaluateManageScoreVo; import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo; import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @title: 评价管理 * @Author dzx * @Date: 2024-01-16 * @Version 1.0 */ @Service @AllArgsConstructor public class EvaluateManageServiceImpl extends MPJBaseServiceImpl implements IEvaluateManageService { private final EvaluateManageMapper evaluateManageMapper; private final EvaluateObjectMapper evaluateObjectMapper; private final EvaluateExecuterMapper evaluateExecuterMapper; private final EvaluateItemMapper evaluateItemMapper; private final EvaluateManageItemMapper evaluateManageItemMapper; @Override @Transactional(rollbackFor = Exception.class) public Boolean add(EvaluateManage evaluateManage) { evaluateManage.setStatus(-1); evaluateManageMapper.insert(evaluateManage); return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean update(EvaluateManage evaluateManage) { evaluateManageMapper.updateById(evaluateManage); return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean delete(List ids) { evaluateManageMapper.deleteBatchIds(ids); evaluateObjectMapper.delete(Wrappers.lambdaQuery(EvaluateObject.class).in(EvaluateObject::getEvaluateManageId, ids)); evaluateExecuterMapper.delete(Wrappers.lambdaQuery(EvaluateExecuter.class).in(EvaluateExecuter::getEvaluateManageId, ids)); return true; } @Override public Page getPage(Page page, EvaluateManagePageDto dto) { return evaluateManageMapper.getPage(page, dto); } @Override public Boolean release(Long id) { EvaluateManage evaluateManage = evaluateManageMapper.selectById(id); if(evaluateManage == null){ throw new MyException("未查询到数据,请检查传入的id是否正确"); } // evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong()); //查询模板中的评价项 List evaluateItemList = evaluateItemMapper.selectList( new QueryWrapper().lambda() .eq(EvaluateItem::getEvaluateTemplateId, evaluateManage.getEvaluateTemplateId()) ); //克隆一份,存到评价管理下面,可以采用sql语句 for (EvaluateItem evaluateItem : evaluateItemList) { EvaluateManageItem manageItem = BeanUtil.toBean(evaluateItem, EvaluateManageItem.class); manageItem.setEvaluateManageId(evaluateManage.getId()); manageItem.setEvaluateItemId(manageItem.getId()); evaluateManageItemMapper.insert(manageItem); } //将评价管理状态改为进行中 evaluateManage.setStatus(1); evaluateManageMapper.updateById(evaluateManage); return true; } @Override public Page getMobilePage(Page page, EvaluateWritePageDto dto) { Page mobilePage = evaluateManageMapper.getMobilePage(page, dto); if(dto.getStatus() == 1){ List scoreList = evaluateManageMapper.getScoreList(); for (EvaluateWritePageVo record : mobilePage.getRecords()) { for (EvaluateManageScoreVo evaluateManageScoreVo : scoreList) { if(!record.getId().equals(evaluateManageScoreVo.getEvaluateManageId())){ continue; } record.setTotalScore(evaluateManageScoreVo.getScore()); } } } return mobilePage; } @Override public EvaluateWriteVo getWriteInfo(Long id) { return evaluateManageMapper.getWriteInfo(id); } @Override public List getItemList(Long id) { return evaluateManageMapper.getItemList(id); } @Override public List getResultList(Long id) { return evaluateManageMapper.getResultList(id, StpUtil.getLoginIdAsLong()); } }