ExerciseDoneResultServiceImpl.java 3.97 KB
package com.subsidy.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.dto.exercise.ImportHistory;
import com.subsidy.mapper.ExerciseDoneHistoryMapper;
import com.subsidy.model.*;
import com.subsidy.mapper.ExerciseDoneResultMapper;
import com.subsidy.service.ExerciseDoneResultService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.exercise.GetDoneDetailVO;
import org.apache.poi.ss.usermodel.DateUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.swing.text.DateFormatter;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Random;

/**
 * <p>
 * 学生课程习题完成情况 服务实现类
 * </p>
 *
 * @author DengMin
 * @since 2021-10-15
 */
@Service
public class ExerciseDoneResultServiceImpl extends ServiceImpl<ExerciseDoneResultMapper, ExerciseDoneResultDO> implements ExerciseDoneResultService {


    @Autowired
    private ExerciseDoneResultMapper exerciseDoneResultMapper;

    @Autowired
    private ExerciseDoneHistoryMapper exerciseDoneHistoryMapper;

    public GetDoneDetailVO getDoneDetail(ExerciseDoneResultDO exerciseDoneResultDO) {
        return this.baseMapper.getDoneDetail(exerciseDoneResultDO.getId());
    }

    public void importData(MultipartFile multipartFile) {

        try {
            ExcelUtil.readExcel(null, ImportHistory.class, multipartFile).forEach(s -> {

                //找到相同卷子相同分数的人
                List<ExerciseDoneResultDO> exerciseDoneResultDOS = exerciseDoneResultMapper.selectList(new QueryWrapper<ExerciseDoneResultDO>()
                        .lambda()
                        .eq(ExerciseDoneResultDO::getPaperId, s.getPaperId())
                        .eq(ExerciseDoneResultDO::getScore, s.getScore()));

                //随机获取一个人
                Random random = new Random();
                ExerciseDoneResultDO exerciseDoneResultDO = exerciseDoneResultDOS.get(random.nextInt(exerciseDoneResultDOS.size()));


                //找到这个人的答卷
                List<ExerciseDoneHistoryDO> exerciseDoneHistoryDOS = exerciseDoneHistoryMapper.selectList(new QueryWrapper<ExerciseDoneHistoryDO>()
                        .lambda()
                        .eq(ExerciseDoneHistoryDO::getDoneId, exerciseDoneResultDO.getId())
                        .eq(ExerciseDoneHistoryDO::getMemberId, exerciseDoneResultDO.getMemberId())
                        .eq(ExerciseDoneHistoryDO::getPaperId, exerciseDoneResultDO.getPaperId()));

                DateTimeFormatter formatter =
                        DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
                //遍历写入
                for (ExerciseDoneHistoryDO exerciseDoneHistoryDO : exerciseDoneHistoryDOS) {
                    ExerciseDoneHistoryDO ex = new ExerciseDoneHistoryDO();
                    BeanUtils.copyProperties(exerciseDoneHistoryDO, ex);
                    ex.setId(null);
                    ex.setMemberId(s.getMemberId());
                    ex.setDoneId(s.getId());
                    ex.setClassId(s.getClassId());
                    ex.setPaperId(s.getPaperId());
//                    DateUtil.getJavaDate()

                    ex.setCreateDate(LocalDateTime.parse(s.getCreate_date(), formatter));
                    exerciseDoneHistoryMapper.insert(ex);
                }

            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    public static void main(String[] args) {
        while (true) {
            System.out.println(new Random().nextInt(0));

        }
    }

}