999

来源:互联网 发布:澳大利亚gpa算法 编辑:程序博客网 时间:2024/04/28 10:03
2.
package test.impl.util.flashUtil;

//是用这种工厂模式好些呢,还是要的时候创建map对象并初始化
//考虑了下,如果内存足够的情况下,工厂模式要好些,因为虽然多占了些内存,当创建对象的时间免了
//特别是在这种大数据量并可能切换频繁的情况下,一些经常复用的对象建议放工厂里

public class ChartStylesFactory {

    /**
     * 获取整网分析页面flash图表样式集合
     * @return
     */
    public static ExistNetworkChartStyle getExistNetworkChartStyle()
    {
        return new ExistNetworkChartStyle();
    }
    
    /**
     * 获取整改方案页面flash图表样式集合
     * @return
     */
    public static ModernizationSolutionStyle getModernizationSolutionStyle()
    {
        return new ModernizationSolutionStyle();
    }
    
    /**
     * 获取能耗对比页面flash图表样式集合
     * @return
     */
    public static EnergyConsumptionStyle getEnergyConsumptionStyle()
    {
        return new EnergyConsumptionStyle();
    }
    
    /**
     * 获取TCO页面flash图表样式集合
     * @return
     */
    public static TcoStyle getTcoStyle()
    {
        return new TcoStyle();
    }
    
    /**
     * 获取商务模式页面flash图表样式集合
     * @return
     */
    public static BusinessModelStyle getBusinessModelStyle()
    {
        return new BusinessModelStyle();
    }
    
    /**
     * 获取报告导出页面flash图表样式集合
     * @return
     */
    public static ReportPageStyle getReportPageStyle()
    {
        return new ReportPageStyle();
    }
}



4.
package test.action.energy;

import java.io.IOException;
import java.io.PrintWriter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import test.impl.util.flashUtil.ChartStylesFactory;
import test.impl.util.flashUtil.ChartXML;
import test.impl.util.log.SysLoggerManager;
import test.intf.arithmetic.NeteWorkEnergyComparisonIntf;
import test.intf.db.TestGetDataSourceIntf;
import test.intf.exception.GtsException;
import test.intf.scheme.CustomizeSolutionMgr;
import test.intf.util.log.SysLogger;
import com.opensymphony.xwork2.ActionSupport;


public class NeteWorkAnalysisAction extends ActionSupport
{
    private static final long serialVersionUID = -1264104526736339831L;
    private final SysLogger logger = SysLoggerManager
        .getLogger(NeteWorkAnalysisAction.class);   
    private NeteWorkEnergyComparisonIntf neteWorkEnergyComparisonIntf;
    private CustomizeSolutionMgr customizeSolutionMgr;
    public void setNeteWorkEnergyComparisonIntf(
            NeteWorkEnergyComparisonIntf neteWorkEnergyComparisonIntf)
    {
        this.neteWorkEnergyComparisonIntf = neteWorkEnergyComparisonIntf;
    }

    public void setCustomizeSolutionMgr(
            CustomizeSolutionMgr customizeSolutionMgr)
    {
        this.customizeSolutionMgr = customizeSolutionMgr;
    }

