This commit is contained in:
2025-11-17 20:31:58 +08:00
25 changed files with 4343 additions and 272 deletions
+19
View File
@@ -227,6 +227,25 @@ namespace BLL
return getDataLists;
}
}
#endregion
#region
/// <summary>
/// 根据类型获取巡检隐患类型表
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public static List<Model.BaseInfoItem> getHazardRegisterTypes2(string type)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getDataLists = (from x in Funs.DB.Technique_CheckItemSet
where x.CheckType == "2" && x.SupCheckItem == type
orderby x.MapCode
select new Model.BaseInfoItem { BaseInfoId = x.CheckItemSetId, BaseInfoCode = x.MapCode, BaseInfoName = x.CheckItemName }).ToList();
return getDataLists;
}
}
#endregion
#region id获取项目图片
+1
View File
@@ -747,6 +747,7 @@
<Compile Include="TaskScheduling\TimerTask\CustomJobListener.cs" />
<Compile Include="TaskScheduling\TimerTask\TaskJob.cs" />
<Compile Include="TaskScheduling\TimerTask\TimerTaskBase.cs" />
<Compile Include="TokenHelper.cs" />
<Compile Include="WebService\CNCECHSSEWebService.cs" />
<Compile Include="WebService\FileStructService.cs" />
<Compile Include="ZHGL\ConstructionMonthReport\ConstructionMonthReportMainCostService.cs" />
@@ -40,7 +40,9 @@ namespace BLL
/// <returns></returns>
public static IEnumerable getListData(string projectId, string states, string checkType, string checkItemSetId, DateTime? startTime, DateTime? endTime, Grid Grid1)
{
IQueryable<Model.Check_CheckSpecial> getDataList = getDataLists;
Model.SGGLDB db = Funs.DB;
IQueryable<Model.Check_CheckSpecial> getDataList = from x in db.Check_CheckSpecial
select x;
if (!string.IsNullOrEmpty(projectId))
{
getDataList = getDataList.Where(e => e.ProjectId == projectId);
@@ -87,7 +89,7 @@ namespace BLL
x.CheckSpecialId,
x.CheckTime,
x.CheckSpecialCode,
CheckItemName = Funs.DB.Technique_CheckItemSet.First(y => y.CheckItemSetId == x.CheckItemSetId).CheckItemName,
CheckItemName = db.Technique_CheckItemSet.First(y => y.CheckItemSetId == x.CheckItemSetId).CheckItemName,
CheckTypeName = x.CheckType == "1" ? "联合检查" : "专项检查",
StatesName = x.States == "2" ? "已完成" : (x.States == "1" ? "待整改" : "待提交"),
};
@@ -45,7 +45,9 @@ namespace BLL
/// <returns></returns>
public static IEnumerable getListData(string projectId, string startTime, string endTime, Grid Grid1)
{
IQueryable<Model.Check_ProjectLeaderCheck> getDataList = getDataLists;
Model.SGGLDB db = Funs.DB;
IQueryable<Model.Check_ProjectLeaderCheck> getDataList = from x in db.Check_ProjectLeaderCheck
select x;
if (!string.IsNullOrEmpty(projectId))
{
getDataList = getDataList.Where(x => x.ProjectId == projectId);
@@ -72,16 +74,15 @@ namespace BLL
return null;
}
getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
var db1 = Funs.DB;
return from x in getDataList
join y in db1.Base_Project on x.ProjectId equals y.ProjectId
join y in db.Base_Project on x.ProjectId equals y.ProjectId
into ps
from y in ps.DefaultIfEmpty()
select new
{
x.ProjectLeaderCheckId,
x.ProjectId,
db1.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName,
db.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName,
x.CheckCode,
x.UnitIds,
x.LeaderIds,
+127
View File
@@ -0,0 +1,127 @@
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using Newtonsoft.Json;
namespace BLL
{
/// <summary>
/// Token加密解密工具类
/// 用于iframe跨域自动登录的token处理
/// </summary>
public static class TokenHelper
{
// 默认密钥,建议从配置文件中读取
private static readonly string SecretKey = "cncec-subqhse-256bit-secret-key-for-auth-token";
/// <summary>
/// 加密Token
/// </summary>
/// <param name="plainText">明文</param>
/// <returns>加密后的Base64字符串</returns>
public static string EncryptToken(string plainText)
{
try
{
// 确保密钥长度为32字节(256位)
string key = SecretKey.PadRight(32, '0').Substring(0, 32);
using (var aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // 使用固定IV,简化实现
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
using (var encryptor = aes.CreateEncryptor())
using (var msEncrypt = new MemoryStream())
{
using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
using (var swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
catch (Exception ex)
{
throw new Exception($"Token加密失败: {ex.Message}", ex);
}
}
/// <summary>
/// 解密Token
/// </summary>
/// <param name="cipherText">加密的Base64字符串</param>
/// <returns>解密后的明文</returns>
public static string DecryptToken(string cipherText)
{
try
{
// 确保密钥长度为32字节(256位)
string key = SecretKey.PadRight(32, '0').Substring(0, 32);
using (var aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // 使用固定IV,与加密一致
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
using (var decryptor = aes.CreateDecryptor())
using (var msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText)))
using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (var srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
catch (Exception ex)
{
throw new Exception($"Token解密失败: {ex.Message}", ex);
}
}
/// <summary>
/// 生成认证Token
/// </summary>
/// <param name="userId">用户ID</param>
/// <param name="source">来源标识</param>
/// <returns>加密的Token</returns>
public static string GenerateAuthToken(string userId, string source = "qhse.cncecoa.com")
{
var tokenData = new
{
user_id = userId,
timestamp = DateTimeOffset.Now.ToUnixTimeSeconds(),
source = source,
random = Guid.NewGuid().ToString("N").Substring(0, 8) // 添加8位随机数增强安全性
};
string json = JsonConvert.SerializeObject(tokenData);
return EncryptToken(json);
}
/// <summary>
/// 验证Token格式
/// </summary>
/// <param name="token">Token字符串</param>
/// <returns>是否为有效的Base64格式</returns>
public static bool IsValidTokenFormat(string token)
{
try
{
Convert.FromBase64String(token);
return true;
}
catch
{
return false;
}
}
}
}
+1 -1
View File
@@ -705,7 +705,7 @@ namespace BLL
InspectionLotNum = inspectionLotNum.Sum(x => x.Sum),
ConstructSolutionNum = constructSolutionList.Count(),
ConstructSolutionProjectApproveNum = constructSolutionList.Where(x => x.State == "1").Count(),
ConstructSolutionProjectApproveNum = constructSolutionList.Where(x => x.State == "3").Count(),
ConstructSolutionUnitApproveNum = comprehensiveMajorPlanList.Count(),
SpecialEquipmentQualityAssuranceSystemNum = qualityAssuranceNum.Count(),
DesignDetailsNum = technicalDisclosePersonList.Count(),
+155 -1
View File
@@ -3865,7 +3865,8 @@ namespace BLL
/// <returns></returns>
public static List<LicenseOutput> GetLicenses()
{
var result = (from x in Funs.DB.View_License_LicenseManager
List<LicenseOutput> result = new List<LicenseOutput>();
var result1 = (from x in Funs.DB.View_License_LicenseManager
where BeUnderConstructionList.Contains(x.ProjectId) && x.IsHighRisk == true &&
x.CompileDate > Const.DtmarkTime
select new Model.LicenseOutput
@@ -3884,6 +3885,159 @@ namespace BLL
EndDate = x.EndDate,
WorkStatesStr = ""
}).ToList();
var result2 = (from x in Funs.DB.License_FireWork
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.FireWorkId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "动火作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result3 = (from x in Funs.DB.License_HeightWork
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.HeightWorkId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "高处作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result4 = (from x in Funs.DB.License_LimitedSpace
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.LimitedSpaceId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "受限空间作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result5 = (from x in Funs.DB.License_RadialWork
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.RadialWorkId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "射线作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result6 = (from x in Funs.DB.License_OpenCircuit
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.OpenCircuitId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "断路(占道)作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result7 = (from x in Funs.DB.License_BreakGround
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.BreakGroundId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "动土作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result8 = (from x in Funs.DB.License_NightWork
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.NightWorkId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "夜间施工作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
var result9 = (from x in Funs.DB.License_LiftingWork
where BeUnderConstructionList.Contains(x.ProjectId)
select new Model.LicenseOutput
{
Id = x.LiftingWorkId,
ProjectId = x.ProjectId,
ProjectName = ProjectService.GetProjectNameByProjectId(x.ProjectId),
UnitId = x.ApplyUnitId,
UnitName = UnitService.GetUnitNameByUnitId(x.ApplyUnitId),
LicenseTypeName = "吊装作业票",
UnitTypeName = "",
IsHighRisk = false,
WorkAreaName = "",
CompileDate = x.ApplyDate,
StartDate = x.ValidityStartTime,
EndDate = x.ValidityEndTime,
WorkStatesStr = ""
}).ToList();
result.AddRange(result1);
result.AddRange(result2);
result.AddRange(result3);
result.AddRange(result4);
result.AddRange(result5);
result.AddRange(result6);
result.AddRange(result7);
result.AddRange(result8);
result.AddRange(result9);
return result;
}
public static async Task<List<LicenseOutput>> GetLicensesAsync()