rpt.ashx 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using Curtain.DataAccess;
  7. using DK.XuWei.WebMes;
  8. public class rpt : IHttpHandler, IReadOnlySessionState
  9. {
  10. public void ProcessRequest(HttpContext context)
  11. {
  12. context.Response.ContentType = "text/plain";
  13. using (IDataAccess conn = DataAccess.Create())
  14. {
  15. if (context.Request["m"].ToString() == "table1")
  16. {
  17. string sqlStr = @"
  18. SELECT
  19. TT.GOODSCODE,
  20. TT.NUM1,
  21. TT.NUM2,
  22. TT.REACH
  23. FROM(
  24. SELECT
  25. GOODSCODE,
  26. NUM1,
  27. NUM2,
  28. RATE || '%' AS REACH
  29. FROM
  30. (
  31. SELECT
  32. PD.GOODSCODE,
  33. COUNT( PD.BARCODE ) AS NUM1,
  34. COUNT(T2.BARCODE) AS NUM2,
  35. 100 * ROUND( ( COUNT( PD.BARCODE ) - NVL( COUNT(T2.BARCODE), 0 ) ) / COUNT( PD.BARCODE ), 3 ) AS RATE
  36. FROM
  37. TP_PM_PRODUCTIONDATA PD
  38. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  39. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  40. LEFT JOIN (
  41. SELECT
  42. D.GOODSCODE,
  43. PD.BARCODE
  44. FROM
  45. TP_PM_DEFECT D
  46. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  47. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  48. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  49. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  50. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  51. WHERE
  52. D.VALUEFLAG = 1
  53. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  54. AND D.CREATETIME >= trunc(sysdate, 'mm')
  55. AND D.CREATETIME <= trunc(sysdate)
  56. AND PD.ISREFIRE = 0
  57. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  58. AND DT.DEFECTTYPENAME LIKE '成型%'
  59. AND PD.CHECKBATCHNO = 1
  60. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  61. ) T2 ON PD.BARCODE = T2.BARCODE
  62. WHERE
  63. PD.PROCEDUREID = 104 AND PD.ISREFIRE = 0 AND PD.CHECKFLAG = 1
  64. AND PD.CREATETIME >= trunc(sysdate, 'mm')
  65. --AND PD.CREATETIME <= sysdate
  66. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  67. GROUP BY
  68. PD.GOODSCODE
  69. )
  70. ORDER BY
  71. TO_NUMBER( RATE ) DESC )TT WHERE ROWNUM < 11 ORDER BY TT.REACH DESC";
  72. //直接获取不分页数据
  73. DataTable dt = conn.ExecuteDatatable(sqlStr);
  74. string jsonStr = new JsonResult(dt).ToJson();
  75. context.Response.Write(jsonStr);
  76. }
  77. else if (context.Request["m"].ToString() == "table2")
  78. {
  79. string sqlStr = @"
  80. SELECT
  81. TT.GOODSCODE,
  82. TT.NUM1,
  83. TT.NUM2,
  84. TT.REACH
  85. FROM
  86. (
  87. SELECT
  88. GOODSCODE,
  89. NUM1,
  90. NUM2,
  91. RATE || '%' AS REACH
  92. FROM
  93. (
  94. SELECT
  95. PD.GOODSCODE,
  96. COUNT( PD.BARCODE ) AS NUM1,
  97. COUNT( T2.BARCODE ) AS NUM2,
  98. 100 * ROUND(
  99. ( COUNT( PD.BARCODE ) - NVL( COUNT( T2.BARCODE ), 0 ) ) / COUNT( PD.BARCODE ),
  100. 3
  101. ) AS RATE
  102. FROM
  103. TP_PM_PRODUCTIONDATA PD
  104. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  105. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  106. LEFT JOIN (
  107. SELECT
  108. D.GOODSCODE,
  109. PD.BARCODE
  110. FROM
  111. TP_PM_DEFECT D
  112. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  113. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  114. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  115. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  116. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  117. WHERE
  118. D.VALUEFLAG = 1
  119. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  120. AND D.CREATETIME >= trunc( SYSDATE, 'mm' )
  121. AND D.CREATETIME <= SYSDATE
  122. AND PD.ISREFIRE = 0
  123. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  124. AND DT.DEFECTTYPENAME LIKE '%改洗%'
  125. AND PD.CHECKBATCHNO = 1
  126. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  127. ) T2 ON PD.BARCODE = T2.BARCODE
  128. WHERE
  129. (
  130. PD.PROCEDUREID = 104
  131. AND PD.ISREFIRE = 0
  132. AND PD.CHECKFLAG = 1
  133. )
  134. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  135. AND PD.CREATETIME <= SYSDATE
  136. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  137. GROUP BY
  138. PD.GOODSCODE
  139. )
  140. ORDER BY
  141. TO_NUMBER( RATE ) ASC
  142. ) TT
  143. WHERE
  144. ROWNUM < 11 ORDER BY TT.REACH DESC";
  145. //直接获取不分页数据
  146. DataTable dt = conn.ExecuteDatatable(sqlStr);
  147. string jsonStr = new JsonResult(dt).ToJson();
  148. context.Response.Write(jsonStr);
  149. }
  150. else if (context.Request["m"].ToString() == "table3")
  151. {
  152. string sqlStr = @"
  153. SELECT
  154. TT.GOODSCODE,
  155. TT.NUM1,
  156. TT.NUM2,
  157. TT.REACH
  158. FROM
  159. (
  160. SELECT
  161. GOODSCODE,
  162. NUM1,
  163. NUM2,
  164. RATE || '%' AS REACH
  165. FROM
  166. (
  167. SELECT
  168. PD.GOODSCODE,
  169. COUNT( PD.BARCODE ) AS NUM1,
  170. COUNT( T2.BARCODE ) AS NUM2,
  171. 100 * ROUND(
  172. ( COUNT( PD.BARCODE ) - NVL( COUNT( T2.BARCODE ), 0 ) ) / COUNT( PD.BARCODE ),
  173. 3
  174. ) AS RATE
  175. FROM
  176. TP_PM_PRODUCTIONDATA PD
  177. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  178. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  179. LEFT JOIN (
  180. SELECT
  181. D.GOODSCODE,
  182. PD.BARCODE
  183. FROM
  184. TP_PM_DEFECT D
  185. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  186. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  187. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  188. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  189. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  190. WHERE
  191. D.VALUEFLAG = 1
  192. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  193. AND D.CREATETIME >= trunc( SYSDATE, 'mm' )
  194. AND D.CREATETIME <= SYSDATE
  195. AND PD.ISREFIRE = 0
  196. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  197. AND DT.DEFECTTYPENAME LIKE '%成型/检验%'
  198. AND PD.CHECKBATCHNO = 1
  199. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  200. ) T2 ON PD.BARCODE = T2.BARCODE
  201. WHERE
  202. (
  203. PD.PROCEDUREID = 104
  204. AND PD.ISREFIRE = 0
  205. AND PD.CHECKFLAG = 1
  206. )
  207. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  208. AND PD.CREATETIME <= SYSDATE
  209. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  210. GROUP BY
  211. PD.GOODSCODE
  212. )
  213. ORDER BY
  214. TO_NUMBER( RATE ) ASC
  215. ) TT
  216. WHERE
  217. ROWNUM < 11 ORDER BY TT.REACH DESC";
  218. //直接获取不分页数据
  219. DataTable dt = conn.ExecuteDatatable(sqlStr);
  220. string jsonStr = new JsonResult(dt).ToJson();
  221. context.Response.Write(jsonStr);
  222. }
  223. else if (context.Request["m"].ToString() == "table4")
  224. {
  225. string sqlStr = @"
  226. SELECT
  227. TT.GOODSCODE,
  228. TT.NUM1,
  229. TT.NUM2,
  230. TT.REACH
  231. FROM
  232. (
  233. SELECT
  234. GOODSCODE,
  235. NUM1,
  236. NUM2,
  237. RATE || '%' AS REACH
  238. FROM
  239. (
  240. SELECT
  241. PD.GOODSCODE,
  242. COUNT( PD.BARCODE ) AS NUM1,
  243. COUNT( T2.BARCODE ) AS NUM2,
  244. 100 * ROUND(
  245. ( COUNT( PD.BARCODE ) - NVL( COUNT( T2.BARCODE ), 0 ) ) / COUNT( PD.BARCODE ),
  246. 3
  247. ) AS RATE
  248. FROM
  249. TP_PM_PRODUCTIONDATA PD
  250. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  251. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  252. LEFT JOIN (
  253. SELECT
  254. D.GOODSCODE,
  255. PD.BARCODE
  256. FROM
  257. TP_PM_DEFECT D
  258. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  259. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  260. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  261. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  262. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  263. WHERE
  264. D.VALUEFLAG = 1
  265. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  266. AND D.CREATETIME >= trunc( SYSDATE, 'mm' )
  267. AND D.CREATETIME <= SYSDATE
  268. AND PD.ISREFIRE = 0
  269. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  270. AND DT.DEFECTTYPENAME LIKE '%施釉%'
  271. AND PD.CHECKBATCHNO = 1
  272. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  273. ) T2 ON PD.BARCODE = T2.BARCODE
  274. WHERE
  275. (
  276. PD.PROCEDUREID = 104
  277. AND PD.ISREFIRE = 0
  278. AND PD.CHECKFLAG = 1
  279. )
  280. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  281. AND PD.CREATETIME <= SYSDATE
  282. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  283. GROUP BY
  284. PD.GOODSCODE
  285. )
  286. ORDER BY
  287. TO_NUMBER( RATE ) ASC
  288. ) TT
  289. WHERE
  290. ROWNUM < 11 ORDER BY TT.REACH DESC";
  291. //直接获取不分页数据
  292. DataTable dt = conn.ExecuteDatatable(sqlStr);
  293. string jsonStr = new JsonResult(dt).ToJson();
  294. context.Response.Write(jsonStr);
  295. }
  296. else if (context.Request["m"].ToString() == "table5")
  297. {
  298. string sqlStr = @"
  299. SELECT
  300. TT.GOODSCODE,
  301. TT.NUM1,
  302. TT.NUM2,
  303. TT.REACH
  304. FROM
  305. (
  306. SELECT
  307. GOODSCODE,
  308. NUM1,
  309. NUM2,
  310. RATE || '%' AS REACH
  311. FROM
  312. (
  313. SELECT
  314. PD.GOODSCODE,
  315. COUNT( PD.BARCODE ) AS NUM1,
  316. COUNT( T2.BARCODE ) AS NUM2,
  317. 100 * ROUND(
  318. ( COUNT( PD.BARCODE ) - NVL( COUNT( T2.BARCODE ), 0 ) ) / COUNT( PD.BARCODE ),
  319. 3
  320. ) AS RATE
  321. FROM
  322. TP_PM_PRODUCTIONDATA PD
  323. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  324. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  325. LEFT JOIN (
  326. SELECT
  327. D.GOODSCODE,
  328. PD.BARCODE
  329. FROM
  330. TP_PM_DEFECT D
  331. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  332. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  333. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  334. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  335. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  336. WHERE
  337. D.VALUEFLAG = 1
  338. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  339. AND D.CREATETIME >= trunc( SYSDATE, 'mm' )
  340. AND D.CREATETIME <= SYSDATE
  341. AND PD.ISREFIRE = 0
  342. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  343. AND DT.DEFECTTYPENAME IN ('刮边','登窑')
  344. AND PD.CHECKBATCHNO = 1
  345. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  346. ) T2 ON PD.BARCODE = T2.BARCODE
  347. WHERE
  348. (
  349. PD.PROCEDUREID = 104
  350. AND PD.ISREFIRE = 0
  351. AND PD.CHECKFLAG = 1
  352. )
  353. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  354. AND PD.CREATETIME <= SYSDATE
  355. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  356. GROUP BY
  357. PD.GOODSCODE
  358. )
  359. ORDER BY
  360. TO_NUMBER( RATE ) ASC
  361. ) TT
  362. WHERE
  363. ROWNUM < 11 ORDER BY TT.REACH DESC" ;
  364. //直接获取不分页数据
  365. DataTable dt = conn.ExecuteDatatable(sqlStr);
  366. string jsonStr = new JsonResult(dt).ToJson();
  367. context.Response.Write(jsonStr);
  368. }
  369. else if (context.Request["m"].ToString() == "table6")
  370. {
  371. string sqlStr = @"
  372. SELECT
  373. TT.GOODSCODE,
  374. TT.NUM1,
  375. TT.NUM2,
  376. TT.REACH
  377. FROM
  378. (
  379. SELECT
  380. GOODSCODE,
  381. NUM1,
  382. NUM2,
  383. RATE || '%' AS REACH
  384. FROM
  385. (
  386. SELECT
  387. PD.GOODSCODE,
  388. COUNT( PD.BARCODE ) AS NUM1,
  389. COUNT( T2.BARCODE ) AS NUM2,
  390. 100 * ROUND(
  391. ( COUNT( PD.BARCODE ) - NVL( COUNT( T2.BARCODE ), 0 ) ) / COUNT( PD.BARCODE ),
  392. 3
  393. ) AS RATE
  394. FROM
  395. TP_PM_PRODUCTIONDATA PD
  396. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  397. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  398. LEFT JOIN (
  399. SELECT
  400. D.GOODSCODE,
  401. PD.BARCODE
  402. FROM
  403. TP_PM_DEFECT D
  404. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  405. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  406. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  407. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  408. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  409. WHERE
  410. D.VALUEFLAG = 1
  411. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  412. AND D.CREATETIME >= trunc( SYSDATE, 'mm' )
  413. AND D.CREATETIME <= SYSDATE
  414. AND PD.ISREFIRE = 0
  415. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  416. AND DT.DEFECTTYPENAME LIKE '%烧成%'
  417. AND PD.CHECKBATCHNO = 1
  418. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  419. ) T2 ON PD.BARCODE = T2.BARCODE
  420. WHERE
  421. (
  422. PD.PROCEDUREID = 104
  423. AND PD.ISREFIRE = 0
  424. AND PD.CHECKFLAG = 1
  425. )
  426. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  427. AND PD.CREATETIME <= SYSDATE
  428. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  429. GROUP BY
  430. PD.GOODSCODE
  431. )
  432. ORDER BY
  433. TO_NUMBER( RATE ) ASC
  434. ) TT
  435. WHERE
  436. ROWNUM < 11 ORDER BY TT.REACH DESC";
  437. //直接获取不分页数据
  438. DataTable dt = conn.ExecuteDatatable(sqlStr);
  439. string jsonStr = new JsonResult(dt).ToJson();
  440. context.Response.Write(jsonStr);
  441. }
  442. else if (context.Request["m"].ToString() == "procedureday")
  443. {
  444. string sqlStr = @"WITH PD AS (
  445. SELECT
  446. 1 AS FK,
  447. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '成型%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 成型一检,
  448. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%改洗%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 改洗,
  449. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%检验%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 二检,
  450. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%施釉%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 施釉,
  451. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME IN ( '刮边', '登窑' ) THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 刮登,
  452. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%烧成%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 烧成
  453. FROM
  454. TP_PM_DEFECT D
  455. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  456. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  457. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  458. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  459. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  460. WHERE
  461. D.VALUEFLAG = 1
  462. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  463. AND D.CREATETIME >= TRUNC( SYSDATE )
  464. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  465. AND PD.CHECKBATCHNO = 1
  466. AND PD.ISREFIRE = 0
  467. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  468. ),
  469. OUTPUT AS (
  470. SELECT
  471. 1 AS FK,
  472. COUNT( * ) AS 出窑数
  473. FROM
  474. TP_PM_PRODUCTIONDATA PD
  475. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  476. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  477. WHERE
  478. (
  479. PD.PROCEDUREID = 104
  480. AND PD.ISREFIRE = 0
  481. AND PD.CHECKFLAG = 1
  482. )
  483. AND PD.CREATETIME >= TRUNC( SYSDATE )
  484. AND PD.CREATETIME < TRUNC( SYSDATE ) + 1
  485. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  486. )
  487. SELECT
  488. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.成型一检 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 成型一检,
  489. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.改洗 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 改洗,
  490. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.二检 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 二检,
  491. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.施釉 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 施釉,
  492. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.刮登 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 刮登,
  493. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.烧成 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 烧成
  494. FROM
  495. OUTPUT INNER JOIN PD ON OUTPUT.FK = PD.FK";
  496. //直接获取不分页数据
  497. DataTable dt = conn.ExecuteDatatable(sqlStr);
  498. string jsonStr = new JsonResult(dt).ToJson();
  499. context.Response.Write(jsonStr);
  500. }
  501. else if (context.Request["m"].ToString() == "proceduremonth")
  502. {
  503. string sqlStr = @"
  504. WITH PD AS (
  505. SELECT
  506. 1 AS FK,
  507. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '成型%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 成型一检,
  508. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%改洗%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 改洗,
  509. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%检验%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 二检,
  510. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%施釉%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 施釉,
  511. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME IN ( '刮边', '登窑' ) THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 刮登,
  512. COUNT( DISTINCT CASE WHEN DT.DEFECTTYPENAME LIKE '%烧成%' THEN TO_CHAR(D.BARCODE) ELSE NULL END ) AS 烧成
  513. FROM
  514. TP_PM_DEFECT D
  515. INNER JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  516. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  517. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  518. LEFT JOIN TP_MST_DEFECT MSTD ON D.DEFECTID = MSTD.DEFECTID
  519. LEFT JOIN TP_MST_DEFECTTYPE DT ON MSTD.DEFECTTYPEID = DT.DEFECTTYPEID
  520. WHERE
  521. D.VALUEFLAG = 1
  522. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  523. AND D.CREATETIME >= TRUNC(SYSDATE, 'MM')
  524. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  525. AND PD.CHECKBATCHNO = 1
  526. AND PD.ISREFIRE = 0
  527. AND D.DEFECTDEDUCTIONNUM IN ( 1, 2, 5 )
  528. ),
  529. OUTPUT AS (
  530. SELECT
  531. 1 AS FK,
  532. COUNT( * ) AS 出窑数
  533. FROM
  534. TP_PM_PRODUCTIONDATA PD
  535. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  536. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  537. WHERE
  538. (
  539. PD.PROCEDUREID = 104
  540. AND PD.ISREFIRE = 0
  541. AND PD.CHECKFLAG = 1
  542. )
  543. AND PD.CREATETIME >= TRUNC(SYSDATE, 'MM')
  544. AND PD.CREATETIME < TRUNC( SYSDATE ) + 1
  545. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  546. )
  547. SELECT
  548. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.成型一检 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 成型一检,
  549. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.改洗 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 改洗,
  550. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.二检 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 二检,
  551. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.施釉 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 施釉,
  552. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.刮登 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 刮登,
  553. TO_NUMBER(DECODE( OUTPUT.出窑数, 0, '0', ROUND( ( OUTPUT.出窑数 - PD.烧成 ) / OUTPUT.出窑数, 3 ) * 100 )) AS 烧成
  554. FROM
  555. OUTPUT INNER JOIN PD ON OUTPUT.FK = PD.FK";
  556. //直接获取不分页数据
  557. DataTable dt = conn.ExecuteDatatable(sqlStr);
  558. string jsonStr = new JsonResult(dt).ToJson();
  559. context.Response.Write(jsonStr);
  560. }
  561. }
  562. }
  563. public decimal toNumber(object o)
  564. {
  565. if (o != DBNull.Value)
  566. return Convert.ToDecimal(o);
  567. else
  568. return 0;
  569. }
  570. public bool IsReusable
  571. {
  572. get
  573. {
  574. return false;
  575. }
  576. }
  577. }