Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.userid > 0)
            {
                if (CheckUserPopedoms("X") || CheckUserPopedoms("6-7-8"))
                {
                    Act           = HTTPRequest.GetString("Act").Trim();
                    tType         = HTTPRequest.GetInt("tType", 0);
                    feeType       = HTTPRequest.GetInt("feeType", 0);
                    get_direction = HTTPRequest.GetInt("get_direction", 0);//借贷方向
                    //获得科目节点选择
                    getTreeNode = HTTPRequest.GetString("get_treeNode").Trim();
                    string[] result = getTreeNode.Split(',');
                    if (ispost)
                    {
                        maori_ID = HTTPRequest.GetInt("maori_ID", 0);  //销售类型:0=购销;1=联营:2=直销
                        moriType = HTTPRequest.GetInt("moriType", 0);  //毛利统计类别
                        sDate    = Utils.IsDateString(Utils.ChkSQL(HTTPRequest.GetString("sDate"))) ? DateTime.Parse(Utils.ChkSQL(HTTPRequest.GetString("sDate"))) : DateTime.Now;
                        stDate   = Utils.IsDateString(Utils.ChkSQL(HTTPRequest.GetString("stDate"))) ? DateTime.Parse(Utils.ChkSQL(HTTPRequest.GetString("stDate"))) : DateTime.Now;



                        //1.费用统计_门店
                        if (tType == 1 && feeType == 0)
                        {
                            //获得科目名称
                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                DataTable dttp = CostDetails.getObjectsListName(Convert.ToInt32(result[i]));

                                if (dttp != null)
                                {
                                    for (int pp = 0; pp < dttp.Rows.Count; pp++)
                                    {
                                        TreeName += dttp.Rows[0][0] + ",";
                                    }
                                }
                                else
                                {
                                    TreeName = "";
                                }
                            }
                            if (TreeName.Length > 2)
                            {
                                TreeName = TreeName.Substring(0, TreeName.Length - 1);
                            }
                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                //判断是否有子节点
                                bool tl = DataClass.ExistsFeesSubjectClassChild(Convert.ToInt32(result[i]));
                                if (tl)
                                {
                                    dataclass = CostDetails.getTreeChildrenCount(result[i]);

                                    string[] dclass = dataclass.Split(',');
                                    for (int j = 0; j < dclass.Length - 1; j++)
                                    {
                                        //获得科目信息
                                        kList = CostDetails.getTreeName(dclass[j].ToString());
                                        DataTable dt = kList.Copy();
                                        dt.TableName = "p_" + j + c_count;
                                        kDateSetName.Tables.Add(dt);

                                        //获得区域信息
                                        rList = CostDetails.getRegionList(get_direction, dclass[j].ToString(), sDate, stDate);

                                        DataTable rt = rList.Copy();
                                        rt.TableName = "o_" + j + c_count;
                                        rDateSet.Tables.Add(rt);
                                        c_count = c_count + 1;
                                    }

                                    DataTable newDataTable = rDateSet.Tables[0].Clone();             //创建新表 克隆以有表的架构
                                    object[]  objArray     = new object[newDataTable.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                    for (int m = 0; m < rDateSet.Tables.Count; m++)
                                    {
                                        if (rDateSet.Tables[m].Rows.Count > 0)
                                        {
                                            for (int n = 0; n < rDateSet.Tables[m].Rows.Count; n++)
                                            {
                                                rDateSet.Tables[m].Rows[n].ItemArray.CopyTo(objArray, 0); //将表的一行的值存放数组中
                                                newDataTable.Rows.Add(objArray);                          //将数组的值添加到新表中
                                            }
                                        }
                                    }
                                    DataView dv = new DataView(newDataTable);
                                    dv.Sort = "RegionID";
                                    nTable  = dv.ToTable(true, "RegionID", "rName");
                                }
                                else
                                {
                                    //获得科目信息
                                    kList = CostDetails.getTreeName(result[i]);
                                    DataTable dt = kList.Copy();
                                    dt.TableName = "m_" + i;
                                    kDateSetName.Tables.Add(dt);

                                    //获得区域信息
                                    rList = CostDetails.getRegionList(get_direction, result[i], sDate, stDate);

                                    DataTable rt = rList.Copy();
                                    rt.TableName = "f_" + i;
                                    rDateSet.Tables.Add(rt);

                                    DataTable newDataTable = rDateSet.Tables[0].Clone();             //创建新表 克隆以有表的架构
                                    object[]  objArray     = new object[newDataTable.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                    for (int m = 0; m < rDateSet.Tables.Count; m++)
                                    {
                                        if (rDateSet.Tables[m].Rows.Count > 0)
                                        {
                                            for (int n = 0; n < rDateSet.Tables[m].Rows.Count; n++)
                                            {
                                                rDateSet.Tables[m].Rows[n].ItemArray.CopyTo(objArray, 0); //将表的一行的值存放数组中
                                                newDataTable.Rows.Add(objArray);                          //将数组的值添加到新表中
                                            }
                                        }
                                    }
                                    DataView dv = new DataView(newDataTable);
                                    dv.Sort = "RegionID";
                                    nTable  = dv.ToTable(true, "RegionID", "rName");
                                }
                            }
                        }
                        //2.费用统计_科目
                        if (tType == 1 && feeType == 1)
                        {
                            //获得科目名称
                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                DataTable dttp = CostDetails.getObjectsListName(Convert.ToInt32(result[i]));

                                if (dttp != null)
                                {
                                    for (int pp = 0; pp < dttp.Rows.Count; pp++)
                                    {
                                        TreeName += dttp.Rows[0][0] + ",";
                                    }
                                }
                                else
                                {
                                    TreeName = "";
                                }
                            }
                            if (TreeName.Length > 2)
                            {
                                TreeName = TreeName.Substring(0, TreeName.Length - 1);
                            }

                            //把选择的科目整理到dataset中
                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                className = CostDetails.getClassName(result[i]);

                                DataTable ddt = className.Copy();
                                ddt.TableName = "k" + i + c_count;
                                classDataSet.Tables.Add(ddt);
                                c_count++;
                            }
                            //把dataset中的datatable合并到一张表中
                            newTable = classDataSet.Tables[0].Clone();              //创建新表 克隆以有表的架构
                            object[] objArray = new object[newTable.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                            for (int m = 0; m < classDataSet.Tables.Count; m++)
                            {
                                if (classDataSet.Tables[m].Rows.Count > 0)
                                {
                                    for (int n = 0; n < classDataSet.Tables[m].Rows.Count; n++)
                                    {
                                        classDataSet.Tables[m].Rows[n].ItemArray.CopyTo(objArray, 0); //将表的一行的值存放数组中
                                        newTable.Rows.Add(objArray);                                  //将数组的值添加到新表中
                                    }
                                }
                            }
                        }
                        //3.费用统计_业务员
                        if (tType == 1 && feeType == 2)
                        {
                            //获得科目名称
                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                DataTable dttp = CostDetails.getObjectsListName(Convert.ToInt32(result[i]));

                                if (dttp != null)
                                {
                                    for (int pp = 0; pp < dttp.Rows.Count; pp++)
                                    {
                                        TreeName += dttp.Rows[0][0] + ",";
                                    }
                                }
                                else
                                {
                                    TreeName = "";
                                }
                            }
                            if (TreeName.Length > 2)
                            {
                                TreeName = TreeName.Substring(0, TreeName.Length - 1);
                            }

                            for (int i = 0; i < result.Length - 1; i++)
                            {
                                //判断是否有子节点
                                bool tl = DataClass.ExistsFeesSubjectClassChild(Convert.ToInt32(result[i]));
                                if (tl)
                                {
                                    dataclass = CostDetails.getTreeChildrenCount(result[i]);

                                    string[] dclass = dataclass.Split(',');
                                    for (int j = 0; j < dclass.Length - 1; j++)
                                    {
                                        //获得科目信息
                                        kList = CostDetails.getTreeName(dclass[j].ToString());
                                        DataTable dt = kList.Copy();
                                        dt.TableName = "p_" + j + c_count;
                                        kDateSetName.Tables.Add(dt);

                                        staffList = CostDetails.getStaffName(get_direction, sDate, stDate, Convert.ToInt32(dclass[j]));
                                        DataTable stl = staffList.Copy();
                                        stl.TableName = "qp_" + j + c_count;
                                        sDataSet.Tables.Add(stl);
                                        c_count++;
                                    }
                                }
                                else
                                {
                                    //获得科目信息
                                    kList = CostDetails.getTreeName(result[i]);
                                    DataTable dt = kList.Copy();
                                    dt.TableName = "m_" + i;
                                    kDateSetName.Tables.Add(dt);
                                    //获取业务员名称
                                    staffList = CostDetails.getStaffName(get_direction, sDate, stDate, Convert.ToInt32(result[i]));
                                    DataTable stl = staffList.Copy();
                                    stl.TableName = "we_" + i + c_count;
                                    sDataSet.Tables.Add(stl);
                                }
                            }
                            sCostTable = sDataSet.Tables[0].Clone();                  //创建新表 克隆以有表的架构
                            object[] objArray = new object[sCostTable.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                            for (int m = 0; m < sDataSet.Tables.Count; m++)
                            {
                                if (sDataSet.Tables[m].Rows.Count > 0)
                                {
                                    for (int n = 0; n < sDataSet.Tables[m].Rows.Count; n++)
                                    {
                                        sDataSet.Tables[m].Rows[n].ItemArray.CopyTo(objArray, 0); //将表的一行的值存放数组中
                                        sCostTable.Rows.Add(objArray);                            //将数组的值添加到新表中
                                    }
                                }
                            }
                            DataView dv = new DataView(sCostTable);
                            dv.Sort = "StaffID";
                            tnTable = dv.ToTable(true, "StaffID", "sName");
                        }
                        //4.费用统计_赠品
                        if (tType == 1 && feeType == 3)
                        {
                            DataTable dt = CostDetails.getGiftCost(0, sDate, stDate);
                            if (dt.Rows.Count > 0)
                            {
                                gList_stor = dt.Copy();
                            }

                            gList = CostDetails.getGiftCost(0, sDate, stDate);
                        }

                        //1.毛利统计
                        if (tType == 0)
                        {
                            mList = CostDetails.getMoriOfRegion(moriType, 0, sDate, stDate);
                        }
                    }
                    else
                    {
                        if (Act.IndexOf("act") > -1)
                        {
                            sDate  = Utils.IsDateString(Utils.ChkSQL(HTTPRequest.GetString("bDate"))) ? DateTime.Parse(Utils.ChkSQL(HTTPRequest.GetString("bDate"))) : DateTime.Now;
                            stDate = Utils.IsDateString(Utils.ChkSQL(HTTPRequest.GetString("eDate"))) ? DateTime.Parse(Utils.ChkSQL(HTTPRequest.GetString("eDate"))) : DateTime.Now;
                            DataTable dt = new DataTable();
                            DataSet   ds = new DataSet();
                            if (tType == 0)
                            {
                                moriType = HTTPRequest.GetInt("mType", 0);
                                mList    = CostDetails.getMoriOfRegion(moriType, 0, sDate, stDate);

                                dt = mList.Copy();
                                ds.Tables.Add(dt);
                                if (moriType == 0)
                                {
                                    ds.Tables[0].Columns[0].ColumnName = "区域名称";
                                }
                                if (moriType == 1)
                                {
                                    ds.Tables[0].Columns[0].ColumnName = "客户名称";
                                }
                                if (moriType == 2)
                                {
                                    ds.Tables[0].Columns[0].ColumnName = "业务员名称";
                                }
                                if (moriType == 3)
                                {
                                    ds.Tables[0].Columns[0].ColumnName = "品牌名称";
                                }
                                if (moriType == 4)
                                {
                                    ds.Tables[0].Columns[0].ColumnName = "单品名称";
                                }
                                ds.Tables[0].Columns[1].ColumnName = "销售金额";
                                ds.Tables[0].Columns[2].ColumnName = "成本金额";
                                ds.Tables[0].Columns[3].ColumnName = "利润金额";

                                CreateExcel(ds.Tables[0], "毛利统计_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls");
                            }
                            if (tType == 1)
                            {
                                DataSet dss = new DataSet();
                                if (feeType == 3)
                                {
                                    gList = CostDetails.getGiftCost(0, sDate, stDate);
                                    dt    = gList.Copy();
                                    dt.Columns.RemoveAt(0);
                                    dt.Columns.RemoveAt(0);
                                    dt.Columns.RemoveAt(1);
                                    ds.Tables.Add(dt);
                                    ds.Tables[0].Columns[0].ColumnName = "门店名称";
                                    ds.Tables[0].Columns[1].ColumnName = "商品名称";
                                    ds.Tables[0].Columns[2].ColumnName = "商品条码";
                                    ds.Tables[0].Columns[3].ColumnName = "赠品单数量";
                                    ds.Tables[0].Columns[4].ColumnName = "销售单数量";
                                    ds.Tables[0].Columns[5].ColumnName = "赠品金额";

                                    CreateExcel(ds.Tables[0], "赠品数据_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls");
                                }
                                else
                                {
                                    for (int i = 0; i < result.Length - 1; i++)
                                    {
                                        //判断是否有子节点
                                        bool tl = DataClass.ExistsFeesSubjectClassChild(Convert.ToInt32(result[i]));
                                        if (tl)
                                        {
                                            dataclass = CostDetails.getTreeChildrenCount(result[i]);

                                            string[] dclass = dataclass.Split(',');
                                            for (int j = 0; j < dclass.Length - 1; j++)
                                            {
                                                //客户
                                                if (feeType == 0)
                                                {
                                                    rList        = CostDetails.getCostOfStorehouse(-1, dclass[j].ToString(), get_direction, sDate, stDate);
                                                    dt           = rList.Copy();
                                                    dt.TableName = "k_" + j;
                                                    ds.Tables.Add(dt);

                                                    newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                    object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                    for (int m = 0; m < ds.Tables.Count; m++)
                                                    {
                                                        if (ds.Tables[m].Rows.Count > 0)
                                                        {
                                                            for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                            {
                                                                ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                                newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                            }
                                                        }
                                                    }
                                                }
                                                //科目
                                                if (feeType == 1)
                                                {
                                                    rList        = CostDetails.getClassCost(get_direction, dclass[j].ToString(), sDate, stDate);
                                                    dt           = rList.Copy();
                                                    dt.TableName = "c_" + j;
                                                    ds.Tables.Add(dt);

                                                    newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                    object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                    for (int m = 0; m < ds.Tables.Count; m++)
                                                    {
                                                        if (ds.Tables[m].Rows.Count > 0)
                                                        {
                                                            for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                            {
                                                                ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                                newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                            }
                                                        }
                                                    }
                                                }
                                                //业务员
                                                if (feeType == 2)
                                                {
                                                    rList        = CostDetails.getCostOfStaffID(get_direction, sDate, stDate, Convert.ToInt32(dclass[j].ToString()), -1);
                                                    dt           = rList.Copy();
                                                    dt.TableName = "y_" + j;
                                                    ds.Tables.Add(dt);

                                                    newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                    object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                    for (int m = 0; m < ds.Tables.Count; m++)
                                                    {
                                                        if (ds.Tables[m].Rows.Count > 0)
                                                        {
                                                            for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                            {
                                                                ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                                newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //客户
                                            if (feeType == 0)
                                            {
                                                rList        = CostDetails.getCostOfStorehouse(-1, result[i], get_direction, sDate, stDate);
                                                dt           = rList.Copy();
                                                dt.TableName = "k_" + i;
                                                ds.Tables.Add(dt);

                                                newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                for (int m = 0; m < ds.Tables.Count; m++)
                                                {
                                                    if (ds.Tables[m].Rows.Count > 0)
                                                    {
                                                        for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                        {
                                                            ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                            newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                        }
                                                    }
                                                }
                                            }
                                            //科目
                                            if (feeType == 1)
                                            {
                                                rList        = CostDetails.getClassCost(get_direction, result[i], sDate, stDate);
                                                dt           = rList.Copy();
                                                dt.TableName = "c_" + i;
                                                ds.Tables.Add(dt);

                                                newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                for (int m = 0; m < ds.Tables.Count; m++)
                                                {
                                                    if (ds.Tables[m].Rows.Count > 0)
                                                    {
                                                        for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                        {
                                                            ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                            newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                        }
                                                    }
                                                }
                                            }
                                            //业务员
                                            if (feeType == 2)
                                            {
                                                rList        = CostDetails.getCostOfStaffID(get_direction, sDate, stDate, Convert.ToInt32(result[i]), -1);
                                                dt           = rList.Copy();
                                                dt.TableName = "y_" + i;
                                                ds.Tables.Add(dt);

                                                newData = ds.Tables[0].Clone();                   //创建新表 克隆以有表的架构
                                                object[] obj = new object[newData.Columns.Count]; //定义与表列数相同的对象数组 存放表的一行的值
                                                for (int m = 0; m < ds.Tables.Count; m++)
                                                {
                                                    if (ds.Tables[m].Rows.Count > 0)
                                                    {
                                                        for (int n = 0; n < ds.Tables[m].Rows.Count; n++)
                                                        {
                                                            ds.Tables[m].Rows[n].ItemArray.CopyTo(obj, 0); //将表的一行的值存放数组中
                                                            newData.Rows.Add(obj);                         //将数组的值添加到新表中
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        dt = newData.Copy();
                                        //客户
                                        if (feeType == 0)
                                        {
                                            dt.Columns.RemoveAt(0);
                                            dss.Tables.Add(dt);
                                            dss.Tables[0].Columns[0].ColumnName = "客户名称";
                                            dss.Tables[0].Columns[1].ColumnName = "发生金额";
                                        }
                                        //科目
                                        if (feeType == 1)
                                        {
                                            dt.Columns.RemoveAt(0);
                                            dss.Tables.Add(dt);
                                            dss.Tables[0].Columns[0].ColumnName = "科目名称";
                                            dss.Tables[0].Columns[1].ColumnName = "发生金额";
                                        }
                                        //业务员
                                        if (feeType == 2)
                                        {
                                            dss.Tables.Add(dt);
                                            dss.Tables[0].Columns[0].ColumnName = "业务名称";
                                            dss.Tables[0].Columns[1].ColumnName = "发生金额";
                                        }
                                        CreateExcel(dss.Tables[0], "费用统计_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls");
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    AddErrLine("权限不足!");
                }
            }
            else
            {
                AddErrLine("请先登录!");
                SetBackLink("login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer()));
                SetMetaRefresh(1, "login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer()));
            }
        }