ZQN
2024-06-22 b2c1822dc9ae8a67872193d182d9335d9a99655c
project-enforce/src/main/java/com/project/enforce/service/impl/EnforceEvaluateServiceImpl.java
@@ -1,19 +1,23 @@
package com.project.enforce.service.impl;
import cn.hutool.core.convert.Convert;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.JsonUtils;
import com.project.common.utils.NumberUtils;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforceEvaluateAnswer;
import com.project.enforce.domain.EnforceEvaluateLog;
import com.project.enforce.domain.EnforceEvaluateQuestion;
import com.project.enforce.domain.EnforceOrder;
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 com.project.enforce.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -30,17 +34,20 @@
    private final IEnforceEvaluateQuestionService questionService;
    private final IEnforceEvaluateAnswerService answerService;
    private final IEnforceOrderService orderService;
    private final IEnforceEvaluateLogService evaluateLogService;
    @Override//保存
    @Transactional
    public Boolean save(EnforceEvaluateBo bo)
    {
        questionService.clearQuestionAndAnswer();
        List<EnforceEvaluateQuestion> questionList = bo.getQuestionList();
        if (StringUtils.isEmpty(questionList)){
            throw new BaseException("题目不可为空!");
            throw new BaseException("评价项不可为空!");
        }
        for (EnforceEvaluateQuestion question : bo.getQuestionList()) {
        for (EnforceEvaluateQuestion question : questionList) {
            if (question.getQuestionType()==1 && StringUtils.isEmpty(question.getAnswerList())){
                throw new BaseException("选择类型答案不可为空!");
            }
@@ -48,16 +55,8 @@
                int count = questionService.count(questionService.lq()
                        .eq(EnforceEvaluateQuestion::getQuestionName, question.getQuestionId()));
                if (count>0) {
                    throw new BaseException(StringUtils.format("{},题目重复,请重试!", question.getQuestionName()));
                    throw new BaseException(StringUtils.format("{},重复,请重试!", question.getQuestionName()));
                }
                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());
                    });
                }
            } else {
                int count = questionService.count(questionService.lq().
                        eq(EnforceEvaluateQuestion::getQuestionName, question.getQuestionId())
@@ -68,14 +67,18 @@
            }
            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 null;
        return true;
    }
    @Override
    @Override//评价设置详情
    public EnforceEvaluateVo getInfo()
    {
        EnforceEvaluateVo vo = new EnforceEvaluateVo();
@@ -89,4 +92,38 @@
        vo.setQuestionList(questionList);
        return vo;
    }
    @Override
    @Transactional
    public Boolean saveOrder(EnforceEvaluateBo bo)
    {
        if (bo.getOrderId()==null){
            throw new BaseException("请选择评价执法单!");
        }
        List<EnforceEvaluateQuestion> questionList = bo.getQuestionList();
        if (StringUtils.isEmpty(questionList)){
            throw new BaseException("评价项不可为空!");
        }
        int count = evaluateLogService.count(EnforceEvaluateLog::getOrderId, bo.getOrderId());
        if (count>0) {
            throw new BaseException("该执法单已评价!");
        }
        BigDecimal totalScore = BigDecimal.ZERO;
        for (EnforceEvaluateQuestion question : questionList) {
            totalScore = NumberUtils.add(totalScore, question.getGetScore());
        }
        EnforceOrder order = orderService.getById(bo.getOrderId());
        EnforceEvaluateLog evaluateLog = Convert.convert(EnforceEvaluateLog.class, order);
        evaluateLog.setQuestionRemark(bo.getQuestionRemark());
        evaluateLog.setTotalScore(NumberUtils.divToBigDecSca2(totalScore,1));
        evaluateLog.setQuestionStatic(JsonUtils.objectToJson(bo.getQuestionList()));
        evaluateLogService.saveOrUpdate(evaluateLog);
        return orderService.update(orderService.lu()
                .set(EnforceOrder::getIsEva,1)
                .set(EnforceOrder::getTotalScore, totalScore)
        );
    }
}