多个区域(省、市、区)匹配少个区域(省、市、区)问题解决方案

多个区域(省、市、区)匹配少个区域(省、市、区)问题解决方案

前情提要

  1. 产品有两个分类,主产品与资金方产品(产品表:loan_base_product),先配置产品的信息(产品分类,涉及区域等)
  2. 每个产品都可以选择一个或多个涉及区域(省市区)(产品区域表:loan_base_product_region)
  3. 资金方产品表,每个资金方可以设置拥有多个资金方产品(副产品客户表:funding_product)

需求:一个流程项目中(项目主表:loan_item_apply)需要根据主产品筛选出适合的资金方,先选择主产品A,然后根据A产品配置的区域,可以查询出匹配区域的资金方产品,哪个资金方配置了资金方产品B,就可以供流程项目选择

筛选规则:资金方产品的涉及区域包含主产品的涉及区域,比如主产品的涉及区域为:广东省广州市、湖南省长沙市芙蓉区,有四个资金方,资金方一的资金方产品一的涉及区域为:广东省广州市、广东省深圳市、湖南省长沙市;资金方二的资金方产品二的涉及区域为:广东省广州市、广东省深圳市福田区、湖南省郴州市;资金方三的资金方产品三的涉及区域为:广东省、湖南省长沙市;资金方四的资金方产品四涉及区域为:广东省广州市、广东省深圳市龙华区、福建省厦门市;则应该筛选出资金方一的资金方产品一、资金方三的资金方产品三

项目表:loan_item_apply
项目id:item_apply_id(主键)
产品id:product_id

资金方产品表:funding_product
主键id:ccc_id
资金方id:funding_id
产品id:product_id

产品表:loan_base_product
产品id:product_id(主键)
产品分类:product_class

产品区域表:loan_base_product_region
主键:bbbId
产品id:prouctId
省:province
市:city
区:area

解决思路1

  1. 先获取资金方产品表中的所有信息(即资金方配置的资金方产品)(funding_product表中的所有数据:fundingProductList),获取项目选中的主产品的所有涉及区域(loan_base_product_region,根据主产品id获取的所有数据:regionList)
  2. 循环遍历fundingProductList,根据产品id获取资金方涉及的区域(loan_base_product_region,根据fundingProductList每一个元素的productId获取的所有数据:fundingRegionList)
  3. 定义一个匹配表示数count,循环遍历资金方产品区域List(fundingRegionList),在循环里面遍历主产品区域List(regionList),比较省、市、区,如果匹配上则count++,资金方产品的区域如果包含了主产品的区域,那么count的长度就是regionList.size()
  4. 然后去做相关操作即可

系统代码


/**
 * 资金方产品区域匹配
 * @param fundingProductList 资金方产品列表
 * @param regionList 主产品区域列表
 * @return
 */
public List<Long> fundMatching(List<FundingProduct> fundingProductList, List<LoanBaseProductRegion> regionList) {
   
   

	List<Long> productIdList = new ArrayList<>();
	if (null != fundingProductList){
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看看今天蟹老板又写了什么BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值