semi1Count.ashx 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <%@ WebHandler Language="C#" Class="semi1Count" %>
  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 semi1Count : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. //成型(质量)、半检一检(质量)、改洗(质量)、半检二检(质量)、施釉(质量)、烧成(质量)、分级一检(质量)、功能检测(质量)
  19. string dashBoardName = "成型(质量)";
  20. //11:小时质量 21:日质量 31:月质量 41:年质量
  21. int planType = 11;
  22. using(IDataAccess conn = DataAccess.Create())
  23. {
  24. //成型累计
  25. if (context.Request["m"] == "total") {
  26. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  27. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  28. string sqlStr = @"
  29. SELECT
  30. T1.不良数 AS NUM2 ,
  31. T2.总数 - T1.不良数 AS NUM1 ,
  32. ROUND(T1.不良数 / DECODE(NVL(T2.总数,0),0,1,T2.总数),2) * 100 AS UNQUALIFIED,
  33. ROUND((T2.总数 - T1.不良数) / DECODE(NVL(T2.总数,0),0,1,T2.总数),2) * 100 AS QUALIFIED
  34. FROM
  35. (
  36. SELECT
  37. '1' AS 外键,
  38. count( DISTINCT s.barcode ) AS 不良数
  39. FROM
  40. TP_PM_SEMICHECK s
  41. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  42. WHERE
  43. s.BACKOUTFLAG = 0
  44. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  45. AND s.PROCEDUREID <> 117
  46. AND s.VALUEFLAG = 1
  47. AND s.CREATETIME >= @DATEBEGIN@
  48. AND s.CREATETIME < @DATEEND@
  49. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  50. ) T1
  51. INNER JOIN
  52. (
  53. SELECT '1' AS 外键, COUNT( DISTINCT BARCODE ) AS 总数
  54. FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID IN (88,92,118) AND VALUEFLAG = 1 AND CREATETIME >= @DATEBEGIN@ AND CREATETIME < @DATEEND@ AND instr(GROUTINGLINENAME, 'C' ) = 1
  55. ) T2
  56. ON T1.外键 = T2.外键
  57. ";
  58. //获取查询条件
  59. List<CDAParameter> sqlPara = new List<CDAParameter>();
  60. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  61. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  62. //直接获取不分页数据
  63. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  64. string jsonStr = new JsonResult(dt).ToJson();
  65. context.Response.Write(jsonStr);
  66. };
  67. //成型缺陷统计
  68. if (context.Request["m"] == "defectname") {
  69. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  70. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  71. string sqlStr = @"
  72. SELECT
  73. t.*,
  74. ROWNUM
  75. FROM
  76. (
  77. SELECT
  78. sd.DEFECTNAME,
  79. count( DISTINCT s.barcode ) as DTOTAL
  80. FROM
  81. TP_PM_SEMICHECK s
  82. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  83. WHERE
  84. s.PROCEDUREID <> 117
  85. AND s.BACKOUTFLAG = 0
  86. AND s.VALUEFLAG = 1
  87. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  88. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  89. AND s.CREATETIME >= @DATEBEGIN@
  90. AND s.CREATETIME < @DATEEND@
  91. GROUP BY
  92. sd.DEFECTNAME
  93. ORDER BY
  94. DTOTAL DESC
  95. ) t
  96. WHERE
  97. ROWNUM < 6
  98. ";
  99. //获取查询条件
  100. List<CDAParameter> sqlPara = new List<CDAParameter>();
  101. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  102. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  103. //直接获取不分页数据
  104. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  105. string jsonStr = new JsonResult(dt).ToJson();
  106. context.Response.Write(jsonStr);
  107. };
  108. //成型位置累计
  109. if (context.Request["m"] == "defectposition") {
  110. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  111. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  112. string sqlStr = @"
  113. SELECT
  114. t.*,
  115. ROWNUM
  116. FROM
  117. (
  118. SELECT
  119. sd.DEFECTPOSITIONNAME,
  120. count( DISTINCT s.barcode ) AS PTOTAL
  121. FROM
  122. TP_PM_SEMICHECK s
  123. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  124. WHERE
  125. s.PROCEDUREID <> 117
  126. AND s.BACKOUTFLAG = 0
  127. AND s.VALUEFLAG = 1
  128. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  129. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  130. AND s.CREATETIME >= @DATEBEGIN@
  131. AND s.CREATETIME < @DATEEND@
  132. GROUP BY
  133. sd.DEFECTPOSITIONNAME
  134. ORDER BY
  135. PTOTAL DESC
  136. ) t
  137. WHERE
  138. ROWNUM < 6
  139. ";
  140. //获取查询条件
  141. List<CDAParameter> sqlPara = new List<CDAParameter>();
  142. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  143. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  144. //直接获取不分页数据
  145. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  146. string jsonStr = new JsonResult(dt).ToJson();
  147. context.Response.Write(jsonStr);
  148. };
  149. //成型产品累计
  150. if (context.Request["m"] == "goodscode") {
  151. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  152. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  153. string sqlStr = @"
  154. SELECT
  155. t.*,
  156. ROWNUM
  157. FROM
  158. (
  159. SELECT
  160. s.GOODSCODE,
  161. count( DISTINCT s.barcode ) AS GTOTAL
  162. FROM
  163. TP_PM_SEMICHECK s
  164. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  165. WHERE
  166. s.PROCEDUREID <> 117
  167. AND s.BACKOUTFLAG = 0
  168. AND s.VALUEFLAG = 1
  169. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  170. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  171. AND s.CREATETIME >= @DATEBEGIN@
  172. AND s.CREATETIME < @DATEEND@
  173. GROUP BY
  174. s.goodscode
  175. ORDER BY
  176. GTOTAL DESC
  177. ) t
  178. WHERE
  179. ROWNUM < 6
  180. ";
  181. //获取查询条件
  182. List<CDAParameter> sqlPara = new List<CDAParameter>();
  183. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  184. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  185. //直接获取不分页数据
  186. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  187. string jsonStr = new JsonResult(dt).ToJson();
  188. context.Response.Write(jsonStr);
  189. };
  190. //成型线号累计
  191. if (context.Request["m"] == "groutingline") {
  192. string dateBegin = DateTime.Now.ToString("yyyy-MM-01 00:00:00");
  193. string dateEnd = DateTime.Now.AddMonths(1).ToString("yyyy-MM-01 00:00:00");
  194. string sqlStr = @"
  195. SELECT
  196. t.*,
  197. ROWNUM
  198. FROM
  199. (
  200. SELECT
  201. s.GROUTINGLINENAME,
  202. count( DISTINCT s.barcode ) AS LTOTAL
  203. FROM
  204. TP_PM_SEMICHECK s
  205. LEFT JOIN TP_PM_SEMICHECKDEFECT sd ON s.SEMICHECKID = sd.SEMICHECKID
  206. WHERE
  207. s.PROCEDUREID <> 117
  208. AND s.BACKOUTFLAG = 0
  209. AND s.VALUEFLAG = 1
  210. AND sd.DEFECTPROCEDUREID IN ( 88, 92, 118 )
  211. AND instr( s.GROUTINGLINENAME, 'C' ) = 1
  212. AND s.CREATETIME >= @DATEBEGIN@
  213. AND s.CREATETIME < @DATEEND@
  214. GROUP BY
  215. s.GROUTINGLINENAME
  216. ORDER BY
  217. LTOTAL DESC
  218. ) t
  219. WHERE
  220. ROWNUM < 6
  221. ";
  222. //获取查询条件
  223. List<CDAParameter> sqlPara = new List<CDAParameter>();
  224. sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  225. sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  226. //直接获取不分页数据
  227. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  228. string jsonStr = new JsonResult(dt).ToJson();
  229. context.Response.Write(jsonStr);
  230. };
  231. }
  232. }
  233. public decimal toNumber(object o)
  234. {
  235. if (o != DBNull.Value)
  236. return Convert.ToDecimal(o);
  237. else
  238. return 0;
  239. }
  240. public bool IsReusable
  241. {
  242. get
  243. {
  244. return false;
  245. }
  246. }
  247. }