package com.dl.workflow.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dl.common.core.domain.PageQuery; import com.dl.common.core.page.TableDataInfo; import com.dl.common.helper.LoginHelper; import com.dl.common.utils.StringUtils; import com.dl.workflow.domain.WfCopy; import com.dl.workflow.domain.bo.WfCopyBo; import com.dl.workflow.domain.bo.WfTaskBo; import com.dl.workflow.domain.vo.WfCopyVo; import com.dl.workflow.mapper.WfCopyMapper; import com.dl.workflow.service.IWfCopyService; import lombok.RequiredArgsConstructor; import org.flowable.engine.HistoryService; import org.flowable.engine.history.HistoricProcessInstance; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 流程抄送Service业务层处理 * * @author KonBAI * @date 2022-05-19 */ @RequiredArgsConstructor @Service public class WfCopyServiceImpl implements IWfCopyService { private final WfCopyMapper baseMapper; private final HistoryService historyService; /** * 查询流程抄送 * * @param copyId 流程抄送主键 * @return 流程抄送 */ @Override public WfCopyVo queryById(Long copyId){ return baseMapper.selectVoById(copyId); } /** * 查询流程抄送列表 * * @param bo 流程抄送 * @return 流程抄送 */ @Override public TableDataInfo selectPageList(WfCopyBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); lqw.orderByDesc(WfCopy::getCreateTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询流程抄送列表 * * @param bo 流程抄送 * @return 流程抄送 */ @Override public List selectList(WfCopyBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WfCopyBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getUserId() != null, WfCopy::getUserId, bo.getUserId()); lqw.like(StringUtils.isNotBlank(bo.getProcessName()), WfCopy::getProcessName, bo.getProcessName()); lqw.like(StringUtils.isNotBlank(bo.getOriginatorName()), WfCopy::getOriginatorName, bo.getOriginatorName()); return lqw; } @Override public Boolean makeCopy(WfTaskBo taskBo) { if (StringUtils.isBlank(taskBo.getCopyUserIds())) { // 若抄送用户为空,则不需要处理,返回成功 return true; } HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() .processInstanceId(taskBo.getProcInsId()).singleResult(); String[] ids = taskBo.getCopyUserIds().split(","); List copyList = new ArrayList<>(ids.length); String originatorId = LoginHelper.getUserId(); String originatorName = LoginHelper.getNickName(); String title = historicProcessInstance.getProcessDefinitionName() + "-" + taskBo.getTaskName(); for (String id : ids) { // Long userId = Long.valueOf(id); WfCopy copy = new WfCopy(); copy.setTitle(title); copy.setProcessId(historicProcessInstance.getProcessDefinitionId()); copy.setProcessName(historicProcessInstance.getProcessDefinitionName()); copy.setDeploymentId(historicProcessInstance.getDeploymentId()); copy.setInstanceId(taskBo.getProcInsId()); copy.setTaskId(taskBo.getTaskId()); copy.setUserId(id); copy.setOriginatorId(originatorId); copy.setOriginatorName(originatorName); copyList.add(copy); } return baseMapper.insertBatch(copyList); } }