821 lines
37 KiB
C#
821 lines
37 KiB
C#
using BLL;
|
||
using Model;
|
||
using Newtonsoft.Json.Linq;
|
||
using NPOI.SS.UserModel;
|
||
using NPOI.SS.Util;
|
||
using NPOI.XSSF.UserModel;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
|
||
namespace FineUIPro.Web.TestRun.BeforeTestRun
|
||
{
|
||
public partial class InspectWanderAboutConfirm : PageBase
|
||
{
|
||
/// <summary>
|
||
/// 检查表主键
|
||
/// </summary>
|
||
public string SubInspectId
|
||
{
|
||
get { return (string)ViewState["SubInspectId"]; }
|
||
set { ViewState["SubInspectId"] = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 类型
|
||
/// </summary>
|
||
public int ConfirmType
|
||
{
|
||
get { return (int)ViewState["ConfirmType"]; }
|
||
set { ViewState["ConfirmType"] = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 类型名称
|
||
/// </summary>
|
||
public string ConfirmTypeName
|
||
{
|
||
get { return (string)ViewState["ConfirmTypeName"]; }
|
||
set { ViewState["ConfirmTypeName"] = value; }
|
||
}
|
||
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (!IsPostBack)
|
||
{
|
||
this.SubInspectId = Request.Params["SubInspectId"];
|
||
this.ConfirmType = int.Parse(Request.Params["ConfirmType"]);
|
||
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
this.ConfirmTypeName = "分包商";
|
||
}
|
||
if (this.ConfirmType == 2)
|
||
{
|
||
this.ConfirmTypeName = "承包商";
|
||
}
|
||
if (this.ConfirmType == 3)
|
||
{
|
||
this.ConfirmTypeName = "监理";
|
||
}
|
||
if (this.ConfirmType == 4)
|
||
{
|
||
this.ConfirmTypeName = "业主";
|
||
}
|
||
|
||
this.BindGrid();
|
||
}
|
||
}
|
||
|
||
#region 数据绑定
|
||
|
||
/// <summary>
|
||
/// 绑定数据
|
||
/// </summary>
|
||
public void BindGrid()
|
||
{
|
||
//获取子系统
|
||
var data = new List<ConfirmIsPass>();
|
||
var list = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.SubInspectId == this.SubInspectId).OrderBy(x => x.Sort).ToList();
|
||
if (list.Count > 0)
|
||
{
|
||
foreach (var item in list)
|
||
{
|
||
var model = new ConfirmIsPass();
|
||
model.TermItemId = item.TermItemId;
|
||
model.SubItemId = item.SubItemId;
|
||
model.SubInspectId = item.SubInspectId;
|
||
model.WorkInspectName = item.WorkInspectName;
|
||
model.ConfirmType = this.ConfirmType;
|
||
model.InspectionIllustrate = item.InspectionIllustrate;
|
||
model.ConfirmTypeName = this.ConfirmTypeName;
|
||
//1=分包商2=承包商3=监理4=业主
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
model.IsPass = item.SubcontractorIsPass;
|
||
model.Remark = item.SubcontractorRemark;
|
||
}
|
||
if (this.ConfirmType == 2)
|
||
{
|
||
model.IsPass = item.ContractorIsPass;
|
||
model.Remark = item.ContractorRemark;
|
||
}
|
||
if (this.ConfirmType == 3)
|
||
{
|
||
model.IsPass = item.SupervisionIsPass;
|
||
model.Remark = item.SupervisionRemark;
|
||
}
|
||
if (this.ConfirmType == 4)
|
||
{
|
||
model.IsPass = item.OwnerIsPass;
|
||
model.Remark = item.OwnerRemark;
|
||
}
|
||
data.Add(model);
|
||
}
|
||
}
|
||
Grid1.DataSource = data;
|
||
Grid1.DataBind();
|
||
Grid1.Title = this.ConfirmType == 1 ? "分包商确认签字" : this.ConfirmType == 2 ? "承包商确认签字" : this.ConfirmType == 3 ? "监理确认签字" : this.ConfirmType == 4 ? "业主确认签字" : "";
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
protected void Grid1_Sort(object sender, GridSortEventArgs e)
|
||
{
|
||
Grid1.SortDirection = e.SortDirection;
|
||
Grid1.SortField = e.SortField;
|
||
BindGrid();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 保存
|
||
|
||
/// <summary>
|
||
/// 保存
|
||
/// </summary>
|
||
protected void btnSave_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
JArray mergedData = Grid1.GetMergedData();
|
||
foreach (JObject mergedRow in mergedData)
|
||
{
|
||
string status = mergedRow.Value<string>("status");
|
||
JObject values = mergedRow.Value<JObject>("values");
|
||
int i = mergedRow.Value<int>("index");
|
||
var termItemId = this.Grid1.Rows[i].DataKeys[0].ToString();
|
||
//获取子系统信息
|
||
var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.TermItemId == termItemId);
|
||
if (model != null)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(values.Value<string>("IsPass")))
|
||
{
|
||
//1=分包商2=承包商3=监理4=业主
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
model.SubcontractorIsPass = int.Parse(values.Value<string>("IsPass"));
|
||
model.SubcontractorRemark = values.Value<string>("Remark");
|
||
}
|
||
else if (this.ConfirmType == 2)
|
||
{
|
||
model.ContractorIsPass = int.Parse(values.Value<string>("IsPass"));
|
||
model.ContractorRemark = values.Value<string>("Remark");
|
||
}
|
||
else if (this.ConfirmType == 3)
|
||
{
|
||
model.SupervisionIsPass = int.Parse(values.Value<string>("IsPass"));
|
||
model.SupervisionRemark = values.Value<string>("Remark");
|
||
}
|
||
else if (this.ConfirmType == 4)
|
||
{
|
||
model.OwnerIsPass = int.Parse(values.Value<string>("IsPass"));
|
||
model.OwnerRemark = values.Value<string>("Remark");
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
}
|
||
var subInspectId = this.Grid1.Rows[0].DataKeys[3].ToString();
|
||
var subModel = Funs.DB.PreRun_SubInspectTerm.FirstOrDefault(x => x.SubInspectId == subInspectId);
|
||
if (subModel != null)
|
||
{
|
||
//1=分包商2=承包商3=监理4=业主
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && x.SubcontractorIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.SubcontractorIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.SubcontractorIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 2)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && x.ContractorIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.ContractorIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.ContractorIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 3)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && x.SupervisionIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.SupervisionIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.SupervisionIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 4)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == subInspectId && x.OwnerIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.OwnerIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.OwnerIsAllPass = 0;
|
||
}
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
BindGrid();
|
||
ShowNotify("保存成功!");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ShowNotify(ex.Message, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 实体绑定
|
||
/// </summary>
|
||
public class ConfirmIsPass
|
||
{
|
||
/// <summary>
|
||
/// 主键
|
||
/// </summary>
|
||
public string TermItemId { get; set; }
|
||
/// <summary>
|
||
/// 检查项主键
|
||
/// </summary>
|
||
public string SubItemId { get; set; }
|
||
/// <summary>
|
||
/// 检查表主键
|
||
/// </summary>
|
||
public string SubInspectId { get; set; }
|
||
/// <summary>
|
||
/// 名称
|
||
/// </summary>
|
||
public string WorkInspectName { get; set; }
|
||
/// <summary>
|
||
/// 检查说明
|
||
/// </summary>
|
||
public string InspectionIllustrate { get; set; }
|
||
/// <summary>
|
||
/// 确认类型1=分包商2=承包商3=监理4=业主
|
||
/// </summary>
|
||
public int ConfirmType { get; set; }
|
||
/// <summary>
|
||
/// 确认类型名称
|
||
/// </summary>
|
||
public string ConfirmTypeName { get; set; }
|
||
/// <summary>
|
||
/// 是否通过
|
||
/// </summary>
|
||
public int? IsPass { get; set; }
|
||
/// <summary>
|
||
/// 备注
|
||
/// </summary>
|
||
public string Remark { get; set; }
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 窗口关闭
|
||
/// </summary>
|
||
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
||
{
|
||
BindGrid();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 导出
|
||
/// </summary>
|
||
protected void btnExport_Click(object sender, EventArgs e)
|
||
{
|
||
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
|
||
//导出文件
|
||
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
|
||
if (!Directory.Exists(filePath))
|
||
{
|
||
Directory.CreateDirectory(filePath);
|
||
}
|
||
string ReportFileName = filePath + this.ConfirmTypeName + "确认签字.xlsx";
|
||
//获取工作包检查表
|
||
var termData = from a in Funs.DB.PreRun_SubInspectTerm
|
||
join b in Funs.DB.Base_Project on a.ProjectId equals b.ProjectId
|
||
join c in Funs.DB.PreRun_WorkPackage on a.WorkPackId equals c.WorkPackId
|
||
join zz in Funs.DB.PreRun_SysDevice on a.InstallationId equals zz.PreRunId//装置
|
||
join gx in Funs.DB.PreRun_SysDevice on a.ProcessesId equals gx.PreRunId//工序
|
||
join xt in Funs.DB.PreRun_SysDevice on a.SystemId equals xt.PreRunId//系统
|
||
select new { a.SubInspectId, a.ProjectId, b.ProjectName, b.ShortName, b.ProjectCode, a.InstallationId, a.ProcessesId, a.SystemId, a.SubSystemId, a.WorkPackId, a.InspectResult, a.Subcontractor, a.Contractor, a.Supervision, a.Owner, a.InspectionIsAllPass, a.SubcontractorIsAllPass, a.ContractorIsAllPass, a.SupervisionIsAllPass, a.OwnerIsAllPass, a.WorkPackType, a.PropertyTechnologyId, a.InspectTime, a.AddUser, a.AddTime, c.WorkPackName, zzName = zz.PreRunName, gxName = gx.PreRunName, xtName = xt.PreRunName };
|
||
if (termData != null)
|
||
{
|
||
var termModel = termData.FirstOrDefault();
|
||
//获取工作包检查项表
|
||
var termItems = Funs.DB.PreRun_SubInspectTermItem.Where(x => x.SubInspectId == this.SubInspectId).OrderBy(x => x.Sort).ToList();
|
||
//获取管道或者设备号
|
||
var termCodes = string.Empty;
|
||
//1=管道2=设备
|
||
var ids = termModel.PropertyTechnologyId.Split(',').ToList();
|
||
if (termModel.WorkPackType == 1)
|
||
{
|
||
var codeDatas = Funs.DB.PreRun_PropertySysPiping.Where(x => ids.Contains(x.PropertyId)).ToList();
|
||
if (codeDatas.Count > 0)
|
||
{
|
||
termCodes = string.Join(",", codeDatas.ConvertAll(x => x.PipingCode));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var codeDatas = Funs.DB.PreRun_TechnologySysPiping.Where(x => ids.Contains(x.TechnologyId)).ToList();
|
||
if (codeDatas.Count > 0)
|
||
{
|
||
termCodes = string.Join(",", codeDatas.ConvertAll(x => x.TagNumber));
|
||
}
|
||
}
|
||
|
||
int rowIndex = 0;
|
||
XSSFWorkbook hssfworkbook = new XSSFWorkbook();
|
||
XSSFSheet ws = (XSSFSheet)hssfworkbook.CreateSheet(this.ConfirmTypeName + "确认签字");
|
||
|
||
#region 列宽
|
||
|
||
ws.SetColumnWidth(0, (7 * 256));
|
||
ws.SetColumnWidth(1, (4 * 256));
|
||
ws.SetColumnWidth(2, (4 * 256));
|
||
ws.SetColumnWidth(3, (4 * 256));
|
||
ws.SetColumnWidth(4, (10 * 256));
|
||
ws.SetColumnWidth(5, (10 * 256));
|
||
ws.SetColumnWidth(6, (10 * 256));
|
||
ws.SetColumnWidth(7, (10 * 256));
|
||
ws.SetColumnWidth(8, (3 * 256));
|
||
ws.SetColumnWidth(9, (3 * 256));
|
||
ws.SetColumnWidth(10, (3 * 256));
|
||
ws.SetColumnWidth(11, (3 * 256));
|
||
ws.SetColumnWidth(12, (3 * 256));
|
||
ws.SetColumnWidth(13, (3 * 256));
|
||
ws.SetColumnWidth(14, (3 * 256));
|
||
ws.SetColumnWidth(15, (3 * 256));
|
||
ws.SetColumnWidth(16, (3 * 256));
|
||
ws.SetColumnWidth(17, (3 * 256));
|
||
|
||
#endregion
|
||
|
||
#region 样式
|
||
//头部样式居中
|
||
ICellStyle titleStyle = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 14, true, true);
|
||
//头部样式靠左
|
||
ICellStyle leftTitleStyle = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 14, true, true);
|
||
//公共样式
|
||
ICellStyle style = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10.5, true);
|
||
//公共样式靠左
|
||
ICellStyle leftStyle = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Left, 10.5, true);
|
||
//公共样式靠左上对其
|
||
ICellStyle leftTopStyle = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Top, HorizontalAlignment.Left, 10.5, true);
|
||
//公共样式加粗
|
||
ICellStyle styleBold = SetExcelStyle(hssfworkbook, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, VerticalAlignment.Center, HorizontalAlignment.Center, 10.5, true, true);
|
||
|
||
#endregion
|
||
|
||
#region 头部
|
||
|
||
ws = ExcelCreateRowTitle(ws, hssfworkbook, style, rowIndex, rowIndex + 5, 0, 17);
|
||
//行1
|
||
var region = new CellRangeAddress(rowIndex, rowIndex + 2, 0, 0);
|
||
ws.AddMergedRegion(region);
|
||
byte[] bytes = File.ReadAllBytes(Server.MapPath("~/") + "Images\\Template.png");
|
||
int pictureIdx = hssfworkbook.AddPicture(bytes, PictureType.JPEG);
|
||
IDrawing patriarch = ws.CreateDrawingPatriarch();
|
||
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 0, rowIndex, 1, rowIndex + 2);
|
||
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
|
||
//pict.Resize();
|
||
region = new CellRangeAddress(rowIndex, rowIndex + 2, 1, 3);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex).GetCell(1).SetCellValue("中国五环工程有限公司");
|
||
ws.GetRow(rowIndex).GetCell(1).CellStyle =
|
||
ws.GetRow(rowIndex).GetCell(2).CellStyle =
|
||
ws.GetRow(rowIndex).GetCell(3).CellStyle = leftTitleStyle;
|
||
region = new CellRangeAddress(rowIndex, rowIndex, 4, 7);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex).GetCell(4).SetCellValue(termModel.ProjectName);
|
||
ws.GetRow(rowIndex).GetCell(4).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex, rowIndex, 8, 12);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex).GetCell(8).SetCellValue("项目号");
|
||
ws.GetRow(rowIndex).GetCell(8).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex, rowIndex, 13, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex).GetCell(13).SetCellValue(termModel.ProjectCode);
|
||
ws.GetRow(rowIndex).GetCell(13).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 4, 7);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(4).SetCellValue($"({termModel.zzName})({termModel.gxName}/{termModel.xtName})");
|
||
ws.GetRow(rowIndex + 1).GetCell(4).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 8, 12);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(8).SetCellValue("(文件号)");
|
||
ws.GetRow(rowIndex + 1).GetCell(8).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 13, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(13).SetCellValue("");
|
||
ws.GetRow(rowIndex + 1).GetCell(13).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 4, 7);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 2).GetCell(4).SetCellValue($"{termModel.WorkPackName}条件检查表");
|
||
ws.GetRow(rowIndex + 2).GetCell(4).CellStyle = titleStyle;
|
||
region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 8, 12);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 2).GetCell(8).SetCellValue("第 1 页");
|
||
ws.GetRow(rowIndex + 2).GetCell(8).CellStyle = style;
|
||
region = new CellRangeAddress(rowIndex + 2, rowIndex + 2, 13, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 2).GetCell(13).SetCellValue("共 1 页");
|
||
ws.GetRow(rowIndex + 2).GetCell(13).CellStyle = style;
|
||
//行4,行5
|
||
region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 0, 2);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 3).GetCell(0).CellStyle = style;
|
||
ws.GetRow(rowIndex + 3).GetCell(0).SetCellValue(termModel.WorkPackType == 1 ? "管道号" : "设备号");
|
||
region = new CellRangeAddress(rowIndex + 3, rowIndex + 4, 3, 11);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 3).GetCell(3).CellStyle = leftStyle;
|
||
ws.GetRow(rowIndex + 3).GetCell(3).SetCellValue(termCodes);
|
||
region = new CellRangeAddress(rowIndex + 3, rowIndex + 3, 12, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 3).GetCell(12).CellStyle = style;
|
||
ws.GetRow(rowIndex + 3).GetCell(12).SetCellValue("检查日期");
|
||
region = new CellRangeAddress(rowIndex + 4, rowIndex + 4, 12, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 4).GetCell(12).CellStyle = style;
|
||
ws.GetRow(rowIndex + 4).GetCell(12).SetCellValue(DateTime.Now.ToString("yyyy年MM月dd日"));
|
||
//行6
|
||
ws.GetRow(rowIndex + 5).GetCell(0).CellStyle = styleBold;
|
||
ws.GetRow(rowIndex + 5).GetCell(0).SetCellValue("序号");
|
||
region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 1, 7);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 5).GetCell(1).CellStyle = styleBold;
|
||
ws.GetRow(rowIndex + 5).GetCell(1).SetCellValue("检查项目");
|
||
region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 8, 12);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 5).GetCell(8).CellStyle = styleBold;
|
||
ws.GetRow(rowIndex + 5).GetCell(8).SetCellValue("结果");
|
||
region = new CellRangeAddress(rowIndex + 5, rowIndex + 5, 13, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 5).GetCell(13).CellStyle = styleBold;
|
||
ws.GetRow(rowIndex + 5).GetCell(13).SetCellValue("备注");
|
||
|
||
#endregion
|
||
|
||
#region 表格
|
||
|
||
var start = rowIndex + 6;
|
||
var end = rowIndex + 5 + termItems.Count;
|
||
|
||
ws = ExcelCreateRowTitle(ws, hssfworkbook, style, start, end, 0, 17);
|
||
|
||
//合并单元格
|
||
for (int hb = start; hb <= end; hb++)
|
||
{
|
||
region = new CellRangeAddress(hb, hb, 1, 7);
|
||
ws.AddMergedRegion(region);
|
||
region = new CellRangeAddress(hb, hb, 8, 12);
|
||
ws.AddMergedRegion(region);
|
||
region = new CellRangeAddress(hb, hb, 13, 17);
|
||
ws.AddMergedRegion(region);
|
||
}
|
||
|
||
//数据
|
||
int num = 1;
|
||
var dataIndex = 6;
|
||
foreach (var item in termItems)
|
||
{
|
||
//序号
|
||
ws.GetRow(dataIndex).GetCell(0).SetCellValue(num);
|
||
//检查项目
|
||
ws.GetRow(dataIndex).GetCell(1).SetCellValue(item.WorkInspectName);
|
||
ws.GetRow(dataIndex).GetCell(1).CellStyle = leftStyle;
|
||
//结果
|
||
ws.GetRow(dataIndex).GetCell(8).SetCellValue("");
|
||
//备注
|
||
ws.GetRow(dataIndex).GetCell(13).SetCellValue("");
|
||
dataIndex++;
|
||
num++;
|
||
}
|
||
rowIndex = start + termItems.Count;
|
||
|
||
#endregion
|
||
|
||
#region 尾部
|
||
|
||
ws = ExcelCreateRowTitle(ws, hssfworkbook, style, rowIndex, rowIndex, 0, 17, 100);
|
||
//行1
|
||
ws.GetRow(rowIndex).GetCell(0).SetCellValue("结论");
|
||
region = new CellRangeAddress(rowIndex, rowIndex, 1, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex).GetCell(1).SetCellValue("是否同意进行冲洗吹扫(包括整改意见):");
|
||
ws.GetRow(rowIndex).GetCell(1).CellStyle = leftTopStyle;
|
||
//行2
|
||
ws = ExcelCreateRowTitle(ws, hssfworkbook, style, rowIndex + 1, rowIndex + 1, 0, 17, 80);
|
||
ws.GetRow(rowIndex + 1).GetCell(0).SetCellValue("检查人员");
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 1, 4);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(1).SetCellValue("施工单位:");
|
||
ws.GetRow(rowIndex + 1).GetCell(1).CellStyle = leftTopStyle;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 5, 6);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(5).SetCellValue("总承包商:");
|
||
ws.GetRow(rowIndex + 1).GetCell(5).CellStyle = leftTopStyle;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 7, 11);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(7).SetCellValue("监理:");
|
||
ws.GetRow(rowIndex + 1).GetCell(7).CellStyle = leftTopStyle;
|
||
region = new CellRangeAddress(rowIndex + 1, rowIndex + 1, 12, 17);
|
||
ws.AddMergedRegion(region);
|
||
ws.GetRow(rowIndex + 1).GetCell(12).SetCellValue("业主:");
|
||
ws.GetRow(rowIndex + 1).GetCell(12).CellStyle = leftTopStyle;
|
||
|
||
#endregion
|
||
|
||
ws.PrintSetup.Landscape = false;
|
||
ws.PrintSetup.PaperSize = 9;
|
||
ws.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(this.ConfirmTypeName + "确认签字.xlsx"));
|
||
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
|
||
Response.AddHeader("Content-Length", filet.Length.ToString());
|
||
// 指定返回的是一个不能被客户端读取的流,必须被下载
|
||
Response.ContentType = "application/ms-excel";
|
||
// 把文件流发送到客户端
|
||
Response.WriteFile(filet.FullName);
|
||
// 停止页面的执行
|
||
Response.End();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 导入
|
||
/// </summary>
|
||
protected void btnImport_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (this.fileData.HasFile == false)
|
||
{
|
||
ShowNotify("请选择excel文件!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
string IsXls = Path.GetExtension(this.fileData.FileName).ToString().Trim().ToLower();
|
||
if (IsXls != ".xls" && IsXls != ".xlsx")
|
||
{
|
||
ShowNotify("excel文件类型错误!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
string rootPath = Server.MapPath("~/");
|
||
string initFullPath = rootPath + Const.ExcelUrl;
|
||
if (!Directory.Exists(initFullPath))
|
||
{
|
||
Directory.CreateDirectory(initFullPath);
|
||
}
|
||
//指定上传文件名称
|
||
string fileUrl = BLL.Funs.GetNewFileName() + IsXls;
|
||
//上传文件路径
|
||
string filePath = initFullPath + fileUrl;
|
||
//文件上传服务器
|
||
this.fileData.PostedFile.SaveAs(filePath);
|
||
//文件上传服务器后的名称
|
||
string fileName = rootPath + Const.ExcelUrl + fileUrl;
|
||
//读取Excel
|
||
DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out string message, false);
|
||
if (ds == null)
|
||
{
|
||
ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(message))
|
||
{
|
||
ShowNotify(message, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
if (ds.Tables[0].Rows.Count > 6)
|
||
{
|
||
var fileVerify = VerifyFile(ds);
|
||
if (!fileVerify)
|
||
{
|
||
ShowNotify("请使用导出的Excel作为模板!", MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
List<PreRun_SubInspectTermItem> list = new List<PreRun_SubInspectTermItem>();
|
||
//数据导入
|
||
for (int i = 6; i < ds.Tables[0].Rows.Count; i++)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(ds.Tables[0].Rows[i][1].ToString())) continue;
|
||
if (string.IsNullOrWhiteSpace(ds.Tables[0].Rows[i][8].ToString())) continue;
|
||
var model = Funs.DB.PreRun_SubInspectTermItem.FirstOrDefault(x => x.WorkInspectName.Trim() == ds.Tables[0].Rows[i][1].ToString().Trim());
|
||
if (model == null) continue;
|
||
var resultStr = ds.Tables[0].Rows[i][8].ToString();
|
||
var remark = ds.Tables[0].Rows[i][13].ToString();
|
||
var isPass = 0;
|
||
if (resultStr.Trim() == "通过")
|
||
{
|
||
isPass = 1;
|
||
}
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
model.SubcontractorIsPass = isPass;
|
||
if (!string.IsNullOrWhiteSpace(remark))
|
||
{
|
||
model.SubcontractorRemark = remark;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 2)
|
||
{
|
||
model.ContractorIsPass = isPass;
|
||
if (!string.IsNullOrWhiteSpace(remark))
|
||
{
|
||
model.ContractorRemark = remark;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 3)
|
||
{
|
||
model.SupervisionIsPass = isPass;
|
||
if (!string.IsNullOrWhiteSpace(remark))
|
||
{
|
||
model.SupervisionRemark = remark;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 4)
|
||
{
|
||
model.OwnerIsPass = isPass;
|
||
if (!string.IsNullOrWhiteSpace(remark))
|
||
{
|
||
model.OwnerRemark = remark;
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ShowNotify("文件无数据!", MessageBoxIcon.Warning);
|
||
}
|
||
var subModel = Funs.DB.PreRun_SubInspectTerm.FirstOrDefault(x => x.SubInspectId == this.SubInspectId);
|
||
if (subModel != null)
|
||
{
|
||
//1=分包商2=承包商3=监理4=业主
|
||
if (this.ConfirmType == 1)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == this.SubInspectId && x.SubcontractorIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.SubcontractorIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.SubcontractorIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 2)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == this.SubInspectId && x.ContractorIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.ContractorIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.ContractorIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 3)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == this.SubInspectId && x.SupervisionIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.SupervisionIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.SupervisionIsAllPass = 0;
|
||
}
|
||
}
|
||
else if (this.ConfirmType == 4)
|
||
{
|
||
if (Funs.DB.PreRun_SubInspectTermItem.Count(x => x.SubInspectId == this.SubInspectId && x.OwnerIsPass.GetValueOrDefault() != 1) == 0)
|
||
{
|
||
subModel.OwnerIsAllPass = 1;
|
||
}
|
||
else
|
||
{
|
||
subModel.OwnerIsAllPass = 0;
|
||
}
|
||
}
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
BindGrid();
|
||
fileData.Reset();
|
||
ShowNotify("导入成功!", MessageBoxIcon.Success);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ShowNotify(ex.Message, MessageBoxIcon.Warning);
|
||
}
|
||
}
|
||
|
||
#region 私有方法
|
||
|
||
private bool VerifyFile(DataSet ds)
|
||
{
|
||
var result = true;
|
||
|
||
if (ds.Tables[0].Rows[5][0].ToString() != "序号") result = false;
|
||
if (ds.Tables[0].Rows[5][1].ToString() != "检查项目") result = false;
|
||
if (ds.Tables[0].Rows[5][8].ToString() != "结果") result = false;
|
||
if (ds.Tables[0].Rows[5][13].ToString() != "备注") result = false;
|
||
|
||
return result;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取某一列的所有值
|
||
/// </summary>
|
||
/// <typeparam name="T">列数据类型</typeparam>
|
||
/// <param name="dtSource">数据表</param>
|
||
/// <param name="filedName">列名</param>
|
||
/// <returns></returns>
|
||
public static List<T> GetColumnValues<T>(DataTable dtSource, string filedName)
|
||
{
|
||
return (from r in dtSource.AsEnumerable() select r.Field<T>(filedName)).ToList<T>();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 验证datatable某列是否存在重复
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool HasRepeatData(DataTable dt, string[] colName)
|
||
{
|
||
bool flag = false;
|
||
DataView myDataView = new DataView(dt);
|
||
if (myDataView.ToTable(true, colName).Rows.Count < dt.Rows.Count)
|
||
{
|
||
flag = true;
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建样式
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static ICellStyle SetExcelStyle(XSSFWorkbook wb, BorderStyle Bottom, BorderStyle Left, BorderStyle Right, BorderStyle Top, VerticalAlignment VerAig, HorizontalAlignment HorAig, double FontSize, bool WrapText = true, bool Bold = false, string FontName = "宋体")
|
||
{
|
||
ICellStyle style = wb.CreateCellStyle();
|
||
style.BorderBottom = Bottom;
|
||
style.BorderLeft = Left;
|
||
style.BorderRight = Right;
|
||
style.BorderTop = Top;
|
||
style.VerticalAlignment = VerAig;
|
||
style.Alignment = HorAig;
|
||
IFont font = wb.CreateFont();
|
||
font.FontHeightInPoints = FontSize;
|
||
font.IsBold = Bold;
|
||
font.FontName = FontName;
|
||
style.SetFont(font);
|
||
style.WrapText = WrapText;
|
||
return style;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建头部
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private XSSFSheet ExcelCreateRowTitle(XSSFSheet ws, XSSFWorkbook hssfworkbook, ICellStyle style, int sRows, int eRows, int cStart, int cEnd, float height = 21)
|
||
{
|
||
for (int i = sRows; i <= eRows; i++)
|
||
{
|
||
ws.CreateRow(i);
|
||
ws.GetRow(i).HeightInPoints = height;
|
||
for (int j = cStart; j <= cEnd; j++)
|
||
{
|
||
ws.GetRow(i).CreateCell(j);
|
||
ws.GetRow(i).CreateCell(j).CellStyle = style;
|
||
}
|
||
}
|
||
return ws;
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
} |