semi2dayCount.ashx 9.4 KB

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