feat(REQ-2106): 投放规则调整

This commit is contained in:
chenwenjian 2024-04-20 18:15:18 +08:00
parent 244bae35fc
commit 91b82bc434

View File

@ -28,6 +28,7 @@ public enum MaterialTargetUserTypeEnum {
public boolean isDeliverRequired(List<Long> workspaceIds, List<Long> ouIds, List<String> jobCodes,
Long loginWorkspaceId, Long loginOuid,
JoinedWorkspaceOuJob workspaceOuJob) {
log.info("投放全部用户");
return true;
}
},
@ -49,26 +50,21 @@ public enum MaterialTargetUserTypeEnum {
// 配置全部项目部
if (CollectionUtils.isEmpty(workspaceIds)) {
// 未加入任何项目部
if (Objects.isNull(workspaceJobMap) || workspaceJobMap.isEmpty()){
if (Objects.isNull(workspaceJobMap) || workspaceJobMap.isEmpty()) {
return false;
}
if (Objects.isNull(loginOuid) || loginOuid == 0L){
if (CollectionUtils.isEmpty(jobCodes)){
return true;
}
return jobCodes.stream().anyMatch(jobCode -> workspaceJobMap.values().stream().anyMatch(jobCodeList -> jobCodeList.contains(jobCode)));
}else {
// 登录了具体的单位且以纯单位身份登录
return !CollectionUtils.isEmpty(workspaceOuJob.getOuWorkspaceMap().get(loginOuid));
if (CollectionUtils.isEmpty(jobCodes)) {
return true;
}
return jobCodes.stream().anyMatch(jobCode -> workspaceJobMap.values().stream().anyMatch(jobCodeList -> jobCodeList.contains(jobCode)));
}
// 若配置了具体项目部
if (Objects.isNull(loginOuid) || loginOuid == 0L) {
// 加入的全部项目部与配置的项目部有交集
if (workspaceIds.stream().anyMatch(workspaceJobMap::containsKey)){
if (CollectionUtils.isEmpty(jobCodes)){
if (workspaceIds.stream().anyMatch(workspaceJobMap::containsKey)) {
if (CollectionUtils.isEmpty(jobCodes)) {
return true;
}
return workspaceIds.stream().anyMatch(workspaceId -> workspaceJobMap.get(workspaceId).stream().anyMatch(jobCodes::contains));
@ -77,13 +73,13 @@ public enum MaterialTargetUserTypeEnum {
} else {
// 给定了具体登录单位
// 登录了具体的单位且以纯单位身份登录
if (CollectionUtils.isEmpty(workspaceOuJob.getOuWorkspaceMap().get(loginOuid))){
if (CollectionUtils.isEmpty(workspaceOuJob.getOuWorkspaceMap().get(loginOuid))) {
return false;
}
// 以项目部下单位登录
// 加入的全部项目部与配置的项目部有交集
if (workspaceIds.stream().anyMatch(workspaceJobMap::containsKey)){
if (CollectionUtils.isEmpty(jobCodes)){
if (workspaceIds.stream().anyMatch(w -> workspaceOuJob.getOuWorkspaceMap().get(loginOuid).stream().anyMatch(w::equals))) {
if (CollectionUtils.isEmpty(jobCodes)) {
return true;
}
return workspaceIds.stream().anyMatch(workspaceId -> workspaceJobMap.get(workspaceId).stream().anyMatch(jobCodes::contains));
@ -112,13 +108,13 @@ public enum MaterialTargetUserTypeEnum {
return true;
} else {
// 若配置了具体岗位检查用户加入的所有单位下的岗位是否包含任一配置岗位
if (Objects.isNull(loginOuid) || loginOuid == 0L){
if (Objects.isNull(loginOuid) || loginOuid == 0L) {
return jobCodes.stream().anyMatch(jobCode -> ouJobMap.values().stream()
.flatMap(List::stream)
.distinct()
.collect(Collectors.toList())
.contains(jobCode));
}else {
} else {
return jobCodes.stream().anyMatch(jobCode -> ouJobMap.get(loginOuid).stream().anyMatch(jobCodes::contains));
}
@ -128,8 +124,8 @@ public enum MaterialTargetUserTypeEnum {
// 若配置了具体单位
if (Objects.isNull(loginOuid) || loginOuid == 0L) {
// 若登录单位为空工人APP登录检查用户加入的单位是否与配置单位有交集
if (ouIds.stream().anyMatch(ouJobMap::containsKey)){
if (CollectionUtils.isEmpty(jobCodes)){
if (ouIds.stream().anyMatch(ouJobMap::containsKey)) {
if (CollectionUtils.isEmpty(jobCodes)) {
return true;
}
return ouIds.stream().anyMatch(o -> ouJobMap.get(o).stream().anyMatch(jobCodes::contains));