package com.study.springboot.test.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.study.springboot.test.entity.AchieveDetail;
/***
* 数据计算方法
*/
public class AchieveComputer {
public static void main(String[] args) {
//规则
// 审批未通过的情况
//1、同一指标客户信息号,业务量一样,日期相同 , 数据可以覆盖
//2、同一指标客户信息号,日期相同,业务量不一样,数据不做覆盖,(营销了多个支行)
//审批已通过
//第一种情况 直接提示 指标已经上传了,不可以上传重复日期
//第二种情况。
List<AchieveDetail> sourceList = new ArrayList<AchieveDetail>();
//审批通过 (同一天学透通公司向两个支行分别借款不同的金额)
sourceList.add(new AchieveDetail("1", "1001", "00325", "00225", "91310106342157294B", "5000000", "2023-02-17", "1"));
sourceList.add(new AchieveDetail("2", "1001", "00326", "00226", "91310106342157294B", "2000000", "2023-02-17", "1"));
//审批未通过 (同一天幼赋科技向两家支行借款)
sourceList.add(new AchieveDetail("3", "1002", "00325", "00226", "91310120332590684X", "200000", "2023-02-27", "0"));
sourceList.add(new AchieveDetail("3", "1002", "00325", "00226", "91310120332590684X", "200000", "2023-02-27", "0"));
List<AchieveDetail> uploadList = new ArrayList<AchieveDetail>();
// 同一指标 客户号信息号,业务量,日期相同 ,数据做覆盖
uploadList.add(new AchieveDetail("", "1001", "00325", "00225", "91310106342157294B", "5000000", "2023-02-17", "1"));
// 同一指标 客户号信息号,日期相同,业务量不一样,不同分行,数据不做覆盖
uploadList.add(new AchieveDetail("", "1001", "00325", "00227", "91310106342157294B", "5000000", "2023-02-17", "1"));
// 同一指标 客户信息号,日期不相同,业务量一样,数据不做覆盖
uploadList.add(new AchieveDetail("", "1001", "00325", "00225", "91310106342157294B", "5000000", "2023-02-18", "1"));
uploadList.add(new AchieveDetail("", "1001", "00325", "00225", "91310106342157294B", "5000000", "2023-02-18", "1"));
// 同一指标 客户号信息号,业务量,日期相同,数据做覆盖 (删除原有数据,新数据可以继续上传)
List<AchieveDetail> updList = sourceList.stream()
.filter(item -> uploadList.stream()
.map(e -> e.getIndexId() + e.getMbrno() + e.getMbrno() + e.getCustNo() + e.getAchieve() + e.getDataDate())
.collect(Collectors.toList())
.contains(item.getIndexId() + item.getMbrno() + item.getMbrno() + item.getCustNo() + item.getAchieve() + item.getDataDate()))
.collect(Collectors.toList());
updList.stream().forEach(System.out::println);
System.out.println("-----以上为交集------");
// 取出数据库中指标相同 支行号相同的差值
List<AchieveDetail> diff = sourceList.stream().filter(item -> !uploadList.stream().map(up -> up.getIndexId() + up.getMbrno()).collect(Collectors.toList()).contains(item.getIndexId() + item.getMbrno())).collect(Collectors.toList());
diff.stream().forEach(System.out::println);
System.out.println("-----以上为差集------");
List<AchieveDetail> diff2 = uploadList.stream().filter(item -> !sourceList.stream().map(up -> up.getIndexId() + up.getMbrno()).
collect(Collectors.toList()).contains(item.getIndexId() + item.getMbrno())).collect(Collectors.toList());
diff2.stream().forEach(System.out::println);
}
}
取差集结果demo算法测试
需积分: 3 125 浏览量
2023-03-18
14:06:49
上传
评论
收藏 3KB ZIP 举报
不做温水青蛙
- 粉丝: 45
- 资源: 17
最新资源
- lo - 迭代切片、地图、通道Go 1.18+ 泛型的 Lodash 风格的 Go 库
- 一个高分辨率红外分子光谱的快速逐行代码,使用radis实现
- springboot-06-security security的页面模板(06).zip
- ILI9431台湾奕力显示芯片中文数据手册(机器翻译)
- ILI9488台湾奕力显示芯片中文数据手册(机器翻译)
- opengauss cdc
- mariadb驱动,kettle连接mariadb驱动
- VMware workstation 17 pro个人免费版
- MT3405-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- node-jenkins-api库研究.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