StrategyCarReviewTaskFinish.java 4.2 KB
Newer Older
1 2
package com.ruoyi.service.impl;

wdy's avatar
wdy committed
3
import com.ruoyi.common.DataStatisticsUtils;
4 5
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
6
import com.ruoyi.domain.CarReviewTask;
wdy's avatar
wdy committed
7 8 9 10 11 12 13
import com.ruoyi.domain.ReviewDetailsResult;
import com.ruoyi.domain.ReviewStandard;
import com.ruoyi.domain.TaskUserRelation;
import com.ruoyi.mapper.TaskMapper;
import com.ruoyi.mapper.TaskUserRelationMapper;
import com.ruoyi.service.ReviewDetailsResultService;
import com.ruoyi.service.ReviewStandardService;
14 15 16 17 18
import com.ruoyi.service.StrategyCarReviewTask;
import com.ruoyi.web.response.CarReviewTaskViewResponse;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
W_Y's avatar
W_Y committed
19 20
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
21

wdy's avatar
wdy committed
22
import java.math.BigDecimal;
wdy's avatar
wdy committed
23
import java.util.List;
wdy's avatar
wdy committed
24 25 26 27 28
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

import static com.ruoyi.common.DataStatisticsUtils.calculateStandardsPass;
wdy's avatar
wdy committed
29

W_Y's avatar
W_Y committed
30 31
@Transactional
@Service
32 33 34 35 36 37 38 39
public class StrategyCarReviewTaskFinish implements StrategyCarReviewTask, InitializingBean {

    @Autowired
    private StrategyCarReviewTaskContext strategyCarReviewTaskContext;

    @Autowired
    private ApplicationContext applicationContext;

wdy's avatar
wdy committed
40 41 42 43 44 45 46 47 48 49 50 51
    @Autowired
    private ReviewStandardService reviewStandardService;

    @Autowired
    private ReviewDetailsResultService reviewDetailsResultService;

    @Autowired
    private TaskUserRelationMapper taskUserRelationMapper;

    @Autowired
    private TaskMapper taskMapper;

52 53 54 55 56 57 58 59 60

    // FINISH状态下
    // 1.standard字段使用task中归档的问卷
    // 2.不查询场景变更任务
    // 3.无需联查问卷答案
    @Override
    public CarReviewTaskViewResponse doView(CarReviewTask carReviewTask) {
        CarReviewTaskViewResponse response = new CarReviewTaskViewResponse();
        response.setCarReviewTask(carReviewTask);
wdy's avatar
wdy committed
61 62 63 64 65 66 67 68 69
        // 获取问卷
        List<ReviewStandard> carStandardTree = reviewStandardService.findTree(carReviewTask.getStandardId(), ReviewStandard.TYPE_CAR);

        // 获取当前问卷答案
        List<ReviewDetailsResult> carResults = reviewDetailsResultService.findByTaskId(carReviewTask.getId());

        // 车型审查
        setCarDataStatistics(carStandardTree,carResults,carReviewTask);

70 71 72 73 74
        return response;
    }

    @Override
    public void doStartReview(CarReviewTask carReviewTask) {
75
        throw new ServiceException("不能开始一个结束的任务", HttpStatus.ERROR);
76 77
    }

78 79 80 81 82
    @Override
    public void doConfirmReview(CarReviewTask carReviewTask) {
        throw new ServiceException("不能确认一个结束的任务", HttpStatus.ERROR);
    }

83
    @Override
wdy's avatar
wdy committed
84
    public void doSubmitReview(CarReviewTask carReviewTask, List<String> imagesUrl, List<Long> testScenarioList) {
85
        throw new ServiceException("不能提交一个结束的任务", HttpStatus.ERROR);
86 87
    }

wdy's avatar
wdy committed
88 89 90 91 92
    private void setCarDataStatistics(List<ReviewStandard> standards, List<ReviewDetailsResult> results, CarReviewTask carReviewTask) {
        Map<Long, ReviewDetailsResult> resultMap = results.stream().collect(Collectors.toMap(ReviewDetailsResult::getReviewDetailsId, Function.identity(), (v1, v2) -> v1));

        List<TaskUserRelation> relationList = taskUserRelationMapper.selectQTeamMembers(taskMapper.findByCarReviewTaskId(carReviewTask.getId()));

wdy's avatar
wdy committed
93 94 95 96
        BigDecimal standardPass = new BigDecimal((calculateStandardsPass(standards, resultMap) / (double) carReviewTask.getStandards())*100);
        carReviewTask.setStandardsPass(standardPass.setScale(1,BigDecimal.ROUND_UP).doubleValue());
        BigDecimal detailsPass = new BigDecimal((DataStatisticsUtils.calculateDetailsPass(standards, resultMap) / (double) carReviewTask.getDetails())*100);
        carReviewTask.setDetailsPass(detailsPass.setScale(1,BigDecimal.ROUND_UP).doubleValue());
wdy's avatar
wdy committed
97 98 99 100
        carReviewTask.setPerson(relationList.size());

    }

101 102
    @Override
    public void afterPropertiesSet() throws Exception {
103
        strategyCarReviewTaskContext.putResource(CarReviewTask.TASK_STATUS_FINISH, applicationContext.getBean(this.getClass()));
104 105
    }
}