📄 base_rate.java
字号:
package com.strongit.bi.mbs.model;
/**
* <p>定基增长率模型</p>
* <p>Description:定基增长率模型的算法(发展性分析)</p>
*
*/
import java.math.BigDecimal;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class Base_Rate {
public String stat(String xmlString)
{
Document requestDoc = null;
try {
requestDoc = DocumentHelper.parseText(xmlString);
} catch (DocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<Element> dataList=requestDoc.selectNodes("/Submodel/Data/RowData/ColumnData");
double[] originData=new double[dataList.size()];
//获取原始数据
for(int i=0;i<dataList.size();i++)
{
if(dataList.get(i).getText()!=null&&!"".equals(dataList.get(i).getText()))
{
originData[i]=Double.valueOf(dataList.get(i).getText()).doubleValue();
}
}
//获取时间段长度
Element timespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/Timespan");
int timespan=0;
if(timespanElement.getText()!=null&&!"".equals(timespanElement.getText()))
timespan=Integer.valueOf(timespanElement.getText()).intValue();
//获取预测时间长度
Element fcstTimespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/FcstTimespan");
int fcstTimespan=0;
if(fcstTimespanElement.getText()!=null&&!"".equals(fcstTimespanElement.getText()))
fcstTimespan=Integer.valueOf(fcstTimespanElement.getText()).intValue();
double[] baserate_array = new double[timespan + fcstTimespan];
for (int m = 1; m < timespan; m++) {
baserate_array[0] = 0;
if(originData[0]!=0)
{
BigDecimal c = new BigDecimal( ( (originData[m] -
originData[0]) /
originData[0]) * 100); //定基求差值比率
baserate_array[m] = c.setScale(2, BigDecimal.ROUND_HALF_UP).
doubleValue();
}
}
// 添加应用该模型后的时序结果
Element resultDatas=requestDoc.getRootElement().element("ResultDatas");
Element timeResultData=resultDatas.addElement("ResultData").addAttribute("view","TimeSeries");
Element timeResultRow=timeResultData.addElement("RowData").addAttribute("label", "定基增长率");
for(int i=0;i<baserate_array.length;i++)
{
timeResultRow.addElement("ColumnData").setText(String.valueOf(baserate_array[i]));
}
return requestDoc.asXML();
}
// public double[] stat(double[] origin_data, String[] parameter_array,
// int amount_parameter, int timespan, int fcst_timespan, double[][] variable_index) {
//if (String.valueOf(timespan) == null || timespan < 0) {
//timespan = 1;
//}
//if (String.valueOf(fcst_timespan) == null || fcst_timespan < 0) {
//fcst_timespan = 0;
//}
//double[] baserate_array = new double[timespan + fcst_timespan];
//
//try{
//for (int m = 1; m < timespan; m++) {
//baserate_array[0] = 0;
//if(origin_data[0]!=0)
//{
//BigDecimal c = new BigDecimal( ( (origin_data[m] -
// origin_data[0]) /
// origin_data[0]) * 100); //定基求差值比率
//
//
//baserate_array[m] = c.setScale(2, BigDecimal.ROUND_HALF_UP).
// doubleValue();
//}
//}
//}
//catch (Exception he) {
//he.printStackTrace();
//}
//
//return baserate_array;
//}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -