This commit is contained in:
2025-11-20 11:02:13 +08:00
parent f138947e20
commit 7b114dbaeb
6 changed files with 90 additions and 47 deletions
@@ -153,39 +153,40 @@ public class ProposalCommitteeFilingController {
@SaCheckPermission("proposal.committeeFiling")
@ApiOperation("并案撤回")
@Aop(TransAop.READ_COMMITTED)
public Result revokeTask(@Valid String taskId) {
public Result revokeTask(@Valid Long taskId) {
ProcessTask processTask = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getId, "=", taskId));
NutMap json = Json.fromJson(NutMap.class, processTask.getVariable());
List<String> proposalIds = json.getList("proposalIds", String.class);
if (!proposalIds.isEmpty()){
dao.clear(ProposalMerge.class, Cnd.where(ProposalMerge::getProposalId, "in", proposalIds));
List<String> processTaskIds = json.getList("processTaskIds", String.class);
processTaskIds.forEach(processTaskId -> {
// 自己任务
ProcessTask selfTask = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getId, "=", processTaskId));
selfTask.setTaskState(ProcessTaskStateEnum.DOING.getCode());
dao.clear(ProposalMerge.class, Cnd.where(ProposalMerge::getProposalId, "in", proposalIds));
// 撤销任务
List<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskParentId, "=", processTaskId));
for (ProcessTask task : taskList) {
task.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode());
dao.update(task);
}
// 激活
dao.update(selfTask);
// 流程激活
dao.update(ProcessInstance.class, Chain.make("state", ProcessInstanceStateEnum.DOING.getCode()), Cnd.where(ProcessInstance::getId, "=", selfTask.getProcessInstanceId()));
List<String> processTaskIds = json.getList("processTaskIds", String.class);
processTaskIds.forEach(processTaskId -> {
// 自己任务
ProcessTask selfTask = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getId, "=", processTaskId));
selfTask.setTaskState(ProcessTaskStateEnum.DOING.getCode());
// 撤销任务
List<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskParentId, "=", processTaskId));
for (ProcessTask task : taskList) {
task.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode());
dao.update(task);
}
// 激活
dao.update(selfTask);
// 流程激活
dao.update(ProcessInstance.class, Chain.make("state", ProcessInstanceStateEnum.DOING.getCode()), Cnd.where(ProcessInstance::getId, "=", selfTask.getProcessInstanceId()));
// 发送任务撤回事件 确保上面执行成功
for (ProcessTask task : taskList) {
ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build());
}
});
// 发送任务撤回事件 确保上面执行成功
for (ProcessTask task : taskList) {
ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build());
}
});
}else{
flowCommonService.revokeTask(taskId);
}
return Result.success();
}
@@ -231,23 +231,29 @@ public class ProposalCommitteeFilingUnitController {
@At
@SaCheckPermission("proposal.committeeFilingUnit")
@ApiOperation("并案撤回")
@ApiOperation("撤回")
@Aop(TransAop.READ_COMMITTED)
public Result revokeTask(@Valid String taskId) {
public Result revokeTask(@Valid Long taskId, String proposalId) {
ProcessTask processTask = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getId, "=", taskId));
NutMap json = Json.fromJson(NutMap.class, processTask.getVariable());
List<String> proposalIds = json.getList("proposalIds", String.class);
if (!proposalIds.isEmpty()) {
List<ProcessInstance> list = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", proposalIds));
List<Long> list1 = list.stream().map(ProcessInstance::getId).toList();
for (Long id : list1) {
ProcessTask task = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", id).and(ProcessTask::getTaskState, "=", 20).limit(1).desc(ProcessTask::getId));
flowCommonService.revokeTask(task.getId());
}
dao.update(ProposalInfo.class, Chain.make("caseFilingResult", null), Cnd.where(ProposalInfo::getId, "in", proposalIds));
} else {
flowCommonService.revokeTask(taskId);
dao.update(ProposalInfo.class, Chain.make("caseFilingResult", null), Cnd.where(ProposalInfo::getId, "=", proposalId));
List<ProcessInstance> list = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", proposalIds));
List<Long> list1 = list.stream().map(ProcessInstance::getId).toList();
for (Long id : list1) {
ProcessTask task = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", id).and(ProcessTask::getTaskState,"=", 20).limit(1).desc(ProcessTask::getId));
flowCommonService.revokeTask(task.getId());
}
dao.update(ProposalInfo.class, Chain.make("caseFilingResult", null), Cnd.where(ProposalInfo::getId, "in", proposalIds));
return Result.success();
}
@@ -105,7 +105,7 @@ public class ProposalUnderTakeReplyController {
t.variable taskVariable,
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
IFNULL(GROUP_CONCAT(DISTINCT nt.taskName),'结束') curTaskKey,
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke,
CASE WHEN t.taskState = 20 AND ( rt.id IS NOT NULL OR rt.taskState = 10 ) THEN 1 ELSE 0 END AS canRevoke,
t.variable->>'$.underTakeName' AS underTakeName,
IF(JSON_EXTRACT(t.variable, '$.underTakeIsMaster') = true, 1, 0) AS underTakeIsMaster,
t.variable->>'$.tf_transferUserId' AS tf_transferUserId,
@@ -243,17 +243,22 @@ public class ProposalUnderTakeReplyController {
@SaCheckPermission("proposal.unitReply")
@ApiOperation("并案撤回")
@Aop(TransAop.READ_COMMITTED)
public Result revokeTask(@Valid String taskId, String proposalId) {
public Result revokeTask(@Valid Long taskId, String proposalId) {
List<String> proposalIds = proposalCommonService.mergeProposal(proposalId);
if (ObjectUtil.isNotEmpty(proposalIds)){
List<ProcessInstance> list = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", proposalIds));
List<Long> list1 = list.stream().map(ProcessInstance::getId).toList();
List<ProcessInstance> list = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", proposalIds));
List<Long> list1 = list.stream().map(ProcessInstance::getId).toList();
for (Long id : list1) {
ProcessTask task = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", id).and(ProcessTask::getTaskState,"=", 20).limit(1).desc(ProcessTask::getId));
flowCommonService.revokeTask(task.getId());
for (Long id : list1) {
ProcessTask task = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", id).and(ProcessTask::getTaskState,"=", 20).limit(1).desc(ProcessTask::getId));
flowCommonService.revokeTask(task.getId());
}
}else{
flowCommonService.revokeTask(taskId);
}
return Result.success();
}
@@ -23,12 +23,10 @@ import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysRoleService;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.web.commons.base.Globals;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConsolidation;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalMerge;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
import com.budwk.app.zhgh.democratic.proposal.models.*;
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
@@ -143,6 +141,15 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl<ProposalInfo> imp
List<NutMap> commissionerOpinions = listMap(commissionerSql);
info.put("commissionerOpinions", commissionerOpinions);
Cnd cnd = Cnd.NEW();
cnd.and(ProposalUndertakeSuggestion::getProposalId, "=", id);
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
cnd.and(ProposalUndertakeSuggestion::getUnitId, "=", getSelfManageUndertake().getId());
}
cnd.desc(ProposalUndertakeSuggestion::getTime);
List<ProposalUndertakeSuggestion> undertakeSuggestions = dao().query(ProposalUndertakeSuggestion.class, cnd);
info.put("undertakeSuggestions", undertakeSuggestions);
return info;
}