智慧保安后台管理-外网
Administrator
2022-04-29 6af66f6ee55cd5763385a23da7a60dcb0a9df138
保安员报名修改
9 files modified
340 ■■■■■ changed files
src/main/java/org/springblade/modules/FTP/FtpUtil.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/UserController.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java 3 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java 12 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/excel/TrainingRegistrationExcel.java 50 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/excel/TrainingRegistrationImporter.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/service/TrainingRegistrationService.java 3 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java 257 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/FtpUtil.java
@@ -323,6 +323,10 @@
        MysqlCenlint.deletess("o"+response1+".json");
    }
    /**
     *  用户集合
     * @param map
     */
    public static void objectFileUploadList(Map<String, Object> map) {
        String json1 = JSON.toJSONString(map);
        String response1 = String.valueOf((new Date()).getTime());
src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -1389,7 +1389,8 @@
        Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
        user.setRoleId(oneRole.getId().toString());
        user.setDispatch("1");
        user.setExaminationType("0");
        //待审查
        user.setExaminationType("2");
        user.setAccount(user.getRealName());
        user.setStatus(1);
@@ -1552,7 +1553,6 @@
                "," + "'" + experience.getCompanyname() + "'" +
                "," + "'" + experience.getSecurityid() + "'"
                + ")";
            //FtpUtil.sqlFileUpload(s);
            myAsyncService.FTP(s);
        }
    }
@@ -1595,7 +1595,6 @@
        if (null != user1.getFingerprint() && !user1.getFingerprint().equals("")) {
            //url 转base64
            String base64Url = ImageUtils.imageUrlToBase64(user1.getFingerprint());
            System.out.println("base64Url = " + base64Url);
            user1.setFingerprint(base64Url);
        }
        return R.data(user1);
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -587,7 +587,7 @@
                where
                bu.is_deleted = 0
                and bu.status = 1
                and (bu.examination_type != 1 or bu.examination_type is null)
                and ((bu.examination_type != 1 and bu.examination_type != 2) or bu.examination_type is null)
                and (hold = 2 or hold = 3)
                and bd.id = #{user.deptId}
                and br.role_alias = '保安'
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -1345,7 +1345,8 @@
            user.setCreateTime(new Date());
            user.setUpdateTime(new Date());
            user.setDispatch("1");
            user.setExaminationType("0");
            //待审查
            user.setExaminationType("2");
            //推送内网的数据
            User user0 = user;
src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
@@ -435,8 +435,8 @@
     */
    @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("操作成功");
    }
@@ -448,7 +448,13 @@
    @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);
    }
src/main/java/org/springblade/modules/training/excel/TrainingRegistrationExcel.java
@@ -21,39 +21,39 @@
public class TrainingRegistrationExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    @ColumnWidth(15)
    @ExcelProperty("保安姓名")
    private String realName;
    @ColumnWidth(25)
    @ExcelProperty("考试名称")
    private String trainExamName;
    @ColumnWidth(25)
    @ExcelProperty("所属企业名称")
    private String deptName;
    @ColumnWidth(15)
    @ExcelProperty("准考证号")
    private String candidateNo;
    @ExcelProperty("姓名")
    private String realName;
//    @ColumnWidth(25)
//    @ExcelProperty("考试名称")
//    private String trainExamName;
//    @ColumnWidth(15)
//    @ExcelProperty("准考证号")
//    private String candidateNo;
    @ColumnWidth(20)
    @ExcelProperty("身份证号")
    private String idCardNo;
    @ColumnWidth(20)
    @ExcelProperty("报名时间")
    private Date trainingTime;
    @ColumnWidth(20)
    @ExcelProperty("考试时间")
    private Date trainExamTime;
    @ColumnWidth(15)
    @ExcelProperty("审核状态")
    private String auditStatus;
    @ColumnWidth(15)
    @ExcelProperty("考试状态")
    private String isExam;
