📄 base_inc.java
字号:
package com.strongit.bi.mbs.model;
/**
*
*/
import java.math.BigDecimal;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* <p>定基增长量模型</p>
* <p>Description:定基增长量模型的算法(发展性分析)</p>
*
*
*/
public class Base_Inc {
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[] baseIncArray = new double[timespan+fcstTimespan];
try{
for (int m = 1; m < timespan; m++) {
baseIncArray[0] = 0;
BigDecimal c = new BigDecimal(originData[m] - originData[0]);//定基求差
baseIncArray[m] = c.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
catch (Exception he) {
he.printStackTrace();
}
// 添加应用该模型后的时序结果
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<baseIncArray.length;i++)
{
timeResultRow.addElement("ColumnData").setText(String.valueOf(baseIncArray[i]));
}
//double[] origin_data, String[] parameter_array,int amount_parameter, int timespan, int fcst_timespan, double[][] variable_index=null;
// if(String.valueOf(timespan)==null||timespan<0){
// timespan=1;
// }
// if(String.valueOf(fcst_timespan)==null||fcst_timespan<0){
// fcst_timespan=0;
// }
// double[] base_inc_array = new double[timespan+fcst_timespan];
// try{
// for (int m = 1; m < timespan; m++) {
// base_inc_array[0] = 0;
// BigDecimal c = new BigDecimal(origin_data[m] - origin_data[0]);//定基求差
// base_inc_array[m] = c.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// }
// }
// catch (Exception he) {
// he.printStackTrace();
// }
//return base_inc_array;
return requestDoc.asXML();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -