exam-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExQuestionController.java
@@ -14,6 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** * <p> @@ -74,5 +77,14 @@ } @RepeatSubmit @Log(title = "题目管理", businessType = BusinessType.DELETE) @ApiOperation(value = "导入题目") @PostMapping("/upload") public CommonResult uploadQuestion(@RequestParam("file")MultipartFile file) throws IOException { return questionService.uploadQuestion(file); } } exam-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExStudentController.java
@@ -37,13 +37,25 @@ @ApiOperation(value = "学员列表(分页)") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10") @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"), @ApiImplicitParam(paramType = "query", name = "duty", dataType = "String", required = false, value = "职务"), @ApiImplicitParam(paramType = "query", name = "name", dataType = "String", required = false, value = "姓名") }) @GetMapping("/list") public CommonResult list(ExStudent student){ return CommonResult.success(studentService.selectStudentList(student)); } @ApiOperation(value = "学员列表全选") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "duty", dataType = "String", required = false, value = "职务"), @ApiImplicitParam(paramType = "query", name = "name", dataType = "String", required = false, value = "姓名") }) @GetMapping("/list/checkAll") public CommonResult checkAll(ExStudent student){ return CommonResult.success(studentService.selectStudentCheckAll(student)); } @ApiOperation(value = "根据id获取学员信息") @GetMapping(value = { "/{studentId}" }) public CommonResult getStudentInfo(@PathVariable(value = "studentId", required = true) Long studentId) exam-admin/src/main/resources/application-guotai.yml
@@ -5,9 +5,9 @@ druid: # 主库数据源 master: url: jdbc:mysql://127.0.0.1:6361/train_exam?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true url: jdbc:mysql://127.0.0.1:7006/train_exam?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true username: root password: G7r@5nQw*X2p%kZm password: 2farwL3yPXfbH2AP # 从库数据源 slave: enabled: false exam-system/src/main/java/com/gkhy/exam/system/mapper/ExQuestionMapper.java
@@ -121,4 +121,6 @@ * @return */ List<ExQuestion> selectQuestionByPaperId(Long paperId); int saveBatch(List<ExQuestion> exQuestions); } exam-system/src/main/java/com/gkhy/exam/system/service/ExQuestionService.java
@@ -2,8 +2,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.ExQuestion; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; @@ -114,4 +117,6 @@ * @return */ List<ExQuestion> selectQuestionByPaperId(Long paperId); CommonResult uploadQuestion(MultipartFile file) throws IOException; } exam-system/src/main/java/com/gkhy/exam/system/service/ExStudentService.java
@@ -108,4 +108,6 @@ * @return */ List<TrainRecordVO> trainRecord(Long studentId); List<ExStudent> selectStudentCheckAll(ExStudent student); } exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExQuestionServiceImpl.java
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.domain.model.LoginUserDetails; import com.gkhy.exam.common.enums.PaperStudentStateEnum; import com.gkhy.exam.common.enums.PrivatizeEnum; import com.gkhy.exam.common.enums.QuestionTypeEnum; @@ -23,15 +25,16 @@ import com.gkhy.exam.system.mapper.ExQuestionBankMapper; import com.gkhy.exam.system.mapper.ExQuestionMapper; import com.gkhy.exam.system.service.ExQuestionService; import org.apache.poi.ss.usermodel.*; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.*; /** * <p> @@ -276,4 +279,157 @@ public List<ExQuestion> selectQuestionByPaperId(Long paperId) { return baseMapper.selectQuestionByPaperId(paperId); } @Override public CommonResult uploadQuestion(@NotNull MultipartFile file) throws IOException { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheetAt = workbook.getSheetAt(0); List<ExQuestion> exQuestions = new ArrayList<>(); LoginUserDetails loginUser = SecurityUtils.getLoginUser(); for (int i = 0; i <sheetAt.getLastRowNum(); i++) { Row row = sheetAt.getRow(i + 1); ExQuestion exQuestion = new ExQuestion(); if (row!=null){ exQuestion.setQuestionType((int)row.getCell(0).getNumericCellValue()); exQuestion.setBankId((long)row.getCell(1).getNumericCellValue()); exQuestion.setAnswer(row.getCell(2).getStringCellValue()); exQuestion.setTitle(row.getCell(3).getStringCellValue()); NhoooRootBean nhoooRootBean = new NhoooRootBean(); List<Items> items1 = new ArrayList<>(); String cellValue4 = getCellValue(row.getCell(4)); if (cellValue4!=null){ Items items = new Items(); items.setPrefix("A"); items.setContent(cellValue4); items1.add(items); } String cellValue5 = getCellValue(row.getCell(5)); if (cellValue5!=null){ Items items = new Items(); items.setPrefix("B"); items.setContent(cellValue5); items1.add(items); } String cellValue6 = getCellValue(row.getCell(6)); if (cellValue6!=null){ Items items = new Items(); items.setPrefix("C"); items.setContent(cellValue6); items1.add(items); } String cellValue7 = getCellValue(row.getCell(7)); if (cellValue7!=null){ Items items = new Items(); items.setPrefix("D"); items.setContent(cellValue7); items1.add(items); } String cellValue8 = getCellValue(row.getCell(8)); if (cellValue8!=null){ Items items = new Items(); items.setPrefix("E"); items.setContent(cellValue8); items1.add(items); } String cellValue9 = getCellValue(row.getCell(8)); if (cellValue9!=null){ Items items = new Items(); items.setPrefix("F"); items.setContent(cellValue9); items1.add(items); } String cellValue10 = getCellValue(row.getCell(10)); if (cellValue10!=null){ Items items = new Items(); items.setPrefix("G"); items.setContent(cellValue10); items1.add(items); } String cellValue11 = getCellValue(row.getCell(11)); if (cellValue11!=null){ Items items = new Items(); items.setPrefix("H"); items.setContent(cellValue11); items1.add(items); } nhoooRootBean.setAnalyze(""); nhoooRootBean.setItems(items1); exQuestion.setContent(JSONObject.toJSONString(nhoooRootBean)); exQuestion.setPrivatize(0); exQuestion.setCreateBy(loginUser.getUsername()); exQuestion.setCreateTime(LocalDateTime.now()); exQuestion.setUpdateBy(loginUser.getUsername()); exQuestion.setUpdateTime(LocalDateTime.now()); exQuestion.setCompanyId(loginUser.getUser().getCompanyId()); exQuestion.setStatus(0); exQuestions.add(exQuestion); } } int i = baseMapper.saveBatch(exQuestions); if (i<1){ throw new ApiException("导入题目失败"); } workbook.close(); return CommonResult.success(); } private String getCellValue(Cell cell) { if (cell == null) { return null; } switch (cell.getCellType()) { case STRING: return cell.getStringCellValue(); case NUMERIC: return String.valueOf(cell.getNumericCellValue()); case BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); case FORMULA: return cell.getCellFormula(); default: return null; } } public class NhoooRootBean { private String analyze; private List<Items> itemsList; public void setAnalyze(String analyze) { this.analyze = analyze; } public String getAnalyze() { return analyze; } public void setItems(List<Items> items) { this.itemsList = items; } public List getItems() { return itemsList; } } public class Items { private String prefix; private String content; public void setPrefix(String prefix) { this.prefix = prefix; } public String getPrefix() { return prefix; } public void setContent(String content) { this.content = content; } public String getContent() { return content; } } } exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java
@@ -290,6 +290,31 @@ return trainRecordVOList; } @Override public List<ExStudent> selectStudentCheckAll(ExStudent student) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ student.setCompanyId(currentUser.getCompanyId()); Map<String,Object> paramsMap=new HashMap<>(); if(currentUser.getUserType().equals(UserTypeEnum.DEPART_USER.getCode())) {//部门级用户 List<Long> workshopUserIds=userMapper.selectWorkshopUserIds(currentUser.getId()); if(workshopUserIds==null){ workshopUserIds=new ArrayList<>(); } workshopUserIds.add(currentUser.getId()); paramsMap.put("createIds",workshopUserIds); student.setParams(paramsMap); }else if(currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())){//车间级用户 List<Long> workshopUserIds=new ArrayList<>(); workshopUserIds.add(currentUser.getId()); workshopUserIds.add(currentUser.getParentId()); paramsMap.put("createIds",workshopUserIds); student.setParams(paramsMap); } } return baseMapper.selectStudentList(student); } public ExStudent checkUserDataScope(Long studentId) { if(studentId==null){ throw new ApiException("学员id为空!"); exam-system/src/main/resources/mapper/system/ExQuestionMapper.xml
@@ -45,6 +45,18 @@ select id, question_type, bank_id, status, company_id,answer,title,privatize,content,version, create_by, create_time, update_by, update_time, remark from ex_course </sql> <insert id="saveBatch"> INSERT INTO `train_exam`.`ex_question` ( `question_type`, `bank_id`, `company_id`, `status`, `answer`, `title`, `content`, `privatize`, `create_time`, `create_by`, `update_time`, `update_by`, `remark`, `version`) VALUES <foreach collection="exQuestions" item="question" separator=","> (#{question.questionType}, #{question.bankId}, #{question.companyId}, #{question.status}, #{question.answer}, #{question.title}, #{question.content}, #{question.privatize}, #{question.createTime}, #{question.createBy}, #{question.updateTime}, #{question.updateBy}, #{question.remark}, #{question.version}) </foreach> </insert> <select id="selectCountByBankId" resultType="integer"> exam-system/src/main/resources/mapper/system/ExStudentMapper.xml
@@ -72,6 +72,9 @@ <if test="createId != null"> AND s.create_id =#{createId} </if> <if test="duty != null"> AND s.duty =#{duty} </if> <if test="params.createIds != null and params.createIds != ''"> AND s.create_id in <foreach collection="params.createIds" item="createId" open="(" separator="," close=")">