认证清单-修改责任人、截止日期。项目库-修改认证工程师。

This commit is contained in:
wangzhijiang
2023-07-13 10:49:35 +08:00
parent 0a90b461d1
commit 91ba9acf4c
3 changed files with 297 additions and 137 deletions
@@ -196,92 +196,21 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
*/
@Override
public void editById(ProjectCertificationInventoryEO projectCertificationInventoryEO) {
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> certificationQueryWrap = new QueryWrapper<>();
certificationQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getId,projectCertificationInventoryEO.getId());
certificationQueryWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> editEndTimeCertificationInventoryEOS = this.list(certificationQueryWrap);
// 编辑截至日期发消息
List<ProjectCertificationInventoryEO> oldPciEoList = this.list(certificationQueryWrap);
if(projectCertificationInventoryEO.getEndTime() != null){
editEndTimeCertificationInventoryEOS = editEndTimeCertificationInventoryEOS.stream().filter(certificationInventory -> {
boolean flag = false;
if(!projectCertificationInventoryEO.getEndTime().equals(certificationInventory.getEndTime())){
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(editEndTimeCertificationInventoryEOS)){
// 同步更新待办中心-流程明细截止日期
this.syncProcessInfoDetailEndTime(projectCertificationInventoryEO.getEndTime(),editEndTimeCertificationInventoryEOS);
ProjectLibraryBase projectLibraryBase = this.projectLibraryBaseService.selectById(editEndTimeCertificationInventoryEOS.get(0).getProjectLibraryId());
if(ObjectUtils.isNotEmpty(projectLibraryBase)){
List<String> userIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(","));
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(userIdList);
editEndTimeCertificationInventoryEOS.get(0).setEndTime(projectCertificationInventoryEO.getEndTime());
this.sendMessageByTemplateId(
editEndTimeCertificationInventoryEOS,
TemplateInfoEnum2.CERTIFICATION_MESSAGE14.getValue(),
userIdList,
userInfoList,
projectCertificationInventoryEO.getEndTime(),""
);
}
}
// 编辑截至日期处理逻辑
this.editEndTime(projectCertificationInventoryEO, oldPciEoList);
}
// 如果编辑了责任人给责任人发消息
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getDutyPerson())){
QueryWrapper<ProjectCertificationInventoryEO> editDutyPersonCertificationQueryWrap = new QueryWrapper<>();
editDutyPersonCertificationQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getId,projectCertificationInventoryEO.getId());
List<ProjectCertificationInventoryEO> editDutyPersonCertificationInventoryEOS = this.list(editDutyPersonCertificationQueryWrap);
editDutyPersonCertificationInventoryEOS = editDutyPersonCertificationInventoryEOS.stream().filter(certificationInventory -> {
boolean flag = false;
if(!StringUtils.equals(certificationInventory.getDutyPerson(),projectCertificationInventoryEO.getDutyPerson())){
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(editDutyPersonCertificationInventoryEOS)){
List<String> userIdList = editDutyPersonCertificationInventoryEOS.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(userIdList);
this.sendMessageByTemplateId(
editDutyPersonCertificationInventoryEOS,
TemplateInfoEnum2.CERTIFICATION_MESSAGE15.getValue(),
userIdList,
userInfoList,
projectCertificationInventoryEO.getEndTime(),""
);
// 如果责任人有变更将之前责任人的待办中心任务移交给新的责任人
QueryWrapper<ProcessInfoDetailEO> detailQueryWrap = new QueryWrapper<>();
List<String> idList = Arrays.asList(projectCertificationInventoryEO.getId().split(","));
detailQueryWrap.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId,idList);
detailQueryWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
detailQueryWrap.lambda().eq(ProcessInfoDetailEO::getStatus,TaskStatusEnum.NOT_DONE.getValue());
List<String> taskDefinitionKeyList = new ArrayList<>();
taskDefinitionKeyList.add(CertificationFlowNodeEnum.ZRRJSRW.getKey());
taskDefinitionKeyList.add(CertificationFlowNodeEnum.ZRRTJRW.getKey());
detailQueryWrap.lambda().in(ProcessInfoDetailEO::getTaskDefinitionKey,taskDefinitionKeyList);
List<ProcessInfoDetailEO> processInfoDetailEOList = this.processInfoDetailEOService.list(detailQueryWrap);
if(CollectionUtils.isNotEmpty(processInfoDetailEOList)){
processInfoDetailEOList.forEach(detail -> {
detail.setUserId(projectCertificationInventoryEO.getDutyPerson());
});
this.processInfoDetailEOService.updateBatchById(processInfoDetailEOList);
}
}
// 编辑责任人处理逻辑
this.editDutyPerson(projectCertificationInventoryEO,oldPciEoList);
}
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getDeliverableType()) || StringUtils.isNotEmpty(projectCertificationInventoryEO.getDeliverableTemplate())){
// 编辑交付物类型交付物模板逻辑
// TODO 此处逻辑需要详细需求如何操作
}
// 获取编辑前的数据
@@ -453,6 +382,99 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
}
}
/**
* 编辑责任人处理逻辑
* @param pciEo
*/
private void editDutyPerson(ProjectCertificationInventoryEO pciEo,List<ProjectCertificationInventoryEO> oldPciEoList) {
// 过滤出来旧数据的责任人与新修改的责任人不是同一个人并且流程状态是 任务待确认结果待提交审查退回的数据这三个状态的流程数据在责任人节点
List<ProjectCertificationInventoryEO> oldPciEos = oldPciEoList.stream().filter(oldPciEo -> {
boolean flag = (
!StringUtils.equals(oldPciEo.getDutyPerson(), pciEo.getDutyPerson())
&& (
StringUtils.equals(oldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue())
|| StringUtils.equals(oldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|| StringUtils.equals(oldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue())
)
);
return flag;
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(oldPciEos)) {
List<String> userIdList = oldPciEos.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(userIdList);
this.sendMessageByTemplateId(
oldPciEos,
TemplateInfoEnum2.CERTIFICATION_MESSAGE15.getValue(),
userIdList,
userInfoList,
pciEo.getEndTime(),
""
);
// 如果责任人有变更将之前责任人的待办中心任务移交给新的责任人
QueryWrapper<ProcessInfoDetailEO> detailQueryWrap = new QueryWrapper<>();
List<String> idList = Arrays.asList(pciEo.getId().split(","));
detailQueryWrap.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId, idList);
detailQueryWrap.lambda().eq(ProcessInfoDetailEO::getFlowType, FlowTypeEnum.CERTIFICATION_LC.getValue());
detailQueryWrap.lambda().eq(ProcessInfoDetailEO::getStatus, TaskStatusEnum.NOT_DONE.getValue());
List<String> taskDefinitionKeyList = new ArrayList<>();
taskDefinitionKeyList.add(CertificationFlowNodeEnum.ZRRJSRW.getKey());
taskDefinitionKeyList.add(CertificationFlowNodeEnum.ZRRTJRW.getKey());
detailQueryWrap.lambda().in(ProcessInfoDetailEO::getTaskDefinitionKey, taskDefinitionKeyList);
List<ProcessInfoDetailEO> processInfoDetailEOList = this.processInfoDetailEOService.list(detailQueryWrap);
if (CollectionUtils.isNotEmpty(processInfoDetailEOList)) {
processInfoDetailEOList.forEach(detail -> {
detail.setUserId(pciEo.getDutyPerson());
});
this.processInfoDetailEOService.updateBatchById(processInfoDetailEOList);
}
}
}
/**
* 编辑截止日期处理逻辑
* @param newPciEo 最新编辑的认证清单信息
* @param oldPciEoList 旧的认证清单数组
*/
private void editEndTime(ProjectCertificationInventoryEO newPciEo, List<ProjectCertificationInventoryEO> oldPciEoList) {
Date newEndTime = newPciEo.getEndTime();
// 过滤出来旧的截止日期不等于更改后的新截止日期并且数据状态为 任务待确认结果待提交审查退回的数据
List<ProjectCertificationInventoryEO> oldPciEos = oldPciEoList.stream().filter(pldPciEo -> {
boolean flag = (
!newEndTime.equals(pldPciEo.getEndTime())
&& (
StringUtils.equals(pldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue())
|| StringUtils.equals(pldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|| StringUtils.equals(pldPciEo.getFlowStatus(), CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue())
)
);
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(oldPciEos)){
// 同步更新待办中心-流程明细截止日期
this.syncProcessInfoDetailEndTime(newEndTime, oldPciEos);
ProjectLibraryBase projectLibraryBase = this.projectLibraryBaseService.selectById(oldPciEos.get(0).getProjectLibraryId());
if(ObjectUtils.isNotEmpty(projectLibraryBase)){
List<String> userIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(","));
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(userIdList);
oldPciEos.get(0).setEndTime(newPciEo.getEndTime());
this.sendMessageByTemplateId(
oldPciEos,
TemplateInfoEnum2.CERTIFICATION_MESSAGE14.getValue(),
userIdList,
userInfoList,
newEndTime,
""
);
}
}
}
/**
* 通过id删除
*
@@ -1080,6 +1102,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
@Override
public Result<?> issue(JSONObject json) {
String ids = json.getString("ids");
String projectLibraryId = json.getString("projectLibraryId");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行发布!");
}
@@ -1118,10 +1141,23 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
this.saveProjectCertificationInventoryLog(projectCertificationInventoryEOList,OperatorTypeEnum.CERTIFICATION_INVENTORY_STUDIO_ISSUE.getValue());
// this.certificationInventoryEOListSortByEndTimeAsc(projectCertificationInventoryEOList);
// Date endTime = projectCertificationInventoryEOList.get(0).getEndTime();
this.updateBatchById(projectCertificationInventoryEOList);
// 根据项目库id查询当前项目认证清单数据获取清单校核截止时间 最早的一个时间
flowStatusList.clear();
flowStatusList.add(CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.CERTIFICATION_RETURNED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> pciQueryWrap = new QueryWrapper<>();
pciQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId,projectLibraryId);
pciQueryWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> pciEoList = this.list(pciQueryWrap);
if(CollectionUtils.isNotEmpty(pciEoList)){
List<Date> inventoryVerifyEndTimeList = pciEoList.stream().map(ProjectCertificationInventoryEO::getInventoryVerifyEndTime).distinct().collect(Collectors.toList());
inventoryVerifyEndTimeList.add(inventoryVerifyEndTime);
Collections.sort(inventoryVerifyEndTimeList, (d1, d2) -> d1.compareTo(d2)); // 根据时间顺序排序
inventoryVerifyEndTime = inventoryVerifyEndTimeList.get(0);
}
String projectLibraryId = json.getString("projectLibraryId");
// 获取项目信息获取认证工程师给认证工程师分配待办任务
ProjectLibraryBase projectLibraryBase = this.projectLibraryBaseService.selectById(projectLibraryId);
if(ObjectUtils.isNotEmpty(projectLibraryBase)){
@@ -1164,7 +1200,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
this.processInfoDetailEOService.remove(deleteDetailWrap);
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
this.updateBatchById(projectCertificationInventoryEOList);
// 获取认证清单 - 飞书跳转链接
Map<String, Object> hrefFeishuMap = this.getCertificationInventoryLinkHrefFeishu(projectLibraryId, PRN_CN, PRN_EN);
@@ -1174,6 +1209,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
List<SysUser> certificationEngineerUserInfoList = this.sysUserService.querySysUserListByIdList(certificationEngineerIdList);
Date finalInventoryVerifyEndTime = inventoryVerifyEndTime;
certificationEngineerIdList.forEach(userId -> {
try {
String thirdId = this.sysUserService.getUserThirdIdByUserId(certificationEngineerUserInfoList,userId);
@@ -1187,7 +1223,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
templateVariableMap.put("projectNameCn",PRN_CN);
templateVariableMap.put("projectNameEn",PRN_EN);
templateVariableMap.put("Initiator",projectLibraryBase.getStudioEngineerName());
templateVariableMap.put("endTime",DateUtils.formatDate(inventoryVerifyEndTime));
templateVariableMap.put("endTime",DateUtils.formatDate(finalInventoryVerifyEndTime));
templateVariableMap.put("viewBtnUrlCn",hrefFeishu_CN);
templateVariableMap.put("viewBtnUrlEn",hrefFeishu_EN);
templateVariableMap.put("viewBtnUrlCnPhone",hrefFeishu_CN_P);
@@ -1839,6 +1875,17 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
List<String> dutyPersonIdList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<SysUser> dutyPersonList = this.sysUserService.querySysUserListByIdList(dutyPersonIdList);
// 获取当前项目下认证清单截止日期最早的一个更新到流程明细表中认证工程师审查任务节点的截止时间中
flowStatusList.clear();
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
this.updateProcessInfoDetailEndTime(
flowStatusList,
CertificationFlowNodeEnum.RZGCSSC.getKey(),
projectLibraryBase,
"end_time",
idList
);
try {
// 给责任人分配待办中心的任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
@@ -1914,6 +1961,15 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
List<String> dutyPersonIdList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<SysUser> dutyPersonList = this.sysUserService.querySysUserListByIdList(dutyPersonIdList);
// 获取当前项目下认证清单截止日期最早的一个更新到流程明细表中认证工程师审查任务节点的截止时间中
this.updateProcessInfoDetailEndTime(
flowStatusList,
CertificationFlowNodeEnum.RZGCSSC.getKey(),
projectLibraryBase,
"end_time",
idList
);
try {
// 更新数据状态为 审查通过
this.updateBatchById(projectCertificationInventoryEOList);
@@ -1943,6 +1999,45 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
return Result.OK("审批通过成功!");
}
/**
* 更新截止日期
* @param flowStatusList
* @param taskDefinitionKey
* @param projectLibraryBase
*/
private void updateProcessInfoDetailEndTime(List<String> flowStatusList,
String taskDefinitionKey,
ProjectLibraryBase projectLibraryBase,
String orderByField,
List<String> excludeIdList) {
QueryWrapper<ProjectCertificationInventoryEO> pciQueryWrap = new QueryWrapper<>();
pciQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId, projectLibraryBase.getId());
pciQueryWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus, flowStatusList);
if(CollectionUtils.isNotEmpty(excludeIdList)){
pciQueryWrap.lambda().notIn(ProjectCertificationInventoryEO::getId, excludeIdList);
}
pciQueryWrap.orderByAsc(orderByField);
List<ProjectCertificationInventoryEO> pciEoList = this.list(pciQueryWrap);
if(CollectionUtils.isNotEmpty(pciEoList)){
Date endTime = null;
if(StringUtils.equals("inventory_verify_end_time",orderByField)){
endTime = pciEoList.get(0).getInventoryVerifyEndTime();
} else if(StringUtils.equals("end_time",orderByField)){
endTime = pciEoList.get(0).getEndTime();
}
QueryWrapper<ProcessInfoDetailEO> detailQueryWrapper = new QueryWrapper<>();
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,taskDefinitionKey);
List<ProcessInfoDetailEO> detailEOList = this.processInfoDetailEOService.list(detailQueryWrapper);
Date finalEndTime = endTime;
detailEOList.forEach(detailEO -> {
detailEO.setEndTime(finalEndTime);
});
this.processInfoDetailEOService.updateBatchById(detailEOList);
}
}
/**
* 更新任务状态为已办
* @param projectLibraryBase
@@ -2006,6 +2101,27 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
throw new JeroBootException("该项目中认证工程师为空,请先维护认证工程师!");
}
// 根据项目库id查询当前项目认证清单数据获取数据状态为 结果待审查的 截止时间 最早的一个时间
Date endTime = null;
QueryWrapper<ProjectCertificationInventoryEO> pciQueryWrap = new QueryWrapper<>();
pciQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId,projectLibraryBase.getId());
pciQueryWrap.lambda().eq(ProjectCertificationInventoryEO::getFlowStatus,CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
pciQueryWrap.lambda().isNotNull(ProjectCertificationInventoryEO::getEndTime);
List<ProjectCertificationInventoryEO> pciEoList = this.list(pciQueryWrap);
if(CollectionUtils.isNotEmpty(pciEoList) || CollectionUtils.isNotEmpty(projectCertificationInventoryEOList)){
List<Date> endTimeList = new ArrayList<>();
// 本次提交之前数据库里面存在的截止时间
List<Date> oldEndTimeList = pciEoList.stream().map(ProjectCertificationInventoryEO::getEndTime).distinct().collect(Collectors.toList());
endTimeList.addAll(oldEndTimeList);
// 当前要提交的数据截止时间
List<Date> newEndTimeList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getEndTime).distinct().collect(Collectors.toList());
endTimeList.addAll(newEndTimeList);
endTimeList = endTimeList.stream().distinct().collect(Collectors.toList());
Collections.sort(endTimeList, (d1, d2) -> d1.compareTo(d2)); // 根据时间顺序排序
endTime = endTimeList.get(0);
}
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
List<String> certificationEngineerList = Arrays.asList(certificationEngineer.split(","));
// 给认证工程师分配任务
@@ -2018,7 +2134,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
processInfoDetailEO.setProcessInfoId(projectLibraryBase.getId());
processInfoDetailEO.setActiProcInstId(projectLibraryBase.getId());
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEO.setEndTime(projectCertificationInventoryEOList.get(0).getEndTime());
processInfoDetailEO.setEndTime(endTime);
processInfoDetailEOList.add(processInfoDetailEO);
}
// 数据更新为结果待审查
@@ -2053,7 +2169,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
TemplateInfoEnum2.CERTIFICATION_MESSAGE23.getValue(),
certificationEngineerList,
certificationEngineers,
projectCertificationInventoryEOList.get(0).getEndTime(),
endTime,
CertificationFlowNodeEnum.TASK_REVIEW.getKey()
);
}catch (Exception ex){
@@ -2526,6 +2642,15 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
// 认证工程师发起任务将数据的状态更新为 任务待确认
this.updateBatchById(projectCertificationInventoryEOList);
// 获取当前项目下认证清单清单校核截止日期最早的一个更新到流程明细表中认证工程师接受任务节点的截止时间中
this.updateProcessInfoDetailEndTime(
flowStatusList,
CertificationFlowNodeEnum.RZGCSJSRW.getKey(),
projectLibraryBase,
"inventory_verify_end_time",
idList
);
// 更新该项目认证流程中认证工程师的任务状态
// 如果还有 清单待校核责任人拒绝 状态的数据不做操作如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办
this.updateProcessInfoDetailStatus(projectLibraryBase,CertificationFlowNodeEnum.RZGCSJSRW.getKey(),flowStatusList);
@@ -6011,7 +6136,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
String flowStatus = pciEo.getFlowStatus();
// 如果该数据为 结果待提交或审查退回的时候
if (StringUtils.equals(flowStatus,CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|| StringUtils.equals(flowStatus,CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) ) {
|| StringUtils.equals(flowStatus,CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue()) ) {
List<ProcessInfoDetailEO> pidEoListTemp = pidEoList.stream().filter(pidEo -> {
boolean flag = (
StringUtils.equals(pidEo.getProjectLawsInventoryId(),pciEoId)
@@ -439,46 +439,9 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
// 如果studio编辑了认证工程师,需要给旧的认证工程师发送认证清单任务消息
if(StringUtils.isNotEmpty(projectLibraryBase.getCertificationEngineer()) && StringUtils.isNotEmpty(original.getCertificationEngineer())){
List<String> originalCertificationEngineerIdList = Arrays.asList(original.getCertificationEngineer().split(","));
List<String> newCertificationEngineerIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(","));
originalCertificationEngineerIdList = originalCertificationEngineerIdList.stream().filter(originalCertificationEngineerId -> {
boolean flag = true;
for (String newCertificationEngineerId : newCertificationEngineerIdList) {
// 如果新传进来的 认证工程师id跟现有的认证工程师id一致,不用发消息
if(StringUtils.equals(newCertificationEngineerId,originalCertificationEngineerId)){
flag = false;
break;
}
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(originalCertificationEngineerIdList)){
// 判断当前项目下是否还有需要认证工程师操作的数据 只有清单待校核、结果待审查 这两个状态的数据由认证工程师操作。
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> certificationInventoryEOQueryWrapper = new QueryWrapper<>();
certificationInventoryEOQueryWrapper.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId,projectLibraryBase.getId());
certificationInventoryEOQueryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.projectCertificationInventoryEOService.list(certificationInventoryEOQueryWrapper);
if(CollectionUtils.isNotEmpty(projectCertificationInventoryEOList)){
this.projectCertificationInventoryEOService.certificationInventoryEOListSortByEndTimeAsc(projectCertificationInventoryEOList);
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(originalCertificationEngineerIdList);
this.projectCertificationInventoryEOService.sendMessageByTemplateId(
projectCertificationInventoryEOList,
TemplateInfoEnum2.CERTIFICATION_MESSAGE13.getValue(),
originalCertificationEngineerIdList,
userInfoList,
projectCertificationInventoryEOList.get(0).getEndTime(),""
);
}
}
this.editCertificationEngineer(projectLibraryBase, original);
}
setRzlcCertificationEngineerTask(projectLibraryBase);
checkExitData(projectLibraryBase);
saveOrUpdate(projectLibraryBase);
checkVersionOrder(projectLibraryBase.getParentId(),projectLibraryBase.getProjectVersion(),projectLibraryBase.getId());
@@ -704,6 +667,53 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
/**
* 编辑认证工程师逻辑处理
* @param newPlbEO
* @param oldPlbEO
*/
private void editCertificationEngineer(ProjectLibraryBase newPlbEO, ProjectLibraryBase oldPlbEO) {
List<String> oldCertificationEngineerIdList = Arrays.asList(oldPlbEO.getCertificationEngineer().split(","));
List<String> newCertificationEngineerIdList = Arrays.asList(newPlbEO.getCertificationEngineer().split(","));
oldCertificationEngineerIdList = oldCertificationEngineerIdList.stream().filter(originalCertificationEngineerId -> {
boolean flag = true;
for (String newCertificationEngineerId : newCertificationEngineerIdList) {
// 如果新传进来的 认证工程师id跟现有的认证工程师id一致,不用发消息
if(StringUtils.equals(newCertificationEngineerId,originalCertificationEngineerId)){
flag = false;
break;
}
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(oldCertificationEngineerIdList)){
// 判断当前项目下是否还有需要认证工程师操作的数据 只有清单待校核、结果待审查 这两个状态的数据由认证工程师操作。
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> certificationInventoryEOQueryWrapper = new QueryWrapper<>();
certificationInventoryEOQueryWrapper.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId, newPlbEO.getId());
certificationInventoryEOQueryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.projectCertificationInventoryEOService.list(certificationInventoryEOQueryWrapper);
if(CollectionUtils.isNotEmpty(projectCertificationInventoryEOList)){
this.projectCertificationInventoryEOService.certificationInventoryEOListSortByEndTimeAsc(projectCertificationInventoryEOList);
List<SysUser> userInfoList = this.sysUserService.querySysUserListByIdList(oldCertificationEngineerIdList);
this.projectCertificationInventoryEOService.sendMessageByTemplateId(
projectCertificationInventoryEOList,
TemplateInfoEnum2.CERTIFICATION_MESSAGE13.getValue(),
oldCertificationEngineerIdList,
userInfoList,
projectCertificationInventoryEOList.get(0).getEndTime(),""
);
}
}
this.setRzlcCertificationEngineerTask(newPlbEO);
}
/**
* 重新设置认证工程师在待办中心的 认证流程的 待办任务。
* @param projectLibraryBase
@@ -727,11 +737,23 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
// 如果该项目下清单待校核的数据不为空,给这些认证工程师分配待办任务。
if(CollectionUtils.isNotEmpty(pciToBeCheckedList)){
// 删除待办中心(是这个项目库的 pre-Homo流程的待办任务, 认证工程师接受任务节点的数据)
QueryWrapper<ProcessInfoDetailEO> pidRemoveWrap = new QueryWrapper<>();
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
this.processInfoDetailEOService.remove(pidRemoveWrap);
QueryWrapper<ProcessInfoDetailEO> pidQueryWrap = new QueryWrapper<>();
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
pidQueryWrap.orderByAsc("end_time");
List<ProcessInfoDetailEO> pidEoList = this.processInfoDetailEOService.list(pidQueryWrap);
if(CollectionUtils.isNotEmpty(pidEoList)){
List<String> pidEoIdList = pidEoList.stream().map(ProcessInfoDetailEO::getId).distinct().collect(Collectors.toList());
this.processInfoDetailEOService.deleteByIds(pidEoIdList);
}
// 获取责任确认截止时间 最早的时间
this.projectCertificationInventoryEOService.certificationInventoryEOListSortByTaskConfirmEndTimeAsc(pciToBeCheckedList);
Date endTime = pciToBeCheckedList.get(0).getInventoryVerifyEndTime();
if(ObjectUtils.isEmpty(endTime)){
endTime = pidEoList.get(0).getEndTime();
}
// 给认证工程师分配任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
@@ -744,6 +766,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
processInfoDetailEO.setProcessInfoId(projectLibraryBase.getId());
processInfoDetailEO.setActiProcInstId(projectLibraryBase.getId());
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEO.setEndTime(endTime);
processInfoDetailEOList.add(processInfoDetailEO);
}
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
@@ -760,11 +783,22 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
if(CollectionUtils.isNotEmpty(pciToBeReviewEDList)){
// 删除待办中心(是这个项目库的 pre-Homo流程的待办任务, 认证工程师审查 任务节点的数据)
QueryWrapper<ProcessInfoDetailEO> pidRemoveWrap = new QueryWrapper<>();
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSSC.getKey());
pidRemoveWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
this.processInfoDetailEOService.remove(pidRemoveWrap);
QueryWrapper<ProcessInfoDetailEO> pidQueryWrap = new QueryWrapper<>();
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSSC.getKey());
pidQueryWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
pidQueryWrap.orderByAsc("end_time");
List<ProcessInfoDetailEO> pidEoList = this.processInfoDetailEOService.list(pidQueryWrap);
// 获取截止日期最早的一天。
this.projectCertificationInventoryEOService.certificationInventoryEOListSortByEndTimeAsc(pciToBeReviewEDList);
Date endTime = pciToBeReviewEDList.get(0).getEndTime();
if(CollectionUtils.isNotEmpty(pidEoList)){
endTime = pidEoList.get(0).getEndTime();
List<String> pidEoIdList = pidEoList.stream().map(ProcessInfoDetailEO::getId).distinct().collect(Collectors.toList());
this.processInfoDetailEOService.deleteByIds(pidEoIdList);
}
// 给认证工程师分配任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
@@ -777,6 +811,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
processInfoDetailEO.setProcessInfoId(projectLibraryBase.getId());
processInfoDetailEO.setActiProcInstId(projectLibraryBase.getId());
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEO.setEndTime(endTime);
processInfoDetailEOList.add(processInfoDetailEO);
}
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
@@ -263,7 +263,7 @@
pid.end_time
from
process_info_detail pid
where pid.process_info_id = pi.id and pid.STATUS = 'NotDone' and pid.end_time is not null order by pid.end_time asc limit 1
where pid.process_info_id = pi.id and pid.STATUS = 'NotDone' and pid.end_time is not null and pid.user_id = #{params.currentUserId} order by pid.end_time asc limit 1
) as end_time,
<!--(
case when flow_type = '21' then