From dc8a5f406f30dc1030dd69652a8f57d958248186 Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 17 Dec 2020 10:24:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E9=94=AE=E5=82=AC?= =?UTF-8?q?=E5=8A=9E=E9=80=BB=E8=BE=91?= 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 | 10 ++++ .../job/business/DingtalkBusiness.java | 10 ++-- .../controller/AssessManagerController.java | 47 +++++++++++++++++-- .../mapper/app/ResultRecordMapper.xml | 1 + .../mapper/flow/FlowRecordMapper.xml | 20 ++++++++ 7 files changed, 88 insertions(+), 8 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 90994796..01c074e6 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -105,4 +105,8 @@ public interface FlowRecordMapper extends BaseMapper { FlowRecord selectPreFlowRecordByRecordIdMinIdStatusList(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex, @Param("statusList") List statusList); List selectFlowRecordByRecordIdFlowIndexStatusList(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex, @Param("statusList") List statusList); + + List selectFlowRecordByRecordIdsFlowProcess(@Param("recordIds") List recordIds, @Param("flowProcess") Long flowProcess); + + List selectFlowRecordByRecordIdsStatus(@Param("recordIds") List recordIds, @Param("status") 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 a08c24c6..f086d980 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -101,4 +101,8 @@ public interface FlowRecordService extends IService { List selectFlowRecordByRecordIdFlowIndexStatusList(Long recordId, Integer flowIndex, List statusList); List selectFlowRecordByRecordIdLeFlowIndex(Long resultRecordId, Integer flowIndex); + + List selectFlowRecordByRecordIdsFlowProcess(List recordIds, Long flowProcess); + + List selectFlowRecordByRecordIdsStatus(List recordIds, 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 d5fe6b3b..27b65695 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 @@ -266,4 +266,14 @@ public class FlowRecordServiceImpl extends ServiceImpl selectFlowRecordByRecordIdsFlowProcess(List recordIds, Long flowProcess){ + return flowRecordMapper.selectFlowRecordByRecordIdsFlowProcess(recordIds,flowProcess); + } + + @Override + public List selectFlowRecordByRecordIdsStatus(List recordIds, int status){ + return flowRecordMapper.selectFlowRecordByRecordIdsStatus(recordIds,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 0dde6a9d..54406390 100644 --- a/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java +++ b/src/main/java/com/lz/modules/job/business/DingtalkBusiness.java @@ -984,15 +984,17 @@ public class DingtalkBusiness { return R.error("未授权登录"); } - public void urging(List staffEntities, Map mapReords) { + public void urging(List flowRecords, Map mapStaffs, Map mapReords) { logger.info("批量催办"); ThirdAppConfig thirdAppConfig = thirdAppConfigService.getByAppId(appid); String token = dingTalkUtil.getAccessTokenWitchEntity(thirdAppConfig); if(token != null && token.length() > 0){ - for (StaffEntity info:staffEntities + + for (FlowRecord flowRecord:flowRecords ) { - ResultRecord record = mapReords.get(info.getId()); - if(record != null){ + ResultRecord record = mapReords.get(flowRecord.getId()); + StaffEntity info = mapStaffs.get(flowRecord.getApprovalStaffId()); + if(record != null && info != null){ String url = homeUrl; if(url.contains("?")){ url += "&halokit=" + System.currentTimeMillis(); diff --git a/src/main/java/com/lz/modules/performance/controller/AssessManagerController.java b/src/main/java/com/lz/modules/performance/controller/AssessManagerController.java index bc64f5f1..c4a1f024 100644 --- a/src/main/java/com/lz/modules/performance/controller/AssessManagerController.java +++ b/src/main/java/com/lz/modules/performance/controller/AssessManagerController.java @@ -11,10 +11,12 @@ import com.lz.modules.app.service.DepartmentsService; import com.lz.modules.app.service.DepartmentsStaffRelateService; import com.lz.modules.app.service.StaffService; import com.lz.modules.flow.dao.FlowStartMapper; +import com.lz.modules.flow.entity.FlowRecord; import com.lz.modules.flow.entity.FlowStart; import com.lz.modules.flow.entity.StaffRole; import com.lz.modules.flow.entity.StaffRoleDepartment; import com.lz.modules.flow.service.EvaluationStartStaffService; +import com.lz.modules.flow.service.FlowRecordService; import com.lz.modules.flow.service.StaffRoleDepartmentService; import com.lz.modules.flow.service.StaffRoleService; import com.lz.modules.job.business.DingtalkBusiness; @@ -80,6 +82,8 @@ public class AssessManagerController extends AbstractController{ @Autowired private StaffService staffService; + @Autowired + private FlowRecordService flowRecordService; @@ -261,8 +265,6 @@ public class AssessManagerController extends AbstractController{ staffIds = departmentsStaffRelateService.selectLongStaffIdsByDepartments(departmentIds); } - - log.info("查询到有权限可以推送的人员数量为{}, 如下{}", staffIds.size(), staffIds); //下面查询当前startId,当前flowProcess下面有多少人员id List resultRecords = resultRecordMapper.selectStaffIdsByStartIdAndFlowProcess(startId, flowProcess); @@ -273,10 +275,47 @@ public class AssessManagerController extends AbstractController{ log.info("查询到在当前节点下的人数为{},如下{}", staffIds1.size(), staffIds1); if(staffIds1.size() > 0 && staffIds.size() > 0){ staffIds.retainAll(staffIds1);//求交集 - log.info("最终能推送人员个数{}", staffIds.size()); + log.info("需要推送绩效个数{}", staffIds.size()); if(staffIds.size() > 0){ + + staffIds1 = mapReords.keySet().stream().collect(Collectors.toList()); + staffIds1.retainAll(staffIds); + log.info("去掉排除的数据后数量{}", staffIds1.size()); + for (Long id:staffIds1 + ) { + mapReords.remove(id); + } + //获取催办的节点的人员信息 + List recordIds = resultRecords.stream().map(new Function() { + @Override + public Long apply(ResultRecord resultRecord) { + return resultRecord.getId(); + } + }).collect(Collectors.toList()); + log.info("剩余需要处理record的数量{}", recordIds.size()); + List flowRecords; + if(flowProcess == null){//催全部,获取当前节点的人员信息 + + flowRecords = + flowRecordService.selectFlowRecordByRecordIdsStatus(recordIds, 2); + log.info("催当前节点的人员,数量{}", flowRecords.size()); + }else{ + flowRecords = + flowRecordService.selectFlowRecordByRecordIdsFlowProcess(recordIds, flowProcess); + log.info("催指定节点的人员,数量{}", flowRecords.size()); + } + + staffIds = flowRecords.stream().map(new Function() { + @Override + public Long apply(FlowRecord flowRecord) { + return flowRecord.getApprovalStaffId(); + } + }).collect(Collectors.toList()); + log.info("最终能推送人员个数{}", staffIds.size()); + mapReords = resultRecords.stream().collect(Collectors.toMap(ResultRecord::getId, Function.identity(), (e, r) -> e)); List staffEntities = staffService.selectByIds(staffIds); - dingtalkBusiness.urging(staffEntities, mapReords); + Map mapStaffs = staffEntities.stream().collect(Collectors.toMap(StaffEntity::getId, Function.identity(), (e, r) -> e)); + dingtalkBusiness.urging(flowRecords, mapStaffs, mapReords); } } } catch (Exception e) { diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml index e2fc83c3..6fa99f89 100644 --- a/src/main/resources/mapper/app/ResultRecordMapper.xml +++ b/src/main/resources/mapper/app/ResultRecordMapper.xml @@ -656,6 +656,7 @@ diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index f3abe557..70244015 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -364,5 +364,25 @@ update lz_flow_record set id = #{newId} where id = #{id} + + + +