diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java index 544eec30..cde137a2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java @@ -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>> getHistoryTask(@RequestParam("processInstanceId") String processInstanceId) { - List historyProcessInstanceDOs = historyProcessInstanceService.getHistoryProcessInstanceDO(processInstanceId); - if (CollectionUtil.isEmpty(historyProcessInstanceDOs)) { + BpmHistoryProcessInstanceDO historyProcessInstanceDO = historyProcessInstanceService.getHistoryProcessInstanceDO(processInstanceId); + if (historyProcessInstanceDO == null) { return success(null); } - List historyProcessInstanceIds = convertList(historyProcessInstanceDOs, BpmHistoryProcessInstanceDO::getHistoryProcessInstanceId); + List historyProcessInstanceIds = historyProcessInstanceDO.getHistoryProcessInstanceIds(); return success(taskService.getTaskListByProcessInstanceIds(historyProcessInstanceIds)); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmHistoryProcessInstanceDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmHistoryProcessInstanceDO.java index 81f1351e..584619a7 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmHistoryProcessInstanceDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmHistoryProcessInstanceDO.java @@ -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 historyProcessInstanceIds; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java index 62b9f08a..ae04497b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java @@ -117,7 +117,6 @@ public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashS // 判断是否为重新发起的流程 if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) { - // 将历史流程编号存入关联表中 historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId()); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java index 68b2477a..74bf2b67 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEntryServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEntryServiceImpl.java index b909103b..f81fb78c 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEntryServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEntryServiceImpl.java @@ -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)); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java index c09ed7b7..1e4d7d2e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAImprestServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAImprestServiceImpl.java index 997c865e..f7573818 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAImprestServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAImprestServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems(); //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAIncentiveServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAIncentiveServiceImpl.java index 0d1eb075..064487ef 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAIncentiveServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAIncentiveServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java index 251c2581..f406d027 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems(); //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAOvertimeServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAOvertimeServiceImpl.java index 2e637aaa..192aae17 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAOvertimeServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAOvertimeServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java index ea0bc0d7..90b67aef 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems(); //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java index 9f54c572..6dceaf6d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems(); //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOARegularServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOARegularServiceImpl.java index b1e751a7..78cf0885 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOARegularServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOARegularServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java index c12ec47f..16e06852 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java @@ -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); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java index 8b688705..4967581d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASecondServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASecondServiceImpl.java index 95b5d77f..d3497b4c 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASecondServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASecondServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAShiftjobsServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAShiftjobsServiceImpl.java index ccb65b26..7cd8784c 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAShiftjobsServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAShiftjobsServiceImpl.java @@ -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 fileItems = createReqVO.getFileItems() ; //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceService.java index 619fcf6f..6c9d96bd 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceService.java @@ -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 getHistoryProcessInstanceDO(String processInstanceId); + BpmHistoryProcessInstanceDO getHistoryProcessInstanceDO(String processInstanceId); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceServiceImpl.java index adf074b7..c3b94e31 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmHistoryProcessInstanceServiceImpl.java @@ -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 historyProcessInstanceIds = historyProcessInstanceDO.getHistoryProcessInstanceIds(); + historyProcessInstanceIds.add(historyProcessInstanceId); + + historyProcessInstanceMapper.updateById(historyProcessInstanceDO + .setProcessInstanceId(processInstanceId) + .setHistoryProcessInstanceIds(historyProcessInstanceIds)); + } } @Override - public List getHistoryProcessInstanceDO(String processInstanceId) { + public BpmHistoryProcessInstanceDO getHistoryProcessInstanceDO(String processInstanceId) { - return historyProcessInstanceMapper.selectList(BpmHistoryProcessInstanceDO::getProcessInstanceId, processInstanceId); + List list = historyProcessInstanceMapper.selectList(BpmHistoryProcessInstanceDO::getProcessInstanceId, processInstanceId); + if (CollectionUtil.isEmpty(list)) { + return null; + } + + return list.get(0); } }