待办中心-处理流程相关历史数据。

禅道61737问题处理。
This commit is contained in:
wangzhijiang
2022-10-26 14:26:16 +08:00
parent c22cae7a3a
commit 658ca5ee50
4 changed files with 333 additions and 14 deletions
@@ -76,8 +76,8 @@
pi.flow_type,
createBy.username as "create_by",
pi.end_time,
(select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_id,
(select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_definition_key,
(select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} order by submit_time desc limit 1) as task_id,
(select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} order by submit_time desc limit 1) as task_definition_key,
pi.status,
pi.prc_num,
pi.prc_name,
@@ -216,8 +216,32 @@
pi.STATUS,
pi.prc_num,
pi.prc_name,
(select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} and detail.`status` = #{params.taskStatus} limit 1) as task_id,
(select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} and detail.`status` = #{params.taskStatus} limit 1) as task_definition_key,
(
select
detail.task_id
from
process_info_detail detail
where detail.process_info_id = pi.id
and detail.user_id = #{params.currentUserId}
<if test="params.queryType == 'todoProcess'">
and detail.`status` = #{params.taskStatus}
</if>
order by detail.submit_time desc
limit 1
) as task_id,
(
select
detail.task_definition_key
from
process_info_detail detail
where detail.process_info_id = pi.id
and detail.user_id = #{params.currentUserId}
<if test="params.queryType == 'todoProcess'">
and detail.`status` = #{params.taskStatus}
</if>
order by detail.submit_time desc
limit 1
) as task_definition_key,
createBy.username AS "create_by",
pi.acti_proc_inst_id,
pi.create_time
@@ -247,8 +271,10 @@
</if>
<if test="params.serialNumber != null and params.serialNumber != ''">
and bdl.serial_number like CONCAT(CONCAT('%',#{params.serialNumber}),'%')
or bdl.title like CONCAT(CONCAT('%',#{params.serialNumber}),'%')
and (
bdl.serial_number like CONCAT(CONCAT('%',#{params.serialNumber}),'%')
or bdl.title like CONCAT(CONCAT('%',#{params.serialNumber}),'%')
)
</if>
<if test="params.flowType != null and params.flowType !=''">
and pi.flow_type = #{params.flowType}
@@ -7,6 +7,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService;
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO;
@@ -66,6 +72,12 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
private WorkFlowFeignClientImpl workFlowFeignClient;
@Autowired
private IProjectLibraryBaseService projectLibraryBaseService;
@Autowired
private ILawsOpinionGatherEOService lawsOpinionGatherEOService;
@Autowired
private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService;
@Autowired
private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService;
/**
* 保存
@@ -574,7 +586,6 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
* 多个之间使用英文逗号分隔.
*/
String disposeType = (String) params.get("disposeType");
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//查询出所有的法规清单数据
List<ProjectLawsInventoryEO> projectLawsInventoryEOList = this.projectLawsInventoryEOService.list();
//查询出所有项目库信息
@@ -587,9 +598,40 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
//2.任务确认
if(StringUtils.contains(disposeType,FlowTypeEnum.RWQRLC.getValue())){
this.initRwqr(projectLawsInventoryEOList,projectLibraryBaseList);
this.initRwqr(projectLawsInventoryEOList);
}
List<ProjectTaskInventoryEO> taskInventoryEOList = this.projectTaskInventoryEOService.list();
QueryWrapper<ProjectTaskInventoryDetailEO> taskInventoryDetailQueryWrap = new QueryWrapper<>();
taskInventoryDetailQueryWrap.lambda().eq(ProjectTaskInventoryDetailEO::getStatus,TaskStatusEnum.NOT_DONE.getValue());
List<ProjectTaskInventoryDetailEO> taskInventoryDetailEOList = this.projectTaskInventoryDetailEOService.list(taskInventoryDetailQueryWrap);
//3.设计符合性流程
if(StringUtils.contains(disposeType,FlowTypeEnum.SJFHXSHLC.getValue())){
this.initConformance(FlowTypeEnum.SJFHXSHLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList);
}
//4.prehomo流程
if(StringUtils.contains(disposeType,FlowTypeEnum.PREHOMOQRLC.getValue())){
this.initConformance(FlowTypeEnum.PREHOMOQRLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList);
}
//5.验证符合性流程
if(StringUtils.contains(disposeType,FlowTypeEnum.YZFHXSCLC.getValue())){
this.initConformance(FlowTypeEnum.YZFHXSCLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList);
}
//6.法规技术评估
if(StringUtils.contains(disposeType,FlowTypeEnum.FGJSPG.getValue())){
this.initFgjspg();
}
//7.法规意见收集
if(StringUtils.contains(disposeType,FlowTypeEnum.FGYJSJLC.getValue())){
this.initFgyjsj();
}
//8.处理之前流程数据在发起的时候,在bus_process_new中没有任务数据
if(StringUtils.contains(disposeType,"disposeBusProcessNew")){
this.workFlowFeignClient.dispostHistoryBusProcessNewData();
}
return Result.OK("初始化数据成功",disposeType);
}
@@ -670,10 +712,10 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
/**
* 初始化任务确认
* @param projectLawsInventoryEOList
* @param projectLibraryBaseList
*/
public void initRwqr(List<ProjectLawsInventoryEO> projectLawsInventoryEOList,List<ProjectLibraryBase> projectLibraryBaseList){
List<Map<String,Object>> rwqrResult = this.workFlowFeignClient.queryProcessInfoByPrcType(FlowTypeEnum.RWQRLC.getValue());
public void initRwqr(List<ProjectLawsInventoryEO> projectLawsInventoryEOList){
String flowType = FlowTypeEnum.RWQRLC.getValue();
List<Map<String,Object>> rwqrResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType);
if(CollectionUtils.isNotEmpty(rwqrResult)){
for (Map<String, Object> rwqrMap : rwqrResult) {
List<ProjectLawsInventoryEO> lawsInventoryList = projectLawsInventoryEOList.stream().filter(projectLawsInventory -> {
@@ -690,16 +732,237 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
rwqrMap.put("projectLibraryId",projectLawsInventoryEO.getProjectLibraryId());
rwqrMap.put("projectLawsInventoryId",projectLawsInventoryEO.getId());
rwqrMap.put("standId",projectLawsInventoryEO.getStandId());
rwqrMap.put("flowType",flowType);
List<Map<String,Object>> taskMapList = (List<Map<String,Object>>)rwqrMap.get("taskMapList");
if(CollectionUtils.isNotEmpty(taskMapList)){
addProcessInfo(rwqrMap);
String status = TodoCenterStatusEnum.COMPLETED.getValue();
for (Map<String, Object> taskMap : taskMapList) {
String deleteReason = (String) taskMap.get("deleteReason");
if(StringUtils.isEmpty(deleteReason)){
//如果是dre确认节点,将状态设置为询问,否则就是待确认。
if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"dreqr")){
status = TodoCenterStatusEnum.INQUIRY.getValue();
}else {
status = TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue();
}
break;
}
}
rwqrMap.put("status",status);
this.addProcessInfo(rwqrMap);
}
}
}
}
}
/**
* 初始化符合性流程
* @param flowType
*/
public void initConformance(String flowType,List<ProjectLawsInventoryEO> projectLawsInventoryEOList,List<ProjectTaskInventoryEO> taskInventoryEOList,List<ProjectTaskInventoryDetailEO> taskInventoryDetailEOList){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<Map<String,Object>> conformanceResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType);
if(CollectionUtils.isNotEmpty(conformanceResult)){
for (Map<String, Object> conformanceMap : conformanceResult) {
String actiProcInstId = (String) conformanceMap.get("actiProcInstId");
List<ProjectTaskInventoryEO> taskInventoryListTemp = taskInventoryEOList.stream().filter(taskInventoryEO -> {
boolean flag = false;
if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){
if (StringUtils.equals(taskInventoryEO.getDesignPId(), actiProcInstId)) {
flag = true;
}
}else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())){
if (StringUtils.equals(taskInventoryEO.getPrehomoPId(), actiProcInstId)) {
flag = true;
}
}else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){
if (StringUtils.equals(taskInventoryEO.getVerifyPId(), actiProcInstId)) {
flag = true;
}
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(taskInventoryListTemp)){
List<Map<String,Object>> taskMapList = (List<Map<String,Object>>)conformanceMap.get("taskMapList");
if(CollectionUtils.isNotEmpty(taskMapList)){
for (Map<String, Object> taskMap : taskMapList) {
String taskId = (String) taskMap.get("taskId");
String userId = "";
for (ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO : taskInventoryDetailEOList) {
if(StringUtils.equals(taskId,projectTaskInventoryDetailEO.getTaskId())){
userId = projectTaskInventoryDetailEO.getUserId();
}
}
taskMap.put("userId",userId);
}
String endTimeStr = "";
if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue()) && taskInventoryListTemp.get(0).getDesignDueDate() != null){
endTimeStr = sdf.format(taskInventoryListTemp.get(0).getDesignDueDate());
}else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue()) && taskInventoryListTemp.get(0).getPrehomoDueDate() != null){
endTimeStr = sdf.format(taskInventoryListTemp.get(0).getPrehomoDueDate());
}else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue()) && taskInventoryListTemp.get(0).getVerifyDueDate() != null){
endTimeStr = sdf.format(taskInventoryListTemp.get(0).getVerifyDueDate());
}
String projectLawsInventoryId = taskInventoryListTemp.get(0).getProjectLawsInventoryId();
String projectLibraryId = "";
String bussDocumentLibraryId = "";
List<ProjectLawsInventoryEO> projectLawsInventoryListTemp = projectLawsInventoryEOList.stream().filter(lawsInventory -> {
boolean flag = false;
if (StringUtils.equals(lawsInventory.getId(), projectLawsInventoryId)) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(projectLawsInventoryListTemp)){
projectLibraryId = projectLawsInventoryListTemp.get(0).getProjectLibraryId();
bussDocumentLibraryId = projectLawsInventoryListTemp.get(0).getStandId();
}
conformanceMap.put("flowType",flowType);
conformanceMap.put("endTime",endTimeStr);
conformanceMap.put("projectLibraryId",projectLibraryId);
conformanceMap.put("projectLawsInventoryId",projectLawsInventoryId);
conformanceMap.put("bussDocumentLibraryId",bussDocumentLibraryId);
String status = TodoCenterStatusEnum.COMPLETED.getValue();
for (Map<String, Object> taskMap : taskMapList) {
String deleteReason = (String) taskMap.get("deleteReason");
if(StringUtils.isEmpty(deleteReason)){
//如果是发起人审查节点,状态应该为 待审核,否则就是待提交
if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsh")){
status = TodoCenterStatusEnum.TO_AUDIT.getValue();
}else {
status = TodoCenterStatusEnum.TO_SUBMIT.getValue();
}
break;
}
}
conformanceMap.put("status",status);
this.addProcessInfo(conformanceMap);
}
}
}
}
}
/**
* 初始化法规技术评估
*/
public void initFgjspg(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String flowType = FlowTypeEnum.FGJSPG.getValue();
List<Map<String,Object>> fgjspgResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType);
if(CollectionUtils.isNotEmpty(fgjspgResult)){
List<LawsTechnologyEvaluationEO> lawsTechnologyEvaluationEOList = this.lawsTechnologyEvaluationEOService.list();
List<LawsTechnologyEvaluationFlowDetailEO> flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list();
for (Map<String, Object> fgjspgMap : fgjspgResult) {
List<Map<String,Object>> taskMapList = (List<Map<String,Object>>)fgjspgMap.get("taskMapList");
if(CollectionUtils.isNotEmpty(taskMapList)){
String standId = "";
String endTimeStr = "";
String actiProcInstId = (String) fgjspgMap.get("actiProcInstId");
List<LawsTechnologyEvaluationFlowDetailEO> flowDetailEOListTemp = flowDetailEOList.stream().filter(flowDetailEO -> {
boolean flag = false;
if (StringUtils.equals(actiProcInstId, flowDetailEO.getActiProcInstId())) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(flowDetailEOListTemp)){
String lawsTechnologyEvaluationId = flowDetailEOListTemp.get(0).getLawsTechnologyEvaluationId();
List<LawsTechnologyEvaluationEO> technologyEvaluationEOListTemp = lawsTechnologyEvaluationEOList.stream().filter(lawsTechnologyEvaluation -> {
boolean flag = false;
if (StringUtils.equals(lawsTechnologyEvaluationId, lawsTechnologyEvaluation.getId())) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(technologyEvaluationEOListTemp)){
standId = technologyEvaluationEOListTemp.get(0).getStandId();
endTimeStr = sdf.format(technologyEvaluationEOListTemp.get(0).getEndTime());
}
}
fgjspgMap.put("standId",standId);
fgjspgMap.put("endTime",endTimeStr);
fgjspgMap.put("flowType",flowType);
String status = TodoCenterStatusEnum.COMPLETED.getValue();
for (Map<String, Object> taskMap : taskMapList) {
String deleteReason = (String) taskMap.get("deleteReason");
if(StringUtils.isEmpty(deleteReason)){
//如果是发起人审查节点,状态应该为 待审核,否则就是待提交
if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsc")){
status = TodoCenterStatusEnum.TO_AUDIT.getValue();
}else {
status = TodoCenterStatusEnum.TO_SUBMIT.getValue();
}
break;
}
}
fgjspgMap.put("status",status);
this.addProcessInfo(fgjspgMap);
}
}
}
}
/**
* 初始化法规意见收集
*/
public void initFgyjsj(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String flowType = FlowTypeEnum.FGYJSJLC.getValue();
List<Map<String,Object>> fgyjsjResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType);
if(CollectionUtils.isNotEmpty(fgyjsjResult)){
List<LawsOpinionGatherEO> lawsOpinionGatherEOList = this.lawsOpinionGatherEOService.list();
for (Map<String, Object> fgyjsjMap : fgyjsjResult) {
List<Map<String,Object>> taskMapList = (List<Map<String,Object>>)fgyjsjMap.get("taskMapList");
if(CollectionUtils.isNotEmpty(taskMapList)){
String standId = "";
String endTimeStr = "";
String actiProcInstId = (String) fgyjsjMap.get("actiProcInstId");
List<LawsOpinionGatherEO> lawsOpinionGatherTempList = lawsOpinionGatherEOList.stream().filter(lawsOpinionGatherEO -> {
boolean flag = false;
if (StringUtils.equals(lawsOpinionGatherEO.getActiProcInstId(), actiProcInstId)) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(lawsOpinionGatherTempList)){
standId = lawsOpinionGatherTempList.get(0).getStandId();
endTimeStr = sdf.format(lawsOpinionGatherTempList.get(0).getEndTime());
}
fgyjsjMap.put("standId",standId);
fgyjsjMap.put("endTime",endTimeStr);
fgyjsjMap.put("flowType",flowType);
String status = TodoCenterStatusEnum.COMPLETED.getValue();
for (Map<String, Object> taskMap : taskMapList) {
String deleteReason = (String) taskMap.get("deleteReason");
if(StringUtils.isEmpty(deleteReason)){
//如果还有没提交的任务
status = TodoCenterStatusEnum.TO_SUBMIT.getValue();
break;
}
}
fgyjsjMap.put("status",status);
this.addProcessInfo(fgyjsjMap);
}
}
}
}
public void addProcessInfo(Map<String,Object> params){
String prcNum = (String) params.get("prcNum");
String prcName = (String) params.get("prcName");
@@ -709,12 +972,21 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
String projectLibraryId = "";
String projectLawsInventoryId = "";
String standId = "";
String status = (String) params.get("status");
String createBy = (String) params.get("createBy");
if(StringUtils.equals(flowType,FlowTypeEnum.RWQRLC.getValue())){
projectLibraryId = (String) params.get("projectLibraryId");
projectLawsInventoryId = (String) params.get("projectLawsInventoryId");
standId = (String) params.get("standId");
endTimeStr = (String) params.get("endTime");
}else if(StringUtils.equals(flowType,FlowTypeEnum.FGYJSJLC.getValue()) || StringUtils.equals(flowType,FlowTypeEnum.FGJSPG.getValue())){
standId = (String) params.get("standId");
endTimeStr = (String) params.get("endTime");
}else if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue()) || StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())|| StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){
projectLibraryId = (String) params.get("projectLibraryId");
projectLawsInventoryId = (String) params.get("projectLawsInventoryId");
standId = (String) params.get("bussDocumentLibraryId");
endTimeStr = (String) params.get("endTime");
}
ProcessInfoEO processInfoEO = new ProcessInfoEO();
@@ -736,7 +1008,7 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
e.printStackTrace();
}
processInfoEO.setEndTime(endTime);
processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue());
processInfoEO.setStatus(status);
processInfoEO.setCreateBy(createBy);
this.baseMapper.insert(processInfoEO);
@@ -748,7 +1020,15 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
processInfoDetailEO.setTaskId((String) taskMap.get("taskId"));
processInfoDetailEO.setTaskDefinitionKey((String) taskMap.get("taskDefinitionKey"));
processInfoDetailEO.setUserId((String) taskMap.get("userId"));
processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue());
String taskStatus = (String) taskMap.get("status");
if(StringUtils.equals(taskStatus,TaskStatusEnum.HAVE_DONE.getValue())){
try {
processInfoDetailEO.setSubmitTime(sdf.parse((String) taskMap.get("submitTime")));
} catch (ParseException e) {
e.printStackTrace();
}
}
processInfoDetailEO.setStatus(taskStatus);
processInfoDetailEO.setProcessInfoId(processInfoEO.getId());
processInfoDetailEO.setFlowType(flowType);
processInfoDetailEO.setProjectLawsInventoryId(projectLawsInventoryId);
@@ -189,4 +189,10 @@ public interface WorkFlowFeignClient {
*/
@RequestMapping(value = "/bat-wkflow/datas/bus-process-name/queryProcessInfoByPrcType",method = RequestMethod.GET)
List<Map<String, Object>> queryProcessInfoByPrcType(@RequestParam("prcType") String prcType);
/**
* 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息
*/
@RequestMapping(value = "/bat-wkflow/datas/bus-process-new/dispostHistoryBusProcessNewData",method = RequestMethod.GET)
Result dispostHistoryBusProcessNewData();
}
@@ -205,4 +205,11 @@ public class WorkFlowFeignClientImpl{
public List<Map<String, Object>> queryProcessInfoByPrcType(String prcType) {
return workFlowFeignClient.queryProcessInfoByPrcType(prcType);
}
/**
* 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息
*/
public Result dispostHistoryBusProcessNewData() {
return workFlowFeignClient.dispostHistoryBusProcessNewData();
}
}