Commit 196baf06 authored by chenzhao's avatar chenzhao

迁移工具类

parent eb0b9a8a
package com.yeejoin.amos.boot.module.jyjc.api.model;
import lombok.Data;
@Data
public class TaskMessageDto {
/**
* 流程实例id
*/
String instanceId;
/**
* 流程状态
*/
String status;
/**
* 上一步操作人id
*/
String promoter;
/**
* 下个节点可操作人ids
*/
String nextExecuteUserIds;
/**
* 业务数据id
*/
Long sequenceNbr;
/**
* 下个节点可操作角色ids
*/
String nextExecuteIds;
/**
* 移装/安装 告知状态
*/
String noticeStatus;
/**
* 登记 告知状态
*/
String auditStatus;
/**
* 设备移交
*/
String applyStatus;
/**
* 流程创建(发起)人
*/
String createUserId;
/**
* 设备id、使用登记使用
*/
String equipId;
}
package com.yeejoin.amos.boot.module.jyjc.api.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Administrator
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TaskModelDto {
/**
* 工作流创建时间
*/
private Date flowCreateDate;
/**
* 工作流返回节点名称
*/
private String taskName;
/**
* 任务编号 可以使用申请单编号
*/
private String taskCode;
/**
* 流程任务ID
*/
private String flowCode;
/**
* 统一定义的枚举code 例如 6612 待受理
*/
private Integer flowStatus;
/**
* 统一定义的枚举code 例如 6612 待受理
*/
private String flowStatusLabel;
/**
* 摘要-来源
*/
private String taskContent;
/**
* 描述-非必输
*/
private String taskDesc;
/**
* 任务类型 从BusinessTypeEnum中获取自己对应类型code
**/
private String taskType;
/**
* 任务类型名称 汉字 从BusinessTypeEnum中获取自己对应类型名称
**/
private String taskTypeLabel;
/***
* 关联id 传工作流实例id
* */
private String relationId;
/**
* 执行人id 从工作流中获取
**/
private String executeUserIds;
/**
* 任务状态 操作名称 0 待处理 1驳回 2通过 3重新提交
*/
private Integer taskStatus;
/**
* 任务状态 操作名称 0 待处理 1驳回 2通过 3重新提交
*/
private String taskStatusLabel;
/**
* 任务发起人id 不变 第一次提交的人
* 从业务表中 created_uesr_id
*/
private String startUserId;
/**
* 任务发起人名称 不变
* 名字
*/
private String startUser;
/**
* 任务发起人所在单位 不变
*/
private String startUserCompanyName;
/**
* 任务发起人发起时间 不变
*/
private Date startDate;
/**
* 跳转路径
*/
private String routePath;
/**
* 当前业务实体对象
*/
private Object model;
/**
* 下一节点执行角色
*/
private String nextExecuteUser;
/**
* 是否跳转编辑页面
* */
private String pageType;
}
package com.yeejoin.amos.boot.module.jyjc.api.model;
import lombok.Data;
@Data
public class WorkflowResultDto {
/**
* WORKFLOW实例ids
* */
String instanceId;
/**
* 执行人角色
* */
String executorRoleIds;
String startUserId;
String startUserName;
String executorId;
String executorName;
/**
* 下一步执行人角色
* */
String nextExecutorRoleIds;
String nextTaskId;
/**
* 下一步执行人用户id 待办用
* */
String nextExecutorUserIds;
/**
* 当前节点任务名称
* */
String taskName;
/**
* 下一节点任务名称
* */
String nextTaskName;
/**
*
* 下一节点code
*/
String nextTaskCode;
}
package com.yeejoin.amos.boot.module.jyjc.biz.config;
import org.typroject.tyboot.core.foundation.exception.BaseException;
public class LocalBadRequest extends BaseException {
public LocalBadRequest(String message)
{
super(message, com.yeejoin.amos.component.robot.BadRequest.class.getSimpleName(),message);
this.httpStatus = 500;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import java.util.List;
/**
* @author Administrator
*/
public interface ICmWorkflowService {
List<ProcessTaskDTO> startBatch(ActWorkflowBatchDTO params);
ProcessTaskDTO complete(String taskId, TaskResultDTO data);
ProcessTaskDTO rollBack(String processInstanceId);
}
package com.yeejoin.amos.boot.module.jyjc.biz.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.IDataDictionaryService;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.TaskModelDto;
import com.yeejoin.amos.boot.module.jyjc.api.model.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActTaskDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
public class TaskModelServiceImpl {
@Autowired
private RedisUtils redisUtils;
@Autowired
IDataDictionaryService iDataDictionaryService;
@Value("classpath:/json/bizTypeInfo.json")
private Resource urlInfo;
public void deleteTaskModel(String id) {
List<TaskV2Model> result = Systemctl.taskV2Client.selectListByRelationId(id).getResult();
if (result.size() >0 ){
List<Long> idList= result.stream().map(TaskV2Model::getSequenceNbr).collect(Collectors.toList());
String ids = idList.stream().map(Object::toString).collect(Collectors.joining(","));
Systemctl.taskV2Client.delete(ids);
}
}
/**
* 待办新增接口
**/
public void buildTaskModel(List<TaskModelDto> list) {
List<TaskV2Model> taskV2Models = new ArrayList<>();
for (TaskModelDto obj : list) {
//判断是否是暂存 新增若无下一节点执行人即为暂存
boolean flag = StringUtils.isEmpty(obj.getNextExecuteUser())? true:false;
if (flag){
List<TaskV2Model> result = Systemctl.taskV2Client.selectListByRelationId(obj.getRelationId()).getResult();
if (CollectionUtil.isNotEmpty(result) && result.size() > 0){
break;
}
}
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
TaskV2Model model = new TaskV2Model();
BeanUtil.copyProperties(obj, model);
String urlParams = "";
try {
urlParams = "&" + toQueryParams(obj.getModel());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
List<Map> urlList = JsonUtils.getResourceList(urlInfo);
for (Map map : urlList) {
//获取暂存的可编辑页面url
if (flag && map.get("type").equals(obj.getTaskType())
&& map.get("pageType").equals("draft")){
model.setRoutePath(map.get("url").toString()+ urlParams );
break;
}
//其他逻辑均按详情页面获取
else if (map.get("type").equals(obj.getTaskType())
&& map.get("pageType").equals(null == obj.getPageType()?"look":obj.getPageType())) {
model.setRoutePath(map.get("url").toString().replace("{roleIds}", obj.getNextExecuteUser()) + urlParams + "&nextExecuteUserIds=" + model.getExecuteUserIds());
break;
}
}
//是true则为暂存 除公共部分统一处理
if (flag){
model.setFlowStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode());
model.setFlowStatusLabel(FlowStatusEnum.TO_BE_SUBMITTED.getName());
model.setStartUserId(RequestContext.getExeUserId());
model.setStartUser(reginParams.getUserModel().getRealName());
model.setStartUserCompanyName(reginParams.getCompany().getCompanyName());
model.setStartDate(new Date());
model.setExecuteUserIds(RequestContext.getExeUserId());
model.setFlowCreateDate(new Date());
model.setTaskStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode());
model.setTaskTitle("有一条待提交的草稿");
model.setTaskName(BizTypeEnum.getNameByCode(obj.getTaskType()));
model.setTaskTypeLabel(BizTypeEnum.getNameByCode(obj.getTaskType()));
// model.setTaskContent("【申请单号:"+obj.getTaskCode()+"】待提交");
}else {
model.setTaskStatus(0);
model.setTaskTitle(obj.getStartUser() + "发起了" + obj.getTaskName());
}
model.setFlowInstanceId(model.getRelationId());
model.setTaskSource("workFlow");
model.setExtras(JSON.toJSONString(obj.getModel()));
// model.setTerminal(params.getOrDefault("terminal","WEB").toString());
model.setCreateDate(new Date());
model.setRecUserId(RequestContext.getExeUserId());
model.setAgencyCode(RequestContext.getAgencyCode());
taskV2Models.add(model);
}
Systemctl.taskV2Client.batchAdd(taskV2Models);
}
/**
* 待办编辑接口
* 参数
* taskStatus
* taskStatusLabel 操作名称 6614驳回 6616已完成 6612待受理
* flowStatusLabel 任务状态枚举code
* 流程实例id instanceId
* flowCode 任务id
**/
public TaskV2Model updateTaskModel(Map<String, Object> params) {
String exeUserId = RequestContext.getExeUserId();
List<TaskV2Model> result = Systemctl.taskV2Client.selectListByRelationId(params.get("relationId").toString()).getResult();
List<TaskV2Model> collect = result.stream().sorted((r1, r2) -> r2.getSequenceNbr().compareTo(r1.getSequenceNbr())).collect(Collectors.toList());
if (collect == null || collect.size() == 0) {
return null;
}
collect.get(0).setFlowStatus(Integer.valueOf(params.get("flowStatus").toString()));
collect.get(0).setFlowStatusLabel(params.get("flowStatusLabel").toString());
collect.get(0).setTaskStatus(Integer.valueOf(params.get("taskStatus").toString()));
collect.get(0).setTaskStatusLabel(params.get("taskStatusLabel").toString());
collect.get(0).setEndUserId(exeUserId);
collect.get(0).setEndDate(new Date());
// String[] roleIds = model.getRoutePath().split("roleIds=");
// String[] userIds = roleIds[1].split("&userId");
// String url = roleIds[0]+"roleIds="+"55555"+"&userId"+ userIds[1];
// String tarUrl = url.replaceFirst("&executeUserIds=", "");
// tarUrl+"&executeUserIds="
// model.setRoutePath( roleIds[0]+"roleIds="+"55555"+"&userId"+userIds[1]);
//当流程完成时将所有待办状态统一修改为已完成
if (collect.get(0).getFlowStatusLabel().equals(FlowStatusEnum.TO_BE_FINISHED.getName())) {
String urlParams = "";
try {
urlParams = "&" + toQueryParams(params.get("model"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
List<Map> urlList = JsonUtils.getResourceList(urlInfo);
for (Map map : urlList) {
if (map.get("type").equals(collect.get(0).getTaskType()) && map.get("pageType").equals("look")) {
urlParams = map.get("url").toString().replace("{roleIds}", "") + urlParams + "&nextExecuteUserIds=";
break;
}
}
collect.get(0).setRoutePath(urlParams);
for (TaskV2Model taskV2Model : collect) {
taskV2Model.setTaskStatusLabel((FlowStatusEnum.TO_BE_FINISHED.getName()));
taskV2Model.setTaskStatus(FlowStatusEnum.TO_BE_FINISHED.getCode());
taskV2Model.setFlowStatusLabel((FlowStatusEnum.TO_BE_FINISHED.getName()));
taskV2Model.setFlowStatus(FlowStatusEnum.TO_BE_FINISHED.getCode());
}
Systemctl.taskV2Client.batchUpdate(collect);
} else {
collect.get(0).setRoutePath(collect.get(0).getRoutePath().replace("roleIds=", "roleIds=55555&fq="));
Systemctl.taskV2Client.update(collect.get(0), collect.get(0).getSequenceNbr());
}
//修改model并返回 用于组装新待办
collect.get(0).setEndUserId(null);
collect.get(0).setTaskStatus(null);
collect.get(0).setEndDate(null);
collect.get(0).setSequenceNbr(null);
collect.get(0).setCreateDate(new Date());
collect.get(0).setStartDate(new Date());
return collect.get(0);
}
/**
* 待办编辑接口 【如果没有代办直接返回空,业务判断】 ---- 在用,误删
* 参数
* taskStatus
* taskStatusLabel 操作名称 1驳回 2通过 3重新提交
* flowStatusLabel 任务状态枚举code
* 流程实例id instanceId
* flowCode 任务id
**/
public TaskV2Model updateTaskModelNew(Map<String, Object> params) {
String exeUserId = RequestContext.getExeUserId();
List<TaskV2Model> result = Systemctl.taskV2Client.selectListByRelationId(params.get("relationId").toString()).getResult();
// TaskV2Model model = result.stream().filter(e->e.getFlowCode().equals(params.get("flowCode").toString())).sorted((r1, r2) -> r2.getSequenceNbr().compareTo(r2.getSequenceNbr())) // 按时间降序排序
// .findFirst()
// .orElse(null);
List<TaskV2Model> collect = result.stream().sorted((r1, r2) -> r2.getSequenceNbr().compareTo(r1.getSequenceNbr())).collect(Collectors.toList());
if (null == collect || collect.size() == 0) {
TaskV2Model model = new TaskV2Model();
model.setFlowStatus(Integer.valueOf(params.get("flowStatus").toString()));
model.setFlowStatusLabel(params.get("flowStatusLabel").toString());
model.setTaskStatus(Integer.valueOf(params.get("taskStatus").toString()));
model.setTaskStatusLabel(params.get("taskStatusLabel").toString());
return model;
}
collect.get(0).setFlowStatus(Integer.valueOf(params.get("flowStatus").toString()));
collect.get(0).setFlowStatusLabel(params.get("flowStatusLabel").toString());
collect.get(0).setTaskStatus(Integer.valueOf(params.get("taskStatus").toString()));
collect.get(0).setTaskStatusLabel(params.get("taskStatusLabel").toString());
collect.get(0).setEndUserId(exeUserId);
collect.get(0).setEndDate(new Date());
//当流程完成时将所有待办状态统一修改为已完成
if (collect.get(0).getFlowStatusLabel().equals(FlowStatusEnum.TO_BE_FINISHED.getName())) {
String urlParams = "";
try {
urlParams = "&" + toQueryParams(params.get("model"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
List<Map> urlList = JsonUtils.getResourceList(urlInfo);
for (Map map : urlList) {
if (map.get("type").equals(collect.get(0).getTaskType()) && map.get("pageType").equals("look")) {
urlParams = map.get("url").toString().replace("{roleIds}", "") + urlParams + "&nextExecuteUserIds=";
break;
}
}
collect.get(0).setRoutePath(urlParams);
for (TaskV2Model taskV2Model : collect) {
taskV2Model.setTaskStatusLabel((FlowStatusEnum.TO_BE_FINISHED.getName()));
taskV2Model.setTaskStatus(FlowStatusEnum.TO_BE_FINISHED.getCode());
taskV2Model.setFlowStatusLabel((FlowStatusEnum.TO_BE_FINISHED.getName()));
taskV2Model.setFlowStatus(FlowStatusEnum.TO_BE_FINISHED.getCode());
}
Systemctl.taskV2Client.batchUpdate(collect);
} else {
collect.get(0).setRoutePath(collect.get(0).getRoutePath().replace("roleIds=", "roleIds=55555&fq="));
Systemctl.taskV2Client.update(collect.get(0), collect.get(0).getSequenceNbr());
}
collect.get(0).setEndUserId(null);
collect.get(0).setTaskStatus(null);
collect.get(0).setEndDate(null);
collect.get(0).setSequenceNbr(null);
collect.get(0).setCreateDate(new Date());
collect.get(0).setStartDate(new Date());
return collect.get(0);
}
/**
* 待办 撤回
*
* @param id 工作流实例id
* @param obj 自己的实体:taskType为BusinessTypeEnum code;nextExecuteUser
*/
public void rollbackTask(String id, JSONObject obj) {
List<TaskV2Model> result = Systemctl.taskV2Client.selectListByRelationId(id).getResult();
List<TaskV2Model> list = result.stream().sorted((r1, r2) -> r2.getSequenceNbr().compareTo(r1.getSequenceNbr())).collect(Collectors.toList());
TaskV2Model model = list.get(0);
Systemctl.taskV2Client.delete(String.valueOf(model.getSequenceNbr()));
String urlParams = "";
urlParams = "&" + toQueryParams2(obj);
List<Map> urlList = JsonUtils.getResourceList(urlInfo);
if (list.size() > 1) {
TaskV2Model lastTaskModel = list.get(1);
lastTaskModel.setEndUserId(null);
lastTaskModel.setEndDate(null);
lastTaskModel.setTaskStatus(0);
lastTaskModel.setTaskStatusLabel("待处理");
lastTaskModel.setFlowCode(obj.get("nextTaskId").toString());
if (obj.get("flowStatus") != null) {
lastTaskModel.setFlowStatus(Integer.valueOf(obj.get("flowStatus").toString()));
}
if (obj.get("flowStatusLabel") != null) {
lastTaskModel.setFlowStatusLabel(obj.get("flowStatusLabel").toString());
}
for (Map map : urlList) {
if (map.get("type").equals(obj.get("taskType")) && map.get("pageType").equals(obj.getOrDefault("pageType","edit"))) {
lastTaskModel.setRoutePath(map.get("url").toString().replace("{roleIds}", obj.get("nextExecuteUser").toString()) + urlParams);
break;
}
}
Systemctl.taskV2Client.update(lastTaskModel, lastTaskModel.getSequenceNbr());
}else if (list.size() == 1) {
model.setExecuteUserIds(model.getStartUserId());
model.setTaskStatusLabel("重新提交");
model.setTaskStatus(FlowStatusEnum.TO_SUBMITTED.getCode());
model.setSequenceNbr(null);
if (obj.get("flowStatus") != null) {
model.setFlowStatus(Integer.valueOf(obj.get("flowStatus").toString()));
}
if (obj.get("flowStatusLabel") != null) {
model.setFlowStatusLabel(obj.get("flowStatusLabel").toString());
}
for (Map map : urlList) {
if (map.get("type").equals(obj.get("taskType")) && map.get("pageType").equals("edit")) {
model.setRoutePath(map.get("url").toString().replace("{roleIds}", obj.get("nextExecuteUser").toString()) + urlParams);
break;
}
}
Systemctl.taskV2Client.create(model);
}
}
private static String toQueryParams2(JSONObject jsonObject) {
StringBuilder sb = new StringBuilder();
Set<String> keys = jsonObject.keySet();
keys.forEach(key->{
Object value = jsonObject.get(key);
if (sb.length() > 0) {
sb.append('&');
}
try {
if(value != null && !"".equals(value)){
sb.append(URLEncoder.encode(key, "UTF-8"))
.append('=')
.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
});
return sb.toString();
}
public <T> String toQueryParams(T obj) throws UnsupportedEncodingException {
StringBuilder sb = new StringBuilder();
for (Class<?> clazz = obj.getClass(); !clazz.equals(Object.class); clazz = clazz.getSuperclass()) {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (!Modifier.isStatic(field.getModifiers())) {
field.setAccessible(true);
try {
Object value = field.get(obj);
if (value != null && !"".equals(value)) {
String encodedValue = URLEncoder.encode(value.toString(), "UTF-8");
sb.append(field.getName()).append('=').append(encodedValue).append('&');
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
}
return sb.length() > 0 ? sb.substring(0, sb.length() - 1) : "";
}
/**
* 根据流程状态name 获取流程状态code
*
* @param name 流程状态name
* @return 流程状态code
*/
public Integer getDictionaryCodeByName(String name) {
List<DataDictionary> jggzzz = iDataDictionaryService.getByType("JGGZZZ");
for (DataDictionary item : jggzzz) {
if (item.getName().equals(name)) {
return Integer.parseInt(item.getCode());
}
}
return null;
}
/**
* 根据工作流返回信息,组装业务需要的数据
*
* @param processTaskDTOS 工作流返回信息
* @return 组装后的信息
*/
public List<WorkflowResultDto> buildWorkFlowInfo(List<ProcessTaskDTO> processTaskDTOS) {
List<WorkflowResultDto> workflowResultDtoList = new ArrayList<>();
processTaskDTOS.forEach(item -> {
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
if (!ObjectUtils.isEmpty(item.getProcessInstance())) {
workflowResultDto.setInstanceId(item.getProcessInstance().getId());
}
if (!ObjectUtils.isEmpty(item.getTask())) {
workflowResultDto.setTaskName(item.getTask().getName());
}
if (!ObjectUtils.isEmpty(item.getCandidateGroups())) {
workflowResultDto.setExecutorRoleIds(String.join(",", item.getCandidateGroups()));
}
if (!ObjectUtils.isEmpty(item.getStartUser())) {
workflowResultDto.setStartUserId(item.getStartUser().getUserId());
workflowResultDto.setStartUserName(item.getStartUser().getRealName());
}
if (!ObjectUtils.isEmpty(item.getExecutor())) {
workflowResultDto.setExecutorId(item.getExecutor().getUserId());
workflowResultDto.setExecutorName(item.getExecutor().getRealName());
}
if (!CollectionUtils.isEmpty(item.getNextTask())) {
ActTaskDTO actTaskDTO = item.getNextTask().get(0);
workflowResultDto.setNextTaskId(actTaskDTO.getId());
workflowResultDto.setNextTaskCode(actTaskDTO.getKey());
workflowResultDto.setNextTaskName(actTaskDTO.getName());
List<String> nextGroups = item.getNextCandidateGroups().get(actTaskDTO.getId());
String join = String.join(",", nextGroups);
workflowResultDto.setNextExecutorRoleIds(join);
List<String> nextUserIds = item.getNextTaskExecutor().get(actTaskDTO.getId()).stream().map(AgencyUserModel::getUserId).collect(Collectors.toList());
String nextUserIdsString = String.join(",", nextUserIds);
workflowResultDto.setNextExecutorUserIds(nextUserIdsString);
}
workflowResultDtoList.add(workflowResultDto);
});
return workflowResultDtoList;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jyjc.biz.config.LocalBadRequest;
import com.yeejoin.amos.boot.module.jyjc.biz.service.ICmWorkflowService;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author Administrator
*/
@Service
@Slf4j
public class CmWorkflowServiceImpl implements ICmWorkflowService {
@Override
public List<ProcessTaskDTO> startBatch(ActWorkflowBatchDTO params) {
List<ProcessTaskDTO> processTasks;
try {
log.info("开始请求工作流启动接口:/start/batch,请求参数:{}", JSONObject.toJSONString(params));
processTasks = Workflow.taskV2Client.startForBatch(params).getResult();
} catch (InnerInvokException e) {
//拦截无审核人异常信息
String devMessage = e.getDevMessage();
devMessage = devMessage.contains(";") ? devMessage.split(";")[0] : devMessage;
log.error(devMessage);
throw new LocalBadRequest(devMessage);
} catch (Exception e) {
log.error("调用工作流批量启动失败", e);
throw new RuntimeException("调用工作流批量启动失败");
}
return processTasks;
}
@Override
public ProcessTaskDTO complete(String taskId, TaskResultDTO data) {
ProcessTaskDTO processTaskDTO;
try {
log.info("开始请求工作流完成任务接口:/complete/standard/{taskId},请求参数:{},{}", taskId, JSONObject.toJSONString(data));
processTaskDTO = Workflow.taskV2Client.completeByTaskFroStandard(taskId, data).getResult();
} catch (InnerInvokException e) {
//拦截无审核人异常信息
String devMessage = e.getDevMessage();
devMessage = devMessage.contains(";") ? devMessage.split(";")[0] : devMessage;
log.error(devMessage);
throw new LocalBadRequest(devMessage);
} catch (Exception e) {
log.error("调用工作流完成任务接口失败", e);
throw new RuntimeException("调用工作流完成任务接口失败");
}
return processTaskDTO;
}
@Override
public ProcessTaskDTO rollBack(String processInstanceId) {
log.info("开始请求工作流撤回接口:/rollBack/standard/{processInstanceId},请求参数:{}", processInstanceId);
return FeignUtil.remoteCall(() -> Workflow.taskV2Client.rollBackTask(processInstanceId));
}
}
......@@ -6,8 +6,11 @@ import org.springframework.core.io.Resource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import static com.alibaba.fastjson.JSON.parseArray;
public class JsonUtils {
//将json文件转化为Map<list<Map<>>>
......@@ -20,4 +23,18 @@ public class JsonUtils {
}
return JSONObject.parseObject(json, Map.class);
}
//将json文件转化为List<Map>
public static List<Map> getResourceList(Resource resource) {
String json = null;
try {
json = IOUtils.toString(resource.getInputStream(), String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException(resource + "json文件转化失败");
}
List<Map> list = parseArray(json, Map.class);
return list;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment