package org.springblade.modules.exam.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springblade.common.utils.QRCodeUtil; import org.springblade.modules.FTP.FtpUtil; import org.springblade.modules.accreditation.excel.ExportSecurityPaperExcel; import org.springblade.modules.exam.entity.ExamScore; import org.springblade.modules.exam.entity.ScoreAuditRecords; import org.springblade.modules.exam.mapper.ScoreAuditRecordsMapper; import org.springblade.modules.exam.service.ExamScoreService; import org.springblade.modules.exam.service.ScoreAuditRecordsService; import org.springblade.modules.exam.util.SecurityPaperUtil; import org.springblade.modules.exam.vo.ScoreAuditRecordsVO; import org.springblade.modules.securitypaper.entity.SecurityPaper; import org.springblade.modules.securitypaper.service.SecurityPaperService; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.service.MyAsyncService; import org.springblade.modules.system.vo.UserVO; import org.springblade.modules.training.entity.TrainingRegistration; import org.springblade.modules.training.service.TrainingRegistrationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 考试成绩修改申请记录服务实现类 * @author zhongrj */ @Service public class ScoreAuditRecordsServiceImpl extends ServiceImpl implements ScoreAuditRecordsService { @Autowired private ExamScoreService examScoreService; @Autowired private IUserService userService; @Autowired private TrainingRegistrationService trainingRegistrationService; @Autowired private SecurityPaperService securityPaperService; @Autowired private MyAsyncService myAsyncService; /** * 自定义分页 * @param page * @param scoreAuditRecords * @return */ @Override public IPage selectScoreAuditRecordsPage(IPage page, ScoreAuditRecordsVO scoreAuditRecords) { List scoreAuditRecordsVOs = baseMapper.selectScoreAuditRecordsPage(page, scoreAuditRecords); return page.setRecords(scoreAuditRecordsVOs); } /** * 自定义详情信息 * @param scoreAuditRecords * @return */ @Override public ScoreAuditRecordsVO getScoreAuditRecordsDetails(ScoreAuditRecords scoreAuditRecords) { return baseMapper.getScoreAuditRecordsDetails(scoreAuditRecords); } /** * 申请审核 * @param scoreAuditRecords * @return */ @Override @Transactional(rollbackFor = Exception.class) public boolean applyAudit(ScoreAuditRecords scoreAuditRecords) { //审核 //如果是审核通过,则修改考试成绩,并改变培训考试状态,用户培训状态 if (scoreAuditRecords.getStatus()==2) { ScoreAuditRecords auditRecords = this.getById(scoreAuditRecords.getId()); //查询考试成绩 ExamScore examScore = examScoreService.getById(auditRecords.getExamScoreId()); //1.修改培训报名考试状态 TrainingRegistration trainingRegistration = trainingRegistrationService.getById(examScore.getApplyId()); //考试状态修改 if(trainingRegistration.getIsExam()==4) { //考试状态修改为纸质考试 trainingRegistration.setIsExam(5); trainingRegistration.setCancel(1); }else { //考试结束 trainingRegistration.setIsExam(2); } //修改 trainingRegistrationService.updateById(trainingRegistration); //2.修改用户培训考试状态 User user = userService.getById(examScore.getUserId()); //修改为考试结束状态 user.setIsTrain(3); //3.修改考试理论成绩 examScore.setTheoryGrade(auditRecords.getNewScore()); //查询用户年龄 UserVO userVO = userService.getUserAgeById(Long.parseLong(examScore.getUserId())); //判断实操成绩是否为空 if (null == examScore.getLearnGrade()) { //如果为空,之间修改理论成绩和总成绩 //总成绩 if (userVO.getAge() <= 50) { examScore.setAllGrade(Math.round(examScore.getTheoryGrade()/2)); } if (userVO.getAge() > 50) { examScore.setAllGrade(Math.round(examScore.getTheoryGrade()/2)); } if (examScore.getTheoryGrade() >= 60) { //实操成绩暂未录入 examScore.setQualified(2); }else { //不合格 examScore.setQualified(1); } //更新保安数据 userService.updateById(user); //更新成绩数据 examScoreService.updateById(examScore); //内网培训报名,人员,成绩数据同步 String s1 = "update exam_score set theory_grade = " + "'" + examScore.getTheoryGrade() + "'" + ",all_grade = " + "'" + examScore.getAllGrade() + "'" + ",qualified = " + "'" + examScore.getQualified() + "'" + " " + "where id = " + "'" + examScore.getId() + "';"+ "update sys_training_registration set is_exam = " + "'" + trainingRegistration.getIsExam() + "'" + ",cancel = " + "'" + trainingRegistration.getCancel() + "'" + " " + "where id = " + "'" + trainingRegistration.getId() + "';"+ "update blade_user set is_train = " + "'" + user.getIsTrain() + "'" + " " + "where id = " + "'" + user.getId() + "'"; //FtpUtil.sqlFileUpload(s1); myAsyncService.dataSync(s1); } else { //实操成绩不为空 if (examScore.getTheoryGrade() >= 60 && examScore.getLearnGrade() >= 60) { //合格 examScore.setQualified(0); //设置为未制证的状态 user.setUserType(7); //如果已有保安证编号,不更保安证编号信息 if (null == user.getSecuritynumber() || user.getSecuritynumber().equals("")) { //去生成保安证编号 String pre = SecurityPaperUtil.getSecurityPaper(); //查询当前年份已有的保安证编号 int count = userService.getSecurityPaperCount(pre); String result = null; if (count == 0) { result = pre + "00001"; } else { //格式化 DecimalFormat decimalFormat = new DecimalFormat("00000"); count++; result = pre + (decimalFormat.format(count)); } user.setSecuritynumber(result); //修改为持证保安 user.setHold("1"); //更新保安数据 userService.updateById(user); //生成保安证的同时向保安证管理表中插入一条数据 SecurityPaper securityPaper = new SecurityPaper(); securityPaper.setUserId(user.getId()); securityPaper.setNumber(result); securityPaper.setCreateTime(new Date()); securityPaper.setIdCardNo(user.getCardid()); securityPaper.setPeopleName(user.getRealName()); securityPaper.setExamId(Long.parseLong(examScore.getExamId())); securityPaper.setApplyId(examScore.getApplyId()); securityPaper.setSource(1); //新增保安员证信息 securityPaperService.save(securityPaper); //数据同步 String s1 = "insert into sys_security_paper(id,number,create_time,people_name,id_card_no,user_id,apply_id,exam_id) " + "values(" + "'" + securityPaper.getId() + "'" + "," + "'" + securityPaper.getNumber() +"'" + "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(securityPaper.getCreateTime()) +"'" + "," + "'" + securityPaper.getPeopleName() + "'" + "," + "'" + securityPaper.getIdCardNo() + "'" + "," + "'" + securityPaper.getUserId() + "'" + "," + "'" + securityPaper.getApplyId() + "'" + "," +"'" + securityPaper.getExamId() + "'" + ")"; //FtpUtil.sqlFileUpload(s1); myAsyncService.dataSync(s1); } } else { //不合格 examScore.setQualified(1); } //总成绩 if (userVO.getAge() <= 50) { if (null != examScore.getTheoryGrade()) { examScore.setAllGrade(Math.round((examScore.getTheoryGrade() + examScore.getLearnGrade()) / 2)); } else { examScore.setAllGrade(Math.round(examScore.getLearnGrade() / 2)); } } if (userVO.getAge() > 50) { if (null != examScore.getTheoryGrade()) { examScore.setAllGrade(Integer.parseInt(String.valueOf(Math.round(examScore.getTheoryGrade() * 0.5))) + Integer.parseInt(String.valueOf(Math.round(examScore.getLearnGrade() * 0.5)))); } else { examScore.setAllGrade(Math.round(examScore.getLearnGrade() / 2)); } } //更新成绩数据 examScoreService.updateById(examScore); //内网培训报名,人员,成绩数据同步 String s1 = "update exam_score set theory_grade = " + "'" + examScore.getTheoryGrade() + "'" + ",all_grade = " + "'" + examScore.getAllGrade() + "'" + ",qualified = " + "'" + examScore.getQualified() + "'" + " " + "where id = " + "'" + examScore.getId() + "';"+ "update sys_training_registration set is_exam = " + "'" + trainingRegistration.getIsExam() + "'" + ",cancel = " + "'" + trainingRegistration.getCancel() + "'" + " " + "where id = " + "'" + trainingRegistration.getId() + "';"+ "update blade_user set hold = " + "'" + user.getHold() + "'" + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" + ",user_type = " + "'" + user.getUserType() + "'" + ",is_train = " + "'" + user.getIsTrain() + "'" + " " + "where id = " + "'" + user.getId() + "'"; //FtpUtil.sqlFileUpload(s1); myAsyncService.dataSync(s1); } } //审核时间 scoreAuditRecords.setAuditTime(new Date()); //修改申请记录信息 baseMapper.updateById(scoreAuditRecords); //返回 return true; } /** * 批量申请审核 * @param scoreAuditRecords 考试成绩修改申请记录审核 */ @Override public boolean batchAudit(ScoreAuditRecordsVO scoreAuditRecords) { List list = Arrays.asList(scoreAuditRecords.getIds().split(",")); for (String id : list) { //审核 ScoreAuditRecords records = this.getById(id); //如果是审核通过,则修改考试成绩,并改变培训考试状态,用户培训状态 if (scoreAuditRecords.getStatus()==2) { //查询考试成绩 ExamScore examScore = examScoreService.getById(records.getExamScoreId()); //1.修改培训报名考试状态 TrainingRegistration trainingRegistration = trainingRegistrationService.getById(examScore.getApplyId()); //已考试 trainingRegistration.setIsExam(2); //修改 trainingRegistrationService.updateById(trainingRegistration); //2.修改用户培训考试状态 User user = userService.getById(examScore.getUserId()); //修改为考试结束状态 user.setIsTrain(3); //3.修改考试理论成绩 examScore.setTheoryGrade(records.getNewScore()); //查询用户年龄 UserVO userVO = userService.getUserAgeById(Long.parseLong(examScore.getUserId())); //判断实操成绩是否为空 if (null == examScore.getLearnGrade()) { //如果为空,之间修改理论成绩和总成绩 //总成绩 if (userVO.getAge() <= 50) { examScore.setAllGrade(Math.round(examScore.getTheoryGrade()/2)); } if (userVO.getAge() > 50) { examScore.setAllGrade(Math.round(examScore.getTheoryGrade()/2)); } if (examScore.getTheoryGrade() >= 60) { //实操成绩暂未录入 examScore.setQualified(2); }else { //不合格 examScore.setQualified(1); } //更新保安数据 userService.updateById(user); //更新成绩数据 examScoreService.updateById(examScore); //内网培训报名,人员,成绩数据同步 String s1 = "update exam_score set theory_grade = " + "'" + examScore.getTheoryGrade() + "'" + ",all_grade = " + "'" + examScore.getAllGrade() + "'" + ",qualified = " + "'" + examScore.getQualified() + "'" + " " + "where id = " + "'" + examScore.getId() + "';"+ "update sys_training_registration set is_exam = " + "'" + trainingRegistration.getIsExam() + "'" + " " + "where id = " + "'" + trainingRegistration.getId() + "';"+ "update blade_user set is_train = " + "'" + user.getIsTrain() + "'" + " " + "where id = " + "'" + user.getId() + "'"; //FtpUtil.sqlFileUpload(s1); myAsyncService.dataSync(s1); } else { //实操成绩不为空 if (examScore.getTheoryGrade() >= 60 && examScore.getLearnGrade() >= 60) { //合格 examScore.setQualified(0); //设置为未制证的状态 user.setUserType(7); //如果已有保安证编号,不更保安证编号信息 if (null == user.getSecuritynumber() || user.getSecuritynumber().equals("")) { //去生成保安证编号 String pre = SecurityPaperUtil.getSecurityPaper(); //查询当前年份已有的保安证编号 int count = userService.getSecurityPaperCount(pre); String result = null; if (count == 0) { result = pre + "00001"; } else { //格式化 DecimalFormat decimalFormat = new DecimalFormat("00000"); count++; result = pre + (decimalFormat.format(count)); } user.setSecuritynumber(result); //发证日期 // user.setPaperTime(new Date()); //修改为持证保安 user.setHold("1"); //更新保安数据 userService.updateById(user); //生成保安证的同时向保安证管理表中插入一条数据 SecurityPaper securityPaper = new SecurityPaper(); securityPaper.setUserId(user.getId()); securityPaper.setNumber(result); securityPaper.setCreateTime(new Date()); securityPaper.setIdCardNo(user.getCardid()); securityPaper.setPeopleName(user.getRealName()); securityPaper.setExamId(Long.parseLong(examScore.getExamId())); securityPaper.setApplyId(examScore.getApplyId()); securityPaper.setSource(1); //新增保安员证信息 securityPaperService.save(securityPaper); // String s1 = // "update blade_user set hold = " + "'" + user.getHold() + "'" + // ",securitynumber = " + "'" + user.getSecuritynumber() + "'" + // ",is_train = " + "'" + user.getIsTrain() + "'" + // " " + "where id = " + "'" + user.getId() + "'"; // FtpUtil.sqlFileUpload(s1); } } else { //不合格 examScore.setQualified(1); } //总成绩 if (userVO.getAge() <= 50) { if (null != examScore.getTheoryGrade()) { examScore.setAllGrade(Math.round((examScore.getTheoryGrade() + examScore.getLearnGrade()) / 2)); } else { examScore.setAllGrade(Math.round(examScore.getLearnGrade() / 2)); } } if (userVO.getAge() > 50) { if (null != examScore.getTheoryGrade()) { examScore.setAllGrade(Integer.parseInt(String.valueOf(Math.round(examScore.getTheoryGrade() * 0.5))) + Integer.parseInt(String.valueOf(Math.round(examScore.getLearnGrade() * 0.5)))); } else { examScore.setAllGrade(Math.round(examScore.getLearnGrade() / 2)); } } //更新成绩数据 examScoreService.updateById(examScore); //内网培训报名,人员,成绩数据同步 String s1 = "update exam_score set theory_grade = " + "'" + examScore.getTheoryGrade() + "'" + ",all_grade = " + "'" + examScore.getAllGrade() + "'" + ",qualified = " + "'" + examScore.getQualified() + "'" + " " + "where id = " + "'" + examScore.getId() + "';"+ "update sys_training_registration set is_exam = " + "'" + trainingRegistration.getIsExam() + "'" + " " + "where id = " + "'" + trainingRegistration.getId() + "';"+ "update blade_user set hold = " + "'" + user.getHold() + "'" + ",securitynumber = " + "'" + user.getSecuritynumber() + "'" + ",user_type = " + "'" + user.getUserType() + "'" + ",is_train = " + "'" + user.getIsTrain() + "'" + " " + "where id = " + "'" + user.getId() + "'"; //FtpUtil.sqlFileUpload(s1); myAsyncService.dataSync(s1); } } //审核时间 records.setAuditTime(new Date()); if (null!=scoreAuditRecords.getAuditDetail() && !scoreAuditRecords.getAuditDetail().equals("")){ records.setAuditDetail(scoreAuditRecords.getAuditDetail()); } records.setAuditUser(scoreAuditRecords.getAuditUser()); records.setStatus(scoreAuditRecords.getStatus()); //修改申请记录信息 baseMapper.updateById(records); } //返回 return true; } }