Basf_EProject/EProject/FineUIPro.Web/Global.asax.cs

931 lines
48 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.

namespace FineUIPro.Web
{
using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Web;
using System.Data;
using System.Data.SqlClient;
public class Global : System.Web.HttpApplication
{
/// <summary>
/// 自动启用插件标志文件路径
/// </summary>
private static string applicationActiveFlagFilePhysicalPath = String.Empty;
protected void Application_Start(object sender, EventArgs e)
{
Application["OnlineUserCount"] = 0;
try
{
Funs.RootPath = Server.MapPath("~/");
Funs.ClientId = ConfigurationManager.AppSettings["clientId"];
Funs.ClientSecret = ConfigurationManager.AppSettings["clientSecret"];
Funs.Redirect_url = ConfigurationManager.AppSettings["redirect_url"];
// 日志文件所在目录
ErrLogInfo.DefaultErrLogFullPath = Server.MapPath("~/ErrLog.txt");
//Funs.ConnString = ConfigurationManager.AppSettings["ConnectionString"];
Funs.SystemName = ConfigurationManager.AppSettings["SystemName"];
Funs.LdapUrl = ConfigurationManager.AppSettings["LdapUrl"];
Funs.ConnString = ConfigurationManager.ConnectionStrings["EProjectDBConnectionString"].ConnectionString;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex);
AppDomain.Unload(AppDomain.CurrentDomain);
}
//每年1月份邮件提醒前一年项目状态为MC的项目同时PM / EM编辑器的Pressure Piping打勾
if (DateTime.Now.Month == 1 && DateTime.Now.Day == 1)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(PressurePiping);
}
//当Const.Kick - off Meeting不为空时每月20号发送提醒邮件给CM当MC不为空时停止发送提醒邮件。
if (DateTime.Now.Day == 20)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(ConstInfoMaintenance);
}
//计划邮件26号自动发送提醒下月5号冻结
if (DateTime.Now.Day == 26)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(PlanProject);
}
//实际邮件21号自动发送提醒当月25号冻结。
if (DateTime.Now.Day == 21)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(ActualProject);
}
//项目状态MC之后1个月时(由5个月改为1个月)
if (DateTime.Now.Hour == 10)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(MCEmial);
}
//填写第二张资源时,第一张资源预留一个月的时候填写人工时
if (DateTime.Now.Hour == 10)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(UpdateManHourDisabled);
}
// MC证书提醒
if ((DateTime.Now.Day == 1 || DateTime.Now.Day == 16) && DateTime.Now.Hour == 10)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(MCSigned_AutoSend);
}
// FC证书提醒
if ((DateTime.Now.Day == 1 || DateTime.Now.Day == 16) && DateTime.Now.Hour == 10)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 3600000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(FCSigned_AutoSend);
}
// Punch_Check_Send
if (DateTime.Now.Hour == 10)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//1小时执行一次
aTimer.Interval = 60 * 60 * 1000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Punch_Check_Send);
}
// Design Input
if (DateTime.Now.Hour == 9)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//2小时执行一次
aTimer.Interval = 120 * 60 * 1000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Design_Input_Send);
}
// 项目达到条件自动关闭
if (DateTime.Now.Hour == 16)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
//2小时执行一次
aTimer.Interval = 120 * 60 * 1000;
aTimer.Enabled = true;
aTimer.Start();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Auto_Close);
}
}
#region
/// <summary>
/// 每年1月份邮件提醒前一年项目状态为MC的项目同时PM/EM编辑器的Pressure Piping打勾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PressurePiping(object sender, System.Timers.ElapsedEventArgs e)
{
int m = DateTime.Now.Month;
int d = DateTime.Now.Day;
int h = DateTime.Now.Hour;
if (m == 1 && d == 1 && h == 10)
{
int y = Convert.ToInt32(DateTime.Now.ToString("yy")) - 1;
List<Model.Editor_EProject> eplist = new List<Model.Editor_EProject>();
eplist = (from x in Funs.DB.Editor_EProject where x.PM_PressurePipingChecked == true && x.ProjectControl_JobStatus == "MC" && x.ProjectControl_JobNo.Substring(0, 2) == y.ToString() select x).ToList();
if (eplist.Count > 0)
{
for (int i = 0; i < eplist.Count; i++)
{
if (eplist[i].PM_PressurePipingChecked == true)
{
PageBase bg = new PageBase();
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString());
nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString());
bg.EmailSendMessage(eplist[i], BLL.Const.PPRRString, nameValue, BLL.Const.CustomString, BLL.Const.NoprojectString);
//Pressure Piping的PLAN自动 = 次年3月1日
Editor_EProject editor_EProject = BLL.EProjectService.GeteProjectById(eplist[i].EProjectId);
if (editor_EProject != null)
{
editor_EProject = eplist[i];
editor_EProject.PM_PP_PressurePiping = Funs.GetNewDateTime(DateTime.Now.Year + "-03-01");
BLL.EProjectService.UpdateProject(editor_EProject, "PM");
}
}
}
}
}
}
#endregion
#region
/// <summary>
/// 当Const.Kick - off Meeting不为空时每月20号发送提醒邮件给CM当MC不为空时停止发送提醒邮件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ConstInfoMaintenance(object sender, System.Timers.ElapsedEventArgs e)
{
int d = DateTime.Now.Day;
int h = DateTime.Now.Hour;
if (d == 20 && h == 9)
{
List<Model.Editor_EProject> eplist = new List<Model.Editor_EProject>();
eplist = (from x in Funs.DB.Editor_EProject where x.CM_KickOffMetting.HasValue && !x.CM_MA_MC.HasValue select x).ToList();
if (eplist.Count > 0)
{
for (int i = 0; i < eplist.Count; i++)
{
PageBase bg = new PageBase();
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString());
nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString());
bg.EmailSendMessage(eplist[i], BLL.Const.CIMRString, nameValue, BLL.Const.CustomString, BLL.Const.projectString);
}
}
}
}
#endregion
#region 265
/// <summary>
/// 计划邮件26号自动发送提醒下月5号冻结
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PlanProject(object sender, System.Timers.ElapsedEventArgs e)
{
int d = DateTime.Now.Day;
int h = DateTime.Now.Hour;
if (d == 26 && h == 9)
{
PageBase bg = new PageBase();
bg.EmailSendMessage(null, BLL.Const.SASString, null, BLL.Const.NoCustomString, BLL.Const.NoprojectString);
}
}
#endregion
#region 2125
/// <summary>
/// 实际邮件21号自动发送提醒当月25号冻结。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ActualProject(object sender, System.Timers.ElapsedEventArgs e)
{
int d = DateTime.Now.Day;
int h = DateTime.Now.Hour;
if (d == 21 && h == 9)
{
PageBase bg = new PageBase();
bg.EmailSendMessage(null, BLL.Const.AASString, null, BLL.Const.NoCustomString, BLL.Const.NoprojectString);
}
}
#endregion
#region MC之后3个月时发邮件4
/// <summary>
/// 项目状态MC之后1个月时(由5个月改为1个月)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MCEmial(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Hour == 10)
{
var eplist = (from x in Funs.DB.Editor_EProject
where x.CM_MA_MC.Value.AddMonths(3).Year == DateTime.Now.Year
&& x.CM_MA_MC.Value.AddMonths(3).Month == DateTime.Now.Month
&& x.CM_MA_MC.Value.AddMonths(3).Day == DateTime.Now.Day
select x).ToList();
if (eplist.Count > 0)
{
for (int i = 0; i < eplist.Count; i++)
{
PageBase bg = new PageBase();
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectName", eplist[i].ProjectControl_JobTitle.ToString().Trim());
nameValue.Add("projectNo", eplist[i].ProjectControl_JobNo.ToString().Trim());
nameValue.Add("CM_MA_MC", Convert.ToDateTime(eplist[i].CM_MA_MC).AddMonths(4).ToString("yyyy-MM-dd"));
nameValue.Add("BUCode", eplist[i].ProjectControl_BUCode);
bg.EmailSendMessage(eplist[i], BLL.Const.FIRILHString, nameValue, BLL.Const.CustomString, BLL.Const.projectString2);
}
}
}
//项目的人员的人工时自动关闭MC时间 + 4个月-- >> 项目成员的人工时disable置为1由原来的6个月改为4个月
var eplist1 = (from x in Funs.DB.Editor_EProject
where x.CM_MA_MC.Value.AddMonths(4).Year == DateTime.Now.Year
&& x.CM_MA_MC.Value.AddMonths(4).Month == DateTime.Now.Month
&& x.CM_MA_MC.Value.AddMonths(4).Day == DateTime.Now.Day
select x).ToList();
if (eplist1.Count > 0)
{
for (int i = 0; i < eplist1.Count; i++)
{
List<Model.ManHours_Plan> manHours_Plans = (from x in Funs.DB.ManHours_Plan where x.EProjectId == eplist1[i].EProjectId select x).ToList();
if (manHours_Plans.Count > 0)
{
for (int a = 0; a < manHours_Plans.Count; a++)
{
var manHours_Plan = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.ManHoursPlanId == manHours_Plans[a].ManHoursPlanId);
if (manHours_Plan != null)
{
manHours_Plan.AccountDisabled = 1;
Funs.DB.SubmitChanges();
}
}
}
}
}
}
#endregion
#region 1 2Cancelled或Hold也预留一个月
/// <summary>
/// 填写第二张资源时,第一张资源预留一个月的时候填写人工时
/// MOC和Projects项目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void UpdateManHourDisabled(object sender, System.Timers.ElapsedEventArgs e)
{
var eprojects = (from x in Funs.DB.Resource_Plan select x).GroupBy(x => x.EProjectId).ToList();
if (eprojects != null)
{
foreach (var epr in eprojects)
{
var planLists = (from x in Funs.DB.Resource_Plan
join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId
where x.EProjectId == epr.Key && (y.ProjectControl_JobType == "Projects" || y.ProjectControl_JobType == "MOC")
orderby x.CreateDate ascending
select new { x.ResourcePlanId, y.PM_MA_ProjectApproval }).ToList();
if (planLists.Count == 2)
{
if (planLists[0].PM_MA_ProjectApproval.HasValue && planLists[0].PM_MA_ProjectApproval.Value.AddMonths(1) <= DateTime.Now)
{
string resourcePlanId = planLists[0].ResourcePlanId.ToString();
List<ManHours_Plan> manHours_Plan = (from x in Funs.DB.ManHours_Plan where x.ResourcePlanId == resourcePlanId select x).ToList();
foreach (var item in manHours_Plan)
{
item.AccountDisabled = 1;
Funs.DB.SubmitChanges();
}
}
}
}
}
var epList = from x in Funs.DB.Editor_EProject
where (x.ProjectControl_PC_CancelDate.HasValue && x.ProjectControl_PC_CancelDate.Value.AddMonths(1) <= DateTime.Now && x.ProjectControl_PC_CancelDate.Value.AddMonths(2) >= DateTime.Now)
|| (x.Job_Hold.HasValue && x.Job_Hold.Value.AddMonths(1) <= DateTime.Now && x.Job_Hold.Value.AddMonths(2) >= DateTime.Now)
select x;
foreach (var ep in epList)
{
var manHours_Plan = (from x in Funs.DB.ManHours_Plan where x.EProjectId == ep.EProjectId && x.AccountDisabled != 1 select x).ToList();
if (manHours_Plan.Count > 0)
{
foreach (var item in manHours_Plan)
{
item.AccountDisabled = 1;
Funs.DB.SubmitChanges();
}
}
}
}
#endregion
#region MC证书提醒
private void MCSigned_AutoSend(object sender, System.Timers.ElapsedEventArgs e)
{
string strSql = @"SELECT pro.EProjectId,pro.ProjectControl_JobNo,pro.ProjectControl_JobTitle,pro.ProjectControl_ConstManagerId
FROM dbo.Editor_EProject pro
WHERE pro.CM_MA_MC IS NOT NULL AND DATEDIFF(DAY,pro.CM_MA_MC,GETDATE())>30
AND (pro.ProjectControl_JobType='Projects' OR pro.ProjectControl_JobType='Small Invest')
AND pro.ProjectControl_JobStatus='MC'
AND (SELECT COUNT(*) FROM dbo.Editor_TDC tdc
WHERE tdc.EProjectId=pro.EProjectId AND tdc.[Type]='D11_MC' AND tdc.ReceiveHC IS NOT NULL)=0";
DataTable dt = BLL.SQLHelper.GetDataTableRunText(strSql, null);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Model.Editor_EProject ep = new Editor_EProject();
ep.EProjectId = dt.Rows[i]["EProjectId"].ToString();
ep.ProjectControl_JobNo = dt.Rows[i]["ProjectControl_JobNo"].ToString();
if (dt.Rows[i]["ProjectControl_ConstManagerId"] != null)
{
ep.ProjectControl_ConstManagerId = dt.Rows[i]["ProjectControl_ConstManagerId"].ToString();
}
else
{
ep.ProjectControl_ConstManagerId = string.Empty;
}
PageBase bg = new PageBase();
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString());
nameValue.Add("projectName", dt.Rows[i]["ProjectControl_JobTitle"].ToString());
bg.EmailSendMessage(ep, BLL.Const.MCSigned, nameValue, BLL.Const.CustomString, BLL.Const.projectString4);
}
}
}
#endregion
#region FC证书提醒
private void FCSigned_AutoSend(object sender, System.Timers.ElapsedEventArgs e)
{
string strSql = @"SELECT pro.EProjectId,pro.ProjectControl_JobNo,pro.ProjectControl_JobTitle,pro.ProjectControl_ProjectManagerId
FROM dbo.Editor_EProject pro
WHERE pro.CM_MA_MC IS NOT NULL AND DATEDIFF(DAY,pro.CM_MA_MC,GETDATE())>83
AND pro.ProjectControl_JobType='Projects' AND pro.ProjectControl_OrginalBudget>1000000
AND pro.ProjectControl_JobStatus='MC'
AND (SELECT COUNT(*) FROM dbo.Editor_TDC tdc
WHERE tdc.EProjectId=pro.EProjectId AND tdc.[Type]='D30_FC' AND tdc.ReceiveHC IS NOT NULL)=0";
DataTable dt = BLL.SQLHelper.GetDataTableRunText(strSql, null);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Model.Editor_EProject ep = new Editor_EProject();
ep.EProjectId = dt.Rows[i]["EProjectId"].ToString();
ep.ProjectControl_JobNo = dt.Rows[i]["ProjectControl_JobNo"].ToString();
if (dt.Rows[i]["ProjectControl_ProjectManagerId"] != null)
{
ep.ProjectControl_ConstManagerId = dt.Rows[i]["ProjectControl_ProjectManagerId"].ToString();
}
else
{
ep.ProjectControl_ConstManagerId = string.Empty;
}
PageBase bg = new PageBase();
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString());
nameValue.Add("projectName", dt.Rows[i]["ProjectControl_JobTitle"].ToString());
bg.EmailSendMessage(ep, BLL.Const.FCSigned, nameValue, BLL.Const.CustomString, BLL.Const.projectString4);
}
}
}
#endregion
#region Punch_Check_Send
private void Punch_Check_Send(object sender, System.Timers.ElapsedEventArgs e)
{
PageBase bg = new PageBase();
// 发送给CTECheckerName
var punchCTEList = from x in Funs.DB.Editor_Punch
join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId
where !x.CTECheckDate.HasValue && x.PlanedFinishDate.HasValue
&& (x.CTECheckerId != null && x.CTECheckerId != "")
&& (DateTime.Now.AddDays(7).Date == x.PlanedFinishDate.Value.Date
|| DateTime.Now.AddDays(3).Date == x.PlanedFinishDate.Value.Date)
select new
{
y.ProjectControl_JobNo,
y.ProjectControl_JobTitle,
x.CTECheckerId,
x.CTECheckerName,
x.TagNo,
x.Description
};
if (punchCTEList.Count() > 0)
{
foreach (var p in punchCTEList)
{
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", p.ProjectControl_JobNo.ToString().Trim());
nameValue.Add("projectName", p.ProjectControl_JobTitle.ToString().Trim());
nameValue.Add("CheckName", p.CTECheckerName.Trim());
nameValue.Add("TagNo", p.TagNo.Trim());
nameValue.Add("Description", p.Description.Trim());
Model.Sys_User sys_User = new Model.Sys_User();
sys_User = BLL.Sys_UserService.GetUsersByUserId(p.CTECheckerId);
List<Model.Sys_User> list = new List<Model.Sys_User>();
list.Add(sys_User);
bg.EmailSendMessage(BLL.Const.CCOCString, nameValue, BLL.Const.CustomString, list, "CTE Check");
}
}
// 发送给OwnerCheckerName 去掉
//var punchOwnerList = from x in Funs.DB.Editor_Punch
// join y in Funs.DB.Editor_EProject on x.EProjectId equals y.EProjectId
// where !x.OwnerCheckDate.HasValue && x.CTECheckDate.HasValue
// && (x.OwnerCheckerId != null && x.OwnerCheckerId != "")
// && x.CTECheckDate.Value.AddDays(7).Date == DateTime.Now.Date
// select new
// {
// y.ProjectControl_JobNo,
// y.ProjectControl_JobTitle,
// x.OwnerCheckerId,
// x.OwnerCheckerName,
// x.TagNo,
// x.Description
// };
//if (punchOwnerList.Count() > 0)
//{
// foreach (var p in punchOwnerList)
// {
// NameValueCollection nameValue = new NameValueCollection();
// nameValue.Add("projectNo", p.ProjectControl_JobNo.ToString().Trim());
// nameValue.Add("projectName", p.ProjectControl_JobTitle.ToString().Trim());
// nameValue.Add("CheckName", p.OwnerCheckerName.Trim());
// nameValue.Add("TagNo", p.TagNo.Trim());
// nameValue.Add("Description", p.Description.Trim());
// Model.Sys_User sys_User = new Model.Sys_User();
// sys_User = BLL.Sys_UserService.GetUsersByUserId(p.OwnerCheckerId);
// List<Model.Sys_User> list = new List<Model.Sys_User>();
// list.Add(sys_User);
// bg.EmailSendMessage(BLL.Const.CCOCString, nameValue, BLL.Const.CustomString, list, "CTE Check");
// }
//}
}
#endregion
#region
private void Design_Input_Send(object sender, System.Timers.ElapsedEventArgs e)
{
PageBase bg = new PageBase();
// 1、 系统在项目计划(改为实际)批准当天自动给项目经理发送提醒邮件,提醒项目经理完成设计输入策划工作,并只适用于CTE设计的项目。
var eprojectList = from x in BLL.Funs.DB.Editor_EProject
where x.PM_General_CDI == "CTE" && x.ProjectControl_MS_Approval.HasValue &&
x.ProjectControl_MS_Approval.Value.Date == DateTime.Now.Date
select x;
if (eprojectList.Count() > 0)
{
foreach (var eproject in eprojectList)
{
BLL.DesignInputService.DesignInputMailSend(eproject.EProjectId, true);
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", eproject.ProjectControl_JobNo);
nameValue.Add("IssuedDiscOrNo", eproject.ProjectControl_JobNo + "-" + eproject.ProjectControl_JobTitle);
nameValue.Add("Person_Ch", "");
nameValue.Add("Person_En", "");
if (!string.IsNullOrEmpty(eproject.ProjectControl_ProjectManagerId))
{
Model.Sys_User sys_User = new Model.Sys_User();
sys_User = BLL.Sys_UserService.GetUsersByUserId(eproject.ProjectControl_ProjectManagerId);
nameValue.Add("UserName", sys_User.UserName);
List<Model.Sys_User> list = new List<Model.Sys_User>();
list.Add(sys_User);
bg.EmailSendMessage(BLL.Const.DesignPlanString, nameValue, BLL.Const.NoCustomString, list, "");
}
}
}
string strSql = @"SELECT p.ProjectControl_JobNo,p.ProjectControl_JobTitle,u.UserName,u.ChineseName,
d.DesignInputId,d.DesignInputNo,d.DesignInputChName,d.DesignInputEnName,d.IssuedMan
FROM dbo.Design_Input d
LEFT JOIN dbo.Editor_EProject p ON p.EProjectId = d.EProjectId
LEFT JOIN dbo.Sys_User u ON u.UserId =p.ProjectControl_ProjectManagerId
WHERE (SELECT COUNT(*) FROM dbo.Design_Notice n WHERE d.DesignInputId=n.DesignInputId)=0
AND DATEADD(dd,5,d.PlanStartDate)<GETDATE()
AND d.MailIsWarn IS NULL
AND d.IssuedMan IS NOT NULL AND d.PlanStartDate IS NOT NULL AND d.PlanEndDate IS NOT NULL
ORDER BY d.EProjectId";
// 查找未完成的设计输入
DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
for (int i = 0; i < dt.Rows.Count; i++)
{
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString());
nameValue.Add("IssuedDiscOrNo", dt.Rows[i]["ProjectControl_JobNo"].ToString() + "-" + dt.Rows[i]["ProjectControl_JobTitle"].ToString() + "," + dt.Rows[i]["DesignInputChName"].ToString() + " " + dt.Rows[i]["DesignInputEnName"].ToString() + " " + dt.Rows[i]["DesignInputNo"].ToString());
nameValue.Add("Person_Ch", dt.Rows[i]["ChineseName"].ToString());
nameValue.Add("Person_En", dt.Rows[i]["UserName"].ToString());
if (dt.Rows[i]["IssuedMan"].ToString() != "")
{
// 更新已提醒
BLL.DesignInputService.DesignInputEmailIsWarn(dt.Rows[i]["DesignInputId"].ToString(), true);
Model.Sys_User sys_User = new Model.Sys_User();
sys_User = BLL.Sys_UserService.GetUsersByUserId(dt.Rows[i]["IssuedMan"].ToString());
nameValue.Add("UserName", sys_User.UserName);
List<Model.Sys_User> list = new List<Model.Sys_User>();
list.Add(sys_User);
bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, list, "");
}
}
// 待办人二次邮件提醒
string noticeSql = @"SELECT p.ProjectControl_JobNo,p.ProjectControl_JobTitle, input.DesignInputNo,input.DesignInputChName,
input.DesignInputEnName,n.MutualIssuedNo,flow.DesignNoticeId,flow.NoticeFlowId,flow.SubmitMan
FROM dbo.Design_NoticeFlow flow
LEFT JOIN dbo.Design_Notice n ON n.DesignNoticeId = flow.DesignNoticeId
LEFT JOIN dbo.Design_Input input ON input.DesignInputId = n.DesignInputId
LEFT JOIN dbo.Editor_EProject p ON p.EProjectId = input.EProjectId
WHERE flow.HandleState='待办理' AND flow.MailIsWarn IS NULL
AND DATEADD(dd,-5,input.PlanEndDate)<GETDATE()
ORDER BY input.EProjectId";
DataTable dt2 = SQLHelper.GetDataTableRunText(noticeSql, null);
for (int i = 0; i < dt2.Rows.Count; i++)
{
string person_Ch = string.Empty;
string person_En = string.Empty;
string designNoticeId = dt.Rows[i]["DesignNoticeId"].ToString();
var noticeFlow = from x in BLL.Funs.DB.Design_NoticeFlow where x.DesignNoticeId == designNoticeId && x.SubmitDate.HasValue orderby x.SubmitDate descending select x;
if (noticeFlow.Count() > 0)
{
var user = from x in BLL.Funs.DB.Sys_User where x.UserId == noticeFlow.First().SubmitMan select x;
if (user.Count() > 0)
{
person_Ch = user.First().ChineseName;
person_En = user.First().UserName;
}
}
NameValueCollection nameValue = new NameValueCollection();
nameValue.Add("projectNo", dt.Rows[i]["ProjectControl_JobNo"].ToString());
nameValue.Add("IssuedDiscOrNo", dt.Rows[i]["ProjectControl_JobNo"].ToString() + "-" + dt.Rows[i]["ProjectControl_JobTitle"].ToString() + "," + dt.Rows[i]["DesignInputChName"].ToString() + " " + dt.Rows[i]["DesignInputEnName"].ToString() + " " + dt.Rows[i]["DesignInputNo"].ToString() + " " + dt.Rows[i]["MutualIssuedNo"].ToString());
nameValue.Add("Person_Ch", person_Ch);
nameValue.Add("Person_En", person_En);
if (dt2.Rows[i]["SubmitMan"].ToString() != "")
{
// 更新已提醒
BLL.DesignInputService.NoticeEmailIsWarn(dt2.Rows[i]["NoticeFlowId"].ToString(), true);
Model.Sys_User sys_User = new Model.Sys_User();
sys_User = BLL.Sys_UserService.GetUsersByUserId(dt2.Rows[i]["SubmitMan"].ToString());
nameValue.Add("UserName", sys_User.UserName);
List<Model.Sys_User> list = new List<Model.Sys_User>();
list.Add(sys_User);
bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, list, "");
}
}
}
#endregion
#region
private void Auto_Close(object sender, System.Timers.ElapsedEventArgs e)
{
var projectList = (from x in Funs.DB.Editor_EProject select x).ToList();
foreach (var eproject in projectList)
{
if ((eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
&& eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
&& eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
|| (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
&& !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
&& !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue)
|| (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
&& eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
&& !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue)
|| (eproject.Permit_PS_SafetyFinalAcc.HasValue && eproject.Permit_PA_SafetyFinalACC.HasValue
&& !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
&& eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
|| (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
&& eproject.Permit_PS_FFFinalAcc.HasValue && eproject.Permit_PA_FFFinalACC.HasValue
&& eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
|| (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
&& !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
&& eproject.Permit_PS_EnvFinalAcc.HasValue && eproject.Permit_PA_EnvFinalACC.HasValue)
|| (!eproject.Permit_PS_SafetyFinalAcc.HasValue && !eproject.Permit_PA_SafetyFinalACC.HasValue
&& !eproject.Permit_PS_FFFinalAcc.HasValue && !eproject.Permit_PA_FFFinalACC.HasValue
&& !eproject.Permit_PS_EnvFinalAcc.HasValue && !eproject.Permit_PA_EnvFinalACC.HasValue))
{
#region MOC项目
//MOC项目最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④剩余材料登记
if (eproject.ProjectControl_JobType == "MOC")
{
List<DateTime> closeDateLists = new List<DateTime>();
var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");//竣工图接收日期
if (built != null)
{
if (built.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));
}
}
var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");//主控文档更新日期
if (md != null)
{
if (md.ReceivePDF.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));
}
}
if (eproject.ProjectControl_BC_CloseDate.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
}
if (eproject.CM_Date_of_Registration.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记
}
closeDateLists.Sort();
if (closeDateLists.Count == 4)
{
eproject.ProjectControl_ClosedDate = closeDateLists[3];
eproject.ProjectControl_JobStatus = "Closed";
}
}
#endregion
#region
//类型为项目和小型投资:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期④C类尾项消项日期⑤机械竣工签署日期⑥剩余材料登记⑦计划具备开车条件日期⑧大于100万需要FC签署日期
else if (eproject.ProjectControl_JobType == "Small Invest" || eproject.ProjectControl_JobType == "Projects")
{
List<DateTime> closeDateLists = new List<DateTime>();
var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");
if (built != null)
{
if (built.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期
}
}
if (eproject.ProjectControl_BC_CloseDate.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
}
var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");
if (md != null)
{
if (md.ReceivePDF.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期
}
}
if (eproject.CM_Punch_CKilledDate.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.CM_Punch_CKilledDate));//C类尾项消项日期
}
var mc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D11_MC");
if (mc != null)
{
if (mc.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//机械竣工签署日期
}
}
if (eproject.CM_Date_of_Registration.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.CM_Date_of_Registration));//剩余材料登记
}
var rfsu = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D12_RFSU");
if (rfsu != null)
{
if (rfsu.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(mc.ReceiveHC));//计划具备开车条件日期
}
}
// 大于1000000需要FC签署日期
if (eproject.ProjectControl_OrginalBudget != null && eproject.ProjectControl_OrginalBudget > 1000000)
{
var fc = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D30_FC");
if (fc != null)
{
if (fc.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(fc.ReceiveHC));//FC签署日期
}
}
closeDateLists.Sort();
if (closeDateLists.Count == 8)
{
eproject.ProjectControl_ClosedDate = closeDateLists[7];
eproject.ProjectControl_JobStatus = "Closed";
}
}
else
{
closeDateLists.Sort();
if (closeDateLists.Count == 7)
{
eproject.ProjectControl_ClosedDate = closeDateLists[6];
eproject.ProjectControl_JobStatus = "Closed";
}
}
}
#endregion
#region
//其他类项目:最晚的①竣工图接收日期②商务关闭日期③主控文档更新日期
else if (eproject.ProjectControl_JobType == "Other")
{
List<DateTime> closeDateLists = new List<DateTime>();
var built = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D02_AS-BUILT");
if (built != null)
{
if (built.ReceiveHC.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(built.ReceiveHC));//竣工图接收日期
}
}
if (eproject.ProjectControl_BC_CloseDate.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(eproject.ProjectControl_BC_CloseDate));//商务关闭日期
}
var md = BLL.TDCService.GetTDCByEprojectId(eproject.EProjectId, "D03_MD");
if (md != null)
{
if (md.ReceivePDF.HasValue)
{
closeDateLists.Add(Convert.ToDateTime(md.ReceivePDF));//主控文档更新日期
}
}
closeDateLists.Sort();
if (closeDateLists.Count == 3)
{
eproject.ProjectControl_ClosedDate = closeDateLists[2];
eproject.ProjectControl_JobStatus = "Closed";
}
}
#endregion
}
}
}
#endregion
protected void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 720;
// 这种统计在线人数的做法会有一定的误差
Application.Lock();
Application["OnlineUserCount"] = (int)Application["OnlineUserCount"] + 1;
Application.UnLock();
// https访问secure设置为true
if (Request.IsSecureConnection)
{
Response.Cookies["ASP.NET_SessionId"].Secure = true;
}
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
StringBuilder errLog = null;
Exception ex = null;
try
{
// 获取错误类
ex = Server.GetLastError().InnerException;
if (ex == null)
{
ex = Server.GetLastError().GetBaseException();
}
errLog = new StringBuilder();
errLog.Append(String.Format(CultureInfo.InvariantCulture, "出错文件:{0}\r\n", Request.Url.AbsoluteUri));
if (Request.UserHostAddress != null)
{
errLog.Append(String.Format(CultureInfo.InvariantCulture, "IP地址:{0}\r\n", Request.UserHostAddress));
}
if (Session != null && Session["CurrUser"] != null)
{
errLog.Append(String.Format(CultureInfo.InvariantCulture, "操作人员:{0}\r\n", BLL.Sys_UserService.GetUsersByUserId(((Model.Sys_User)Session["CurrUser"]).UserId).UserName));
}
else
{
PageBase.ZXRefresh(Request.ApplicationPath + "/LogOff.aspx");
}
if (ex is HttpRequestValidationException)
{
PageBase.ZXRefresh(Request.ApplicationPath + "/Wrong.aspx?Message=0");
}
else if (ex is FriendlyException)
{
PageBase.ZXRefresh(Request.ApplicationPath + "/Wrong.aspx?MessageText=" + ex.Message);
}
}
catch
{
try
{
PageBase.ZXRefresh(Request.ApplicationPath + "/OperationError.aspx");
}
catch
{
}
}
finally
{
ErrLogInfo.WriteLog(ex, errLog == null ? null : errLog.ToString());
Server.ClearError();
PageBase.ZXRefresh(Request.ApplicationPath + "/OperationError.aspx");
}
}
protected void Session_End(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
}
}
}