From fae66d7b0ce061e6c103618fdfdf43fbb42561a9 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 11 Apr 2025 19:04:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E5=A4=B4bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkerAdmissionController.java | 37 ++++++++++++------- .../WorkerAdmissionDetailController.java | 2 +- .../baotou/entity/WorkerAdmissionDetail.java | 8 +++- .../xml/WorkerAdmissionDetailMapper.xml | 14 ++----- 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionController.java index f2e001c93..2f36b6b14 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionController.java @@ -8,10 +8,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.core.util.ZipUtil; +import cn.hutool.core.util.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.gexin.fastjson.JSON; @@ -244,6 +241,25 @@ public class WorkerAdmissionController { if (CollUtil.isNotEmpty(idCardList)) { List ids = idCardList.stream().map(Object::toString).collect(Collectors.toList()); + //判断身份证格式正确 + for (String idCard : ids) { + if (!IdCardUtils.strongVerifyIdNumber(idCard)) { + throw new OpenAlertException("身份证格式" + idCard + "错误"); + } + } + + // 不能重复身份证号,使用Map统计每个元素的出现次数 + Map frequencyMap = ids.stream() + .collect(Collectors.groupingBy(s -> s, Collectors.counting())); + // 找出出现次数大于1的元素 + List duplicates = frequencyMap.entrySet().stream() + .filter(entry -> entry.getValue() > 1) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + if (!duplicates.isEmpty()) { + throw new OpenAlertException("存在重复身份证号" + StrUtil.join(",", duplicates)); + } + List blacklists = workerBlacklistService.list(new LambdaQueryWrapper() .in(WorkerBlacklist::getIdCard, ids)).stream().map(WorkerBlacklist::getIdCard).collect(Collectors.toList()); if (CollUtil.isNotEmpty(blacklists)) { @@ -373,16 +389,12 @@ public class WorkerAdmissionController { .put("workerAdmissionIds", StrUtil.join(",", admissions.stream().map(WorkerAdmission::getId).collect(Collectors.toList()))) .put("projectSn", admissions.get(0).getProjectSn()) .put("isCertificateQualified", 1) + .put("queryExamStatus", 2)//合格 .build()); List certificateDetails = new ArrayList<>(); - Map idCardMap = new HashMap<>(); if (CollUtil.isNotEmpty(details)) { certificateDetails = workerAdmissionCertificateDetailService.list(new LambdaQueryWrapper() .in(WorkerAdmissionCertificateDetail::getWorkerAdmissionDetailId, details.stream().map(WorkerAdmissionDetail::getId).collect(Collectors.toList()))); - idCardMap = examTrainRecordService.list(new LambdaQueryWrapper() - .in(ExamTrainRecord::getWorkerCard, details.stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList())) - .eq(ExamTrainRecord::getIsPass, 1) - ).stream().collect(Collectors.toMap(ExamTrainRecord::getWorkerCard, Function.identity(), (examTrainRecord, examTrainRecord2) -> examTrainRecord)); } List> allList = new ArrayList<>(); //导出文件名称 @@ -409,7 +421,8 @@ public class WorkerAdmissionController { map.put("trainingEngineerName", null); List> listMap = new ArrayList<>(); map.put("listMap", listMap); - List detailList = details.stream().filter(detail -> Objects.equals(detail.getWorkerAdmissionId(), admission.getId())).collect(Collectors.toList()); + List detailList = details.stream().filter(detail -> Objects.equals(detail.getWorkerAdmissionId(), admission.getId())) + .sorted(Comparator.comparing(WorkerAdmissionDetail::getNum, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); if (CollUtil.isNotEmpty(detailList)) { int i = 0; for (WorkerAdmissionDetail detail : detailList) { @@ -422,10 +435,6 @@ public class WorkerAdmissionController { String entryDeadline = detail.getEntryDeadline(); String score = detail.getScore(); String workAreaName = detail.getWorkAreaName(); - if (!idCardMap.containsKey(idCard)) { - continue; - } - Map dm = new HashMap<>(); dm.put("order", ++i); dm.put("num", num); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionDetailController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionDetailController.java index 468ad8e0e..45d374657 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionDetailController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/WorkerAdmissionDetailController.java @@ -181,7 +181,7 @@ public class WorkerAdmissionDetailController { @PostMapping(value = "/batchPrintCard") public Result batchPrintCard(@ApiIgnore @RequestBody HashMap param) throws IOException { param.put("isCertificateQualified", 1); - List records = workerAdmissionDetailService.queryPageList(param).getRecords(); + List records = workerAdmissionDetailService.queryList(param); if (CollUtil.isEmpty(records)) { return Result.ok(); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmissionDetail.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmissionDetail.java index 62665f561..fb75b71a6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmissionDetail.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmissionDetail.java @@ -256,5 +256,11 @@ public class WorkerAdmissionDetail implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "项目组名称") - private java.lang.String projectGroupName ; + private java.lang.String projectGroupName; + @TableField(exist = false) + @ApiModelProperty(value = "科目名称") + private String subjectName; + @TableField(exist = false) + @ApiModelProperty(value = "时长") + private String duration; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionDetailMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionDetailMapper.xml index 56607b879..edbc8a556 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionDetailMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionDetailMapper.xml @@ -25,24 +25,18 @@ ,tr.id as record_id ,tr.is_new_batch + ,tr.duration + ,es.name subject_name ,wa.certificate_issuing_person ,pg.project_group_name from worker_admission_detail t left join worker_admission wa on wa.id=t.worker_admission_id left join enterprise_info ei1 on ei1.id=t.epc_cbs left join enterprise_info ei2 on ei2.id=t.enterprise_id - - - - - - - - - - left join exam_train_record tr on tr.application_id=wa.id and t.id=tr.worker_id and tr.application_type=1 and tr.submit = 1 + left join exam_paper ep on ep.id=wa.paper_id + join exam_subject es on ep.subject_id = es.id left join post_work_type t2 on t2.id = t.post_work_type LEFT JOIN project_group pg on pg.id=t.project_group where 1=1