    /**
     * 耗电量
     * @return
     */
    public String powerConsumptionAll()
    {
        boolean custFlag = false;
        int projectId = -1;
        try
        {
            projectId = (Integer)spellData(1);
        }
        catch (ParseException e)
        {
            this.logger.info("提示:全网项目Id参数异常");
        }
        //从能耗对比接口里面拿到四个值     
        try
        {
            custFlag = customizeSolutionMgr.hasCustomizeSolution(projectId);
        }
        catch (GtsException e)
        {
            this.logger.debug("提示:判断该项目下的全网有没有自定义有误!");
        }
        List<Double> powerDatas = neteWorkEnergyComparisonIntf
            .networkPowerConsumption(projectId);
//        List<String> seriesNameList = new ArrayList<String>();
//        seriesNameList.add("");
        List<String> labelList = new ArrayList<String>();
        List<String> dataList = new ArrayList<String>();
        if (custFlag)
        {
            for (int i = 0; i < powerDatas.size(); i++)
            {
                labelList.add("Solution" + (i));
            }
            labelList.set(0, "Network");
        }
        else
        {
            for (int i = 0; i < powerDatas.size(); i++)
            {
                if (i == 0)
                {
                    labelList.add("Network");
                }
                else if (i == 1)
                {
                    labelList.add("Solution1 (ROI Min)");
                }
                else if (i == 2)
                {
                    labelList.add("Solution2 (CAPEX Min) ");
                }
                else
                {
                    labelList.add(" Solution3 (OPEX Min)");                    
                }
            }
        }
        for (int i = 0; i < powerDatas.size(); i++)
        {
            dataList.add(powerDatas.get(i) + "");
        }
        ChartXML chartXML = new ChartXML();
        chartXML.setStyles(ChartStylesFactory.getEnergyConsumptionStyle()
            .getEnergyAnalysisStyles());
//        chartXML.setDataMultiChart(labelList, seriesNameList, dataList);
        if(dataList.size()==1)
        {
            chartXML.setStyle("paletteColors", "33A9E0");//33A9E0,9FCC18,005AF2,347A1D
        }
        if(dataList.size()==2)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18");
        }
        if(dataList.size()==3)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18,005AF2");
        }
        chartXML.setSimpleChartData(labelList, dataList);
        String xmlString = chartXML.getXMLString();
        outputXML(xmlString);
        return null;
    }

    

    /**
     * 耗油量
     * @return
     */
    public String oilConsumptionComparisonAll()
    {
        boolean custFlag = false;       
        int projectId = -1;
        try
        {
            projectId = (Integer)spellData(1);            
        }
        catch (ParseException e)
        {
            this.logger.info("提示:全网项目Id参数异常");
        }
        //从能耗对比接口里面拿到四个值     
        try
        {
            custFlag = customizeSolutionMgr.hasCustomizeSolution(projectId);
        }
        catch (GtsException e)
        {
            this.logger.debug("提示:判断该项目下的全网有没有自定义有误!");
        }
        List<Double> powerDatas = neteWorkEnergyComparisonIntf
            .networkOilConsumptionComparison(projectId);
//        List<String> seriesNameList = new ArrayList<String>();
//        seriesNameList.add("");
        List<String> labelList = new ArrayList<String>();
        List<String> dataList = new ArrayList<String>();
        if (custFlag)
        {
            for (int i = 0; i < powerDatas.size(); i++)
            {
                labelList.add("Solution" + (i));
            }
            labelList.set(0, "Network");
        }
        else
        {
            for (int i = 0; i < powerDatas.size(); i++)
            {
                if (i == 0)
                {
                    labelList.add("Network");
                }
                else if (i == 1)
                {
                    labelList.add("Solution1 (ROI Min)");
                }
                else if (i == 2)
                {
                    labelList.add("Solution2 (CAPEX Min) ");
                }
                else
                {
                    labelList.add(" Solution3 (OPEX Min)");                    
                }
            }
        }
        for (int i = 0; i < powerDatas.size(); i++)
        {
            dataList.add(powerDatas.get(i) + "");
        }
        ChartXML chartXML = new ChartXML();
        chartXML.setStyles(ChartStylesFactory.getEnergyConsumptionStyle()
            .getEnergyAnalysisOilStyles());
//        chartXML.setDataMultiChart(labelList, seriesNameList, dataList);
        if(dataList.size()==1)
        {
            chartXML.setStyle("paletteColors", "33A9E0");//33A9E0,9FCC18,005AF2,347A1D
        }
        if(dataList.size()==2)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18");
        }
        if(dataList.size()==3)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18,005AF2");
        }
        chartXML.setSimpleChartData(labelList, dataList);
        String xmlString = chartXML.getXMLString();
        outputXML(xmlString);
        return null;
    }   
    
    /**
     * 获取油机的运行时间
     * @return
     */
    public String oilmRuntimeAll()
    {
        boolean custFlag=false;            
        int projectId=-1;  
        try {
            projectId=(Integer)spellData(1);
        } catch (ParseException e) {
            this.logger.info("提示:全网项目Id参数异常");
        }          
       //从能耗对比接口里面拿到四个值     
        
        try
        {
            custFlag=customizeSolutionMgr.hasCustomizeSolution(projectId);
        }
        catch (GtsException e)
        {
           this.logger.debug("提示:判断该项目下的全网有没有自定义有误!");
        }
        List<Double> powerDatas = neteWorkEnergyComparisonIntf.networkOilmRuntime(projectId);             
//        List<String> seriesNameList = new ArrayList<String>();
//        seriesNameList.add("");
        List<String> labelList = new ArrayList<String>();
        List<String> dataList = new ArrayList<String>();
        if(custFlag)
        {
            for(int i=0; i<powerDatas.size(); i++)
            {
                labelList.add("Solution"+(i));
            }
            labelList.set(0, "Network");
        }
        else
        {
            for(int i=0; i<powerDatas.size(); i++)
            {
                if (i == 0)
                {
                    labelList.add("Network");
                }
                else if (i == 1)
                {
                    labelList.add("Solution1 (ROI Min)");
                }
                else if (i == 2)
                {
                    labelList.add("Solution2 (CAPEX Min) ");
                }
                else
                {
                    labelList.add(" Solution3 (OPEX Min)");                    
                }
            }            
        }
        for(int i=0; i<powerDatas.size(); i++)
        {           
            dataList.add(powerDatas.get(i)+"");
        }         
        ChartXML chartXML = new ChartXML();
        chartXML.setStyles(ChartStylesFactory.getEnergyConsumptionStyle().getEnergyAnalysisRunTimeStyles());
//        chartXML.setDataMultiChart(labelList, seriesNameList, dataList);
        if(dataList.size()==1)
        {
            chartXML.setStyle("paletteColors", "33A9E0");//33A9E0,9FCC18,005AF2,347A1D
        }
        if(dataList.size()==2)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18");
        }
        if(dataList.size()==3)
        {
            chartXML.setStyle("paletteColors", "33A9E0,9FCC18,005AF2");
        }
        chartXML.setSimpleChartData(labelList, dataList);
        String xmlString = chartXML.getXMLString();
        outputXML(xmlString);              
        return null;
    }    
    
    /**
     * 获取空调的耗电量
     * @return
     */
    public String airConditionPowerAll()
    {
        boolean custFlag=false;             
        int projectId=-1;
        String view = null;
        try {
            projectId=(Integer)spellData(1);                  
            view=(String)spellData(4);
        } catch (ParseException e) {
            this.logger.info("提示:全网项目Id参数异常");
        }
        
        try
        {
            custFlag=customizeSolutionMgr.hasCustomizeSolution(projectId);
        }
        catch (GtsException e)
        {
           this.logger.debug("提示:判断该项目下的全网有没有自定义有误!");
        }
        
        if("year".equals(view))
        {            
            List<Double> powerDatas = neteWorkEnergyComparisonIntf.networkAirConditionPowerYear(projectId);
//            List<String> seriesNameList = new ArrayList<String>();
//            seriesNameList.add("");
            List<String> labelList = new ArrayList<String>();
            List<String> dataList = new ArrayList<String>();
            if(custFlag)
            {
                for(int i=0; i<powerDatas.size(); i++)
                {
                    labelList.add("Solution"+(i));
                }
                labelList.set(0, "Network");
            }
            else
            {
                for(int i=0; i<powerDatas.size(); i++)
                {
                    if (i == 0)
                    {
                        labelList.add("Network");
                    }
                    else if (i == 1)
                    {
                        labelList.add("Solution1 (ROI Min)");
                    }
                    else if (i == 2)
                    {
                        labelList.add("Solution2 (CAPEX Min) ");
                    }
                    else
                    {
                        labelList.add(" Solution3 (OPEX Min)");                    
                    }
                }            
            }
            for(int i=0; i<powerDatas.size(); i++)
            {                
                dataList.add(powerDatas.get(i)+"");
            }             
            ChartXML chartXML = new ChartXML();
            chartXML.setStyles(ChartStylesFactory.getEnergyConsumptionStyle().getEnergyAnalysisAirPowerStyles());
//            chartXML.setDataMultiChart(labelList, seriesNameList, dataList);
            if(dataList.size()==1)
            {
                chartXML.setStyle("paletteColors", "33A9E0");//33A9E0,9FCC18,005AF2,347A1D
            }
            if(dataList.size()==2)
            {
                chartXML.setStyle("paletteColors", "33A9E0,9FCC18");
            }
            if(dataList.size()==3)
            {
                chartXML.setStyle("paletteColors", "33A9E0,9FCC18,005AF2");
            }
            chartXML.setSimpleChartData(labelList, dataList);
            String xmlString = chartXML.getXMLString();
            outputXML(xmlString);
        }
        if("month".equals(view))
        {
            List<String> seriesNameList = new ArrayList<String>();
            List<String> labelList = new ArrayList<String>();
            String[] months={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
            for(int i=0;i<months.length;i++)
            {
                labelList.add(months[i]);
            }           
            List<String> soultion1 = new ArrayList<String>();
            List<String> soultion2 = new ArrayList<String>();
            List<String> soultion3 = new ArrayList<String>();
            List<String> neteWork = new ArrayList<String>();
            //但是站点方案的怎么处理、、一个关于站点处理方案的map
            //这个应该是从林文贤提供的接口来拿;           
            ArrayList<ArrayList<Double>> powerDatas = neteWorkEnergyComparisonIntf.networkAirConditionPowerMonth(projectId);
            for(int i=0;i<powerDatas.size();i++)
            {
                if(i==0)
                {
                    for(int j=0;j<powerDatas.get(i).size();j++)
                    {
                        neteWork.add(powerDatas.get(i).get(j)+"");
                    }
                }
                else if(i==1)
                {
                    for(int j=0;j<powerDatas.get(i).size();j++)
                    {
                        soultion1.add(powerDatas.get(i).get(j)+"");
                    }
                }
                else if(i==2)
                {
                    for(int j=0;j<powerDatas.get(i).size();j++)
                    {
                        soultion2.add(powerDatas.get(i).get(j)+"");
                    }
                }
                else
                {
                    for(int j=0;j<powerDatas.get(i).size();j++)
                    {
                        soultion3.add(powerDatas.get(i).get(j)+"");
                    }                    
                }
            }
            if(custFlag)
            {
                for(int i=0; i<powerDatas.size(); i++)
                {
                    seriesNameList.add("Solution"+(i));
                }
                seriesNameList.set(0, "Network");
            }
            else
            {
                for(int i=0; i<powerDatas.size(); i++)
                {
                    if (i == 0&&i!=(powerDatas.size()-1))
                    {
                        seriesNameList.add("Network");
                    }
                    else if (i == 1&&i!=(powerDatas.size()-1))
                    {
                        seriesNameList.add("Solution1 (ROI Min)");
                    }
                    else if (i == 2&&i!=(powerDatas.size()-1))
                    {
                        seriesNameList.add("Solution2 (CAPEX Min) ");
                    }
                    else
                    {
                        seriesNameList.add(" Solution3 (OPEX Min)");                    
                    }
                }            
            }            
            ChartXML chartXML = new ChartXML();
            chartXML.setStyles(ChartStylesFactory.getEnergyConsumptionStyle().getFourthEightStyles());
            if(powerDatas.size()==1)
            {
                chartXML.setDataMultiChart(labelList, seriesNameList,neteWork);
                chartXML.setStyle("paletteColors", "33A9E0");
            }
            else if(powerDatas.size()==2)
            {
                chartXML.setDataMultiChart(labelList, seriesNameList,neteWork,soultion1);
                chartXML.setStyle("paletteColors", "33A9E0,9FCC18");
            }
            else if(powerDatas.size()==3)
            {
                chartXML.setDataMultiChart(labelList, seriesNameList,neteWork,soultion1,soultion2);
                chartXML.setStyle("paletteColors", "33A9E0,9FCC18,005AF2");
            }
            else
            {
                chartXML.setDataMultiChart(labelList, seriesNameList,neteWork,soultion1,soultion2,soultion3);
            }           
            String xmlString = chartXML.getXMLString();
            outputXML(xmlString);
        }
        return null;
    }

    //从request中拿取参数信息
    private Object spellData(int type) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        HttpServletRequest request = ServletActionContext.getRequest();
        if (type == 1)
        {
            String projectId = (String)request.getSession().getAttribute(
                "projectId");
            int projectID = 0;
            if (null != projectId && !"".equals(projectId))
            {
                projectID = Integer.parseInt((String)projectId);
                return projectID;
            }
            else
            {
                this.logger.error("警告!!拿不到项目id!");
                return null;
            }
        }
        else
        {
            String view = request.getParameter("view");
            if (view == null)
            {
                view = "";
            }
            return view;
        }

    }

    /**
     * 向客户端输出数据
     * 用于ajax
     * @param obj
     */
    public void outputXML(Object obj)
    {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/xml");
        response.setCharacterEncoding("UTF-8");
        PrintWriter writer = null;
        try
        {
            writer = response.getWriter();
            writer.print(obj);
            writer.flush();
        }
        catch (IOException e)
        {
            this.logger.error("IO异常:未成功获取输出流");
        }
        finally
        {
            if(null != writer)
            {
                writer.close();
            }
        }
    }
    
    /**
     * 向客户端输出数据
     * 用于ajax
     * @param obj
     */
    public void outputText(Object obj)
    {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("UTF-8");
        PrintWriter writer = null;
        try
        {
            writer = response.getWriter();
            writer.print(obj);
            writer.flush();
        }
        catch (IOException e)
        {
            this.logger.error("IO异常:未成功获取输出流");
        }
        finally
        {
            if(null != writer)
            {
                writer.close();
            }
        }
    }
}

