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

608 lines
26 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 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
/// <summary>
/// 主键
/// </summary>
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
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<Model.Check_RectifyNoticesItem> 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
/// <summary>
///
/// </summary>
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<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();
}
}
#endregion
protected void btnAdd_Click(object sender, EventArgs e)
{
List<Model.Check_RectifyNoticesItem> view = getViewTestPlanTrainingList();
Model.Check_RectifyNoticesItem notice = new Model.Check_RectifyNoticesItem
{
RectifyNoticesItemId = SQLHelper.GetNewID()
};
view.Add(notice);
//将gd数据保存在list中
Grid1.DataSource = view;
Grid1.DataBind();
}
#region
/// <summary>
/// 收集页面信息
/// </summary>
/// <returns></returns>
private List<Model.Check_RectifyNoticesItem> getViewTestPlanTrainingList()
{
List<Model.Check_RectifyNoticesItem> view = new List<Check_RectifyNoticesItem>();
var data = Grid1.GetMergedData();
if (data != null)
{
var rectifyList = BLL.RectifyService.GetRectifyList();
foreach (JObject mergedRow in Grid1.GetMergedData())
{
JObject values = mergedRow.Value<JObject>("values");
string rectifyId = values.Value<string>("RectifyId");
string wrongContent = values.Value<string>("WrongContent");
string rectifyNoticesItemId = values.Value<string>("RectifyNoticesItemId");
string requirement = values.Value<string>("Requirement");
string limitTime = values.Value<string>("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
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 保存方法
/// </summary>
/// <param name="saveType"></param>
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
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
//}
/// <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);
}
}
}
}