diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/PipelineWelderController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/PipelineWelderController.java index d7a9f09cf..33d40b0e4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/PipelineWelderController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/PipelineWelderController.java @@ -67,6 +67,7 @@ public class PipelineWelderController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "weldingPassRateDesc", value = "1焊接合格率降序", paramType = "query", required = false, dataType = "Integer"), }) @GetMapping(value = "/page") public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { 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 bd86e4614..69bb9e211 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 @@ -21,6 +21,8 @@ import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionCertificateDetailSer import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionDetailService; import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionService; import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; +import com.zhgd.xmgl.modules.exam.entity.ExamTrainRecord; +import com.zhgd.xmgl.modules.exam.service.IExamTrainRecordService; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; import com.zhgd.xmgl.util.*; @@ -49,6 +51,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @@ -79,6 +82,9 @@ public class WorkerAdmissionController { private HistoryService historyService; @Autowired private IWorkerInfoService workerInfoService; + @Lazy + @Autowired + private IExamTrainRecordService examTrainRecordService; /** * 分页列表查询 @@ -131,7 +137,10 @@ public class WorkerAdmissionController { JSONArray numList = JSON.parseArray(MapUtils.getString(map, "numList")); JSONArray idCardList = JSON.parseArray(MapUtils.getString(map, "idCardList")); if (CollUtil.isNotEmpty(numList)) { - List nums = workerAdmissionDetailService.list(new LambdaQueryWrapper().eq(WorkerAdmissionDetail::getProjectSn, projectSn)).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 existNums = new ArrayList<>(); for (int i = 0; i < numList.size(); i++) { String num = numList.getString(i); @@ -147,7 +156,9 @@ public class WorkerAdmissionController { if (CollUtil.isNotEmpty(idCardList)) { List ids = idCardList.stream().map(o -> o.toString()).collect(Collectors.toList()); List existDetailIdCards = workerAdmissionDetailService.list(new LambdaQueryWrapper() - .in(WorkerAdmissionDetail::getIdCard, ids).eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList()); + .in(WorkerAdmissionDetail::getIdCard, ids) + .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1) + .eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList()); List existWorkerIdCards = workerInfoService.list(new LambdaQueryWrapper() .in(WorkerInfo::getIdCard, ids).eq(WorkerInfo::getProjectSn, projectSn)).stream().map(WorkerInfo::getIdCard).collect(Collectors.toList()); existDetailIdCards.addAll(existWorkerIdCards); @@ -168,7 +179,6 @@ public class WorkerAdmissionController { return Result.ok(); } - /** * 编辑 * @@ -223,11 +233,19 @@ public class WorkerAdmissionController { if (CollUtil.isEmpty(admissions)) { return Result.success(new MapBuilder().put("file", null).build()); } - List details = workerAdmissionDetailService.queryList(new MapBuilder().put("workerAdmissionIds", StrUtil.join(",", admissions.stream().map(WorkerAdmission::getId).collect(Collectors.toList()))).build()); + List details = workerAdmissionDetailService.queryList(new MapBuilder() + .put("workerAdmissionIds", StrUtil.join(",", admissions.stream().map(WorkerAdmission::getId).collect(Collectors.toList()))) + .put("isCertificateQualified", 1) + .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<>(); //导出文件名称 @@ -250,7 +268,8 @@ public class WorkerAdmissionController { map.put("certificateIssuingPersonName", certificateIssuingPersonName); map.put("epcSafetyManagerName", epcSafetyManagerName); map.put("projectTeamHseManagerName", projectTeamHseManagerName); - map.put("trainingEngineerName", trainingEngineerName); +// map.put("trainingEngineerName", trainingEngineerName); + 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()); @@ -266,6 +285,9 @@ 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); @@ -366,57 +388,32 @@ public class WorkerAdmissionController { } //舍弃第一行表头数据 for (int j = sheet.getFirstRowNum() + 3; j <= sheet.getLastRowNum() - 2; j++) { -// DangerIdentificationEvaluationForm excelVo = new DangerIdentificationEvaluationForm(); //获取当前行 Row row = sheet.getRow(j); if (null == row) { continue; } -// //遍历行所有的列 -// int firstCellNum = row.getFirstCellNum(); -// int lastCellNum = row.getLastCellNum(); //列数 String value = ExcelUtils.getSheelValue(sheet, j, 10); - idCards.add(value); + if (StrUtil.isNotBlank(value)) { + idCards.add(value); + } } } -// importExcelVoList = importExcelVoList.stream().filter(d -> StringUtils.isNotBlank(d.getSequenceNumber())).collect(Collectors.toList()); -// 判断序号是否有重复的 -// Map collect = importExcelVoList.stream().map(DangerIdentificationEvaluationForm::getSequenceNumber).collect( -// Collectors.groupingBy(Function.identity(), Collectors.counting())); -// List list = new ArrayList<>(); -// for (String s : collect.keySet()) { -// if (collect.get(s) > 1) { -// list.add(s); -// } -// } -// if (list.size() > 0) { -// String collect1 = list.stream().collect(Collectors.joining(",")); -// return Result.error("序号有重复:" + collect1); -// } - - //业务逻辑处理...... -// List queryList = dangerIdentificationEvaluationFormService.list(new QueryWrapper().lambda().eq(DangerIdentificationEvaluationForm::getProjectSn, projectSn)); -// Map querySequenceNumberMap = queryList.stream().collect(Collectors.toMap(DangerIdentificationEvaluationForm::getSequenceNumber, Function.identity())); -// List updateList = new ArrayList<>(); -// List addList = new ArrayList<>(); -// for (DangerIdentificationEvaluationForm form : importExcelVoList) { -// form.setProjectSn(projectSn); -// if (querySequenceNumberMap.containsKey(form.getSequenceNumber())) { -// form.setId(querySequenceNumberMap.get(form.getSequenceNumber()).getId()); -// updateList.add(form); -// } else { -// addList.add(form); -// } -// } -// if (CollUtil.isNotEmpty(addList)) { -// dangerIdentificationEvaluationFormService.saveBatch(addList); -// } -// if (CollUtil.isNotEmpty(updateList)) { -// dangerIdentificationEvaluationFormService.updateBatchById(updateList); -// } - + if (CollUtil.isNotEmpty(idCards)) { + Set idCardSet = workerAdmissionDetailService.queryPageList(new MapBuilder() + .put("idCards", StrUtil.join(",", idCards)) + .put("isPass", 1) + .put("isCertificateQualified", 1) + .build()).getRecords().stream().map(WorkerAdmissionDetail::getIdCard).distinct().collect(Collectors.toSet()); + idCards = idCards.stream().filter(idCardSet::contains).collect(Collectors.toList()); + } + if (CollUtil.isEmpty(idCards)) { + throw new OpenAlertException("批量导入合格人员为空"); + } return Result.success(new MapBuilder().put("idCards", StrUtil.join(",", idCards)).build()); + } catch (OpenAlertException e) { + throw e; } catch (Exception e) { log.error("", e); return Result.error("excel解析数据异常......"); 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 6c976774c..4f14add15 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 @@ -14,7 +14,6 @@ import cn.hutool.extra.qrcode.QrCodeUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.gexin.fastjson.JSONObject; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; @@ -73,7 +72,7 @@ public class WorkerAdmissionDetailController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), - @ApiImplicitParam(name = "idCards", value = "身份证号s", paramType = "query", required = false, dataType = "String"), + @ApiImplicitParam(name = "idCards", value = "身份证号s(多个逗号分割)", paramType = "query", required = false, dataType = "String"), }) @GetMapping(value = "/page") public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { @@ -160,11 +159,13 @@ public class WorkerAdmissionDetailController { @OperLog(operModul = "人员入场明细管理", operType = "", operDesc = "批量录入人员到实名制中") @ApiOperation(value = "批量录入人员到实名制中", notes = "批量录入人员到实名制中", httpMethod = "POST") - @ApiImplicitParam(name = "idCards", value = "人员身份证s", paramType = "query", required = true, dataType = "String") + @ApiImplicitParams({ + @ApiImplicitParam(name = "idCards", value = "人员身份证s", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String") + }) @PostMapping(value = "/importWorkerBatch") public Result importWorkerBatch(@RequestBody HashMap param) { - workerAdmissionDetailService.importWorkerBatch(param); - return Result.ok(); + return Result.success(workerAdmissionDetailService.importWorkerBatch(param)); } @OperLog(operModul = "劳务管理", operType = "", operDesc = "批量制卡") @@ -172,6 +173,7 @@ public class WorkerAdmissionDetailController { @ApiImplicitParam(name = "idList", value = "ID列表", paramType = "body", required = true) @PostMapping(value = "/batchPrintCard") public Result batchPrintCard(@ApiIgnore @RequestBody HashMap param) throws IOException { + param.put("isCertificateQualified", 1); List records = workerAdmissionDetailService.queryPageList(param).getRecords(); 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 9f6e3bbe1..5307e53f1 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 @@ -171,6 +171,13 @@ public class WorkerAdmissionDetail implements Serializable { */ @ApiModelProperty(value = "更新时间") private java.util.Date updateDate; + @Excel(name = "联系电话", width = 15) + @ApiModelProperty(value="联系电话") + private java.lang.String phone ; + @Excel(name = "资质是否合格0不合格1合格", width = 15) + @ApiModelProperty(value="资质是否合格0不合格1合格") + private java.lang.Integer isCertificateQualified ; + @TableField(exist = false) private String random; 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 c5585d9fa..c1b235d3e 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 @@ -27,4 +27,8 @@ public interface WorkerAdmissionMapper extends BaseMapper { WorkerAdmission getById(String id); List queryList(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + Integer subTotalWorkerNum(Long workerAdmissionId); + + Integer subQualifiedWorkerNum(Long workerAdmissionId); } 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 fd6ba6fd5..a2bab810d 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 @@ -29,14 +29,16 @@ left join enterprise_info ei2 on ei2.id=t.enterprise_id left join device_unit du1 on du1.id=t.work_area left join worker_info wi on wi.id_card=t.id_card and t.project_sn=wi.project_sn - left join ( select etr.worker_card,max(etr.start_exam_time) as start_exam_time,etr.is_pass,score + left join ( select etr.* from + exam_train_record etr + join (select etr.worker_card,max(etr.start_exam_time) as start_exam_time from exam_train_record etr left join exam_paper ep on ep.id=etr.exam_paper_id left join exam_subject es on es.id=ep.subject_id where etr.project_sn = #{param.projectSn} and etr.is_re_education = 0 and es.type=1 - group by etr.worker_card) tr on tr.worker_card = t.id_card + group by etr.worker_card)t on t.worker_card=etr.worker_card and t.start_exam_time=etr.start_exam_time) tr on tr.worker_card = t.id_card left join ( diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionMapper.xml index 1f96e0dd2..926aafd63 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/WorkerAdmissionMapper.xml @@ -38,4 +38,12 @@ )t where t.id=#{id} + + + update worker_admission set total_worker_num=total_worker_num-1 where id=#{id} + + + + update worker_admission set qualifier_num=qualifier_num-1 where id=#{id} + diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionDetailService.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionDetailService.java index c3154f6c8..6cb64baea 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionDetailService.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionDetailService.java @@ -62,5 +62,5 @@ public interface IWorkerAdmissionDetailService extends IService param); + String importWorkerBatch(HashMap param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionService.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionService.java index 6d4632bbf..a1f8973f0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionService.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IWorkerAdmissionService.java @@ -64,4 +64,9 @@ public interface IWorkerAdmissionService extends IService { WorkerAdmission queryById(String id); void addFromFlow(Map map); + + void subTotalWorkerNum(Long workerAdmissionId); + + void subQualifiedWorkerNum(Long workerAdmissionId); + } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/PipelineWelderServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/PipelineWelderServiceImpl.java index d16f7bcbf..7e24b49d3 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/PipelineWelderServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/PipelineWelderServiceImpl.java @@ -1,37 +1,40 @@ package com.zhgd.xmgl.modules.baotou.service.impl; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.baotou.entity.PipelineWelder; -import com.zhgd.xmgl.modules.baotou.mapper.PipelineWelderMapper; -import com.zhgd.xmgl.modules.baotou.service.IPipelineWelderService; -import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.util.PageUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.modules.baotou.entity.PipelineWelder; +import com.zhgd.xmgl.modules.baotou.mapper.PipelineWelderMapper; +import com.zhgd.xmgl.modules.baotou.service.IPipelineWelderService; +import com.zhgd.xmgl.util.PageUtil; +import com.zhgd.xmgl.util.RefUtil; +import org.apache.commons.collections.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import java.util.HashMap; import java.util.List; -import com.zhgd.xmgl.util.RefUtil; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.beans.factory.annotation.Autowired; +import java.util.Objects; /** * @Description: 管道焊工 * @author: pds - * @date: 2024-09-20 + * @date: 2024-09-20 * @version: V1.0 */ @Service public class PipelineWelderServiceImpl extends ServiceImpl implements IPipelineWelderService { @Autowired private PipelineWelderMapper pipelineWelderMapper; + @Override public IPage queryPageList(HashMap param) { QueryWrapper queryWrapper = this.getQueryWrapper(param); Page page = PageUtil.getPage(param); - IPage pageList = baseMapper.queryList(page, queryWrapper,param); + IPage pageList = baseMapper.queryList(page, queryWrapper, param); pageList.setRecords(this.dealList(pageList.getRecords())); return pageList; } @@ -39,12 +42,17 @@ public class PipelineWelderServiceImpl extends ServiceImpl queryList(HashMap param) { QueryWrapper queryWrapper = getQueryWrapper(param); - return dealList(baseMapper.queryList(queryWrapper,param)); + return dealList(baseMapper.queryList(queryWrapper, param)); } private QueryWrapper getQueryWrapper(HashMap param) { QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(PipelineWelder.class, param, true); - queryWrapper.orderByDesc(RefUtil.fieldNameUlc(PipelineWelder::getId)); + Integer weldingPassRateDesc = MapUtils.getInteger(param, "weldingPassRateDesc"); + if (Objects.equals(weldingPassRateDesc, 1)) { + queryWrapper.orderByDesc(RefUtil.fieldNameUlc(PipelineWelder::getWeldingPassRate)); + } else { + queryWrapper.orderByDesc(RefUtil.fieldNameUlc(PipelineWelder::getId)); + } return queryWrapper; } @@ -61,7 +69,7 @@ public class PipelineWelderServiceImpl extends ServiceImpl schedules = projectScheduleMapper.selectList(new LambdaQueryWrapper() .eq(ProjectSchedule::getProjectSn, projectSn)); List units = projectScheduleDeviceUnitService.list(new LambdaQueryWrapper() - .eq(ProjectScheduleDeviceUnit::getProjectSn, projectSn)); + .eq(ProjectScheduleDeviceUnit::getProjectSn, projectSn) + .orderByAsc(ProjectScheduleDeviceUnit::getOrderBy) + ); for (ProjectScheduleDeviceUnit unit : units.stream().filter(o->!Objects.equals(o.getParentId(),0)).collect(Collectors.toList())) { List collect = schedules.stream().filter(o -> Objects.equals(o.getDeviceUnitId(), unit.getId())).collect(Collectors.toList()); unit.setSchedules(collect); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionDetailServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionDetailServiceImpl.java index 1395b7bb6..64c71ba72 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionDetailServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/WorkerAdmissionDetailServiceImpl.java @@ -16,9 +16,11 @@ import com.zhgd.xmgl.modules.baotou.entity.WorkerAdmissionDetail; import com.zhgd.xmgl.modules.baotou.mapper.WorkerAdmissionDetailMapper; import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionCertificateDetailService; import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionDetailService; +import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionService; +import com.zhgd.xmgl.modules.exam.entity.ExamTrainRecord; +import com.zhgd.xmgl.modules.exam.service.IExamTrainRecordService; import com.zhgd.xmgl.modules.worker.entity.*; import com.zhgd.xmgl.modules.worker.service.*; -import com.zhgd.xmgl.util.FlowUtil; import com.zhgd.xmgl.util.MapBuilder; import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.RefUtil; @@ -27,8 +29,10 @@ import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -56,6 +60,12 @@ public class WorkerAdmissionDetailServiceImpl extends ServiceImpl queryPageList(HashMap param) { @@ -105,6 +115,7 @@ public class WorkerAdmissionDetailServiceImpl extends ServiceImpl param) { + public String importWorkerBatch(HashMap param) { String idCards = MapUtils.getString(param, "idCards"); + String projectSn = MapUtils.getString(param, "projectSn"); + String msg = "操作成功"; if (StrUtil.isNotBlank(idCards)) { - List detailList = this.queryList(new MapBuilder().put("idCards", idCards).build()); + List detailList = this.queryList(new MapBuilder() + .put("projectSn", projectSn) + .put("idCards", idCards) + .put("isCertificateQualified", 1) + .put("isPass", 1) + .build()); if (CollUtil.isNotEmpty(detailList)) { ArrayList addTypes = new ArrayList<>(); ArrayList addTeams = new ArrayList<>(); @@ -136,7 +160,6 @@ public class WorkerAdmissionDetailServiceImpl extends ServiceImpl addCertificates = new ArrayList<>(); List lwDetails = detailList.stream().filter(o -> Objects.equals(o.getPersonType(), 1)).collect(Collectors.toList()); List glDetails = detailList.stream().filter(o -> Objects.equals(o.getPersonType(), 2)).collect(Collectors.toList()); - String projectSn = detailList.get(0).getProjectSn(); List existWorkerTypes = new ArrayList<>(); List existTeamInfos = new ArrayList<>(); List existDepartmentInfos = new ArrayList<>(); @@ -275,6 +298,7 @@ public class WorkerAdmissionDetailServiceImpl extends ServiceImpl repeatStrs = new ArrayList<>(); if (map.get("details") != null) { if (map.get("details") instanceof List) { - List nums = workerAdmissionDetailService.list(new LambdaQueryWrapper().eq(WorkerAdmissionDetail::getProjectSn, projectSn)).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::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList()); + .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); @@ -204,6 +209,8 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl pageList(Page page, Wrapper wrapper) { @@ -97,9 +98,13 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl examAnswerQuestionList) { - ExamTrainRecord examTrainRecord = this.getOne(new LambdaQueryWrapper().eq(ExamTrainRecord::getWorkerCard, examAnswerQuestionList.get(0).getWorkerCard()).eq(ExamTrainRecord::getExamPaperId, examAnswerQuestionList.get(0).getPaperId())); -// ExamTrain examTrain = examTrainService.getById(examTrainRecord.getTrainId()); - ExamPaper examPaper = examPaperService.getById(examAnswerQuestionList.get(0).getPaperId()); + String card = examAnswerQuestionList.get(0).getWorkerCard(); + if (StrUtil.isBlank(card)) { + throw new OpenAlertException("workerCard不能为空"); + } + Long paperId = examAnswerQuestionList.get(0).getTrainRecordId(); + ExamTrainRecord r = this.getOne(new LambdaQueryWrapper().eq(ExamTrainRecord::getWorkerCard, card).eq(ExamTrainRecord::getExamPaperId, paperId)); + ExamPaper examPaper = examPaperService.getById(paperId); int score = 0; int totalScore = 0; for (ExamAnswerQuestion examAnswerQuestion : examAnswerQuestionList) { @@ -108,38 +113,54 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl= examPaper.getPassLine() ? 1 : 0); - long duration = DateUtil.between(examTrainRecord.getStartExamTime(), new Date(), DateUnit.SECOND) * 1000; - examTrainRecord.setDuration(DateUtil.formatBetween(duration)); - examTrainRecord.setTotalScore(totalScore); - this.updateById(examTrainRecord); -// List list = examPointConfigService.list(Wrappers.lambdaQuery().eq(ExamPointConfig::getProjectSn, examTrainRecord.getProjectSn())); -// if (list.size() > 0) { -// if (examTrain.getTrainEndTime().compareTo(new Date()) > 0) { -// point("1", list, examTrainRecord.getWorkerId(), "在规定时间内参与" + examTrain.getName() + "考试,加"); -// } else { -// point("2", list, examTrainRecord.getWorkerId(), "没在规定时间内参与" + examTrain.getName() + "考试,扣"); -// } -// if (examTrainRecord.getIsPass() == 1) { -// point("3", list, examTrainRecord.getWorkerId(), "进行" + examTrain.getName() + "考试成绩合格,加"); -// } else { -// point("4", list, examTrainRecord.getWorkerId(), "进行" + examTrain.getName() + "考试成绩不合格,扣"); -// } -// } - if (Objects.equals(examTrainRecord.getIsPass(), 1)) { - ExamSubject subject = examSubjectService.getById(examPaper.getSubjectId()); + r.setExamNum(1); + r.setScore(score); + r.setIsPass(score >= examPaper.getPassLine() ? 1 : 0); + long duration = DateUtil.between(r.getStartExamTime(), new Date(), DateUnit.SECOND) * 1000; + r.setDuration(DateUtil.formatBetween(duration)); + r.setTotalScore(totalScore); + this.updateById(r); + ExamSubject subject = examSubjectService.getById(examPaper.getSubjectId()); + if (Objects.equals(r.getIsPass(), 1)) { //违章再教育合格:下发门禁 - //复工培训合格:下发门禁 - if (Objects.equals(subject.getType(), 2) || Objects.equals(subject.getType(), 1) && Objects.equals(examTrainRecord.getIsReEducation(), 1)) { - HashMap map = new HashMap<>(16); - map.put("id", examTrainRecord.getWorkerId()); - map.put("deductScore", 100); - workerInfoService.updateScoreSendAuth(map); + //复工培训合格:下发门禁,自动修改成入场 + if (Objects.equals(subject.getType(), 2) || Objects.equals(subject.getType(), 1) && Objects.equals(r.getIsReEducation(), 1)) { +// HashMap map = new HashMap<>(16); +// map.put("id", examTrainRecord.getWorkerId()); +// map.put("deductScore", 100); +// workerInfoService.updateScoreSendAuth(map); + List infos = workerInfoService.selectWorkerInfoList(new MapBuilder() + .put("id", r.getWorkerId()) + .put("projectSn", r.getProjectSn()) + .build()).getRecords(); + if (CollUtil.isNotEmpty(infos)) { + WorkerInfo workerInfo = infos.get(0); + workerInfo.setInserviceType(1); + workerInfo.setSafeScore(100D); + workerInfo.setAccountType(Objects.equals(workerInfo.getPersonType(), 2) ? 1 : 2); + if (Objects.equals(subject.getType(), 2)) { + workerInfo.setReEntry(1); + } + workerInfoService.editWorkerInfo(workerInfo); + } + } + } else { + //入场培训不合格通知给办证人,重考次数用完再提示 + if (Objects.equals(subject.getType(), 1) && r.getExamCount() > examPaper.getRetakeNum()) { + String workerCard = r.getWorkerCard(); + List admissionIds = workerAdmissionDetailService.list(new LambdaQueryWrapper() + .eq(WorkerAdmissionDetail::getIdCard, workerCard) + ).stream().map(WorkerAdmissionDetail::getWorkerAdmissionId).distinct().collect(Collectors.toList()); + if (CollUtil.isNotEmpty(admissionIds)) { + List certificateIssuingPersons = workerAdmissionService.list(new LambdaQueryWrapper() + .in(WorkerAdmission::getId, admissionIds)).stream().map(WorkerAdmission::getCertificateIssuingPerson).distinct().collect(Collectors.toList()); + noticeService.addUsersNotice(certificateIssuingPersons, "入场培训不合格通知", + StrUtil.format("{}(身份证号:{})参加考试科目为{}试题名称为{}的入场培训不合格", + r.getWorkerName(), r.getWorkerCard(), subject.getName(), examPaper.getName()), "10"); + } } } - return examTrainRecord; + return r; } @Override @@ -237,7 +258,11 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl details = workerAdmissionDetailService.queryList(new MapBuilder().put("projectSn", projectSn).put("idCard", idCard).build()); + List details = workerAdmissionDetailService.queryList(new MapBuilder() + .put("projectSn", projectSn) + .put("idCard", idCard) + .put("isCertificateQualified", 1) + .build()); if (details.size() > 0) { admissionDetail = details.get(0); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1769f2d8a..d8dd86481 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -216,4 +216,4 @@ tenant.tables[9]=wflow_sub_groups tenant.tables[10]=wflow_sub_process sada.host=http://api.e.v1.i-sada.net -h5.exam.url=http://192.168.34.175:8088/zjsjAPP/#/pages/personLocation/login/login?examPaperId= +h5.exam.url=http://192.168.34.133:20626/#/pages/personLocation/login/login?examPaperId=