package com.zehong.web.controller.system; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.alibaba.fastjson.JSONObject; import com.zehong.common.exception.CustomException; import com.zehong.common.utils.StringUtils; import com.zehong.system.domain.TBankSubject; import com.zehong.system.service.ITBankSubjectService; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.zehong.common.annotation.Log; import com.zehong.common.core.controller.BaseController; import com.zehong.common.core.domain.AjaxResult; import com.zehong.common.enums.BusinessType; import com.zehong.common.utils.poi.ExcelUtil; import com.zehong.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; import javax.xml.crypto.Data; /** * 题目Controller * * @author zehong * @date 2022-12-15 */ @RestController @RequestMapping("/system/subject") public class TBankSubjectController extends BaseController { @Autowired private ITBankSubjectService tBankSubjectService; /** * 查询题库题目列表 */ //@PreAuthorize("@ss.hasPermi('system:subject:list')") @GetMapping("/list") public TableDataInfo list(TBankSubject tBankSubject) { startPage(); List<TBankSubject> list = tBankSubjectService.selectTBankSubjectList(tBankSubject); return getDataTable(list); } /** * 导出题库题目列表 */ //@PreAuthorize("@ss.hasPermi('system:subject:export')") @Log(title = "题库题目", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(TBankSubject tBankSubject) { List<TBankSubject> list = tBankSubjectService.selectTBankSubjectList(tBankSubject); ExcelUtil<TBankSubject> util = new ExcelUtil<TBankSubject>(TBankSubject.class); return util.exportExcel(list, "题库题目数据"); } /** * 获取题库题目详细信息 */ //@PreAuthorize("@ss.hasPermi('system:subject:query')") @GetMapping(value = "/{subjectId}") public AjaxResult getInfo(@PathVariable("subjectId") Long subjectId) { return AjaxResult.success(tBankSubjectService.selectTBankSubjectById(subjectId)); } /** * 新增题库题目 */ //@PreAuthorize("@ss.hasPermi('system:subject:add')") @Log(title = "题库题目", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TBankSubject tBankSubject) { return toAjax(tBankSubjectService.insertTBankSubject(tBankSubject)); } /** * 修改题库题目 */ //@PreAuthorize("@ss.hasPermi('system:subject:edit')") @Log(title = "题库题目", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TBankSubject tBankSubject) { return toAjax(tBankSubjectService.updateTBankSubject(tBankSubject)); } /** * 删除题库题目 */ //@PreAuthorize("@ss.hasPermi('system:subject:remove')") @Log(title = "题库题目", businessType = BusinessType.DELETE) @DeleteMapping("/{subjectIds}") public AjaxResult remove(@PathVariable Long[] subjectIds) { return toAjax(tBankSubjectService.deleteTBankSubjectByIds(subjectIds)); } /** * 导入题目信息管理列表 */ @Log(title = "题库题目", businessType = BusinessType.IMPORT) @PostMapping("/import") public AjaxResult importDevice(MultipartFile file, boolean updateSupport,Long bankId) throws Exception { //装载流 XSSFWorkbook workbook = null; int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); try { // workbook = new XSSFWorkbook(file.getInputStream()); //解析xls workbook = new XSSFWorkbook(file.getInputStream()); }catch (IOException e) { e.printStackTrace(); } //最终添加数据 存储数组 List<TBankSubject> list = new ArrayList<>(); // 获取一个工作表,下标从0开始 XSSFSheet sheet = workbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); // 通过循环,逐行取出表中每行数据 for(int i=0;i<=lastRowNum;i++){//跳过第一行和第二行 if(i<=1){ continue; } // 获取行 XSSFRow row = sheet.getRow(i); TBankSubject excelEntity = new TBankSubject(); List jsonArray=new ArrayList(); try{ //判断题目 和答案不能为空 if (!StringUtils.isEmpty(row.getCell(0).toString())&&!StringUtils.isEmpty(row.getCell(9).toString()) &&!StringUtils.isEmpty(row.getCell(10).toString())){ successNum++; /**题库id*/ excelEntity.setBankId(bankId); /**题目*/ excelEntity.setTopicTitle(row.getCell(0).toString()); /**题目类型*/ excelEntity.setTopicType(Integer.valueOf(row.getCell(10).toString())); /**题目*/ for (int s=1;s<=8;s++){ JSONObject jsonObject=new JSONObject(); if (!StringUtils.isEmpty(row.getCell(s).toString())) { jsonObject.put("value", row.getCell(s).toString()); jsonArray.add(jsonObject); } } /**答案*/ excelEntity.setAnswer(row.getCell(9).toString()); // if ("A".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(0); // }else if ("B".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(1); // }else if ("C".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(2); // }else if ("D".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(3); // }else if ("E".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(4); // }else if ("F".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(5); // }else if ("G".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(6); // }else if ("H".equals(row.getCell(9).toString())){ // excelEntity.setAnswer(7); // } excelEntity.setTopicOption(String.valueOf(jsonArray)); excelEntity.setDatetime(new Date()); list.add(excelEntity); } // else { // failureNum++; // String msg = "<br/>" + failureNum + "、题目 " + excelEntity.getTopicOption() + " 导入失败:"; // failureMsg.append(msg); // } } catch (Exception e){ failureNum++; String msg = "<br/>" + failureNum + "题目 " + excelEntity.getTopicOption() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); } } if (failureNum > 0) { failureMsg.insert(0, "导入完成,共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new CustomException(failureMsg.toString()); } else { successMsg.insert(0, "数据已全部导入成功!共 " + successNum + " 条"); } if (list.size()!=0){ /**数据添加方法*/ tBankSubjectService.insertBank(list); } // String message = tBankSubjectService.importDevice(file, updateSupport); return AjaxResult.success(successMsg.toString()); } }