defect.ashx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <%@ WebHandler Language="C#" Class="defect" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class defect : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. string dashBoardName = "改洗(质量)";
  19. int planType = 11;
  20. using(IDataAccess conn = DataAccess.Create())
  21. {
  22. string dateBegin = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
  23. string dateEnd = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
  24. string sqlStr = @"
  25. WITH
  26. MES AS (
  27. SELECT
  28. pass.时间,
  29. NVL( ROUND( pass.不合格数 / DECODE( pass.检验数, 0, 1, pass.检验数 ), 2 ), 0 ) AS 不合格率半检
  30. FROM
  31. (
  32. SELECT
  33. TO_NUMBER( TO_CHAR( P.CREATETIME, 'HH24' ) ) AS 时间,
  34. SUM( CASE WHEN ( P.PROCEDUREID =117 ) THEN 1 ELSE 0 END ) AS 检验数,
  35. SUM(
  36. CASE
  37. WHEN ( S.PROCEDUREID = 93 OR S.PROCEDUREID = 94 )
  38. AND S.SEMICHECKTYPE = 2
  39. AND S.GOODSLEVELTYPEID = 13 --非必填但是有数据可以查
  40. AND S.VALUEFLAG = 1
  41. AND S.BACKOUTFLAG = 0 THEN
  42. 1 ELSE 0
  43. END
  44. ) AS 不合格数
  45. FROM
  46. TP_PM_PRODUCTIONDATA P
  47. LEFT JOIN TP_PM_SEMICHECK S ON P.PRODUCTIONDATAID = S.PRODUCTIONDATAID
  48. WHERE
  49. P.VALUEFLAG = 1
  50. AND P.CREATETIME >= @DATEBEGIN@
  51. AND P.CREATETIME < @DATEEND@
  52. GROUP BY
  53. TO_NUMBER( TO_CHAR( P.CREATETIME, 'HH24' ) )
  54. ) pass
  55. ORDER BY 时间
  56. ),
  57. PLAN AS (
  58. SELECT
  59. P.PLANNAME AS 项目,
  60. P.PLANHOUR AS 时间,
  61. P.PLANNUM AS 不良率指标
  62. FROM
  63. TP_MST_DASHBOARD_PLAN P
  64. INNER JOIN TP_MST_DASHBOARD B ON P.DASHBOARDID = B.DASHBOARDID
  65. AND B.DASHBOARDNAME = @DASHBOARDNAME@
  66. AND P.PLANTYPE = @PLANTYPE@
  67. AND TO_NUMBER( TO_CHAR( SYSDATE, 'YYYY' ) ) = P.PLANYEAR
  68. AND TO_NUMBER( TO_CHAR( SYSDATE, 'MM' ) ) = P.PLANMONTH
  69. AND TO_NUMBER( TO_CHAR( SYSDATE, 'DD' ) ) = P.PLANDAY
  70. )
  71. SELECT
  72. PLAN.项目,
  73. PLAN.时间,
  74. NVL(PLAN.不良率指标,0) AS 不良率指标,
  75. NVL(MES.不合格率半检,0) AS 不良率
  76. FROM
  77. PLAN LEFT JOIN MES ON PLAN.时间 = MES.时间
  78. ORDER BY 时间
  79. ";
  80. //获取查询条件
  81. List<CDAParameter> sqlPara = new List<CDAParameter>();
  82. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  83. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  84. sqlPara.Add(new CDAParameter("DASHBOARDNAME", dashBoardName.ToString()));
  85. sqlPara.Add(new CDAParameter("PLANTYPE", Convert.ToInt32(planType)));
  86. //直接获取不分页数据
  87. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  88. string jsonStr = new JsonResult(dt).ToJson();
  89. context.Response.Write(jsonStr);
  90. }
  91. }
  92. public decimal toNumber(object o)
  93. {
  94. if (o != DBNull.Value)
  95. return Convert.ToDecimal(o);
  96. else
  97. return 0;
  98. }
  99. public bool IsReusable
  100. {
  101. get
  102. {
  103. return false;
  104. }
  105. }
  106. }