From d15db7a932c7d833a934406cdb202e9b02371588 Mon Sep 17 00:00:00 2001 From: wulin Date: Mon, 23 Nov 2020 16:35:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=B8=8A=E4=B8=80=E6=AD=A5bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/dao/FlowRecordMapper.java | 4 +- .../flow/service/FlowRecordService.java | 4 +- .../service/impl/FlowRecordServiceImpl.java | 9 +++- .../job/business/DingtalkBusiness.java | 41 +++++++++++-------- .../mapper/flow/FlowRecordMapper.xml | 8 +++- 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index 36f3440e..d417c7c5 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -86,7 +86,9 @@ public interface FlowRecordMapper extends BaseMapper { List selectLastFlowRecordsById(@Param("recordId") Long recordId); - List selectLastFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex); + List selectLastFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex, @Param("status") int status); List selectSkipFlowRecordsById(@Param("recordId") Long recordId); + + List selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index 394cbe8d..99c44187 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -81,7 +81,9 @@ public interface FlowRecordService extends IService { //获取最后流程同一个小节点的所有数据 List selectLastFlowRecordsById(Long recordId); //获取制定步骤一个小节点的所有数据 - List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex); + List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); List selectSkipFlowRecordsById(Long recordId); + + List selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java index bbfe4210..412a65e5 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java @@ -217,8 +217,8 @@ public class FlowRecordServiceImpl extends ServiceImpl selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex){ - return flowRecordMapper.selectLastFlowRecordsByIdAndFlowIndex(recordId, flowIndex); + public List selectLastFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status){ + return flowRecordMapper.selectLastFlowRecordsByIdAndFlowIndex(recordId, flowIndex, status); } @Override @@ -226,4 +226,9 @@ public class FlowRecordServiceImpl extends ServiceImpl selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status){ + return flowRecordMapper.selectFirstFlowRecordsByIdAndFlowIndex(recordId, flowIndex, status); + } + } diff --git a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java index 6b062fee..c5ebaab8 100644 --- a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java +++ b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java @@ -522,35 +522,42 @@ public class DingtalkBusiness { }else{ if(workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){//被拒 logger.info("任务驳回"); - cancelRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() - , flowRecords.get(0).getFlowIndex().intValue() + 1);//获取下一步的数据 + cancelRecords = flowRecordService.selectFirstFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() + , flowRecords.get(0).getFlowIndex().intValue() + 1, 0);//获取下一步的数据 }else{ logger.info("任务流转下一步"); cancelRecords = flowRecordService.selectLastFlowRecordsByIdAndFlowIndex(fromStaff.getResultRecord().getId() - , flowRecords.get(0).getFlowIndex().intValue() - 1);//获取上一步的数据 + , flowRecords.get(0).getFlowIndex().intValue() - 1, 0);//获取上一步的数据 } } logger.info("查询到可能需要更新的待办任务数量{}", cancelRecords.size()); if(cancelRecords.size() > 0){ + int flowIndex = cancelRecords.get(0).getFlowIndex().intValue(); for (FlowRecord flowRecord:cancelRecords ) { - if(flowRecord.getStatus().intValue() == 1 - || flowRecord.getStatus().intValue() == 3 - || flowRecord.getStatus().intValue() == 4 - || workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){ - logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), - flowRecord.getApprovalStaffName()); - ThirdMsgSendRecord thirdMsgSendRecord = - thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( - fromStaff.getResultRecord().getId(), - flowRecord.getApprovalStaffId(), 1, 1); - if(thirdMsgSendRecord != null){//把原来的任务更新掉 - dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); - }else{ - logger.info("无需更新待办任务"); + if(flowRecord.getFlowIndex() == flowIndex){//同一个小结点的才进来 + if(flowRecord.getStatus().intValue() == 1 + || flowRecord.getStatus().intValue() == 3 + || flowRecord.getStatus().intValue() == 4 + || workMsgTypeEnum.getType() == WorkMsgTypeEnum.REJECT.getType()){ + logger.info("将要更新人员的待办任务,人员id:{}, 姓名:{}", flowRecord.getApprovalStaffId(), + flowRecord.getApprovalStaffName()); + ThirdMsgSendRecord thirdMsgSendRecord = + thirdMsgSendRecordService.selectThirdMsgSendRecordByWorkIdAndStaffIdAndTypeAndStatus( + fromStaff.getResultRecord().getId(), + flowRecord.getApprovalStaffId(), 1, 1); + if(thirdMsgSendRecord != null){//把原来的任务更新掉 + dingTalkUtil.updateWorkMSG(thirdMsgSendRecord, token); + }else{ + logger.info("无需更新待办任务"); + } } + }else{ + logger.info("已经取消完毕"); + break; } + } } //给下一步需要处理的人员发送待办任务 diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index 1055a137..643e6554 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -308,11 +308,17 @@ + +