function networkFun()
{
    var netWork_charty1 = new FusionCharts(path+"/flash/swf/Column2D.swf", "netWork_chartID1", "668", "158", "0", "1");
    //var netWork_chartm1 = new FusionCharts(path+"/flash/swf/MSColumn2D.swf", "netWork_chartID1", "685", "158", "0", "1");
    var netWork_charty2 = new FusionCharts(path+"/flash/swf/Column2D.swf", "netWork_chartID1_1", "668", "158", "0", "1");
    //var netWork_chartm2 = new FusionCharts(path+"/flash/swf/MSColumn2D.swf", "netWork_chartID1_1", "685", "158", "0", "1");
    var netWork_charty3 = new FusionCharts(path+"/flash/swf/Column2D.swf", "netWork_chartID2", "668", "158", "0", "1");
    //var netWork_chartm3 = new FusionCharts(path+"/flash/swf/MSColumn2D.swf", "netWork_chartID2", "685", "158", "0", "1");
    var netWork_charty4 = new FusionCharts(path+"/flash/swf/Column2D.swf", "netWork_chartID3", "668", "158", "0", "1");
    var netWork_chartm4 = new FusionCharts(path+"/flash/swf/MSColumn2D.swf", "netWork_chartID3_1", "668", "158", "0", "1");
    //数据关联

    netWork_charty1.setDataURL(path+"/powerConsumptionAllAction.action?view="+"year"+"&mid="+Math.random());
    //netWork_chartm1.setDataURL(path+"/powerConsumptionAllAction.action?view="+"month"+"&mid="+Math.random());
    netWork_charty2.setDataURL(path+"/oilConsumptionComparisonAllAction.action?view="+"year"+"&mid="+Math.random());
    //netWork_chartm2.setDataURL(path+"/oilConsumptionComparisonAllAction.action?view="+"month"+"&mid="+Math.random());
    netWork_charty3.setDataURL(path+"/oilmRuntimeAllAction.action?view="+"year"+"&mid="+Math.random());
    //netWork_chartm3.setDataURL(path+"/oilmRuntimeAllAction.action?view="+"month"+"&mid="+Math.random());
    netWork_charty4.setDataURL(path+"/airConditionPowerAllAction.action?view="+"year"+"&mid="+Math.random());
    netWork_chartm4.setDataURL(path+"/airConditionPowerAllAction.action?view="+"month"+"&mid="+Math.random());
    //DIV关联
    netWork_charty1.render("netWork_charty1");
    //netWork_chartm1.render("netWork_chartm1");
    netWork_charty2.render("netWork_charty2");
    //netWork_chartm2.render("netWork_chartm2");
    netWork_charty3.render("netWork_charty3");
    //netWork_chartm3.render("netWork_chartm3");
    netWork_charty4.render("netWork_charty4");
    netWork_chartm4.render("netWork_chartm4");
}
<div id="netWork_charty1" align="center"></div>