using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.IO; using System.Linq; using Aspose.Words; using Aspose.Words.Drawing; using Aspose.Words.Tables; namespace FineUIPro.Web.HSSE.Check { public partial class RectifyNoticesRectify : PageBase { #region 定义项 /// /// 项目主键 /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } public string RectifyNoticesId { get { return (string)ViewState["RectifyNoticesId"]; } set { ViewState["RectifyNoticesId"] = value; } } #endregion /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { RectifyNoticesId = Request.Params["RectifyNoticesId"]; var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId); if (getRectifyNotices != null) { this.txtUnit.Text = UnitService.GetUnitNameByUnitId(getRectifyNotices.UnitId); this.txtWorkArea.Text = UnitWorkService.GetUnitWorkName(getRectifyNotices.WorkAreaId); this.txtCheckMan.Text = UserService.getUserNamesUserIds(getRectifyNotices.CheckManIds); this.txtCheckPerson.Text = getRectifyNotices.CheckManNames; this.txtRectifyNoticesCode.Text = getRectifyNotices.RectifyNoticesCode; this.txtCheckedDate.Text = getRectifyNotices.CheckedDate.ToString(); this.txtHiddenHazardType.Text = "一般"; if (getRectifyNotices.HiddenHazardType == "2") { this.txtHiddenHazardType.Text = "较大"; } else if (getRectifyNotices.HiddenHazardType == "3") { this.txtHiddenHazardType.Text = "重大"; } //UserService.InitUserProjectIdUnitIdDropDownList(this.drpUnitHeadMan, this.CurrUser.LoginProjectId, getRectifyNotices.UnitId, true); //this.drpUnitHeadMan.SelectedValue = getRectifyNotices.UnitHeadManId; } BindGrid(); BindGrid1(); } } /// /// /// public void BindGrid() { if (!string.IsNullOrEmpty(this.RectifyNoticesId)) { string strSql = @"select RectifyNoticesItemId, RectifyNoticesId,Rectify.RectifyName as RectifyId, WrongContent, Requirement, LimitTime, RectifyResults ,IsRectify,(CASE WHEN IsRectify=1 THEN '合格' WHEN IsRectify=0 THEN '不合格' ELSE '' END) AS IsRectifyName from [dbo].[Check_RectifyNoticesItem] item left join Technique_Rectify Rectify on Rectify.RectifyId=item.RectifyId "; List listStr = new List(); strSql += "where RectifyNoticesId = @RectifyNoticesId"; listStr.Add(new SqlParameter("@RectifyNoticesId", RectifyNoticesId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } else { Grid1.DataSource = null; Grid1.DataBind(); } } /// /// /// public void BindGrid1() { if (!string.IsNullOrEmpty(this.RectifyNoticesId)) { string strSql = @"select FlowOperateId, RectifyNoticesId, OperateName, OperateManId, OperateTime, IsAgree, Opinion,S.UserName ,(case when IsAgree=0 then '不同意' else '同意' end) as IsAgreeName from Check_RectifyNoticesFlowOperate C left join Sys_User S on C.OperateManId=s.UserId "; List listStr = new List(); strSql += "where RectifyNoticesId= @RectifyNoticesId"; listStr.Add(new SqlParameter("@RectifyNoticesId", RectifyNoticesId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var table = this.GetPagedDataTable(gvFlowOperate, tb); gvFlowOperate.DataSource = table; gvFlowOperate.DataBind(); } else { Grid1.DataSource = null; Grid1.DataBind(); } } #region 整改图片 /// /// 获取整改前图片(放于Img中) /// /// /// protected string ConvertImageUrlByImage(object RectifyNoticesItemId) { string url = string.Empty; if (RectifyNoticesItemId != null) { var RectifyNoticesItem = BLL.AttachFileService.GetAttachFile(RectifyNoticesItemId.ToString() + "#1", BLL.Const.ProjectRectifyNoticesMenuId); if (RectifyNoticesItem != null) { url = BLL.UploadAttachmentService.ShowImage("../../", RectifyNoticesItem.AttachUrl); } } return url; } /// /// 获取整改后图片 /// /// /// protected string ConvertImgUrlByImage(object RectifyNoticesItemId) { string url = string.Empty; if (RectifyNoticesItemId != null) { var RectifyNoticesItem = BLL.AttachFileService.GetAttachFile(RectifyNoticesItemId.ToString() + "#2", BLL.Const.ProjectRectifyNoticesMenuId); if (RectifyNoticesItem != null) { url = BLL.UploadAttachmentService.ShowImage("../../", RectifyNoticesItem.AttachUrl); } } return url; } #endregion #region grid 操作 -附件上传 /// /// /// /// /// protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { string itemId = Grid1.DataKeys[e.RowIndex][0].ToString(); if (e.CommandName == "AttachUrl") { PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/RectifyNotices&menuId={1}&strParam=2", itemId, BLL.Const.ProjectRectifyNoticesMenuId))); } } #endregion #region 数据保存提交方法 /// /// /// /// /// protected void btnSave_Click(object sender, EventArgs e) { SaveRectifyNotices(Const.BtnSave); } /// /// /// /// /// protected void btnSubmit_Click(object sender, EventArgs e) { SaveRectifyNotices(Const.BtnSubmit); } /// /// 保存方法 /// /// private void SaveRectifyNotices(string saveType) { var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(this.RectifyNoticesId); if (getRectifyNotices != null) { //if (this.drpUnitHeadMan.SelectedValue != Const._Null) //{ // getRectifyNotices.UnitHeadManId = this.drpUnitHeadMan.SelectedValue; //} if (saveType == Const.BtnSubmit) { //if (string.IsNullOrEmpty(getRectifyNotices.UnitHeadManId)) //{ // Alert.ShowInParent("请选择单位项目负责人", MessageBoxIcon.Warning); // return; //} //else { getRectifyNotices.CompleteDate = DateTime.Now; getRectifyNotices.States = Const.State_4; Model.Check_RectifyNoticesFlowOperate newOItem = new Model.Check_RectifyNoticesFlowOperate { FlowOperateId = SQLHelper.GetNewID(), RectifyNoticesId = getRectifyNotices.RectifyNoticesId, OperateManId = this.CurrUser.UserId, OperateTime = DateTime.Now, OperateName = "责任人整改", }; Funs.DB.Check_RectifyNoticesFlowOperate.InsertOnSubmit(newOItem); Funs.DB.SubmitChanges(); } } else { Funs.DB.SubmitChanges(); } foreach (JObject mergedRow in Grid1.GetModifiedData()) { JObject values = mergedRow.Value("values"); string rectifyNoticesItemId = mergedRow.Value("id"); string rectifyResults = values.Value("RectifyResults"); var getUpdateItem = Funs.DB.Check_RectifyNoticesItem.FirstOrDefault(x => x.RectifyNoticesItemId == rectifyNoticesItemId); if (getUpdateItem != null) { getUpdateItem.RectifyResults = rectifyResults; getUpdateItem.IsRectify = true; Funs.DB.SubmitChanges(); } } ShowNotify(saveType + "成功!", MessageBoxIcon.Success); if (string.IsNullOrEmpty(Request.Params["Main"])) { PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } else { PageContext.RegisterStartupScript(String.Format("window.close();")); } } } #endregion /// /// 导出 /// /// /// protected void btnPrinter_Click(object sender, EventArgs e) { //获取所有列表导出 if (!string.IsNullOrEmpty(this.RectifyNoticesId)) { var rectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId); string CheckManIds = rectifyNotices.CheckManIds; string CheckManNames = string.Empty; if (CheckManIds != null) { string[] Ids = CheckManIds.ToString().Split(','); foreach (string t in Ids) { var Name = BLL.UserService.GetUserNameByUserId(t); if (Name != null) { CheckManNames += Name + ","; } } } string DutyPersonId = rectifyNotices.DutyPersonId; string DutyPersonName = UserService.GetUserNameByUserId(DutyPersonId); var dataList = (from item in Funs.DB.Check_RectifyNoticesItem join rectify in Funs.DB.Technique_Rectify on item.RectifyId equals rectify.RectifyId into rectifyGroup from rectify in rectifyGroup.DefaultIfEmpty() where item.RectifyNoticesId == RectifyNoticesId select new { RectifyNoticesItemId = item.RectifyNoticesItemId, RectifyId = rectify.RectifyName, RectifyNoticesId = item.RectifyNoticesId, WrongContent = item.WrongContent, Requirement = item.Requirement, LimitTime = item.LimitTime, RectifyResults = item.RectifyResults, IsRectify = item.IsRectify }).ToList(); string rootPath = Server.MapPath("~/"); string initTemplatePath = string.Empty; string uploadfilepath = string.Empty; string newUrl = string.Empty; initTemplatePath = "File\\Word\\HSSE\\安全质量环保检查记录(模板)建投隐患整改通知单.doc"; uploadfilepath = rootPath + initTemplatePath; newUrl = uploadfilepath.Replace(".doc", RectifyNoticesId + ".doc"); if (File.Exists(newUrl)) { File.Delete(newUrl); } File.Copy(uploadfilepath, newUrl); AsposeWordHelper helper = new AsposeWordHelper(); helper.OpenTempelte(newUrl); //打开模板文件 var project = (from x in Funs.DB.Base_Project where x.ProjectId == this.CurrUser.LoginProjectId select x) .FirstOrDefault(); string projectName = project.ProjectName; string remark = project.Remark; string[] fieldNames = { "projectName", "remark" }; object[] fieldValues = { projectName, remark }; helper.Executefield(fieldNames, fieldValues); //域赋值 if (dataList.Count > 0) { Document doc = helper.Document; DocumentBuilder builder = new DocumentBuilder(doc); Table table = (Table)doc.GetChild(NodeType.Table, 1, true); // 定位第一个表格 int number = 1; foreach (var item in dataList) { string WrongContent = item.WrongContent; string Requirement = item.Requirement; string LimitTime = item.LimitTime.HasValue ? $" {item.LimitTime.Value.Year} 年 {item.LimitTime.Value.Month:D2} 月 {item.LimitTime.Value.Day:D2} 日" : ""; List Paths = new List(); var res = AttachFileService.getFileUrl(item.RectifyNoticesItemId + "#1"); if (!string.IsNullOrEmpty(res)) { string[] arr = res.Split(','); for (int i = 0; i < arr.Length; i++) { Paths.Add(rootPath + arr[i]); } } // 克隆模板占位行 Row newRow = (Row)table.LastRow.Clone(true); table.AppendChild(newRow); // 定位到单元格 Cell cell = newRow.FirstCell; // 清空单元格所有段落 cell.RemoveAllChildren(); Paragraph para = new Paragraph(doc); // 显式创建段落 cell.AppendChild(para); builder.MoveTo(para); // 定位到段落 // 插入文本 builder.Write(" 存在问题" + number.ToString() + ":" + WrongContent); builder.Writeln(); // 换行 builder.Write(" 整改要求:" + Requirement); builder.Writeln(); // 换行 builder.Write(" 整改时间:" + LimitTime + " 整改责任人:" + DutyPersonName + " 监督人:" + CheckManNames); builder.Writeln(); // 换行 // 插入多张图片(横向排列) if (Paths.Count > 0) { foreach (string imgPath in Paths) { // 计算每张图片宽度(总宽度按单元格宽度平分) double cellWidth = cell.CellFormat.Width; double imgWidth = (cellWidth - 10 * (Paths.Count - 1)) / Paths.Count - 10; // 插入图片并调整尺寸 Shape image = builder.InsertImage(imgPath); image.Width = Paths.Count == 1 ? imgWidth / 2 : imgWidth; // image.Height = image.ImageData.ImageSize.HeightPixels * (imgWidth / image.ImageData.ImageSize.WidthPixels); image.Height = 120; // 图片间留间距(横向排列) if (imgPath != Paths.Last()) { builder.MoveTo(cell.LastParagraph.AppendChild(new Run(doc))); builder.Write(" "); // 插入空格分隔 } } } number++; } // 删除模板中的原始占位行 table.Rows.RemoveAt(0); } helper.SaveDoc(newUrl); //文件保存,保存为doc // 验证文件是否存在 if (!File.Exists(newUrl)) { throw new Exception("文件不存在: " + newUrl); } 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); } } } }