待办中心-项目法规任务-集成认证流程(Pre-Homo流程)。

认证流程相关接口开发。
This commit is contained in:
wangzhijiang
2023-03-08 11:20:55 +08:00
parent 06068dc9ec
commit 5807ffeb7b
4 changed files with 135 additions and 23 deletions
@@ -102,7 +102,7 @@ public interface IProjectCertificationInventoryEOService extends IService<Projec
void addProcessInfoEO(ProcessInfoEO processInfoEO, String projectLibraryId); void addProcessInfoEO(ProcessInfoEO processInfoEO, String projectLibraryId);
void addProcessInfoDetailEO(List<ProcessInfoDetailEO> processInfoDetailEOList, ProcessInfoEO processInfoEO); void addProcessInfoDetailEO(List<ProcessInfoDetailEO> processInfoDetailEOList, String processInfoId, String taskDefinitionKey);
Result<List<SysRole>> getRoleByUserId(Map<String, Object> params); Result<List<SysRole>> getRoleByUserId(Map<String, Object> params);
@@ -342,12 +342,20 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue()); processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue());
processInfoDetailEO.setProcessInfoId(projectLibraryId); processInfoDetailEO.setProcessInfoId(projectLibraryId);
processInfoDetailEO.setActiProcInstId(projectLibraryId); processInfoDetailEO.setActiProcInstId(projectLibraryId);
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEOList.add(processInfoDetailEO); processInfoDetailEOList.add(processInfoDetailEO);
} }
ProcessInfoEO processInfoEO = new ProcessInfoEO(); ProcessInfoEO processInfoEO = new ProcessInfoEO();
this.addProcessInfoEO(processInfoEO,projectLibraryId); this.addProcessInfoEO(processInfoEO,projectLibraryId);
this.addProcessInfoDetailEO(processInfoDetailEOList,processInfoEO);
// 删除该项目数据的待办任务,key为 认证工程师接受任务的数据
QueryWrapper<ProcessInfoDetailEO> deleteDetailWrap = new QueryWrapper<>();
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoEO.getId());
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
this.processInfoDetailEOService.remove(deleteDetailWrap);
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
this.updateBatchById(projectCertificationInventoryEOList); this.updateBatchById(projectCertificationInventoryEOList);
return Result.OK("发布成功!"); return Result.OK("发布成功!");
} }
@@ -366,6 +374,9 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
processInfoEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue()); processInfoEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue()); processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue());
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processInfoEO.setCreateBy(currentUser.getId());
QueryWrapper<ProcessInfoEO> deleteWrap = new QueryWrapper<>(); QueryWrapper<ProcessInfoEO> deleteWrap = new QueryWrapper<>();
deleteWrap.lambda().eq(ProcessInfoEO::getId,projectLibraryId); deleteWrap.lambda().eq(ProcessInfoEO::getId,projectLibraryId);
this.processInfoEOService.remove(deleteWrap); this.processInfoEOService.remove(deleteWrap);
@@ -375,19 +386,28 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
/** /**
* 添加流程信息,用户的待办信息。 * 添加流程信息,用户的待办信息。
* @param processInfoDetailEOList * @param processInfoDetailEOList
* @param processInfoEO * @param processInfoId
*/ */
@Override @Override
public void addProcessInfoDetailEO(List<ProcessInfoDetailEO> processInfoDetailEOList,ProcessInfoEO processInfoEO){ public void addProcessInfoDetailEO(List<ProcessInfoDetailEO> processInfoDetailEOList,String processInfoId,String taskDefinitionKey){
processInfoDetailEOList.forEach(detail -> { processInfoDetailEOList.forEach(detail -> {
detail.setActiProcInstId(processInfoId);
detail.setProcessInfoId(processInfoId);
detail.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue()); detail.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
detail.setTaskDefinitionKey(taskDefinitionKey);
detail.setStatus(TaskStatusEnum.NOT_DONE.getValue());
// detail.setEndTime(DateUtils.str2Date(endTime,DateUtils.date_sdf.get()));
detail.setCreateTime(new Date());
detail.setStatus(TaskStatusEnum.NOT_DONE.getValue());
}); });
// 删除该项目数据的待办任务,key为 认证工程师接受任务的数据 List<String> userIdList = processInfoDetailEOList.stream().map(ProcessInfoDetailEO::getUserId).distinct().collect(Collectors.toList());
QueryWrapper<ProcessInfoDetailEO> deleteDetailWrap = new QueryWrapper<>(); QueryWrapper<ProcessInfoDetailEO> removeWrap = new QueryWrapper<>();
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoEO.getId()); removeWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoId);
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey()); removeWrap.lambda().in(ProcessInfoDetailEO::getUserId,userIdList);
this.processInfoDetailEOService.remove(deleteDetailWrap); // 删除用户在这个认证清单流程中其它的待办任务
this.processInfoDetailEOService.remove(removeWrap);
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList); this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
} }
@@ -650,14 +670,14 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(ObjectUtils.isEmpty(projectLibraryBase)){ if(ObjectUtils.isEmpty(projectLibraryBase)){
throw new JeroBootException("无法获取项目库信息,项目库id为:" + projectLibraryId + " 请联系管理员!"); throw new JeroBootException("无法获取项目库信息,项目库id为:" + projectLibraryId + " 请联系管理员!");
} }
json.put("projectLibraryBase",projectLibraryBase);
switch (flowNodeEnum){ switch (flowNodeEnum){
case RZGCSJSRW: case RZGCSJSRW:
return this.certificationInitiatingTask(json); return this.certificationInitiatingTask(json);
case RZGCSTHRW: case RZGCSTHRW:
return this.certificationReturnedStudioTask(json);
break;
case ZRRJSRW: case ZRRJSRW:
break; break;
@@ -674,6 +694,52 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
return Result.OK("提交任务成功!"); return Result.OK("提交任务成功!");
} }
private Result<?> certificationReturnedStudioTask(JSONObject json) {
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.REFUSAL_OF_RESPONSIBLE_PERSON.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'清单待校核 或 责任人拒绝的数据'!");
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
if (StringUtils.isEmpty(projectLibraryBase.getStudioEngineer())) {
throw new JeroBootException("该项目的studio为空,请维护studio后再进行退回操作!");
}
// 给studio分配待办中心任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(projectLibraryBase.getStudioEngineer());
processInfoDetailEOList.add(processInfoDetailEO);
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.STUDIOFQ.getKey());
try {
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.CERTIFICATION_RETURNED.getValue());
}
// 认证工程师发起任务,将数据的状态更新为 任务待确认。
this.updateBatchById(projectCertificationInventoryEOList);
}catch (Exception ex){
ex.printStackTrace();
log.error("认证工程师-退回认证清单任务失败:" + ex.getMessage());
throw new JeroBootException("退回任务失败!");
}
return Result.OK("退回任务成功!");
}
/** /**
* 认证工程师发起任务 * 认证工程师发起任务
* @param json * @param json
@@ -700,10 +766,45 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
throw new JeroBootException("至少选择一条数据流程状态为'清单待校核 或 责任人拒绝的数据'!"); throw new JeroBootException("至少选择一条数据流程状态为'清单待校核 或 责任人拒绝的数据'!");
} }
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
if (ObjectUtils.isEmpty(projectLibraryBase)) {
throw new JeroBootException("无法获取项目库信息");
}
try { try {
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) { for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()); projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue());
} }
// 给责任人分配待办中心的任务
List<String> dutyPersonList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
for (String dutyPerson : dutyPersonList) {
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(dutyPerson);
processInfoDetailEOList.add(processInfoDetailEO);
}
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.ZRRJSRW.getKey());
// 更新该项目认证流程中,认证工程师的任务状态。
QueryWrapper<ProjectCertificationInventoryEO> queryCountWrap = new QueryWrapper<>();
queryCountWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId,projectLibraryBase.getId());
queryCountWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
int notDoneCount = this.count(queryCountWrap);
// 如果还有 清单待校核、责任人拒绝 状态的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办
if(notDoneCount == 0){
QueryWrapper<ProcessInfoDetailEO> detailQueryWrapper = new QueryWrapper<>();
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
List<ProcessInfoDetailEO> detailEOList = this.processInfoDetailEOService.list(detailQueryWrapper);
for (ProcessInfoDetailEO processInfoDetailEO : detailEOList) {
processInfoDetailEO.setStatus(TaskStatusEnum.HAVE_DONE.getValue());
}
this.processInfoDetailEOService.updateBatchById(detailEOList);
}
// 认证工程师发起任务,将数据的状态更新为 任务待确认。 // 认证工程师发起任务,将数据的状态更新为 任务待确认。
this.updateBatchById(projectCertificationInventoryEOList); this.updateBatchById(projectCertificationInventoryEOList);
}catch (Exception ex){ }catch (Exception ex){
@@ -203,7 +203,10 @@
where pid.user_id = #{params.currentUserId} and pid.status = #{params.taskStatus} where pid.user_id = #{params.currentUserId} and pid.status = #{params.taskStatus}
) )
) )
AND pi.flow_type = #{params.qdqrFlowTypeValue} AND pi.flow_type IN
<foreach collection="params.qdqrFlowTypeValue" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)temp )temp
<include refid="BaseQuerySql"/> <include refid="BaseQuerySql"/>
order by temp.end_time asc order by temp.end_time asc
@@ -39,6 +39,7 @@ import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum;
import com.jero.modules.wkflow.enums.FlowTypeEnum; import com.jero.modules.wkflow.enums.FlowTypeEnum;
import com.jero.modules.wkflow.feginClient.impl.WorkFlowFeignClientImpl; import com.jero.modules.wkflow.feginClient.impl.WorkFlowFeignClientImpl;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -199,11 +200,16 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); // 2023-03-08 去掉原来的Pre-Homo
// flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
params.put("flowTypeList",flowTypeList); params.put("flowTypeList",flowTypeList);
params.put("taskStatus", TaskStatusEnum.NOT_DONE.getValue()); params.put("taskStatus", TaskStatusEnum.NOT_DONE.getValue());
params.put("currentUserId",currentUser.getId()); params.put("currentUserId",currentUser.getId());
params.put("qdqrFlowTypeValue",FlowTypeEnum.QDQR.getValue());
List<String> qdqrFlowTypeValue = new ArrayList<>();
qdqrFlowTypeValue.add(FlowTypeEnum.QDQR.getValue());
qdqrFlowTypeValue.add(FlowTypeEnum.CERTIFICATION_LC.getValue());
params.put("qdqrFlowTypeValue",qdqrFlowTypeValue);
IPage page = new Page(pageNo, pageSize); IPage page = new Page(pageNo, pageSize);
IPage<ProcessInfoVO> result = this.baseMapper.queryProjectProcessTodoTaskListList(page,params); IPage<ProcessInfoVO> result = this.baseMapper.queryProjectProcessTodoTaskListList(page,params);
@@ -304,7 +310,7 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
List<String> flowTypeList = new ArrayList<>(); List<String> flowTypeList = new ArrayList<>();
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); // flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
//根据法规清单id,查询待办中心数据 //根据法规清单id,查询待办中心数据
@@ -396,7 +402,7 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); // flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
} }
/** /**
@@ -567,13 +573,15 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
//判断当前任务是否过期 //判断当前任务是否过期
Date endTime = data.getEndTime(); Date endTime = data.getEndTime();
try { if(ObjectUtils.isNotEmpty(endTime)){
endTime = sdf.parse(sdf.format(endTime)); try {
} catch (ParseException e) { endTime = sdf.parse(sdf.format(endTime));
e.printStackTrace(); } catch (ParseException e) {
} e.printStackTrace();
if(finalCurrentDate.after(endTime) || finalCurrentDate.equals(endTime)){ }
data.setEndTimePastDueFlag(true); if(finalCurrentDate.after(endTime) || finalCurrentDate.equals(endTime)){
data.setEndTimePastDueFlag(true);
}
} }
}); });