This commit is contained in:
Paidax
2024-11-22 17:32:27 +08:00
parent f5d37974cd
commit c8d75e0b61
4 changed files with 89 additions and 33 deletions
+18 -9
View File
@@ -5,19 +5,14 @@
package io.v.nutz.base.model; package io.v.nutz.base.model;
import cn.hutool.json.JSONObject;
import cn.wizzer.framework.base.model.BaseModel; import cn.wizzer.framework.base.model.BaseModel;
import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.web.commons.utils.ShiroUtil;
import java.util.Date; import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.entity.annotation.ColDefine;
import org.nutz.dao.entity.annotation.ColType;
import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Comment;
import org.nutz.dao.entity.annotation.EL;
import org.nutz.dao.entity.annotation.Name;
import org.nutz.dao.entity.annotation.Prev;
import org.nutz.dao.entity.annotation.Table;
import org.nutz.dao.interceptor.annotation.PrevInsert; import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.util.Date;
@Table("audit") @Table("audit")
public class Audit extends BaseModel { public class Audit extends BaseModel {
@Column @Column
@@ -93,6 +88,20 @@ public class Audit extends BaseModel {
) )
private Integer auditType; private Integer auditType;
public JSONObject getExt() {
return ext;
}
public void setExt(JSONObject ext) {
this.ext = ext;
}
@Column
@Comment("扩展信息")
@ColDefine(type = ColType.MYSQL_JSON)
private JSONObject ext;
public Date nowDate() { public Date nowDate() {
return new Date(); return new Date();
} }
@@ -121,4 +121,9 @@ public class Sys_local_process_instance_task extends BaseModel {
@ColDefine(type = ColType.BOOLEAN) @ColDefine(type = ColType.BOOLEAN)
private Boolean taskDeleteFlag; private Boolean taskDeleteFlag;
@Column
@Comment("上个任务ID")
@ColDefine(type = ColType.INT)
private Long prevTaskId;
} }
@@ -107,4 +107,12 @@ public interface SysLocalProcessService {
*/ */
void revoke(String processUniqueId,String restoreTaskId); void revoke(String processUniqueId,String restoreTaskId);
/**
* 撤销任务
*
* @param processUniqueId 流程实例ID
* @param taskNodeName 撤回后的节点名称 不相等会抛出异常
*/
void revokeTask(String processUniqueId, String taskNodeName);
} }
@@ -1,9 +1,9 @@
package io.v.nutz.sys.services.impl; package io.v.nutz.sys.services.impl;
import cn.hutool.core.util.ObjectUtil;
import io.v.nutz.sys.models.Sys_local_process_instance; import io.v.nutz.sys.models.Sys_local_process_instance;
import io.v.nutz.sys.models.Sys_local_process_instance_task; import io.v.nutz.sys.models.Sys_local_process_instance_task;
import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.sys.services.SysLocalProcessService;
import io.v.nutz.web.commons.base.Globals;
import io.v.nutz.zhgh.needhandlebycpu.service.HandleCpuCommonService; import io.v.nutz.zhgh.needhandlebycpu.service.HandleCpuCommonService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -21,6 +21,7 @@ import org.nutz.ioc.loader.annotation.IocBean;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional;
@IocBean @IocBean
@AllArgsConstructor @AllArgsConstructor
@@ -29,8 +30,8 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
@Inject @Inject
private Dao dao; private Dao dao;
// @Inject @Inject
// private HandleCpuCommonService handleCpuCommonService; private HandleCpuCommonService handleCpuCommonService;
@Override @Override
public void startProcess(String processName, String processUniqueId, String nodeName, String processInitiatorId, String pcUrl, String mobileUrl) { public void startProcess(String processName, String processUniqueId, String nodeName, String processInitiatorId, String pcUrl, String mobileUrl) {
@@ -67,6 +68,20 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
@Override @Override
public void createTask(String processUniqueId, String taskUniqueId, String taskNodeName, String createdById, List<String> assignments, String formUrl, String formUrlView, String formMobileUrl, String formMobileUrlView) { public void createTask(String processUniqueId, String taskUniqueId, String taskNodeName, String createdById, List<String> assignments, String formUrl, String formUrlView, String formMobileUrl, String formMobileUrlView) {
int count = dao.count(Sys_local_process_instance_task.class, Cnd.where("processUniqueId", "=", processUniqueId)
.and("taskNodeName", "=", taskNodeName)
.and("processUniqueId", "=", processUniqueId)
.and("taskUniqueId", "=", taskUniqueId)
.and("taskDeleteFlag", "=", 0)
.and("delFlag", "=", 0)
.and("status", "=", 1)
);
if (count == 0) {
Sys_local_process_instance_task prevTask = dao.fetch(Sys_local_process_instance_task.class, Cnd.where("processUniqueId", "=", processUniqueId)
.and("taskDeleteFlag", "=", 0)
.and("delFlag", "=", 0)
);
Sys_local_process_instance_task task = new Sys_local_process_instance_task(); Sys_local_process_instance_task task = new Sys_local_process_instance_task();
task.setProcessUniqueId(processUniqueId); task.setProcessUniqueId(processUniqueId);
task.setTaskUniqueId(taskUniqueId); task.setTaskUniqueId(taskUniqueId);
@@ -87,7 +102,9 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
task.setFormMobileUrlView(formMobileUrlView); task.setFormMobileUrlView(formMobileUrlView);
task.setStatus(1); task.setStatus(1);
task.setTaskDeleteFlag(false); task.setTaskDeleteFlag(false);
task.setPrevTaskId(Optional.ofNullable(prevTask).map(Sys_local_process_instance_task::getId).orElse(null));
dao.insert(task); dao.insert(task);
}
// handleCpuCommonService.createExecTask(processUniqueId, taskUniqueId); // handleCpuCommonService.createExecTask(processUniqueId, taskUniqueId);
} }
@@ -103,7 +120,7 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
dao.update(task); dao.update(task);
// Sys_local_process_instance_task instanceTask = dao.fetch(Sys_local_process_instance_task.class, Cnd.where("taskUniqueId", "=", taskUniqueId).and("processUniqueId", "=", processUniqueId)); Sys_local_process_instance_task instanceTask = dao.fetch(Sys_local_process_instance_task.class, Cnd.where("taskUniqueId", "=", taskUniqueId).and("processUniqueId", "=", processUniqueId));
// handleCpuCommonService.finishTask(instanceTask.getId() + taskUniqueId); // handleCpuCommonService.finishTask(instanceTask.getId() + taskUniqueId);
} }
} }
@@ -121,7 +138,7 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
} }
@Override @Override
public void refuseProcess(String processUniqueId,String nodeName) { public void refuseProcess(String processUniqueId, String nodeName) {
dao.update(Sys_local_process_instance.class, Chain.make("processInstanceStatus", 2).add("nodeName", nodeName), Cnd.where("processUniqueId", "=", processUniqueId)); dao.update(Sys_local_process_instance.class, Chain.make("processInstanceStatus", 2).add("nodeName", nodeName), Cnd.where("processUniqueId", "=", processUniqueId));
dao.update(Sys_local_process_instance_task.class, Chain.make("status", 2), Cnd.where("status", "=", 1).and("taskDeleteFlag", "=", 0).and("processUniqueId", "=", processUniqueId)); dao.update(Sys_local_process_instance_task.class, Chain.make("status", 2), Cnd.where("status", "=", 1).and("taskDeleteFlag", "=", 0).and("processUniqueId", "=", processUniqueId));
// handleCpuCommonService.finishProcessTask(processUniqueId); // handleCpuCommonService.finishProcessTask(processUniqueId);
@@ -152,6 +169,23 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService {
task.setStatus(1); task.setStatus(1);
dao.update(task, "status"); dao.update(task, "status");
} }
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void revokeTask(String processUniqueId, String taskNodeName) {
//待办撤回
List<Sys_local_process_instance_task> tasks = dao.query(Sys_local_process_instance_task.class, Cnd.where("processUniqueId", "=", processUniqueId)
.and("taskDeleteFlag", "=", 0)
.and("delFlag", "=", 0)
.limit(1, 2).desc("createdAt"));
if (ObjectUtil.isNotEmpty(tasks) && tasks.size() == 2) {
dao.update(Sys_local_process_instance_task.class, Chain.make("taskDeleteFlag", 1)
.add("delFlag", 1), Cnd.where("id", "=", tasks.get(0).getId()));
dao.update(Sys_local_process_instance_task.class, Chain.make("status", 1), Cnd.where("id", "=", tasks.get(1).getId()));
dao.update(Sys_local_process_instance.class,Chain.make("processInstanceStatus",1).add("nodeName",taskNodeName),Cnd.where("processUniqueId","=",processUniqueId));
}else{
throw new RuntimeException("无法撤回,请联系管理员!");
}
} }
} }