//    @ColumnWidth(20)
//    @ExcelProperty("报名时间")
//    private Date trainingTime;
//
//    @ColumnWidth(20)
//    @ExcelProperty("考试时间")
//    private Date trainExamTime;
//
//    @ColumnWidth(15)
//    @ExcelProperty("审核状态")
//    private String auditStatus;
//
//    @ColumnWidth(15)
//    @ExcelProperty("考试状态")
//    private String isExam;
}
src/main/java/org/springblade/modules/training/excel/TrainingRegistrationImporter.java
@@ -35,10 +35,10 @@
    private final TrainingRegistrationService service;
    private final Boolean isCovered;
    private final Long examId;
    private final String deptId;
    @Override
    public void save(List<TrainingRegistrationExcel> data) {
        service.importTrainingRegistration(data, isCovered,examId);
        service.importTrainingRegistration(data, isCovered,deptId);
    }
}
src/main/java/org/springblade/modules/training/service/TrainingRegistrationService.java
@@ -41,7 +41,8 @@
     * @param data
     * @param isCovered
     */
    void importTrainingRegistration(List<TrainingRegistrationExcel> data, Boolean isCovered,Long examId);
    void importTrainingRegistration(List<TrainingRegistrationExcel> data, Boolean isCovered,String deptId);
