|
|
|
|
@ -1,16 +1,23 @@
|
|
|
|
|
package com.biutag.supervision.controller.sensitivePerception; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
|
import com.biutag.supervision.constants.AppConstants; |
|
|
|
|
import com.biutag.supervision.mapper.RiskModelTaskClueMapper; |
|
|
|
|
import com.biutag.supervision.pojo.Result; |
|
|
|
|
import com.biutag.supervision.pojo.domain.RiskPersonalDetail; |
|
|
|
|
import com.biutag.supervision.pojo.entity.*; |
|
|
|
|
import com.biutag.supervision.pojo.param.RiskPersonalQueryParam; |
|
|
|
|
import com.biutag.supervision.pojo.vo.RiskModelTaskClueVo; |
|
|
|
|
import com.biutag.supervision.pojo.vo.RiskPersonalVo; |
|
|
|
|
import com.biutag.supervision.service.*; |
|
|
|
|
import com.biutag.supervision.service.ModelService; |
|
|
|
|
import com.biutag.supervision.service.RiskPersonalService; |
|
|
|
|
import com.biutag.supervision.service.RiskPersonalTagService; |
|
|
|
|
import com.biutag.supervision.service.RiskScoreRuleService; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping; |
|
|
|
|
@ -37,12 +44,12 @@ public class RiskPersonalController {
|
|
|
|
|
|
|
|
|
|
private final RiskScoreRuleService riskScoreRuleService; |
|
|
|
|
|
|
|
|
|
private final RiskModelTaskClueService riskModelTaskClueService; |
|
|
|
|
|
|
|
|
|
private final ModelService modelService; |
|
|
|
|
|
|
|
|
|
private final RiskPersonalTagService riskPersonalTagService; |
|
|
|
|
|
|
|
|
|
private final RiskModelTaskClueMapper riskModelTaskClueMapper; |
|
|
|
|
|
|
|
|
|
@GetMapping |
|
|
|
|
public Result<Page<RiskPersonalVo>> list(RiskPersonalQueryParam param) { |
|
|
|
|
LambdaQueryWrapper<RiskPersonal> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
@ -52,22 +59,37 @@ public class RiskPersonalController {
|
|
|
|
|
.like(StrUtil.isNotBlank(param.getMobileNumber()), RiskPersonal::getMobileNumber, param.getMobileNumber()) |
|
|
|
|
.like(StrUtil.isNotBlank(param.getIdCode()), RiskPersonal::getIdCode, param.getIdCode()) |
|
|
|
|
.eq(Objects.nonNull(param.getAge()), RiskPersonal::getAge, param.getAge()) |
|
|
|
|
.like(StrUtil.isNotBlank(param.getTags()), RiskPersonal::getTags, param.getTags()); |
|
|
|
|
if (StrUtil.isNotBlank(param.getTags())) { |
|
|
|
|
LambdaQueryWrapper<RiskPersonalTag> qw = new LambdaQueryWrapper<RiskPersonalTag>() |
|
|
|
|
.like(RiskPersonalTag::getSmallTag, param.getTags()); |
|
|
|
|
List<RiskPersonalTag> personalTags = riskPersonalTagService.list(qw); |
|
|
|
|
if (personalTags.isEmpty()) { |
|
|
|
|
.and(CollectionUtil.isNotEmpty(param.getTags()), (query) -> { |
|
|
|
|
for (int i = 0; i < param.getTags().size(); i++) { |
|
|
|
|
query.like(RiskPersonal::getTags, param.getTags().get(i)).or(i != param.getTags().size() - 1); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
if (CollectionUtil.isNotEmpty(param.getSmallTags()) || CollectionUtil.isNotEmpty(param.getEducationTags()) || CollectionUtil.isNotEmpty(param.getAgeTags())) { |
|
|
|
|
LambdaQueryWrapper<RiskPersonalTag> tagQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
tagQueryWrapper.and(CollectionUtil.isNotEmpty(param.getSmallTags()), (query) -> { |
|
|
|
|
for (int i = 0; i < param.getSmallTags().size(); i++) { |
|
|
|
|
query.like(RiskPersonalTag::getSmallTag, param.getSmallTags().get(i)).or(i != param.getSmallTags().size() - 1); |
|
|
|
|
} |
|
|
|
|
}).and(CollectionUtil.isNotEmpty(param.getAgeTags()), (query) -> { |
|
|
|
|
for (int i = 0; i < param.getAgeTags().size(); i++) { |
|
|
|
|
query.like(RiskPersonalTag::getSmallTag, param.getAgeTags().get(i)).or(i != param.getAgeTags().size() - 1); |
|
|
|
|
} |
|
|
|
|
}).and(CollectionUtil.isNotEmpty(param.getEducationTags()), (query) -> { |
|
|
|
|
for (int i = 0; i < param.getEducationTags().size(); i++) { |
|
|
|
|
query.like(RiskPersonalTag::getSmallTag, param.getEducationTags().get(i)).or(i != param.getEducationTags().size() - 1); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
List<RiskPersonalTag> list = riskPersonalTagService.list(tagQueryWrapper); |
|
|
|
|
if (list.isEmpty()) { |
|
|
|
|
return Result.success(new Page<RiskPersonalVo>().setTotal(0).setRecords(new ArrayList<>())); |
|
|
|
|
} |
|
|
|
|
queryWrapper.in(RiskPersonal::getIdCode, personalTags.stream().map(RiskPersonalTag::getIdCode).collect(Collectors.toSet())); |
|
|
|
|
queryWrapper.in(RiskPersonal::getIdCode, list.stream().map(RiskPersonalTag::getIdCode).collect(Collectors.toSet())); |
|
|
|
|
} |
|
|
|
|
queryWrapper.orderByDesc(RiskPersonal::getRiskScore).orderByDesc(RiskPersonal::getCreateTime); |
|
|
|
|
Page<RiskPersonal> page = riskPersonalService.page(Page.of(param.getCurrent(), param.getSize()), queryWrapper); |
|
|
|
|
if (page.getRecords().isEmpty()) { |
|
|
|
|
return Result.success(new Page<RiskPersonalVo>().setTotal(0).setRecords(new ArrayList<>())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<RiskPersonalTag> tags = riskPersonalTagService.list(new LambdaQueryWrapper<RiskPersonalTag>() |
|
|
|
|
.in(RiskPersonalTag::getIdCode, page.getRecords().stream().map(RiskPersonal::getIdCode).toList())); |
|
|
|
|
List<RiskPersonalVo> list = page.getRecords().stream().map(item -> { |
|
|
|
|
@ -97,13 +119,12 @@ public class RiskPersonalController {
|
|
|
|
|
return riskRule; |
|
|
|
|
} |
|
|
|
|
List<Model> models = modelService.list(new LambdaQueryWrapper<Model>().in(Model::getRiskScoreRuleId, rules2.stream().map(RiskScoreRule::getId).toList())); |
|
|
|
|
|
|
|
|
|
List<RiskModelTaskClue> records = models.isEmpty() ? new ArrayList<>() : riskModelTaskClueService.page(Page.of(1, 100), new LambdaQueryWrapper<RiskModelTaskClue>() |
|
|
|
|
.eq(RiskModelTaskClue::getIdCode, riskPersonal.getIdCode()) |
|
|
|
|
.in(RiskModelTaskClue::getModelId, models.stream().map(Model::getId).toList()) |
|
|
|
|
.eq(RiskModelTaskClue::getDel, AppConstants.UN_DEL) |
|
|
|
|
.orderByDesc(RiskModelTaskClue::getScore) |
|
|
|
|
.orderByAsc(RiskModelTaskClue::getCreateTime)).getRecords(); |
|
|
|
|
QueryWrapper<RiskModelTaskClue> queryWrapper = new QueryWrapper<RiskModelTaskClue>() |
|
|
|
|
.eq("mc.id_code", riskPersonal.getIdCode()) |
|
|
|
|
.in("mc.model_id", models.stream().map(Model::getId).toList()) |
|
|
|
|
.orderByAsc("r.sort_id") |
|
|
|
|
.orderByDesc("mc.score_result"); |
|
|
|
|
List<RiskModelTaskClueVo> records = models.isEmpty() ? new ArrayList<>() : riskModelTaskClueMapper.queryPage(Page.of(1, 100), queryWrapper).getRecords(); |
|
|
|
|
riskRule.setClues(records); |
|
|
|
|
return riskRule; |
|
|
|
|
}).toList(); |
|
|
|
|
|