包头bug修复

This commit is contained in:
guoshengxiong 2025-02-13 14:19:29 +08:00
parent 4c93c6fec5
commit e101f56527
14 changed files with 110 additions and 25 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -61,4 +61,13 @@ public interface ReturnTrainingApplicationMapper extends BaseMapper<ReturnTraini
*/
@MapKey("id")
Map<Long, Object> getQualifierWorker(@Param("list") List<Long> collect);
/**
* 获取申请列表中未考试的人数mapkey是申请idmap是人数
*
* @param collect
* @return
*/
@MapKey("id")
Map<Long, Object> getNotExamWorker(@Param("list") List<Long> collect);
}

View File

@ -44,4 +44,13 @@ public interface WorkerAdmissionMapper extends BaseMapper<WorkerAdmission> {
*/
@MapKey("id")
Map<Long, Object> getExamQualifierWorker(List<Long> collect);
/**
* 获取申请列表中未考试的人数mapkey是申请idmap是人数
*
* @param collect
* @return
*/
@MapKey("id")
Map<Long, Object> getNotExamWorker(List<Long> collect);
}

View File

@ -59,4 +59,21 @@
and etr.submit = 1
group by t.id
</select>
<select id="getNotExamWorker" resultType="java.util.Map">
select
t.id
,count(distinct wad.id_card) notExamNum
from return_training_application t
join return_training_detail wad on wad.application_id=t.id
where t.id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
and not exists(
select * from exam_train_record where application_id=t.id and worker_card=wad.id_card and application_type = 2
and submit = 1
)
group by t.id
</select>
</mapper>

View File

