using BLL; using Model; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; 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 RectifyNoticesAdd : PageBase { #region 定义项 /// /// 主键 /// public string RectifyNoticesId { get { return (string)ViewState["RectifyNoticesId"]; } set { ViewState["RectifyNoticesId"] = value; } } public string ControlId { get { return (string)ViewState["ControlId"]; } set { ViewState["ControlId"] = value; } } #endregion /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BLL.RectifyService.InitRectifyDropDownList(this.drpRectifyId, false, string.Empty); //受检单位 BLL.UnitService.InitUnitByProjectIdUnitTypeDropDownList(this.drpUnitId, this.CurrUser.LoginProjectId, Const.ProjectUnitType_2, false); //区域 BLL.UnitWorkService.InitUnitWorkDownList(this.drpWorkAreaId, this.CurrUser.LoginProjectId, true); //if (!string.IsNullOrEmpty(this.drpUnitId.SelectedValue)) //{ // ///安全经理 // BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpSignPerson, "", this.drpUnitId.SelectedValue, true); //} //else { var db = Funs.DB; var userListaq = from x in db.Sys_User join y in db.Project_ProjectUnit on x.UnitId equals y.UnitId join p in db.Project_ProjectUser on x.UserId equals p.UserId where y.UnitType == Const.ProjectUnitType_1 && p.ProjectId == CurrUser.LoginProjectId && y.ProjectId == CurrUser.LoginProjectId orderby x.UserCode select x; this.drpSignPerson.DataSource = userListaq.ToList(); drpSignPerson.DataValueField = "UserId"; drpSignPerson.DataTextField = "UserName"; drpSignPerson.DataBind(); Funs.FineUIPleaseSelect(drpSignPerson); } ///检察人员 BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpCheckMan, this.CurrUser.LoginProjectId, null, true); //Funs.FineUIPleaseSelect(drpIsRectify); RectifyNoticesId = Request.Params["RectifyNoticesId"]; var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId); if (getRectifyNotices != null) { if (!string.IsNullOrEmpty(getRectifyNotices.UnitId)) { this.drpUnitId.SelectedValue = getRectifyNotices.UnitId; } if (!string.IsNullOrEmpty(getRectifyNotices.WorkAreaId)) { this.drpWorkAreaId.SelectedValueArray = getRectifyNotices.WorkAreaId.Split(','); } if (!string.IsNullOrEmpty(getRectifyNotices.CheckManIds)) { this.drpCheckMan.SelectedValueArray = getRectifyNotices.CheckManIds.Split(','); } this.txtCheckPerson.Text = getRectifyNotices.CheckManNames; this.txtRectifyNoticesCode.Text = getRectifyNotices.RectifyNoticesCode; this.txtCheckedDate.Text = getRectifyNotices.CheckedDate.ToString(); //if (!string.IsNullOrEmpty(getRectifyNotices.UnitId)) //{ // this.drpSignPerson.Items.Clear(); // BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpSignPerson, this.CurrUser.LoginProjectId, getRectifyNotices.UnitId, true); //} if (!string.IsNullOrEmpty(getRectifyNotices.SignPerson)) { this.drpSignPerson.SelectedValue = getRectifyNotices.SignPerson; } if (!string.IsNullOrEmpty(getRectifyNotices.HiddenHazardType)) { this.drpHiddenHazardType.SelectedValue = getRectifyNotices.HiddenHazardType; } BindGrid(); BindGrid1(); } else { this.txtCheckedDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now); ////自动生成编码 this.txtRectifyNoticesCode.Text = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectRectifyNoticesMenuId, this.CurrUser.LoginProjectId, this.CurrUser.UnitId); ControlId = Request.Params["ControlId"]; if (!string.IsNullOrEmpty(ControlId)) { var control = Funs.DB.HSSE_ConstructionRiskCheck.FirstOrDefault(x => x.ConstructionRiskCheckId == ControlId); if (control != null) { var risk = Funs.DB.HSSE_ConstructionRisk.FirstOrDefault(x => x.ConstructionRiskId == control.ConstructionRiskId); drpWorkAreaId.SelectedValue = risk.WorkAreaId; drpUnitId.SelectedValue = risk.UnitId; List view = getViewTestPlanTrainingList(); var item = new Check_RectifyNoticesItem { RectifyNoticesItemId = SQLHelper.GetNewID(), RectifyNoticesId = this.RectifyNoticesId, WrongContent = risk.LicenseDes }; view.Add(item); //将gd数据保存在list中 Grid1.DataSource = view; Grid1.DataBind(); } } } } } #region 绑定grid /// /// /// public void BindGrid() { if (!string.IsNullOrEmpty(this.RectifyNoticesId)) { string strSql = @"select RectifyNoticesItemId,Rectify.RectifyName as RectifyId, RectifyNoticesId, WrongContent, Requirement, LimitTime, RectifyResults, IsRectify 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(); } } #endregion protected void btnAdd_Click(object sender, EventArgs e) { List view = getViewTestPlanTrainingList(); Model.Check_RectifyNoticesItem notice = new Model.Check_RectifyNoticesItem { RectifyNoticesItemId = SQLHelper.GetNewID() }; view.Add(notice); //将gd数据保存在list中 Grid1.DataSource = view; Grid1.DataBind(); } #region 收集页面明细信息 /// /// 收集页面信息 /// /// private List getViewTestPlanTrainingList() { List view = new List(); var data = Grid1.GetMergedData(); if (data != null) { var rectifyList = BLL.RectifyService.GetRectifyList(); foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); string rectifyId = values.Value("RectifyId"); string wrongContent = values.Value("WrongContent"); string rectifyNoticesItemId = values.Value("RectifyNoticesItemId"); string requirement = values.Value("Requirement"); string limitTime = values.Value("LimitTime"); var item = new Check_RectifyNoticesItem { RectifyNoticesItemId = rectifyNoticesItemId, RectifyNoticesId = this.RectifyNoticesId, WrongContent = wrongContent, Requirement = requirement, LimitTime = Funs.GetNewDateTime(limitTime), }; var rectify = rectifyList.FirstOrDefault(x => x.RectifyName == rectifyId); if (rectify != null) { item.RectifyId = rectify.RectifyId; } view.Add(item); } } return view; } #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=1", itemId, BLL.Const.ProjectRectifyNoticesMenuId))); } if (e.CommandName == "delete") { var getView = getViewTestPlanTrainingList(); var getfi = getView.FirstOrDefault(x => x.RectifyNoticesItemId == itemId); if (getfi != null) { getView.Remove(getfi); } Grid1.DataSource = getView; Grid1.DataBind(); } } #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) { Model.Check_RectifyNotices newRectifyNotices = new Check_RectifyNotices { RectifyNoticesId = this.RectifyNoticesId, RectifyNoticesCode = this.txtRectifyNoticesCode.Text.Trim(), ProjectId = this.CurrUser.LoginProjectId, CheckedDate = Funs.GetNewDateTime(this.txtCheckedDate.Text.Trim()), CompleteManId = this.CurrUser.UserId, }; newRectifyNotices.States = Const.State_0; if (this.drpSignPerson.SelectedValue != BLL.Const._Null) { newRectifyNotices.SignPerson = this.drpSignPerson.SelectedValue; } if (saveType == Const.BtnSubmit) { newRectifyNotices.States = Const.State_1; if (string.IsNullOrEmpty(newRectifyNotices.SignPerson)) { Alert.ShowInParent("请选择项目安全经理!", MessageBoxIcon.Warning); return; } } if (this.drpUnitId.SelectedValue != BLL.Const._Null) { newRectifyNotices.UnitId = this.drpUnitId.SelectedValue; } if (this.drpWorkAreaId.SelectedValue != BLL.Const._Null) { newRectifyNotices.WorkAreaId = Funs.GetStringByArray(this.drpWorkAreaId.SelectedValueArray); } if (this.drpCheckMan.SelectedValue != BLL.Const._Null) { newRectifyNotices.CheckManIds = Funs.GetStringByArray(this.drpCheckMan.SelectedValueArray); } if (!string.IsNullOrEmpty(txtCheckPerson.Text)) { newRectifyNotices.CheckManNames = txtCheckPerson.Text; } if (this.drpHiddenHazardType.SelectedValue != BLL.Const._Null) { newRectifyNotices.HiddenHazardType = this.drpHiddenHazardType.SelectedValue; } if (!string.IsNullOrEmpty(this.RectifyNoticesId)) { RectifyNoticesService.UpdateRectifyNotices(newRectifyNotices); RectifyNoticesService.DeleteRectifyNoticesRectifyNoticesItemById(this.RectifyNoticesId); } else { this.RectifyNoticesId = newRectifyNotices.RectifyNoticesId = SQLHelper.GetNewID(); if (!string.IsNullOrEmpty(Request.Params["HazardSelectedItemId"])) { newRectifyNotices.DataFrom = Request.Params["HazardSelectedItemId"]; } newRectifyNotices.ControlId = Request.Params["ControlId"]; RectifyNoticesService.AddRectifyNotices(newRectifyNotices); } if (saveType == Const.BtnSubmit) { Model.Check_RectifyNoticesFlowOperate newOItem = new Model.Check_RectifyNoticesFlowOperate { FlowOperateId = SQLHelper.GetNewID(), RectifyNoticesId = newRectifyNotices.RectifyNoticesId, OperateName = "检查人员提交整改单", OperateManId = this.CurrUser.UserId, OperateTime = DateTime.Now, }; Funs.DB.Check_RectifyNoticesFlowOperate.InsertOnSubmit(newOItem); Funs.DB.SubmitChanges(); } var getItem = getViewTestPlanTrainingList(); if (getItem.Count() > 0) { Funs.DB.Check_RectifyNoticesItem.InsertAllOnSubmit(getItem); Funs.DB.SubmitChanges(); } //Project_HSSEData_HSSEService.StatisticalData(this.CurrUser.LoginProjectId, Project_HSSEData_HSSEService.HSSEDateType.HiddenDangerTroubleshooting); //Project_HSSEData_HiddenDangerDetailService.StatisticalData(this.CurrUser.LoginProjectId); ShowNotify(saveType + "成功!", MessageBoxIcon.Success); if (string.IsNullOrEmpty(Request.Params["Main"])) { PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } else { PageContext.RegisterStartupScript(String.Format("window.close();")); } } #endregion /// /// /// /// /// protected void drpCheckMan_SelectedIndexChanged(object sender, EventArgs e) { this.drpCheckMan.SelectedValueArray = Funs.RemoveDropDownListNull(this.drpCheckMan.SelectedValueArray); } protected void drpWorkAreaId_SelectedIndexChanged(object sender, EventArgs e) { this.drpWorkAreaId.SelectedValueArray = Funs.RemoveDropDownListNull(this.drpWorkAreaId.SelectedValueArray); } //protected void drpUnitId_SelectedIndexChanged(object sender, EventArgs e) //{ // this.drpSignPerson.Items.Clear(); // BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpSignPerson, "", this.drpUnitId.SelectedValue, true); // this.drpSignPerson.SelectedIndex=0; //} /// /// 导出 /// /// /// 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); } } } }