Administrator
2021-08-12 832d80c13f96155264fc35ffc8b1136dbdf5946b
公司装备导入
16 files modified
2 files added
508 ■■■■■ changed files
src/main/java/org/springblade/modules/apply/controller/ApplyController.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/controller/EquipageController.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/entity/Equipage.java 6 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/excel/EquipageExcel.java 96 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/excel/EquipageImporter.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/service/EquipageService.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/equipage/service/impl/EquipageServiceImpl.java 61 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/controller/ExamPaperController.java 96 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/entity/ExamPaper.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/service/ExamPaperService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java 70 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/mapper/TrainingRegistrationMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/mapper/TrainingRegistrationMapper.xml 20 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/service/TrainingRegistrationService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java 9 ●●●●● patch | view | raw | blame | history
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();
    }
}