package org.springblade.modules.exam.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.common.utils.arg; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.FTP.FtpUtil; import org.springblade.modules.exam.entity.ExamPaper; import org.springblade.modules.exam.entity.ExamScore; import org.springblade.modules.exam.excel.ExamScoreExcel; import org.springblade.modules.exam.excel.ExamScoreImporter; import org.springblade.modules.exam.service.ExamPaperService; import org.springblade.modules.exam.service.ExamScoreService; import org.springblade.modules.exam.util.SecurityPaperUtil; import org.springblade.modules.exam.vo.ExamScoreVO; import org.springblade.modules.system.entity.Role; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IRoleService; import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.vo.UserVO; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; /** * @author zhongrj * @time 2021-07-16 * @desc 考试成绩管理控制层 */ @RestController @AllArgsConstructor @RequestMapping("/examScore") public class ExamScoreController { private final ExamScoreService examScoreService; private final IUserService userService; private final ExamPaperService examPaperService; private final IRoleService roleService; /** * 自定义分页 * @param query page,size * @param examScore 考试成绩信息对象 */ @GetMapping("/page") public R> page(ExamScoreVO examScore, Query query) { IPage pages = examScoreService.selectExamScorePage(Condition.getPage(query), examScore); return R.data(pages); } /** * 分页 */ @GetMapping("/list") public R> list(ExamScore examScore, Query query) { IPage pages = examScoreService.page(Condition.getPage(query), Condition.getQueryWrapper(examScore)); return R.data(pages); } /** * 新增 * @param examScore 考试成绩信息对象 */ @PostMapping("/save") @ApiOperation(value = "新增", notes = "传入examScore") public R save(@RequestBody ExamScore examScore) { boolean save = examScoreService.save(examScore); //内网同步 Long sid = examScore.getId(); String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(examScore.getExamTime()); String s = "insert into exam_score(id,exam_time) " + "values(" + "'" + sid + "'" + "," + "'" +format + "'" + ")"; FtpUtil.sqlFileUpload(s); //返回 return R.status(save); } /** * 保存考试成绩 * @param examScore 考试成绩信息对象 */ @PostMapping("/saveExamScore") public R saveExamScore(@RequestBody ExamScoreVO examScore) { return R.status(examScoreService.saveExamScore(examScore)); } /** * 修改 * @param examScore 考试成绩信息对象 */ @PostMapping("/update") public R update(@RequestBody ExamScore examScore) { return R.status(examScoreService.updateById(examScore)); } /** * 修改总成绩 * @param examScore 考试成绩信息对象 */ @PostMapping("/updateExamScore") public R updateExamScore(@RequestBody ExamScore examScore){ if (null!=examScore.getLearnGrade() && null!=examScore.getTheoryGrade()){ ExamScore examScore1 = examScoreService.getById(examScore.getId()); //查询当前保安信息 UserVO user = userService.getUserAgeById(Long.parseLong(examScore1.getUserId())); if (examScore.getTheoryGrade()>=60 && examScore.getLearnGrade()>=60){ //合格 examScore.setQualified(0); //正式考试通过生成保安证编号 ExamPaper paper = examPaperService.getById(examScore.getExamId()); if (paper.getExamType()==1) { //去生成保安证编号 String pre = SecurityPaperUtil.getSecurityPaper(); //查询当前年份已有的保安证编号 int count = userService.getSecurityPaperCount(pre); String result = null; if (count == 0) { result = pre + "00000"; } else { //格式化 DecimalFormat decimalFormat = new DecimalFormat("00000"); result = pre + (decimalFormat.format(count++)); } user.setSecuritynumber(result); //发证日期 user.setPaperTime(new Date()); //修改为持证保安 user.setHold("1"); //分配保安角色 Role role = new Role(); role.setRoleAlias("保安"); Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); user.setRoleId(oneRole.getId().toString()); //更新保安数据 userService.updateById(user); String s1 = "update blade_user set role_id = " + "'" + user.getRoleId() + "'" + ",hold = " + "'" + user.getHold() + "'" + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" + ",paper_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd").format(user.getPaperTime()) + "'" + " " +"where id = " + "'" + user.getId() + "'"; FtpUtil.sqlFileUpload(s1); } }else { //不合格 examScore.setQualified(1); } //总成绩 if (user.getAge()<=50) { examScore.setAllGrade(Math.round((examScore.getLearnGrade() + examScore1.getTheoryGrade()) / 2)); } if (user.getAge()>50) { examScore.setAllGrade(Integer.parseInt(String.valueOf(Math.round(examScore1.getTheoryGrade()*0.3))) + Integer.parseInt(String.valueOf(Math.round(examScore1.getLearnGrade()*0.7)))); } } //内网同步 String s1 = "update exam_score set learn_grade = " + "'" + examScore.getLearnGrade() + "'" + ",all_grade = " + "'" + examScore.getAllGrade() + "'" + ",qualified = " + "'" + examScore.getQualified() + "'" + " " +"where id = " + "'" + examScore.getId() + "'"; FtpUtil.sqlFileUpload(s1); //本地修改 return R.status(examScoreService.updateById(examScore)); } /** * 新增或修改 * @param examScore 考试成绩信息对象 */ @PostMapping("/submit") public R submit(@RequestBody ExamScore examScore) { return R.status(examScoreService.saveOrUpdate(examScore)); } /** * 删除 * @param ids 考试成绩信息ids 数组 */ @PostMapping("/remove") public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { List list = Arrays.asList(ids.split(",")); list.forEach(id ->{ //内网同步 String s1 = "delete from exam_score where id = " + "'" + id + "'"; FtpUtil.sqlFileUpload(s1); }); return R.status(examScoreService.removeByIds(Func.toLongList(ids))); } /** * 详情 * @param examScore 考试成绩信息对象 */ @GetMapping("/detail") @ApiOperation(value = "详情", notes = "传入examScore") public R details(ExamScore examScore) { //查询考试成绩详情 ExamScoreVO detail = examScoreService.selectExamScoreInfo(examScore); //返回 return R.data(detail); } /** * 详情 * @param examScore 考试成绩信息对象 */ @GetMapping("/details") @ApiOperation(value = "详情", notes = "传入examScore") public R detail(ExamScore examScore) { //查询考试成绩详情 ExamScore detail = examScoreService.getOne(Condition.getQueryWrapper(examScore)); //返回 return R.data(detail); } /** * 导入实操成绩 * @param isCovered 1 覆盖 0不覆盖 * @return */ @PostMapping("import-examScore") @ApiOperation(value = "导入实操成绩", notes = "传入excel") public R importExamScore(MultipartFile file, Integer isCovered) { ExamScoreImporter examScoreImporter = new ExamScoreImporter(examScoreService, false); ExcelUtil.save(file, examScoreImporter, ExamScoreExcel.class); return R.success("操作成功"); } /** * 导出模板 */ @GetMapping("export-template") @ApiOperation(value = "导出模板") public void exportUser(HttpServletResponse response) { List list = new ArrayList<>(); ExcelUtil.export(response, "实操成绩数据模板", "实操成绩数据表", list, ExamScoreExcel.class); } /** * 分数统计 */ @GetMapping("score-statistics") @ApiOperation(value = "分数统计") public R scoreStatistics(HttpServletResponse response) { return R.data(examScoreService.scoreStatistics()); } }