demo.ashx 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133
  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 = 91
  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() == "gb")
  42. {
  43. string sqlStr = @"SELECT
  44. TO_CHAR((SUM(T.返工品数)/SUM(T.返工合格数))*100,'9,990.00') || '%' AS 返工合格率
  45. FROM(
  46. SELECT
  47. B.GOODSCODE AS 产品型号,
  48. B.返工 AS 返工品数,
  49. B.返工 - B.返工不合格 AS 返工合格数
  50. FROM
  51. (
  52. SELECT
  53. TPPD.GOODSCODE,
  54. TPGL.GROUTINGLINECODE,
  55. COUNT( TPPD.BARCODE ) 检验,
  56. CASE
  57. WHEN BJFG.count IS NULL THEN
  58. 0 ELSE BJFG.count
  59. END 返工,
  60. CASE
  61. WHEN BJFP.count IS NULL THEN
  62. 0 ELSE BJFP.count
  63. END 一次不合格,
  64. CASE
  65. WHEN BJFGBH.count IS NULL THEN
  66. 0 ELSE BJFGBH.count
  67. END 返工不合格,
  68. CASE
  69. WHEN BJFFP.count IS NULL THEN
  70. 0 ELSE BJFFP.count
  71. END 二次不合格
  72. FROM
  73. TP_PM_PRODUCTIONDATA TPPD
  74. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  75. LEFT JOIN (--半检一检返工数
  76. SELECT
  77. T.GOODSCODE,
  78. T.GROUTINGLINECODE,
  79. COUNT( T.BARCODE ) count
  80. FROM
  81. (
  82. SELECT DISTINCT
  83. TPPD.GOODSCODE,
  84. TPGL.GROUTINGLINECODE,
  85. TPS.BARCODE
  86. FROM
  87. TP_PM_SEMICHECK TPS
  88. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  89. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  90. WHERE
  91. TPS.SEMICHECKTYPE = 1
  92. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  93. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  94. AND TPGL.TESTFLAG = 0
  95. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  96. AND TPS.VALUEFLAG = 1
  97. ) T
  98. GROUP BY
  99. T.GOODSCODE,
  100. T.GROUTINGLINECODE
  101. ) BJFG ON BJFG.GOODSCODE = TPPD.GOODSCODE
  102. AND BJFG.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  103. LEFT JOIN (--半检一检返工不合格数
  104. SELECT
  105. T.GOODSCODE,
  106. T.GROUTINGLINECODE,
  107. COUNT( T.BARCODE ) count
  108. FROM
  109. (
  110. SELECT DISTINCT
  111. TPPD.GOODSCODE,
  112. TPGL.GROUTINGLINECODE,
  113. TPS.BARCODE
  114. FROM
  115. TP_PM_SEMICHECK TPS
  116. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  117. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  118. WHERE
  119. TPS.RESEMICHECKTYPE IN (2)
  120. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  121. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  122. AND TPGL.TESTFLAG = 0
  123. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  124. ) T
  125. GROUP BY
  126. T.GOODSCODE,
  127. T.GROUTINGLINECODE
  128. ORDER BY
  129. T.GOODSCODE
  130. ) BJFGBH ON BJFGBH.GOODSCODE = TPPD.GOODSCODE
  131. AND BJFGBH.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  132. LEFT JOIN (--半检一次不合格
  133. SELECT
  134. T.GOODSCODE,
  135. T.GROUTINGLINECODE,
  136. COUNT( T.BARCODE ) count
  137. FROM
  138. (
  139. SELECT DISTINCT
  140. TPPD.GOODSCODE,
  141. TPGL.GROUTINGLINECODE,
  142. TPS.BARCODE
  143. FROM
  144. TP_PM_SEMICHECK TPS
  145. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  146. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  147. WHERE
  148. TPS.SEMICHECKTYPE = 2
  149. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  150. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  151. AND TPGL.TESTFLAG = 0
  152. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  153. AND TPS.VALUEFLAG = 1
  154. ) T
  155. GROUP BY
  156. T.GOODSCODE,
  157. T.GROUTINGLINECODE
  158. ) BJFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  159. AND BJFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  160. LEFT JOIN (--半检二次不合格
  161. SELECT
  162. T.GOODSCODE,
  163. T.GROUTINGLINECODE,
  164. COUNT( T.BARCODE ) count
  165. FROM
  166. (
  167. SELECT DISTINCT
  168. TPPD.GOODSCODE,
  169. TPGL.GROUTINGLINECODE,
  170. TPS.BARCODE
  171. FROM
  172. TP_PM_SEMICHECK TPS
  173. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  174. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  175. WHERE--TPS.GOODSLEVELID IN (13)
  176. TPS.RESEMICHECKTYPE = 2
  177. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  178. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  179. AND TPGL.TESTFLAG = 0
  180. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  181. AND TPS.VALUEFLAG = 1
  182. ) T
  183. GROUP BY
  184. T.GOODSCODE,
  185. T.GROUTINGLINECODE
  186. ) BJFFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  187. AND BJFFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  188. WHERE
  189. TPPD.CREATETIME >= TRUNC( SYSDATE )
  190. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  191. AND TPGL.TESTFLAG = 0
  192. AND TPPD.VALUEFLAG = 1
  193. AND ( SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  194. GROUP BY
  195. TPPD.GOODSCODE,
  196. TPGL.GROUTINGLINECODE,
  197. BJFG.count,
  198. BJFP.count,
  199. BJFGBH.count,
  200. BJFFP.count
  201. ORDER BY
  202. TPPD.GOODSCODE
  203. ) B )T";
  204. //直接获取不分页数据
  205. DataTable dt = conn.ExecuteDatatable(sqlStr);
  206. string jsonStr = new JsonResult(dt).ToJson();
  207. context.Response.Write(jsonStr);
  208. }
  209. //每小时产量折线图
  210. if (context.Request["m"].ToString() == "h")
  211. {
  212. string sqlStr = @"SELECT T.CREATETIME 日期,
  213. CASE
  214. WHEN TT.一检数量 IS NULL THEN
  215. 0
  216. ELSE
  217. TT.一检数量
  218. END AS 一检产量,
  219. TT2.预期产量
  220. FROM
  221. (
  222. SELECT
  223. 0 半检数量,
  224. '06' AS CREATETIME
  225. FROM
  226. DUAL UNION ALL
  227. SELECT
  228. 0 半检数量,
  229. '07' AS CREATETIME
  230. FROM
  231. DUAL UNION ALL
  232. SELECT
  233. 0 半检数量,
  234. '08' AS CREATETIME
  235. FROM
  236. DUAL UNION ALL
  237. SELECT
  238. 0 半检数量,
  239. '09' AS CREATETIME
  240. FROM
  241. DUAL UNION ALL
  242. SELECT
  243. 0 半检数量,
  244. '10' AS CREATETIME
  245. FROM
  246. DUAL UNION ALL
  247. SELECT
  248. 0 半检数量,
  249. '11' AS CREATETIME
  250. FROM
  251. DUAL UNION ALL
  252. SELECT
  253. 0 半检数量,
  254. '12' AS CREATETIME
  255. FROM
  256. DUAL UNION ALL
  257. SELECT
  258. 0 半检数量,
  259. '13' AS CREATETIME
  260. FROM
  261. DUAL UNION ALL
  262. SELECT
  263. 0 半检数量,
  264. '14' AS CREATETIME
  265. FROM
  266. DUAL UNION ALL
  267. SELECT
  268. 0 半检数量,
  269. '15' AS CREATETIME
  270. FROM
  271. DUAL UNION ALL
  272. SELECT
  273. 0 半检数量,
  274. '16' AS CREATETIME
  275. FROM
  276. DUAL UNION ALL
  277. SELECT
  278. 0 半检数量,
  279. '17' AS CREATETIME
  280. FROM
  281. DUAL UNION ALL
  282. SELECT
  283. 0 半检数量,
  284. '18' AS CREATETIME
  285. FROM
  286. DUAL UNION ALL
  287. SELECT
  288. 0 半检数量,
  289. '19' AS CREATETIME
  290. FROM
  291. DUAL
  292. ) T
  293. FULL JOIN (
  294. SELECT
  295. T2.CREATETIME,
  296. COUNT( * ) 一检数量
  297. FROM
  298. (
  299. SELECT
  300. SUBSTR( TO_CHAR( TPP.CREATETIME, 'yyyy-mm-dd hh24:mi:ss' ), 12, 2 ) AS CREATETIME
  301. FROM
  302. TP_PM_PRODUCTIONDATA TPP
  303. WHERE
  304. TPP.PROCEDUREID IN ( 118, 92, 88 )
  305. AND TPP.VALUEFLAG = 1
  306. AND TPP.CREATETIME >= trunc( SYSDATE )
  307. ) T2
  308. GROUP BY
  309. T2.CREATETIME
  310. ORDER BY
  311. T2.CREATETIME
  312. ) TT ON T.CREATETIME = TT.CREATETIME
  313. FULL JOIN (
  314. SELECT
  315. 0 预期产量,
  316. '06' AS CREATETIME
  317. FROM
  318. DUAL UNION ALL
  319. SELECT
  320. 200 预期产量,
  321. '07' AS CREATETIME
  322. FROM
  323. DUAL UNION ALL
  324. SELECT
  325. 200 预期产量,
  326. '08' AS CREATETIME
  327. FROM
  328. DUAL UNION ALL
  329. SELECT
  330. 200 预期产量,
  331. '09' AS CREATETIME
  332. FROM
  333. DUAL UNION ALL
  334. SELECT
  335. 200 预期产量,
  336. '10' AS CREATETIME
  337. FROM
  338. DUAL UNION ALL
  339. SELECT
  340. 60 预期产量,
  341. '11' AS CREATETIME
  342. FROM
  343. DUAL UNION ALL
  344. SELECT
  345. 200 预期产量,
  346. '12' AS CREATETIME
  347. FROM
  348. DUAL UNION ALL
  349. SELECT
  350. 200 预期产量,
  351. '13' AS CREATETIME
  352. FROM
  353. DUAL UNION ALL
  354. SELECT
  355. 200 预期产量,
  356. '14' AS CREATETIME
  357. FROM
  358. DUAL UNION ALL
  359. SELECT
  360. 200 预期产量,
  361. '15' AS CREATETIME
  362. FROM
  363. DUAL UNION ALL
  364. SELECT
  365. 60 预期产量,
  366. '16' AS CREATETIME
  367. FROM
  368. DUAL UNION ALL
  369. SELECT
  370. 200 预期产量,
  371. '17' AS CREATETIME
  372. FROM
  373. DUAL UNION ALL
  374. SELECT
  375. 200 预期产量,
  376. '18' AS CREATETIME
  377. FROM
  378. DUAL UNION ALL
  379. SELECT
  380. 200 预期产量,
  381. '19' AS CREATETIME
  382. FROM
  383. DUAL
  384. ) TT2 ON T.CREATETIME = TT2.CREATETIME ORDER BY 日期";
  385. //直接获取不分页数据
  386. DataTable dt = conn.ExecuteDatatable(sqlStr);
  387. string jsonStr = new JsonResult(dt).ToJson();
  388. context.Response.Write(jsonStr);
  389. }
  390. //工号产量柱状图
  391. if (context.Request["m"].ToString() == "cl")
  392. {
  393. string sqlStr = @"SELECT
  394. TMU.USERCODE 工号,
  395. COUNT( * ) 产量
  396. FROM
  397. TP_PM_PRODUCTIONDATA TPP
  398. LEFT JOIN TP_MST_USER TMU ON TPP.CREATEUSERID = TMU.USERID
  399. WHERE
  400. TPP.PROCEDUREID IN ( 118, 92, 88 )
  401. AND TPP.CREATETIME >= trunc( SYSDATE )
  402. AND TPP.VALUEFLAG = 1
  403. GROUP BY
  404. TMU.USERCODE";
  405. //直接获取不分页数据
  406. DataTable dt = conn.ExecuteDatatable(sqlStr);
  407. string jsonStr = new JsonResult(dt).ToJson();
  408. context.Response.Write(jsonStr);
  409. }
  410. //成型缺陷扇形图
  411. if (context.Request["m"].ToString() == "defect")
  412. {
  413. string sqlStr = @"SELECT
  414. T.name AS 缺陷名称,
  415. T.count AS 数量
  416. FROM
  417. (SELECT
  418. TMD.S_name name,
  419. COUNT( * ) count
  420. FROM
  421. TP_PM_SEMICHECKDEFECT TPSD
  422. INNER JOIN TP_PM_SEMICHECK TPS ON TPSD.SEMICHECKID = TPS.SEMICHECKID
  423. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  424. --LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTID = TMD.DEFECTID
  425. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  426. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  427. WHERE
  428. TPS.UPDATETIME >= TRUNC( SYSDATE)
  429. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  430. --AND TPS.PROCEDUREID IN (83,88,92,118,93)
  431. AND TPS.RESEMICHECKTYPE = 2
  432. GROUP BY
  433. TMD.S_name
  434. ORDER BY
  435. COUNT( * ) DESC)T
  436. WHERE ROWNUM < 4
  437. ";
  438. //直接获取不分页数据
  439. DataTable dt = conn.ExecuteDatatable(sqlStr);
  440. string jsonStr = new JsonResult(dt).ToJson();
  441. context.Response.Write(jsonStr);
  442. }
  443. //半检缺陷扇形图
  444. if (context.Request["m"].ToString() == "defectb")
  445. {
  446. string sqlStr = @"SELECT
  447. T.S_NAME AS 缺陷名称,
  448. T.数量
  449. FROM
  450. (
  451. SELECT
  452. DF.S_NAME as S_NAME,
  453. COUNT(DISTINCT sed.BARCODE) as 数量
  454. FROM TP_PM_SEMICHECK sed
  455. left JOIN TP_PM_SEMICHECKDEFECT se on se.SEMICHECKID=sed.SEMICHECKID
  456. LEFT JOIN TP_MST_DEFECT DF ON DF.DEFECTCODE=SE.DEFECTCODE
  457. WHERE
  458. sed.CREATETIME >= TRUNC( SYSDATE ) AND SED.SEMICHECKTYPE=2
  459. AND sed.GROUTINGLINECODE LIKE 'C0%'
  460. GROUP BY
  461. DF.S_NAME
  462. ORDER BY
  463. COUNT(DISTINCT sed.BARCODE) DESC
  464. ) T
  465. WHERE
  466. ROWNUM < 4";
  467. //直接获取不分页数据
  468. DataTable dt = conn.ExecuteDatatable(sqlStr);
  469. string jsonStr = new JsonResult(dt).ToJson();
  470. context.Response.Write(jsonStr);
  471. }
  472. //一检折线图
  473. if (context.Request["m"].ToString() == "zx")
  474. {
  475. string sqlStr = @"SELECT
  476. CASE
  477. WHEN
  478. T4.半检数量 = 0 THEN
  479. '100%' ELSE TO_CHAR( TRUNC( T4.半检合格 / T4.半检数量, 4 ) * 100, '990.00' ) || '%'
  480. END AS 一检合格率,
  481. -- CASE
  482. -- WHEN T4.二检数量 = 0 THEN
  483. -- '100%' ELSE TO_CHAR( TRUNC( T4.二检合格 / T4.二检数量, 4 ) * 100, '990.00' ) || '%'
  484. -- END AS 二检合格率,
  485. T4.半检数量,
  486. SUBSTR( T4.CREATETIME, 5, 2 )||'.'||SUBSTR( T4.CREATETIME, 7, 2 ) AS 日期
  487. FROM
  488. (
  489. SELECT
  490. T.半检数量,
  491. T.半检数量 - ( CASE WHEN T2.半检不合格数量 IS NULL THEN 0 ELSE T2.半检不合格数量 END ) AS 半检合格,
  492. T1.二检数量,
  493. --T2.二检不合格数量,
  494. T1.二检数量 - T2.二检不合格数量 AS 二检合格,
  495. T.CREATETIME
  496. FROM
  497. (--半检数量
  498. SELECT
  499. CASE
  500. WHEN
  501. T2.半检数量 IS NULL THEN
  502. 0 ELSE T2.半检数量
  503. END 半检数量,
  504. T2.CREATETIME CREATETIME
  505. FROM
  506. (
  507. SELECT
  508. 半检数量,
  509. CREATETIME
  510. FROM
  511. (
  512. SELECT DISTINCT
  513. CASE
  514. WHEN
  515. COUNT( TPPD.BARCODE ) IS NULL THEN
  516. 0 ELSE COUNT( TPPD.BARCODE )
  517. END 半检数量,
  518. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  519. FROM
  520. TP_PM_PRODUCTIONDATA TPPD
  521. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  522. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  523. WHERE
  524. TPPD.PROCEDUREID IN ( 118, 92, 88 )
  525. AND PGD.TESTFLAG = 0
  526. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  527. AND TPPD.CREATETIME >= trunc( SYSDATE - 10 )
  528. AND TPPD.VALUEFLAG = 1
  529. GROUP BY
  530. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  531. ORDER BY
  532. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  533. ) WHERE ROWNUM < 8
  534. ) T2
  535. ORDER BY
  536. T2.CREATETIME DESC
  537. ) T
  538. LEFT JOIN (
  539. SELECT
  540. CASE
  541. WHEN
  542. T2.半检不合格数量 IS NULL THEN
  543. 0 ELSE T2.半检不合格数量
  544. END 半检不合格数量,
  545. T2.CREATETIME CREATETIME
  546. FROM
  547. (
  548. SELECT
  549. 半检不合格数量,
  550. CREATETIME
  551. FROM
  552. (--半检不合格
  553. SELECT DISTINCT
  554. NVL( COUNT( TPS.BARCODE ), 0 ) 半检不合格数量,
  555. to_char( TPS.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  556. FROM
  557. TP_PM_SEMICHECK TPS
  558. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  559. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  560. WHERE
  561. TPS.SEMICHECKTYPE = 2
  562. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  563. AND TPS.CREATETIME >= trunc( SYSDATE - 10 )
  564. AND TPGL.TESTFLAG = 0
  565. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  566. AND TPS.VALUEFLAG = 1
  567. GROUP BY
  568. to_char( TPS.CREATETIME, 'yyyymmdd' )
  569. ORDER BY
  570. to_char( TPS.CREATETIME, 'yyyymmdd' ) DESC
  571. ) WHERE ROWNUM < 8
  572. ) T2
  573. ORDER BY
  574. T2.CREATETIME DESC
  575. ) T2 ON T2.CREATETIME = T.CREATETIME
  576. LEFT JOIN (
  577. SELECT
  578. CASE
  579. WHEN
  580. T2.二检数量 IS NULL THEN
  581. 0 ELSE T2.二检数量
  582. END 二检数量,
  583. T1.CREATETIME CREATETIME
  584. FROM
  585. (
  586. SELECT
  587. 0 二检数量,
  588. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) AS CREATETIME
  589. FROM
  590. DUAL CONNECT BY ROWNUM <= 7
  591. ORDER BY
  592. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) DESC
  593. ) T1
  594. LEFT JOIN (
  595. SELECT
  596. 二检数量,
  597. CREATETIME
  598. FROM
  599. (
  600. SELECT DISTINCT
  601. CASE
  602. WHEN
  603. COUNT( TPPD.BARCODE ) IS NULL THEN
  604. 0 ELSE COUNT( TPPD.BARCODE )
  605. END 二检数量,
  606. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  607. FROM
  608. TP_PM_PRODUCTIONDATA TPPD
  609. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  610. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  611. WHERE
  612. TPPD.PROCEDUREID IN ( 117 )
  613. AND PGD.TESTFLAG = 0
  614. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  615. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  616. AND TPPD.VALUEFLAG = 1
  617. GROUP BY
  618. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  619. ORDER BY
  620. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  621. )
  622. ) T2 ON T1.CREATETIME = T2.CREATETIME
  623. ORDER BY
  624. T1.CREATETIME DESC
  625. ) T1 ON T.CREATETIME = T1.CREATETIME
  626. LEFT JOIN (
  627. SELECT
  628. CASE
  629. WHEN
  630. T2.二检不合格数量 IS NULL THEN
  631. 0 ELSE T2.二检不合格数量
  632. END 二检不合格数量,
  633. T2.CREATETIME CREATETIME
  634. FROM
  635. (
  636. SELECT
  637. 二检不合格数量,
  638. CREATETIME
  639. FROM
  640. (--半检不合格
  641. SELECT DISTINCT
  642. NVL( COUNT( TPS.BARCODE ), 0 ) 二检不合格数量,
  643. to_char( TPS.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  644. FROM
  645. TP_PM_SEMICHECK TPS
  646. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  647. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  648. WHERE
  649. TPS.RESEMICHECKTYPE = 2
  650. AND TPS.PROCEDUREID IN ( 117 )
  651. AND TPS.CREATETIME >= trunc( SYSDATE - 6 )
  652. AND TPGL.TESTFLAG = 0
  653. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  654. AND TPS.VALUEFLAG = 1
  655. GROUP BY
  656. to_char( TPS.CREATETIME, 'yyyymmdd' )
  657. ORDER BY
  658. to_char( TPS.CREATETIME, 'yyyymmdd' ) DESC
  659. )
  660. ) T2
  661. ORDER BY
  662. T2.CREATETIME DESC
  663. ) T2 ON T1.CREATETIME = T2.CREATETIME
  664. ORDER BY
  665. T1.CREATETIME DESC --) T3 ON T3.CREATETIME = T.CREATETIME
  666. ) T4 --ON T4.CREATETIME = T.CREATETIME
  667. ORDER BY
  668. CREATETIME";
  669. //直接获取不分页数据
  670. DataTable dt = conn.ExecuteDatatable(sqlStr);
  671. string jsonStr = new JsonResult(dt).ToJson();
  672. context.Response.Write(jsonStr);
  673. }
  674. //产线信息
  675. if (context.Request["m"].ToString() == "MonthTable")
  676. {
  677. string sqlStr = @" SELECT
  678. B.产品型号 AS 产品型号,
  679. B.成型产线 AS 成型产线,
  680. B.检验数量 AS 检验数量,
  681. B.合格品数 AS 合格品数,
  682. B.返工品数 AS 返工品数,
  683. B.返工合格数 AS 返工合格数,
  684. B.综合合格数 AS 综合合格数,
  685. TO_CHAR((B.合格品数/B.检验数量)* 100,'9,990.00') || '%' AS 一次合格率,
  686. CASE WHEN B.返工合格数 = 0 AND B.返工品数 > 0 THEN '0%'
  687. WHEN B.返工合格数 > 0 AND B.返工品数 = 0 THEN '100%'
  688. WHEN B.返工合格数 > 0 AND B.返工品数 > 0 THEN TO_CHAR((B.返工合格数/B.返工品数)* 100,'9,990.00') || '%' ELSE '0%' END AS 返工合格率,
  689. TO_CHAR((B.综合合格数/B.检验数量)* 100,'9,990.00') || '%' AS 综合合格率
  690. FROM(
  691. SELECT
  692. --decode( H.gid, 7, '总计', 3, '合计【' || H.产品型号 || '】', 0, H.产品型号, '--' ) 产品型号,
  693. decode( H.gid, 1, '小计', 0, H.产品型号, '总计' ) 产品型号,
  694. decode( H.gid, 1, '--', 0, H.成型产线, '--' ) 成型产线,
  695. decode( H.gid, 1, H.检验数量, 0, H.检验数量, H.检验数量 ) 检验数量,
  696. decode( H.gid, 1, H.合格品数, 0, H.合格品数, H.合格品数 ) 合格品数,
  697. decode( H.gid, 1, H.返工品数, 0, H.返工品数, H.返工品数 ) 返工品数,
  698. decode( H.gid, 1, H.返工合格数, 0, H.返工合格数, H.返工合格数 ) 返工合格数,
  699. decode( H.gid, 1, H.综合合格数, 0, H.综合合格数, H.综合合格数 ) 综合合格数
  700. FROM
  701. (
  702. SELECT
  703. grouping_id(Z.产品型号, Z.成型产线) gid,
  704. Z.产品型号,
  705. Z.成型产线,
  706. SUM(Z.检验数量) 检验数量,
  707. SUM(Z.合格品数) 合格品数,
  708. SUM(Z.返工品数) 返工品数,
  709. SUM(Z.返工合格数) 返工合格数,
  710. SUM(Z.综合合格数) 综合合格数
  711. FROM
  712. (
  713. SELECT
  714. B.GOODSCODE AS 产品型号,
  715. B.GROUTINGLINECODE AS 成型产线,
  716. B.检验 AS 检验数量,
  717. B.检验 - B.返工 - B.一次不合格 AS 合格品数,
  718. B.返工 AS 返工品数,
  719. B.返工不合格 AS 返工不合格数,
  720. B.返工 - B.返工不合格 AS 返工合格数,
  721. B.检验 - B.一次不合格 - B.二次不合格 AS 综合合格数
  722. FROM
  723. (
  724. SELECT
  725. TPPD.GOODSCODE,
  726. TPGL.GROUTINGLINECODE,
  727. COUNT( TPPD.BARCODE ) 检验,
  728. CASE
  729. WHEN BJFG.count IS NULL THEN
  730. 0 ELSE BJFG.count
  731. END 返工,
  732. CASE
  733. WHEN BJFP.count IS NULL THEN
  734. 0 ELSE BJFP.count
  735. END 一次不合格,
  736. CASE
  737. WHEN BJFGBH.count IS NULL THEN
  738. 0 ELSE BJFGBH.count
  739. END 返工不合格,
  740. CASE
  741. WHEN BJFFP.count IS NULL THEN
  742. 0 ELSE BJFFP.count
  743. END 二次不合格
  744. FROM
  745. TP_PM_PRODUCTIONDATA TPPD
  746. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  747. LEFT JOIN (--半检一检返工数
  748. SELECT
  749. T.GOODSCODE,
  750. T.GROUTINGLINECODE,
  751. COUNT( T.BARCODE ) count
  752. FROM
  753. (
  754. SELECT DISTINCT
  755. TPPD.GOODSCODE,
  756. TPGL.GROUTINGLINECODE,
  757. TPS.BARCODE
  758. FROM
  759. TP_PM_SEMICHECK TPS
  760. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  761. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  762. WHERE
  763. TPS.SEMICHECKTYPE = 1
  764. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  765. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  766. AND TPGL.TESTFLAG = 0
  767. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  768. AND TPS.VALUEFLAG = 1
  769. ) T
  770. GROUP BY
  771. T.GOODSCODE,
  772. T.GROUTINGLINECODE
  773. ) BJFG ON BJFG.GOODSCODE = TPPD.GOODSCODE
  774. AND BJFG.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  775. LEFT JOIN (--半检一检返工不合格数
  776. SELECT
  777. T.GOODSCODE,
  778. T.GROUTINGLINECODE,
  779. COUNT( T.BARCODE ) count
  780. FROM
  781. (
  782. SELECT DISTINCT
  783. TPPD.GOODSCODE,
  784. TPGL.GROUTINGLINECODE,
  785. TPS.BARCODE
  786. FROM
  787. TP_PM_SEMICHECK TPS
  788. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  789. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  790. WHERE
  791. TPS.RESEMICHECKTYPE IN (2)
  792. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  793. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  794. AND TPGL.TESTFLAG = 0
  795. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  796. ) T
  797. GROUP BY
  798. T.GOODSCODE,
  799. T.GROUTINGLINECODE
  800. ORDER BY
  801. T.GOODSCODE
  802. ) BJFGBH ON BJFGBH.GOODSCODE = TPPD.GOODSCODE
  803. AND BJFGBH.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  804. LEFT JOIN (--半检一次不合格
  805. SELECT
  806. T.GOODSCODE,
  807. T.GROUTINGLINECODE,
  808. COUNT( T.BARCODE ) count
  809. FROM
  810. (
  811. SELECT DISTINCT
  812. TPPD.GOODSCODE,
  813. TPGL.GROUTINGLINECODE,
  814. TPS.BARCODE
  815. FROM
  816. TP_PM_SEMICHECK TPS
  817. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  818. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  819. WHERE
  820. TPS.SEMICHECKTYPE = 2
  821. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  822. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  823. AND TPGL.TESTFLAG = 0
  824. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  825. AND TPS.VALUEFLAG = 1
  826. ) T
  827. GROUP BY
  828. T.GOODSCODE,
  829. T.GROUTINGLINECODE
  830. ) BJFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  831. AND BJFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  832. LEFT JOIN (--半检二次不合格
  833. SELECT
  834. T.GOODSCODE,
  835. T.GROUTINGLINECODE,
  836. COUNT( T.BARCODE ) count
  837. FROM
  838. (
  839. SELECT DISTINCT
  840. TPPD.GOODSCODE,
  841. TPGL.GROUTINGLINECODE,
  842. TPS.BARCODE
  843. FROM
  844. TP_PM_SEMICHECK TPS
  845. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  846. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  847. WHERE--TPS.GOODSLEVELID IN (13)
  848. TPS.RESEMICHECKTYPE = 2
  849. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  850. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  851. AND TPGL.TESTFLAG = 0
  852. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  853. AND TPS.VALUEFLAG = 1
  854. ) T
  855. GROUP BY
  856. T.GOODSCODE,
  857. T.GROUTINGLINECODE
  858. ) BJFFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  859. AND BJFFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  860. WHERE
  861. TPPD.CREATETIME >= TRUNC( SYSDATE )
  862. AND TPPD.PROCEDUREID IN ( 118, 92, 88 )
  863. AND TPGL.TESTFLAG = 0
  864. AND TPPD.VALUEFLAG = 1
  865. AND ( SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  866. GROUP BY
  867. TPPD.GOODSCODE,
  868. TPGL.GROUTINGLINECODE,
  869. BJFG.count,
  870. BJFP.count,
  871. BJFGBH.count,
  872. BJFFP.count
  873. ORDER BY
  874. TPPD.GOODSCODE
  875. ) B
  876. ) Z
  877. GROUP BY GROUPING SETS((Z.产品型号),(Z.产品型号,Z.成型产线, Z.检验数量,Z.合格品数, Z.返工品数, Z.返工合格数,Z.综合合格数),())
  878. )H) B WHERE B.合格品数 >0
  879. ";
  880. //直接获取不分页数据
  881. DataTable dt = conn.ExecuteDatatable(sqlStr);
  882. int a = 1;
  883. string jsonStr = new JsonResult(dt).ToJson();
  884. context.Response.Write(jsonStr);
  885. }
  886. //二检产线信息
  887. if (context.Request["m"].ToString() == "MonthTabletwo")
  888. {
  889. string sqlStr = @" SELECT
  890. B.产品型号 AS 产品型号,
  891. B.成型产线 AS 成型产线,
  892. B.检验数量 AS 检验数量,
  893. B.合格品数 AS 合格品数,
  894. B.返工品数 AS 返工品数,
  895. B.返工合格数 AS 返工合格数,
  896. B.综合合格数 AS 综合合格数,
  897. TO_CHAR((B.合格品数/B.检验数量)* 100,'9,990.00') || '%' AS 一次合格率,
  898. CASE WHEN B.返工合格数 = 0 AND B.返工品数 > 0 THEN '0%'
  899. WHEN B.返工合格数 > 0 AND B.返工品数 = 0 THEN '100%'
  900. WHEN B.返工合格数 > 0 AND B.返工品数 > 0 THEN TO_CHAR((B.返工合格数/B.返工品数)* 100,'9,990.00') || '%' ELSE '0%' END AS 返工合格率,
  901. TO_CHAR((B.综合合格数/B.检验数量)* 100,'9,990.00') || '%' AS 综合合格率
  902. FROM(
  903. SELECT
  904. --decode( H.gid, 7, '总计', 3, '合计【' || H.产品型号 || '】', 0, H.产品型号, '--' ) 产品型号,
  905. decode( H.gid, 1, '小计', 0, H.产品型号, '总计' ) 产品型号,
  906. decode( H.gid, 1, '--', 0, H.成型产线, '--' ) 成型产线,
  907. decode( H.gid, 1, H.检验数量, 0, H.检验数量, H.检验数量 ) 检验数量,
  908. decode( H.gid, 1, H.合格品数, 0, H.合格品数, H.合格品数 ) 合格品数,
  909. decode( H.gid, 1, H.返工品数, 0, H.返工品数, H.返工品数 ) 返工品数,
  910. decode( H.gid, 1, H.返工合格数, 0, H.返工合格数, H.返工合格数 ) 返工合格数,
  911. decode( H.gid, 1, H.综合合格数, 0, H.综合合格数, H.综合合格数 ) 综合合格数
  912. FROM
  913. (
  914. SELECT
  915. grouping_id(Z.产品型号, Z.成型产线) gid,
  916. Z.产品型号,
  917. Z.成型产线,
  918. SUM(Z.检验数量) 检验数量,
  919. SUM(Z.合格品数) 合格品数,
  920. SUM(Z.返工品数) 返工品数,
  921. SUM(Z.返工合格数) 返工合格数,
  922. SUM(Z.综合合格数) 综合合格数
  923. FROM
  924. (
  925. SELECT
  926. B.GOODSCODE AS 产品型号,
  927. B.GROUTINGLINECODE AS 成型产线,
  928. B.检验 AS 检验数量,
  929. B.检验 - B.返工 - B.一次不合格 AS 合格品数,
  930. B.返工 AS 返工品数,
  931. B.返工 - B.二次不合格 AS 返工合格数,
  932. B.检验 - B.一次不合格 - B.二次不合格 AS 综合合格数
  933. FROM
  934. (
  935. SELECT
  936. TPPD.GOODSCODE,
  937. TPGL.GROUTINGLINECODE,
  938. COUNT( TPPD.BARCODE ) 检验,
  939. CASE
  940. WHEN BJFG.count IS NULL THEN
  941. 0 ELSE BJFG.count
  942. END 返工,
  943. CASE
  944. WHEN BJFP.count IS NULL THEN
  945. 0 ELSE BJFP.count
  946. END 一次不合格,
  947. CASE
  948. WHEN BJFGH.count IS NULL THEN
  949. 0 ELSE BJFGH.count
  950. END 返工合格,
  951. CASE
  952. WHEN BJFFP.count IS NULL THEN
  953. 0 ELSE BJFFP.count
  954. END 二次不合格
  955. FROM
  956. TP_PM_PRODUCTIONDATA TPPD
  957. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  958. LEFT JOIN (--半检一检返工数
  959. SELECT
  960. T.GOODSCODE,
  961. T.GROUTINGLINECODE,
  962. COUNT( T.BARCODE ) count
  963. FROM
  964. (
  965. SELECT DISTINCT
  966. TPPD.GOODSCODE,
  967. TPGL.GROUTINGLINECODE,
  968. TPS.BARCODE
  969. FROM
  970. TP_PM_SEMICHECK TPS
  971. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  972. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  973. WHERE
  974. TPS.SEMICHECKTYPE = 1
  975. AND TPS.PROCEDUREID IN ( 117 )
  976. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  977. AND TPGL.TESTFLAG = 0
  978. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  979. AND TPS.VALUEFLAG = 1
  980. ) T
  981. GROUP BY
  982. T.GOODSCODE,
  983. T.GROUTINGLINECODE
  984. ) BJFG ON BJFG.GOODSCODE = TPPD.GOODSCODE
  985. AND BJFG.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  986. LEFT JOIN (--半检二检返工合格数
  987. SELECT
  988. T.GOODSCODE,
  989. T.GROUTINGLINECODE,
  990. COUNT( T.BARCODE ) count
  991. FROM
  992. (
  993. SELECT DISTINCT
  994. TPPD.GOODSCODE,
  995. TPGL.GROUTINGLINECODE,
  996. TPS.BARCODE
  997. FROM
  998. TP_PM_SEMICHECK TPS
  999. LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  1000. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  1001. WHERE
  1002. TPS.RESEMICHECKTYPE = 1
  1003. AND TPS.PROCEDUREID IN ( 117 )
  1004. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  1005. AND TPGL.TESTFLAG = 0
  1006. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  1007. ) T
  1008. GROUP BY
  1009. T.GOODSCODE,
  1010. T.GROUTINGLINECODE
  1011. ORDER BY
  1012. T.GOODSCODE
  1013. ) BJFGH ON BJFGH.GOODSCODE = TPPD.GOODSCODE
  1014. AND BJFGH.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  1015. LEFT JOIN (--半检一次不合格
  1016. SELECT
  1017. T.GOODSCODE,
  1018. T.GROUTINGLINECODE,
  1019. COUNT( T.BARCODE ) count
  1020. FROM
  1021. (
  1022. SELECT DISTINCT
  1023. TPPD.GOODSCODE,
  1024. TPGL.GROUTINGLINECODE,
  1025. TPS.BARCODE
  1026. FROM
  1027. TP_PM_SEMICHECK TPS
  1028. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  1029. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  1030. WHERE
  1031. TPS.SEMICHECKTYPE =2
  1032. AND TPS.PROCEDUREID IN ( 117 )
  1033. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  1034. AND TPGL.TESTFLAG = 0
  1035. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  1036. AND TPS.VALUEFLAG = 1
  1037. ) T
  1038. GROUP BY
  1039. T.GOODSCODE,
  1040. T.GROUTINGLINECODE
  1041. ) BJFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  1042. AND BJFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  1043. LEFT JOIN (--半检二次不合格
  1044. SELECT
  1045. T.GOODSCODE,
  1046. T.GROUTINGLINECODE,
  1047. COUNT( T.BARCODE ) count
  1048. FROM
  1049. (
  1050. SELECT DISTINCT
  1051. TPPD.GOODSCODE,
  1052. TPGL.GROUTINGLINECODE,
  1053. TPS.BARCODE
  1054. FROM
  1055. TP_PM_SEMICHECK TPS
  1056. FULL JOIN TP_PM_PRODUCTIONDATA TPPD ON TPS.BARCODE = TPPD.BARCODE
  1057. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  1058. WHERE--TPS.GOODSLEVELID IN (13)
  1059. TPS.RESEMICHECKTYPE = 2
  1060. AND TPS.PROCEDUREID IN ( 117 )
  1061. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  1062. AND TPGL.TESTFLAG = 0
  1063. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  1064. AND TPS.VALUEFLAG = 1
  1065. ) T
  1066. GROUP BY
  1067. T.GOODSCODE,
  1068. T.GROUTINGLINECODE
  1069. ) BJFFP ON BJFP.GOODSCODE = TPPD.GOODSCODE
  1070. AND BJFFP.GROUTINGLINECODE = TPGL.GROUTINGLINECODE
  1071. WHERE
  1072. TPPD.CREATETIME >= TRUNC( SYSDATE )
  1073. AND TPPD.PROCEDUREID IN ( 117 )
  1074. AND TPGL.TESTFLAG = 0
  1075. AND TPPD.VALUEFLAG = 1
  1076. AND ( SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C05' OR SUBSTR( TPGL.GROUTINGLINECODE, 1, 3 ) = 'C06' )
  1077. GROUP BY
  1078. TPPD.GOODSCODE,
  1079. TPGL.GROUTINGLINECODE,
  1080. BJFG.count,
  1081. BJFP.count,
  1082. BJFGH.count,
  1083. BJFFP.count
  1084. ORDER BY
  1085. TPPD.GOODSCODE
  1086. ) B
  1087. ) Z
  1088. GROUP BY GROUPING SETS((Z.产品型号),(Z.产品型号,Z.成型产线, Z.检验数量,Z.合格品数, Z.返工品数, Z.返工合格数,Z.综合合格数),())
  1089. )H) B
  1090. ";
  1091. //直接获取不分页数据
  1092. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1093. string jsonStr = new JsonResult(dt).ToJson();
  1094. context.Response.Write(jsonStr);
  1095. }
  1096. }
  1097. }
  1098. public bool IsReusable {
  1099. get {
  1100. return false;
  1101. }
  1102. }
  1103. }