SGGL_JT/SUBQHSE/FineUIPro.Web/HSSE/Check/RectifyNoticesAudit.aspx.cs

507 lines
22 KiB
C#
Raw Normal View History

2025-04-07 17:43:30 +08:00
using BLL;
using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
2025-04-21 09:33:45 +08:00
using System.IO;
using Aspose.Words;
using Aspose.Words.Drawing;
using Aspose.Words.Tables;
2025-04-07 17:43:30 +08:00
namespace FineUIPro.Web.HSSE.Check
{
public partial class RectifyNoticesAudit : PageBase
{
#region
public string RectifyNoticesId
{
get
{
return (string)ViewState["RectifyNoticesId"];
}
set
{
ViewState["RectifyNoticesId"] = value;
}
}
#endregion
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
RectifyNoticesId = Request.Params["RectifyNoticesId"];
/// 专业工程师
BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpProfessionalEngineer, this.CurrUser.LoginProjectId, CommonService.GetMainProjectUnitId(this.CurrUser.LoginProjectId), true);
/// 施工经理
BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpConstructionManager, this.CurrUser.LoginProjectId, CommonService.GetMainProjectUnitId(this.CurrUser.LoginProjectId), true);
/// 项目经理
BLL.UserService.InitFlowOperateControlUserDropDownList(this.drpProjectManager, this.CurrUser.LoginProjectId, CommonService.GetMainProjectUnitId(this.CurrUser.LoginProjectId), true);
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.drpHiddenHazardType.SelectedValue = getRectifyNotices.HiddenHazardType;
getControlShow();
}
BindGrid();
BindGrid1();
}
}
/// <summary>
///
/// </summary>
public void BindGrid()
{
if (!string.IsNullOrEmpty(this.RectifyNoticesId))
{
string strSql = @"select RectifyNoticesItemId, RectifyNoticesId, WrongContent, Requirement,Rectify.RectifyName as RectifyId, 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<SqlParameter> listStr = new List<SqlParameter>();
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();
}
}
/// <summary>
///
/// </summary>
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<SqlParameter> listStr = new List<SqlParameter>();
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
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSubmit_Click(object sender, EventArgs e)
{
SaveRectifyNotices();
}
/// <summary>
/// 保存方法
/// </summary>
/// <param name="saveType"></param>
private void SaveRectifyNotices()
{
if (this.drpOperateMan.SelectedValue != Const._Null)
{
var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(this.RectifyNoticesId);
if (getRectifyNotices != null)
{
Model.Check_RectifyNoticesFlowOperate newOItem = new Model.Check_RectifyNoticesFlowOperate
{
FlowOperateId = SQLHelper.GetNewID(),
RectifyNoticesId = getRectifyNotices.RectifyNoticesId,
OperateManId = this.CurrUser.UserId,
OperateTime = DateTime.Now,
IsAgree = (this.rdbIsAgree.SelectedValue == "false" ? false : true),
Opinion = this.txtOpinion.Text.Trim(),
};
////签发
if (getRectifyNotices.States == Const.State_1)
{
getRectifyNotices.HiddenHazardType = this.drpHiddenHazardType.SelectedValue;
newOItem.OperateName = "施工单位项目安全经理签发";
getRectifyNotices.DutyPersonId = this.drpOperateMan.SelectedValue;
if (newOItem.IsAgree == true)
{
getRectifyNotices.States = Const.State_2;
getRectifyNotices.SignDate = DateTime.Now;
if (this.drpProfessionalEngineer.SelectedValue != Const._Null)
{
getRectifyNotices.ProfessionalEngineerId = this.drpProfessionalEngineer.SelectedValue;
}
if (this.drpConstructionManager.SelectedValue != Const._Null)
{
getRectifyNotices.ConstructionManagerId = this.drpConstructionManager.SelectedValue;
}
if (this.drpProjectManager.SelectedValue != Const._Null)
{
getRectifyNotices.ProjectManagerId = this.drpProjectManager.SelectedValue;
}
}
else
{
getRectifyNotices.States = Const.State_0;
}
}
//else if (getRectifyNotices.States == Const.State_3)
//{
// newOItem.OperateName = "施工单位项目负责人审核";
// if (newOItem.IsAgree == true)
// {
// getRectifyNotices.States = Const.State_4;
// getRectifyNotices.UnitHeadManDate = DateTime.Now;
// getRectifyNotices.CheckPerson = this.drpOperateMan.SelectedValue;
// }
// else
// {
// getRectifyNotices.States = Const.State_2;
// getRectifyNotices.CompleteDate = null;
// }
//}
Funs.DB.Check_RectifyNoticesFlowOperate.InsertOnSubmit(newOItem);
Funs.DB.SubmitChanges();
ShowNotify("提交成功!", MessageBoxIcon.Success);
if (string.IsNullOrEmpty(Request.Params["Main"]))
{
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
PageContext.RegisterStartupScript(String.Format("window.close();"));
}
}
}
else
{
Alert.ShowInParent("请选择" + this.drpOperateMan.Label + "", MessageBoxIcon.Warning);
return;
}
}
#endregion
#region
/// <summary>
/// 获取整改前图片(放于Img中)
/// </summary>
/// <param name="registrationId"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 获取整改后图片
/// </summary>
/// <param name="registrationId"></param>
/// <returns></returns>
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
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rdbIsAgree_SelectedIndexChanged(object sender, EventArgs e)
{
getControlShow();
}
/// <summary>
///
/// </summary>
private void getControlShow()
{
this.drpOperateMan.Items.Clear();
this.step1_person2.Hidden = true;
this.trOpinion.Hidden = true;
this.drpHiddenHazardType.Readonly = true;
var getRectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId);
if (getRectifyNotices != null)
{
if (getRectifyNotices.States == Const.State_1)
{
this.Grid1.Columns[4].Hidden = true;
this.Grid1.Columns[5].Hidden = true;
this.Grid1.Columns[6].Hidden = true;
this.drpHiddenHazardType.Readonly = false;
}
if (this.rdbIsAgree.SelectedValue == "true")
{
this.drpOperateMan.Hidden = false;
this.drpOperateMan.Readonly = false;
if (getRectifyNotices.States == Const.State_1)
{
this.drpOperateMan.Label = "接收人";
UserService.InitUserProjectIdUnitIdDropDownList(this.drpOperateMan, this.CurrUser.LoginProjectId, getRectifyNotices.UnitId, true);
this.drpOperateMan.SelectedValue = getRectifyNotices.DutyPersonId;
this.step1_person2.Hidden = false;
}
//else if (getRectifyNotices.States == Const.State_3)
//{
// this.drpOperateMan.Label = "安全经理/安全工程师";
// UserService.InitUserProjectIdUnitIdDropDownList(this.drpOperateMan, this.CurrUser.LoginProjectId, Const.UnitId_TCC, true);
// this.drpOperateMan.SelectedValue = getRectifyNotices.CompleteManId;
//}
}
else
{
this.trOpinion.Hidden = false;
this.drpOperateMan.Readonly = true;
if (getRectifyNotices.States == Const.State_1)
{
this.drpOperateMan.Label = "打回检查人";
UserService.InitFlowOperateControlUserDropDownList(this.drpOperateMan, this.CurrUser.LoginProjectId, null, true);
this.drpOperateMan.SelectedValue = getRectifyNotices.CompleteManId;
}
//else if (getRectifyNotices.States == Const.State_3)
//{
// this.drpOperateMan.Label = "打回整改责任人";
// UserService.InitUserProjectIdUnitIdDropDownList(this.drpOperateMan, this.CurrUser.LoginProjectId, getRectifyNotices.UnitId, true);
// this.drpOperateMan.SelectedValue = getRectifyNotices.DutyPersonId;
//}
}
}
}
2025-04-21 09:33:45 +08:00
/// <summary>
/// 导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<string> Paths = new List<string>();
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);
}
}
2025-04-07 17:43:30 +08:00
}
}