Browse Source

[feat]增加处理中逻辑

dev
杨威 1 week ago
parent
commit
3970bd5b93
  1. 6
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java
  2. 8
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  3. 2
      dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java
  4. 13
      dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java
  5. 11
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

6
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java

@ -584,10 +584,12 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
} }
String tableWorkflow = ptPrefix.getTableWorkflow(); // eg: "dk_workflow" String tableWorkflow = ptPrefix.getTableWorkflow(); // eg: "dk_workflow"
wrapper.notIn("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus()); // wrapper.notIn("t.flowStatus", BusinessStatusEnum.CANCEL.getStatus());
wrapper.eq("t.handle_type", BusinessStatusEnum.WAITING.getStatus());
// wrapper.apply(" EXISTS(select * from w_dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); // wrapper.apply(" EXISTS(select * from w_dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)");
wrapper.apply(" EXISTS(select * from "+tableWorkflow+".flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); // wrapper.apply(" EXISTS(select * from "+tableWorkflow+".flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)");
Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertHandle(pageQuery.build(), wrapper, ptPrefix); Page<BusinessAlert> page = this.baseMapper.pageBusinessAlertHandle(pageQuery.build(), wrapper, ptPrefix);

8
dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml

@ -66,14 +66,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="pageBusinessAlertHandle" resultType="org.dromara.business.domain.BusinessAlert"> <select id="pageBusinessAlertHandle" resultType="org.dromara.business.domain.BusinessAlert">
select t.* from ( select t.* from (
select select
ba.*, ba.*
b.flow_status flowStatus,
b.business_id businessId,
b.id instanceId
from ${tbPrefix.tableBusiness}.business_alert ba from ${tbPrefix.tableBusiness}.business_alert ba
inner join ${tbPrefix.tableWorkflow}.flow_instance b on ba.id = b.business_id
where
b.del_flag = '0'
) t ) t
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>

2
dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java

@ -99,6 +99,8 @@ public class CompleteTaskBo implements Serializable {
*/ */
private Boolean assign = false; private Boolean assign = false;
private Boolean firstNode = false;
public Map<String, Object> getVariables() { public Map<String, Object> getVariables() {
if (variables == null) { if (variables == null) {
return new HashMap<>(16); return new HashMap<>(16);

13
dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java

@ -51,11 +51,22 @@ public class FlwAlertHandler implements FlwCommonHandler {
@Override @Override
public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
String assignName = null; String assignName = null;
Boolean firstAlert = false;
if (ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams())){ if (ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams())){
assignName = ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams().get("handler"))?(String)processCreateTaskEvent.getParams().get("handler"):null; assignName = ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams().get("handler"))?(String)processCreateTaskEvent.getParams().get("handler"):null;
firstAlert = ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams().get("firstNode"))?(Boolean)processCreateTaskEvent.getParams().get("firstNode"):false;
}
//属于第一个节点,还未走到审核节点
if (firstAlert){
alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.TODO.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),processCreateTaskEvent.getMessage(),assignName);
}else {
alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),processCreateTaskEvent.getMessage(),assignName);
} }
alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),processCreateTaskEvent.getMessage(),assignName);
} }
/** /**

11
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@ -158,7 +158,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
dto.setProcessInstanceId(instance.getId()); dto.setProcessInstanceId(instance.getId());
dto.setTaskId(taskList.get(0).getId()); dto.setTaskId(taskList.get(0).getId());
executeTask(taskList.get(0).getId()); executeTask(taskList.get(0).getId(),true);
return dto; return dto;
} }
@ -203,6 +203,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
variables.put("assign",completeTaskBo.getAssign()); variables.put("assign",completeTaskBo.getAssign());
variables.put("handler", completeTaskBo.getHandler()); variables.put("handler", completeTaskBo.getHandler());
if (completeTaskBo.getFirstNode()){
variables.put("firstNode", true);
}else {
variables.put("firstNode", false);
}
flowParams.variable(variables); flowParams.variable(variables);
flowParams.skipType(SkipType.PASS.getKey()); flowParams.skipType(SkipType.PASS.getKey());
flowParams.message(completeTaskBo.getMessage()); flowParams.message(completeTaskBo.getMessage());
@ -900,10 +906,11 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
* 初始化流程任务 * 初始化流程任务
* @param taskId * @param taskId
*/ */
public boolean executeTask(Long taskId) { public boolean executeTask(Long taskId,Boolean firstNode) {
CompleteTaskBo completeTaskBo = new CompleteTaskBo(); CompleteTaskBo completeTaskBo = new CompleteTaskBo();
completeTaskBo.setTaskId(taskId); completeTaskBo.setTaskId(taskId);
completeTaskBo.setMessageType(List.of(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); completeTaskBo.setMessageType(List.of(MessageTypeEnum.SYSTEM_MESSAGE.getCode()));
completeTaskBo.setFirstNode(firstNode);
IFlwTaskService service = applicationContext.getBean(IFlwTaskService.class); IFlwTaskService service = applicationContext.getBean(IFlwTaskService.class);
service.completeTask(completeTaskBo); service.completeTask(completeTaskBo);
return true; return true;

Loading…
Cancel
Save