2017.5小结

要从后台拿到指标最大数值的,思路是:
1.后台写个新方法getMaxTargetValue(),接收限制条件时间,区域,指标
2.前台创造一个getMaxForChart方法,通过ajax调用getMaxTargetValue()方法,要有个返回值
细节:1. request.getParameterValues用来获取前台数组,参数是string类型,
2.Double.valueOf(ftargetvalue).intValue(); string转double再转int
3、 Collections.max(targetvalueList); jdk里封装的方法,可以直接获取list中最大值
4、调试中,给js打debugger,可以跳到方法里,但不打debugger,就不进方法。尝试了js的立即执行函数,(function(){}{} ),匿名函数,都不好使,后来发现是ajax是异步执行的,改为同步执行,问题解决
断点会执行的原理是,断点会阻隔线程继续执行。日了狗

public void getMaxTargetValue() {
        HttpServletRequest request = ServletActionContext.getRequest();
        String regionCodes = getStringFromArray(request.getParameterValues("regionCodeStr"));
        String timeArrayStr = getStringFromArray(request.getParameterValues("timeStr"));
        String targetArrayStr = getStringFromArray(request.getParameterValues("targetNameStr"));

        List<TbtkyTablevalue> dataTableList = statisticsdataService
                .getDataTableValueList(regionCodes, timeArrayStr,
                        targetArrayStr);

        // List<Object> targetvalueList = null; 用这个报空指针错
        // 拿到指标值中的最大值
        List<Integer> targetvalueList = new ArrayList<Integer>();
        for (TbtkyTablevalue tableValue : dataTableList) {
            String ftargetvalue = tableValue.getFtargetvalue();
            int allValue = Double.valueOf(ftargetvalue).intValue(); 

            try {
                targetvalueList.add(allValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        int maxTarget = (Integer) Collections.max(targetvalueList);
//      this.sendJSONWeb("{success:true,'maxTarget':" + maxTarget + "}");

        this.sendJSONWeb("{\"success\": \"true\", \"maxTarget\":"+maxTarget+"}");  //需要这样返回,否则跳error
    }
//拿到指标所有数据中的最大值
    getMaxForChart : function getMaxForChart(params){
        var maxTarget; 
        var targetName = params.targetName;
        var targetNameStr = targetName.join(","); //数组转字符串

        var regionCode = params.regionCode;
        var regionCodeStr

        //如果区域为空或1,那么join方法报错。通过判断 如果regionCode是string类型,就不用转string,否则转
        if(typeof regionCode == "string"){
            regionCodeStr = regionCode
        }else{
            regionCodeStr = regionCode.join(",");
        }

        var time = params.time;
        var timeStr;
        if(time==""){
            timeStr="";
        }else{
            timeStr = time.join(",");
        }

        $.ajax({
            url: getRootPath()+'/statisticsData/getMaxTargetValueStatisticsDataAction.action',  
            data : {
                targetNameStr,
                regionCodeStr,
                timeStr
            }, // 要传递的参数
            type : 'post',// 数据发送方式
            async : false, //同步执行 
            dataType : 'json',
            success : function(data) {
                maxTarget = data.maxTarget;
            }
        });
        return maxTarget;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值