ZQN
2024-06-19 d21773b0d86197d133ef4b16fe366232c345c665
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package com.project.enforce.service.impl;
 
import com.project.common.exception.base.BaseException;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforceEvaluateAnswer;
import com.project.enforce.domain.EnforceEvaluateQuestion;
import com.project.enforce.domain.bo.editBo.EnforceEvaluateBo;
import com.project.enforce.domain.vo.EnforceEvaluateVo;
import com.project.enforce.service.IEnforceEvaluateAnswerService;
import com.project.enforce.service.IEnforceEvaluateQuestionService;
import com.project.enforce.service.IEnforceEvaluateService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 */
 
@Service
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class EnforceEvaluateServiceImpl implements IEnforceEvaluateService
{
 
    private final IEnforceEvaluateQuestionService questionService;
    private final IEnforceEvaluateAnswerService answerService;
 
 
    @Override//保存
    @Transactional
    public Boolean save(EnforceEvaluateBo bo)
    {
        questionService.clearQuestionAndAnswer();
        List<EnforceEvaluateQuestion> questionList = bo.getQuestionList();
        if (StringUtils.isEmpty(questionList)){
            throw new BaseException("评价项不可为空!");
        }
        for (EnforceEvaluateQuestion question : bo.getQuestionList()) {
            if (question.getQuestionType()==1 && StringUtils.isEmpty(question.getAnswerList())){
                throw new BaseException("选择类型答案不可为空!");
            }
            if (question.getQuestionId()==null){
                int count = questionService.count(questionService.lq()
                        .eq(EnforceEvaluateQuestion::getQuestionName, question.getQuestionId()));
                if (count>0) {
                    throw new BaseException(StringUtils.format("{},重复,请重试!", question.getQuestionName()));
                }
            } else {
                int count = questionService.count(questionService.lq().
                        eq(EnforceEvaluateQuestion::getQuestionName, question.getQuestionId())
                        .ne(EnforceEvaluateQuestion::getQuestionId,question.getQuestionId()));
                if (count>0) {
                    throw new BaseException(StringUtils.format("{},题目重复,请重试!", question.getQuestionName()));
                }
            }
            questionService.saveOrUpdate(question);
            if (StringUtils.isNotEmpty(question.getAnswerList())){
                EnforceEvaluateQuestion one = questionService.getOne(questionService.lq().eq(EnforceEvaluateQuestion::getQuestionName, question.getQuestionName()));
                question.getAnswerList().forEach(enforceEvaluateAnswer -> {
                    enforceEvaluateAnswer.setQuestionId(one.getQuestionId());
                    enforceEvaluateAnswer.setQuestionName(one.getQuestionName());
                });
                answerService.saveOrUpdateBatch(question.getAnswerList());
            }
        }
        return true;
    }
 
    @Override//评价设置详情
    public EnforceEvaluateVo getInfo()
    {
        EnforceEvaluateVo vo = new EnforceEvaluateVo();
        List<EnforceEvaluateQuestion> questionList = questionService.list();
        for (EnforceEvaluateQuestion question : questionList) {
            if (question.getQuestionType()==1){
                List<EnforceEvaluateAnswer> answerList = answerService.list(answerService.lq().eq(EnforceEvaluateAnswer::getQuestionId, question.getQuestionId()));
                question.setAnswerList(answerList);
            }
        }
        vo.setQuestionList(questionList);
        return vo;
    }
}