//    void importTrainingRegistration(List<TrainingRegistrationExcel> data, Boolean isCovered,Long examId);
    /**
     * 查询准考证前缀相同的数量
src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java
@@ -1,14 +1,20 @@
package org.springblade.modules.training.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.AgeUtil;
import org.springblade.common.utils.IdCardNoUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.FTP.FtpUtil;
import org.springblade.modules.FTP.Monitor;
import org.springblade.modules.FTP.Result;
import org.springblade.modules.absentrecords.entity.AbsentRecords;
import org.springblade.modules.absentrecords.service.AbsentRecordsService;
import org.springblade.modules.apply.entity.Apply;
@@ -30,15 +36,15 @@
import org.springblade.modules.training.util.LongTimeUtil;
import org.springblade.modules.training.vo.TrainingRegistrationVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
/**
 * 报名培训服务实现类
@@ -57,6 +63,10 @@
    private final AbsentRecordsService absentRecordsService;
    private final ExamScoreService examScoreService;
    private final RedisTemplate redisTemplate;
    @Autowired
    private  MyAsyncService myAsyncService;
@@ -101,109 +111,160 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void importTrainingRegistration(List<TrainingRegistrationExcel> data, Boolean isCovered,Long examId) {
    public void importTrainingRegistration(List<TrainingRegistrationExcel> data, Boolean isCovered,String deptId) {
        //需要推送内网的保安员信息集合
        List<TrainingRegistration> trainingRegistrationList = new ArrayList<>();
        //年龄不符的保安员信息存入集合
        List<String> ageErrorList = new ArrayList<>();
        List<String> cardErrorList = new ArrayList<>();
        AtomicBoolean ageStatus = new AtomicBoolean(true);
        AtomicBoolean cardStatus = new AtomicBoolean(true);
        if (data.size()>0){
            List<String> list = new ArrayList<>();
            data.forEach(trainingRegistrationExcel -> {
                TrainingRegistration trainingRegistration = new TrainingRegistration();
//                User user = userService.getUserInfoByIdCardNo(trainingRegistrationExcel.getIdCardNo());
//                //通过培训公司查组织机构id
//                if (null!=trainingRegistrationExcel.getDeptName() && trainingRegistrationExcel.getDeptName()!=""){
//                    trainingRegistration.setTrainingUnitId(userDeptService.selectIn(trainingRegistrationExcel.getDeptName()));
//                }
//                trainingRegistration.setIsExam(2);
//                trainingRegistration.setCancel(1);
//                trainingRegistration.setTrainingTime(new Date());
//                trainingRegistration.setAuditStatus(1);
//                try {
//                    trainingRegistration.setTrainingTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-10-07 15:13:12"));
//                } catch (ParseException e) {
//                    e.printStackTrace();
//                }
//                ExamPaper paper = examPaperService.getById(120);
//                //生成准考证号
//                trainingRegistration.setCandidateNo(getCandidateNo(paper));
//                trainingRegistration.setTrainExamId(paper.getId().toString());
//                if (null!=user) {
//                    trainingRegistration.setUserId(user.getId().toString());
//                    this.save(trainingRegistration);
//                }else {
//                    list.add(trainingRegistrationExcel.getIdCardNo());
//                }
                //通过身份证号
                if (null!=trainingRegistrationExcel.getIdCardNo() && trainingRegistrationExcel.getIdCardNo()!=""){
                    User user = userService.getUserInfoByIdCardNo(trainingRegistrationExcel.getIdCardNo());
                    trainingRegistration.setUserId(user.getId().toString());
                    //通过培训公司查组织机构id
                    if (null!=trainingRegistrationExcel.getDeptName() && trainingRegistrationExcel.getDeptName()!=""){
                        trainingRegistration.setTrainingUnitId(userDeptService.selectIn(trainingRegistrationExcel.getDeptName()));
                    }
                    if(null==user.getIsTrain()){
                        trainingRegistration.setIsExam(1);
                        trainingRegistration.setCancel(1);
                        trainingRegistration.setTrainingTime(new Date());
                        trainingRegistration.setAuditStatus(4);
                        //如果examId不为空
                        if (null!=examId){
                            //查询考试信息
                            ExamPaper examPaper = examPaperService.getById(examId);
                            trainingRegistration.setTrainExamId(examId.toString());
                            //审核通过
                            if (examPaper.getAuditStatus()==1){
                                //生成准考证号
                                trainingRegistration.setCandidateNo(getCandidateNo(examPaper));
                                trainingRegistration.setAuditStatus(1);
                            }
                            //考试审核不通过
                            if (examPaper.getAuditStatus()==2){
                                trainingRegistration.setAuditStatus(2);
                            }
                            //考试待审核
                            if (examPaper.getAuditStatus()==3){
                                trainingRegistration.setAuditStatus(3);
                            }
            for (TrainingRegistrationExcel trainingRegistrationExcel : data) {
                //判断是否为当前单位
                String deptIds = userDeptService.selectIn(trainingRegistrationExcel.getDeptName());
                if (null!=deptIds && !deptIds.equals("")) {
                    if (null != deptId && !deptId.equals("")) {
                        if (!deptId.equals(deptIds)) {
                            throw new ServiceException("导入失败!不能给予不是本公司的保安员报名!");
                        }
                        //新增报名
                        this.save(trainingRegistration);
                    }
                }else {
                    //如果deptIds 为空,则说明还没有改公司
                    throw new ServiceException("导入失败!公司名:["+trainingRegistrationExcel.getDeptName()+"]不存在!");
                }
                        //修改保安报名状态
                        user.setIsTrain(1);
                        userService.updateById(user);
                        //数据同步
                        saveTrainingRegistration(trainingRegistration,user);
                //身份证校验
                if (null==trainingRegistrationExcel.getIdCardNo() || trainingRegistrationExcel.getIdCardNo().equals("")){
                    throw new ServiceException("导入失败!身份证号码不能为空!");
                }
                //姓名校验
                if (null==trainingRegistrationExcel.getRealName() || trainingRegistrationExcel.getRealName().equals("")){
                    throw new ServiceException("导入失败!姓名不能为空!");
                }
                if (null!=trainingRegistrationExcel.getIdCardNo() && !trainingRegistrationExcel.getIdCardNo().equals("")){
                    //去除所有空格
                    String cardid = trainingRegistrationExcel.getIdCardNo().replaceAll(" ", "");
                    //校验
                    boolean b = IdCardNoUtil.checkIdCardNo(cardid);
                    if(!b){
                        cardStatus.set(false);
                        cardErrorList.add(trainingRegistrationExcel.getIdCardNo());
                        continue;
                    }
                }
                //计算年龄
                Integer age = AgeUtil.idCardToAge(trainingRegistrationExcel.getIdCardNo());
                //判断年龄
                if (age<18 || age>60) {
                    ageStatus.set(false);
                    ageErrorList.add(trainingRegistrationExcel.getIdCardNo());
                    continue;
                }
                //向内网推送数据
                //生成随机数
                String uuid = UUID.randomUUID().toString();
                //创建培训对象
                TrainingRegistration trainingRegistration = new TrainingRegistration();
                trainingRegistration.setName(trainingRegistrationExcel.getRealName());
                trainingRegistration.setDeptId(Long.parseLong(deptId));
                trainingRegistration.setIdCardNo(trainingRegistrationExcel.getIdCardNo());
                //已报名
                trainingRegistration.setCancel(1);
                //默认为未考试状态
                trainingRegistration.setIsExam(1);
                //未提交考试审核
                trainingRegistration.setAuditStatus(4);
                trainingRegistration.setTrainingTime(new Date());
                //将 user 存入 redis
                redisTemplate.opsForValue().set(uuid, JSON.toJSONString(trainingRegistration));
                //trainingRegistration 临时设置uuid 到 AcademicUrl字段
                trainingRegistration.setAcademicUrl(uuid);
                //加入集合
                trainingRegistrationList.add(trainingRegistration);
            }
            Result result = new Result();
            //培训批量插入
            if (trainingRegistrationList.size()>0) {
                //生成随机数
                String uuid = UUID.randomUUID().toString();
                //数据推送
                Map<String, Object> map = new HashMap<>(1);
                map.put(uuid, trainingRegistrationList);
//                myAsyncService.FTPObjectTrianList(map);
                int count = 0;
                //调用ftp获取返回数据
                while (true){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    //调用ftp获取返回数据
                    result = Monitor.getFtpDataByUuidList(uuid);
                    //如果返回true,就退处
                    if (result.getCode() == 200) {
                        break;
                    }else {
                        if (user.getIsTrain()!=1) {
                            trainingRegistration.setIsExam(1);
                            trainingRegistration.setCancel(1);
                            trainingRegistration.setTrainingTime(new Date());
                            trainingRegistration.setAuditStatus(4);
                            //如果examId不为空
                            if (null!=examId){
                                //查询考试信息
                                ExamPaper examPaper = examPaperService.getById(examId);
                                trainingRegistration.setTrainExamId(examId.toString());
                                //审核通过
                                if (examPaper.getAuditStatus()==1){
                                    //生成准考证号
                                    trainingRegistration.setCandidateNo(getCandidateNo(examPaper));
                                }
                            }
                            //新增报名
                            this.save(trainingRegistration);
                            //修改保安报名状态
                            user.setIsTrain(1);
                            userService.updateById(user);
                            //数据同步
                            saveTrainingRegistration(trainingRegistration,user);
                        count++;
                        if (count == 30) {
                            break;
                        }
                    }
                }
            });
            String errorAccount = StringUtils.join(list, "\\\n");
            throw new ServiceException("未导入成功"+errorAccount);
            }
//            if (null!=result){
//                //获取 result
//                List<Result> data1 = result.getData();
//                if (data1.size()>0){
//                    for (Result result1 : data1) {
//                        // 取出 Msg ,此 msg 存的对应的 uuid
//                        String uuid = result1.getMsg();
//                        // 从redis 中获取对应的用户信息
//                        User user = handlerUserInfo(uuid);
//                        if (result1.getCode()==200){
//                            user.setId(result1.getUserId());
//                            this.save(user);
//                        }
//                        if (result1.getCode()==201){
//                            user.setId(result1.getUserId());
//                            user.setCreateTime(null);
//                            this.updateById(user);
//                        }
//                        if (result1.getCode()==202){
//                            status.set(false);
//                            //已在其他单位存在
//                            errorList.add(user.getCardid());
//                        }
//                        if (result1.getCode()==203){
//                            securityInvalidStatus.set(false);
//                            //保安证编号不匹配
//                            securityInvalidList.add(user.getCardid());
//                        }
//                    }
//                }
//            }
            //如果所有数据导入有一个异常
            StringBuilder errorBuilder = new StringBuilder();
            if (!ageStatus.get()){
                String errorAccount = StringUtils.join(ageErrorList, "\\\n");
                errorBuilder.append("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!");
            }
            if (!cardStatus.get()){
                String errorAccount = StringUtils.join(cardErrorList, "\\\n");
                errorBuilder.append("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
            }
            //抛出异常
            if (errorBuilder.length()>0){
                throw new ServiceException(errorBuilder.toString());
            }
        }
    }