From e101f5652782ec7aba6e6f7d78c4a0fec3bf7b90 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Thu, 13 Feb 2025 14:19:29 +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 --- .../entity/ReturnTrainingApplication.java | 4 +++ .../baotou/entity/WorkerAdmission.java | 3 ++ .../ReturnTrainingApplicationMapper.java | 9 ++++++ .../baotou/mapper/WorkerAdmissionMapper.java | 9 ++++++ .../xml/ReturnTrainingApplicationMapper.xml | 17 ++++++++++ .../xml/WorkerAdmissionDetailMapper.xml | 3 +- .../mapper/xml/WorkerAdmissionMapper.xml | 17 ++++++++++ .../ReturnTrainingApplicationServiceImpl.java | 2 ++ .../impl/ReturnTrainingDetailServiceImpl.java | 2 +- .../impl/WorkerAdmissionServiceImpl.java | 31 ++++++++++++------- .../exam/controller/ExamWorkerController.java | 26 ++++++++++++---- .../exam/mapper/xml/ExamTrainRecordMapper.xml | 5 +-- .../modules/worker/entity/WorkerInfo.java | 2 -- .../service/impl/WorkerInfoServiceImpl.java | 5 ++- 14 files changed, 110 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingApplication.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingApplication.java index dec42b565..080ba880c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingApplication.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingApplication.java @@ -106,4 +106,8 @@ public class ReturnTrainingApplication implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "试卷名称") private java.lang.String paperName; + @TableField(exist = false) + @ApiModelProperty(value = "未考试人数") + private java.lang.Integer notExamNum; + } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmission.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmission.java index d9ccefb24..f0e45b10d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmission.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/WorkerAdmission.java @@ -130,6 +130,9 @@ public class WorkerAdmission implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "考试合格人数") private java.lang.Integer examQualifierNum; + @TableField(exist = false) + @ApiModelProperty(value = "未考试人数") + private java.lang.Integer notExamNum; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java index 1f7fec70c..e8931631d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java @@ -61,4 +61,13 @@ public interface ReturnTrainingApplicationMapper extends BaseMapper getQualifierWorker(@Param("list") List collect); + + /** + * 获取申请列表中未考试的人数map,key是申请id,map是人数 + * + * @param collect + * @return + */ + @MapKey("id") + Map getNotExamWorker(@Param("list") List collect); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/WorkerAdmissionMapper.java b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/WorkerAdmissionMapper.java index 9a1264a40..38782f093 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/WorkerAdmissionMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/WorkerAdmissionMapper.java @@ -44,4 +44,13 @@ public interface WorkerAdmissionMapper extends BaseMapper { */ @MapKey("id") Map getExamQualifierWorker(List collect); + + /** + * 获取申请列表中未考试的人数map,key是申请id,map是人数 + * + * @param collect + * @return + */ + @MapKey("id") + Map getNotExamWorker(List collect); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml index 171fc5066..337ae1d01 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml @@ -59,4 +59,21 @@ and etr.submit = 1 group by t.id + + 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 82a7e9c3a..6ffeb381e 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 @@ -14,7 +14,7 @@ + + diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingApplicationServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingApplicationServiceImpl.java index 9430429b5..732f222f9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingApplicationServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingApplicationServiceImpl.java @@ -71,8 +71,10 @@ public class ReturnTrainingApplicationServiceImpl extends ServiceImpl dealList(List list) { if (CollUtil.isNotEmpty(list)) { Map passMap = baseMapper.getQualifierWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList())); + Map notExamMap = baseMapper.getNotExamWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList())); list.forEach(o -> { o.setQualifierNum(Optional.ofNullable(passMap.get(o.getId())).map(m -> Convert.toInt(((Map) m).get("qualifierNum"))).orElse(0)); + o.setNotExamNum(Optional.ofNullable(notExamMap.get(o.getId())).map(m -> Convert.toInt(((Map) m).get("notExamNum"))).orElse(0)); }); } return list; diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingDetailServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingDetailServiceImpl.java index 6dc2861de..c5e115b38 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingDetailServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ReturnTrainingDetailServiceImpl.java @@ -51,7 +51,7 @@ public class ReturnTrainingDetailServiceImpl extends ServiceImpl queryWrapper = QueryGenerator.initPageQueryWrapper(ReturnTrainingDetail.class, param, true); Object applicationIdList = param.get("applicationIdList"); if (applicationIdList != null) { - queryWrapper.lambda().in(ReturnTrainingDetail::getApplicationId, applicationIdList); + queryWrapper.lambda().in(ReturnTrainingDetail::getApplicationId, (List) applicationIdList); } queryWrapper.orderByDesc(RefUtil.fieldNameUlc(ReturnTrainingDetail::getId)); return queryWrapper; diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionServiceImpl.java index 2238b1064..168529b97 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionServiceImpl.java @@ -109,8 +109,10 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl dealList(List list) { if (CollUtil.isNotEmpty(list)) { Map passMap = baseMapper.getExamQualifierWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList())); + Map notExamMap = baseMapper.getNotExamWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList())); list.forEach(o -> { o.setExamQualifierNum(Optional.ofNullable(passMap.get(o.getId())).map(m -> Convert.toInt(((Map) m).get("examQualifierNum"))).orElse(0)); + o.setNotExamNum(Optional.ofNullable(notExamMap.get(o.getId())).map(m -> Convert.toInt(((Map) m).get("notExamNum"))).orElse(0)); }); } return list; @@ -172,20 +174,23 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl workerTypeList = dictionaryItemService.getDictList("bt_worker_type", projectSn); if (map.get("details") != null) { if (map.get("details") instanceof List) { - List nums = workerAdmissionDetailService.list(new LambdaQueryWrapper() - .eq(WorkerAdmissionDetail::getProjectSn, projectSn) - .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1) - ).stream().map(WorkerAdmissionDetail::getNum).collect(Collectors.toList()); +// List nums = workerAdmissionDetailService.list(new LambdaQueryWrapper() +// .eq(WorkerAdmissionDetail::getProjectSn, projectSn) +// .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1) +// ).stream().map(WorkerAdmissionDetail::getNum).collect(Collectors.toList()); List detailsList = (List) map.get("details"); List idCards = detailsList.stream().map(o -> MapUtils.getString(((Map) o), "field4731914165560")).collect(Collectors.toList()); - List existDetailIdCards = workerAdmissionDetailService.list(new LambdaQueryWrapper() - .in(WorkerAdmissionDetail::getIdCard, idCards) - .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1) - .eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList()); + List readNums = detailsList.stream().map(o -> MapUtils.getString(((Map) o), "field8425114066876")).collect(Collectors.toList()); + List nums = workerInfoService.list(new LambdaQueryWrapper() + .in(WorkerInfo::getNum, readNums).eq(WorkerInfo::getProjectSn, projectSn).last(Cts.IGNORE_DATA_SCOPE_CONDITION)).stream().map(WorkerInfo::getNum).collect(Collectors.toList()); +// List existDetailIdCards = workerAdmissionDetailService.list(new LambdaQueryWrapper() +// .in(WorkerAdmissionDetail::getIdCard, idCards) +// .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1) +// .eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList()); List existWorkerIdCards = workerInfoService.list(new LambdaQueryWrapper() - .in(WorkerInfo::getIdCard, idCards).eq(WorkerInfo::getProjectSn, projectSn)).stream().map(WorkerInfo::getIdCard).collect(Collectors.toList()); - existDetailIdCards.addAll(existWorkerIdCards); - existDetailIdCards.stream().distinct(); + .in(WorkerInfo::getIdCard, idCards).eq(WorkerInfo::getProjectSn, projectSn).last(Cts.IGNORE_DATA_SCOPE_CONDITION)).stream().map(WorkerInfo::getIdCard).collect(Collectors.toList()); +// existDetailIdCards.addAll(existWorkerIdCards); + existWorkerIdCards.stream().distinct(); for (Object o : detailsList) { Map m = (Map) o; String num = MapUtils.getString(m, "field8425114066876").trim(); @@ -244,7 +249,7 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl Objects.equals(detail.getIdCard(), o1))) { + if (existWorkerIdCards.stream().anyMatch(o1 -> Objects.equals(detail.getIdCard(), o1))) { // 然后再人员录入到系统的操作中也要判断身份证在人员管理中存在发送通知给发起人,姓名+身份证人员信息已存在,已取消导入。 existStrs.add(detail.getWorkerName() + "[" + detail.getIdCard() + "]"); continue; @@ -332,10 +337,12 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl param) { - //复工或专项培训 List recordIds; - if (Objects.equals(MapUtils.getString(param, "idType"), 1)) { + Integer idType = MapUtils.getInteger(param, "idType"); + if (Objects.equals(idType, 1)) { + //复工或专项培训 param.put("applicationIdList", StrUtil.split(MapUtils.getString(param, "recordIds"), ",")); List details = returnTrainingDetailService.queryList(param); - recordIds = details.stream().map(returnTrainingDetail -> returnTrainingDetail.getRecordId() + "").collect(Collectors.toList()); + recordIds = details.stream().filter(o -> Objects.nonNull(o.getRecordId())).map(returnTrainingDetail -> returnTrainingDetail.getRecordId() + "").collect(Collectors.toList()); + param.put("recordIds", StrUtil.join(",", recordIds)); + } else if (Objects.equals(idType, 2)) { + //入场培训 + param.put("workerAdmissionIds", MapUtils.getString(param, "recordIds")); + List details = workerAdmissionDetailService.queryList(param); + recordIds = details.stream().filter(o -> Objects.nonNull(o.getRecordId())).map(returnTrainingDetail -> returnTrainingDetail.getRecordId() + "").collect(Collectors.toList()); + param.put("recordIds", StrUtil.join(",", recordIds)); } else { recordIds = StrUtil.split(MapUtils.getString(param, "recordIds"), ","); } if (CollUtil.isEmpty(recordIds)) { - return Result.ok(); + throw new OpenAlertException("无试卷下载"); } //List trainRecords = examTrainRecordService.list(new LambdaQueryWrapper() // .in(ExamTrainRecord::getId, recordIds)); @@ -348,7 +362,7 @@ public class ExamWorkerController { try { String tempUrl = Fileutils.getExportTemplateFile("template/下载试卷模板.docx").getAbsolutePath(); String wn = null; - String paperName = record.getWorkerName() + "试卷"; + String paperName = record.getWorkerName() + examPaper.getName(); Integer integer = nameMap.get(paperName); if (integer == null) { wn = paperName; diff --git a/src/main/java/com/zhgd/xmgl/modules/exam/mapper/xml/ExamTrainRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/exam/mapper/xml/ExamTrainRecordMapper.xml index d39c1d704..8f870281d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/exam/mapper/xml/ExamTrainRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/exam/mapper/xml/ExamTrainRecordMapper.xml @@ -233,8 +233,9 @@ left join team_info ti on ti.id=wi.team_id left join worker_type wt on wt.id = ti.worker_type_id left join enterprise_info ei on ei.id=wi.enterprise_id - left join (select * from worker_certificate wc1 join (select min(sort) as sort,worker_id from worker_certificate - wc group by worker_id) wc2 on wc1.sort=wc2.sort and wc1.worker_id=wc2.worker_id) wc on wi.id = wc.worker_id + left join (select wc1.* from worker_certificate wc1 join + (select min(sort) as sort,worker_id from worker_certificate wc group by worker_id) wc2 on wc1.sort=wc2.sort and + wc1.worker_id=wc2.worker_id) wc on wi.id = wc.worker_id where es.type = 3 and ec.submit = 1 group by wi.id ) a diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerInfo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerInfo.java index 8a413be44..2fb019b3a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerInfo.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/WorkerInfo.java @@ -225,14 +225,12 @@ public class WorkerInfo implements Serializable { */ @Excel(name = "班组ID", width = 15) @ApiModelProperty(value = "班组ID") - private java.lang.Long teamId; /** * 部门ID */ @Excel(name = "部门ID", width = 15) @ApiModelProperty(value = "部门ID") - private java.lang.Long departmentId; /** * 工人工资卡银行开户行名称 diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 87f7e2f93..c10847745 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -503,7 +503,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl teamInfos = teamInfoService.list(new LambdaQueryWrapper() .eq(TeamInfo::getProjectSn, workerInfo.getProjectSn()) @@ -580,6 +580,9 @@ public class WorkerInfoServiceImpl extends ServiceImpl 0) { throw new OpenAlertException(MessageUtil.get("existsIDCardErr")); } + if (StrUtil.isBlank(workerInfo.getNum())) { + throw new OpenAlertException("编号不能为空"); + } int count1 = workerInfoMapper.selectCount(new QueryWrapper().lambda().eq(WorkerInfo::getProjectSn, projectSn) .eq(WorkerInfo::getNum, workerInfo.getNum()).ne(WorkerInfo::getId, workerInfo.getId()).last(Cts.IGNORE_DATA_SCOPE_CONDITION)); if (count1 > 0) {