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;
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();
}
@@ -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;
}
@@ -107,4 +107,12 @@ public interface SysLocalProcessService {
*/
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;
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<String> 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<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("无法撤回,请联系管理员!");
}
}
}