|
|
|
|
@ -71,29 +71,19 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
|
|
|
|
|
@Autowired |
|
|
|
|
private FlowConfig flowConfig; |
|
|
|
|
|
|
|
|
|
public MailFlowDetail getMailFlowDetail(String mailId, Integer workId) { |
|
|
|
|
public MailFlowDetail getMailFlowDetailByWork(String mailId) { |
|
|
|
|
MailSource mailSource = mailSourceService.getById(mailId); |
|
|
|
|
Flow flow = null; |
|
|
|
|
Flow flow; |
|
|
|
|
Mail mail; |
|
|
|
|
MailFlowDetail flowDetail = new MailFlowDetail(); |
|
|
|
|
Work work = workService.getById(workId); |
|
|
|
|
if (!mailSource.getSignFlag()) { |
|
|
|
|
flow = SpringUtil.getBean(FirstSignFlow.class); |
|
|
|
|
mail = mailSource.toMail(); |
|
|
|
|
// 将流程开始时间设置为
|
|
|
|
|
mail.setFlowLimitedLastHandlerTime(mailSource.getCreateTime()); |
|
|
|
|
} else { |
|
|
|
|
mail = getById(mailId); |
|
|
|
|
if (!FlowNodeEnum.COMPLETION.getKey().equals(mail.getFlowKey())) { |
|
|
|
|
flow = flowNodes.stream() |
|
|
|
|
.filter(item -> mail.getFlowKey().equals(item.getFlowNode().getKey())) |
|
|
|
|
.findFirst().orElseThrow(() -> new BusinessException("没有该流程节点")); |
|
|
|
|
} |
|
|
|
|
if (!work.getMainDeptFlag()) { |
|
|
|
|
flow = flowNodes.stream() |
|
|
|
|
.filter(item -> work.getFlowKey().equals(item.getFlowNode().getKey())) |
|
|
|
|
.findFirst().orElseThrow(() -> new BusinessException("没有该流程节点")); |
|
|
|
|
} |
|
|
|
|
flow = flowNodes.stream() |
|
|
|
|
.filter(item -> mail.getFlowKey().equals(item.getFlowNode().getKey())) |
|
|
|
|
.findFirst().orElse(null); |
|
|
|
|
} |
|
|
|
|
MailVo mailVo = MailVo.of(mail); |
|
|
|
|
|
|
|
|
|
@ -136,7 +126,7 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
|
|
|
|
|
flowDetail.setApprovals(approvalVos); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!FlowNodeEnum.COMPLETION.getKey().equals(mail.getFlowKey())) { |
|
|
|
|
if (Objects.nonNull(flow)) { |
|
|
|
|
FlowNode flowNode = flow.getFlowNode(); |
|
|
|
|
int limitedTime = flowNode.getLimitedTime().intValue(); |
|
|
|
|
if (Objects.nonNull(mail.getExtensionFlag()) && mail.getExtensionFlag()) { |
|
|
|
|
@ -151,8 +141,7 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
|
|
|
|
|
.setFlowRemainingTime(flowRemainingTime) |
|
|
|
|
.setFlowLimitedTime(limitedTime); |
|
|
|
|
flowDetail.setFlowNode(flowNode).setActions(flow.getActions()); |
|
|
|
|
// 如果是会签中
|
|
|
|
|
} else { |
|
|
|
|
} else { // 如果是会签中
|
|
|
|
|
flowDetail.setFlowNode(flowNodeService.getById(mail.getFlowKey())); |
|
|
|
|
} |
|
|
|
|
List<String> flowNodes = Arrays.asList(FlowNodeEnum.SECOND_APPROVAL.getKey()); |
|
|
|
|
@ -169,10 +158,20 @@ public class MailService extends ServiceImpl<MailMapper, Mail> {
|
|
|
|
|
long mainDeptSignTime = flows.stream().filter(item -> item.getFlowKey().contains("_sign") || item.getFlowKey().contains("_distribute")).mapToLong(MailFlow::getConsumingTime).sum(); |
|
|
|
|
mailVo.setMainDeptSignTime(mainDeptSignTime); |
|
|
|
|
} |
|
|
|
|
return flowDetail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public MailFlowDetail getMailFlowDetailByWork(String mailId, Integer workId) { |
|
|
|
|
MailFlowDetail mailDetail = getMailFlowDetailByWork(mailId); |
|
|
|
|
Work work = workService.getById(workId); |
|
|
|
|
if (!work.getMainDeptFlag()) { |
|
|
|
|
mailVo.setSecondaryResponsibleFlag(true); |
|
|
|
|
Flow flow = flowNodes.stream() |
|
|
|
|
.filter(item -> work.getFlowKey().equals(item.getFlowNode().getKey())) |
|
|
|
|
.findFirst().orElseThrow(() -> new BusinessException("没有该流程节点")); |
|
|
|
|
mailDetail.setFlowNode(flow.getFlowNode()); |
|
|
|
|
mailDetail.getMail().setSecondaryResponsibleFlag(true); |
|
|
|
|
} |
|
|
|
|
return flowDetail; |
|
|
|
|
return mailDetail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|