Compare commits
7 Commits
0b30837b8a
...
091ceb3619
| Author | SHA1 | Date | |
|---|---|---|---|
| 091ceb3619 | |||
| 6ce3ba89c6 | |||
| b82ee9bbe5 | |||
| 3c01a72dad | |||
| 9ac1584494 | |||
| a0e768d210 | |||
| c49f34d228 |
@@ -29,7 +29,7 @@ public interface BpmProcessInstanceCopyConvert {
|
|||||||
List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(),
|
List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(),
|
||||||
BpmProcessInstanceCopyPageItemRespVO.class,
|
BpmProcessInstanceCopyPageItemRespVO.class,
|
||||||
copy -> {
|
copy -> {
|
||||||
MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> user.setNickname(user.getNickname()));
|
MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> copy.setCreatorNickname(user.getNickname()));
|
||||||
MapUtils.findAndThen(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname()));
|
MapUtils.findAndThen(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname()));
|
||||||
MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName);
|
MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName);
|
||||||
MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName);
|
MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName);
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
package com.jeelowcode.service.bpm.controller.vo.instance;
|
package com.jeelowcode.service.bpm.controller.vo.instance;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 流程实例抄送的创建 Request VO")
|
@Schema(description = "管理后台 - 流程实例抄送的创建 Request VO")
|
||||||
@Data
|
@Data
|
||||||
public class BpmProcessInstanceCopyCreateReqVO {
|
public class BpmProcessInstanceCopyCreateReqVO {
|
||||||
@@ -17,4 +21,8 @@ public class BpmProcessInstanceCopyCreateReqVO {
|
|||||||
@NotBlank(message = "抄送原因不能为空")
|
@NotBlank(message = "抄送原因不能为空")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "抄送的用户编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2]")
|
||||||
|
@NotEmpty(message = "抄送用户不能为空")
|
||||||
|
private Collection<Long> options;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,6 @@ public class BpmProcessInstanceCopyMyPageReqVO extends PageParam {
|
|||||||
|
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime[] createTime;
|
private LocalDateTime[] searchCreateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInst
|
|||||||
.eqIfPresent(BpmProcessInstanceCopyDO::getUserId, loginUserId)
|
.eqIfPresent(BpmProcessInstanceCopyDO::getUserId, loginUserId)
|
||||||
.eqIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceId, reqVO.getProcessInstanceId())
|
.eqIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceId, reqVO.getProcessInstanceId())
|
||||||
.likeIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceName, reqVO.getProcessInstanceName())
|
.likeIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceName, reqVO.getProcessInstanceName())
|
||||||
.betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getSearchCreateTime())
|
||||||
.orderByDesc(BpmProcessInstanceCopyDO::getId));
|
.orderByDesc(BpmProcessInstanceCopyDO::getId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,15 @@ package com.jeelowcode.service.bpm.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
|
||||||
|
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
|
||||||
|
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.PortalTodoResponseDTO;
|
||||||
|
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO;
|
||||||
|
import com.jeelowcode.service.system.api.IApiAdminUserApi;
|
||||||
|
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
|
||||||
import com.jeelowcode.tool.framework.common.pojo.PageResult;
|
import com.jeelowcode.tool.framework.common.pojo.PageResult;
|
||||||
import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyCreateReqVO;
|
import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyCreateReqVO;
|
||||||
import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
|
import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyMyPageReqVO;
|
||||||
@@ -16,6 +23,7 @@ import com.jeelowcode.service.bpm.service.IBpmProcessInstanceCopyService;
|
|||||||
import com.jeelowcode.service.bpm.service.IBpmProcessInstanceService;
|
import com.jeelowcode.service.bpm.service.IBpmProcessInstanceService;
|
||||||
import com.jeelowcode.service.bpm.service.IBpmTaskService;
|
import com.jeelowcode.service.bpm.service.IBpmTaskService;
|
||||||
import com.jeelowcode.service.bpm.dto.BpmDelegateExecutionDTO;
|
import com.jeelowcode.service.bpm.dto.BpmDelegateExecutionDTO;
|
||||||
|
import com.jeelowcode.tool.framework.common.util.object.ObjectUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
@@ -29,9 +37,12 @@ import javax.annotation.Resource;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.jeelowcode.tool.framework.common.util.json.JsonUtils.toJsonString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程抄送 Service 实现类
|
* 流程抄送 Service 实现类
|
||||||
@@ -58,6 +69,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop
|
|||||||
@Resource
|
@Resource
|
||||||
@Lazy
|
@Lazy
|
||||||
private IBpmProcessInstanceService bpmProcessInstanceService;
|
private IBpmProcessInstanceService bpmProcessInstanceService;
|
||||||
|
@Lazy
|
||||||
|
@Resource
|
||||||
|
private IApiAdminUserApi apiAdminUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) {
|
public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) {
|
||||||
@@ -124,15 +138,48 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. 创建抄送流程
|
// 2. 创建抄送流程
|
||||||
BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO()
|
List<BpmProcessInstanceCopyDO> copyList =
|
||||||
.setTaskId(reqVO.getTaskId()).setTaskName(task.getName())
|
reqVO.getOptions().stream().map(singleUserId ->
|
||||||
.setProcessInstanceId(processInstanceId)
|
new BpmProcessInstanceCopyDO()
|
||||||
.setStartUserId(Long.valueOf(processInstance.getStartUserId()))
|
.setTaskId(reqVO.getTaskId()).setTaskName(task.getName())
|
||||||
.setUserId(userId)
|
.setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId()))
|
||||||
.setProcessInstanceName(processInstance.getName())
|
.setProcessInstanceName(processInstance.getName())
|
||||||
.setCategory(null) // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段?
|
.setUserId(singleUserId)
|
||||||
.setReason(reqVO.getReason());
|
.setCategory(null) // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段?
|
||||||
processInstanceCopyMapper.insert(copy);
|
.setReason(reqVO.getReason())
|
||||||
|
).collect(Collectors.toList());
|
||||||
|
processInstanceCopyMapper.insertBatch(copyList);
|
||||||
|
|
||||||
|
// 3.推送给待办系统
|
||||||
|
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
|
||||||
|
// 3.1 如果没有配置待办平台,则结束这个监听任务的执行
|
||||||
|
if (ObjectUtil.isNull(portalRequest)) return;
|
||||||
|
// 3.2 调用待办系统,发送待办消息
|
||||||
|
try {
|
||||||
|
copyList.stream().map(copy -> {
|
||||||
|
AdminUserRespDTO creatorUser = apiAdminUserApi.getUser(Long.parseLong(copy.getCreator()));
|
||||||
|
AdminUserRespDTO receiverUser = apiAdminUserApi.getUser(copy.getUserId());
|
||||||
|
AdminUserRespDTO startUser = apiAdminUserApi.getUser(copy.getStartUserId());
|
||||||
|
return new ReceiveCCRequestDTO()
|
||||||
|
.setFlowId(copy.getProcessInstanceId())
|
||||||
|
.setRequestName(copy.getProcessInstanceName() + "-" + startUser.getNickname() + "-" + DateUtil.formatDateTime(processInstance.getStartTime()))
|
||||||
|
.setWorkflowName(copy.getProcessInstanceName())
|
||||||
|
.setNodeName(copy.getTaskName())
|
||||||
|
.setPcUrl("/process-instance/detail?id=" + copy.getProcessInstanceId())
|
||||||
|
.setCreator(creatorUser.getUsername())
|
||||||
|
.setCreateDateTime(copy.getCreateTime())
|
||||||
|
.setReceiver(receiverUser.getUsername())
|
||||||
|
.setReceiveDateTime(copy.getCreateTime())
|
||||||
|
.setReceiveTs(System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
).forEach(request -> {
|
||||||
|
PortalTodoResponseDTO response = portalRequest.receiveCCRequest(request);
|
||||||
|
log.info("[taskCompleted][推送待办成功 response({})]", toJsonString(response));
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("[createProcessInstanceCopy][推送待办失败]", e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user