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
 | 
						|
    }
 | 
						|
}
 |