CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/InspectWanderAboutConfirm.a...

821 lines
37 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}