yxk-20260729
改善提案 Task_improve005 不显示 TaskHandleInnerContent。评委选择“投票通过”或“投票反对”后弹出确认框;确认即锁定个人投票并直接完成当前流程任务。
This commit is contained in:
+3
-3
@@ -226,9 +226,9 @@ public class ImprovementProposalController {
|
||||
}
|
||||
|
||||
@PostMapping(value = "/bpm/submitInstituteVote")
|
||||
@Operation(summary = "锁定所级评委投票并汇总结果")
|
||||
public Result<String> submitInstituteVote(@RequestBody ImprovementProposalBpmActionDTO action) {
|
||||
return handleBpmAction(() -> improvementProposalService.submitInstituteVote(action, currentUser()));
|
||||
@Operation(summary = "确认所级评委投票并直接完成流程任务")
|
||||
public Result<String> submitInstituteVote(@RequestBody ImprovementProposalBpmActionDTO action, HttpServletRequest request) {
|
||||
return handleBpmAction(() -> improvementProposalService.submitInstituteVoteAndComplete(action, currentUser(), request));
|
||||
}
|
||||
|
||||
private LoginUser currentUser() {
|
||||
|
||||
+4
@@ -8,6 +8,7 @@ import org.jeecg.modules.improvementproposal.dto.ImprovementInstituteVoteCandida
|
||||
import org.jeecg.modules.improvementproposal.dto.ImprovementProposalBpmActionDTO;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -91,6 +92,9 @@ public interface IImprovementProposalService extends IService<ImprovementProposa
|
||||
/** 锁定当前所级评委的投票并在全员完成后汇总投票结果。 */
|
||||
void submitInstituteVote(ImprovementProposalBpmActionDTO action, LoginUser loginUser);
|
||||
|
||||
/** 锁定投票后,使用通用流程办理能力直接完成当前所级评委任务。 */
|
||||
void submitInstituteVoteAndComplete(ImprovementProposalBpmActionDTO action, LoginUser loginUser, HttpServletRequest request);
|
||||
|
||||
/**
|
||||
* 获取指定年度最新提案编号中的XXXX部分
|
||||
*
|
||||
|
||||
+33
-3
@@ -14,6 +14,7 @@ import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.modules.extbpm.process.service.impl.BpmBaseExtApiImpl;
|
||||
import org.jeecg.modules.extbpm.process.service.IExtActTaskCcService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -37,6 +38,7 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @Description: improvement_proposal
|
||||
@@ -79,6 +81,8 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
||||
private TaskService taskService;
|
||||
@Autowired
|
||||
private ISysRoleService sysRoleService;
|
||||
@Autowired
|
||||
private IExtActTaskCcService extActTaskCcService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -434,19 +438,25 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submitInstituteVote(ImprovementProposalBpmActionDTO action, LoginUser loginUser) {
|
||||
if (!"agree".equals(action.getVoteResult()) && !"disagree".equals(action.getVoteResult())) {
|
||||
throw new IllegalStateException("投票结果只能是同意或不同意");
|
||||
}
|
||||
ImprovementProposal proposal = validateRunningTask(action, loginUser, TASK_INSTITUTE_VOTE);
|
||||
ImprovementProposal lockedProposal = improvementProposalMapper.selectByIdForUpdate(proposal.getId());
|
||||
if (lockedProposal == null || !action.getProcessInstanceId().equals(lockedProposal.getProcessInstanceId())) {
|
||||
throw new IllegalStateException("提案流程状态已变化,请刷新后重试");
|
||||
}
|
||||
ImprovementInstituteVote vote = findInstituteVote(lockedProposal.getId(), loginUser.getId());
|
||||
if (!"voted".equals(vote.getVoteStatus())) {
|
||||
if (!"agree".equals(vote.getVoteResult()) && !"disagree".equals(vote.getVoteResult())) {
|
||||
throw new IllegalStateException("请先选择投票通过或投票反对");
|
||||
if ("voted".equals(vote.getVoteStatus())) {
|
||||
// 网络异常导致流程任务未完成时,允许使用已确认的同一结果重试办理;不允许改票。
|
||||
if (!action.getVoteResult().equals(vote.getVoteResult())) {
|
||||
throw new IllegalStateException("投票已确认,不能修改投票结果");
|
||||
}
|
||||
} else {
|
||||
int updated = improvementInstituteVoteMapper.update(null, new LambdaUpdateWrapper<ImprovementInstituteVote>()
|
||||
.eq(ImprovementInstituteVote::getId, vote.getId())
|
||||
.eq(ImprovementInstituteVote::getVoteStatus, "pending")
|
||||
.set(ImprovementInstituteVote::getVoteResult, action.getVoteResult())
|
||||
.set(ImprovementInstituteVote::getVoteStatus, "voted")
|
||||
.set(ImprovementInstituteVote::getVoteTime, new Date())
|
||||
.set(ImprovementInstituteVote::getProcessTaskId, action.getTaskId()));
|
||||
@@ -457,6 +467,26 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
||||
updateInstituteVoteSummaryIfComplete(lockedProposal, action.getProcessInstanceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submitInstituteVoteAndComplete(ImprovementProposalBpmActionDTO action, LoginUser loginUser, HttpServletRequest request) {
|
||||
submitInstituteVote(action, loginUser);
|
||||
|
||||
// 复用通用办理服务,确保审批日志、流程状态及多实例收敛逻辑与普通办理保持一致。
|
||||
HashMap<String, String> processParams = new HashMap<>(4);
|
||||
processParams.put("taskId", action.getTaskId());
|
||||
processParams.put("processModel", "1");
|
||||
processParams.put("nextCodeCount", "1");
|
||||
// Task5 只有正常流转分支;通用办理服务以 end + 单分支执行 taskService.complete。
|
||||
processParams.put("nextnode", "end");
|
||||
Result<Object> result = extActTaskCcService.processComplete(processParams, request);
|
||||
if (result == null || !result.isSuccess()) {
|
||||
throw new IllegalStateException(result == null || oConvertUtils.isEmpty(result.getMessage())
|
||||
? "投票已确认,但流程办理失败"
|
||||
: result.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private ImprovementInstituteVote findInstituteVote(String mainId, String voterId) {
|
||||
return improvementInstituteVoteMapper.selectByMainId(mainId).stream()
|
||||
.filter(item -> voterId.equals(item.getVoterId()))
|
||||
|
||||
Reference in New Issue
Block a user