4.21

经过4.21和4.22的不断修改完善,经测试可以用。(有史以来写的最牛逼的一段代码了)

将其设置成CalaculationUtil工具类

package com.simnectzbank.lbs.processlayer.stock.util;

import com.simnectzbank.lbs.processlayer.stock.clientmodel.StockIndexHistoryModel;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;

public class CalculationUtil {
    @SuppressWarnings("unchecked")
    public static Map<String, BigDecimal> calculateChinaUpDown(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList1 = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList1 = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList1.get(i).equals("SSEC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList1.get(m).equals("SSEC")){
                                    BigDecimal subtract = lastList1.get(i).subtract(lastList1.get(m));
                                    upDownMap.put("SSEC",subtract);
                                    if(upDownMap.get("SSEC")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }else if(typeList1.get(i).equals("CSI300")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList1.get(n).equals("CSI300")){
                                    BigDecimal subtract = lastList1.get(i).subtract(lastList1.get(n));
                                    upDownMap.put("CSI300",subtract);
                                    if(upDownMap.get("CSI300")!=null){
                                        flag1=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }

    public static Map<String, BigDecimal> calculateHkUpDown(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList1 = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList1 = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag2){
                    if(typeList1.get(i).equals("HSI")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList1.get(m).equals("HSI")){
                                    BigDecimal subtract = lastList1.get(i).subtract(lastList1.get(m));
                                    upDownMap.put("HSI",subtract);
                                    if(upDownMap.get("HSI")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        return upDownMap;
    }

    public static Map<String, BigDecimal> calculateWorldUpDown(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList1 = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList1 = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList1.get(i).equals("IXIC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList1.get(m).equals("IXIC")){
                                    BigDecimal subtract = lastList1.get(i).subtract(lastList1.get(m));
                                    upDownMap.put("IXIC",subtract);
                                    if(upDownMap.get("IXIC")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }else if(typeList1.get(i).equals("DJI")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList1.get(n).equals("DJI")){
                                    BigDecimal subtract = lastList1.get(i).subtract(lastList1.get(n));
                                    upDownMap.put("DJI",subtract);
                                    if(upDownMap.get("DJI")!=null){
                                        flag1=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }


    @SuppressWarnings("unchecked")
    public static Map<String, BigDecimal> calculateChinaUpDownPercentage(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> upDownList = list.stream().map(StockIndexHistoryModel::getUpDown).collect(Collectors.toList());
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList.get(i).equals("SSEC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("SSEC")){
                                    BigDecimal divide = upDownList.get(i).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                    upDownMap.put("SSEC",divide);
                                    if(upDownMap.get("SSEC")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }else if(typeList.get(i).equals("CSI300")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList.get(n).equals("CSI300")){
                                    BigDecimal divide = upDownList.get(i).divide(lastList.get(n),3,BigDecimal.ROUND_HALF_UP);
                                    upDownMap.put("CSI300",divide);
                                    if(upDownMap.get("CSI300")!=null){
                                        flag1=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }

    public static Map<String, BigDecimal> calculateHkUpDownPercentage(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        List<BigDecimal> upDownList = list.stream().map(StockIndexHistoryModel::getUpDown).collect(Collectors.toList());

        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag2){
                    if(typeList.get(i).equals("HSI")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("HSI")){
                                    BigDecimal subtract = upDownList.get(i).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                    upDownMap.put("HSI",subtract);
                                    if(upDownMap.get("HSI")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        return upDownMap;
    }

    @SuppressWarnings("unchecked")
    public static Map<String, BigDecimal> calculateWorldUpDownPercentage(List<StockIndexHistoryModel> list){

        //获取list对象的last字段组装成新list
        List<BigDecimal> upDownList = list.stream().map(StockIndexHistoryModel::getUpDown).collect(Collectors.toList());
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList.get(i).equals("IXIC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("IXIC")){
                                    BigDecimal divide = upDownList.get(i).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                    upDownMap.put("IXIC",divide);
                                    if(upDownMap.get("IXIC")!=null){
                                        flag2=false;
                                    }
                                }
                            }
                        }
                    }else if(typeList.get(i).equals("DJI")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList.get(n).equals("DJI")){
                                    BigDecimal divide = upDownList.get(i).divide(lastList.get(n),3,BigDecimal.ROUND_HALF_UP);
                                    upDownMap.put("DJI",divide);
                                    if(upDownMap.get("DJI")!=null){
                                        flag1=false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }

    public static Map<String, BigDecimal> calculateHkUpDownWeek(List<StockIndexHistoryModel> list) throws ParseException {

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        List<BigDecimal> timeList = list.stream().map(StockIndexHistoryModel::getUpdateTime).collect(Collectors.toList());


        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag2){
                    if(typeList.get(i).equals("HSI")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("HSI")){
                                    if(DateToStamp.getWeek(String.valueOf(timeList.get(m))).equals("星期五")){
                                        BigDecimal subtract = lastList.get(i).subtract(lastList.get(m)).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                        upDownMap.put("HSI",subtract);
                                        if(upDownMap.get("HSI")!=null){
                                            flag2=false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        return upDownMap;
    }

    @SuppressWarnings("unchecked")
    public static Map<String, BigDecimal> calculateChinaUpDownWeek(List<StockIndexHistoryModel> list) throws ParseException {

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        List<BigDecimal> timeList = list.stream().map(StockIndexHistoryModel::getUpdateTime).collect(Collectors.toList());

        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList.get(i).equals("SSEC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("SSEC")){
                                    if(DateToStamp.getWeek(String.valueOf(timeList.get(m))).equals("星期五")){
                                        BigDecimal divide = lastList.get(i).subtract(lastList.get(m)).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                        upDownMap.put("SSEC",divide);
                                        if(upDownMap.get("SSEC")!=null){
                                            flag2=false;
                                        }
                                    }
                                }
                            }
                        }
                    }else if(typeList.get(i).equals("CSI300")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList.get(n).equals("CSI300")){
                                    if(DateToStamp.getWeek(String.valueOf(timeList.get(n))).equals("星期五")){
                                        BigDecimal divide = lastList.get(i).subtract(lastList.get(n)).divide(lastList.get(n),3,BigDecimal.ROUND_HALF_UP);
                                        upDownMap.put("CSI300",divide);
                                        if(upDownMap.get("CSI300")!=null){
                                            flag1=false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }
    @SuppressWarnings("unchecked")
    public static Map<String, BigDecimal> calculateWorldUpDownWeek(List<StockIndexHistoryModel> list) throws ParseException {

        //获取list对象的last字段组装成新list
        List<BigDecimal> lastList = list.stream().map(StockIndexHistoryModel::getLast).collect(Collectors.toList());
        List<String> typeList = list.stream().map(StockIndexHistoryModel::getType).collect(Collectors.toList());
        List<BigDecimal> timeList = list.stream().map(StockIndexHistoryModel::getUpdateTime).collect(Collectors.toList());

        //创建UpDown的Map
        Map<String,BigDecimal> upDownMap = new HashMap<>();

        boolean flag1= true;
        boolean flag2= true;
        for(int i=0;i<2;i++){
            for(int j=0;j<list.size();j++){
                if(flag1 && flag2){
                    if(typeList.get(i).equals("IXIC")){
                        for(int m =i+1;m<list.size();m++){
                            if(flag2){
                                if(typeList.get(m).equals("IXIC")){
                                    if(DateToStamp.getWeek(String.valueOf(timeList.get(m))).equals("星期五")){
                                        BigDecimal divide = lastList.get(i).subtract(lastList.get(m)).divide(lastList.get(m),3,BigDecimal.ROUND_HALF_UP);
                                        upDownMap.put("IXIC",divide);
                                        if(upDownMap.get("IXIC")!=null){
                                            flag2=false;
                                        }
                                    }
                                }
                            }
                        }
                    }else if(typeList.get(i).equals("DJI")){
                        for(int n =i+1;n<list.size();n++){
                            if(flag1){
                                if(typeList.get(n).equals("DJI")){
                                    if(DateToStamp.getWeek(String.valueOf(timeList.get(n))).equals("星期五")){
                                        BigDecimal divide = lastList.get(i).subtract(lastList.get(n)).divide(lastList.get(n),3,BigDecimal.ROUND_HALF_UP);
                                        upDownMap.put("DJI",divide);
                                        if(upDownMap.get("DJI")!=null){
                                            flag1=false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            flag1 =true;
            flag2 =true;
        }

        return upDownMap;
    }

    public static void main(String[] args) throws ParseException {

        List<StockIndexHistoryModel> list = new ArrayList<>();
        StockIndexHistoryModel s1 = new StockIndexHistoryModel(1,new BigDecimal ("4947.75"),new BigDecimal ("3314.03"),new BigDecimal ("3349.05"),new BigDecimal ("3314.03"),"2018年1月2日",new BigDecimal ("1618217381883"),"CSI300",new BigDecimal (-43.42),null,null);
        StockIndexHistoryModel s2 = new StockIndexHistoryModel(2,new BigDecimal ("3412.95"),new BigDecimal ("3347.74"),new BigDecimal ("3379.92"),new BigDecimal ("3345.29"),"2018年1月3日",new BigDecimal ("1617897600000"),"SSEC",new BigDecimal (-16.6),null,null);
        StockIndexHistoryModel s3 = new StockIndexHistoryModel(3,new BigDecimal ("3450.68"),new BigDecimal ("3371"),new BigDecimal ("3392.83"),new BigDecimal ("3365.3"),"2018年1月4日",new BigDecimal ("1617811200000"),"SSEC",new BigDecimal (-1),null,null);
        StockIndexHistoryModel s4 = new StockIndexHistoryModel(4,new BigDecimal ("5035.34"),new BigDecimal ("3386.46"),new BigDecimal ("3402.07"),new BigDecimal ("3380.24"),"2018年1月5日",new BigDecimal ("1617897600000"),"CSI300",new BigDecimal (-2),null,null);
        StockIndexHistoryModel s5 = new StockIndexHistoryModel(5,new BigDecimal ("5035.34"),new BigDecimal ("3386.46"),new BigDecimal ("3482.55"),new BigDecimal ("3380.24"),"2018年1月5日",new BigDecimal ("1515081600000"),"SSEC",null,null,null);
        StockIndexHistoryModel s6 = new StockIndexHistoryModel(6,new BigDecimal ("5035.34"),new BigDecimal ("3386.46"),new BigDecimal ("5112.21"),new BigDecimal ("3380.24"),"2018年1月5日",new BigDecimal ("1515081600000"),"CSI300",null,null,null);
        StockIndexHistoryModel s7 = new StockIndexHistoryModel(7,new BigDecimal ("5035.34"),new BigDecimal ("3386.46"),new BigDecimal ("5112.21"),new BigDecimal ("3380.24"),"2018年1月5日",new BigDecimal ("1515081600000"),"SSEC",null,null,null);
        StockIndexHistoryModel s8 = new StockIndexHistoryModel(8,new BigDecimal ("5035.34"),new BigDecimal ("3386.46"),new BigDecimal ("5112.21"),new BigDecimal ("3380.24"),"2018年1月5日",new BigDecimal ("1515081600000"),"CSI300",null,null,null);
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        list.add(s7);
        list.add(s8);


//        list.get(0).setUpDownWeek(CalculationUtil.calculateHkUpDownWeek(list).get("HSI"));
//        System.out.println(list.get(0).getUpDownWeek());

        //计算本周升跌
        if(list.get(0).getType().equals("SSEC")){
            list.get(0).setUpDownWeek(CalculationUtil.calculateChinaUpDownWeek(list).get("SSEC"));
            list.get(1).setUpDownWeek(CalculationUtil.calculateChinaUpDownWeek(list).get("CSI300"));
        }else if(list.get(0).getType().equals("CSI300")){
            list.get(0).setUpDownWeek(CalculationUtil.calculateChinaUpDownWeek(list).get("CSI300"));
            list.get(1).setUpDownWeek(CalculationUtil.calculateChinaUpDownWeek(list).get("SSEC"));
        }

        List<StockIndexHistoryModel> listTwo = new ArrayList<>();
        for(int i=0;i<2;i++){
            listTwo.add(list.get(i));
        }
        for(int i =0;i<2;i++){
            System.out.println(listTwo.get(i).getUpDownWeek());
        }




    }





}

日期转时间戳,时间戳转日期,时间戳转星期的工具类;DateToStamp

package com.simnectzbank.lbs.processlayer.stock.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class DateToStamp {

    public static String date2Stamp(String s) throws ParseException {
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        if(s != null && !s.equals("")){
            Date date =simpleDateFormat.parse(s);
            long ts = date.getTime();
            res = String.valueOf(ts);
            return res;
        }
        return s;
    }

    public static Map<String,String> stamp2Date(String stamp) throws ParseException {
        String sd0 ="";
        String sd7 ="";
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if(stamp != null && !stamp.equals("")){
            sd0 = sdf.format(new Date(Long.parseLong(stamp)));
            Date sd00 = sdf.parse(sd0);//转成data类型的
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sd00);
            c1.add(Calendar.DATE, -8);//一周内的数据,12条
            c2.setTime(sd00);
            c2.add(Calendar.DATE, 1);//加一天
            sd7 = sdf.format(c1.getTime());
            sd0 = sdf.format(c2.getTime());

            sd0 = date2Stamp(sd0);//转成时间戳 当前时间+1天
            sd7 = date2Stamp(sd7);//转成时间戳 当前时间前7天

            Map<String,String> map = new HashMap<String, String>();
            map.put("sd0",sd0);
            map.put("sd7",sd7);
            return map;
        }else{
            Map<String,String> map = new HashMap<String, String>();
            map.put("sd0",stamp);
            map.put("sd7",stamp);
            return map;
        }
    }

    //输入时间戳,输出星期几
    public static String getWeek(String stamp) throws ParseException {
        String sd0 ="";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if(stamp != null && !stamp.equals("")){
            sd0 = sdf.format(new Date(Long.parseLong(stamp)));
            Date sd00 = sdf.parse(sd0);//转成data类型的
            SimpleDateFormat sdf2 = new SimpleDateFormat("EEEE");
            String week = sdf2.format(sd00);
            return week;
        }else{
            return null;
        }
    }



    public static void main(String[] args) throws ParseException {

//        Map<String, String> map = stamp2Date("1618217382172");
//        System.out.println( map.get("sd0"));
//        System.out.println( map.get("sd7"));
        System.out.println(getWeek("1618217382172"));
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值