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;
}
@@ -100,6 +100,27 @@ const PROPOSAL_INFO = {
</el-table>
</template>
<template v-if="viewData.undertakeSuggestions&&viewData.undertakeSuggestions.length>0">
<div class="process-title">
承办单位意见
</div>
<template v-for="item,index in viewData.undertakeSuggestions">
<div class="process-title">
{{item.unitName}}-意见{{ index + 1 }}
</div>
<el-descriptions :column="2" border>
<el-descriptions-item label="反馈人">{{ item.userName }}</el-descriptions-item>
<el-descriptions-item label="所属单位">{{ item.unitName }}</el-descriptions-item>
<el-descriptions-item label="反馈时间">{{ item.time }}</el-descriptions-item>
<el-descriptions-item label="反馈结果">{{ item.result }}</el-descriptions-item>
<el-descriptions-item label="反馈意见">
<span v-html="item.opinion"></span>
</el-descriptions-item>
</el-descriptions>
</template>
</template>
<el-dialog title="提案详情" :visible.sync="viewDialogVisible" width="1200px" append-to-body top="5vh">
<div style="max-height: 80vh;overflow-y: auto">
<proposal-info ref="infoDialogRef"></proposal-info>
@@ -264,7 +264,10 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "info"
}).then(() => {
this.$axios.post("/platform/proposal/committeeFilingUnit/revokeTask", {taskId: row.taskId}).then((res) => {
this.$axios.post("/platform/proposal/committeeFilingUnit/revokeTask", {
taskId: row.taskId,
proposalId: row.proposalId
}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()