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
{
///
/// 自动启用插件标志文件路径
///
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 压力管道注册提醒
///
/// 每年1月份邮件提醒前一年项目状态为MC的项目,同时PM/EM编辑器的Pressure Piping打勾
///
///
///
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 eplist = new List();
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 施工信息维护提醒
///
/// 当Const.Kick - off Meeting不为空时,每月20号发送提醒邮件给CM,当MC不为空时,停止发送提醒邮件
///
///
///
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 eplist = new List();
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 计划:邮件26号自动发送提醒,下月5号冻结
///
/// 计划:邮件26号自动发送提醒,下月5号冻结
///
///
///
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 实际:邮件21号自动发送提醒,当月25号冻结。
///
/// 实际:邮件21号自动发送提醒,当月25号冻结。
///
///
///
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个月人工时填写关闭
///
/// 项目状态MC之后1个月时(由5个月改为1个月)
///
///
///
private void MCEmial(object sender, System.Timers.ElapsedEventArgs e)
{
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 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、填写第二张资源时,第一张资源预留一个月的时候填写人工时 2、Cancelled或Hold也预留一个月
///
/// 填写第二张资源时,第一张资源预留一个月的时候填写人工时
/// MOC和Projects项目
///
///
///
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 = (from x in Funs.DB.ManHours_Plan where x.ResourcePlanId == resourcePlanId && x.AccountDisabled != 1 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 list = new List();
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 list = new List();
// 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.PM_MA_ProjectApproval.HasValue &&
x.PM_MA_ProjectApproval.Value.Date == DateTime.Now.Date && x.DesignInputMailIsSend == null
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 list = new List();
list.Add(sys_User);
bg.EmailSendMessage(BLL.Const.DesignInputString, nameValue, BLL.Const.CustomString, 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) list = new List();
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) 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 list = new List();
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 closeDateLists = new List();
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 closeDateLists = new List();
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 closeDateLists = new List();
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)
{
}
}
}