包头bug修复
This commit is contained in:
parent
4c93c6fec5
commit
e101f56527
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -61,4 +61,13 @@ public interface ReturnTrainingApplicationMapper extends BaseMapper<ReturnTraini
|
||||
*/
|
||||
@MapKey("id")
|
||||
Map<Long, Object> getQualifierWorker(@Param("list") List<Long> collect);
|
||||
|
||||
/**
|
||||
* 获取申请列表中未考试的人数map,key是申请id,map是人数
|
||||
*
|
||||
* @param collect
|
||||
* @return
|
||||
*/
|
||||
@MapKey("id")
|
||||
Map<Long, Object> getNotExamWorker(@Param("list") List<Long> collect);
|
||||
}
|
||||
|
||||
@ -44,4 +44,13 @@ public interface WorkerAdmissionMapper extends BaseMapper<WorkerAdmission> {
|
||||
*/
|
||||
@MapKey("id")
|
||||
Map<Long, Object> getExamQualifierWorker(List<Long> collect);
|
||||
|
||||
/**
|
||||
* 获取申请列表中未考试的人数map,key是申请id,map是人数
|
||||
*
|
||||
* @param collect
|
||||
* @return
|
||||
*/
|
||||
@MapKey("id")
|
||||
Map<Long, Object> getNotExamWorker(List<Long> collect);
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
/**
|
||||
* 工人工资卡银行开户行名称
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user