using BLL; using MiniExcelLibs; using Model; using NPOI.SS.Util; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; namespace FineUIPro.Web.HJGL.NDT { public partial class NDTBatchImport : PageBase { #region 定义项 /// /// 委托单主键 /// public string TrustBatchId { get { return (string)ViewState["TrustBatchId"]; } set { ViewState["TrustBatchId"] = value; } } /// /// 上传预设的虚拟路径 /// private string initPath = Const.ExcelUrl;//"File\\Excel\\DataIn\\"; /// /// 错误集合 /// public static string errorInfos = string.Empty; /// /// 导入数据分类(NDTBatch) /// public static string DataClassification = "NDTBatch"; public static List ndes = new List(); public static List ndeItems = new List(); public enum ButtonState { Check = 0, Import = 1, Save = 2 } public static int State; #endregion #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TrustBatchId = Request.Params["trustBatchId"]; this.hdFileName.Text = string.Empty; errorInfos = string.Empty; State = (int)ButtonState.Check; if (ndeItems != null) { ndeItems.Clear(); } //lbVersion.Text = BLL.HJGL_DesignBasisDataImportService.GetNowVersionByUnitWorkId(Request.Params["UnitWorkId"], DataClassification).ToString(); BindGrid2(); } } #endregion void BindGrid2() { string strSql = @" select Import.DesignBasisDataImportId ,Import.ProjectId ,Import.UnitWorkId ,(Case Import.ImportType when '0' then '补充导入' when '1' then '更新导入' end) as ImportType ,Import.FileName ,Import.FilePath ,Import.DataClassification ,Import.FileType ,Import.FileSize ,Import.FileId ,Import.Version ,Import.Remark ,Import.CreateMan ,Import.CreateDate , Users.PersonName from HJGL_DesignBasisDataImport as Import left join Person_Persons as Users on Users.PersonId=Import.CreateMan where Import.UnitWorkId=@UnitWorkId and Import.ProjectId=@ProjectId and Import.DataClassification=@DataClassification order by Import.CreateDate"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); if (!string.IsNullOrEmpty(this.TrustBatchId)) { var trustBatch = BLL.Batch_BatchTrustService.GetBatchTrustById(this.TrustBatchId); if (trustBatch != null) { if (!string.IsNullOrEmpty(trustBatch.UnitWorkId)) { listStr.Add(new SqlParameter("@UnitWorkId", trustBatch.UnitWorkId)); } } } listStr.Add(new SqlParameter("@DataClassification", DataClassification)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); // 2.获取当前分页数据 //var table = this.GetPagedDataTable(Grid1, tb1); Grid2.RecordCount = tb.Rows.Count; //tb = GetFilteredTable(Grid2.FilteredData, tb); var table = this.GetPagedDataTable(Grid2, tb); Grid2.DataSource = table; Grid2.DataBind(); } #region 模板下载 /// /// 模板下载 /// /// /// protected void btnDownLoad_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Confirm.GetShowReference("确定要下载模板吗?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel"))); } /// /// 下载导入模板 /// /// /// protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) { if (e.EventArgument == "Confirm_OK") { string rootPath = Server.MapPath("~/"); string initTemplatePath = Const.NDTBatchTemplateUrl; string uploadfilepath = string.Empty; string newUrl = string.Empty; uploadfilepath = rootPath + initTemplatePath; var batchTrust = (from x in Funs.DB.View_Batch_BatchTrust where x.TrustBatchId == TrustBatchId select x).FirstOrDefault(); var batchTrustItemLists = (from x in Funs.DB.View_Batch_BatchTrustItem where x.TrustBatchId == TrustBatchId select x); if (batchTrustItemLists != null) { newUrl = uploadfilepath.Replace("管道焊口检测结果通知单导入模板", "管道焊口检测结果通知单(" + DateTime.Now.ToString("yyyyMMdd") + ")"); if (File.Exists(newUrl)) { File.Delete(newUrl); } File.Copy(uploadfilepath, newUrl); // 第一步:读取文件流 NPOI.SS.UserModel.IWorkbook workbook; using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) { workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);//.xlsx //workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream);//.xls } // 创建单元格样式 NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; cellStyle.WrapText = true;//自动换行 var font = workbook.CreateFont(); font.FontHeightInPoints = 10; cellStyle.SetFont(font); //尾部样式 NPOI.SS.UserModel.ICellStyle bottomStyle = workbook.CreateCellStyle(); bottomStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; bottomStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; bottomStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; bottomStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; bottomStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; bottomStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Top; bottomStyle.WrapText = true;//自动换行 var bottomfont = workbook.CreateFont(); bottomfont.FontHeightInPoints = 10; bottomStyle.SetFont(bottomfont); //第二步:创建新数据行 NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); NPOI.SS.UserModel.IRow row = sheet.GetRow(0); NPOI.SS.UserModel.ICell cell; //设置生成下拉框的行和列 SetCellDropdownList(sheet, 6, 6, new List() { "合格", "不合格" }.ToArray());//是否合格 SetCellDropdownList(sheet, 7, 7, new List() { "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ" }.ToArray());//评定级别 var defects = from x in Funs.DB.Base_Defect select x.DefectName;//缺陷 SetCellDropdownList(sheet, 8, 8, new List() { string.Join(",", defects.ToList()) }.ToArray()); //添加数据 cell = row.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.ProjectName);//工程名称 NPOI.SS.UserModel.IRow row1 = sheet.GetRow(1); cell = row1.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.UnitWorkName);// 单位工程名称 NPOI.SS.UserModel.IRow row2 = sheet.GetRow(2); cell = row2.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.UnitName);//委托单位 cell = row2.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.TrustBatchCode);//委托单号 NPOI.SS.UserModel.IRow row3 = sheet.GetRow(3); cell = row3.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue("焊后");//检测时机 cell = row3.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue("NB/T47013.2-2015");//检测标准 NPOI.SS.UserModel.IRow row4 = sheet.GetRow(4); cell = row4.CreateCell(3); cell.CellStyle = cellStyle; if (!string.IsNullOrEmpty(batchTrustItemLists.FirstOrDefault().WeldingMethodCode)) { cell.SetCellValue(batchTrustItemLists.FirstOrDefault().WeldingMethodCode);//焊接方法 } NPOI.SS.UserModel.IRow row5 = sheet.GetRow(5); cell = row5.CreateCell(1); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.DetectionTypeCode);//检测方法 cell = row5.CreateCell(3); cell.CellStyle = cellStyle; if (!string.IsNullOrEmpty(batchTrustItemLists.FirstOrDefault().GrooveTypeCode)) { cell.SetCellValue(batchTrustItemLists.FirstOrDefault().GrooveTypeCode);//坡口形式 } cell = row5.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue(batchTrust.DetectionRateValue + "%");//检测比例 int i = 9; //未满11行,填充空白行到11行;超过11行按实际行填充 if (batchTrustItemLists.Count() < 11) { foreach (var item in batchTrustItemLists) { // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 cell = row.CreateCell(0); cell.CellStyle = cellStyle; cell.SetCellValue((i - 8).ToString());//序号 cell = row.CreateCell(1); cell.CellStyle = cellStyle; cell.SetCellValue(item.PipelineCode.ToString());//管线号 cell = row.CreateCell(2); cell.CellStyle = cellStyle; cell.SetCellValue(item.WeldJointCode);//焊口号 cell = row.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue(item.WelderCode);//焊工号 cell = row.CreateCell(4); cell.CellStyle = cellStyle; cell.SetCellValue("");//检测总数 cell = row.CreateCell(5); cell.CellStyle = cellStyle; cell.SetCellValue("");//合格数 cell = row.CreateCell(6); cell.CellStyle = cellStyle; cell.SetCellValue("");//是否合格 cell = row.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue("");//评定级别 cell = row.CreateCell(8); cell.CellStyle = cellStyle; cell.SetCellValue("");//缺陷 cell = row.CreateCell(9); cell.CellStyle = cellStyle; cell.SetCellValue("");//返修位置 cell = row.CreateCell(10); cell.CellStyle = cellStyle; cell.SetCellValue("");//备注 i++; } for (int j = 0; j < 11 - batchTrustItemLists.Count(); j++) { // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 cell = row.CreateCell(0); cell.CellStyle = cellStyle; cell.SetCellValue((i - 8).ToString());//序号 cell = row.CreateCell(1); cell.CellStyle = cellStyle; cell.SetCellValue("");//管线号 cell = row.CreateCell(2); cell.CellStyle = cellStyle; cell.SetCellValue("");//焊口号 cell = row.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue("");//焊工号 cell = row.CreateCell(4); cell.CellStyle = cellStyle; cell.SetCellValue("");//检测总数 cell = row.CreateCell(5); cell.CellStyle = cellStyle; cell.SetCellValue("");//合格数 cell = row.CreateCell(6); cell.CellStyle = cellStyle; cell.SetCellValue("");//是否合格 cell = row.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue("");//评定级别 cell = row.CreateCell(8); cell.CellStyle = cellStyle; cell.SetCellValue("");//缺陷 cell = row.CreateCell(9); cell.CellStyle = cellStyle; cell.SetCellValue("");//返修位置 cell = row.CreateCell(10); cell.CellStyle = cellStyle; cell.SetCellValue("");//备注 i++; } //尾部 签字盖章 // 创建新数据行 row = sheet.CreateRow(20); row.HeightInPoints = 43; CellRangeAddress region = new CellRangeAddress(20, 20, 0, 1); sheet.AddMergedRegion(region); cell = row.CreateCell(0); cell.SetCellValue("委托方单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(1); cell.CellStyle = bottomStyle; region = new CellRangeAddress(20, 20, 2, 3); sheet.AddMergedRegion(region); cell = row.CreateCell(2); cell.SetCellValue("评片人:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(3); cell.CellStyle = bottomStyle; region = new CellRangeAddress(20, 20, 4, 6); sheet.AddMergedRegion(region); cell = row.CreateCell(4); cell.SetCellValue("检测方单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(5); cell.CellStyle = bottomStyle; cell = row.CreateCell(6); cell.CellStyle = bottomStyle; region = new CellRangeAddress(20, 20, 7, 10); sheet.AddMergedRegion(region); cell = row.CreateCell(7); cell.SetCellValue("监理单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(8); cell.CellStyle = bottomStyle; cell = row.CreateCell(9); cell.CellStyle = bottomStyle; cell = row.CreateCell(10); cell.CellStyle = bottomStyle; row = sheet.CreateRow(21); row.HeightInPoints = 43; region = new CellRangeAddress(21, 21, 0, 1); sheet.AddMergedRegion(region); cell = row.CreateCell(0); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(1); cell.CellStyle = bottomStyle; region = new CellRangeAddress(21, 21, 2, 3); sheet.AddMergedRegion(region); cell = row.CreateCell(2); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(3); cell.CellStyle = bottomStyle; region = new CellRangeAddress(21, 21, 4, 6); sheet.AddMergedRegion(region); cell = row.CreateCell(4); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(5); cell.CellStyle = bottomStyle; cell = row.CreateCell(6); cell.CellStyle = bottomStyle; region = new CellRangeAddress(21, 21, 7, 10); sheet.AddMergedRegion(region); cell = row.CreateCell(7); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(8); cell.CellStyle = bottomStyle; cell = row.CreateCell(9); cell.CellStyle = bottomStyle; cell = row.CreateCell(10); cell.CellStyle = bottomStyle; } else { foreach (var item in batchTrustItemLists) { // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 cell = row.CreateCell(0); cell.CellStyle = cellStyle; cell.SetCellValue((i - 8).ToString());//序号 cell = row.CreateCell(1); cell.CellStyle = cellStyle; cell.SetCellValue(item.PipelineCode.ToString());//管线号 cell = row.CreateCell(2); cell.CellStyle = cellStyle; cell.SetCellValue(item.WeldJointCode);//焊口号 cell = row.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue(item.WelderCode);//焊工号 cell = row.CreateCell(4); cell.CellStyle = cellStyle; cell.SetCellValue("");//检测总数 cell = row.CreateCell(5); cell.CellStyle = cellStyle; cell.SetCellValue("");//合格数 cell = row.CreateCell(6); cell.CellStyle = cellStyle; cell.SetCellValue("");//是否合格 cell = row.CreateCell(7); cell.CellStyle = cellStyle; cell.SetCellValue("");//评定级别 cell = row.CreateCell(8); cell.CellStyle = cellStyle; cell.SetCellValue("");//缺陷 cell = row.CreateCell(9); cell.CellStyle = cellStyle; cell.SetCellValue("");//返修位置 cell = row.CreateCell(10); cell.CellStyle = cellStyle; cell.SetCellValue("");//备注 i++; } //尾部 签字盖章 // 创建新数据行 row = sheet.CreateRow(i); row.HeightInPoints = 43; CellRangeAddress region = new CellRangeAddress(i, i, 0, 1); sheet.AddMergedRegion(region); cell = row.CreateCell(0); cell.SetCellValue("委托方单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(1); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i, i, 2, 3); sheet.AddMergedRegion(region); cell = row.CreateCell(2); cell.SetCellValue("评片人:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(3); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i, i, 4, 6); sheet.AddMergedRegion(region); cell = row.CreateCell(4); cell.SetCellValue("检测方单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(5); cell.CellStyle = bottomStyle; cell = row.CreateCell(6); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i, i, 7, 10); sheet.AddMergedRegion(region); cell = row.CreateCell(7); cell.SetCellValue("监理单位:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(8); cell.CellStyle = bottomStyle; cell = row.CreateCell(9); cell.CellStyle = bottomStyle; cell = row.CreateCell(10); cell.CellStyle = bottomStyle; row = sheet.CreateRow(i + 1); row.HeightInPoints = 43; region = new CellRangeAddress(i + 1, i + 1, 0, 1); sheet.AddMergedRegion(region); cell = row.CreateCell(0); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(1); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i + 1, i + 1, 2, 3); sheet.AddMergedRegion(region); cell = row.CreateCell(2); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(3); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i + 1, i + 1, 4, 6); sheet.AddMergedRegion(region); cell = row.CreateCell(4); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(5); cell.CellStyle = bottomStyle; cell = row.CreateCell(6); cell.CellStyle = bottomStyle; region = new CellRangeAddress(i + 1, i + 1, 7, 10); sheet.AddMergedRegion(region); cell = row.CreateCell(7); cell.SetCellValue("日期:"); cell.CellStyle = bottomStyle; cell = row.CreateCell(8); cell.CellStyle = bottomStyle; cell = row.CreateCell(9); cell.CellStyle = bottomStyle; cell = row.CreateCell(10); cell.CellStyle = bottomStyle; } // 第三步:写入文件流 using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) { workbook.Write(stream); workbook.Close(); } string fileName = Path.GetFileName(newUrl); FileInfo info = new FileInfo(newUrl); long fileSize = info.Length; Response.Clear(); Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.AddHeader("Content-Length", fileSize.ToString()); Response.TransmitFile(newUrl, 0, fileSize); Response.Flush(); Response.Close(); File.Delete(newUrl); } } } /// /// 设置单元格下拉框约束 /// /// /// /// /// public static void SetCellDropdownList(NPOI.SS.UserModel.ISheet sheet, int firstcol, int lastcol, string[] vals) { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(1, 65535, firstcol, lastcol); NPOI.SS.UserModel.IDataValidation validation = null; if (sheet.GetType().Name.Contains("XSSF")) // .xlsx { NPOI.XSSF.UserModel.XSSFDataValidationHelper helper = new NPOI.XSSF.UserModel.XSSFDataValidationHelper((NPOI.XSSF.UserModel.XSSFSheet)sheet);//获得一个数据验证Helper //IDataValidation validation = helper.CreateValidation( helper.CreateExplicitListConstraint(vals), cellRegions);//创建约束 } else // HSSF .xls { //設置 下拉框內容 NPOI.HSSF.UserModel.DVConstraint constraint = NPOI.HSSF.UserModel.DVConstraint.CreateExplicitListConstraint(vals); validation = new NPOI.HSSF.UserModel.HSSFDataValidation(cellRegions, constraint); } sheet.AddValidationData(validation); } #endregion #region 将Dataset的数据导入数据库 /// /// 将Dataset的数据导入数据库 /// /// 数据集 /// 数据集行数 /// private Model.ResponeData AddDatasetToSQL(List pds, int count) { Model.ResponeData responeData = new Model.ResponeData(); List result = new List(); if (count < 9) { responeData.code = 0; responeData.message = "导入Excel格式错误!Excel只有" + count.ToString().Trim() + "列"; return responeData; } if (pds.Count - 2 > 0 && pds != null) { string NDEId = string.Empty; //string unitworkId = string.Empty; //unitworkId = Request.Params["UnitWorkId"]; //var batchTrusts = from x in Funs.DB.View_Batch_BatchTrust where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == unitworkId select x; //var batchTrustItemLists = from x in Funs.DB.View_Batch_BatchTrustItem where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == Request.Params["UnitWorkId"] select x; var defects = from x in Funs.DB.Base_Defect select x;//缺陷 var checkUnits = from x in Funs.DB.Base_Unit join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId where y.ProjectId == this.CurrUser.LoginProjectId && y.UnitType == BLL.Const.ProjectUnitType_5 select x;//检测单位 //var trustUnits = from x in Funs.DB.Base_Unit // join y in Funs.DB.Project_ProjectUnit on x.UnitId equals y.UnitId // where y.ProjectId == this.CurrUser.LoginProjectId // && y.UnitType == BLL.Const.ProjectUnitType_2 // select x;//委托单位 //string trustBatchId = batchTrustItemLists.FirstOrDefault().TrustBatchId; var batchNDE = from x in Funs.DB.HJGL_Batch_NDE where x.TrustBatchId == this.TrustBatchId select x; if (batchNDE.Count() == 0) { var batchTrust = BLL.Batch_BatchTrustService.GetBatchTrustViewById(this.TrustBatchId); if (batchTrust != null) { HJGL_Batch_NDE nde = new HJGL_Batch_NDE(); nde.NDEID = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_NDE)); NDEId = nde.NDEID; nde.TrustBatchId = this.TrustBatchId; nde.ProjectId = this.CurrUser.LoginProjectId; nde.UnitId = batchTrust.UnitId; nde.UnitWorkId = batchTrust.UnitWorkId; if (pds[2].B != null && !string.IsNullOrEmpty(pds[2].B.ToString())) { string checkUnitName = pds[2].B.ToString(); var checkUnit = checkUnits.FirstOrDefault(x => x.UnitName == checkUnitName); if (checkUnit == null) { result.Add("检测单位[" + checkUnitName + "]不存在"); } else { nde.NDEUnit = checkUnit.UnitId; } } if (pds[3].B == null || string.IsNullOrEmpty(pds[3].B.ToString())) { result.Add("[检测批号]不能为空
"); } else { nde.NDECode = pds[3].B.ToString(); } if (!string.IsNullOrEmpty(pds[6].C.ToString()) && pds[6].C != null) { try { nde.NDEDate = Funs.GetNewDateTime(pds[6].C.ToString()); if (nde.NDEDate == null) { result.Add("检测日期[" + pds[6].C.ToString() + "]格式错误"); } } catch (Exception) { result.Add("检测日期[" + pds[6].C.ToString() + "]格式错误"); } } ndes.Add(nde); } for (int i = 9; i < pds.Count - 2; i++) { if (!string.IsNullOrEmpty(pds[i].B.ToString()) && !string.IsNullOrEmpty(pds[i].C.ToString())) { HJGL_Batch_NDEItem item = new HJGL_Batch_NDEItem(); item.NDEItemID = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_NDEItem)); item.NDEID = NDEId; var batchTrustItems = BLL.Batch_BatchTrustItemService.GetViewBatchTrustItem(this.TrustBatchId); if (batchTrustItems != null) { var trustItem = batchTrustItems.FirstOrDefault(x => x.PipelineCode == pds[i].B.ToString() && x.WeldJointCode == pds[i].C.ToString()); if (trustItem != null) { item.TrustBatchItemId = trustItem.TrustBatchItemId; item.DetectionTypeId = trustItem.DetectionTypeId; //检测总数 if (pds[i].E != null && !string.IsNullOrEmpty(pds[i].E.ToString())) { try { item.TotalFilm = Funs.GetNewInt(pds[i].E.ToString()); if (item.TotalFilm == null) { result.Add("检测总数[" + pds[i].E.ToString() + "]格式错误"); } } catch (Exception) { result.Add("检测总数[" + pds[i].E.ToString() + "]格式错误"); } } //合格数 if (pds[i].F != null && !string.IsNullOrEmpty(pds[i].F.ToString())) { try { item.PassFilm = Funs.GetNewInt(pds[i].F.ToString()); if (item.PassFilm == null) { result.Add("合格数[" + pds[i].F.ToString() + "]格式错误"); } } catch (Exception) { result.Add("合格数[" + pds[i].F.ToString() + "]格式错误"); } } //是否合格 if (pds[i].G != null && !string.IsNullOrEmpty(pds[i].G.ToString())) { if (pds[i].G.ToString() == "合格" || pds[i].G.ToString() == "不合格") { item.CheckResult = pds[i].G.ToString() == "合格" ? "1" : "2"; } else { result.Add("是否合格[" + pds[i].G.ToString() + "]格式错误"); } } //评定级别 if (pds[i].H != null && !string.IsNullOrEmpty(pds[i].H.ToString())) { string gudgeGrade = pds[i].H.ToString(); if (gudgeGrade != "Ⅰ" && gudgeGrade != "Ⅱ" && gudgeGrade != "Ⅲ" && gudgeGrade != "Ⅳ" && gudgeGrade != "Ⅴ") { result.Add("评定级别" + gudgeGrade + "错误"); } else { item.JudgeGrade = gudgeGrade; } } //缺陷 if (pds[i].I != null && !string.IsNullOrEmpty(pds[i].I.ToString())) { string checkDefects = pds[i].I.ToString(); string defectIds = string.Empty; string[] lists = checkDefects.Split(','); foreach (var j in lists) { var u = defects.Where(x => x.DefectName == j.Trim()).FirstOrDefault(); if (u == null) { result.Add("缺陷" + j.Trim() + "不存在"); } else { var q = BLL.Base_DefectService.GetDefectByDefectName(u.DefectName); defectIds += q.DefectId + ","; } } if (!string.IsNullOrEmpty(defectIds)) { defectIds = defectIds.Substring(0, defectIds.LastIndexOf(",")); item.CheckDefects = defectIds; } } //返修位置 if (pds[i].J != null && !string.IsNullOrEmpty(pds[i].J.ToString())) { item.RepairLocation = pds[i].J.ToString(); } if (pds[i].K != null && !string.IsNullOrEmpty(pds[i].K.ToString())) { item.Remark = pds[i].K.ToString(); } //报告日期 if (pds[6].H != null && !string.IsNullOrEmpty(pds[6].H.ToString())) { try { item.ReportDate = Funs.GetNewDateTime(pds[6].H.ToString()); if (item.ReportDate == null) { result.Add("报告日期" + pds[6].H.ToString() + "格式错误"); } } catch (Exception) { result.Add("报告日期" + pds[6].H.ToString() + "格式错误"); } } } else { result.Add("管线[" + pds[i].B.ToString() + "]焊口[" + pds[i].C.ToString() + "]" + "不存在该委托单中"); } item.SubmitDate = DateTime.Now; ndeItems.Add(item); } } } } else { result.Add("该委托单已检测"); } if (result.Count > 0) { ndeItems.Clear(); errorInfos = string.Join("|", result.Distinct()); responeData.code = 0; responeData.message = errorInfos; } else { errorInfos = string.Empty; } } else { responeData.code = 0; responeData.message = "导入数据为空!"; } return responeData; } #endregion /// /// 审核 /// /// /// protected void btnAudit_Click(object sender, EventArgs e) { string message = string.Empty; if (this.fuAttachUrl.HasFile == false) { ShowNotify("请选择Excel文件!", MessageBoxIcon.Warning); return; } string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower(); if (IsXls != ".xlsx") { ShowNotify("只能选择Excel文件!", MessageBoxIcon.Warning); return; } string rootPath = Server.MapPath("~/"); string initFullPath = rootPath + initPath; if (!Directory.Exists(initFullPath)) { Directory.CreateDirectory(initFullPath); } //指定上传文件名称 this.hdFileName.Text = BLL.Funs.GetNewFileName() + IsXls; //上传文件路径 string filePath = initFullPath + this.hdFileName.Text; //文件上传服务器 this.fuAttachUrl.PostedFile.SaveAs(filePath); //文件上传服务器后的名称 string fileName = rootPath + initPath + this.hdFileName.Text; //读取Excel var ds = MiniExcel.Query(fileName).ToList(); var columns = MiniExcel.GetColumns(fileName); var cnt = columns.Count; var reposedata = AddDatasetToSQL(ds, cnt); if (reposedata.code == 1) { State = (int)ButtonState.Import; ShowNotify("审核完成请点击导入"); } else { Alert alert = new Alert { Message = reposedata.message, Target = Target.Self }; alert.Show(); } } #region 导入 /// /// 导入 /// /// /// protected void btnImport_Click(object sender, EventArgs e) { if (State == (int)ButtonState.Check) { ShowNotify("请先审核"); return; } if (string.IsNullOrEmpty(errorInfos)) { if (!string.IsNullOrEmpty(this.hdFileName.Text)) { if (ndeItems.Count > 0) { //this.Grid1.Hidden = false; this.Grid1.DataSource = ndeItems; this.Grid1.DataBind(); Grid1.RecordCount = ndeItems.Count; } } else { ShowNotify("请先审核要导入的文件!", MessageBoxIcon.Warning); } } else { ShowNotify("请先将错误数据修正,再重新导入提交!", MessageBoxIcon.Warning); } State = (int)ButtonState.Save; ShowNotify("数据导入成功!", MessageBoxIcon.Success); } #endregion /// /// 提交 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { if (State != (int)ButtonState.Save) { ShowNotify("请先审核/导入"); return; } if (string.IsNullOrEmpty(errorInfos)) { string rootPath = Server.MapPath("~/"); string oldefilePath = rootPath + initPath + this.hdFileName.Text; //string unitworkId = Request.Params["UnitWorkId"]; string filePath = rootPath + Const.DesignBasisDataImportPath + this.hdFileName.Text; if (oldefilePath != string.Empty && System.IO.File.Exists(oldefilePath)) { if (!Directory.Exists(rootPath + Const.DesignBasisDataImportPath)) { Directory.CreateDirectory(rootPath + Const.DesignBasisDataImportPath); } File.Move(oldefilePath, filePath); } string FileName = this.fuAttachUrl.FileName; //if (DrpType.SelectedValue == "1")//更新导入 //{ // //BLL.Batch_NDEService.DeleteNDEByUnitWorkId(unitworkId);//删除 // AddNDE(ndes); // AddNDEItem(ndeItems); // //Model.HJGL_DesignBasisDataImport hJGL_DesignBasisDataImport = new Model.HJGL_DesignBasisDataImport(); // //hJGL_DesignBasisDataImport.DesignBasisDataImportId = SQLHelper.GetNewID(); // //hJGL_DesignBasisDataImport.ProjectId = this.CurrUser.LoginProjectId; // //hJGL_DesignBasisDataImport.UnitWorkId = unitworkId; // //hJGL_DesignBasisDataImport.ImportType = "1"; // //hJGL_DesignBasisDataImport.DataClassification = DataClassification; // //hJGL_DesignBasisDataImport.FileName = FileName; // //hJGL_DesignBasisDataImport.FilePath = filePath.Replace(rootPath, ""); // //hJGL_DesignBasisDataImport.FileType = BLL.HJGL_DesignBasisDataImportService.GetFileType(FileName); // //hJGL_DesignBasisDataImport.Version = BLL.HJGL_DesignBasisDataImportService.GetNewVersionByUnitWorkId(unitworkId, DataClassification); // //hJGL_DesignBasisDataImport.Remark = txtRemark.Text; // //hJGL_DesignBasisDataImport.CreateMan = this.CurrUser.PersonId; // //hJGL_DesignBasisDataImport.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); // //BLL.HJGL_DesignBasisDataImportService.AddHJGL_DesignBasisDataImport(hJGL_DesignBasisDataImport); // //BLL.HJGL_DesignBasisDataImportVerSionLogService.UpdateVersion(this.CurrUser.LoginProjectId, unitworkId, (decimal)hJGL_DesignBasisDataImport.Version, DataClassification); //} //else //补充导入 //{ AddNDE(ndes); AddNDEItem(ndeItems); //Model.HJGL_DesignBasisDataImport hJGL_DesignBasisDataImport = new Model.HJGL_DesignBasisDataImport(); //hJGL_DesignBasisDataImport.DesignBasisDataImportId = SQLHelper.GetNewID(); //hJGL_DesignBasisDataImport.ProjectId = this.CurrUser.LoginProjectId; //hJGL_DesignBasisDataImport.UnitWorkId = unitworkId; //hJGL_DesignBasisDataImport.ImportType = "0"; //hJGL_DesignBasisDataImport.DataClassification = DataClassification; //hJGL_DesignBasisDataImport.FileName = FileName; //hJGL_DesignBasisDataImport.FilePath = filePath.Replace(rootPath, ""); ; //hJGL_DesignBasisDataImport.FileType = BLL.HJGL_DesignBasisDataImportService.GetFileType(FileName); //hJGL_DesignBasisDataImport.Version = BLL.HJGL_DesignBasisDataImportService.GetNowVersionByUnitWorkId(unitworkId, DataClassification); //hJGL_DesignBasisDataImport.Remark = txtRemark.Text; //hJGL_DesignBasisDataImport.CreateMan = this.CurrUser.PersonId; //hJGL_DesignBasisDataImport.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); //BLL.HJGL_DesignBasisDataImportService.AddHJGL_DesignBasisDataImport(hJGL_DesignBasisDataImport); //BLL.HJGL_DesignBasisDataImportVerSionLogService.UpdateVersion(this.CurrUser.LoginProjectId, unitworkId, (decimal)hJGL_DesignBasisDataImport.Version, DataClassification); //} ShowNotify("导入成功!", MessageBoxIcon.Success); PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } else { ShowNotify("请先将错误数据修正,再重新导入提交!", MessageBoxIcon.Warning); } } public void AddNDE(List ndeList) { foreach (var item in ndeList) { var nde = from x in Funs.DB.HJGL_Batch_NDE where x.NDEID == item.NDEID select x; if (nde.Count() == 0 || nde == null) { //item.NDEID = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_NDE)); item.NDEID = item.NDEID; BLL.Batch_NDEService.AddNDE(item); //更新委托中的检测状态 var trustBatch = BLL.Batch_BatchTrustService.GetBatchTrustById(item.TrustBatchId); if (trustBatch != null) { trustBatch.IsCheck = true; BLL.Batch_BatchTrustService.UpdatTrustBatchtState(item.TrustBatchId, trustBatch.IsCheck); } } else { item.NDEID = item.NDEID; BLL.Batch_NDEService.UpdateNDE(item); } } } public void AddNDEItem(List itemList) { foreach (var item in itemList) { //var ndeItem = from x in Funs.DB.HJGL_Batch_NDEItem where x.TrustBatchItemId==item.TrustBatchItemId select x; //if (ndeItem.Count() == 0 || ndeItem == null) //{ //item.NDEItemID = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_NDEItem)); BLL.Batch_NDEItemService.AddNDEItem(item); //} //else //{ // item.NDEItemID = ndeItem.First().NDEItemID; // BLL.Batch_NDEItemService.UpdateNDEItem(item); //} } } #region 格式化字符串 protected string ConvertPipeLineCode(object trustBatchItemId) { string pipelineCode = string.Empty; if (trustBatchItemId != null) { var trustBatchItem = (from x in Funs.DB.View_Batch_BatchTrustItem where x.TrustBatchItemId == trustBatchItemId.ToString() select x).FirstOrDefault(); if (trustBatchItem != null) { pipelineCode = trustBatchItem.PipelineCode; } } return pipelineCode; } protected string ConvertWeldjointNo(object trustBatchItemId) { string weldJointCode = string.Empty; if (trustBatchItemId != null) { var trustBatchItem = (from x in Funs.DB.View_Batch_BatchTrustItem where x.TrustBatchItemId == trustBatchItemId.ToString() select x).FirstOrDefault(); if (trustBatchItem != null) { weldJointCode = trustBatchItem.WeldJointCode; } } return weldJointCode; } protected string ConvertWelderCode(object trustBatchItemId) { string welderCode = string.Empty; if (trustBatchItemId != null) { var trustBatchItem = (from x in Funs.DB.View_Batch_BatchTrustItem where x.TrustBatchItemId == trustBatchItemId.ToString() select x).FirstOrDefault(); if (trustBatchItem != null) { welderCode = trustBatchItem.WelderCode; } } return welderCode; } protected string ConvertCheckResult(object CheckResult) { string result = string.Empty; if (CheckResult != null) { if (CheckResult.ToString() == "1") { result = "合格"; } else { result = "不合格"; } } return result; } protected string ConvertCheckDefects(object CheckDefects) { string str = string.Empty; if (CheckDefects != null) { str = BLL.Base_DefectService.GetDefectNameStrByDefectIdStr(CheckDefects.ToString()); } return str; } #endregion } }