src/main/java/org/springblade/modules/apply/controller/ApplyController.java
@@ -379,7 +379,6 @@ public R cancelApply(@RequestBody Apply apply){ //查询人员是否已报名 User user = userService.getById(apply.getUserId()); System.out.println("user = " + user); if(null==user.getIsApply()){ apply.setApplyStatus(4); boolean status = applyService.updateById(apply); @@ -403,7 +402,6 @@ return R.data(200,"取消报名成功"); } } } return R.data(202,"取消报名失败"); } src/main/java/org/springblade/modules/equipage/controller/EquipageController.java
@@ -5,15 +5,25 @@ 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.equipage.entity.Equipage; import org.springblade.modules.equipage.excel.EquipageExcel; import org.springblade.modules.equipage.excel.EquipageImporter; import org.springblade.modules.equipage.service.EquipageService; import org.springblade.modules.equipage.vo.EquipageVo; import org.springblade.modules.exam.excel.ExamScoreExcel; import org.springblade.modules.exam.excel.ExamScoreImporter; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author zhongrj @@ -91,4 +101,27 @@ return R.data(detail); } /** * 导入装备数据 * @param isCovered 1 覆盖 0不覆盖 * @return */ @PostMapping("import-equipage") @ApiOperation(value = "导入装备数据", notes = "传入excel") public R importExamScore(MultipartFile file, Integer isCovered) { EquipageImporter equipageImporter = new EquipageImporter(equipageService, false); ExcelUtil.save(file, equipageImporter, EquipageExcel.class); return R.success("操作成功"); } /** * 导出模板 */ @GetMapping("export-template") @ApiOperation(value = "导出模板") public void exportUser(HttpServletResponse response) { List<EquipageExcel> list = new ArrayList<>(); ExcelUtil.export(response, "装备导入数据模板", "装备导入数据表", list, EquipageExcel.class); } } src/main/java/org/springblade/modules/equipage/entity/Equipage.java
@@ -73,6 +73,10 @@ @DateTimeFormat(pattern = "yyyy-MM-dd") private Date dateForProduction; /** * 责任人id */ @TableField("user_id") private Long userId; } src/main/java/org/springblade/modules/equipage/excel/EquipageExcel.java
New file @@ -0,0 +1,96 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.equipage.excel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.io.Serializable; /** * EquipageExcel 保安公司装备 * @author zhongrj * @since 2021-08-12 */ @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class EquipageExcel implements Serializable { private static final long serialVersionUID = 1L; /** * 保安公司名称 */ @ColumnWidth(25) @ExcelProperty("保安公司名称") private String deptName; /** * 装备名称 */ @ColumnWidth(20) @ExcelProperty("装备名称") private String name; /** * 编号 */ @ColumnWidth(20) @ExcelProperty("编号") private String number; /** * 规格 */ @ColumnWidth(20) @ExcelProperty("规格") private String specifications; /** * 型号 */ @ColumnWidth(20) @ExcelProperty("型号") private String mode; /** * 责任人 */ @ColumnWidth(15) @ExcelProperty("责任人名字") private String personInCharge; /** * 责任人 */ @ColumnWidth(20) @ExcelProperty("责任人身份证号码") private String idCardNo; /** * 品牌,厂商 */ @ColumnWidth(25) @ExcelProperty("厂商名称") private String brand; } src/main/java/org/springblade/modules/equipage/excel/EquipageImporter.java
New file @@ -0,0 +1,40 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.equipage.excel; import lombok.RequiredArgsConstructor; import org.springblade.core.excel.support.ExcelImporter; import org.springblade.modules.equipage.service.EquipageService; import java.util.List; /** * 保安公司装备导入 * @author zhongrj * @since 2021-08-12 */ @RequiredArgsConstructor public class EquipageImporter implements ExcelImporter<EquipageExcel> { private final EquipageService service; private final Boolean isCovered; @Override public void save(List<EquipageExcel> data) { service.importEquipage(data, isCovered); } } src/main/java/org/springblade/modules/equipage/service/EquipageService.java
@@ -3,11 +3,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.equipage.entity.Equipage; import org.springblade.modules.equipage.excel.EquipageExcel; import org.springblade.modules.equipage.vo.EquipageVo; import java.util.List; public interface EquipageService extends IService<Equipage> { EquipageVo selectEquipageInfo(Equipage equipage); IPage<EquipageVo> selectEquipagePage(IPage<EquipageVo> page, EquipageVo equipage); /** * 保安公司装备导入 * @param data * @param isCovered */ void importEquipage(List<EquipageExcel> data, Boolean isCovered); } src/main/java/org/springblade/modules/equipage/service/impl/EquipageServiceImpl.java
@@ -4,18 +4,30 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springblade.modules.equipage.entity.Equipage; import org.springblade.modules.equipage.excel.EquipageExcel; import org.springblade.modules.equipage.mapper.EquipageMapper; import org.springblade.modules.equipage.service.EquipageService; import org.springblade.modules.equipage.vo.EquipageVo; import org.springblade.modules.system.service.IUserDeptService; import org.springblade.modules.system.service.IUserService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * 装备服务实现类 * @author zhongrj */ @Service @AllArgsConstructor public class EquipageServiceImpl extends ServiceImpl<EquipageMapper, Equipage> implements EquipageService { private final IUserService userService; private final IUserDeptService userDeptService; @Override public IPage<EquipageVo> selectEquipagePage(IPage<EquipageVo> page, EquipageVo rquipage) { @@ -30,4 +42,53 @@ public EquipageVo selectEquipageInfo(Equipage rquipage) { return baseMapper.selectEquipageInfo(rquipage); } /** * 保安公司装备导入 * @param data 装备数据集合 * @param isCovered */ @Override @Transactional(rollbackFor = Exception.class) public void importEquipage(List<EquipageExcel> data, Boolean isCovered) { if (data.size()>0){ //数据导入 data.forEach(equipageExcel -> { Equipage equipage = new Equipage(); //使用责任人身份证号匹配userId if (null!=equipageExcel.getIdCardNo() && equipageExcel.getIdCardNo()!=""){ equipage.setUserId(userService.getUserInfoByIdCardNo(equipageExcel.getIdCardNo()).getId()); equipage.setPersonInCharge(userService.getUserInfoByIdCardNo(equipageExcel.getIdCardNo()).getRealName()); } //使用保安公司名称匹配组织机构id if (null!=equipageExcel.getDeptName() && equipageExcel.getDeptName()!=""){ equipage.setDeptId(Long.parseLong(userDeptService.selectIn(equipageExcel.getDeptName()))); } if (null!=equipageExcel.getBrand() && equipageExcel.getBrand()!="") { equipage.setBrand(equipageExcel.getBrand()); } if (null!=equipageExcel.getMode() && equipageExcel.getMode()!="") { equipage.setMode(equipageExcel.getMode()); } if (null!=equipageExcel.getName() && equipageExcel.getName()!="") { equipage.setName(equipageExcel.getName()); } if (null!=equipageExcel.getNumber() && equipageExcel.getNumber()!="") { equipage.setNumber(equipageExcel.getNumber()); } if (null!=equipageExcel.getSpecifications() && equipageExcel.getSpecifications()!="") { equipage.setSpecifications(equipageExcel.getSpecifications()); } //插入数据 this.save(equipage); }); } } } src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java
@@ -26,15 +26,18 @@ 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.apply.entity.Apply; import org.springblade.modules.exam.entity.ExamPaper; import org.springblade.modules.exam.entity.ExamSubjectChoices; import org.springblade.modules.exam.service.ExamPaperService; import org.springblade.modules.exam.vo.ExamPaperSubjectVO; import org.springblade.modules.exam.vo.ExamPaperVO; import org.springblade.modules.exam.wrapper.ExamPaperWrapper; import org.springblade.modules.training.entity.TrainExam; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -189,7 +192,6 @@ */ @GetMapping("/UnbindSubject") public R UnbindSubject(String paperid,String subjectid){ return R.status(examPaperService.UnbindSubject(paperid,subjectid)); } @@ -205,5 +207,97 @@ } /** * 审核修改 * @param examPaper 报名培训申请信息对象 */ @PostMapping("/update-audit") public R updateAudit(@RequestBody ExamPaper examPaper){ examPaper.setAuditTime(new Date()); //审核通过,插入一条考试信息 if (examPaper.getAuditStatus()==1){ examPaper.setAuditTime(new Date()); //修改考试审核状态 examPaperService.updateById(examPaper); //查询当前考试已报名的人员集合数据 //生成准考证号 getCandidateNo(examPaper); //查询 } return R.status(false); } /** * 生成准考证号码 * @param examPaper 考试报名信息对象 */ private String getCandidateNo(ExamPaper examPaper) { //获取考试信息 if (null!=examPaper.getStartTime()){ String format = new SimpleDateFormat("yyyy-MM-dd").format(examPaper.getStartTime()); String year = format.substring(2,4); String quarter = null; String months = null; int month = Integer.parseInt(format.substring(5,7)); int day = Integer.parseInt(format.substring(8,10)); String days = null; if (month>0 && month<=3){ quarter = "C"; } if (month>3 && month<=6){ quarter = "X"; } if (month>6 && month<=9){ quarter = "Q"; } if (month>9 && month<=12){ quarter = "D"; } if (month<=9){ months = "0" + month; } if (day<=9){ days = "0" + day; }else { days = ""+day; } String type = null; if (examPaper.getExamType()==1){ type = "z"; } if (examPaper.getExamType()==2){ type = "m"; } //获取考试名称前缀,去除数字,字母 String examName = examPaper.getExamName().replaceAll("\\s*", "").replaceAll("[^(\\u4e00-\\u9fa5)]", "").substring(0,1); //前缀 = 年的最后两位 + 月份(两位) + 考试名称(中文拼音)首字母(去除数字,字母) + 考试类型 + 季度拼音首字母大写(春季就是 C) // String result = year // + months // + toFirstChar(examName).toUpperCase() // + examPaper.getExamType() // + quarter; //前缀 = 年的最后两位 + 月份(两位) + 日 (两位) + 考试类型 正式考试 z 模拟考试 m String result = year + months + days + type; //查询是当前前缀已生成的数量 int count = examPaperService.getCandidateNoCount(result); if (count==0){ return result + "0000"; } //格式化 DecimalFormat decimalFormat = new DecimalFormat("0000"); //返回 return result + (decimalFormat.format(count++)); } return null; } } src/main/java/org/springblade/modules/exam/entity/ExamPaper.java
@@ -109,5 +109,25 @@ @TableField("train_exam_id") private Long trainExamId; /** * 审核状态 1:通过 2:不通过 3:待审核 */ @TableField("audit_status") private Integer auditStatus; /** * 审核明细 */ @TableField("audit_detail") private String auditDetail; /** * 审核时间 */ @TableField("audit_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date auditTime; } src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java
@@ -57,4 +57,11 @@ * @return */ List<ExamPaperVO> getExamDetail(String userId); /** * 查询前缀相同的准考证数量 * @param result 前缀 * @return */ int getCandidateNoCount(String result); } src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml
@@ -174,4 +174,13 @@ ) </select> <!--查询前缀相同的准考证数量--> <select id="getCandidateNoCount" resultType="java.lang.Integer"> select count(*) from sys_training_registration where 1=1 <if test="result!=null and result!=''"> and candidate_no like concat('%', #{result},'%') </if> </select> </mapper> src/main/java/org/springblade/modules/exam/service/ExamPaperService.java
@@ -65,4 +65,11 @@ * @return */ List<ExamPaperVO> getExamDetail(String userId); /** * 查询前缀相同的准考证数量 * @param result 前缀 * @return */ int getCandidateNoCount(String result); } src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
@@ -87,4 +87,14 @@ //查询考试信息 return baseMapper.getExamDetail(userId); } /** * 查询前缀相同的准考证数量 * @param result 前缀 * @return */ @Override public int getCandidateNoCount(String result) { return baseMapper.getCandidateNoCount(result); } } src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
@@ -37,10 +37,7 @@ import javax.servlet.http.HttpServletResponse; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.*; /** * @author zhongrj @@ -386,4 +383,69 @@ } return pinyinStr; } /** * 生成试卷,报名 * @param ids 报名ids */ @PostMapping("/batchExam") public R batchExam(@RequestParam String ids, @RequestParam String examTime, @RequestParam Date startTime, @RequestParam Date endTime){ if (!ids.equals("")){ List<String> list = Arrays.asList(ids.split(",")); if (list.size()>0){ ExamPaper examPaper = new ExamPaper(); examPaper.setExamTime(examTime); examPaper.setExamType(2); examPaper.setStartTime(startTime); examPaper.setEndTime(endTime); Calendar instance = Calendar.getInstance(); instance.setTime(startTime); int year = instance.get(Calendar.YEAR); int month = instance.get(Calendar.MONTH)+1; int day = instance.get(Calendar.DAY_OF_MONTH); String examName = year + "年" + month+ "月"+ day +"日" +"保安员证模拟考试"; examPaper.setExamName(examName); //待审核 examPaper.setAuditStatus(3); //生成考试 examPaperService.save(examPaper); } }else { //查询已报名未关联试卷的人员 List<Long> applyIds = trainingRegistrationService.getTrainIds(); if (applyIds.size()>0){ //生成考试 ExamPaper examPaper = new ExamPaper(); examPaper.setExamTime(examTime); examPaper.setExamType(2); examPaper.setStartTime(startTime); examPaper.setEndTime(endTime); Calendar instance = Calendar.getInstance(); instance.setTime(startTime); int year = instance.get(Calendar.YEAR); int month = instance.get(Calendar.MONTH)+1; int day = instance.get(Calendar.DAY_OF_MONTH); String examName = year + "年" + month+ "月"+ day +"日" +"保安员证模拟考试"; examPaper.setExamName(examName); //待审核 examPaper.setAuditStatus(3); //生成考试 examPaperService.save(examPaper); //修改报名信息 // applyIds.forEach(id ->{ // Apply apply = new Apply(); // apply.setId(id); // apply.setExamId(examPaper.getId()); // apply.setCandidateNo(getCandidateNo(apply)); // applyService.updateById(apply); // }); } } return null; } } src/main/java/org/springblade/modules/training/mapper/TrainingRegistrationMapper.java
@@ -52,4 +52,10 @@ * @return */ Integer getTrainingRegistrationInfo(@Param("trainingRegistration")TrainingRegistration trainingRegistration); /** * 查询已报名培训公司未关联考试的人员 * @return */ List<Long> getTrainIds(); } src/main/java/org/springblade/modules/training/mapper/TrainingRegistrationMapper.xml
@@ -9,7 +9,7 @@ bt.dept_name AS deptName, bt0.dept_name AS trainUnitName, bu.real_name realName,bu.phone,bu.cardid idCardNo, ke.start_time trainExamTime,ke.exam_name trainExamName,ke.exam_type examType, ke.start_time trainExamTime,if(ke.audit_status=1,ke.exam_name,"") trainExamName,ke.exam_type examType, "保安证" applyCard FROM sys_training_registration sr @@ -143,4 +143,22 @@ </if> limit 1 </select> <!--查询已报名培训公司未关联考试的人员--> <select id="getTrainIds" resultType="java.lang.Long"> SELECT str.id FROM sys_training_registration str left join blade_user bu on str.user_id = bu.id WHERE 1=1 and str.is_exam = 1 and str.cancel = 1 and bu.is_train = 1 and str.train_exam_id is null </select> </mapper> src/main/java/org/springblade/modules/training/service/TrainingRegistrationService.java
@@ -55,4 +55,10 @@ * @return */ Integer getTrainingRegistrationInfo(TrainingRegistration trainingRegistration); /** * 查询已报名培训公司未关联考试的人员 * @return */ List<Long> getTrainIds(); } src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java
@@ -97,4 +97,13 @@ public Integer getTrainingRegistrationInfo(TrainingRegistration trainingRegistration) { return baseMapper.getTrainingRegistrationInfo(trainingRegistration); } /** * 查询已报名培训公司未关联考试的人员 * @return */ @Override public List<Long> getTrainIds() { return baseMapper.getTrainIds(); } }