Skip to content
YueKuCun.aspx.cs 9.22 KiB
Newer Older
Jack Dan's avatar
Jack Dan committed
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;

public partial class Admin_Statistical_YueKuCun : MyPage
{ 
    protected void Page_Load(object sender, EventArgs e)
    {
        MySession.CheckSession();
        CheckPermission(PermissionHelper.PermissionCode.Check);

        if (!IsPostBack)
        {
            lstNian.Items.Add(new ListItem("2018", "2018"));
            lstNian.Items.Add(new ListItem("2019", "2019"));
            lstNian.Items.Add(new ListItem("2020", "2020"));
            lstNian.Items.Add(new ListItem("2021", "2021"));
            lstNian.Items.Add(new ListItem("2022", "2022"));

            lstYue.Items.Add(new ListItem("01", "01"));
            lstYue.Items.Add(new ListItem("02", "02"));
            lstYue.Items.Add(new ListItem("03", "03"));
            lstYue.Items.Add(new ListItem("04", "04"));
            lstYue.Items.Add(new ListItem("05", "05"));
            lstYue.Items.Add(new ListItem("06", "06"));
            lstYue.Items.Add(new ListItem("07", "07"));
            lstYue.Items.Add(new ListItem("08", "08"));
            lstYue.Items.Add(new ListItem("09", "09"));
            lstYue.Items.Add(new ListItem("10", "10"));
            lstYue.Items.Add(new ListItem("11", "11"));
            lstYue.Items.Add(new ListItem("12", "12"));



            DataTable dtGroup = Sdbo.ExecuteDataTable("SELECT GroupID,GroupName FROM Permission.GroupInfo WHERE ParentID='{0}' and IsDel=0 ORDER BY DispSeq", GlobalDefine.SupplierGroupID);
            lstSupplier.DataTextField = "GroupName";
            lstSupplier.DataValueField = "GroupID";
            lstSupplier.DataSource = dtGroup;
            lstSupplier.DataBind();


            lstNian.SelectedValue = DateTime.Now.Year.ToString();
            lstYue.SelectedValue = DateTime.Now.Month < 10 ? "0" + DateTime.Now.Month.ToString(): DateTime.Now.Month.ToString();
            LoadList();
        }
    }




    protected void excel_Click(object sender, EventArgs e)
    {
        string datetime = Convert.ToDateTime(lstNian.SelectedValue + "-" + lstYue.SelectedValue + "-01 23:59:59").AddMonths(1).AddDays(-1).ToString();
        int k = 0;
        string supplierID = lstSupplier.SelectedValue;
        string sql = @"select D.GoodsName,C.ItemName,sum(A.InvertoryLast) as InvertoryLast, A.GoodsID from Warehouse.Inventory e right join  Warehouse.InventoryDetail A on 
                        e.InventoryID=a.InventoryID left join Supplier.Goods B  on A.GoodsID=B.GoodsID inner join  Common.DictItem C on B.MainUnit=C.ItemID 
                        left join Supplier.Goods D on A.GoodsID=D.GoodsID where e.Type='入库' and e.Date<'{0}' and b.SupplierID='{1}' group by  C.ItemName,a.GoodsID, D.GoodsName";
        DataTable dt = Sdbo.ExecuteDataTable(sql, datetime, supplierID);
        StringBuilder sb = new StringBuilder();
        sb.Append("<table width='100%' border='1px'>");
        sb.Append("<tr>");
        sb.Append(String.Format("<td width='160'>{0}</td>", "商品名称"));
        sb.Append(String.Format("<td width='160'>{0}</td>", "单位"));
        sb.Append(String.Format("<td width='160'>{0}</td>", "库存数量 "));
        sb.Append(String.Format("<td width='160'>{0}</td>", "单价"));
        sb.Append(String.Format("<td width='160'>{0}</td>", " 库存金额"));
        sb.Append("</tr>");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            k = 1;
            decimal sum = GetPrice(dt.Rows[i]["GoodsID"].ToString(), datetime);
            sb.Append("<tr>");
            sb.Append(String.Format("<td width='160' style='text-align:left'>{0}</td>", dt.Rows[i]["GoodsName"]));
            sb.Append(String.Format("<td width='160' style='text_align:right'>{0}</td>", dt.Rows[i]["InvertoryLast"]));
            sb.Append(String.Format("<td width='160' style='text_align:left'>{0}</td>", dt.Rows[i]["ItemName"]));
            if (Convert.ToDecimal(dt.Rows[i]["InvertoryLast"]) != 0)
            {

                sb.Append(String.Format("<td width='160'style='text_align:right'>{0}</td>", String.Format("{0:F}", sum / Convert.ToDecimal(dt.Rows[i]["InvertoryLast"]))));

            }
            else
            {
                sb.Append(String.Format("<td width='160' style='text_align:right'>{0}</td>", "0.00"));
            }
            sb.Append(String.Format("<td width='160' style='text_align:right'>{0}</td>", String.Format("{0:F}", sum)));
            sb.Append("</tr>");
        }
        if (k == 0)
        {
            sb.Append("<tr>");
            sb.Append(String.Format("<td width='160'>{0}</td>", "无相关数据!"));
            sb.Append("</tr>");
        }
        sb.Append("</table>");


