//package com.ruoyi.hezhi.service.impl;
//
//import com.ruoyi.common.exception.base.BaseException;
//import org.apache.poi.hssf.usermodel.HSSFCell;
//import org.apache.poi.hssf.usermodel.HSSFRow;
//import org.apache.poi.hssf.usermodel.HSSFSheet;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.util.*;
//
///**
// * @Author haoxuyang
// * @Date 2025/1/20 15:57
// */
//public class test {
//    public String importData(MultipartFile file) {
//        // 	     datalist拼装List<String[]> deadliest,
//        HSSFWorkbook wookbook = new HSSFWorkbook(file.getInputStream());
//        HSSFSheet sheet = wookbook.getSheetAt(0);
//        // 		指的行数，一共有多少行+
//        int rows = sheet.getLastRowNum();
//        Calendar calendar = Calendar.getInstance();
//
//        List<NxbSubject> subjectR = nxbSubjectService.getSubjectListByType(SubjectType.EXAM.toString());
//        for (int i = 1; i <= rows; i++) {
//            // 读取左上端单元格
//            HSSFRow row = sheet.getRow(i);
//            // 行不为空
//            if (row != null) {
//                // 获取到Excel文件中的所有的列
//                int maxcell = row.getLastCellNum();
//                // **读取cell**
//                String content = getCellValue(row.getCell((short) 0));// 试题内容
//                String subjectId = getCellValue(row.getCell((short) 1));// 专业ID
//                String pointId = trimZero(getCellValue(row.getCell((short) 2)));// 考点
//                String isAsr = getCellValue(row.getCell((short) 3));// 正确答案
//                String type = getCellValue(row.getCell((short) 4));// 题型
//                String level = trimZero(getCellValue(row.getCell((short) 5)));// 试题难度
//                String analyze = getCellValue(row.getCell((short) 6));// 解析
//
//                String optionA = getCellValue(row.getCell((short) 7));  // A
//                String optionB = getCellValue(row.getCell((short) 8));  // B
//                String optionC = getCellValue(row.getCell((short) 9));  // C
//                String optionD = getCellValue(row.getCell((short) 10)); // D
//                String optionE = getCellValue(row.getCell((short) 11)); // E
//                String optionF = getCellValue(row.getCell((short) 12)); // F
//                String optionG = getCellValue(row.getCell((short) 13)); // D
//
//                if(StringUtils.isEmpty(content)&&
//                        StringUtils.isEmpty(subjectId)&&
//                        StringUtils.isEmpty(isAsr)&&
//                        StringUtils.isEmpty(type)&&
//                        StringUtils.isEmpty(level)&&
//                        StringUtils.isEmpty(analyze)){
//                    break;
//                }
//
//
//                // 试题内容，专业，正确答案，试题类型，试题难度
//                if (StringUtils.isEmpty(content) || StringUtils.isEmpty(subjectId) || StringUtils.isEmpty(isAsr) || StringUtils.isEmpty(type) || StringUtils.isEmpty(level)) {
//                    throw new BaseException(
//                            "第" + i + "行，试题内容为<" + content + ">的那条数据数据不能为空（试题内容，专业，正确答案，试题类型，试题难度）");
//                }
//                logger.info("试题类型：" + type);
//                switch (type) {
//                    case "单选":
//                        type = "1";
//                        break;
//                    case "多选":
//                        type = "2";
//                        break;
//                    case "判断":
//                        type = "3";
//                        break;
//                    case "不定项":
//                        type = "5";
//                        break;
//                    default:
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据试题类型不正确（试题类型只能输入单选,多选,判断,不定项）");
//                }
//                // 专业ID必须是大于0的正整数
//                if (!StringUtils.isNumber(subjectId)||Long.parseLong(subjectId)<=0) {
//                    throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据专业ID必须是大于0的正整数");
//                }
//                //该 专业ID必须是该公司所有
//                NxbQuerySubject nxbQuerySubject=new NxbQuerySubject();
//                nxbQuerySubject.setCompanyId(companyId);
//                nxbQuerySubject.setSubjectId(Long.parseLong(subjectId));
//                List<NxbSubject> subjectList = nxbSubjectDao.getSubjectList(nxbQuerySubject);
//                if (subjectList==null||subjectList.size()==0) {
//                    throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据专业ID必须是该分公司所拥有的");
//                }
//
////				// 考点必须是大于0的正整数
////				if (!StringUtils.isNumber(pointId)||Long.parseLong(pointId)<=0) {
////					throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据考点ID必须是大于0的正整数");
////				}
//                // 试题难度
//                logger.info("试题难度:" + level);
//                switch (level) {
//                    case "一级":
//                        level = "1";
//                        break;
//                    case "二级":
//                        level = "2";
//                        break;
//                    case "三级":
//                        level = "3";
//                        break;
//                    default:
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据的试题难度必须是一级、二级、三级其中的一个");
//                }
//                int typeInt = ConvertUtils.objectToInt(type);
//                // 如果为判断题最多2个选项
//                if (typeInt == 3) {
//                    if (StringUtils.isEmpty(optionA) || StringUtils.isEmpty(optionB)) {
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据为判断题，选项A或选项B不能为空");
//                    }
//                    if (StringUtils.isNotEmpty(optionD) || StringUtils.isNotEmpty(optionE)
//                            || StringUtils.isNotEmpty(optionF) || StringUtils.isNotEmpty(optionG)) {
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据为判断题，选项D，E，F，G必须为空");
//                    }
//                }
//                // 如果不是判断题，选项必须大于等于4个小于等于7个选项
//                if (typeInt != 3) {
//                    if (StringUtils.isEmpty(optionA) || StringUtils.isEmpty(optionB) ) {
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据为选择题，选项A，B不能为空");
//                    }
//                }
//                // 如果为多选题正确答案必须在两个以上
//                if (typeInt == 2 && isAsr.trim().length() < 2) {
//                    throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据的为多选题，正确答案必须在两个以上（例：AB）");
//                }
//                // 如果为单选题或者判断题答案只能有一个
//                if (typeInt == 1 || typeInt == 3) {
//                    if (isAsr.trim().length() > 1) {
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据的正确答案只能有一个（例：A）");
//                    }
//                }
//                // 选项不能超过7个字符
//                if (isAsr.trim().length() > 7) {
//                    throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据正确答案不能超过7个字符（例AB）");
//                }
//                // 验证正确答案不能输入其他字符
//                char[] asr = isAsr.toString().trim().toCharArray();
//                String asrStr = "";
//                for (int y = 0; y < asr.length; y++) {
//                    asrStr += asr[y] + ",";
//                    if ("ABCDEFG".indexOf(String.valueOf(asr[y])) == -1) {
//                        throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据正确答案输入字符格式不正确（例AB）");
//                    }
//                }
//                isAsr = asrStr.substring(0, asrStr.length() - 1);
//
//
//                Question question = new Question();
//                question.setStatus(1);
//                // 试题类型
//                int qstType = typeInt;
//                question.setQstType(qstType);
//                // 验证项目ID
//                Long subjectIdLong = Long.valueOf(subjectId.trim());
//                for (int x = 0; x < subjectR.size(); x++) {
//                    if (subjectR.get(x).getSubjectId().longValue() == subjectIdLong.longValue()) {
//                        question.setSubjectId(subjectIdLong);
//                        break;
//                    }
//                }
//                // 如果输入的专业不匹配
//                if (question.getSubjectId() == null || question.getSubjectId().intValue() <= 0) {
//                    throw new BaseException("第" + i + "行，试题内容为<" + content + ">的那条数据的专业id不匹配");
//                }
//                // 验证考点
//                if(StringUtils.isNotEmpty(pointId)){
//                    Long pointIdLong = Long.valueOf(pointId.trim());
//                    ExamPoint point = new ExamPoint();
//                    point.setSubjectId(subjectIdLong);
//                    point.setId(pointIdLong);
//                    List<ExamPoint> pointList = pointDao.getPointList(point);
//                    if (!pointList.isEmpty()) {
//                        question.setPointId(pointIdLong);
//                    }
//                }
//
//                //调整答案顺序
//                if(typeInt==2){
//                    String[] chars = isAsr.split(",");
//                    Arrays.sort(chars);
//                    if(ObjectUtils.isNotNull(chars)&&chars.length>1){
//                        StringBuilder isAsrs=new StringBuilder();
//                        for (String s:chars){
//                            isAsrs.append(s);
//                            isAsrs.append(",");
//                        }
//                        isAsr=isAsrs.substring(0,isAsrs.length()-1);
//                    }
//                }
//                question.setLevel(ConvertUtils.objectToInt(level));
//                question.setQstContent(content);
//                question.setIsAsr(isAsr);
//                question.setQstAnalyze(analyze);
//                question.setAddTime(new Date());
//                question.setAuthor("admin");
//                question.setCompanyId(companyId);	// 公司ID
//                questionDao.addOneQuestion(question);
//                int AASC = 64;
//                List<String> str = new ArrayList<String>();
//                // 把选项的值放入list中
//                str.add(optionA);
//                str.add(optionB);
//                str.add(optionC);
//                str.add(optionD);
//                str.add(optionE);
//                str.add(optionF);
//                str.add(optionG);
//
//                List<QuestionOption> optionList = new ArrayList<>();
//
//                for (int k = 0; k < str.size(); k++) {
//                    // 如果选项为空字符串则不添加该选项
//                    if (!"".equals(str.get(k).trim())) {
//                        QuestionOption option = new QuestionOption();
//                        option.setAddTime(new Date());
//                        option.setOptAnswer(question.getIsAsr());
//                        option.setOptContent(str.get(k).trim());
//                        option.setQstId(question.getId());
//                        char data[] = { backchar(AASC += 1) };
//                        option.setOptOrder(String.valueOf(data));
//                        optionList.add(option);
//                    }
//                }
//                Map<String, List<QuestionOption>> map = new HashMap<>();
//                map.put("optionList", optionList);
//                optionDao.addOptionBatch(map);
//            }
//        }
//        return "";
//    }
//
//    /**
//     * 获得Hsscell内容
//     *
//     * @param cell
//     * @return
//     */
//    public String getCellValue(HSSFCell cell) {
//        String value = "";
//        if (cell != null) {
//            switch (cell.getCellType()) {
//                case HSSFCell.CELL_TYPE_FORMULA:
//                    break;
//                case HSSFCell.CELL_TYPE_NUMERIC:
//                    value = cell.getNumericCellValue() + "";
//                    break;
//                case HSSFCell.CELL_TYPE_STRING:
//                    value = cell.getStringCellValue().trim();
//                    break;
//                default:
//                    value = "";
//                    break;
//            }
//        }
//        return value.trim();
//    }
//
//    String trimZero(String str) {
//        if (StringUtils.isNotEmpty(str)) {
//            return str.replace(".0", "");
//        }
//        return str;
//    }
//}
