zoukankan      html  css  js  c++  java
  • .NET下的并行开发(案例代码)

    以下主要是通过一个报表处理程序来说明并行开发的方式。对于数据冲突和共享,可以通过对象数组解决。设计到并行的核心代码已用红色标出。在并行程序的处理上,需要把原来串行的子公司变成一个一个类的对象,让所有的类对象一起并行运行就达到提高响应速率的目的了。并行设计中,主要的还是编程的思想,并行的语法,规则都是规划好的。好的工具就看你如何使用了。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    //using Excel = Microsoft.Office.Interop.Excel;
    using gcdb;
    using System.Data.Odbc;
    using gc;
    using ExcelQuicker.Framework;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Data.SqlClient;

    namespace scbb
    {

        //企业营业额完成情况一览表
        //具体注释,请参考 建筑业总产值分类完成情况表
        // h 开头为海外项目统计参数
        //"企业营业额完成情况表.xls";//模板文件名称



        public class scbb_b7
        {
            string downExcelFile;

            string c_yhid, c_yhdw, c_xmmxf, c_sfgz, c_ddlb, c_yearmonth, c_yhjb, c_ybtime;
            int c_dlml;//是否存储到独立目录
            string yearmonth;
            string jibie;
            string year;
            string month;
            string ddlb;
          
          public   object[,] objDataExcel;
            System.Collections.Queue q = new Queue();
            System.Collections.Queue q2 = new Queue();

            protected string tbn(int n)
            {
                if (n <= 0 || n > 10)
                    return "";
                string[] bigNum = new string[] { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
                return bigNum[n - 1];

            }
            protected string toBigNumber(int num)
            {
                string b = "";
                if (num > 100 || num <= 0)
                    return "";
                if (num <= 10)
                    b = tbn(num);
                else if (num < 20)
                {
                    b = "十" + tbn(num % 10);
                }
                else
                {
                    b = tbn(num / 10) + "十" + tbn(num % 10);
                }

                b = b + "、";
                return b;
            }

            DB db = new DB();

            public void Initialize()
            {
                if (Directory.Exists(HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7)) == false)
                {
                    Directory.CreateDirectory(HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7));
                }
                EQConfiguration.XmlFileName = HttpRuntime.AppDomainAppPath + "ExcelQuicker\Lib\Message.xml";
                EQConfiguration.Language = "EN";
                if (c_dlml == 1)
                {
                    EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\";
                    EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7) + "\";
                }
                else
                {
                    if (Directory.Exists(HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4)) == false)
                    {
                        Directory.CreateDirectory(HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4));
                    }
                    EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4);
                    EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4);
                }
                EQConfiguration.TemplateFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\Template\";

            }


            public void setSpeficedRange(int x0, int y0, int x1, int y1, EQWorksheet xlWorkSheet, string content)
            {
                string[,] dwfzr = new string[1, 1];  //建立二維數組對象
                dwfzr[0, 0] = content;
                EQRange range = new EQRange(dwfzr, x0, y0, x1, y1);
                range.MergeCells = true;
                xlWorkSheet.Add(range);

            }
            void set_Excel(string strFileName, string strTemplate, DwObject[] dwmobjdata)
            {

                OdbcDataReader tempOdr;
                EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);
                //objApp.AddOutputFile(strFileName, EQReportFormat.HTML);    //Command to output a html format report file at the same time
                EQWorksheet objWS = new EQWorksheet("报表数据");
                EQRange zrange = new EQRange(objDataExcel, 8, 1, 9, 140);
                zrange.AddStyle(EQStyleFactory.BlackAndGrayBorder);
                zrange.AddStyle(EQStyleFactory.OuterBorder);
                zrange.AddStyle(EQStyleFactory.AlignRight);
                zrange.Type = EQType.General;
                setRowColor(8, 19, 10, objWS);
                objWS.Add(zrange);
                EQRange[] range = new EQRange[dwmobjdata.Length];
                int sum = 0;
                int sun = 0;
                for (int p = 0; p < dwmobjdata.Length; p++)
                {

                    sum += dwmobjdata[p].objData .GetLength(0);
                    sun = sum - dwmobjdata[p].objData.GetLength(0);

                    range[p] = new EQRange(dwmobjdata[p].objData, 10+ sun, 1, 10 + sum - 1, 140);
                    range[p].Type = EQType.General;

                    //設置單元格整體風格
                    range[p].AddStyle(EQStyleFactory.BlackAndGrayBorder);
                    range[p].AddStyle(EQStyleFactory.OuterBorder);
                    range[p].AddStyle(EQStyleFactory.AlignRight); //設置所有單元格右對齊
                    //設置第一列左對齊
                    EQColumnStyle mycolumnstyle = new EQColumnStyle();
                    mycolumnstyle.SetColumnStyle(1, EQStyleFactory.AlignCenter);
                    mycolumnstyle.SetColumnStyle(2, EQStyleFactory.AlignLeft);
                    setRowColor(10 + sun, 19, 10, objWS);

                    objWS.Add(range[p]);
                    objWS.Add(mycolumnstyle);
                }




                //设置特定行的格式

                //设置表头部信息
                string sql_yhdw = "select dwmc from t_dw where dwid = '" + c_yhdw + "'";
                tempOdr = db.getReader(sql_yhdw);
                tempOdr.Read();
                string mydwmc = tempOdr.GetValue(0).ToString();//设置选定区域的文本,可用于设置填报公司
                mydwmc = "填报单位:" + mydwmc;
                tempOdr.Close();
                setSpeficedRange(4, 1, 4, 1, objWS, mydwmc);
                setSpeficedRange(3, 1, 3, 12, objWS, "单位建设项目主要实物工程量完成情况(" + c_ddlb + ")");
                string mytime = year + "年" + month + "月";
                setSpeficedRange(4, 6, 4, 7, objWS, mytime);
                //设置表尾信息
                FillIn(sum, objWS);
                objApp.Add(objWS);
                try
                {
                    objApp.Output();
                }
                catch (Exception)
                {
                    objApp.Dispose();
                    zdscbb.xrbbhcwcyy("b7", c_yhdw, c_xmmxf, c_sfgz, c_ddlb, c_ybtime, "Output Error");
                }
            }




            public void setRowColor(int rowNum, int colorIndex, int fontSize, EQWorksheet xlWorkSheet)
            {

                EQRowStyle mystyle = new EQRowStyle();
                EQRangeStyle mystyle2 = new EQRangeStyle();
                mystyle2.BackColor = colorIndex;
                mystyle2.Size = fontSize;
                //mystyle2.Bond = true;
                string endColumn1 = "e";   //结束时的列
                string endColumn2 = "j";  //结束时的列
                mystyle.SetRowStyle(rowNum, endColumn1, endColumn2, mystyle2);
                xlWorkSheet.Add(mystyle);
            }


            public int get_Count_From_Sql(string sql)
            {

                OdbcDataReader tempOdr;
                int tempNum;
                tempOdr = db.getReader(sql);
                tempOdr.Read();
                tempNum = int.Parse(tempOdr.GetValue(0).ToString());//公司数目
                tempOdr.Close();

                return tempNum;
            }






            public void xrbb(string cl_yhid, string cl_yhdw, string cl_xmmxf, string cl_sfgz, string cl_ddlb, string cl_yearmonth, string cl_yhjb, string cl_ybtime, int cl_dlml)
            {
                c_dlml = cl_dlml;
                c_yhid = cl_yhid;
                c_yhdw = cl_yhdw;
                c_xmmxf = cl_xmmxf;
                c_sfgz = cl_sfgz;
                c_ddlb = cl_ddlb;
                c_yearmonth = cl_yearmonth;
                c_yhjb = cl_yhjb;
                c_ybtime = cl_ybtime;
                string strFileName = "b7_" + c_yhdw + "_" + c_ddlb + c_xmmxf + c_ybtime + c_sfgz + ".xls";//生成的临时文件名称
                zdscbb.xrbbhc("b7", cl_yhdw, cl_xmmxf, cl_sfgz, cl_ddlb, cl_ybtime, strFileName);
                downExcelFile = "../ExcelQuicker/TempReports/" + strFileName;



                yearmonth = c_yearmonth;
                jibie = c_yhjb.ToString().Trim();
                ddlb = c_ddlb.ToString();
                year = yearmonth.Substring(0, 4);
                month = yearmonth.Substring(5, 2);

                int iMonth = Convert.ToInt32(month);

                if (iMonth < 10)
                    month = month.Substring(1, 1);

                ////项目数
                //string sql_xmmc_count1 = "select count(*) from (  select id,sgdw,xmmc,sfgz" + c_yhjb + ",ddlb  from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and" +
                //                " sgdw like'" + c_yhdw + "%'  or (sgdw like '" + c_yhdw + "%' and fgcid is null ) "
                //    +
                //     " union (select id,sgdw,xmmc,sfgz" + c_yhjb + ",ddlb from T_gcxm where (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and  (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid in (select id from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  xmgldw = '" +
                //        c_yhdw + "' ) and sgdw !='" + c_yhdw + "') ) as table_name  where 1=1 ";


            string sql_xmmc_count=  " select count(*) from t_gcxm where (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')";
                //所有项目
                string sql_xmmc = "select * from ( select id, xmmc, sgdw,sfgz" + c_yhjb + ",ddlb from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and " +
                  " sgdw like'" + c_yhdw + "%' and ((sgdw <>'" + c_yhdw
                  + "' and fgcid is  null)or(sgdw ='";
               
                string sql_xmmc_part2 = "' )) " + " union (select id,xmmc, sgdw,sfgz" + c_yhjb + ",ddlb from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid in (select id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  xmgldw = '" + c_yhdw + "' ) and sgdw !='" + c_yhdw + "') ) as table_name where 1=1   ";

                //        土石方    隧道  桥梁(设计折合 米)     其中:大中桥        其中:立交、高架桥        正线铺轨(公里)    其中:高速    站线铺轨(公里)  铁路制梁(片)    铁路架梁(孔)    机械化整道(公里)    无砟轨道通信线路(公里)自动闭塞(区间公里)    电气集中(联锁道岔)    供电线路(公里)变配电所(站)    接触网(正线公里)    牵引变电所(处)    房屋施工面积    房屋竣工面积    地铁成洞(折合米)        地铁车站(座)        轻轨(折合米)        公路(折合公里)        其中:高速公路        其中:路面(平方米)        



                string sql_sum_klwc = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(tdq),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),null,sum(sw_tljl),null,null,sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(sd_txxl),sum(sd_xlgl),sum(sd_txsb),sum(sd_zdbs),sum(sd_dqjz),sum(fj_fwjzmj),sum(fj_fjzhmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm) from VIEW_YB_ALL where " +
                    "  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and sgdw like'" + c_yhdw + "%'";

                //(a.bqswl <> 1) OR (a.bqswl IS NULL)
                //本年完成
                string sql_sum_bnwc = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(tdq),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),null,sum(sw_tljl),null,null,sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(sd_txxl),sum(sd_xlgl),sum(sd_txsb),sum(sd_zdbs),sum(sd_dqjz),sum(fj_fwjzmj),sum(fj_fjzhmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm) from VIEW_YB_XM where " +
                    " sgdw like'" + c_yhdw + "%' and  year(ybsj)= '" + year + "'" + " and month(ybsj)<= " + month + " ";

                //string subproject_yb = " or  fgcid in ( select xmid from view_yb_xm where sgdw like '" +c_yhdw + "%'  and  year(ybsj)= '" + year + "' ";

                if (c_sfgz.ToString() == "关注项目")
                {
                    sql_xmmc_count = sql_xmmc_count + " and sfgz" + c_yhjb + "=1";
                    sql_xmmc_part2 = sql_xmmc_part2 + " and sfgz" + c_yhjb + "=1";
                    sql_sum_klwc = sql_sum_klwc + " and sfgz" + c_yhjb + "=1";
                    sql_sum_bnwc = sql_sum_bnwc + " and sfgz" + c_yhjb + "=1";

                }
                if (c_sfgz.ToString() == "非关注项目")
                {
                    sql_xmmc_count = sql_xmmc_count + " and sfgz" + c_yhjb + "=0";
                    sql_xmmc_part2 = sql_xmmc_part2 + " and sfgz" + c_yhjb + "=0";
                    sql_sum_klwc = sql_sum_klwc + " and sfgz" + c_yhjb + "=0";
                    sql_sum_bnwc = sql_sum_bnwc + " and sfgz" + c_yhjb + "=0";

                }

                string sql_sum_klwc_total = sql_sum_klwc;
                string sql_sum_bnwc_total = sql_sum_bnwc;


                if (c_ddlb.ToString() == "海外")
                {
                    sql_xmmc_count = sql_xmmc_count + "and ddlb = '海外'";
                    sql_xmmc_part2 = sql_xmmc_part2 + "and ddlb = '海外'";
                    sql_sum_klwc = sql_sum_klwc + "and ddlb = '海外'";
                    sql_sum_bnwc = sql_sum_bnwc + "and ddlb = '海外'";

                }

                if (c_ddlb.ToString() == "国内")
                {
                    sql_xmmc_count = sql_xmmc_count + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_xmmc_part2 = sql_xmmc_part2 + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_sum_klwc = sql_sum_klwc + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_sum_bnwc = sql_sum_bnwc + "and (ddlb = '省内' or ddlb = '省外')";
                }



                int cnum = 140;

                objDataExcel = new object[2, cnum];  //分配两行,一行显示总计数据,一行显示范围


                for (int i2 = 0; i2 < 2; i2++)
                {
                    for (int j2 = 0; j2 < cnum; j2++)
                        objDataExcel[i2, j2] = "";
                }



                objDataExcel[0, 1] = "总计";

              if (c_ddlb.ToString() == "国内" || c_ddlb.ToString() == "海外" || c_ddlb.ToString()=="全部")
                  objDataExcel[1, 1] = "  " + c_ddlb.ToString() + "项目计";

             
                //单位名称分类
                //支公司检阅信息
                string sql_dw_fid = "select id from t_dw  where dwid = '" + c_yhdw + "' ";  //查询单位的编号
                OdbcDataReader odr_dw_fid = db.getReader(sql_dw_fid);
                odr_dw_fid.Read();
              string   dw_fid = odr_dw_fid["id"].ToString ();
                odr_dw_fid.Close();



                string sql_dw = "select dwmc,dwid,dwjb,fdwid from t_dw where (dwid = '" + c_yhdw + "' or fdwid =  '" + dw_fid  + "' ) and bbxs is null order by dwxh";
            
               
                OdbcDataReader odr_dw = db.getReader(sql_dw);


            

             
                int dw_count = 0;    //记录总的单位数量
                string sql_dw_count2 = "select count(*) from t_dw where (dwid = '" + c_yhdw + "' or fdwid =  '" + dw_fid + "' ) and bbxs is null  ";
               
                OdbcDataReader odr = db.getReader(sql_dw_count2);
                odr.Read();
                dw_count = (int)odr[0];
                odr.Close();
                int dws = 0;//记录单位的数量
                string[] arry = new string[dw_count];//记录单位的编号

                while (odr_dw.Read())
                {
                    arry[dws] = odr_dw.GetValue(1).ToString();
                    dws++;
                }
                odr_dw.Close();
                DwObject[] dwmess = new DwObject[dw_count];

             
                Parallel.For(0, dw_count, (y) =>
                {
                    dwmess[y] = new DwObject();
                    dwmess[y].post( year,c_yhdw,sql_sum_bnwc, sql_xmmc_part2, sql_sum_klwc, sql_xmmc, c_xmmxf, c_yhjb,  c_ybtime, y, sql_xmmc_count);
                    dwmess[y].dws(arry[y]);
                  

                });


                /********************
                 *
                 * 统计总计数据
                 * *********************/
                if (c_yhjb.ToString() == "3")
                {
                    for (int z = 0; z < cnum; z++)
                    { objDataExcel[0, z] = ""; }
                }
                else
                {
                    double[] sum = new double[150];
                    for (int z = 2; z < cnum; z++)
                    {
                        for (int p = 0; p < dwmess.Length; p++)
                        {
                            if ( dwmess[p].objData[0, z].ToString() != "")
                                sum[z] += Convert.ToDouble(dwmess[p].objData[0, z]);

                        }

                        if (c_yhdw.ToString() != "gf" && dwmess[0].objData[0, z].ToString() != "")
                        {
                            sum[z] -= 2 * Convert.ToDouble(dwmess[0].objData[0, z]); /*分公司项目存在局指,项目重复显示*/
                        }
                        objDataExcel[0, z] = sum[z];


                    }
                }

             
                string strTemplate = "单位实物量统计表.xls";
                Initialize();//调用excel quicker初始化函数
                set_Excel(strFileName, strTemplate,dwmess );//生成并设置此excel表
                zdscbb.xrbbhcwc("b7", cl_yhdw, cl_xmmxf, cl_sfgz, cl_ddlb, cl_ybtime, strFileName);
            }

            private void FillIn(int num, EQWorksheet xlWorkSheet)
            {
                string sql_user = "select  dwfzr,tjfzr,yhmc,lxfs from t_user where yhid = '" + c_yhid + "'";

                OdbcDataReader odr_user = db.getReader(sql_user);
                odr_user.Read();

                int Allnum = num + 11;
                string[,] dwfzr = new string[1, 1];
                dwfzr[0, 0] = "单位负责人:" + odr_user.GetValue(0).ToString() + "          统计负责人:" + odr_user.GetValue(1).ToString() + "           填报人:" + odr_user.GetValue(2).ToString() + "          联系电话:" + odr_user.GetValue(3).ToString() + "          上报日期:" + DateTime.Today.ToShortDateString();
                EQRange range = new EQRange(dwfzr, Allnum, 1, Allnum, 10);

                range.MergeCells = true;
                range.AddStyle(EQStyleFactory.AlignCenter);






                xlWorkSheet.Add(range);

                odr_user.Close();
                //完成填报
            }


         
        }

      public class DwObject
        {
              int xmxh = 0;
              Hashtable ht;
            int row_position = 0;
            int control_col = 139;
            int gclb_row = 0;
            int zj_row = 0;
            int gnxm_row = 0;
            public int rnum = 0;
            public int cnum = 140;  // 列
            public object[,] objData;
            DB db = new DB();
            int flxh=0;   //工程项目序号
        
          
            //由scbb_b7中赋值后传过来的变量
            string sql_sum_bnwc = "";
           string sql_xmmc_part2 ="";
            string sql_sum_klwc = "";
            string sql_xmmc = "";
            string sql_xmmc_count;
            string c_xmmxf, c_yhjb, c_ybtime,c_yhdw,year;
            //在调用函数时要先赋值给他们
            public void post(string year1,string c_yhdw1,string sql_sum_bnwc1, string sql_xmmc_part21, string sql_sum_klwc1, string sql_xmmc1, string c_xmmxf1, string c_yhjb1, string c_ybtime1, int flxh1,string  sql_xmmc_count1)
            {
                c_yhdw=c_yhdw1;
                sql_sum_bnwc = sql_sum_bnwc1;
               sql_xmmc_part2 =sql_xmmc_part21;
                sql_sum_klwc = sql_sum_klwc1;
                sql_xmmc = sql_xmmc1;
                c_xmmxf = c_xmmxf1;
                c_yhjb = c_yhjb1;
                c_ybtime = c_ybtime1;
                flxh = flxh1;
                sql_xmmc_count= sql_xmmc_count1;
                  year=year1;

            }

            public int rnumber(string dwid, string sql_xmmc_count)
            {



                int gclb_count = 1;

                int gcxm_count = 0;  //记录具体的项目数量
                if (c_xmmxf == "True")    //是否显示明细
                {
                    // 统计行数
                    OdbcDataReader odr;
                     string sql_xmmc_count_dw = sql_xmmc_count + "and sgdw = '" + dwid + "'";
                      if (dwid == c_yhdw.ToString())

                   sql_xmmc_count_dw = sql_xmmc_count + "and sgdw = '" + dwid + "'";
                      else  
                      
                          sql_xmmc_count_dw = sql_xmmc_count + "and sgdw like '" + dwid + "%'";


                      odr = db.getReader(sql_xmmc_count_dw);       //工程项目行数
                      odr.Read();
                      gcxm_count = (int)odr[0];
                      odr.Close();

                      int zgc_count = 0;
                    /***********************************
                     * 对于股份公司,在求它空间的时候,应该去掉相应重复的跨单位工程
                     *
                     * *************************************/
                      if (c_yhdw.ToString() == "gf" && dwid != c_yhdw.ToString())   
                      {
                          //跨单位管理的工程将显示两遍,
                         
                          string sql_zgcxm = "select count(*) from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid is not null and sgdw like'" + dwid + "%'";
                          odr = db.getReader(sql_zgcxm);
                          odr.Read();
                          zgc_count = (int)odr[0];
                          odr.Close();
                         

                      }

                      gcxm_count -= zgc_count;

                    //====================================================================统计子项目个数       
                        string odr_gcxm_gclb = "";
                        if (dwid == c_yhdw.ToString())
                            odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";

                        else
                            odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw like'" + dwid + "%' order by id desc";

                        OdbcDataReader odr_gcxm_count = db.getReader(odr_gcxm_gclb);



                        while (odr_gcxm_count.Read())
                        {
                            string s_sql_sfyzxm = "select isnull(fgcid,0) from t_gcxm where id=" + odr_gcxm_count.GetValue(0).ToString() + " ";
                            OdbcDataReader odr_zxm = db.getReader(s_sql_sfyzxm);
                            if (odr_zxm.Read())
                            {
                                if (odr_zxm[0].ToString() != "0" && dwid != c_yhdw)
                                {
                                    string sql1 = "select xmgldw,xmmc,id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  id=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + odr_gcxm_count.GetValue(0).ToString() + "')";
                                    OdbcDataReader reader = db.getReader(sql1);
                                    while (reader.Read())
                                    {
                                        if (reader.GetValue(0).ToString() == dwid)
                                        {
                                            //表明当前项目的父项目的项目管理单位是用户单位
                                            string sql_zxm_count = "select count(*) from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + odr_gcxm_count.GetValue(0).ToString() + "') ";
                                            OdbcDataReader odr_zxm_count = db.getReader(sql_zxm_count);
                                            odr_zxm_count.Read();
                                            gcxm_count += (int)odr_zxm_count[0];
                                            odr_zxm_count.Close();
                                        }

                                    }
                                    reader.Close();
                                }
                            }
                        }
                        odr_gcxm_count.Close();
                    }

                
                int total = gcxm_count  + gclb_count;
                return total;

            }




            
            protected string toBigNumber(int num)
            {
                string[] bigNum = new string[] { "", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十" };
                if (num > 0 && num <= 20)
                    return bigNum[num] + "、";
                else
                    if (num < 100)
                    {
                        return bigNum[num / 10] + bigNum[num % 10 + 10] + "、";
                    }
                    else
                        return "";
            }

          
          public object[,] dws(string dwid)
            {

                rnum = rnumber(dwid,sql_xmmc_count );
                objData = new object[rnum, cnum];
                for (int i2 = 0; i2 < rnum; i2++)
                {
                    for (int j2 = 0; j2 < cnum; j2++)
                        objData[i2, j2] = "";
                }
                
                gclb_row = row_position;
               
              string sql_dw = "select dwmc from t_dw where dwid = '" + dwid + "'";
                OdbcDataReader odr_dw = db.getReader(sql_dw);
                string dwmc = "";
                odr_dw.Read();
                dwmc = odr_dw.GetValue(0).ToString();
                odr_dw.Close();
                objData[row_position, 0] = toBigNumber(flxh + 1);   //计量单位的编号,序号为生成的对象
                objData[row_position, 1] = dwmc;
                    //记录分类位置

                 //   q.Enqueue(row_position);

                    string sql_sum_bnwc_gclb = "";
                    if (dwid == c_yhdw.ToString())
                        sql_sum_bnwc_gclb = sql_sum_bnwc + "and sgdw = '" + dwid + "'";  // //工程分类
                    else
                        sql_sum_bnwc_gclb = sql_sum_bnwc + "and sgdw like '" + dwid + "%'";  // //工程分类
                 
                    OdbcDataReader odr_sum_gclb_bnwc;//= db.getReader(sql_sum_bnwc_gclb);

                    //同一类别项目总计行本年完成
                    // odr_sum_gclb_bnwc.Read();

                  int   n = 1;
                  int   k = 1;

                    while (n < control_col)
                    {

                        objData[row_position, n + 1] = "";// odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                        n += 3;
                        k++;
                    }
                    string sql_sum_klwc_gclb = "";
                    if (dwid == c_yhdw.ToString())
                        sql_sum_klwc_gclb = sql_sum_klwc + "and sgdw = '" + dwid + "'";  //
                    else
                        sql_sum_klwc_gclb = sql_sum_klwc + "and sgdw like '" + dwid + "%'";  //
                    OdbcDataReader odr_sum_gclb_klwc;// = db.getReader(sql_sum_klwc_gclb);

                    //同一类别项目总计行开累完成
                    // odr_sum_gclb_klwc.Read();
                int   m = 3;
                int   i = 1;
                    while (m < control_col + 1)
                    {
                        objData[row_position, m] = "";// odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                        m += 2;
                        i++;
                    }


                    row_position++;

                    //不同项目 列循环

                    string odr_gcxm_gclb = "";
                    //if(Session["yhjb"].ToString()=="3")
                    //    odr_gcxm_gclb = sql_xmmc;
                    //  else
                    if (dwid == c_yhdw.ToString())
                        odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";

                    else
                        odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw like'" + dwid + "%' order by id desc";

                    //odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";
                    OdbcDataReader odr_gcxm = db.getReader(odr_gcxm_gclb);



                    //gclb = 3;
                    ht = new Hashtable();
                    while (odr_gcxm.Read())    //同一单位,不同项目循环
                    {
                        int i_sfjs;//标志是改项目数据是否参与总计行的合计。
                        i_sfjs = 0;


                        string s_xmid;
                        s_xmid = odr_gcxm.GetValue(0).ToString();
                        string s_sql_sfyzxm = "select isnull(fgcid,0) from t_gcxm where id=" + s_xmid + " ";
                        OdbcDataReader odr_zxm = db.getReader(s_sql_sfyzxm);
                        if (odr_zxm.Read())
                        {
                            if (odr_zxm[0].ToString() == "0" || dwid == c_yhdw)
                                i_sfjs = 1;

                        }
                        odr_zxm.Close();


                        if (check_is_xmgldw(odr_gcxm.GetValue(0).ToString(), dwid))//检查当前项目是不是项目管理单位,传递项目id和单位id
                        {
                            continue;
                        }
                        //填写项目序号
                        xmxh++;
                        if (c_xmmxf.ToString() == "True")
                        {
                            objData[row_position, 0] = xmxh;


                            objData[row_position, 1] = "" + odr_gcxm.GetValue(1).ToString();   //项目名称
                        }
                        //同一项目列循环的本年完成

                        //存储过程返回的是---年累产值  type=2
                        //
                        string sql_sum_bnwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                    + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                    + ", 2";          //

                        odr_sum_gclb_bnwc = db.getReader(sql_sum_bnwc_gclbtemp);

                        odr_sum_gclb_bnwc.Read();

                        n = 2;
                        k = 1;

                        while (n < control_col)  //同一项目列循环的本年完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, n + 1] = odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                            }
                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;
                            if (objData[gclb_row, n + 1].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, n + 1]));
                            if (objData[zj_row, n + 1].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, n + 1]));
                            //if (objData[gnxm_row, n + 1].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, n + 1]));
                            if (odr_sum_gclb_bnwc.GetValue(k).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_bnwc.GetValue(k));



                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, n + 1] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, n + 1] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, n + 1] = (d_gcxm + d_gnxm).ToString();
                            n += 3;
                            k++;
                        }
                        odr_sum_gclb_bnwc.Close();
                        //同一项目列循环的   开累完成
                        //存储过程返回的是---开累产值  type=3
                        //
                        string sql_sum_klwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                    + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                    + ", 3";          //

                        odr_sum_gclb_klwc = db.getReader(sql_sum_klwc_gclbtemp);

                        odr_sum_gclb_klwc.Read();

                        m = 4;
                        i = 1;
                        while (m < control_col + 1)//同一项目列循环的开累完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, m] = odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                            }
                            /*  d_zj     总计行
                             *  d_gnxm   国内项目或海外项目行 总计值
                             *  d_gclb   工程类别行
                             */

                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;

                            if (objData[gclb_row, m].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                            if (objData[zj_row, m].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, m]));
                            //if (objData[gnxm_row, m].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                            if (odr_sum_gclb_klwc.GetValue(i).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_klwc.GetValue(i).ToString());

                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                            m += 3;
                            i++;
                        }
                        odr_sum_gclb_klwc.Close();

                        //同一项目列循环的本月完成
                        string sql_sum_bywc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                  + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                  + ", 1";          //

                        OdbcDataReader odr_sum_gclb_bywc = db.getReader(sql_sum_bywc_gclbtemp);

                        odr_sum_gclb_bywc.Read();

                        m = 2;
                        i = 1;
                        while (m < control_col + 1)//同一项目列循环的开累完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, m] = odr_sum_gclb_bywc.GetValue(i).ToString(); //在range中的位置 (1,1)
                            }
                            /*  d_zj     总计行
                             *  d_gnxm   国内项目或海外项目行 总计值
                             *  d_gclb   工程类别行
                             */

                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;

                            if (objData[gclb_row, m].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                            if (objData[zj_row, m].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, m]));
                            // if (objData[gnxm_row, m].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                            if (odr_sum_gclb_bywc.GetValue(i).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_bywc.GetValue(i).ToString());

                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                            m += 3;
                            i++;
                        }
                        odr_sum_gclb_bywc.Close();
                        if (c_xmmxf.ToString() == "True")
                        {
                            row_position = row_position + 1;
                        }




                    }  //while (odr_gcxm.Read())    //同一类别,不同项目循环     
                    odr_gcxm.Close();
                   // rnum = row_position;
                    return objData;
                   
                }   
              
              
                //设置队列中单元格字体


                //for (int i2 = 0; i2 < rnum; i2++)
                //    for (int j = 0; j < cnum; j++)
                //    {
                //        if (j == 1 || j == 0)
                //            continue;
                //        if (objData[i2, j] != null && objData[i2, j].ToString() != "")
                //            objData[i2, j] = decimal.Parse(objData[i2, j].ToString());
                //    }

                //以下处理房屋施工面积,房屋竣工面积
                //  for (int i2 = 0; i2 < rnum; i2++)
                // {
                //     objData[i2, 75] = objData[i2, 74];
                //     objData[i2, 74] = "";
                //objData[i2, 82] = objData[i2, 80];
                //objData[i2, 81] = objData[i2, 80];
                //objData[i2, 39] = objData[i2, 38];
                // objData[i2, 40] = objData[i2, 38];
                // objData[i2, 39] = Convert.ToDouble(objData[i2, 38].ToString() != "" ? objData[i2, 38].ToString() : "0") - Convert.ToDouble(objData[i2, 43].ToString() != "" ? objData[i2, 43].ToString() : "0") + Convert.ToDouble(objData[i2, 42].ToString() != "" ? objData[i2, 42].ToString() : "0");//房屋设计面积 - 开累竣工面积+本年竣工面积;
                //  if (objData[i2, 39].ToString() == "0")
                //      objData[i2, 39] = "";
                //  objData[i2, 40] = objData[i2, 38];
                //  objData[i2, 38] = "";
                //  }
                //清除3级单位的总计行,三级单位总计计算有误,而且也不需要总计
             
            bool check_is_xmgldw(string xmid, string dwid)
            {
                //if (Session["yhdw"].ToString() != dwid)
                //     return;
                bool flag = false;
                string xmmc = "";
                string fxmid = "";
                string sql1 = "select xmgldw,xmmc,id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  id=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + xmid + "')";
                OdbcDataReader reader = db.getReader(sql1);
                while (reader.Read())
                {
                    if (reader.GetValue(0).ToString() == dwid)
                        flag = true;//表明当前项目的父项目的项目管理单位是用户单位
                    xmmc = reader.GetValue(1).ToString();
                    fxmid = reader.GetValue(2).ToString();
                }

                reader.Close();

                if (flag)
                {
                    if (!ht.Contains(fxmid))
                    {
                        ht.Add(fxmid, "");
                    }
                    else
                    {
                        return flag;
                    }
                    if (c_xmmxf.ToString() == "True")
                    {
                       // q2.Enqueue(row_position);
                        objData[row_position, 1] = "" + xmmc;
                        gnxm_row = row_position;
                        row_position++;
                    }
                    string sql = "select id,xmmc from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + xmid + "') ";
                    reader = db.getReader(sql);
                    while (reader.Read())
                    {
                        int i_hj;
                        i_hj = 0;
                        if (xmid == reader.GetValue(0).ToString() && dwid == c_yhdw)
                            i_hj = 1;//项目管理单位参与合计
                        fill_zxm(reader.GetValue(0).ToString(), reader.GetValue(1).ToString(), i_hj);
                    }
                    reader.Close();
                }


                return flag;

            }
            //填充子项目
            void fill_zxm(string xmid, string xmmc, int sfhj)
            {




                //填写项目序号
                xmxh++;
                if (c_xmmxf.ToString() == "True")
                {
                    objData[row_position, 0] = xmxh;


                    objData[row_position, 1] = "" + xmmc;   //项目名称
                }
                //同一项目列循环的本年完成
                //   string sql_sum_bnwc_gclbtemp = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),sum(sw_tlzl),sum(sw_tljl),sum(sw_jxhzd),sum(sw_wzgd),sum(sd_txxl) ,sum(sd_zdbs),sum(sd_dqjz),sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(fj_fwjzmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm),sum(sw_gljl) " +

                //存储过程返回的是---年累产值  type=2
                //
                string sql_sum_bnwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                            + c_ybtime.ToString().Trim() + "'," + c_yhjb
                            + ", 2";          //

                OdbcDataReader odr_sum_gclb_bnwc = db.getReader(sql_sum_bnwc_gclbtemp);

                odr_sum_gclb_bnwc.Read();

                int n = 2;
                int k = 1;

                while (n < control_col)  //同一项目列循环的本年完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, n + 1] = odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                    }
                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;
                    if (objData[gclb_row, n + 1].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, n + 1]));
                    if (objData[zj_row, n + 1].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, n + 1]));
                    if (objData[gnxm_row, n + 1].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, n + 1]));
                    if (odr_sum_gclb_bnwc.GetValue(k).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_bnwc.GetValue(k).ToString());



                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, n + 1] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, n + 1] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, n + 1] = (d_gcxm + d_gnxm).ToString();
                    n += 3;
                    k++;
                }
                odr_sum_gclb_bnwc.Close();
                //同一项目列循环的   开累完成
                //存储过程返回的是---开累产值  type=3
                //
                string sql_sum_klwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                            + c_ybtime.ToString().Trim() + "'," + c_yhjb
                            + ", 3";          //

                OdbcDataReader odr_sum_gclb_klwc = db.getReader(sql_sum_klwc_gclbtemp);

                odr_sum_gclb_klwc.Read();

                int m = 4;
                int i = 1;
                while (m < control_col + 1)//同一项目列循环的开累完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, m] = odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                    }
                    /*  d_zj     总计行
                     *
                     */

                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;

                    if (objData[gclb_row, m].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                    if (objData[zj_row, m].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, m]));
                    if (objData[gnxm_row, m].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                    if (odr_sum_gclb_klwc.GetValue(i).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_klwc.GetValue(i).ToString());

                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                    m += 3;
                    i++;
                }
                odr_sum_gclb_klwc.Close();


                //同一项目列循环的本月完成
                string sql_sum_bywc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                          + c_ybtime.ToString().Trim() + "'," + c_yhjb
                          + ", 1";          //

                OdbcDataReader odr_sum_gclb_bywc = db.getReader(sql_sum_bywc_gclbtemp);

                odr_sum_gclb_bywc.Read();

                m = 2;
                i = 1;
                while (m < control_col + 1)//同一项目列循环的开累完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, m] = odr_sum_gclb_bywc.GetValue(i).ToString(); //在range中的位置 (1,1)
                    }
                    /*  d_zj     总计行
                     *
                     */

                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;

                    if (objData[gclb_row, m].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                    if (objData[zj_row, m].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, m]));
                    if (objData[gnxm_row, m].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                    if (odr_sum_gclb_bywc.GetValue(i).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_bywc.GetValue(i).ToString());

                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                    m += 3;
                    i++;
                }
                odr_sum_gclb_bywc.Close();
                if (c_xmmxf.ToString() == "True")
                {
                    row_position = row_position + 1;
                }




            }
          
        }
        }

  • 相关阅读:
    codevs 1115 开心的金明
    POJ 1125 Stockbroker Grapevine
    POJ 2421 constructing roads
    codevs 1390 回文平方数 USACO
    codevs 1131 统计单词数 2011年NOIP全国联赛普及组
    codevs 1313 质因数分解
    洛谷 绕钉子的长绳子
    洛谷 P1276 校门外的树(增强版)
    codevs 2627 村村通
    codevs 1191 数轴染色
  • 原文地址:https://www.cnblogs.com/wlandwl/p/prollodomo.html
Copyright © 2011-2022 走看看