This commit is contained in:
2025-09-25 08:31:00 +08:00
189 changed files with 575714 additions and 13242 deletions
+57 -13
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\SixLabors.ImageSharp.3.1.5\build\SixLabors.ImageSharp.props" Condition="Exists('..\packages\SixLabors.ImageSharp.3.1.5\build\SixLabors.ImageSharp.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -29,6 +30,8 @@
<IISExpressUseClassicPipelineMode />
<UseGlobalApplicationHostFile />
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -55,11 +58,23 @@
<Reference Include="BouncyCastle.Crypto, Version=1.8.9.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
<HintPath>..\packages\Portable.BouncyCastle.1.8.9\lib\net40\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>..\packages\BouncyCastle.Cryptography.2.3.1\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
</Reference>
<Reference Include="Enums.NET, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7ea1c1650d506225, processorArchitecture=MSIL">
<HintPath>..\packages\Enums.NET.4.0.1\lib\net45\Enums.NET.dll</HintPath>
</Reference>
<Reference Include="ExtendedNumerics.BigDecimal, Version=2025.1001.2.129, Culture=neutral, PublicKeyToken=65f1315a45ad8949, processorArchitecture=MSIL">
<HintPath>..\packages\ExtendedNumerics.BigDecimal.2025.1001.2.129\lib\net48\ExtendedNumerics.BigDecimal.dll</HintPath>
</Reference>
<Reference Include="FineUIPro">
<HintPath>..\FineUIPro\FineUIPro.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.3.2.10, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.3.2\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.2.13, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.4.2\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="MathNet.Numerics, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cd8b63ad3d691a37, processorArchitecture=MSIL">
<HintPath>..\packages\MathNet.Numerics.Signed.5.0.0\lib\net48\MathNet.Numerics.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
@@ -74,6 +89,9 @@
<Reference Include="Microsoft.IdentityModel.Tokens, Version=7.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.7.6.2\lib\net472\Microsoft.IdentityModel.Tokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.3.0.0\lib\netstandard2.0\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
</Reference>
<Reference Include="Microsoft.JScript" />
<Reference Include="Microsoft.ReportViewer.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.900.148\lib\net40\Microsoft.ReportViewer.Common.dll</HintPath>
@@ -102,21 +120,25 @@
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NPOI, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.5.5\lib\net45\NPOI.dll</HintPath>
<Reference Include="NPOI.Core, Version=2.7.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.1\lib\net472\NPOI.Core.dll</HintPath>
</Reference>
<Reference Include="NPOI.OOXML, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.5.5\lib\net45\NPOI.OOXML.dll</HintPath>
<Reference Include="NPOI.OOXML, Version=2.7.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.1\lib\net472\NPOI.OOXML.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXml4Net, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.5.5\lib\net45\NPOI.OpenXml4Net.dll</HintPath>
<Reference Include="NPOI.OpenXml4Net, Version=2.7.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.1\lib\net472\NPOI.OpenXml4Net.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXmlFormats, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.5.5\lib\net45\NPOI.OpenXmlFormats.dll</HintPath>
<Reference Include="NPOI.OpenXmlFormats, Version=2.7.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.1\lib\net472\NPOI.OpenXmlFormats.dll</HintPath>
</Reference>
<Reference Include="SixLabors.Fonts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\packages\SixLabors.Fonts.1.0.1\lib\netstandard2.0\SixLabors.Fonts.dll</HintPath>
</Reference>
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.DirectoryServices" />
@@ -130,11 +152,27 @@
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Security" />
<Reference Include="System.Security.AccessControl, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Pkcs, Version=6.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Pkcs.6.0.3\lib\net461\System.Security.Cryptography.Pkcs.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Xml, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Xml.6.0.1\lib\net461\System.Security.Cryptography.Xml.dll</HintPath>
</Reference>
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel" />
<Reference Include="System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.8.0.0\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Text.Encodings.Web, Version=4.0.5.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.4.7.2\lib\net461\System.Text.Encodings.Web.dll</HintPath>
</Reference>
@@ -1977,7 +2015,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BLL\BLL.csproj">
<Project>{BBC7282A-9E2B-4BD6-9C6D-333CEFC6F332}</Project>
<Project>{bbc7282a-9e2b-4bd6-9c6d-333cefc6f332}</Project>
<Name>BLL</Name>
</ProjectReference>
<ProjectReference Include="..\Model\Model.csproj">
@@ -2023,6 +2061,12 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SixLabors.ImageSharp.3.1.5\build\SixLabors.ImageSharp.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SixLabors.ImageSharp.3.1.5\build\SixLabors.ImageSharp.props'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
-918
View File
@@ -1,918 +0,0 @@
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)
{
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[i].ManHoursPlanId);
if (manHours_Plan != null)
{
manHours_Plan.AccountDisabled = 1;
Funs.DB.SubmitChanges();
}
}
}
}
}
}
#endregion
#region 1 2Cancelled或Hold也预留一个月
/// <summary>
/// 填写第二张资源时,第一张资源预留一个月的时候填写人工时
/// </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 where x.EProjectId == epr.Key orderby x.CreateDate descending select x).ToList();
if (planLists.Count() == 2)
{
if (planLists[0].CreateDate.Value.AddMonths(1).Date <= DateTime.Now.Date && planLists[0].CreateDate.Value.AddMonths(2).Date >= DateTime.Now.Date)
{
var manHours_Plan = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.ResourcePlanId == planLists[1].ResourcePlanId);
if (manHours_Plan != null)
{
manHours_Plan.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 = Funs.DB.ManHours_Plan.FirstOrDefault(x => x.EProjectId == ep.EProjectId);
if (manHours_Plan != null)
{
manHours_Plan.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.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<Model.Sys_User> list = new List<Model.Sys_User>();
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)<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)
{
}
}
}
+189
View File
@@ -0,0 +1,189 @@
<?xml version="1.0"?>
<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<section name="FineUIPro" type="FineUIPro.ConfigSection, FineUIPro" requirePermission="false"/>
</configSections>
<connectionStrings>
<add name="EProjectDBConnectionString" connectionString="Data Source=.\sql2016;Initial Catalog=EProjectDB;uid=sa;pwd=1111;"/>
<!--<add name="HJGLDBConnectionString" connectionString="Data Source=.;Initial Catalog=EProjectDB;Integrated Security=True"
providerName="System.Data.SqlClient" />-->
</connectionStrings>
<FineUIPro DebugMode="false" CustomTheme="Metro_Dark_Blue" EnableAnimation="true" JSLibrary="All"/>
<appSettings>
<!--连接字符串-->
<!--<add key="ConnectionString" value="Server=.;Database=EProjectDB;Integrated Security=False; User ID=sa;Password=1111;MultipleActiveResultSets=true;Max Pool Size = 1000;Connect Timeout=1200"/>-->
<!--系统名称-->
<add key="clientId" value="9fceb83b-fe0b-4374-8a94-6ee1ea46b2b6"/>
<add key="clientSecret" value="7LI8Q~EfN~XB26vvDzLUaJlH8Uq.CG9p-JA5KbcY"/>
<add key="redirect_url" value="https://eproject.basf-ypc.net.cn/ssocallback.aspx"/>
<add key="SystemName" value="EProject"/>
<add key="ChartImageHandler" value="storage=file;timeout=20;url=~/Images/;"/>
<add key="aspnet:MaxHttpCollectionKeys" value="50000"/>
<add key="Https" value="true"/>
<add key="LdapUrl" value="10.4.21.240"/>
</appSettings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
可在 <httpRuntime> 标记上设置以下特性。
<system.Web>
<httpRuntime targetFramework="4.6.1" />
</system.Web>
-->
<system.web>
<!-- 会话状态设置 默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。若要禁用 Cookie,请设置 sessionState cookieless="true" -->
<sessionState mode="InProc" cookieless="UseCookies" timeout="1200"/>
<!--<processModel enable="true" requestQueueLimit="100000"/>-->
<pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" viewStateEncryptionMode="Always">
<controls>
<add tagPrefix="f" namespace="FineUIPro" assembly="FineUIPro"/>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>
</pages>
<httpModules>
<add name="FineUIProScriptModule" type="FineUIPro.ScriptModule, FineUIPro"/>
</httpModules>
<httpHandlers>
<add path="res.axd" verb="GET" type="FineUIPro.ResourceHandler, FineUIPro" validate="false"/>
<add path="ChartImg.axd" verb="GET,POST,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" validate="false"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.8">
<assemblies>
<!--<add assembly="Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />-->
<!--<add assembly="Microsoft.ReportViewer.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>-->
</assemblies>
<!--<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
</buildProviders>-->
</compilation>
<httpRuntime requestValidationMode="2.0" maxRequestLength="2147483647" executionTimeout="36000" requestPathInvalidCharacters=""/>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name="PUBLISHERCOOKIE" protection="All" timeout="1440" path="/"/>
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
</providers>
</roleManager>
<customErrors defaultRedirect="LogOff.aspx" mode="RemoteOnly">
<error redirect="https://localhost/hjgl/OperationError.aspx" statusCode="404"/>
</customErrors>
<!--Unencrypted __VIEWSTATE parameterviewstate 保存没有加密,解决方法-->
<machineKey validation="3DES" compatibilityMode="Framework20SP1"/>
<!--Body Parameters Accepted in Query:https才能访问-->
<!--<httpCookies httpOnlyCookies="true" requireSSL="true"/>-->
</system.web>
<location path="res.axd"/>
<system.webServer>
<!--重定向HTTPS-->
<!--<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>-->
<staticContent>
<mimeMap fileExtension=".dat" mimeType="application/ChinaExcel Report File"/>
<mimeMap fileExtension=".tab" mimeType="application/ChinaExcel Report File"/>
</staticContent>
<httpProtocol>
<customHeaders>
<!--<add name="Content-Security-Policy" value="default-src 'self'"/>-->
<remove name="X-Powered-By"/>
<!--SAMEORIGIN表示该页面可以在相同域名页面的 frame 中展示-->
<add name="X-XSS-Protection" value="1;mode=block"/>
<add name="X-Frame-Options" value="SAMEORIGIN"/>
<add name="X-Content-Type-Options" value="nosniff"/>
<add name="Strict-Transport-Security" value="max-age=31536000"/>
</customHeaders>
</httpProtocol>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add name="FineUIProScriptModule" type="FineUIPro.ScriptModule, FineUIPro"/>
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="ChartImageHandler"/>
<add name="FineUIProResourceHandler" verb="GET" path="res.axd" type="FineUIPro.ResourceHandler, FineUIPro"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</handlers>
<defaultDocument>
<files>
<add value="Login.aspx"/>
</files>
</defaultDocument>
<httpErrors>
<remove statusCode="403" subStatusCode="-1"/>
<error statusCode="403" prefixLanguageFilePath="https://localhost/Eproject/" path="OperationError.aspx" responseMode="File"/>
</httpErrors>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.5.1" newVersion="4.0.5.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.4.2.13" newVersion="1.4.2.13"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+15 -3
View File
@@ -1,19 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BouncyCastle.Cryptography" version="2.3.1" targetFramework="net48" />
<package id="Enums.NET" version="4.0.1" targetFramework="net48" />
<package id="ExtendedNumerics.BigDecimal" version="2025.1001.2.129" targetFramework="net48" />
<package id="MathNet.Numerics.Signed" version="5.0.0" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net48" />
<package id="Microsoft.IdentityModel.Abstractions" version="7.6.2" targetFramework="net48" />
<package id="Microsoft.IdentityModel.Logging" version="7.6.2" targetFramework="net48" />
<package id="Microsoft.IdentityModel.Tokens" version="7.6.2" targetFramework="net48" />
<package id="Microsoft.IO.RecyclableMemoryStream" version="3.0.0" targetFramework="net48" />
<package id="Microsoft.ReportingServices.ReportViewerControl.WebForms" version="150.900.148" targetFramework="net40" />
<package id="Microsoft.SqlServer.Types" version="14.0.1016.290" targetFramework="net40" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net461" />
<package id="NPOI" version="2.5.5" targetFramework="net461" />
<package id="NPOI" version="2.7.1" targetFramework="net48" />
<package id="Portable.BouncyCastle" version="1.8.9" targetFramework="net461" />
<package id="SharpZipLib" version="1.3.2" targetFramework="net461" />
<package id="SharpZipLib" version="1.4.2" targetFramework="net48" />
<package id="SixLabors.Fonts" version="1.0.1" targetFramework="net48" />
<package id="SixLabors.ImageSharp" version="3.1.5" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net48" />
<package id="System.Security.Cryptography.Pkcs" version="6.0.3" targetFramework="net48" />
<package id="System.Security.Cryptography.Xml" version="6.0.1" targetFramework="net48" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
<package id="System.Text.Encoding.CodePages" version="8.0.0" targetFramework="net48" />
<package id="System.Text.Encodings.Web" version="4.7.2" targetFramework="net48" />
<package id="System.Text.Json" version="4.7.2" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />