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

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

前情提要

  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){
		// 匹配资金方
		for (FundingProduct fundingProductItem : fundingProductList) {
			if (null != fundingProductItem.getFundProducId()){
				QueryFilter regionFilter = new QueryFilter();
				regionFilter.addFilter("baseProductId", fundingProductItem.getProductId());
				// 资金方列表(产品id,区域)
				List<LoanBaseProductRegion> fundingRegionList = loanBaseProductRegionService.getBySqlKeyAll(regionFilter, "getFundingRegion");
				int count = 0; // 一个区域匹配上就加一,全部匹配上,即等于regionList.size()
				// 资金方没有区域则不参与匹配
				if (null != fundingRegionList){
					for (int i = 0; i < fundingRegionList.size(); i++) { // 遍历资金方产品区域列表与主产品区域列表,比对区域
						LoanBaseProductRegion productRegionItem = fundingRegionList.get(i); // 资金方产品区域
						for (int j = 0; j < regionList.size(); j++) {
							LoanBaseProductRegion item = regionList.get(j); // 主产品区域
							if(item.getProvince().equals(productRegionItem.getProvince())) { // 省匹配上
								// 判断主产品是否有市,资金方产品是否有市,
								if(StringUtil.isNotEmpty(item.getCity()) && StringUtil.isEmpty(productRegionItem.getCity())){ // 主产品有市,资金方产品没有市,则此资金方产品匹配通过
									count++;
								}else if (StringUtil.isEmpty(item.getCity()) && StringUtil.isEmpty(productRegionItem.getCity())){ // 都没有市,但是省匹配上,则此资金方产品匹配通过
									count++;
								} else { // 都有市,比对市,相等则看区
									if (item.getCity().equals(productRegionItem.getCity())){ // 市匹配上了
										if(StringUtil.isNotEmpty(item.getArea()) && StringUtil.isEmpty(productRegionItem.getArea())){ // 主产品有区,资金方产品没有区,则此资金方产品匹配通过
											count++;
										}else if (StringUtil.isEmpty(item.getArea()) && StringUtil.isEmpty(productRegionItem.getArea())){ // 都没有区,但市匹配上,则此资金方产品通过
											count++;
										} else{ // 都有区,比对
											if (item.getArea().equals(productRegionItem.getArea())){
												count++;
											}else{
											}
										}
									}
								}
							}
						}
					}
				}

				// 存储匹配上的资金方产品id
				if (count == regionList.size()){
					productIdList.add(fundingProductItem.getProductId());
				}
			}
		}
	}
	return productIdList;
}

解决思路2(未实现)

想通过sql,同时属实比较愚笨,后续再看看

心得体会

如果数据无法全部通过sql处理完,就不要纠结,简单分步骤,然后用代码进行处理

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
人工智能+智慧教育解决方案 大数据 云平台 人工智能+智慧教育解决方案全文共12页,当前为第1页。 最前沿的人工智能科技,助力教育迈向个性化 传教式教学 大数据分析 人工智能辅助 个性化教学 智慧 教育 依托人工智能核心技术,提供覆盖教、学、考、评、管的全系列产品和区域教育信息化整体解决方案 人工智能+智慧教育解决方案全文共12页,当前为第2页。 "云网端"构建智慧课堂 教学平台 网络存储、传输 移动智能端 网 端 移动讲台、一键投屏 师生间的立体化交互 云 云:即教学云平台,提供数据处理与计算和服务等云端资源。 网:即提供本地网络接入、存储和传输的网络中间资源。 端:即终端手持设备,包括教师和学生使用终端资源。 智慧课堂 考 学 教 评 管 智慧课堂就是利用大数据、云计算、物联网和移动互联网等新一代信息技术打造的,实现课前、课中、课后全过程应用的智能、高效的课堂。通过智慧的教与学,促进全体学生实现符合个性化成长规律的智慧发展。 人工智能+智慧教育解决方案全文共12页,当前为第3页。 学习过程数据精准分析 通过过程数据采集,进行知识点归纳分析,可针对共性薄弱点,随堂讲解;个体学情,针对辅导。 9 学业发展、进退步波动 临界生、大波动生提示 试卷命题质量分析 教师 学生 进退步情况 丢分题类型/难度分析 知识点掌握情况 校长 教师发展情况 学科发展均衡度 粗心? 不熟? 不会? "一元二次方程" 出问题需要从 "有理数运算"补起 更新过程化学习数据 视频讲解 习题 精练 5898个知识点 24892个题型 规划个性化学习路径 基于知识图谱诊断分析 智慧学习 考 学 教 评 管 人工智能+智慧教育解决方案全文共12页,当前为第4页。 扫描试卷 OCR 识别结果 成绩 自动 评分 纸质试卷上手写中、英文文字具备扫描识别能力 数据采集技术突破使得智能批改和自动分析成为可能 考试后自动批改准确率高 智慧考试 考 学 教 评 管 人工智能评分的匹配度更高、差错率更低! 2012年底,广东高考口语里面测试,教育部考试中心,级专家审视评分员与人工智能评分对比。 人工智能+智慧教育解决方案全文共12页,当前为第5页。 通过校内历次学业考试情况了解各班级、各学科、各群体教学优、劣势。 以学生主观感受为核心,解读个体、群体负担成因,促进高效学习。 以教学策略为核心,关注个体、群体的学习发展,对比分析不同班级、学科教师的教学策略。 学业水平诊断 学业负担分析 教学策略诊断 提高学业成绩 减轻学业负担 增强学习信心 增进教学效能 提升核心素养 培养学习能力 智慧评价 考 学 教 评 管 水平、负担、策略多维度评价 人工智能+智慧教育解决方案全文共12页,当前为第6页。 信息综合呈现 学校间统一的监管平台、师资能力展示 专题数据评价 班级成绩升降趋势、学生偏科预测 智慧评价 考 学 教 评 管 立体分析、专题评价 人工智能+智慧教育解决方案全文共12页,当前为第7页。 走 班 排 课 数 据 收 集 学 生 评 价 教 师 考 核 2(课表) * 6(课)* 6(教师)* …(业务种类) 20(课表) * 6(课) * 2(难度) * 12(教师) * …(业务种类) 改革前 改革后 新课改、新高考带来的教务管理难度 智慧管理 考 学 教 评 管 传统+分层通用自动排课 0 1 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 基于动态规划的搜索算法 学生历史成绩 学生评价数据 教师教学质量 真实数据训练 智能排课 基于深度神经网络的分类算法 动态最优课程组生成,人工干预、效率提高10倍 志愿与学科自适应调整、调配,几乎可以满足每一个学生的志愿 支持多维约束规则,兼顾教案一致、连堂课、特定时刻等个性化要求,教师满意度高 面对改革智能排课 面对新课改的课表增加、难度增大、纬度增多情况教职工需要扩大,而人工智能恰好解决排课等问题,提高管理效率,减人力的耗费 人工智能+智慧教育解决方案全文共12页,当前为第8页。 智慧教育管理服务 学生管理 师资管理 资产管理 教务管理 家校互联 教育资源 审核管理 教育统计监管 学生基本信息 学生成绩管理 学生成长档案 …… 教师基本信息 教师成长档案 多维度评价 …… 房/地产管理 设备管理 财务管理 …… 走班排课管理 选课管理 考务管理 …… 作业信息推送 成绩报告呈现 班级圈 …… 资源推荐管理 优课评比管理 特色资源汇聚 …… 设备部署监管 资源使用监管 空间活跃监管 …… 教务处 学生处 校办 校务处 工会 财务处 后勤 教科室 人事处 政教处 团委 宣传处 门卫 … 智慧管理 考 学 教 评 管 校园管理业务全覆盖 人工智能+智慧教育解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

moonlight_Answer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值