@ -14,7 +14,7 @@
</sql>
<select id="queryList" resultType="com.zhgd.xmgl.modules.baotou.entity.WorkerAdmissionDetail">
select *
select *
from (select t.*,
ei1.enterprise_name as epc_cbs_name,
ei2.enterprise_name as enterprise_name,
@ -24,6 +24,7 @@
tr.is_pass,
tr.score,
if(wi.id is null,0,1) as is_import
,tr.id as record_id
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

View File

@ -78,4 +78,21 @@
and etr.submit = 1
group by t.id
</select>
<select id="getNotExamWorker" resultType="java.util.Map">
select
t.id
,count(distinct wad.id_card) notExamNum
from worker_admission t
join worker_admission_detail wad on wad.worker_admission_id=t.id
where t.id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
and not exists(
select * from exam_train_record where application_id=t.id and worker_card=wad.id_card and application_type = 1
and submit = 1
)
group by t.id
</select>
</mapper>

View File

@ -71,8 +71,10 @@ public class ReturnTrainingApplicationServiceImpl extends ServiceImpl<ReturnTrai
private List<ReturnTrainingApplication> dealList(List<ReturnTrainingApplication> list) {
if (CollUtil.isNotEmpty(list)) {
Map<Long, Object> passMap = baseMapper.getQualifierWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList()));
Map<Long, Object> 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;

View File

@ -51,7 +51,7 @@ public class ReturnTrainingDetailServiceImpl extends ServiceImpl<ReturnTrainingD
QueryWrapper<ReturnTrainingDetail> 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;

View File

@ -109,8 +109,10 @@ public class WorkerAdmissionServiceImpl extends ServiceImpl<WorkerAdmissionMappe
private List<WorkerAdmission> dealList(List<WorkerAdmission> list) {
if (CollUtil.isNotEmpty(list)) {
Map<Long, Object> passMap = baseMapper.getExamQualifierWorker(list.stream().map(o -> o.getId()).collect(Collectors.toList()));
Map<Long, Object> 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<WorkerAdmissionMappe
List<DictionaryItem> workerTypeList = dictionaryItemService.getDictList("bt_worker_type", projectSn);
if (map.get("details") != null) {
if (map.get("details") instanceof List) {
List<String> nums = workerAdmissionDetailService.list(new LambdaQueryWrapper<WorkerAdmissionDetail>()
.eq(WorkerAdmissionDetail::getProjectSn, projectSn)
.eq(WorkerAdmissionDetail::getIsCertificateQualified, 1)
).stream().map(WorkerAdmissionDetail::getNum).collect(Collectors.toList());
// List<String> nums = workerAdmissionDetailService.list(new LambdaQueryWrapper<WorkerAdmissionDetail>()
// .eq(WorkerAdmissionDetail::getProjectSn, projectSn)
// .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1)
// ).stream().map(WorkerAdmissionDetail::getNum).collect(Collectors.toList());
List<Map> detailsList = (List) map.get("details");
List<String> idCards = detailsList.stream().map(o -> MapUtils.getString(((Map) o), "field4731914165560")).collect(Collectors.toList());
List<String> existDetailIdCards = workerAdmissionDetailService.list(new LambdaQueryWrapper<WorkerAdmissionDetail>()
.in(WorkerAdmissionDetail::getIdCard, idCards)
.eq(WorkerAdmissionDetail::getIsCertificateQualified, 1)
.eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList());
List<String> readNums = detailsList.stream().map(o -> MapUtils.getString(((Map) o), "field8425114066876")).collect(Collectors.toList());
List<String> nums = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
.in(WorkerInfo::getNum, readNums).eq(WorkerInfo::getProjectSn, projectSn).last(Cts.IGNORE_DATA_SCOPE_CONDITION)).stream().map(WorkerInfo::getNum).collect(Collectors.toList());
// List<String> existDetailIdCards = workerAdmissionDetailService.list(new LambdaQueryWrapper<WorkerAdmissionDetail>()
// .in(WorkerAdmissionDetail::getIdCard, idCards)
// .eq(WorkerAdmissionDetail::getIsCertificateQualified, 1)
// .eq(WorkerAdmissionDetail::getProjectSn, projectSn)).stream().map(WorkerAdmissionDetail::getIdCard).collect(Collectors.toList());
List<String> existWorkerIdCards = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
.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<WorkerAdmissionMappe
repeatStrs.add(detail.getWorkerName() + "[" + detail.getNum() + "]");
continue;
}
if (existDetailIdCards.stream().anyMatch(o1 -> 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<WorkerAdmissionMappe
if (CollUtil.isNotEmpty(existStrs)) {
String m = "身份证已存在人员:" + StrUtil.join("", existStrs);
noticeService.addUserNotice(admission.getCertificateIssuingPerson(), "人员入场身份证已存在通知", m, "10", null);
noticeService.addProjectLevelNotice(projectSn, "人员入场身份证已存在通知", m, "10", null);
}
if (CollUtil.isNotEmpty(repeatStrs)) {
String m = "编号已存在人员:" + StrUtil.join("", repeatStrs);
noticeService.addUserNotice(admission.getCertificateIssuingPerson(), "人员入场编号已存在通知", m, "10", null);
noticeService.addProjectLevelNotice(projectSn, "人员入场编号已存在通知", m, "10", null);
}
}

View File

@ -15,11 +15,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.baotou.entity.ReturnTrainingApplication;
import com.zhgd.xmgl.modules.baotou.entity.ReturnTrainingDetail;
import com.zhgd.xmgl.modules.baotou.entity.WorkerAdmission;
import com.zhgd.xmgl.modules.baotou.entity.WorkerAdmissionDetail;
import com.zhgd.xmgl.modules.baotou.service.IReturnTrainingApplicationService;
import com.zhgd.xmgl.modules.baotou.service.IReturnTrainingDetailService;
import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionDetailService;
import com.zhgd.xmgl.modules.baotou.service.IWorkerAdmissionService;
import com.zhgd.xmgl.modules.exam.entity.*;
import com.zhgd.xmgl.modules.exam.service.*;
@ -62,6 +65,9 @@ public class ExamWorkerController {
IExamSubjectService examSubjectService;
@Lazy
@Autowired
IWorkerAdmissionDetailService workerAdmissionDetailService;
@Lazy
@Autowired
IWorkerAdmissionService workerAdmissionService;
@Lazy
@Autowired
@ -251,21 +257,29 @@ public class ExamWorkerController {
@ApiOperation(value = "批量下载试卷", notes = "批量下载试卷", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "recordIds", value = "记录ID多个,分割)", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "idType", value = "1复工或专项培训", paramType = "query", required = false, dataType = "String"),
@ApiImplicitParam(name = "idType", value = "1复工或专项培训2入场培训3考试记录id不填默认3", paramType = "query", required = false, dataType = "String"),
})
@GetMapping(value = "/batch/downloadPaper")
public Result batchDownloadPaper(@RequestParam HashMap<String, Object> param) {
//复工或专项培训
List<String> 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<ReturnTrainingDetail> 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<WorkerAdmissionDetail> 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<ExamTrainRecord> trainRecords = examTrainRecordService.list(new LambdaQueryWrapper<ExamTrainRecord>()
// .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;

View File

@ -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

View File

@ -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;
/**
* 工人工资卡银行开户行名称

View File

@ -503,7 +503,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
}
//如果没有传班组id则通过工种相同名字生成一个班组
if (workerInfo.getPersonType() == 1) {
if (workerInfo.getTeamId() != null) {
if (workerInfo.getTeamId() == null) {
WorkerType workerType = workerTypeService.getById(workerInfo.getWorkerTypeId());
List<TeamInfo> teamInfos = teamInfoService.list(new LambdaQueryWrapper<TeamInfo>()
.eq(TeamInfo::getProjectSn, workerInfo.getProjectSn())
@ -580,6 +580,9 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
if (count > 0) {
throw new OpenAlertException(MessageUtil.get("existsIDCardErr"));
}
if (StrUtil.isBlank(workerInfo.getNum())) {
throw new OpenAlertException("编号不能为空");
}
int count1 = workerInfoMapper.selectCount(new QueryWrapper<WorkerInfo>().lambda().eq(WorkerInfo::getProjectSn, projectSn)
.eq(WorkerInfo::getNum, workerInfo.getNum()).ne(WorkerInfo::getId, workerInfo.getId()).last(Cts.IGNORE_DATA_SCOPE_CONDITION));
if (count1 > 0) {