审批+待办交互修改版本1

This commit is contained in:
ys.git 2025-12-25 15:56:57 +08:00
parent 373e29724b
commit 6ade7367e7

View File

@ -178,7 +178,6 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
//分发待办 //分发待办
for (String assigneeId : firstNode.getAssignees()) { for (String assigneeId : firstNode.getAssignees()) {
TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); TodoTaskPojo todoTaskPojo = new TodoTaskPojo();
todoTaskPojo.setDocumentNo(approvalId); todoTaskPojo.setDocumentNo(approvalId);
todoTaskPojo.setProcessTitle(processTitle); todoTaskPojo.setProcessTitle(processTitle);
@ -194,8 +193,20 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
todoTaskPojo.setIsDelete(0); todoTaskPojo.setIsDelete(0);
sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo);
} }
//创建发起
InitiatedTaskPojo initiatedTaskPojo = new InitiatedTaskPojo();
initiatedTaskPojo.setDocumentNo(approvalId);
initiatedTaskPojo.setProcessTitle(processTitle);
initiatedTaskPojo.setCurrentNode(ApprovalOrderEnum.PROOFREAD.getDesc());
initiatedTaskPojo.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees()));
initiatedTaskPojo.setCreatedById(userId);
initiatedTaskPojo.setCreatedBy(createBy);
initiatedTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc());
initiatedTaskPojo.setModelName(modelPojoOld.getModelName());
initiatedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
initiatedTaskPojo.setIsDelete(0);
sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(initiatedTaskPojo);
//将参数绑定到该机型审批流程中 //将参数绑定到该机型审批流程中
for (EngineParamDetailPojo engineParamDetailPojo : paramList) { for (EngineParamDetailPojo engineParamDetailPojo : paramList) {
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
@ -317,12 +328,20 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
.update("approver_persons", "") .update("approver_persons", "")
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.eq("id", approvalId).doUpdate(EngineReviewListPojo.class); .eq("id", approvalId).doUpdate(EngineReviewListPojo.class);
//审批流的待办全部is_delete=1 //审批流的事项全部处理
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.update("is_delete", 1) .update("is_delete", 1)
// .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) .update("current_node", ParamValueVersionEnum.REFUSE.getDesc())
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); .eq("document_no", approvalId).doUpdate(TodoTaskPojo.class);
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("current_node", ParamValueVersionEnum.REFUSE.getDesc())
.update("last_update_date", new Date())
.eq("document_no", approvalId).doUpdate(InitiatedTaskPojo.class);
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("current_node", ParamValueVersionEnum.REFUSE.getDesc())
.update("last_update_date", new Date())
.eq("document_no", approvalId).doUpdate(CompletedTaskPojo.class);
return "已拒绝"; return "已拒绝";
} }
//通过处理 //通过处理
@ -331,7 +350,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.eq("approval_id", approvalId) .eq("approval_id", approvalId)
.eq("node_name", reviewListPojo.getNodeName()).doQuery(ParamApprovalRecordPojo.class); .eq("node_name", reviewListPojo.getNodeName()).doQuery(ParamApprovalRecordPojo.class);
//获取已经处理过的人
Set<String> operatedUsers = nodeRecords.stream() Set<String> operatedUsers = nodeRecords.stream()
.map(ParamApprovalRecordPojo::getAssignee) .map(ParamApprovalRecordPojo::getAssignee)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
@ -341,61 +360,33 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
.eq("node_order", (nodeOrder + 1)) .eq("node_order", (nodeOrder + 1))
.doQuery(ApprovalConfigPojo.class); .doQuery(ApprovalConfigPojo.class);
//必须已经全部通过 不是会签的话例外 //必须已经全部通过 不是会签的话例外
if (operatedUsers.containsAll(assigneeList) || notAll) { if (operatedUsers.containsAll(assigneeList) || notAll) {
//当前环节审批人 用来完成当前环节审批人的待办 String nodeName = "";
String assignees = approvalConfigPojo.getAssignees(); String currentProcessor = "";
for (String assID : Arrays.asList(assignees.split(","))) {
Integer isd;
if (assID.equals(approver)) {
isd = 1;//抢签者完成
} else {
isd = 2;//被抢签完成
}
if (ObjectUtils.isNotEmpty(approvalConfigPojos)) {
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("is_delete", isd)
.update("current_node", approvalConfigPojos.get(0).getNodeName())
.update("last_update_date", new Date())
.update("current_processor", JSON.toJSONString(Arrays.asList(approvalConfigPojos.get(0).getAssignees().split(","))))
.eq("document_no", approvalId)
.eq("owner_id", assID)
.doUpdate(TodoTaskPojo.class);
} else {
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("is_delete", isd)
.update("last_update_date", new Date())
.update("current_processor", "")
.eq("document_no", approvalId)
.eq("owner_id", assID)
.doUpdate(TodoTaskPojo.class);
}
}
// 更新待办
if (ObjectUtils.isNotEmpty(approvalConfigPojos)) { if (ObjectUtils.isNotEmpty(approvalConfigPojos)) {
ApprovalConfigPojo approvalConfigPojo1 = approvalConfigPojos.get(0); ApprovalConfigPojo approvalConfigPojo1 = approvalConfigPojos.get(0);
for (String nextAssId : Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) { nodeName = approvalConfigPojo1.getNodeName();
// 更新待办 currentProcessor = JSON.toJSONString(Arrays.asList(approvalConfigPojos.get(0).getAssignees().split(",")));
List<TodoTaskPojo> todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625")
.eq("document_no", approvalId)
.eq("owner_id", nextAssId)
.update("is_delete", 0)
.doQuery(TodoTaskPojo.class);
//更新审批流到下个审批节点
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.update("approver_persons", approvalConfigPojo1.getAssignees())
.update("node_name", nodeName)
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.update("current_node", approvalConfigPojo1.getNodeName()) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class);
.update("current_processor", JSON.toJSONString(Arrays.asList(approvalConfigPojo1.getAssignees().split(",")))) //为下个环节的人生成待办
.eq("document_no", approvalId) for (String nextAssId : Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) {
// .eq("is_delete", 0)
// .eq("owner_id", nextAssId)
.doUpdate(TodoTaskPojo.class);
if (ObjectUtils.isEmpty(todoTaskPojos)) {
TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); TodoTaskPojo todoTaskPojo = new TodoTaskPojo();
todoTaskPojo.setDocumentNo(approvalId); todoTaskPojo.setDocumentNo(approvalId);
todoTaskPojo.setProcessTitle(processTopic); todoTaskPojo.setProcessTitle(processTopic);
todoTaskPojo.setCurrentNode(approvalConfigPojo1.getNodeName()); todoTaskPojo.setCurrentNode(nodeName);
todoTaskPojo.setCurrentProcessor(currentProcessor);
todoTaskPojo.setModelId(reviewListPojo.getModelId()); todoTaskPojo.setModelId(reviewListPojo.getModelId());
todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber());
todoTaskPojo.setOwnerId(nextAssId); todoTaskPojo.setOwnerId(nextAssId);
@ -407,13 +398,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
todoTaskPojo.setIsDelete(0); todoTaskPojo.setIsDelete(0);
sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo);
} }
}
//更新审批流到下个审批节点
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("approver_persons", approvalConfigPojo1.getAssignees())
.update("node_name", approvalConfigPojo1.getNodeName())
.update("last_update_date", new Date())
.eq("id", approvalId).doUpdate(EngineReviewListPojo.class);
} else { } else {
// 所有环节完成 // 所有环节完成
DataEntryEngineModelPojo modelPojos = sw.buildFromDatasource("xdap_app_223770822127386625") DataEntryEngineModelPojo modelPojos = sw.buildFromDatasource("xdap_app_223770822127386625")
@ -463,56 +448,84 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.eq("id", approvalId).doUpdate(EngineReviewListPojo.class); .eq("id", approvalId).doUpdate(EngineReviewListPojo.class);
//待办环节修改 //待办环节修改
nodeName = ParamValueVersionEnum.PASSED.getDesc();
currentProcessor = "";
}
//当前环节审批人 用来完成当前环节审批人的待办
String assignees = approvalConfigPojo.getAssignees();
for (String assID : Arrays.asList(assignees.split(","))) {
//为当前人生成已办
if (assID.equals(approver)) {
TodoTaskPojo todoTaskPojo = sw.buildFromDatasource("xdap_app_223770822127386625")
.eq("document_no", approvalId)
.eq("owner_id", assID)
.eq("current_node", reviewListPojo.getNodeName())
.doQueryFirst(TodoTaskPojo.class);
CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo();
BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo, "id");
completedTaskPojo.setIsDelete(0);
completedTaskPojo.setCurrentNode(nodeName);
completedTaskPojo.setCurrentProcessor(currentProcessor);
sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(completedTaskPojo);
}
}
//完成这个节点的所有待办
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.update("is_delete", 1) .update("is_delete", 1)
.update("current_node", ParamValueVersionEnum.PASSED.getDesc()) .update("current_node", nodeName)
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); .update("current_processor", currentProcessor)
} .eq("document_no", approvalId)
.eq("current_node", reviewListPojo.getNodeName())
.doUpdate(TodoTaskPojo.class);
//更新发起的事项状态
sw.buildFromDatasource("xdap_app_223770822127386625")
.update("current_node", nodeName)
.update("last_update_date", new Date())
.update("current_processor", currentProcessor)
.eq("document_no", approvalId)
.doUpdate(InitiatedTaskPojo.class);
} else { } else {
//如果还有未通过的 找到未通过的 //如果还有未通过的 找到未通过的
List<String> remainingAssignees = assigneeList.stream() List<String> remainingAssignees = assigneeList.stream()
.filter(assignee -> !operatedUsers.contains(assignee)) .filter(assignee -> !operatedUsers.contains(assignee))
.collect(Collectors.toList()); .collect(Collectors.toList());
List<String> complateAssignees = assigneeList.stream()
.filter(assignee -> operatedUsers.contains(assignee))
.collect(Collectors.toList());
String remainingAssigneesJson = JSON.toJSONString(remainingAssignees);
//已完成人的待办is_delete=1 //已完成人的待办is_delete=1
for (String complateAssignee : complateAssignees) {
TodoTaskPojo todoTaskPojo1 = sw.buildFromDatasource("xdap_app_223770822127386625")
.eq("document_no", approvalId)
.eq("current_node", reviewListPojo.getNodeName())
.eq("owner_id", complateAssignee)
.doQueryFirst(TodoTaskPojo.class);
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.update("is_delete", 1) .update("is_delete", 1)
.update("last_update_date", new Date()) .update("last_update_date", new Date())
.update("current_processor", remainingAssignees) .update("current_processor", remainingAssigneesJson)
.eq("document_no", approvalId) .eq("id", todoTaskPojo1.getId())
.eq("owner_id", approver)
.doUpdate(TodoTaskPojo.class); .doUpdate(TodoTaskPojo.class);
for (String remainingAssignee : remainingAssignees) { //生成已完成人的已办
List<TodoTaskPojo> todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625") CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo();
.eq("document_no", approvalId) BeanUtils.copyProperties(todoTaskPojo1, completedTaskPojo, "id");
.eq("owner_id", remainingAssignee) completedTaskPojo.setIsDelete(0);
.update("is_delete", 0) completedTaskPojo.setCurrentProcessor(remainingAssigneesJson);
.doQuery(TodoTaskPojo.class); sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(completedTaskPojo);
if (ObjectUtils.isEmpty(todoTaskPojos)) {
TodoTaskPojo todoTaskPojo = new TodoTaskPojo();
todoTaskPojo.setDocumentNo(approvalId);
todoTaskPojo.setProcessTitle(processTopic);
todoTaskPojo.setCurrentNode(reviewListPojo.getNodeName());
todoTaskPojo.setModelId(reviewListPojo.getModelId());
todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber());
todoTaskPojo.setOwnerId(remainingAssignee);
todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc());
todoTaskPojo.setModelName(modelPojo.getModelName());
todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy());
todoTaskPojo.setCreatedBy(createBy);
todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
todoTaskPojo.setIsDelete(0);
sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo);
}
} }
//更新机型审批数据的当前审批人去掉已经审批通过的那个人 //更新机型审批数据的当前审批人去掉已经审批通过的那个人
sw.buildFromDatasource("xdap_app_223770822127386625") sw.buildFromDatasource("xdap_app_223770822127386625")
.update("approver_persons", String.join(",", remainingAssignees)) .update("approver_persons", String.join(",", remainingAssignees))
.eq("id", approvalId).doUpdate(EngineReviewListPojo.class); .eq("id", approvalId).doUpdate(EngineReviewListPojo.class);
} }
if (ObjectUtils.isNotEmpty(list)) { if (ObjectUtils.isNotEmpty(list)) {
batchInsertParamDetail(list); batchInsertParamDetail(list);
} }