修改 流程历史查看

This commit is contained in:
furongxin 2024-09-02 17:43:29 +08:00
parent 27c9d04e78
commit 62379d45b4
19 changed files with 176 additions and 24 deletions

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.bpm.controller.admin.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
@ -190,12 +189,12 @@ public class BpmTaskController {
@Parameter(name = "processInstanceId", description = "流程实例编号", required = true, example = "1024")
public CommonResult<Map<String, List<BpmTaskRespVO>>> getHistoryTask(@RequestParam("processInstanceId") String processInstanceId) {
List<BpmHistoryProcessInstanceDO> historyProcessInstanceDOs = historyProcessInstanceService.getHistoryProcessInstanceDO(processInstanceId);
if (CollectionUtil.isEmpty(historyProcessInstanceDOs)) {
BpmHistoryProcessInstanceDO historyProcessInstanceDO = historyProcessInstanceService.getHistoryProcessInstanceDO(processInstanceId);
if (historyProcessInstanceDO == null) {
return success(null);
}
List<String> historyProcessInstanceIds = convertList(historyProcessInstanceDOs, BpmHistoryProcessInstanceDO::getHistoryProcessInstanceId);
List<String> historyProcessInstanceIds = historyProcessInstanceDO.getHistoryProcessInstanceIds();
return success(taskService.getTaskListByProcessInstanceIds(historyProcessInstanceIds));
}

View File

@ -1,12 +1,16 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.task;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;
/**
* Bpm 历史流程实例关联表
* 主要关联 被拒绝的流程实例
@ -32,5 +36,6 @@ public class BpmHistoryProcessInstanceDO extends BaseDO {
/**
* 历史流程实例的编号组
*/
private String historyProcessInstanceId;
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> historyProcessInstanceIds;
}

View File

@ -117,7 +117,6 @@ public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashS
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
// 将历史流程编号存入关联表中
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAContractConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAContractMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -41,6 +42,9 @@ public class BpmOAContractServiceImpl extends BpmOABaseService implements BpmOAC
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createContract(Long userId, BpmOAContractCreateReqVO createReqVO) {
@ -62,6 +66,12 @@ public class BpmOAContractServiceImpl extends BpmOABaseService implements BpmOAC
// 将工作流的编号更新到 OA 请假单中
contractMapper.updateById(new BpmOAContractDO().setId(contract.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAEntryConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEntryDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAEntryMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.infra.api.file.dto.UserFileUpdateReqDTO;
@ -62,6 +63,9 @@ public class BpmOAEntryServiceImpl implements BpmOAEntryService{
@Resource
private FileApi fileApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -79,6 +83,12 @@ public class BpmOAEntryServiceImpl implements BpmOAEntryService{
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(entry.getId()))).getCheckedData();
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
// 将工作流的编号更新到 OA 入职申请单中
entryMapper.updateById(new BpmOAEntryDO().setId(entry.getId()).setProcessInstanceId(processInstanceId));

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAEvectionConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAEvectionMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOAEvectionServiceImpl extends BpmOABaseService implements BpmOAE
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createEvection(Long userId, BpmOAEvectionCreateReqVO createReqVO) {
@ -57,6 +61,12 @@ public class BpmOAEvectionServiceImpl extends BpmOABaseService implements BpmOAE
// 将工作流的编号更新到 OA 请假单中
evectionMapper.updateById(new BpmOAEvectionDO().setId(evection.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.bpm.service.oa;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
@ -8,11 +7,12 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.imprest.BpmOAImprestCr
import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAImprestConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.*;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAImprestDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAImprestMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@ -23,12 +23,9 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_IMPREST_NOT_EXISTS;
@ -60,6 +57,9 @@ public class BpmOAImprestServiceImpl extends BpmOABaseService implements BpmOAIm
@Resource
private AdminUserApi userApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createImprest(Long userId, BpmOAImprestCreateReqVO createReqVO) {
@ -78,6 +78,11 @@ public class BpmOAImprestServiceImpl extends BpmOABaseService implements BpmOAIm
// 将工作流的编号更新到 OA 备用金单中
imprestMapper.updateById(new BpmOAImprestDO().setId(imprest.getId()).setProcessInstanceId(processInstanceId));
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems();
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAIncentiveConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAIncentiveDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAIncentiveMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -41,6 +42,9 @@ public class BpmOAIncentiveServiceImpl extends BpmOABaseService implements BpmOA
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createIncentive(Long userId, BpmOAIncentiveCreateReqVO createReqVO) {
@ -58,6 +62,11 @@ public class BpmOAIncentiveServiceImpl extends BpmOABaseService implements BpmOA
// 将工作流的编号更新到 OA 奖惩单中
incentiveMapper.updateById(new BpmOAIncentiveDO().setId(incentive.getId()).setProcessInstanceId(processInstanceId));
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOALeaveMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.system.api.attendance.AttendanceApi;
import cn.iocoder.yudao.module.system.api.attendance.dto.AttendancePunchRecordDTO;
import org.springframework.data.redis.core.StringRedisTemplate;
@ -58,6 +59,9 @@ public class BpmOALeaveServiceImpl extends BpmOABaseService implements BpmOALeav
@Resource
private AttendanceApi attendanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) {
@ -78,6 +82,12 @@ public class BpmOALeaveServiceImpl extends BpmOABaseService implements BpmOALeav
// 将工作流的编号更新到 OA 请假单中
leaveMapper.updateById(new BpmOALeaveDO().setId(leave.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems();
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAOvertimeConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAOvertimeDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAOvertimeMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOAOvertimeServiceImpl extends BpmOABaseService implements BpmOAO
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createOvertime(Long userId, BpmOAOvertimeCreateReqVO createReqVO) {
@ -58,6 +62,12 @@ public class BpmOAOvertimeServiceImpl extends BpmOABaseService implements BpmOAO
// 将工作流的编号更新到 OA 加班单中
overtimeMapper.updateById(new BpmOAOvertimeDO().setId(overtime.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcurePayConvert;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcurePayItemConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO;
@ -27,6 +26,7 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@ -77,6 +77,9 @@ public class BpmOAProcurePayServiceImpl extends BpmOABaseService implements BpmO
@Resource
private AdminUserApi userApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
/**
* OA 采购支付对应的流程定义 KEY
*/
@ -106,6 +109,12 @@ public class BpmOAProcurePayServiceImpl extends BpmOABaseService implements BpmO
// 将工作流的编号更新到 OA 采购单中
oAProcurePayMapper.updateById(new BpmOAProcurePayDO().setId(oAProcurePay.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems();
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcureConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcureMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -39,6 +40,9 @@ public class BpmOAProcureServiceImpl extends BpmOABaseService implements BpmOAPr
private BpmOAProcureMapper bpmOaProcureMapper;
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
/**
* OA 采购申请对应的流程定义 KEY
*/
@ -61,6 +65,12 @@ public class BpmOAProcureServiceImpl extends BpmOABaseService implements BpmOAPr
// 将工作流的编号更新到 OA 采购单中
bpmOaProcureMapper.updateById(new BpmOAProcureDO().setId(oaProcure.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems();
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOARegularConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOARegularDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOARegularMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOARegularServiceImpl extends BpmOABaseService implements BpmOARe
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createRegular(Long userId, BpmOARegularCreateReqVO createReqVO) {
@ -57,6 +61,12 @@ public class BpmOARegularServiceImpl extends BpmOABaseService implements BpmOARe
// 将工作流的编号更新到 OA 转正单中
regularMapper.updateById(new BpmOARegularDO().setId(regular.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAImprestMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAReimbursementMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@ -89,6 +90,9 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B
@Resource
private FinancialPaymentService financialPaymentService;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createReimbursement(Long userId, BpmOAReimbursementCreateReqVO createReqVO) {
@ -105,6 +109,12 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B
// 将工作流的编号更新到 OA 报销表单中
reimbursementMapper.updateById(new BpmOAReimbursementDO().setId(reimbursement.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
//如果是备用金报销则更新备用金流程status,并存入当前报销流程ID
if (createReqVO.getDifference() != null) {
BpmOAImprestDO bpmOAImprestDO = bpmOAImprestService.getImprestByUserId(userId);

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASealConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASealDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASealMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOASealServiceImpl extends BpmOABaseService implements BpmOASealS
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createSeal(Long userId, BpmOASealCreateReqVO createReqVO) {
@ -57,6 +61,12 @@ public class BpmOASealServiceImpl extends BpmOABaseService implements BpmOASealS
// 将工作流的编号更新到 OA 用章单中
sealMapper.updateById(new BpmOASealDO().setId(seal.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASecondConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASecondDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASecondMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOASecondServiceImpl extends BpmOABaseService implements BpmOASec
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createSecond(Long userId, BpmOASecondCreateReqVO createReqVO) {
BpmOASecondDO second = BpmOASecondConvert.INSTANCE.convert(createReqVO).setUserId(userId)
@ -55,6 +59,12 @@ public class BpmOASecondServiceImpl extends BpmOABaseService implements BpmOASec
// 将工作流的编号更新到 OA 请假单中
secondMapper.updateById(new BpmOASecondDO().setId(second.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAShiftjobsConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAShiftjobsDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAShiftjobsMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,6 +41,9 @@ public class BpmOAShiftjobsServiceImpl extends BpmOABaseService implements BpmOA
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Override
public Long createShiftjobs(Long userId, BpmOAShiftjobsCreateReqVO createReqVO) {
@ -57,6 +61,12 @@ public class BpmOAShiftjobsServiceImpl extends BpmOABaseService implements BpmOA
// 将工作流的编号更新到 OA 调岗单中
shiftjobsMapper.updateById(new BpmOAShiftjobsDO().setId(shiftjobs.getId()).setProcessInstanceId(processInstanceId));
// 判断是否为重新发起的流程
if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) {
historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId());
}
List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
//这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
if (fileItems != null && !fileItems.isEmpty()) {

View File

@ -2,8 +2,6 @@ package cn.iocoder.yudao.module.bpm.service.task;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmHistoryProcessInstanceDO;
import java.util.List;
/**
* 历史流程实例 Service 接口
*/
@ -11,10 +9,10 @@ public interface BpmHistoryProcessInstanceService {
/**
* 创建历史流程关联记录
* @param ProcessInstanceId 流程实例ID
* @param processInstanceId 流程实例ID
* @param historyProcessInstanceId 历史流程实例ID
*/
void createHistoryProcessInstance(String ProcessInstanceId, String historyProcessInstanceId);
void createHistoryProcessInstance(String processInstanceId, String historyProcessInstanceId);
List<BpmHistoryProcessInstanceDO> getHistoryProcessInstanceDO(String processInstanceId);
BpmHistoryProcessInstanceDO getHistoryProcessInstanceDO(String processInstanceId);
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.service.task;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmHistoryProcessInstanceDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmHistoryProcessInstanceMapper;
import lombok.extern.slf4j.Slf4j;
@ -7,6 +8,7 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
@ -21,18 +23,34 @@ public class BpmHistoryProcessInstanceServiceImpl implements BpmHistoryProcessIn
private BpmHistoryProcessInstanceMapper historyProcessInstanceMapper;
@Override
public void createHistoryProcessInstance(String ProcessInstanceId, String historyProcessInstanceId) {
public void createHistoryProcessInstance(String processInstanceId, String historyProcessInstanceId) {
BpmHistoryProcessInstanceDO historyProcessInstanceDO = new BpmHistoryProcessInstanceDO()
.setProcessInstanceId(ProcessInstanceId)
.setHistoryProcessInstanceId(historyProcessInstanceId);
// 获得历史流程关联记录
BpmHistoryProcessInstanceDO historyProcessInstanceDO = getHistoryProcessInstanceDO(historyProcessInstanceId);
if (historyProcessInstanceDO == null) {
historyProcessInstanceMapper.insert(historyProcessInstanceDO);
historyProcessInstanceMapper.insert(new BpmHistoryProcessInstanceDO()
.setProcessInstanceId(processInstanceId)
.setHistoryProcessInstanceIds(Collections.singletonList(historyProcessInstanceId)));
}else {
List<String> historyProcessInstanceIds = historyProcessInstanceDO.getHistoryProcessInstanceIds();
historyProcessInstanceIds.add(historyProcessInstanceId);
historyProcessInstanceMapper.updateById(historyProcessInstanceDO
.setProcessInstanceId(processInstanceId)
.setHistoryProcessInstanceIds(historyProcessInstanceIds));
}
}
@Override
public List<BpmHistoryProcessInstanceDO> getHistoryProcessInstanceDO(String processInstanceId) {
public BpmHistoryProcessInstanceDO getHistoryProcessInstanceDO(String processInstanceId) {
return historyProcessInstanceMapper.selectList(BpmHistoryProcessInstanceDO::getProcessInstanceId, processInstanceId);
List<BpmHistoryProcessInstanceDO> list = historyProcessInstanceMapper.selectList(BpmHistoryProcessInstanceDO::getProcessInstanceId, processInstanceId);
if (CollectionUtil.isEmpty(list)) {
return null;
}
return list.get(0);
}
}