From c8d75e0b61d66b386b590c27cbaf66a1d0ffd56a Mon Sep 17 00:00:00 2001 From: Paidax Date: Fri, 22 Nov 2024 17:32:27 +0800 Subject: [PATCH] commit --- src/main/java/io/v/nutz/base/model/Audit.java | 27 ++++-- .../Sys_local_process_instance_task.java | 5 ++ .../sys/services/SysLocalProcessService.java | 8 ++ .../impl/SysLocalProcessServiceImpl.java | 82 +++++++++++++------ 4 files changed, 89 insertions(+), 33 deletions(-) diff --git a/src/main/java/io/v/nutz/base/model/Audit.java b/src/main/java/io/v/nutz/base/model/Audit.java index d26f760..b3b9495 100644 --- a/src/main/java/io/v/nutz/base/model/Audit.java +++ b/src/main/java/io/v/nutz/base/model/Audit.java @@ -5,19 +5,14 @@ package io.v.nutz.base.model; +import cn.hutool.json.JSONObject; import cn.wizzer.framework.base.model.BaseModel; import io.v.nutz.web.commons.utils.ShiroUtil; -import java.util.Date; -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.entity.annotation.*; import org.nutz.dao.interceptor.annotation.PrevInsert; +import java.util.Date; + @Table("audit") public class Audit extends BaseModel { @Column @@ -93,6 +88,20 @@ public class Audit extends BaseModel { ) 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() { return new Date(); } diff --git a/src/main/java/io/v/nutz/sys/models/Sys_local_process_instance_task.java b/src/main/java/io/v/nutz/sys/models/Sys_local_process_instance_task.java index 17f120c..b2532f2 100644 --- a/src/main/java/io/v/nutz/sys/models/Sys_local_process_instance_task.java +++ b/src/main/java/io/v/nutz/sys/models/Sys_local_process_instance_task.java @@ -121,4 +121,9 @@ public class Sys_local_process_instance_task extends BaseModel { @ColDefine(type = ColType.BOOLEAN) private Boolean taskDeleteFlag; + @Column + @Comment("上个任务ID") + @ColDefine(type = ColType.INT) + private Long prevTaskId; + } diff --git a/src/main/java/io/v/nutz/sys/services/SysLocalProcessService.java b/src/main/java/io/v/nutz/sys/services/SysLocalProcessService.java index 3679bcd..0c97f6f 100644 --- a/src/main/java/io/v/nutz/sys/services/SysLocalProcessService.java +++ b/src/main/java/io/v/nutz/sys/services/SysLocalProcessService.java @@ -107,4 +107,12 @@ public interface SysLocalProcessService { */ void revoke(String processUniqueId,String restoreTaskId); + + /** + * 撤销任务 + * + * @param processUniqueId 流程实例ID + * @param taskNodeName 撤回后的节点名称 不相等会抛出异常 + */ + void revokeTask(String processUniqueId, String taskNodeName); } diff --git a/src/main/java/io/v/nutz/sys/services/impl/SysLocalProcessServiceImpl.java b/src/main/java/io/v/nutz/sys/services/impl/SysLocalProcessServiceImpl.java index 8d62625..0bc543b 100644 --- a/src/main/java/io/v/nutz/sys/services/impl/SysLocalProcessServiceImpl.java +++ b/src/main/java/io/v/nutz/sys/services/impl/SysLocalProcessServiceImpl.java @@ -1,9 +1,9 @@ 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_task; import io.v.nutz.sys.services.SysLocalProcessService; -import io.v.nutz.web.commons.base.Globals; import io.v.nutz.zhgh.needhandlebycpu.service.HandleCpuCommonService; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @@ -21,6 +21,7 @@ import org.nutz.ioc.loader.annotation.IocBean; import java.util.Date; import java.util.List; +import java.util.Optional; @IocBean @AllArgsConstructor @@ -29,8 +30,8 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService { @Inject private Dao dao; -// @Inject -// private HandleCpuCommonService handleCpuCommonService; + @Inject + private HandleCpuCommonService handleCpuCommonService; @Override public void startProcess(String processName, String processUniqueId, String nodeName, String processInitiatorId, String pcUrl, String mobileUrl) { @@ -67,27 +68,43 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService { @Override public void createTask(String processUniqueId, String taskUniqueId, String taskNodeName, String createdById, List assignments, String formUrl, String formUrlView, String formMobileUrl, String formMobileUrlView) { - Sys_local_process_instance_task task = new Sys_local_process_instance_task(); - task.setProcessUniqueId(processUniqueId); - task.setTaskUniqueId(taskUniqueId); - task.setTaskNodeName(taskNodeName); + 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) + ); - task.setCreatedById(createdById); - Sql sql = Sqls.create("select username,loginname,unitname from `user` where id = @id").setParam("id", createdById); - Record creator = (Record) Daos.query(dao, sql.toString(), Sqls.callback.record()); - task.setCreatedByUserName(creator.getString("username")); - task.setCreatedByUserLoginName(creator.getString("loginname")); - task.setCreatedByDept(creator.getString("unitname")); + Sys_local_process_instance_task task = new Sys_local_process_instance_task(); + task.setProcessUniqueId(processUniqueId); + task.setTaskUniqueId(taskUniqueId); + task.setTaskNodeName(taskNodeName); - task.setAssignments(assignments); - task.setCreatedOn(new Date()); - task.setFormUrl(formUrl); - task.setFormUrlView(formUrlView); - task.setFormMobileUrl(formMobileUrl); - task.setFormMobileUrlView(formMobileUrlView); - task.setStatus(1); - task.setTaskDeleteFlag(false); - dao.insert(task); + task.setCreatedById(createdById); + Sql sql = Sqls.create("select username,loginname,unitname from `user` where id = @id").setParam("id", createdById); + Record creator = (Record) Daos.query(dao, sql.toString(), Sqls.callback.record()); + task.setCreatedByUserName(creator.getString("username")); + task.setCreatedByUserLoginName(creator.getString("loginname")); + task.setCreatedByDept(creator.getString("unitname")); + + task.setAssignments(assignments); + task.setCreatedOn(new Date()); + task.setFormUrl(formUrl); + task.setFormUrlView(formUrlView); + task.setFormMobileUrl(formMobileUrl); + task.setFormMobileUrlView(formMobileUrlView); + task.setStatus(1); + task.setTaskDeleteFlag(false); + task.setPrevTaskId(Optional.ofNullable(prevTask).map(Sys_local_process_instance_task::getId).orElse(null)); + dao.insert(task); + } // handleCpuCommonService.createExecTask(processUniqueId, taskUniqueId); } @@ -103,7 +120,7 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService { 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); } } @@ -121,7 +138,7 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService { } @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_task.class, Chain.make("status", 2), Cnd.where("status", "=", 1).and("taskDeleteFlag", "=", 0).and("processUniqueId", "=", processUniqueId)); // handleCpuCommonService.finishProcessTask(processUniqueId); @@ -152,6 +169,23 @@ public class SysLocalProcessServiceImpl implements SysLocalProcessService { task.setStatus(1); dao.update(task, "status"); } + } + @Override + @Aop(TransAop.READ_COMMITTED) + public void revokeTask(String processUniqueId, String taskNodeName) { + //待办撤回 + List 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("无法撤回,请联系管理员!"); + } } }