rpt2.ashx 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  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. if (context.Request["m"].ToString() == "defectw")
  22. {
  23. string sqlStr = @"SELECT T.name AS 缺陷位置,T.count AS 缺陷数量 FROM(
  24. SELECT
  25. TMDP.S_NAME name,
  26. COUNT( * ) count
  27. FROM
  28. TP_PM_DEFECT TPD
  29. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  30. LEFT JOIN TP_MST_DEFECTPOSITION TMDP ON TPD.DEFECTPOSITIONID = TMDP.DEFECTPOSITIONID
  31. WHERE
  32. TPD.CREATETIME >= TRUNC( SYSDATE )
  33. AND TPD.VALUEFLAG = 1
  34. AND TMD.DEFECTTYPEID IN (1,13)
  35. GROUP BY
  36. TMDP.S_NAME
  37. ORDER BY
  38. COUNT( * ) DESC)T WHERE ROWNUM < 4";
  39. //直接获取不分页数据
  40. DataTable dt = conn.ExecuteDatatable(sqlStr);
  41. string jsonStr = new JsonResult(dt).ToJson();
  42. context.Response.Write(jsonStr);
  43. }
  44. //烧成缺陷扇形图
  45. if (context.Request["m"].ToString() == "defect")
  46. {
  47. string sqlStr = @"SELECT T.name as 缺陷名称,T.count as 数量 FROM(
  48. SELECT
  49. TMD.S_name name,
  50. COUNT( * ) count
  51. FROM
  52. TP_PM_DEFECT TPD
  53. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  54. WHERE
  55. TPD.CHECKTIME >= TRUNC( SYSDATE )
  56. AND TPD.VALUEFLAG = 1
  57. AND TMD.DEFECTTYPEID IN (1,13)
  58. GROUP BY
  59. TMD.S_name
  60. ORDER BY
  61. COUNT( * ) DESC)T WHERE ROWNUM < 4";
  62. //直接获取不分页数据
  63. DataTable dt = conn.ExecuteDatatable(sqlStr);
  64. string jsonStr = new JsonResult(dt).ToJson();
  65. context.Response.Write(jsonStr);
  66. }
  67. //车间设备状态扇形图
  68. if (context.Request["m"].ToString() == "defectb")
  69. {
  70. string sqlStr = @"SELECT
  71. T.S_NAME AS 缺陷名称,
  72. T.数量
  73. FROM
  74. (
  75. SELECT
  76. TMD.S_NAME,
  77. count( * ) AS 数量
  78. FROM
  79. TP_PM_DEFECT TPD
  80. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  81. WHERE
  82. TPD.CREATETIME >= TRUNC( SYSDATE )
  83. AND TMD.DEFECTTYPEID IN ( 15,16,18,4 )
  84. GROUP BY
  85. TMD.S_NAME
  86. ORDER BY
  87. count( * ) DESC
  88. ) T
  89. WHERE
  90. ROWNUM < 4";
  91. //直接获取不分页数据
  92. DataTable dt = conn.ExecuteDatatable(sqlStr);
  93. string jsonStr = new JsonResult(dt).ToJson();
  94. context.Response.Write(jsonStr);
  95. }
  96. //本烧合格率折线图
  97. if (context.Request["m"].ToString() == "zx")
  98. {
  99. string sqlStr = @"SELECT
  100. TO_CHAR(ROUND( T4.本烧合格 / T4.本烧数量,4) * 100, '9,999.00' ) || '%' AS 合格率,
  101. T4.本烧合格 as 本烧合格数,
  102. SUBSTR(T4.CREATETIME,5,2 )||'.'||SUBSTR(T4.CREATETIME,7,2 ) AS 日期
  103. FROM
  104. (
  105. SELECT
  106. T1.本烧数量,
  107. T2.本烧不合格数量,
  108. T1.本烧数量 - T2.本烧不合格数量 AS 本烧合格,
  109. T1.CREATETIME
  110. FROM
  111. (
  112. SELECT DISTINCT--本烧数量
  113. COUNT( TPPD.BARCODE ) 本烧数量,
  114. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  115. FROM
  116. TP_PM_PRODUCTIONDATA TPPD
  117. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  118. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  119. WHERE
  120. TPPD.PROCEDUREID IN ( 104 )
  121. AND TPPD.ISREFIRE = 0
  122. AND PGD.TESTFLAG = 0
  123. AND TPPD.VALUEFLAG = 1
  124. AND TPPD.checkflag = '1'
  125. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  126. GROUP BY
  127. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  128. ORDER BY
  129. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  130. ) T1
  131. LEFT JOIN (
  132. SELECT
  133. to_char( T1.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
  134. COUNT( T1.BARCODE ) AS 本烧不合格数量
  135. FROM
  136. (
  137. SELECT DISTINCT
  138. T.BARCODE,
  139. TPPD.CREATETIME
  140. FROM
  141. TP_PM_PRODUCTIONDATA TPPD
  142. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  143. LEFT JOIN (
  144. SELECT
  145. TPPD.BARCODE
  146. FROM
  147. TP_PM_PRODUCTIONDATA TPPD
  148. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  149. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  150. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  151. WHERE
  152. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  153. AND TPPD.GOODSLEVELID IN ( 6, 7 )
  154. AND TPPD.CHECKBATCHNO = 1
  155. AND TPGL.TESTFLAG = 0
  156. AND TMD.DEFECTTYPEID <> 14
  157. AND TPPD.VALUEFLAG = 1
  158. AND TPPD.ISREFIRE = 0
  159. ) T ON T.BARCODE = TPPD.BARCODE
  160. WHERE
  161. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  162. AND TPPD.PROCEDUREID IN ( 104 )
  163. AND length( TPPD.kilncarbatchno ) > 0
  164. AND TPGL.TESTFLAG = 0
  165. AND TPPD.VALUEFLAG = 1
  166. AND TPPD.ISREFIRE = 0
  167. ) T1
  168. GROUP BY
  169. to_char( T1.CREATETIME, 'yyyymmdd' )
  170. ORDER BY
  171. to_char( T1.CREATETIME, 'yyyymmdd' ) DESC
  172. ) T2 ON T2.CREATETIME = T1.CREATETIME
  173. ORDER BY
  174. CREATETIME DESC)T4 ORDER BY T4.CREATETIME";
  175. //直接获取不分页数据
  176. DataTable dt = conn.ExecuteDatatable(sqlStr);
  177. string jsonStr = new JsonResult(dt).ToJson();
  178. context.Response.Write(jsonStr);
  179. }
  180. //主表
  181. if(context.Request["m"].ToString()=="tk")
  182. {
  183. string dateBegin = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
  184. string dateEnd = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
  185. //读取报表数据
  186. string sqlStr = @"
  187. SELECT KK.*
  188. ,KCG.BARCODE
  189. ,G.GOODSCODE
  190. ,D.DICTIONARYVALUE KILNCARPOSITION
  191. FROM (SELECT ROWNUM KNO
  192. ,K.*
  193. FROM (SELECT KCS.KILNCARID
  194. ,KC.KILNCARCODE
  195. ,KC.KILNCARNUM
  196. ,KCS.UPDATETIME INTIME
  197. FROM TP_PM_KILNCARSTATUS KCS
  198. INNER JOIN TP_MST_KILNCAR KC
  199. ON KC.KILNCARID = KCS.KILNCARID
  200. WHERE KCS.MODELTYPE = 2
  201. AND KCS.KILNID = 5
  202. ORDER BY KCS.UPDATETIME DESC) K
  203. WHERE ROWNUM <= 93) KK
  204. INNER JOIN TP_PM_KILNCARGOODS KCG
  205. ON KCG.KILNCARID = KK.KILNCARID
  206. INNER JOIN TP_MST_GOODS G
  207. ON G.GOODSID = KCG.GOODSID
  208. INNER JOIN TP_MST_DATADICTIONARY D
  209. ON D.DICTIONARYID = KCG.KILNCARPOSITION
  210. ORDER BY KK.KNO
  211. ,D.DICTIONARYVALUE
  212. ,G.GOODSCODE
  213. ";
  214. //获取查询条件
  215. List<CDAParameter> sqlPara = new List<CDAParameter>();
  216. //sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  217. //sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  218. //获取分页参数
  219. //int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
  220. //int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
  221. //string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "";
  222. //string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
  223. //获取分页数据
  224. //int total = 0;
  225. //DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
  226. //string jsonStr = new JsonResult(dt) { total = total }.ToJson();
  227. //直接获取不分页数据
  228. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  229. string jsonStr = new JsonResult(dt).ToJson();
  230. context.Response.Write(jsonStr);
  231. }
  232. if(context.Request["m"].ToString()=="hg1")
  233. {
  234. string dateBegin = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
  235. string dateEnd = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
  236. //读取报表数据
  237. string sqlStr = @"
  238. SELECT KK.*
  239. ,KCG.BARCODE
  240. ,G.GOODSCODE
  241. ,D.DICTIONARYVALUE KILNCARPOSITION
  242. FROM (SELECT ROWNUM KNO
  243. ,K.*
  244. FROM (SELECT T.KILNCARID
  245. ,KC.KILNCARCODE
  246. ,KC.KILNCARNUM
  247. ,T.UPDATETIME INTIME
  248. FROM TP_PM_KILNCARSTATUS T
  249. INNER JOIN TP_MST_KILNCAR KC
  250. ON KC.KILNCARID = T.KILNCARID
  251. WHERE T.MODELTYPE = 1
  252. AND T.KILNID = 5
  253. AND (T.UPDATEUSERID = 1512 OR T.UPDATEUSERID = 1557)
  254. ORDER BY T.UPDATETIME DESC) K
  255. WHERE ROWNUM <= 44) KK
  256. INNER JOIN TP_PM_KILNCARGOODS KCG
  257. ON KCG.KILNCARID = KK.KILNCARID
  258. INNER JOIN TP_MST_GOODS G
  259. ON G.GOODSID = KCG.GOODSID
  260. INNER JOIN TP_MST_DATADICTIONARY D
  261. ON D.DICTIONARYID = KCG.KILNCARPOSITION
  262. ORDER BY KK.KNO
  263. ,D.DICTIONARYVALUE
  264. ,G.GOODSCODE
  265. ";
  266. //获取查询条件
  267. List<CDAParameter> sqlPara = new List<CDAParameter>();
  268. //sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  269. //sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  270. //获取分页参数
  271. //int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
  272. //int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
  273. //string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "";
  274. //string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
  275. //获取分页数据
  276. //int total = 0;
  277. //DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
  278. //string jsonStr = new JsonResult(dt) { total = total }.ToJson();
  279. //直接获取不分页数据
  280. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  281. string jsonStr = new JsonResult(dt).ToJson();
  282. context.Response.Write(jsonStr);
  283. }
  284. if(context.Request["m"].ToString()=="hg2")
  285. {
  286. string dateBegin = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
  287. string dateEnd = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
  288. //读取报表数据
  289. string sqlStr = @"
  290. SELECT KK.*
  291. ,KCG.BARCODE
  292. ,G.GOODSCODE
  293. ,D.DICTIONARYVALUE KILNCARPOSITION
  294. FROM (SELECT ROWNUM KNO
  295. ,K.*
  296. FROM (SELECT T.KILNCARID
  297. ,KC.KILNCARCODE
  298. ,KC.KILNCARNUM
  299. ,T.UPDATETIME INTIME
  300. FROM TP_PM_KILNCARSTATUS T
  301. INNER JOIN TP_MST_KILNCAR KC
  302. ON KC.KILNCARID = T.KILNCARID
  303. WHERE T.MODELTYPE = 1
  304. AND T.KILNID = 5
  305. AND (T.UPDATEUSERID = 1513 OR T.UPDATEUSERID = 1558)
  306. ORDER BY T.UPDATETIME DESC) K
  307. WHERE ROWNUM <= 44) KK
  308. INNER JOIN TP_PM_KILNCARGOODS KCG
  309. ON KCG.KILNCARID = KK.KILNCARID
  310. INNER JOIN TP_MST_GOODS G
  311. ON G.GOODSID = KCG.GOODSID
  312. INNER JOIN TP_MST_DATADICTIONARY D
  313. ON D.DICTIONARYID = KCG.KILNCARPOSITION
  314. ORDER BY KK.KNO
  315. ,D.DICTIONARYVALUE
  316. ,G.GOODSCODE
  317. ";
  318. //获取查询条件
  319. List<CDAParameter> sqlPara = new List<CDAParameter>();
  320. //sqlPara.Add(new CDAParameter("DATEBEGIN", Convert.ToDateTime(dateBegin), DataType.DateTime));
  321. //sqlPara.Add(new CDAParameter("DATEEND", Convert.ToDateTime(dateEnd), DataType.DateTime));
  322. //获取分页参数
  323. //int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
  324. //int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
  325. //string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "";
  326. //string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
  327. //获取分页数据
  328. //int total = 0;
  329. //DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
  330. //string jsonStr = new JsonResult(dt) { total = total }.ToJson();
  331. //直接获取不分页数据
  332. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  333. string jsonStr = new JsonResult(dt).ToJson();
  334. context.Response.Write(jsonStr);
  335. }
  336. }
  337. }
  338. public decimal toNumber(object o)
  339. {
  340. if (o != DBNull.Value)
  341. return Convert.ToDecimal(o);
  342. else
  343. return 0;
  344. }
  345. public bool IsReusable
  346. {
  347. get
  348. {
  349. return false;
  350. }
  351. }
  352. }