demo.ashx 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. <%@ WebHandler Language="C#" Class="demo" %>
  2. using Curtain.DataAccess;
  3. using DK.XuWei.WebMes;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Web;
  9. using System.Web.SessionState;
  10. public class demo : IHttpHandler {
  11. public void ProcessRequest (HttpContext context) {
  12. context.Response.ContentType = "text/plain";
  13. context.Response.ContentType = "text/plain";
  14. using (IDataAccess conn = DataAccess.Create())
  15. {
  16. //精坯库库存
  17. if (context.Request["m"].ToString() == "kc")
  18. {
  19. string sqlStr = @"SELECT
  20. CASE WHEN T.GOODSTYPEID = 3 THEN '连体'
  21. WHEN T.GOODSTYPEID = 18 THEN '智能'
  22. ELSE '其他' END AS 产品类别,
  23. T.count 数量
  24. FROM (
  25. SELECT
  26. GOODSTYPEID,
  27. COUNT( * ) count
  28. FROM
  29. TP_PM_INPRODUCTION TPI
  30. LEFT JOIN TP_MST_GOODS TMG ON TPI.GOODSCODE = TMG.GOODSCODE
  31. WHERE
  32. TPI.PROCEDUREID = 97
  33. GROUP BY
  34. TMG.GOODSTYPEID) T";
  35. //直接获取不分页数据
  36. DataTable dt = conn.ExecuteDatatable(sqlStr);
  37. string jsonStr = new JsonResult(dt).ToJson();
  38. context.Response.Write(jsonStr);
  39. }
  40. //每小时产量折线图
  41. if (context.Request["m"].ToString() == "h")
  42. {
  43. string sqlStr = @"SELECT
  44. T.CREATETIME 日期,
  45. CASE
  46. WHEN TT.一检数量 IS NULL THEN
  47. 0
  48. ELSE
  49. TT.一检数量
  50. END AS 一检产量,
  51. TT2.预期产量
  52. FROM
  53. (
  54. SELECT
  55. 0 半检数量,
  56. '06' AS CREATETIME
  57. FROM
  58. DUAL UNION ALL
  59. SELECT
  60. 0 半检数量,
  61. '07' AS CREATETIME
  62. FROM
  63. DUAL UNION ALL
  64. SELECT
  65. 0 半检数量,
  66. '08' AS CREATETIME
  67. FROM
  68. DUAL UNION ALL
  69. SELECT
  70. 0 半检数量,
  71. '09' AS CREATETIME
  72. FROM
  73. DUAL UNION ALL
  74. SELECT
  75. 0 半检数量,
  76. '10' AS CREATETIME
  77. FROM
  78. DUAL UNION ALL
  79. SELECT
  80. 0 半检数量,
  81. '11' AS CREATETIME
  82. FROM
  83. DUAL UNION ALL
  84. SELECT
  85. 0 半检数量,
  86. '12' AS CREATETIME
  87. FROM
  88. DUAL UNION ALL
  89. SELECT
  90. 0 半检数量,
  91. '13' AS CREATETIME
  92. FROM
  93. DUAL UNION ALL
  94. SELECT
  95. 0 半检数量,
  96. '14' AS CREATETIME
  97. FROM
  98. DUAL UNION ALL
  99. SELECT
  100. 0 半检数量,
  101. '15' AS CREATETIME
  102. FROM
  103. DUAL UNION ALL
  104. SELECT
  105. 0 半检数量,
  106. '16' AS CREATETIME
  107. FROM
  108. DUAL UNION ALL
  109. SELECT
  110. 0 半检数量,
  111. '17' AS CREATETIME
  112. FROM
  113. DUAL UNION ALL
  114. SELECT
  115. 0 半检数量,
  116. '18' AS CREATETIME
  117. FROM
  118. DUAL UNION ALL
  119. SELECT
  120. 0 半检数量,
  121. '19' AS CREATETIME
  122. FROM
  123. DUAL
  124. ) T
  125. FULL JOIN (
  126. SELECT
  127. T2.CREATETIME,
  128. COUNT( * ) 一检数量
  129. FROM
  130. (
  131. SELECT
  132. SUBSTR( TO_CHAR( TPP.CREATETIME, 'yyyy-mm-dd hh24:mi:ss' ), 12, 2 ) AS CREATETIME
  133. FROM
  134. TP_PM_PRODUCTIONDATA TPP
  135. WHERE
  136. TPP.PROCEDUREID IN (117)
  137. AND TPP.VALUEFLAG = 1
  138. AND TPP.CREATETIME >= trunc( SYSDATE )
  139. ) T2
  140. GROUP BY
  141. T2.CREATETIME
  142. ORDER BY
  143. T2.CREATETIME
  144. ) TT ON T.CREATETIME = TT.CREATETIME
  145. FULL JOIN (
  146. SELECT
  147. 0 预期产量,
  148. '06' AS CREATETIME
  149. FROM
  150. DUAL UNION ALL
  151. SELECT
  152. 200 预期产量,
  153. '07' AS CREATETIME
  154. FROM
  155. DUAL UNION ALL
  156. SELECT
  157. 200 预期产量,
  158. '08' AS CREATETIME
  159. FROM
  160. DUAL UNION ALL
  161. SELECT
  162. 200 预期产量,
  163. '09' AS CREATETIME
  164. FROM
  165. DUAL UNION ALL
  166. SELECT
  167. 200 预期产量,
  168. '10' AS CREATETIME
  169. FROM
  170. DUAL UNION ALL
  171. SELECT
  172. 60 预期产量,
  173. '11' AS CREATETIME
  174. FROM
  175. DUAL UNION ALL
  176. SELECT
  177. 200 预期产量,
  178. '12' AS CREATETIME
  179. FROM
  180. DUAL UNION ALL
  181. SELECT
  182. 200 预期产量,
  183. '13' AS CREATETIME
  184. FROM
  185. DUAL UNION ALL
  186. SELECT
  187. 200 预期产量,
  188. '14' AS CREATETIME
  189. FROM
  190. DUAL UNION ALL
  191. SELECT
  192. 200 预期产量,
  193. '15' AS CREATETIME
  194. FROM
  195. DUAL UNION ALL
  196. SELECT
  197. 60 预期产量,
  198. '16' AS CREATETIME
  199. FROM
  200. DUAL UNION ALL
  201. SELECT
  202. 200 预期产量,
  203. '17' AS CREATETIME
  204. FROM
  205. DUAL UNION ALL
  206. SELECT
  207. 200 预期产量,
  208. '18' AS CREATETIME
  209. FROM
  210. DUAL UNION ALL
  211. SELECT
  212. 200 预期产量,
  213. '19' AS CREATETIME
  214. FROM
  215. DUAL
  216. ) TT2 ON T.CREATETIME = TT2.CREATETIME ORDER BY 日期";
  217. //直接获取不分页数据
  218. DataTable dt = conn.ExecuteDatatable(sqlStr);
  219. string jsonStr = new JsonResult(dt).ToJson();
  220. context.Response.Write(jsonStr);
  221. }
  222. //工号产量柱状图
  223. if (context.Request["m"].ToString() == "cl")
  224. {
  225. string sqlStr = @"SELECT
  226. TMU.USERCODE 工号,
  227. COUNT( * ) 产量
  228. FROM
  229. TP_PM_PRODUCTIONDATA TPP
  230. LEFT JOIN TP_MST_USER TMU ON TPP.CREATEUSERID = TMU.USERID
  231. WHERE
  232. TPP.PROCEDUREID IN (117)
  233. AND TPP.CREATETIME >= trunc( SYSDATE )
  234. AND TPP.VALUEFLAG = 1
  235. GROUP BY
  236. TMU.USERCODE";
  237. //直接获取不分页数据
  238. DataTable dt = conn.ExecuteDatatable(sqlStr);
  239. string jsonStr = new JsonResult(dt).ToJson();
  240. context.Response.Write(jsonStr);
  241. }
  242. //成型缺陷扇形图
  243. if (context.Request["m"].ToString() == "defect")
  244. {
  245. string sqlStr = @"SELECT
  246. T.name AS 缺陷名称,
  247. T.count AS 数量
  248. FROM
  249. (SELECT
  250. TMD.S_name name,
  251. COUNT( * ) count
  252. FROM
  253. TP_PM_SEMICHECKDEFECT TPSD
  254. INNER JOIN TP_PM_SEMICHECK TPS ON TPSD.SEMICHECKID = TPS.SEMICHECKID
  255. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  256. --LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTID = TMD.DEFECTID
  257. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  258. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  259. WHERE
  260. TPS.UPDATETIME >= TRUNC( SYSDATE)
  261. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  262. --AND TPS.PROCEDUREID IN (83,88,92,118,93)
  263. AND TPS.RESEMICHECKTYPE = 2
  264. GROUP BY
  265. TMD.S_name
  266. ORDER BY
  267. COUNT( * ) DESC)T
  268. WHERE ROWNUM < 4
  269. ";
  270. //直接获取不分页数据
  271. DataTable dt = conn.ExecuteDatatable(sqlStr);
  272. string jsonStr = new JsonResult(dt).ToJson();
  273. context.Response.Write(jsonStr);
  274. }
  275. //半检缺陷扇形图
  276. if (context.Request["m"].ToString() == "defectb")
  277. {
  278. string sqlStr = @"SELECT
  279. T.S_NAME AS 缺陷名称,
  280. T.数量
  281. FROM
  282. (
  283. SELECT
  284. DF.S_NAME as S_NAME,
  285. COUNT(DISTINCT sed.BARCODE) as 数量
  286. FROM TP_PM_SEMICHECK sed
  287. left JOIN TP_PM_SEMICHECKDEFECT se on se.SEMICHECKID=sed.SEMICHECKID
  288. LEFT JOIN TP_MST_DEFECT DF ON DF.DEFECTCODE=SE.DEFECTCODE
  289. WHERE
  290. sed.CREATETIME >= TRUNC( SYSDATE ) AND SED.SEMICHECKTYPE=2
  291. AND sed.GROUTINGLINECODE LIKE 'C0%'
  292. GROUP BY
  293. DF.S_NAME
  294. ORDER BY
  295. COUNT(DISTINCT sed.BARCODE) DESC
  296. ) T
  297. WHERE
  298. ROWNUM < 4";
  299. //直接获取不分页数据
  300. DataTable dt = conn.ExecuteDatatable(sqlStr);
  301. string jsonStr = new JsonResult(dt).ToJson();
  302. context.Response.Write(jsonStr);
  303. }
  304. //二检折线图
  305. if (context.Request["m"].ToString() == "zx")
  306. {
  307. string sqlStr = @"SELECT
  308. -- CASE
  309. -- WHEN
  310. -- T4.半检数量 = 0 THEN
  311. -- '100%' ELSE TO_CHAR( TRUNC( T4.半检合格 / T4.半检数量, 4 ) * 100, '990.00' ) || '%'
  312. -- END AS 一检合格率,
  313. CASE
  314. WHEN T4.二检数量 = 0 THEN
  315. '100%' ELSE TO_CHAR( TRUNC( T4.二检合格 / T4.二检数量, 4 ) * 100, '990.00' ) || '%'
  316. END AS 二检合格率,
  317. T4.二检数量,
  318. SUBSTR( T4.CREATETIME, 5, 2 )||'.'||SUBSTR( T4.CREATETIME, 7, 2 ) AS 日期
  319. FROM
  320. (
  321. SELECT
  322. T.半检数量,
  323. T.半检数量 - ( CASE WHEN T2.半检不合格数量 IS NULL THEN 0 ELSE T2.半检不合格数量 END ) AS 半检合格,
  324. T1.二检数量,
  325. T2.二检不合格数量,
  326. --T2.二检不合格数量,
  327. T1.二检数量 - ( CASE WHEN T2.二检不合格数量 IS NULL THEN 0 ELSE T2.半检不合格数量 END ) AS 二检合格,
  328. T.CREATETIME
  329. FROM
  330. (--半检数量
  331. SELECT
  332. CASE
  333. WHEN
  334. T2.半检数量 IS NULL THEN
  335. 0 ELSE T2.半检数量
  336. END 半检数量,
  337. T2.CREATETIME CREATETIME
  338. FROM
  339. (
  340. SELECT
  341. 半检数量,
  342. CREATETIME
  343. FROM
  344. (
  345. SELECT DISTINCT
  346. CASE
  347. WHEN
  348. COUNT( TPPD.BARCODE ) IS NULL THEN
  349. 0 ELSE COUNT( TPPD.BARCODE )
  350. END 半检数量,
  351. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  352. FROM
  353. TP_PM_PRODUCTIONDATA TPPD
  354. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  355. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  356. WHERE
  357. TPPD.PROCEDUREID IN ( 118, 92, 88 )
  358. AND PGD.TESTFLAG = 0
  359. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  360. AND TPPD.CREATETIME >= trunc( SYSDATE - 10 )
  361. AND TPPD.VALUEFLAG = 1
  362. GROUP BY
  363. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  364. ORDER BY
  365. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  366. ) WHERE ROWNUM < 8
  367. ) T2
  368. ORDER BY
  369. T2.CREATETIME DESC
  370. ) T
  371. LEFT JOIN (
  372. SELECT
  373. CASE
  374. WHEN
  375. T2.半检不合格数量 IS NULL THEN
  376. 0 ELSE T2.半检不合格数量
  377. END 半检不合格数量,
  378. T2.CREATETIME CREATETIME
  379. FROM
  380. (
  381. SELECT
  382. 半检不合格数量,
  383. CREATETIME
  384. FROM
  385. (--半检不合格
  386. SELECT DISTINCT
  387. NVL( COUNT( TPS.BARCODE ), 0 ) 半检不合格数量,
  388. to_char( TPS.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  389. FROM
  390. TP_PM_SEMICHECK TPS
  391. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  392. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  393. WHERE
  394. TPS.SEMICHECKTYPE = 2
  395. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  396. AND TPS.CREATETIME >= trunc( SYSDATE - 10 )
  397. AND TPGL.TESTFLAG = 0
  398. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  399. AND TPS.VALUEFLAG = 1
  400. GROUP BY
  401. to_char( TPS.CREATETIME, 'yyyymmdd' )
  402. ORDER BY
  403. to_char( TPS.CREATETIME, 'yyyymmdd' ) DESC
  404. ) WHERE ROWNUM < 8
  405. ) T2
  406. ORDER BY
  407. T2.CREATETIME DESC
  408. ) T2 ON T2.CREATETIME = T.CREATETIME
  409. LEFT JOIN (
  410. SELECT
  411. CASE
  412. WHEN
  413. T2.二检数量 IS NULL THEN
  414. 0 ELSE T2.二检数量
  415. END 二检数量,
  416. T2.CREATETIME CREATETIME
  417. FROM
  418. (
  419. SELECT
  420. 二检数量,
  421. CREATETIME
  422. FROM
  423. (
  424. SELECT DISTINCT
  425. CASE
  426. WHEN
  427. COUNT( TPPD.BARCODE ) IS NULL THEN
  428. 0 ELSE COUNT( TPPD.BARCODE )
  429. END 二检数量,
  430. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  431. FROM
  432. TP_PM_PRODUCTIONDATA TPPD
  433. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  434. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  435. WHERE
  436. TPPD.PROCEDUREID IN ( 117 )
  437. AND PGD.TESTFLAG = 0
  438. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  439. AND TPPD.CREATETIME >= trunc( SYSDATE - 10 )
  440. AND TPPD.VALUEFLAG = 1
  441. GROUP BY
  442. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  443. ORDER BY
  444. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  445. ) WHERE ROWNUM < 8
  446. ) T2
  447. ORDER BY
  448. T2.CREATETIME DESC
  449. ) T1 ON T.CREATETIME = T1.CREATETIME
  450. LEFT JOIN (
  451. SELECT
  452. CASE
  453. WHEN
  454. T2.二检不合格数量 IS NULL THEN
  455. 0 ELSE T2.二检不合格数量
  456. END 二检不合格数量,
  457. T2.CREATETIME CREATETIME
  458. FROM
  459. (
  460. SELECT
  461. 二检不合格数量,
  462. CREATETIME
  463. FROM
  464. (--半检不合格
  465. SELECT DISTINCT
  466. NVL( COUNT( TPS.BARCODE ), 0 ) 二检不合格数量,
  467. to_char( TPS.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  468. FROM
  469. TP_PM_SEMICHECK TPS
  470. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  471. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  472. WHERE
  473. TPS.RESEMICHECKTYPE = 2
  474. AND TPS.PROCEDUREID IN ( 117 )
  475. AND TPS.CREATETIME >= trunc( SYSDATE - 10 )
  476. AND TPGL.TESTFLAG = 0
  477. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  478. AND TPS.VALUEFLAG = 1
  479. GROUP BY
  480. to_char( TPS.CREATETIME, 'yyyymmdd' )
  481. ORDER BY
  482. to_char( TPS.CREATETIME, 'yyyymmdd' ) DESC
  483. ) WHERE ROWNUM < 8
  484. ) T2
  485. ORDER BY
  486. T2.CREATETIME DESC
  487. ) T2 ON T1.CREATETIME = T2.CREATETIME
  488. ORDER BY
  489. T2.CREATETIME DESC --) T3 ON T3.CREATETIME = T.CREATETIME
  490. ) T4 --ON T4.CREATETIME = T.CREATETIME
  491. ORDER BY
  492. CREATETIME";
  493. //直接获取不分页数据
  494. DataTable dt = conn.ExecuteDatatable(sqlStr);
  495. string jsonStr = new JsonResult(dt).ToJson();
  496. context.Response.Write(jsonStr);
  497. }
  498. //二检产线信息
  499. if (context.Request["m"].ToString() == "MonthTabletwo")
  500. {
  501. string sqlStr = @" SELECT
  502. B.产品型号 AS 产品型号,
  503. B.成型产线 AS 成型产线,
  504. B.检验数量 AS 检验数量,
  505. B.合格品数 AS 合格品数,
  506. B.返工品数 AS 返工品数,
  507. B.返工合格数 AS 返工合格数,
  508. B.综合合格数 AS 综合合格数,
  509. TO_CHAR((B.合格品数/B.检验数量)* 100,'9,990.00') || '%' AS 一次合格率,
  510. CASE WHEN B.返工合格数 = 0 AND B.返工品数 > 0 THEN '0%'
  511. WHEN B.返工合格数 > 0 AND B.返工品数 = 0 THEN '100%'
  512. WHEN B.返工合格数 > 0 AND B.返工品数 > 0 THEN TO_CHAR((B.返工合格数/B.返工品数)* 100,'9,990.00') || '%' ELSE '0%' END AS 返工合格率,
  513. TO_CHAR((B.综合合格数/B.检验数量)* 100,'9,990.00') || '%' AS 综合合格率
  514. FROM(
  515. SELECT
  516. --decode( H.gid, 7, '总计', 3, '合计【' || H.产品型号 || '】', 0, H.产品型号, '--' ) 产品型号,
  517. decode( H.gid, 1, '小计', 0, H.产品型号, '总计' ) 产品型号,
  518. decode( H.gid, 1, '--', 0, H.成型产线, '--' ) 成型产线,
  519. decode( H.gid, 1, H.检验数量, 0, H.检验数量, H.检验数量 ) 检验数量,
  520. decode( H.gid, 1, H.合格品数, 0, H.合格品数, H.合格品数 ) 合格品数,
  521. decode( H.gid, 1, H.返工品数, 0, H.返工品数, H.返工品数 ) 返工品数,
  522. decode( H.gid, 1, H.返工合格数, 0, H.返工合格数, H.返工合格数 ) 返工合格数,
  523. decode( H.gid, 1, H.综合合格数, 0, H.综合合格数, H.综合合格数 ) 综合合格数
  524. FROM
  525. (
  526. SELECT
  527. grouping_id(Z.产品型号, Z.成型产线) gid,
  528. Z.产品型号,
  529. Z.成型产线,
  530. SUM(Z.检验数量) 检验数量,
  531. SUM(Z.合格品数) 合格品数,
  532. SUM(Z.返工品数) 返工品数,
  533. SUM(Z.返工合格数) 返工合格数,
  534. SUM(Z.综合合格数) 综合合格数
  535. FROM
  536. (
  537. SELECT
  538. B.GOODSCODE AS 产品型号,
  539. B.GROUTINGLINECODE AS 成型产线,
  540. B.检验 AS 检验数量,
  541. B.检验 - B.返工 - B.一次不合格 AS 合格品数,
  542. B.返工 AS 返工品数,
  543. B.返工 - B.二次不合格 AS 返工合格数,
  544. B.检验 - B.一次不合格 - B.二次不合格 AS 综合合格数
  545. FROM
  546. (
  547. SELECT
  548. TPPD.GOODSCODE,
  549. TPGL.GROUTINGLINECODE,
  550. COUNT( TPPD.BARCODE ) 检验,
  551. CASE
  552. WHEN BJFG.count IS NULL THEN
  553. 0 ELSE BJFG.count
  554. END 返工,
  555. CASE
  556. WHEN BJFP.count IS NULL THEN
  557. 0 ELSE BJFP.count
  558. END 一次不合格,
  559. CASE
  560. WHEN BJFGH.count IS NULL THEN
  561. 0 ELSE BJFGH.count
  562. END 返工合格,
  563. CASE
  564. WHEN BJFFP.count IS NULL THEN
  565. 0 ELSE BJFFP.count
  566. END 二次不合格
  567. FROM
  568. TP_PM_PRODUCTIONDATA TPPD
  569. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  570. LEFT JOIN (--半检一检返工数
  571. SELECT
  572. T.GOODSCODE,
  573. T.GROUTINGLINECODE,
  574. COUNT( T.BARCODE ) count
  575. FROM
  576. (
  577. SELECT DISTINCT
  578. TPPD.GOODSCODE,
  579. TPGL.GROUTINGLINECODE,
  580. TPS.BARCODE
  581. FROM
  582. TP_PM_SEMICHECK TPS
  583. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  584. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  585. WHERE
  586. TPS.SEMICHECKTYPE = 1
  587. AND TPS.PROCEDUREID IN ( 117 )
  588. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  589. AND TPGL.TESTFLAG = 0
  590. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  591. AND TPS.VALUEFLAG = 1
  592. ) T
  593. GROUP BY
  594. T.GOODSCODE,
  595. T.GROUTINGLINECODE
  596. ) BJFG ON BJFG.GOODSCODE = TPPD.GOODSCODE
  597. AND BJFG.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  598. LEFT JOIN (--半检二检返工合格数
  599. SELECT
  600. T.GOODSCODE,
  601. T.GROUTINGLINECODE,
  602. COUNT( T.BARCODE ) count
  603. FROM
  604. (
  605. SELECT DISTINCT
  606. TPPD.GOODSCODE,
  607. TPGL.GROUTINGLINECODE,
  608. TPS.BARCODE
  609. FROM
  610. TP_PM_SEMICHECK TPS
  611. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  612. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  613. WHERE
  614. TPS.RESEMICHECKTYPE = 1
  615. AND TPS.PROCEDUREID IN ( 117 )
  616. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  617. AND TPGL.TESTFLAG = 0
  618. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  619. ) T
  620. GROUP BY
  621. T.GOODSCODE,
  622. T.GROUTINGLINECODE
  623. ORDER BY
  624. T.GOODSCODE
  625. ) BJFGH ON BJFGH.GOODSCODE = TPPD.GOODSCODE
  626. AND BJFGH.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  627. LEFT JOIN (--半检一次不合格
  628. SELECT
  629. T.GOODSCODE,
  630. T.GROUTINGLINECODE,
  631. COUNT( T.BARCODE ) count
  632. FROM
  633. (
  634. SELECT DISTINCT
  635. TPPD.GOODSCODE,
  636. TPGL.GROUTINGLINECODE,
  637. TPS.BARCODE
  638. FROM
  639. TP_PM_SEMICHECK TPS
  640. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  641. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  642. WHERE
  643. TPS.SEMICHECKTYPE =2
  644. AND TPS.PROCEDUREID IN ( 117 )
  645. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  646. AND TPGL.TESTFLAG = 0
  647. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  648. AND TPS.VALUEFLAG = 1
  649. ) T
  650. GROUP BY
  651. T.GOODSCODE,
  652. T.GROUTINGLINECODE
  653. ) BJFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  654. AND BJFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  655. LEFT JOIN (--半检二次不合格
  656. SELECT
  657. T.GOODSCODE,
  658. T.GROUTINGLINECODE,
  659. COUNT( T.BARCODE ) count
  660. FROM
  661. (
  662. SELECT DISTINCT
  663. TPPD.GOODSCODE,
  664. TPGL.GROUTINGLINECODE,
  665. TPS.BARCODE
  666. FROM
  667. TP_PM_SEMICHECK TPS
  668. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  669. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  670. WHERE--TPS.GOODSLEVELID IN (13)
  671. TPS.RESEMICHECKTYPE = 2
  672. AND TPS.PROCEDUREID IN ( 117 )
  673. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  674. AND TPGL.TESTFLAG = 0
  675. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  676. AND TPS.VALUEFLAG = 1
  677. ) T
  678. GROUP BY
  679. T.GOODSCODE,
  680. T.GROUTINGLINECODE
  681. ) BJFFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  682. AND BJFFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  683. WHERE
  684. TPPD.CREATETIME >= TRUNC( SYSDATE )
  685. AND TPPD.PROCEDUREID IN ( 117 )
  686. AND TPGL.TESTFLAG = 0
  687. AND TPPD.VALUEFLAG = 1
  688. AND ( SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  689. GROUP BY
  690. TPPD.GOODSCODE,
  691. TPGL.GROUTINGLINECODE,
  692. BJFG.count,
  693. BJFP.count,
  694. BJFGH.count,
  695. BJFFP.count
  696. ORDER BY
  697. TPPD.GOODSCODE
  698. ) B
  699. ) Z
  700. GROUP BY GROUPING SETS((Z.产品型号),(Z.产品型号,Z.成型产线, Z.检验数量,Z.合格品数, Z.返工品数, Z.返工合格数,Z.综合合格数),())
  701. )H) B
  702. ";
  703. //直接获取不分页数据
  704. DataTable dt = conn.ExecuteDatatable(sqlStr);
  705. string jsonStr = new JsonResult(dt).ToJson();
  706. context.Response.Write(jsonStr);
  707. }
  708. }
  709. }
  710. public bool IsReusable {
  711. get {
  712. return false;
  713. }
  714. }
  715. }