update 工作中心 强制撤销

This commit is contained in:
lijiarao
2023-10-19 16:01:43 +08:00
parent 8140ed1a12
commit d2858d4f5f
7 changed files with 83 additions and 21 deletions
@@ -89,6 +89,19 @@ public class WorkCenterController {
return Result.OK(sentList);
}
@ApiOperation(value = "查询全部流程")
@GetMapping("/getAllList")
public Result<?> getAllList(ProcessAll processAll,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessAll> queryWrapper = getProcessAllQueryWrapper(processAll);
Page<ProcessAll> page = new Page<>(pageNo, pageSize);
IPage<ProcessAll> sentList = processAllService.getAllList(page, queryWrapper);
return Result.OK(sentList);
}
@NotNull
private QueryWrapper<ProcessAll> getProcessAllQueryWrapper(ProcessAll processAll) {
String prcName = processAll.getPrcName();
@@ -105,7 +118,7 @@ public class WorkCenterController {
return queryWrapper;
}
@ApiOperation(value = "撤销流程")
@ApiOperation(value = "强制撤销")
@PostMapping("/delete")
public Result<?> delete(@RequestBody Map<String, String> map) {
String processInstanceId = map.get("processInstanceId");
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.enums;
import com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -13,11 +14,13 @@ public enum ProcessTypeEnum {
/**
* A
*/
A("企标制修订流程", 1,"Process_17bj7d9");
A("企标制修订流程", 1, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl"),
B("企标立项变更流程",2, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl"),
;
private String name;
private Integer value;
private String key;
private String implClass;
public static String getNameByValue(Integer value) {
for (ProcessTypeEnum enumObject : values()) {
@@ -28,9 +31,18 @@ public enum ProcessTypeEnum {
return null;
}
public static Integer getValueByKey(String key) {
public static String getClassByValue(Integer value) {
for (ProcessTypeEnum enumObject : values()) {
if (enumObject.getKey().equals(key)) {
if (enumObject.getValue().equals(value)) {
return enumObject.getImplClass();
}
}
return null;
}
public static Integer getValueByName(String name) {
for (ProcessTypeEnum enumObject : values()) {
if (enumObject.getName().equals(name)) {
return enumObject.getValue();
}
}
@@ -1,24 +1,16 @@
package com.jero.modules.activiti.listener;
import java.util.List;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.util.SpringContextUtil;
import org.activiti.bpmn.model.ActivitiListener;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.engine.*;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.ExecutionListener;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.NativeProcessInstanceQuery;
import org.activiti.engine.runtime.ProcessInstance;
/**
* @author liJiaRao
@@ -45,7 +37,7 @@ public class StartListener implements ExecutionListener {
//新增流程总表信息(剩余的内容在启动流程时填充)
ProcessAll processAll = new ProcessAll();
processAll.setProcessInstanceId(processInstanceId);
processAll.setPrcType(ProcessTypeEnum.getValueByKey(key));
processAll.setPrcType(ProcessTypeEnum.getValueByName(name));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
processAllService.save(processAll);
}
@@ -19,4 +19,6 @@ public interface ProcessAllMapper extends BaseMapper<ProcessAll> {
IPage<ProcessAll> getCompletedList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
IPage<ProcessAll> getSentList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
IPage<ProcessAll> getAllList(Page<ProcessAll> page, @Param(Constants.WRAPPER) QueryWrapper<ProcessAll> queryWrapper);
}
@@ -17,7 +17,7 @@
${ew.customSqlSegment}
) p
left join process_approval_record par on p.process_instance_id = par.process_instance_id
WHERE par.finish_flag = 0
WHERE par.finish_flag = 0 or par.id is null
group by p.process_instance_id
</select>
@@ -30,7 +30,20 @@
${ew.customSqlSegment}
) p
left join process_approval_record par on p.process_instance_id = par.process_instance_id
WHERE par.finish_flag = 0
WHERE par.finish_flag = 0 or par.id is null
group by p.process_instance_id
</select>
<select id="getAllList" resultType="com.jero.modules.activiti.entity.ProcessAll">
select p.*, group_concat(par.user_id) as handleUserId
from (
select pa.*, max(par.create_time) as receivedTaskTime, max(par.end_time) as completedTaskTime
from process_all pa
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
${ew.customSqlSegment}
) p
left join process_approval_record par on p.process_instance_id = par.process_instance_id
WHERE par.finish_flag = 0 or par.id is null
group by p.process_instance_id
</select>
</mapper>
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
import org.activiti.engine.RuntimeService;
import org.springframework.stereotype.Service;
@@ -46,13 +47,29 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
}
public void delete(String processInstanceId) {
runtimeService.deleteProcessInstance(processInstanceId,"撤销");
LambdaQueryWrapper<ProcessAll> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
this.remove(wrapper);
//activiti撤销
runtimeService.deleteProcessInstance(processInstanceId,"强制撤销");
//获得流程总表
ProcessAll processAll = getByProcessInstanceId(processInstanceId);
//删除流程总表
this.removeById(processAll.getId());
//删除审批表
LambdaQueryWrapper<ProcessApprovalRecord> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
processApprovalRecordMapper.delete(wrapper1);
//业务表修改为草稿
Integer prcType = processAll.getPrcType();
WorkCenterService classByValue = null;
try {
classByValue = (WorkCenterService) Class.forName(ProcessTypeEnum.getClassByValue(prcType)).newInstance();
}catch (Exception e) {
log.error(e.getMessage(),e);
}
classByValue.changeToDraft(processAll.getProjectId());
//todo 同步删除操作到统一待办
}
public IPage<ProcessAll> getAllList(Page<ProcessAll> page, QueryWrapper<ProcessAll> queryWrapper) {
return processAllMapper.getAllList(page,queryWrapper);
}
}
@@ -0,0 +1,13 @@
package com.jero.modules.activiti.service;
/**
* @author liJiaRao
* @date 2023-10-19 15:22
*/
public interface WorkCenterService {
/**
* 更改业务表为草稿
* @param id
*/
void changeToDraft(String id);
}