217 lines
12 KiB
C#
217 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace BLL
|
|
{
|
|
public static class APIMessagePushService
|
|
{
|
|
#region 推送的热处理委托单
|
|
/// <summary>
|
|
/// 推送的热处理委托单
|
|
/// </summary>
|
|
/// <param name="userId">登陆的用户ID</param>
|
|
/// <returns></returns>
|
|
public static List<Model.BaseInfoItem> GetPushHotTrust(string userId)
|
|
{
|
|
// 用户参与的项目
|
|
string projectIds = BLL.Base_ProjectService.GetStrProjectIds(userId, "1");
|
|
string strSql = @"SELECT pro.ProjectCode,t.HotProessTrustNo,t.ProessDate FROM dbo.HotProess_Trust t
|
|
LEFT JOIN dbo.Base_Project pro ON pro.ProjectId = t.ProjectId
|
|
WHERE CHARINDEX(t.ProjectId,@ProjectId)>0 AND
|
|
(SELECT COUNT(*) FROM dbo.HotProess_TrustItem item WHERE item.HotProessTrustId=t.HotProessTrustId )!=
|
|
(SELECT COUNT(*) FROM dbo.HotProess_TrustItem item WHERE item.HotProessTrustId=t.HotProessTrustId AND item.IsPass IS NOT NULL)";
|
|
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
listStr.Add(new SqlParameter("@ProjectId", projectIds));
|
|
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
|
|
List<Model.BaseInfoItem> pushTrust = new List<Model.BaseInfoItem>();
|
|
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
Model.BaseInfoItem item = new Model.BaseInfoItem();
|
|
item.BaseInfoId= row["ProjectCode"].ToString();
|
|
item.BaseInfoCode = row["HotProessTrustNo"].ToString();
|
|
item.BaseInfoName = row["ProessDate"].ToString();
|
|
pushTrust.Add(item);
|
|
}
|
|
|
|
return pushTrust;
|
|
}
|
|
#endregion
|
|
|
|
#region 推送的NDE检测委托单
|
|
/// <summary>
|
|
/// 推送的NDE检测委托单
|
|
/// </summary>
|
|
/// <param name="userId">登陆的用户ID</param>
|
|
/// <returns></returns>
|
|
public static List<Model.BaseInfoItem> GetPushNDTTrust(string userId)
|
|
{
|
|
// 用户参与的项目
|
|
string projectIds = BLL.Base_ProjectService.GetStrProjectIds(userId, "1");
|
|
string strSql = @"SELECT pro.ProjectCode,batch.TrustBatchCode,batch.TrustDate FROM dbo.Batch_BatchTrust batch
|
|
LEFT JOIN dbo.Base_Project pro ON pro.ProjectId = batch.ProjectId
|
|
WHERE batch.TrustBatchId NOT IN (SELECT TrustBatchId FROM dbo.Batch_NDE )
|
|
AND CHARINDEX(batch.ProjectId,@ProjectId)>0";
|
|
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
listStr.Add(new SqlParameter("@ProjectId", projectIds));
|
|
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
|
|
List<Model.BaseInfoItem> pushTrust = new List<Model.BaseInfoItem>();
|
|
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
Model.BaseInfoItem item = new Model.BaseInfoItem();
|
|
item.BaseInfoId = row["ProjectCode"].ToString();
|
|
item.BaseInfoCode = row["TrustBatchCode"].ToString();
|
|
item.BaseInfoName = row["TrustDate"].ToString();
|
|
pushTrust.Add(item);
|
|
}
|
|
|
|
return pushTrust;
|
|
}
|
|
#endregion
|
|
|
|
#region 焊工一次合格率低于96%预警
|
|
/// <summary>
|
|
/// 焊工一次合格率低于96%预警
|
|
/// </summary>
|
|
/// <param name="projectArea">项目区域</param>
|
|
/// <returns></returns>
|
|
public static List<Model.BaseInfoItem> GetWelderOnePassRateWarning(string projectArea)
|
|
{
|
|
|
|
string strSql = @"SELECT (w.WelderCode+'('+w.WelderName+')') AS Welder,pro.ProjectCode,
|
|
CONVERT(NVARCHAR(10),(CAST((CASE ISNULL(oneCheck.OneCheckJotNum,0) WHEN 0 THEN 0
|
|
ELSE 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.oneCheckRepairJotNum,0))/(1.0 * oneCheck.OneCheckJotNum) END) AS DECIMAL(8,1))))+'%' AS passRate
|
|
FROM dbo.Welder_ProjectWelder AS welder
|
|
LEFT JOIN dbo.Welder_Welder w ON w.WelderId = welder.WelderId
|
|
LEFT JOIN dbo.Base_Project pro ON pro.ProjectId = welder.ProjectId
|
|
|
|
LEFT JOIN (SELECT jot.CoverWelderId,jot.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum
|
|
FROM dbo.Batch_NDEItem ndeItem
|
|
LEFT JOIN dbo.Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
|
|
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
|
|
LEFT JOIN dbo.Pipeline_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
|
LEFT JOIN dbo.Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
|
|
LEFT JOIN dbo.Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
|
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
|
|
GROUP BY jot.ProjectId, jot.CoverWelderId) AS oneCheck ON oneCheck.CoverWelderId = welder.WelderId AND oneCheck.ProjectId=welder.ProjectId
|
|
|
|
LEFT JOIN (SELECT jot.CoverWelderId,jot.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
|
|
FROM dbo.Batch_NDEItem ndeItem
|
|
LEFT JOIN dbo.Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
|
|
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
|
|
LEFT JOIN dbo.Pipeline_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
|
LEFT JOIN dbo.Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
|
|
LEFT JOIN dbo.Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
|
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
|
|
AND ndeItem.CheckResult='2'
|
|
GROUP BY jot.ProjectId, jot.CoverWelderId) AS oneCheckRepair
|
|
ON oneCheckRepair.CoverWelderId = welder.WelderId AND oneCheckRepair.ProjectId=welder.ProjectId
|
|
|
|
WHERE (w.WelderCode IS NOT NULL AND w.WelderCode!='')
|
|
AND pro.ProjectArea=@ProjectArea
|
|
AND ISNULL(oneCheck.OneCheckJotNum,0)>0
|
|
AND (CAST((CASE ISNULL(oneCheck.OneCheckJotNum,0) WHEN 0 THEN 0
|
|
ELSE 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.oneCheckRepairJotNum,0))/(1.0 * oneCheck.OneCheckJotNum) END) AS DECIMAL(8,1)))<=96";
|
|
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
|
|
listStr.Add(new SqlParameter("@ProjectArea", projectArea));
|
|
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
|
|
List<Model.BaseInfoItem> warnWelder = new List<Model.BaseInfoItem>();
|
|
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
Model.BaseInfoItem item = new Model.BaseInfoItem();
|
|
item.BaseInfoId= row["ProjectCode"].ToString();
|
|
item.BaseInfoCode = row["Welder"].ToString();
|
|
item.BaseInfoName = "一次合格率:" + row["passRate"].ToString();
|
|
warnWelder.Add(item);
|
|
}
|
|
|
|
return warnWelder;
|
|
}
|
|
#endregion
|
|
|
|
#region 施工单位一次合格率低于96%预警
|
|
/// <summary>
|
|
/// 施工单位一次合格率低于96%预警
|
|
/// </summary>
|
|
/// <param name="projectArea">项目区域</param>
|
|
/// <returns></returns>
|
|
public static List<Model.BaseInfoItem> GetUnitOnePassRateWarning(string projectArea)
|
|
{
|
|
|
|
string strSql = @"SELECT unit.UnitName,pro.ProjectCode,
|
|
CONVERT(NVARCHAR(10),(CAST((CASE ISNULL(oneCheck.OneCheckJotNum,0) WHEN 0 THEN 0
|
|
ELSE 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.oneCheckRepairJotNum,0))/(1.0 * oneCheck.OneCheckJotNum) END) AS DECIMAL(8,1))))+'%' AS passRate
|
|
FROM dbo.Project_Unit AS pUnit
|
|
LEFT JOIN dbo.Base_Unit unit ON unit.UnitId = pUnit.UnitId
|
|
LEFT JOIN dbo.Base_Project pro ON pro.ProjectId = pUnit.ProjectId
|
|
|
|
LEFT JOIN (SELECT point.UnitId,jot.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum
|
|
FROM dbo.Batch_NDEItem ndeItem
|
|
LEFT JOIN dbo.Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
|
|
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
|
|
LEFT JOIN dbo.Pipeline_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
|
LEFT JOIN dbo.Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
|
|
LEFT JOIN dbo.Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
|
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
|
|
GROUP BY jot.ProjectId, point.UnitId) AS oneCheck ON oneCheck.UnitId = pUnit.UnitId AND oneCheck.ProjectId=pUnit.ProjectId
|
|
|
|
LEFT JOIN (SELECT point.UnitId,jot.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
|
|
FROM dbo.Batch_NDEItem ndeItem
|
|
LEFT JOIN dbo.Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
|
|
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
|
|
LEFT JOIN dbo.Pipeline_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
|
LEFT JOIN dbo.Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
|
|
LEFT JOIN dbo.Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
|
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
|
|
AND ndeItem.CheckResult='2'
|
|
GROUP BY jot.ProjectId, point.UnitId) AS oneCheckRepair
|
|
ON oneCheckRepair.UnitId = pUnit.UnitId AND oneCheckRepair.ProjectId=pUnit.ProjectId
|
|
|
|
WHERE CHARINDEX(pUnit.UnitType,'5')>0
|
|
AND ISNULL(oneCheck.OneCheckJotNum,0)>0
|
|
AND pro.ProjectArea=@ProjectArea
|
|
AND (CAST((CASE ISNULL(oneCheck.OneCheckJotNum,0) WHEN 0 THEN 0
|
|
ELSE 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.oneCheckRepairJotNum,0))/(1.0 * oneCheck.OneCheckJotNum) END) AS DECIMAL(8,1)))<=96";
|
|
|
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|
|
|
listStr.Add(new SqlParameter("@ProjectArea", projectArea));
|
|
|
|
SqlParameter[] parameter = listStr.ToArray();
|
|
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|
|
|
List<Model.BaseInfoItem> warnWelder = new List<Model.BaseInfoItem>();
|
|
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
Model.BaseInfoItem item = new Model.BaseInfoItem();
|
|
item.BaseInfoId = row["ProjectCode"].ToString();
|
|
item.BaseInfoCode = row["UnitName"].ToString();
|
|
item.BaseInfoName = "一次合格率:" + row["passRate"].ToString();
|
|
warnWelder.Add(item);
|
|
}
|
|
|
|
return warnWelder;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|