934 lines
48 KiB
C#
934 lines
48 KiB
C#
using BLL;
|
||
using Newtonsoft.Json.Linq;
|
||
using NPOI.SS.UserModel;
|
||
using NPOI.XSSF.UserModel;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.SqlClient;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
|
||
namespace FineUIPro.Web.CCP
|
||
{
|
||
public partial class CcpViewList : PageBase
|
||
{
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (!IsPostBack)
|
||
{
|
||
// 绑定表格
|
||
BindGrid();
|
||
GetButtonPower();//权限设置
|
||
}
|
||
}
|
||
|
||
|
||
#region 绑定数据
|
||
/// <summary>
|
||
/// 绑定CCP_List
|
||
/// </summary>
|
||
private void BindGrid(int id = 0)
|
||
{
|
||
string strSql = @"SELECT ID,CCP_No,CPT_No,Contract_No,Contractor_CN+' '+Contractor_Eng as Contractor_Name,Contract_Title,
|
||
Created_Time,Pricing_Method,Created_UserName,
|
||
(select SUM(Final_SettlementAmount) from CCP_SESList as s where s.CCP_Id=a.ID ) as PaymentAmount
|
||
FROM CCP_List as a where 1=1";
|
||
|
||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||
if (!string.IsNullOrEmpty(txtCCP_No.Text))
|
||
{
|
||
strSql = strSql + " AND a.CCP_No=@CCP_No";
|
||
listStr.Add(new SqlParameter("@CCP_No", txtCCP_No.Text.Trim()));
|
||
}
|
||
if (!string.IsNullOrEmpty(txtContract_No.Text))
|
||
{
|
||
strSql = strSql + " AND a.Contract_No=@Contract_No";
|
||
listStr.Add(new SqlParameter("@Contract_No", txtContract_No.Text.Trim()));
|
||
}
|
||
if (id > 0)
|
||
{
|
||
strSql = strSql + " AND a.Id=@Id";
|
||
listStr.Add(new SqlParameter("@Id", id));
|
||
}
|
||
|
||
strSql = strSql + " ORDER BY a.CCP_No ASC";
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
|
||
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
Grid1.RecordCount = dt.Rows.Count;
|
||
var table = this.GetPagedDataTable(Grid1, dt);
|
||
Grid1.DataSource = table;
|
||
Grid1.DataBind();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 绑定CCP_SESList
|
||
/// </summary>
|
||
private void BindGrid1(int ccp_Id = 0)
|
||
{
|
||
string strSql = @"SELECT ID,CCP_No,CCP_Id,CPT_No,CPT_Id,Ses_No,Ses_Id,Contract_No,Contract_Id,Project_Name,
|
||
Contractor_Quotation,Incl_Tax,ThirdParty_PriceReview,Con_Days,Reduction,Reduction_Rate,
|
||
Deduction_DeductionRate,DelayedDeduction,Final_SettlementAmount,Created_Time,Created_UserId,
|
||
Created_UserName,Created_ChineseName
|
||
FROM dbo.CCP_SESList
|
||
where 1=1";
|
||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||
strSql = strSql + " AND CCP_Id=@ccp_Id";
|
||
listStr.Add(new SqlParameter("@ccp_Id", ccp_Id));
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
|
||
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
Grid2.RecordCount = dt.Rows.Count;
|
||
Grid2.DataSource = dt;
|
||
Grid2.DataBind();
|
||
|
||
JObject summary = new JObject();
|
||
summary.Add("Contractor_Quotation", dt.AsEnumerable().Sum(s => s.Field<decimal>("Contractor_Quotation")).ToString("#,##0.00"));
|
||
summary.Add("Incl_Tax", dt.AsEnumerable().Sum(s => s.Field<decimal>("Incl_Tax")).ToString("#,##0.00"));
|
||
summary.Add("Reduction", dt.AsEnumerable().Sum(s => s.Field<decimal>("Reduction")).ToString("#,##0.00"));
|
||
summary.Add("Deduction_DeductionRate", dt.AsEnumerable().Sum(s => s.Field<decimal>("Deduction_DeductionRate")).ToString("#,##0.00"));
|
||
summary.Add("DelayedDeduction", dt.AsEnumerable().Sum(s => s.Field<decimal>("DelayedDeduction")).ToString("#,##0.00"));
|
||
summary.Add("Final_SettlementAmount", dt.AsEnumerable().Sum(s => s.Field<decimal>("Final_SettlementAmount")).ToString("#,##0.00"));
|
||
Grid2.SummaryData = summary;
|
||
|
||
for (int i = 0; i < Grid2.Rows.Count; i++)
|
||
{
|
||
Grid2.Rows[i].Values[9] = string.Format("{0}{1}", Grid2.Rows[i].Values[9], "%");
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 关闭弹出窗口
|
||
/// <summary>
|
||
/// 关闭窗口1
|
||
/// </summary>
|
||
protected void Window1_Close(object sender, EventArgs e)
|
||
{
|
||
BindGrid();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 关闭窗口2
|
||
/// </summary>
|
||
protected void Window2_Close(object sender, WindowCloseEventArgs e)
|
||
{
|
||
BindGrid();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 分页、排序
|
||
/// <summary>
|
||
/// 分页
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
|
||
{
|
||
Grid1.PageIndex = e.NewPageIndex;
|
||
BindGrid();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 分页显示条数下拉框
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
|
||
BindGrid();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
|
||
{
|
||
Grid1.SortDirection = e.SortDirection;
|
||
Grid1.SortField = e.SortField;
|
||
BindGrid();
|
||
}
|
||
#endregion
|
||
|
||
#region 选择加载
|
||
/// <summary>
|
||
/// 选择加载
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Grid1_RowClick(object sender, GridRowClickEventArgs e)
|
||
{
|
||
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
|
||
{
|
||
BindGrid1(Convert.ToInt32(this.Grid1.SelectedRowID));
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 搜索
|
||
/// <summary>
|
||
/// 搜索
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnSearch_Click(object sender, EventArgs e)
|
||
{
|
||
if (!string.IsNullOrEmpty(txtSES_No.Text.Trim()))
|
||
{
|
||
var sesModel = Funs.DB.CCP_SESList.FirstOrDefault(p => p.Ses_No == txtSES_No.Text.Trim());
|
||
if (sesModel != null)
|
||
{
|
||
var ccpModel = Funs.DB.CCP_List.FirstOrDefault(p => p.ID == sesModel.CCP_Id);
|
||
BindGrid(sesModel.CCP_Id);
|
||
BindGrid1(sesModel.CCP_Id);
|
||
Alert.ShowInTop(string.Format("CCP:{0},Contract No:{1},Buyer:{2}", string.Format("{0:d3}", sesModel.CCP_No), sesModel.Contract_No, ccpModel.Buyer), MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInTop("CCP:,Contract No:,Buyer:", MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
BindGrid();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 删除
|
||
protected void btnDelete_Click(object sender, EventArgs e)
|
||
{
|
||
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
|
||
{
|
||
var ccpList = from x in Funs.DB.CCP_List where x.ID == Convert.ToInt32(Grid1.SelectedRowID) select x;
|
||
var sesCcpList = from x in Funs.DB.CCP_SESList where x.CCP_Id == Convert.ToInt32(Grid1.SelectedRowID) select x;
|
||
|
||
Funs.DB.CCP_SESList.DeleteAllOnSubmit(sesCcpList);
|
||
Funs.DB.CCP_List.DeleteAllOnSubmit(ccpList);
|
||
Funs.DB.SubmitChanges();
|
||
|
||
BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Delete CCP");
|
||
// 重新绑定表格
|
||
BindGrid();
|
||
BindGrid1(0);
|
||
ShowNotify("Delete successfully!", MessageBoxIcon.Success);
|
||
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInParent("Please select at least one record!");
|
||
return;
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 导出
|
||
/// <summary>
|
||
/// 导出
|
||
/// </summary>
|
||
protected void btnExport_Click(object sender, EventArgs e)
|
||
{
|
||
if (Grid1.SelectedRowIndexArray.Length == 0)
|
||
{
|
||
Alert.ShowInParent("Please select at least one record!");
|
||
return;
|
||
}
|
||
int row = Grid1.SelectedRowIndex;
|
||
int Id = int.Parse(Grid1.DataKeys[row][0].ToString());
|
||
string ContractNo = Grid1.DataKeys[row][1].ToString();
|
||
int ccpNo = int.Parse(Grid1.DataKeys[row][2].ToString());
|
||
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
|
||
//模板文件
|
||
string TempletFileName = rootPath + "CCPReport.xlsx";
|
||
//导出文件
|
||
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
|
||
if (!Directory.Exists(filePath))
|
||
{
|
||
Directory.CreateDirectory(filePath);
|
||
}
|
||
string ReportFileName = filePath + "out.xls";
|
||
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
|
||
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
|
||
XSSFSheet ws = (XSSFSheet)hssfworkbook.GetSheetAt(0);
|
||
var ccp = Funs.DB.CCP_List.FirstOrDefault(x => x.ID == Id);
|
||
//获取当前和此CCP之前的信息
|
||
var ccpAllLs = Funs.DB.CCP_List.Where(p => p.CCP_No <= ccpNo && p.Contract_Id == ccp.Contract_Id).ToList();
|
||
//获取CCP信息
|
||
var ccpModel = ccpAllLs.FirstOrDefault(p => p.ID == Id);
|
||
if (ccpModel != null)
|
||
{
|
||
//获取当前和之前所有的ccpses的信息
|
||
var ccpAllSesLs = Funs.DB.CCP_SESList.Where(p => ccpAllLs.ConvertAll(s => s.ID).Contains(p.CCP_Id));
|
||
//获取CcpSes信息
|
||
var ccpSess = ccpAllSesLs.Where(p => p.CCP_Id == Id).OrderBy(p => p.CPT_No).ToList();
|
||
|
||
if (ccpSess.Count > 0)
|
||
{
|
||
#region 左边
|
||
//承包商名称
|
||
if (ws.GetRow(3).GetCell(1) == null) ws.GetRow(3).CreateCell(1);
|
||
ws.GetRow(3).GetCell(1).SetCellValue(ccpModel.Contractor_CN + "\n" + ccpModel.Contractor_Eng);
|
||
//合同名称
|
||
if (ws.GetRow(4).GetCell(1) == null) ws.GetRow(4).CreateCell(1);
|
||
ws.GetRow(4).GetCell(1).SetCellValue(ccpModel.Contract_Title);
|
||
//合同类型
|
||
if (ws.GetRow(5).GetCell(1) == null) ws.GetRow(5).CreateCell(1);
|
||
ws.GetRow(5).GetCell(1).SetCellValue(ccpModel.Contract_Type);
|
||
//合同计价方式
|
||
if (ws.GetRow(6).GetCell(1) == null) ws.GetRow(6).CreateCell(1);
|
||
ws.GetRow(6).GetCell(1).SetCellValue(ccpModel.Pricing_Method);
|
||
//合同付款条件
|
||
if (ws.GetRow(7).GetCell(1) == null) ws.GetRow(7).CreateCell(1);
|
||
var payType = ccpModel.Payment_Term == "0" ? "按月" : "按季";
|
||
//var payZnum = ccpModel.Payment_Term == "0" ? "三十" : "九十";
|
||
//var paynum = ccpModel.Payment_Term == "0" ? "30" : "90";
|
||
//var paymentTermExplain = string.Format("合同价款{0}支付,业主将在收到正确的发票原件以后{1}({2})日内支付。", payType, payZnum, paynum);
|
||
var paymentTermExplain = string.Format("合同价款{0}支付,业主将在收到正确的发票原件以后三十(30)日内支付。", payType);
|
||
ws.GetRow(7).GetCell(1).SetCellValue(paymentTermExplain);
|
||
//本次付款确认单的序列号
|
||
if (ws.GetRow(9).GetCell(2) == null) ws.GetRow(9).CreateCell(2);
|
||
ws.GetRow(9).GetCell(2).SetCellValue(string.Format("{0:d3}", ccpModel.CCP_No));
|
||
//已付总金额
|
||
var yfzje = 0d;
|
||
if (ccpAllSesLs.Count(p => p.CCP_Id != Id) > 0)
|
||
{
|
||
yfzje = (double)ccpAllSesLs.Where(p => p.CCP_Id != Id).Sum(p => p.Final_SettlementAmount).Value;
|
||
}
|
||
if (ws.GetRow(11).GetCell(2) == null) ws.GetRow(11).CreateCell(2);
|
||
ws.GetRow(11).GetCell(2).SetCellValue(yfzje);
|
||
//本次付款金额
|
||
if (ws.GetRow(12).GetCell(2) == null) ws.GetRow(12).CreateCell(2);
|
||
ws.GetRow(12).GetCell(2).SetCellValue(ccpSess.Count > 0 ? (double)ccpSess.Sum(p => p.Final_SettlementAmount).Value : 0);
|
||
|
||
#endregion
|
||
|
||
#region 右边
|
||
|
||
//承包商代码
|
||
if (ws.GetRow(3).GetCell(7) == null) ws.GetRow(3).CreateCell(7);
|
||
ws.GetRow(3).GetCell(7).SetCellValue(ccpModel.Vendor_Code);
|
||
//合同号
|
||
if (ws.GetRow(4).GetCell(7) == null) ws.GetRow(4).CreateCell(7);
|
||
ws.GetRow(4).GetCell(7).SetCellValue(ccpModel.Contract_No);
|
||
//责任采购员
|
||
if (ws.GetRow(5).GetCell(7) == null) ws.GetRow(5).CreateCell(7);
|
||
ws.GetRow(5).GetCell(7).SetCellValue(ccpModel.Buyer);
|
||
//合同预算值
|
||
if (ws.GetRow(6).GetCell(7) == null) ws.GetRow(6).CreateCell(7);
|
||
ws.GetRow(6).GetCell(7).SetCellValue((double)ccpModel.Contract_Budget);
|
||
//次付款对应的CPT号
|
||
var cpts = ccpModel.CPT_No.Split(',').Select(p => string.Format("{0:d3}", int.Parse(p.Split('-').LastOrDefault()))).ToList();
|
||
if (ws.GetRow(9).GetCell(7) == null) ws.GetRow(9).CreateCell(7);
|
||
ws.GetRow(9).GetCell(7).SetCellValue(string.Join(",", cpts.ToArray()));
|
||
|
||
#endregion
|
||
|
||
#region 表格
|
||
|
||
XSSFSheet wstwo = (XSSFSheet)hssfworkbook.GetSheet("sheet2");
|
||
|
||
#region 样式
|
||
|
||
//全局边框靠左
|
||
XSSFFont font = (XSSFFont)hssfworkbook.CreateFont();
|
||
font.FontHeightInPoints = 10;
|
||
font.FontName = "Arial";
|
||
ICellStyle style = hssfworkbook.CreateCellStyle();
|
||
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.VerticalAlignment = VerticalAlignment.Center;
|
||
style.Alignment = HorizontalAlignment.Left;
|
||
style.WrapText = true;
|
||
style.SetFont(font);
|
||
//全局边框靠左红色字体
|
||
XSSFFont font1 = (XSSFFont)hssfworkbook.CreateFont();
|
||
font1.FontHeightInPoints = 10;
|
||
font1.FontName = "Arial";
|
||
font1.Color = IndexedColors.Red.Index;
|
||
ICellStyle style1 = hssfworkbook.CreateCellStyle();
|
||
style1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style1.VerticalAlignment = VerticalAlignment.Center;
|
||
style1.Alignment = HorizontalAlignment.Left;
|
||
style1.WrapText = true;
|
||
style1.SetFont(font1);
|
||
|
||
//全局边框靠右
|
||
XSSFFont rfont = (XSSFFont)hssfworkbook.CreateFont();
|
||
rfont.FontHeightInPoints = 10;
|
||
rfont.FontName = "Arial";
|
||
ICellStyle rstyle = hssfworkbook.CreateCellStyle();
|
||
rstyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.VerticalAlignment = VerticalAlignment.Center;
|
||
rstyle.Alignment = HorizontalAlignment.Right;
|
||
rstyle.WrapText = true;
|
||
rstyle.SetFont(font);
|
||
//全局边框靠右红色字体
|
||
XSSFFont rfont1 = (XSSFFont)hssfworkbook.CreateFont();
|
||
rfont1.FontHeightInPoints = 10;
|
||
rfont1.FontName = "Arial";
|
||
rfont1.Color = IndexedColors.Red.Index;
|
||
ICellStyle rstyle1 = hssfworkbook.CreateCellStyle();
|
||
rstyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle1.VerticalAlignment = VerticalAlignment.Center;
|
||
rstyle1.Alignment = HorizontalAlignment.Right;
|
||
rstyle1.WrapText = true;
|
||
rstyle1.SetFont(font1);
|
||
|
||
|
||
IDataFormat dataformat = hssfworkbook.CreateDataFormat();
|
||
//千分位全局边框靠右
|
||
XSSFFont qfont = (XSSFFont)hssfworkbook.CreateFont();
|
||
qfont.FontHeightInPoints = 10;
|
||
qfont.FontName = "Arial";
|
||
ICellStyle qstyle = hssfworkbook.CreateCellStyle();
|
||
qstyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.VerticalAlignment = VerticalAlignment.Center;
|
||
qstyle.Alignment = HorizontalAlignment.Right;
|
||
qstyle.DataFormat = dataformat.GetFormat("#,##0.00");
|
||
qstyle.SetFont(qfont);
|
||
//千分位全局边框靠右红色字体
|
||
XSSFFont qfont1 = (XSSFFont)hssfworkbook.CreateFont();
|
||
qfont1.FontHeightInPoints = 10;
|
||
qfont1.FontName = "Arial";
|
||
qfont1.Color = IndexedColors.Red.Index;
|
||
ICellStyle qstyle1 = hssfworkbook.CreateCellStyle();
|
||
qstyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.VerticalAlignment = VerticalAlignment.Center;
|
||
qstyle1.Alignment = HorizontalAlignment.Right;
|
||
qstyle1.DataFormat = dataformat.GetFormat("#,##0.00");
|
||
qstyle1.SetFont(qfont1);
|
||
|
||
//百分比全局边框靠右
|
||
XSSFFont bfont = (XSSFFont)hssfworkbook.CreateFont();
|
||
bfont.FontHeightInPoints = 10;
|
||
bfont.FontName = "Arial";
|
||
ICellStyle bstyle = hssfworkbook.CreateCellStyle();
|
||
bstyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle.VerticalAlignment = VerticalAlignment.Center;
|
||
bstyle.Alignment = HorizontalAlignment.Right;
|
||
bstyle.DataFormat = dataformat.GetFormat("0.00%");
|
||
bstyle.SetFont(bfont);
|
||
//百分比全局边框靠右红色字体
|
||
XSSFFont bfont1 = (XSSFFont)hssfworkbook.CreateFont();
|
||
bfont1.FontHeightInPoints = 10;
|
||
bfont1.FontName = "Arial";
|
||
bfont1.Color = IndexedColors.Red.Index;
|
||
ICellStyle bstyle1 = hssfworkbook.CreateCellStyle();
|
||
bstyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
bstyle1.VerticalAlignment = VerticalAlignment.Center;
|
||
bstyle1.Alignment = HorizontalAlignment.Right;
|
||
bstyle1.DataFormat = dataformat.GetFormat("0.00%");
|
||
bstyle1.SetFont(bfont1);
|
||
|
||
#endregion
|
||
|
||
#region 表格数据
|
||
|
||
int rowindex = 5;
|
||
foreach (var item in ccpSess)
|
||
{
|
||
//合同号
|
||
if (wstwo.GetRow(rowindex).GetCell(0) == null) wstwo.GetRow(rowindex).CreateCell(0);
|
||
wstwo.GetRow(rowindex).GetCell(0).SetCellValue(item.Contract_No);
|
||
wstwo.GetRow(rowindex).GetCell(0).CellStyle = style;
|
||
//CCP No.
|
||
if (wstwo.GetRow(rowindex).GetCell(1) == null) wstwo.GetRow(rowindex).CreateCell(1);
|
||
wstwo.GetRow(rowindex).GetCell(1).SetCellValue(string.Format("{0:d3}", item.CCP_No));
|
||
wstwo.GetRow(rowindex).GetCell(1).CellStyle = style;
|
||
//CPT No.
|
||
if (wstwo.GetRow(rowindex).GetCell(2) == null) wstwo.GetRow(rowindex).CreateCell(2);
|
||
wstwo.GetRow(rowindex).GetCell(2).SetCellValue(item.CPT_No.Split('-').LastOrDefault());
|
||
wstwo.GetRow(rowindex).GetCell(2).CellStyle = style;
|
||
//SES No.
|
||
if (wstwo.GetRow(rowindex).GetCell(3) == null) wstwo.GetRow(rowindex).CreateCell(3);
|
||
wstwo.GetRow(rowindex).GetCell(3).SetCellValue(item.Ses_No);
|
||
wstwo.GetRow(rowindex).GetCell(3).CellStyle = style;
|
||
//项目名称
|
||
if (wstwo.GetRow(rowindex).GetCell(4) == null) wstwo.GetRow(rowindex).CreateCell(4);
|
||
wstwo.GetRow(rowindex).GetCell(4).SetCellValue(item.Project_Name);
|
||
wstwo.GetRow(rowindex).GetCell(4).CellStyle = style;
|
||
//承包商报价
|
||
if (wstwo.GetRow(rowindex).GetCell(5) == null) wstwo.GetRow(rowindex).CreateCell(5);
|
||
wstwo.GetRow(rowindex).GetCell(5).SetCellValue((double)item.Contractor_Quotation);
|
||
wstwo.GetRow(rowindex).GetCell(5).CellStyle = item.Contractor_Quotation.Value >= 0 ? qstyle : qstyle1;
|
||
//CTE/D审价
|
||
if (wstwo.GetRow(rowindex).GetCell(6) == null) wstwo.GetRow(rowindex).CreateCell(6);
|
||
wstwo.GetRow(rowindex).GetCell(6).SetCellValue((double)item.Incl_Tax);
|
||
wstwo.GetRow(rowindex).GetCell(6).CellStyle = item.Incl_Tax.Value >= 0 ? qstyle : qstyle1;
|
||
//第三方审价
|
||
if (wstwo.GetRow(rowindex).GetCell(7) == null) wstwo.GetRow(rowindex).CreateCell(7);
|
||
wstwo.GetRow(rowindex).GetCell(7).SetCellValue((double)item.ThirdParty_PriceReview);
|
||
wstwo.GetRow(rowindex).GetCell(7).CellStyle = item.ThirdParty_PriceReview.Value >= 0 ? qstyle : qstyle1;
|
||
//核减额
|
||
if (wstwo.GetRow(rowindex).GetCell(8) == null) wstwo.GetRow(rowindex).CreateCell(8);
|
||
wstwo.GetRow(rowindex).GetCell(8).SetCellValue((double)item.Reduction);
|
||
wstwo.GetRow(rowindex).GetCell(8).CellStyle = item.Reduction.Value >= 0 ? qstyle : qstyle1;
|
||
//核减率
|
||
if (wstwo.GetRow(rowindex).GetCell(9) == null) wstwo.GetRow(rowindex).CreateCell(9);
|
||
wstwo.GetRow(rowindex).GetCell(9).SetCellValue((double)item.Reduction_Rate / 100);
|
||
wstwo.GetRow(rowindex).GetCell(9).CellStyle = item.Reduction_Rate.Value >= 0 ? bstyle : bstyle1;
|
||
//高核减率扣款
|
||
if (wstwo.GetRow(rowindex).GetCell(10) == null) wstwo.GetRow(rowindex).CreateCell(10);
|
||
wstwo.GetRow(rowindex).GetCell(10).SetCellValue((double)item.Deduction_DeductionRate);
|
||
wstwo.GetRow(rowindex).GetCell(10).CellStyle = item.Deduction_DeductionRate.Value >= 0 ? qstyle : qstyle1;
|
||
//SSR结算提交天数
|
||
if (wstwo.GetRow(rowindex).GetCell(11) == null) wstwo.GetRow(rowindex).CreateCell(11);
|
||
wstwo.GetRow(rowindex).GetCell(11).SetCellValue(item.Con_Days != null ? item.Con_Days.Value : 0);
|
||
wstwo.GetRow(rowindex).GetCell(11).CellStyle = item.Con_Days != null && item.Con_Days.Value > 0 ? rstyle : rstyle1;
|
||
//延迟扣款
|
||
if (wstwo.GetRow(rowindex).GetCell(12) == null) wstwo.GetRow(rowindex).CreateCell(12);
|
||
wstwo.GetRow(rowindex).GetCell(12).SetCellValue((double)item.DelayedDeduction);
|
||
wstwo.GetRow(rowindex).GetCell(12).CellStyle = item.DelayedDeduction.Value >= 0 ? qstyle : qstyle1;
|
||
//最终结算金额(含税)
|
||
if (wstwo.GetRow(rowindex).GetCell(13) == null) wstwo.GetRow(rowindex).CreateCell(13);
|
||
wstwo.GetRow(rowindex).GetCell(13).SetCellValue((double)item.Final_SettlementAmount);
|
||
wstwo.GetRow(rowindex).GetCell(13).CellStyle = item.Final_SettlementAmount >= 0 ? qstyle : qstyle1;
|
||
|
||
rowindex++;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 合计
|
||
//合同号
|
||
if (wstwo.GetRow(rowindex).GetCell(0) == null) wstwo.GetRow(rowindex).CreateCell(0);
|
||
wstwo.GetRow(rowindex).GetCell(0).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(0).CellStyle = style;
|
||
//CCP No.
|
||
if (wstwo.GetRow(rowindex).GetCell(1) == null) wstwo.GetRow(rowindex).CreateCell(1);
|
||
wstwo.GetRow(rowindex).GetCell(1).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(1).CellStyle = style;
|
||
//CPT No.
|
||
if (wstwo.GetRow(rowindex).GetCell(2) == null) wstwo.GetRow(rowindex).CreateCell(2);
|
||
wstwo.GetRow(rowindex).GetCell(2).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(2).CellStyle = style;
|
||
//SES No.
|
||
if (wstwo.GetRow(rowindex).GetCell(3) == null) wstwo.GetRow(rowindex).CreateCell(3);
|
||
wstwo.GetRow(rowindex).GetCell(3).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(3).CellStyle = style;
|
||
//项目名称
|
||
if (wstwo.GetRow(rowindex).GetCell(4) == null) wstwo.GetRow(rowindex).CreateCell(4);
|
||
wstwo.GetRow(rowindex).GetCell(4).SetCellValue("总计");
|
||
wstwo.GetRow(rowindex).GetCell(4).CellStyle = style;
|
||
//承包商报价
|
||
if (wstwo.GetRow(rowindex).GetCell(5) == null) wstwo.GetRow(rowindex).CreateCell(5);
|
||
wstwo.GetRow(rowindex).GetCell(5).SetCellValue((double)ccpSess.Sum(p => p.Contractor_Quotation));
|
||
wstwo.GetRow(rowindex).GetCell(5).CellStyle = ccpSess.Sum(p => p.Contractor_Quotation) >= 0 ? qstyle : qstyle1;
|
||
//CTE/D审价
|
||
if (wstwo.GetRow(rowindex).GetCell(6) == null) wstwo.GetRow(rowindex).CreateCell(6);
|
||
wstwo.GetRow(rowindex).GetCell(6).SetCellValue((double)ccpSess.Sum(p => p.Incl_Tax));
|
||
wstwo.GetRow(rowindex).GetCell(6).CellStyle = ccpSess.Sum(p => p.Incl_Tax) >= 0 ? qstyle : qstyle1;
|
||
//第三方审价
|
||
if (wstwo.GetRow(rowindex).GetCell(7) == null) wstwo.GetRow(rowindex).CreateCell(7);
|
||
wstwo.GetRow(rowindex).GetCell(7).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(7).CellStyle = style;
|
||
//核减额
|
||
if (wstwo.GetRow(rowindex).GetCell(8) == null) wstwo.GetRow(rowindex).CreateCell(8);
|
||
wstwo.GetRow(rowindex).GetCell(8).SetCellValue((double)ccpSess.Sum(p => p.Reduction));
|
||
wstwo.GetRow(rowindex).GetCell(8).CellStyle = ccpSess.Sum(p => p.Reduction) >= 0 ? qstyle : qstyle1;
|
||
//核减率
|
||
if (wstwo.GetRow(rowindex).GetCell(9) == null) wstwo.GetRow(rowindex).CreateCell(9);
|
||
wstwo.GetRow(rowindex).GetCell(9).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(9).CellStyle = style;
|
||
//高核减率扣款
|
||
if (wstwo.GetRow(rowindex).GetCell(10) == null) wstwo.GetRow(rowindex).CreateCell(10);
|
||
wstwo.GetRow(rowindex).GetCell(10).SetCellValue((double)ccpSess.Sum(p => p.Deduction_DeductionRate));
|
||
wstwo.GetRow(rowindex).GetCell(10).CellStyle = ccpSess.Sum(p => p.Deduction_DeductionRate) >= 0 ? qstyle : qstyle1;
|
||
//SSR结算提交天数
|
||
if (wstwo.GetRow(rowindex).GetCell(11) == null) wstwo.GetRow(rowindex).CreateCell(11);
|
||
wstwo.GetRow(rowindex).GetCell(11).SetCellValue("");
|
||
wstwo.GetRow(rowindex).GetCell(11).CellStyle = style;
|
||
//延迟扣款
|
||
if (wstwo.GetRow(rowindex).GetCell(12) == null) wstwo.GetRow(rowindex).CreateCell(12);
|
||
wstwo.GetRow(rowindex).GetCell(12).SetCellValue((double)ccpSess.Sum(p => p.DelayedDeduction));
|
||
wstwo.GetRow(rowindex).GetCell(12).CellStyle = ccpSess.Sum(p => p.DelayedDeduction) >= 0 ? qstyle : qstyle1;
|
||
//最终结算金额(含税)
|
||
if (wstwo.GetRow(rowindex).GetCell(13) == null) wstwo.GetRow(rowindex).CreateCell(13);
|
||
wstwo.GetRow(rowindex).GetCell(13).SetCellValue((double)ccpSess.Sum(p => p.Final_SettlementAmount));
|
||
wstwo.GetRow(rowindex).GetCell(13).CellStyle = ccpSess.Sum(p => p.Final_SettlementAmount) >= 0 ? qstyle : qstyle1;
|
||
|
||
#endregion
|
||
|
||
#region TT30和BD90
|
||
|
||
int ttrate = 0;
|
||
double ttMount = 0;
|
||
int dbrate = 0;
|
||
double dbMount = 0;
|
||
var ttDbhsl = (ccpSess.Sum(p => p.Contractor_Quotation) - ccpSess.Sum(p => p.Final_SettlementAmount)) / ccpSess.Sum(p => p.Contractor_Quotation) * 100;
|
||
if (ttDbhsl < 10)
|
||
{
|
||
ttrate = 100;
|
||
ttMount = (double)ccpSess.Sum(p => p.Final_SettlementAmount);
|
||
}
|
||
else if (ttDbhsl >= 10 && ttDbhsl < 20)
|
||
{
|
||
ttrate = 70;
|
||
ttMount = (double)ccpSess.Sum(p => p.Final_SettlementAmount) * 0.7;
|
||
dbrate = 30;
|
||
dbMount = (double)ccpSess.Sum(p => p.Final_SettlementAmount) - ttMount;
|
||
}
|
||
else
|
||
{
|
||
ttrate = 50;
|
||
ttMount = (double)ccpSess.Sum(p => p.Final_SettlementAmount) / 2;
|
||
dbrate = 50;
|
||
dbMount = ttMount;
|
||
}
|
||
//TT30比例
|
||
if (wstwo.GetRow(1).GetCell(12) == null) wstwo.GetRow(1).CreateCell(12);
|
||
wstwo.GetRow(1).GetCell(12).SetCellValue(ttrate);
|
||
wstwo.GetRow(1).GetCell(12).CellStyle = style;
|
||
//TT30金额
|
||
if (wstwo.GetRow(1).GetCell(13) == null) wstwo.GetRow(1).CreateCell(13);
|
||
wstwo.GetRow(1).GetCell(13).SetCellValue(ttMount);
|
||
wstwo.GetRow(1).GetCell(13).CellStyle = ttMount >= 0 ? qstyle : qstyle1;
|
||
|
||
//BD90比例
|
||
if (wstwo.GetRow(2).GetCell(12) == null) wstwo.GetRow(2).CreateCell(12);
|
||
wstwo.GetRow(2).GetCell(12).SetCellValue(dbrate);
|
||
wstwo.GetRow(2).GetCell(12).CellStyle = style;
|
||
//BD90金额
|
||
if (wstwo.GetRow(2).GetCell(13) == null) wstwo.GetRow(2).CreateCell(13);
|
||
wstwo.GetRow(2).GetCell(13).SetCellValue(dbMount);
|
||
wstwo.GetRow(2).GetCell(13).CellStyle = dbMount >= 0 ? qstyle : qstyle1;
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
|
||
ws.ForceFormulaRecalculation = true;
|
||
wstwo.ForceFormulaRecalculation = true;
|
||
using (FileStream filess = File.OpenWrite(ReportFileName))
|
||
{
|
||
hssfworkbook.Write(filess);
|
||
}
|
||
FileInfo filet = new FileInfo(ReportFileName);
|
||
Response.Clear();
|
||
Response.Charset = "GB2312";
|
||
Response.ContentEncoding = System.Text.Encoding.UTF8;
|
||
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
|
||
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(string.Format("{0}-CCP-{1}", ccpModel.Contract_No, string.Format("{0:d3}", ccpModel.CCP_No))) + ".xlsx");
|
||
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
|
||
Response.AddHeader("Content-Length", filet.Length.ToString());
|
||
// 指定返回的是一个不能被客户端读取的流,必须被下载
|
||
Response.ContentType = "application/ms-excel";
|
||
// 把文件流发送到客户端
|
||
Response.WriteFile(filet.FullName);
|
||
// 停止页面的执行
|
||
Response.End();
|
||
}
|
||
else
|
||
{
|
||
Alert.ShowInParent("当前CCP没有SES明细信息,无法导出!");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 导出ccp列表
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void btnExportCcp_Click(object sender, EventArgs e)
|
||
{
|
||
var fileName = string.Format("{0}_{1}", "CCP", DateTime.Now.ToString("yyyy-MM-dd"));
|
||
|
||
XSSFWorkbook book = new XSSFWorkbook();
|
||
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
||
string strSql = @"SELECT ID,CCP_No,CPT_No,Contract_No,Contractor_CN+' '+Contractor_Eng as Contractor_Name,Contract_Title,Created_Time,Pricing_Method,Created_UserName,(select SUM(Final_SettlementAmount) from CCP_SESList as s where s.CCP_Id=a.ID ) as PaymentAmount FROM CCP_List as a where 1=1";
|
||
|
||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||
if (!string.IsNullOrEmpty(txtCCP_No.Text))
|
||
{
|
||
strSql = strSql + " AND a.CCP_No=@CCP_No";
|
||
listStr.Add(new SqlParameter("@CCP_No", txtCCP_No.Text.Trim()));
|
||
}
|
||
if (!string.IsNullOrEmpty(txtContract_No.Text))
|
||
{
|
||
strSql = strSql + " AND a.Contract_No=@Contract_No";
|
||
listStr.Add(new SqlParameter("@Contract_No", txtContract_No.Text.Trim()));
|
||
}
|
||
|
||
strSql = strSql + " ORDER BY a.CCP_No ASC";
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
if (dt.Rows.Count == 0)
|
||
{
|
||
Alert.ShowInParent("当前CCP没有无数据,无法导出!");
|
||
return;
|
||
}
|
||
|
||
//sheet名称
|
||
XSSFSheet sheet = (XSSFSheet)book.CreateSheet(fileName);
|
||
|
||
#region 样式
|
||
|
||
//列头居中样式
|
||
XSSFFont tfont = (XSSFFont)book.CreateFont();
|
||
tfont.FontHeightInPoints = 10;
|
||
tfont.FontName = "Arial";
|
||
tfont.IsBold = true;
|
||
ICellStyle titleStyle = book.CreateCellStyle();
|
||
titleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
titleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
titleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
titleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
titleStyle.VerticalAlignment = VerticalAlignment.Center;
|
||
titleStyle.Alignment = HorizontalAlignment.Center;
|
||
titleStyle.WrapText = true;
|
||
titleStyle.SetFont(tfont);
|
||
|
||
//全局边框靠左
|
||
XSSFFont font = (XSSFFont)book.CreateFont();
|
||
font.FontHeightInPoints = 10;
|
||
font.FontName = "Arial";
|
||
ICellStyle style = book.CreateCellStyle();
|
||
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
style.VerticalAlignment = VerticalAlignment.Center;
|
||
style.Alignment = HorizontalAlignment.Left;
|
||
style.WrapText = true;
|
||
style.SetFont(font);
|
||
|
||
//全局边框靠右
|
||
XSSFFont rfont = (XSSFFont)book.CreateFont();
|
||
rfont.FontHeightInPoints = 10;
|
||
rfont.FontName = "Arial";
|
||
ICellStyle rstyle = book.CreateCellStyle();
|
||
rstyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
rstyle.VerticalAlignment = VerticalAlignment.Center;
|
||
rstyle.Alignment = HorizontalAlignment.Right;
|
||
rstyle.WrapText = true;
|
||
rstyle.SetFont(font);
|
||
|
||
IDataFormat dataformat = book.CreateDataFormat();
|
||
//千分位全局边框靠右
|
||
XSSFFont qfont = (XSSFFont)book.CreateFont();
|
||
qfont.FontHeightInPoints = 10;
|
||
qfont.FontName = "Arial";
|
||
ICellStyle qstyle = book.CreateCellStyle();
|
||
qstyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle.VerticalAlignment = VerticalAlignment.Center;
|
||
qstyle.Alignment = HorizontalAlignment.Right;
|
||
qstyle.DataFormat = dataformat.GetFormat("#,##0.00");
|
||
qstyle.SetFont(qfont);
|
||
//千分位全局边框靠右红色字体
|
||
XSSFFont qfont1 = (XSSFFont)book.CreateFont();
|
||
qfont1.FontHeightInPoints = 10;
|
||
qfont1.FontName = "Arial";
|
||
qfont1.Color = IndexedColors.Red.Index;
|
||
ICellStyle qstyle1 = book.CreateCellStyle();
|
||
qstyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
||
qstyle1.VerticalAlignment = VerticalAlignment.Center;
|
||
qstyle1.Alignment = HorizontalAlignment.Right;
|
||
qstyle1.DataFormat = dataformat.GetFormat("#,##0.00");
|
||
qstyle1.SetFont(qfont1);
|
||
|
||
#endregion
|
||
|
||
#region 设置列宽度
|
||
|
||
sheet.SetColumnWidth(0, 10 * 256);
|
||
sheet.SetColumnWidth(1, 20 * 256);
|
||
sheet.SetColumnWidth(2, 70 * 256);
|
||
sheet.SetColumnWidth(3, 30 * 256);
|
||
sheet.SetColumnWidth(4, 20 * 256);
|
||
sheet.SetColumnWidth(5, 30 * 256);
|
||
sheet.SetColumnWidth(6, 20 * 256);
|
||
sheet.SetColumnWidth(7, 20 * 256);
|
||
|
||
#endregion
|
||
|
||
#region 列头
|
||
|
||
XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);
|
||
headerRow.CreateCell(0).SetCellValue("CCP No");
|
||
headerRow.GetCell(0).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(1).SetCellValue("Contract No");
|
||
headerRow.GetCell(1).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(2).SetCellValue("Contractor Name");
|
||
headerRow.GetCell(2).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(3).SetCellValue("Contract Title");
|
||
headerRow.GetCell(3).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(4).SetCellValue("Created Time");
|
||
headerRow.GetCell(4).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(5).SetCellValue("Pricing Method");
|
||
headerRow.GetCell(5).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(6).SetCellValue("Buyer");
|
||
headerRow.GetCell(6).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(7).SetCellValue("承包商报价");
|
||
headerRow.GetCell(7).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(8).SetCellValue("CTE/D审价");
|
||
headerRow.GetCell(8).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(9).SetCellValue("高核减率扣款");
|
||
headerRow.GetCell(9).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(10).SetCellValue("延迟扣款");
|
||
headerRow.GetCell(10).CellStyle = titleStyle;
|
||
|
||
headerRow.CreateCell(11).SetCellValue("付款金额");
|
||
headerRow.GetCell(11).CellStyle = titleStyle;
|
||
|
||
|
||
#endregion
|
||
|
||
#region 数据
|
||
|
||
int rowIndex = 1;
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
var ccpAllLs = dt.AsEnumerable().Select(s => s.Field<int>("ID")).ToList();
|
||
//获取当前和之前所有的ccpses的信息
|
||
var ccpAllSesLs = Funs.DB.CCP_SESList.Where(p => ccpAllLs.ConvertAll(s => s).Contains(p.CCP_Id));
|
||
for (int i = 0; i < dt.Rows.Count; i++)
|
||
{
|
||
int itemId = !string.IsNullOrEmpty(dt.Rows[i]["ID"].ToString()) ? int.Parse(dt.Rows[i]["ID"].ToString()) : 0;
|
||
if (itemId == 0) continue;
|
||
//获取CcpSes信息
|
||
var ccpSess = ccpAllSesLs.Where(p => p.CCP_Id == itemId).ToList();
|
||
|
||
//创建行
|
||
XSSFRow row = (XSSFRow)sheet.CreateRow(rowIndex);
|
||
|
||
row.CreateCell(0).SetCellValue(dt.Rows[i]["CCP_No"] != null ? dt.Rows[i]["CCP_No"].ToString() : string.Empty);
|
||
row.GetCell(0).CellStyle = style;
|
||
|
||
row.CreateCell(1).SetCellValue(dt.Rows[i]["Contract_No"] != null ? dt.Rows[i]["Contract_No"].ToString() : string.Empty);
|
||
row.GetCell(1).CellStyle = style;
|
||
|
||
row.CreateCell(2).SetCellValue(dt.Rows[i]["Contractor_Name"] != null ? dt.Rows[i]["Contractor_Name"].ToString() : string.Empty);
|
||
row.GetCell(2).CellStyle = style;
|
||
|
||
row.CreateCell(3).SetCellValue(dt.Rows[i]["Contract_Title"] != null ? dt.Rows[i]["Contract_Title"].ToString() : string.Empty);
|
||
row.GetCell(3).CellStyle = style;
|
||
|
||
row.CreateCell(4).SetCellValue(dt.Rows[i]["Created_Time"] != null ? dt.Rows[i]["Created_Time"].ToString() : string.Empty);
|
||
row.GetCell(4).CellStyle = style;
|
||
|
||
row.CreateCell(5).SetCellValue(dt.Rows[i]["Pricing_Method"] != null ? dt.Rows[i]["Pricing_Method"].ToString() : string.Empty);
|
||
row.GetCell(5).CellStyle = style;
|
||
|
||
row.CreateCell(6).SetCellValue(dt.Rows[i]["Created_UserName"] != null ? dt.Rows[i]["Created_UserName"].ToString() : string.Empty);
|
||
row.GetCell(6).CellStyle = style;
|
||
|
||
//承包商报价
|
||
row.CreateCell(7).SetCellValue((double)ccpSess.Sum(p => p.Contractor_Quotation));
|
||
row.GetCell(7).CellStyle = ccpSess.Sum(p => p.Contractor_Quotation) >= 0 ? qstyle : qstyle1;
|
||
//CTE/D审价
|
||
row.CreateCell(8).SetCellValue((double)ccpSess.Sum(p => p.Incl_Tax));
|
||
row.GetCell(8).CellStyle = ccpSess.Sum(p => p.Incl_Tax) >= 0 ? qstyle : qstyle1;
|
||
//高核减率扣款
|
||
row.CreateCell(9).SetCellValue((double)ccpSess.Sum(p => p.Deduction_DeductionRate));
|
||
row.GetCell(9).CellStyle = ccpSess.Sum(p => p.Deduction_DeductionRate) >= 0 ? qstyle : qstyle1;
|
||
//延迟扣款
|
||
row.CreateCell(10).SetCellValue((double)ccpSess.Sum(p => p.DelayedDeduction));
|
||
row.GetCell(10).CellStyle = ccpSess.Sum(p => p.DelayedDeduction) >= 0 ? qstyle : qstyle1;
|
||
|
||
row.CreateCell(11).SetCellValue(dt.Rows[i]["PaymentAmount"] != null ? dt.Rows[i]["PaymentAmount"].ToString() : string.Empty);
|
||
row.GetCell(11).CellStyle = rstyle;
|
||
|
||
rowIndex++;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
book.Write(ms);
|
||
byte[] strmByte = ms.ToArray();
|
||
ms.Dispose();
|
||
|
||
Response.Clear();
|
||
Response.Charset = "GB2312";
|
||
Response.ContentEncoding = System.Text.Encoding.UTF8;
|
||
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
|
||
Response.AddHeader("Content-Disposition", "attachment; fileName=" + fileName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
|
||
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
|
||
Response.AddHeader("Content-Length", strmByte.Length.ToString());
|
||
// 指定返回的是一个不能被客户端读取的流,必须被下载
|
||
Response.ContentType = "application/ms-excel";
|
||
// 把文件流发送到客户端
|
||
Response.BinaryWrite(strmByte);
|
||
// 停止页面的执行
|
||
Response.End();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 权限设置
|
||
/// <summary>
|
||
/// 菜单按钮权限
|
||
/// </summary>
|
||
private void GetButtonPower()
|
||
{
|
||
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.CPTViewListMenuId);
|
||
if (buttonList.Count() > 0)
|
||
{
|
||
if (buttonList.Contains(BLL.Const.BtnDelete))
|
||
{
|
||
this.btnDelete.Hidden = false;
|
||
}
|
||
else
|
||
{
|
||
this.btnDelete.Hidden = true;
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
} |