        this.EnableViewState = false;
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.AppendHeader("Expires ", System.DateTime.Now.AddMinutes(30).ToString());
        HttpContext.Current.Response.AppendHeader("Pragma ", "public ");
        HttpContext.Current.Response.AppendHeader("Cache-Control ", "must-revalidate, post-check=0, pre-check=0 ");
        HttpContext.Current.Response.AppendHeader("Cache-Control ", "public ");
        HttpResponse resp = this.Response;
        resp.Charset = "gb2312";
        string totalOne = lstNian.SelectedValue + "年" + lstYue.SelectedValue + "月" + "商品库存一览表";
        resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        resp.AppendHeader("Content-Disposition",
                          "Attachment;filename=" + System.Web.HttpUtility.UrlEncode(totalOne, System.Text.Encoding.UTF8) +
                          ".xls");
        resp.ContentType = "application/ms-excel";
        resp.Write(sb);
        resp.End();
    }


    private void LoadList()
    {
        
            string datetime = Convert.ToDateTime(lstNian.SelectedValue + "-" + lstYue.SelectedValue + "-01 23:59:59").AddMonths(1).AddDays(-1).ToString();
            int k = 0;
            string supplierID = lstSupplier.SelectedValue;
            string sql = @"select D.GoodsName,C.ItemName,sum(A.InvertoryLast) as InvertoryLast, A.GoodsID from Warehouse.Inventory e right join  Warehouse.InventoryDetail A on 
                        e.InventoryID=a.InventoryID left join Supplier.Goods B  on A.GoodsID=B.GoodsID inner join  Common.DictItem C on B.MainUnit=C.ItemID 
                        left join Supplier.Goods D on A.GoodsID=D.GoodsID where e.Type='入库' and e.Date<'{0}' and b.SupplierID='{1}' ";
            if (MySession.UserID.ToString() == GlobalDefine.PD300AdminUserID.ToString())//PdAdmin登陆时只显示pd300号的统计数据
            {
                sql += " and e.DeliveryID ='{2}' group by  C.ItemName,a.GoodsID, D.GoodsName ";               
            }
            else
            {
                sql += " and e.DeliveryID !='{2}' group by  C.ItemName,a.GoodsID, D.GoodsName ";              
            }
            DataTable dt = Sdbo.ExecuteDataTable(sql, datetime, supplierID, GlobalDefine.PD300DeliveryID);
            StringBuilder sb = new StringBuilder();
            sb.Append("<table width='100%' class='BGtable' id='tblGoods'>");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                k = 1;
                decimal sum = GetPrice(dt.Rows[i]["GoodsID"].ToString(), datetime);
                sb.Append("<tr>");
                sb.Append(String.Format("<td width='160' style='text-align:left'>{0}</td>", dt.Rows[i]["GoodsName"]));               
                sb.Append(String.Format("<td width='160' style='text-align:right'>{0}</td>", dt.Rows[i]["InvertoryLast"]));
                sb.Append(String.Format("<td width='160'style='text-align:left'>{0}</td>", dt.Rows[i]["ItemName"]));
                if (Convert.ToDecimal(dt.Rows[i]["InvertoryLast"]) != 0)
                {

                    sb.Append(String.Format("<td width='160' style='text-align:right'>{0}</td>", String.Format("{0:F}", sum / Convert.ToDecimal(dt.Rows[i]["InvertoryLast"]))));

                }
                else
                {
                    sb.Append(String.Format("<td width='160' style='text-align:right'>{0}</td>", "0.00"));


                }
                sb.Append(String.Format("<td width='160' style='text-align:right' >{0}</td>", String.Format("{0:F}", sum)));
                sb.Append("</tr>");
            }
            if (k == 0)
            {
                sb.Append("<tr>");
                sb.Append(String.Format("<td width='160'>{0}</td>", "无相关数据!"));
                sb.Append("</tr>");

            }
            sb.Append("</table>");
            lblData.Text = sb.ToString();
        
    }

    private decimal GetPrice(string goodsID,string datetime)
    {
        decimal sum = 0;
        string sql = @"select InvertoryPrice,InvertoryLast from Warehouse.InventoryDetail where GoodsID='{0}' and InventoryTime<'{1}' ";
        DataTable price = Sdbo.ExecuteDataTable(sql, goodsID,datetime);
        if (price != null)
        {
            for (int i = 0; i < price.Rows.Count;i++)
            {
                sum += Convert.ToDecimal(price.Rows[i][0]) * Convert.ToDecimal(price.Rows[i][1]);
            }
            return sum;
        }
        return 0;
    }
    protected void lstYue_SelectedIndexChanged(object sender, EventArgs e)
    {
        LoadList();
    }
}