rpt_today.ashx 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  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 rpt : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. using(IDataAccess conn = DataAccess.Create())
  19. {
  20. //当天实时数据
  21. //生产效率
  22. if (context.Request["m"].ToString() == "efficiency")
  23. {
  24. int pid1 = 0;
  25. int pid2 = 0;
  26. string procedurename = "";
  27. string procedurecount = "";
  28. if (context.Request["procedure"].ToString() == "成型") {
  29. //读取报表数据
  30. string sqlStr = @"
  31. SELECT
  32. '成型' AS 工序,
  33. T1.日实际生产数,
  34. T2.CXCOUNT AS 人数,
  35. ROUND(T1.日实际生产数/DECODE(T2.CXCOUNT,0,1,T2.CXCOUNT),0) AS 生产效率
  36. FROM
  37. (
  38. SELECT
  39. 1 AS WJ,
  40. COUNT( DISTINCT BARCODE ) AS 日实际生产数
  41. FROM
  42. TP_PM_GROUTINGDAILYDETAIL
  43. WHERE
  44. VALUEFLAG = 1
  45. AND GROUTINGFLAG = 1
  46. AND SCRAPFLAG = 0
  47. AND INSTR( GROUTINGLINECODE, 'C' ) = 1
  48. AND CREATETIME >= TRUNC( SYSDATE )
  49. AND CREATETIME < TRUNC( SYSDATE ) + 1
  50. AND GOODSCODE IN ( 'H0962L-A', 'H0967L-W', 'H0966M-W', 'H0967M-W', 'H0966L-W', 'H0962M-A' )
  51. )T1
  52. INNER JOIN
  53. (
  54. SELECT 1 AS WJ,
  55. CXCOUNT
  56. FROM
  57. TP_RPT_PROCEDURESTAFFSCOUNT
  58. )T2
  59. ON T1.WJ = T2.WJ
  60. ";
  61. DataTable dt0 = conn.ExecuteDatatable(sqlStr);
  62. string jsonStr = new JsonResult(dt0).ToJson();
  63. context.Response.Write(jsonStr);
  64. }
  65. else
  66. {
  67. if (context.Request["procedure"].ToString() == "一检")
  68. {
  69. pid1 = 88; pid2 = 92;
  70. //读取报表数据
  71. string sqlStr = @"
  72. SELECT
  73. '一检' AS 工序,
  74. T1.日实际生产数,
  75. T2.YJCOUNT AS 人数,
  76. ROUND(T1.日实际生产数/DECODE(T2.YJCOUNT,0,1,T2.YJCOUNT),0) AS 生产效率
  77. FROM
  78. (
  79. SELECT
  80. 1 AS WJ,
  81. COUNT(DISTINCT BARCODE) AS 日实际生产数
  82. FROM
  83. TP_PM_PRODUCTIONDATA
  84. WHERE
  85. VALUEFLAG = 1
  86. AND
  87. (PROCEDUREID = @PID1@ OR PROCEDUREID = @PID2@)
  88. AND
  89. CREATETIME >= TRUNC(SYSDATE)
  90. AND
  91. CREATETIME < TRUNC(SYSDATE)+1
  92. AND
  93. GOODSCODE IN ('H0962L-A','H0967L-W','H0966M-W','H0967M-W','H0966L-W','H0962M-A')
  94. )T1
  95. INNER JOIN
  96. (
  97. SELECT 1 AS WJ,
  98. YJCOUNT
  99. FROM
  100. TP_RPT_PROCEDURESTAFFSCOUNT
  101. )T2
  102. ON T1.WJ = T2.WJ
  103. ";
  104. //获取查询条件
  105. List<CDAParameter> sqlPara = new List<CDAParameter>();
  106. sqlPara.Add(new CDAParameter("PID1", pid1));
  107. sqlPara.Add(new CDAParameter("PID2", pid2));
  108. //直接获取不分页数据
  109. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  110. string jsonStr = new JsonResult(dt).ToJson();
  111. context.Response.Write(jsonStr);
  112. }
  113. else {
  114. if (context.Request["procedure"].ToString() == "改洗") { pid1 = 94; procedurename = "改洗"; procedurecount = "GXCOUNT"; }
  115. if (context.Request["procedure"].ToString() == "二检") { pid1 = 117; procedurename = "二检"; procedurecount = "EJCOUNT"; }
  116. if (context.Request["procedure"].ToString() == "施釉") { pid1 = 98; procedurename = "施釉"; procedurecount = "SYCOUNT"; }
  117. if (context.Request["procedure"].ToString() == "烧成") { pid1 = 103; procedurename = "烧成"; procedurecount = "SCCOUNT"; }
  118. if (context.Request["procedure"].ToString() == "成检") { pid1 = 104; procedurename = "成检"; procedurecount = "CJCOUNT"; }
  119. string sqlStr = @"
  120. SELECT
  121. TO_CHAR(@PROCEDURENAME@) AS 工序,
  122. T1.日实际生产数,
  123. T2.{PROCEDURECOUNT} AS 人数,
  124. ROUND(T1.日实际生产数/DECODE(T2.{PROCEDURECOUNT},0,1,T2.{PROCEDURECOUNT}),0) AS 生产效率
  125. FROM
  126. (
  127. SELECT
  128. 1 AS WJ,
  129. COUNT(DISTINCT BARCODE) AS 日实际生产数
  130. FROM
  131. TP_PM_PRODUCTIONDATA
  132. WHERE
  133. VALUEFLAG = 1
  134. AND
  135. PROCEDUREID = @PID1@
  136. AND
  137. CREATETIME >= TRUNC(SYSDATE)
  138. AND
  139. CREATETIME < TRUNC(SYSDATE)+1
  140. AND
  141. GOODSCODE IN ('H0962L-A','H0967L-W','H0966M-W','H0967M-W','H0966L-W','H0962M-A')
  142. )T1
  143. INNER JOIN
  144. (
  145. SELECT 1 AS WJ,
  146. {PROCEDURECOUNT}
  147. FROM
  148. TP_RPT_PROCEDURESTAFFSCOUNT
  149. )T2
  150. ON T1.WJ = T2.WJ
  151. ".Replace("{PROCEDURECOUNT}",procedurecount+"");
  152. //获取查询条件
  153. List<CDAParameter> sqlPara = new List<CDAParameter>();
  154. sqlPara.Add(new CDAParameter("PID1", pid1));
  155. sqlPara.Add(new CDAParameter("PROCEDURENAME", procedurename));
  156. //sqlPara.Add(new CDAParameter("PROCEDURECOUNT", procedurecount));
  157. //直接获取不分页数据
  158. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  159. string jsonStr = new JsonResult(dt).ToJson();
  160. context.Response.Write(jsonStr);
  161. }
  162. }
  163. }
  164. else if (context.Request["m"].ToString() == "people")
  165. {
  166. string sqlStr = @"
  167. SELECT
  168. CXCOUNT AS 成型,
  169. YJCOUNT AS 一检,
  170. GXCOUNT AS 改洗,
  171. EJCOUNT AS 二检,
  172. SYCOUNT AS 施釉,
  173. SCCOUNT AS 烧成,
  174. CJCOUNT AS 成检,
  175. CXCOUNT+YJCOUNT+GXCOUNT+EJCOUNT+SYCOUNT+SCCOUNT+CJCOUNT AS 总人数
  176. FROM
  177. TP_RPT_PROCEDURESTAFFSCOUNT
  178. ";
  179. //获取查询条件
  180. //直接获取不分页数据
  181. DataTable dt = conn.ExecuteDatatable(sqlStr);
  182. string jsonStr = new JsonResult(dt).ToJson();
  183. context.Response.Write(jsonStr);
  184. }
  185. }
  186. }
  187. public decimal toNumber(object o)
  188. {
  189. if (o != DBNull.Value)
  190. return Convert.ToDecimal(o);
  191. else
  192. return 0;
  193. }
  194. public bool IsReusable
  195. {
  196. get
  197. {
  198. return false;
  199. }
  200. }
  201. }