| | |
| | | package org.springblade.modules.training.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.modules.FTP.FtpUtil; |
| | | import org.springblade.modules.FTP.Monitor; |
| | | import org.springblade.modules.FTP.Result; |
| | | import org.springblade.modules.apply.entity.Apply; |
| | | import org.springblade.modules.exam.entity.ExamPaper; |
| | | import org.springblade.modules.exam.service.ExamPaperService; |
| | | 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.excel.TrainingRegistrationExcel; |
| | | import org.springblade.modules.training.excel.TrainingRegistrationImporter; |
| | | import org.springblade.modules.training.service.TrainingRegistrationService; |
| | | import org.springblade.modules.training.vo.TrainingRegistrationVo; |
| | | import org.springblade.modules.vip.service.UserVipService; |
| | | import org.springblade.modules.vip.service.VipTopicService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | |
| | | |
| | | private final ExamPaperService examPaperService; |
| | | |
| | | private final UserVipService userVipService; |
| | | |
| | | private final VipTopicService vipTopicService; |
| | | private final MyAsyncService myAsyncService; |
| | | |
| | | private final RedisTemplate redisTemplate; |
| | | |
| | | |
| | | /** |
| | | * 自定义分页 |
| | | * @param query page,size |
| | |
| | | @ApiOperation(value = "新增", notes = "传入trainingRegistration") |
| | | public R save(@RequestBody TrainingRegistration trainingRegistration){ |
| | | //查询人员是否已报名 |
| | | User user = userService.getById(trainingRegistration.getUserId()); |
| | | User user = userService.getUserById(trainingRegistration.getUserId()); |
| | | if (null==user.getIsTrain()){ |
| | | //已报名 |
| | | trainingRegistration.setCancel(1); |
| | |
| | | + "," + "'" + trainingRegistration.getIsExam() + "'" |
| | | + "," +"'" + trainingRegistration.getAuditStatus() + "'" + ");" + |
| | | "update blade_user set is_train = " + user1.getIsTrain() + " " +"where id = " + "'" + user1.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(sql); |
| | | //FtpUtil.sqlFileUpload(sql); |
| | | myAsyncService.FTP(sql); |
| | | } |
| | | |
| | | |
| | |
| | | @PostMapping("/cancelTrain") |
| | | public R cancelApply(@RequestBody TrainingRegistration trainingRegistration){ |
| | | //查询人员是否已报名 |
| | | User user = userService.getById(trainingRegistration.getUserId()); |
| | | User user = userService.getUserById(trainingRegistration.getUserId()); |
| | | |
| | | if(null==user.getIsTrain()){ |
| | | trainingRegistration.setCancel(2); |
| | | boolean status = trainingRegistrationService.updateById(trainingRegistration); |
| | |
| | | @PostMapping("/auditSucess") |
| | | public R auditSucess(@RequestBody TrainingRegistration trainingRegistration){ |
| | | //查询人员信息 |
| | | User user = userService.getById(trainingRegistration.getUserId()); |
| | | User user = userService.getUserById(trainingRegistration.getUserId()); |
| | | boolean status = false; |
| | | if (null!=user){ |
| | | //修改为已报名状态 |
| | |
| | | @PostMapping("/cancelTrainAudit") |
| | | public R cancelApplyAudit(@RequestBody TrainingRegistration trainingRegistration){ |
| | | //查询人员是否已报名 |
| | | User user = userService.getById(trainingRegistration.getUserId()); |
| | | User user = userService.getUserById(trainingRegistration.getUserId()); |
| | | if(null==user.getIsTrain()){ |
| | | trainingRegistration.setCancel(2); |
| | | trainingRegistration.setAuditStatus(2); |
| | |
| | | ",audit_status = " + "'" + trainingRegistration.getAuditStatus() + "'" + |
| | | " " +"where id = " + "'" + trainingRegistration.getId() + "';" + |
| | | "update blade_user set is_train = " + user.getIsTrain() + " " +"where id = " + "'" + user.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.FTP(s); |
| | | } |
| | | |
| | | /** |
| | |
| | | @PostMapping("/batchTrain") |
| | | public R batchApply(@RequestBody TrainingRegistrationVo trainingRegistration){ |
| | | List<String> list = Arrays.asList(trainingRegistration.getUserIds().split(",")); |
| | | AtomicInteger count = new AtomicInteger(); |
| | | //创建年龄部分对象集合 |
| | | List<String> errorList = new ArrayList<>(); |
| | | // AtomicReference<StringBuilder> builder = new AtomicReference<>(new StringBuilder()); |
| | | //遍历 |
| | | list.forEach(userId ->{ |
| | | User user = userService.getById(userId); |
| | | UserVO userVO = userService.getUserAgeById(Long.parseLong(userId)); |
| | | //判断年龄 |
| | | if (userVO.getAge()>=18 && userVO.getAge()<=60) { |
| | | //将集合推送内网,判断年龄是否符合要求,得到返回的结果,结果需包含userId,及年龄是否符合的状态 |
| | | //生成随机数 |
| | | String uuid = UUID.randomUUID().toString(); |
| | | //将 学校id 存入 redis |
| | | redisTemplate.opsForValue().set(uuid, trainingRegistration.getTrainingUnitId()); |
| | | //数据推送 |
| | | Map<String, Object> map = new HashMap<>(1); |
| | | map.put(uuid, list); |
| | | myAsyncService.FTPObjectListUserId(map); |
| | | |
| | | |
| | | // Result result = new Result(); |
| | | // int count = 0; |
| | | // //调用ftp获取返回数据 |
| | | // while (true){ |
| | | // try { |
| | | // Thread.sleep(3000); |
| | | // } catch (InterruptedException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // //调用ftp获取返回数据 |
| | | // result = Monitor.getFtpDataByUuidListTrain(uuid); |
| | | // //如果返回true,就退处 |
| | | // if (result.getCode() == 200) { |
| | | // break; |
| | | // } |
| | | // else { |
| | | // count++; |
| | | // if (count == 30) { |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // //创建集合,存年龄符合要求 |
| | | // List<String> ageList = new ArrayList<>(); |
| | | // //创建年龄不符合集合 |
| | | // List<String> errorList = new ArrayList<>(); |
| | | // AtomicInteger number = new AtomicInteger(); |
| | | // if (null!=result){ |
| | | // //获取 result |
| | | // List<Result> data1 = result.getData(); |
| | | // if (data1.size()>0){ |
| | | // for (Result result1 : data1) { |
| | | // // 取出 Msg ,此 msg 存的对应的 uuid |
| | | // Long userId = result1.getUserId(); |
| | | // if (result1.getCode()==200){ |
| | | // //加入新增集合 |
| | | // ageList.add(userId.toString()); |
| | | // } |
| | | // //年龄不符合要求 |
| | | // if (result1.getCode()==201){ |
| | | // //number ++ |
| | | // number.getAndIncrement(); |
| | | // //查询用户信息 |
| | | // User user = userService.getById(userId); |
| | | // //加入更新集合 |
| | | // errorList.add(user.getRealName()); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // if (ageList.size()>0) { |
| | | // //遍历 |
| | | // ageList.forEach(userId -> { |
| | | // User user = userService.getUserById(userId); |
| | | // //未报名的新增,已报名的不做处理 |
| | | // if (null == user.getIsTrain()) { |
| | | // TrainingRegistration trainingRegistration1 = new TrainingRegistration(); |
| | | // trainingRegistration1.setCancel(1); |
| | | // //默认为未考试状态 |
| | | // trainingRegistration1.setIsExam(1); |
| | | // //未提交考试审核 |
| | | // trainingRegistration1.setAuditStatus(4); |
| | | // trainingRegistration1.setTrainingTime(new Date()); |
| | | // trainingRegistration1.setUserId(userId); |
| | | // trainingRegistration1.setTrainingUnitId(trainingRegistration.getTrainingUnitId()); |
| | | // trainingRegistrationService.save(trainingRegistration1); |
| | | // //修改保安报名状态 |
| | | // user.setIsTrain(1); |
| | | // userService.updateById(user); |
| | | // |
| | | // //数据同步 |
| | | // saveTrainingRegistration(trainingRegistration1, user); |
| | | // } else { |
| | | // if (user.getIsTrain() != 1) { |
| | | // TrainingRegistration trainingRegistration1 = new TrainingRegistration(); |
| | | // trainingRegistration1.setCancel(1); |
| | | // //默认为未考试状态 |
| | | // trainingRegistration1.setIsExam(1); |
| | | // //未提交考试审核 |
| | | // trainingRegistration1.setAuditStatus(4); |
| | | // trainingRegistration1.setTrainingTime(new Date()); |
| | | // trainingRegistration1.setUserId(userId); |
| | | // trainingRegistration1.setTrainingUnitId(trainingRegistration.getTrainingUnitId()); |
| | | // trainingRegistrationService.save(trainingRegistration1); |
| | | // //修改保安报名状态 |
| | | // user.setIsTrain(1); |
| | | // userService.updateById(user); |
| | | // |
| | | // //数据同步 |
| | | // saveTrainingRegistration(trainingRegistration1, user); |
| | | // } |
| | | // } |
| | | // }); |
| | | // } |
| | | // |
| | | // //如果存在年龄不符的,则抛出异常 |
| | | // if (number.get()>0){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!"); |
| | | // } |
| | | return R.data(200,"报名成功"); |
| | | } |
| | | |
| | | /** |
| | | * 批量报名 |
| | | * @param trainingRegistration 考试报名信息对象 |
| | | */ |
| | | @PostMapping("/batchTrains") |
| | | public R batchApplys(@RequestBody TrainingRegistrationVo trainingRegistration){ |
| | | List<String> list = Arrays.asList(trainingRegistration.getUserIds().split(",")); |
| | | |
| | | if (list.size()>0) { |
| | | //遍历 |
| | | list.forEach(userId -> { |
| | | User user = userService.getUserById(userId); |
| | | //未报名的新增,已报名的不做处理 |
| | | if (null == user.getIsTrain()) { |
| | | TrainingRegistration trainingRegistration1 = new TrainingRegistration(); |
| | |
| | | userService.updateById(user); |
| | | |
| | | //数据同步 |
| | | saveTrainingRegistration(trainingRegistration1,user); |
| | | // builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get())); |
| | | saveTrainingRegistration(trainingRegistration1, user); |
| | | } else { |
| | | if (user.getIsTrain() != 1) { |
| | | TrainingRegistration trainingRegistration1 = new TrainingRegistration(); |
| | |
| | | userService.updateById(user); |
| | | |
| | | //数据同步 |
| | | saveTrainingRegistration(trainingRegistration1,user); |
| | | // builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get())); |
| | | saveTrainingRegistration(trainingRegistration1, user); |
| | | } |
| | | } |
| | | }else { |
| | | //count ++ |
| | | count.getAndIncrement(); |
| | | //放入集合 |
| | | errorList.add(user.getCardid()); |
| | | } |
| | | }); |
| | | // //同步 |
| | | // if (builder.get().length()>0) { |
| | | // FtpSyncUtil.slqSync(builder.get()); |
| | | // } |
| | | //如果存在年龄不符的,则抛出异常 |
| | | if (count.get()>0){ |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | throw new ServiceException("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!"); |
| | | }); |
| | | } |
| | | |
| | | //如果存在年龄不符的,则抛出异常 |
| | | // if (number.get()>0){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!"); |
| | | // } |
| | | return R.data(200,"报名成功"); |
| | | } |
| | | |
| | |
| | | */ |
| | | @PostMapping("import-trainingRegistration") |
| | | @ApiOperation(value = "导入培训报名数据", notes = "传入excel") |
| | | public R importUser(MultipartFile file, Integer isCovered,Long examId) { |
| | | TrainingRegistrationImporter trainingRegistrationImporter = new TrainingRegistrationImporter(trainingRegistrationService, false,examId); |
| | | public R importUser(MultipartFile file, Integer isCovered,String deptId) { |
| | | TrainingRegistrationImporter trainingRegistrationImporter = new TrainingRegistrationImporter(trainingRegistrationService, false,deptId); |
| | | ExcelUtil.save(file, trainingRegistrationImporter, TrainingRegistrationExcel.class); |
| | | return R.success("操作成功"); |
| | | } |
| | |
| | | @ApiOperation(value = "导出模板") |
| | | public void exportUser(HttpServletResponse response) { |
| | | List<TrainingRegistrationExcel> list = new ArrayList<>(); |
| | | ExcelUtil.export(response, "培训报名数据模板", "培训报名数据表", list, TrainingRegistrationExcel.class); |
| | | //创建示例 |
| | | TrainingRegistrationExcel excel = new TrainingRegistrationExcel(); |
| | | excel.setDeptName("****保安公司"); |
| | | excel.setRealName("张三"); |
| | | excel.setDeptName("360110202201010001"); |
| | | list.add(excel); |
| | | ExcelUtil.export(response, "培训报名数据模板" + DateUtil.time(), "培训报名数据表", list, TrainingRegistrationExcel.class); |
| | | } |
| | | |
| | | |
| | |
| | | "," + "'" + examPaper.getCreator() +"'" + |
| | | "," + "'" + creatorTimeFormat +"'" + |
| | | "," +"'" + examPaper.getAuditStatus() + "'" + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.FTP(s); |
| | | |
| | | |
| | | //修改报名信息 |
| | |
| | | "update sys_training_registration set train_exam_id = " + "'" + trainingRegistration.getTrainExamId() + "'" |
| | | + ",audit_status = " + "'" + trainingRegistration.getAuditStatus() + "'" |
| | | + " " + "where id = " + "'" + trainingRegistration.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.FTP(s1); |
| | | } |
| | | }); |
| | | } |
| | |
| | | "," + "'" + examPaper.getCreator() +"'" + |
| | | "," + "'" + creatorTimeFormat +"'" + |
| | | "," +"'" + examPaper.getAuditStatus() + "'" + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.FTP(s); |
| | | |
| | | //修改报名信息 |
| | | list.forEach(id ->{ |
| | |
| | | "update sys_training_registration set train_exam_id = " + "'" + trainingRegistration.getTrainExamId() + "'" |
| | | + ",audit_status = " + "'" + trainingRegistration.getAuditStatus() + "'" |
| | | + " " + "where id = " + "'" + trainingRegistration.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.FTP(s1); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否为会员标记 |
| | | * @param trainingRegistration |
| | | * @return |
| | | */ |
| | | @PostMapping("/vipSign") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R vipSign(@RequestBody TrainingRegistration trainingRegistration){ |
| | | //新增会员记录 |
| | | userVipService.insertUserVipInfo(trainingRegistration); |
| | | //新增会员题库记录 |
| | | vipTopicService.insertVipTopicInfo(trainingRegistration); |
| | | //内网报名信息同步 |
| | | String s1 = |
| | | "update sys_training_registration set vip_status = " + "'" + trainingRegistration.getVipStatus() + "'" |
| | | + " " + "where id = " + "'" + trainingRegistration.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.FTP(s1); |
| | | //更新并返回数据 |
| | | return R.data(trainingRegistrationService.updateById(trainingRegistration)); |
| | | } |
| | | |
| | | /** |
| | | * 批量将已报名人员标记为已缴费 |
| | | * @param trainingRegistration |
| | | * @return |
| | | */ |
| | | @PostMapping("/vipSignBatch") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R vipSignBatch(@RequestBody TrainingRegistrationVo trainingRegistration){ |
| | | //查询已报名,未考试的报名信息 |
| | | List<TrainingRegistration> trainingRegistrationList = trainingRegistrationService.getList(trainingRegistration); |
| | | if (trainingRegistrationList.size()>0){ |
| | | for (TrainingRegistration registration : trainingRegistrationList) { |
| | | if (registration.getVipStatus().equals(2)) { |
| | | registration.setVipStatus(1); |
| | | //新增会员记录 |
| | | userVipService.insertUserVipInfo(registration); |
| | | //新增会员题库记录 |
| | | vipTopicService.insertVipTopicInfo(registration); |
| | | //内网报名信息同步 |
| | | String s1 = |
| | | "update sys_training_registration set vip_status = " + "'" + registration.getVipStatus() + "'" |
| | | + " " + "where id = " + "'" + registration.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.FTP(s1); |
| | | //更新 |
| | | trainingRegistrationService.updateById(registration); |
| | | } |
| | | } |
| | | } |
| | | //返回数据 |
| | | return R.data(true); |
| | | } |
| | | } |