demo.ashx 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389
  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() == "defectc")
  18. {
  19. string sqlStr = @"SELECT
  20. substr(TT1.责任工号,4,6) 责任工号,
  21. TT1.缺陷TOP1,
  22. TT1.缺陷TOP2,
  23. TT1.缺陷TOP3,
  24. CASE WHEN TT2.缺陷名称 IS NULL THEN cast('无' as nvarchar2(10)) ELSE TT2.缺陷名称 END 缺陷名称
  25. FROM(
  26. SELECT
  27. ROWNUM r,
  28. P.责任工号 责任工号,
  29. P.缺陷TOP1 缺陷TOP1,
  30. P.缺陷TOP2,
  31. P.缺陷TOP3
  32. FROM(
  33. SELECT
  34. T.DEFECTUSERCODE 责任工号,
  35. CASE WHEN T1.count IS NULL THEN 0 ELSE T1.count END 缺陷TOP1,
  36. CASE WHEN T2.count IS NULL THEN 0 ELSE T2.count END 缺陷TOP2,
  37. CASE WHEN T3.count IS NULL THEN 0 ELSE T3.count END 缺陷TOP3
  38. FROM(
  39. SELECT
  40. DISTINCT
  41. TPD.DEFECTUSERCODE
  42. FROM
  43. TP_PM_DEFECT TPD
  44. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  45. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  46. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  47. WHERE
  48. TPD.CREATETIME >= TRUNC( SYSDATE )
  49. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  50. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  51. AND TPD.DEFECTDEDUCTIONNUM >= 1
  52. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  53. ORDER BY TPD.DEFECTUSERCODE
  54. )T
  55. FULL JOIN
  56. (SELECT
  57. DISTINCT
  58. TMD.S_NAME,
  59. TPD.DEFECTUSERCODE,
  60. COUNT( * ) count
  61. FROM
  62. TP_PM_DEFECT TPD
  63. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  64. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  65. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  66. WHERE
  67. TPD.CREATETIME >= TRUNC( SYSDATE )
  68. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  69. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  70. AND TPD.DEFECTDEDUCTIONNUM >= 1
  71. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  72. AND TMD.S_NAME = (
  73. SELECT
  74. T1.S_NAME
  75. FROM
  76. (
  77. SELECT
  78. ROWNUM r,
  79. TT.S_NAME
  80. FROM(
  81. SELECT
  82. TMD.S_NAME,
  83. count( DISTINCT TPD.BARCODE ) AS 数量
  84. FROM
  85. TP_PM_DEFECT TPD
  86. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  87. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  88. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  89. WHERE
  90. TPD.CREATETIME >= TRUNC( SYSDATE )
  91. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  92. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  93. AND TPD.DEFECTDEDUCTIONNUM >= 1
  94. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  95. GROUP BY
  96. TMD.S_NAME
  97. ORDER BY
  98. 数量 DESC )TT
  99. ) T1
  100. WHERE
  101. T1.r = 1
  102. )
  103. GROUP BY
  104. TMD.S_NAME,TPD.DEFECTUSERCODE
  105. ORDER BY
  106. COUNT( * ) DESC
  107. )T1 ON T.DEFECTUSERCODE = T1.DEFECTUSERCODE
  108. FULL JOIN
  109. (SELECT
  110. DISTINCT
  111. TMD.S_NAME,
  112. TPD.DEFECTUSERCODE,
  113. COUNT( * ) count
  114. FROM
  115. TP_PM_DEFECT TPD
  116. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  117. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  118. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  119. WHERE
  120. TPD.CREATETIME >= TRUNC( SYSDATE )
  121. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  122. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  123. AND TPD.DEFECTDEDUCTIONNUM >= 1
  124. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  125. AND TMD.S_NAME = (
  126. SELECT
  127. T1.S_NAME
  128. FROM
  129. (
  130. SELECT
  131. ROWNUM r,
  132. TT.S_NAME
  133. FROM(
  134. SELECT
  135. TMD.S_NAME,
  136. count( DISTINCT TPD.BARCODE ) AS 数量
  137. FROM
  138. TP_PM_DEFECT TPD
  139. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  140. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  141. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  142. WHERE
  143. TPD.CREATETIME >= TRUNC( SYSDATE )
  144. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  145. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  146. AND TPD.DEFECTDEDUCTIONNUM >= 1
  147. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  148. GROUP BY
  149. TMD.S_NAME
  150. ORDER BY
  151. 数量 DESC )TT
  152. ) T1
  153. WHERE
  154. T1.r = 2
  155. )
  156. GROUP BY
  157. TMD.S_NAME,TPD.DEFECTUSERCODE
  158. ORDER BY
  159. COUNT( * ) DESC
  160. )T2 ON T.DEFECTUSERCODE = T2.DEFECTUSERCODE
  161. FULL JOIN
  162. (SELECT
  163. DISTINCT
  164. TMD.S_NAME,
  165. TPD.DEFECTUSERCODE,
  166. COUNT( * ) count
  167. FROM
  168. TP_PM_DEFECT TPD
  169. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  170. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  171. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  172. WHERE
  173. TPD.CREATETIME >= TRUNC( SYSDATE )
  174. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  175. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  176. AND TPD.DEFECTDEDUCTIONNUM >= 1
  177. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  178. AND TMD.S_NAME = (
  179. SELECT
  180. T1.S_NAME
  181. FROM
  182. (
  183. SELECT
  184. ROWNUM r,
  185. TT.S_NAME
  186. FROM(
  187. SELECT
  188. TMD.S_NAME,
  189. count( DISTINCT TPD.BARCODE ) AS 数量
  190. FROM
  191. TP_PM_DEFECT TPD
  192. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  193. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  194. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  195. WHERE
  196. TPD.CREATETIME >= TRUNC( SYSDATE )
  197. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  198. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  199. AND TPD.DEFECTDEDUCTIONNUM >= 1
  200. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  201. GROUP BY
  202. TMD.S_NAME
  203. ORDER BY
  204. 数量 DESC )TT
  205. ) T1
  206. WHERE
  207. T1.r = 3
  208. )
  209. GROUP BY
  210. TMD.S_NAME,TPD.DEFECTUSERCODE
  211. ORDER BY
  212. COUNT( * ) DESC
  213. )T3 ON T.DEFECTUSERCODE = T3.DEFECTUSERCODE ORDER BY T.DEFECTUSERCODE)P )TT1
  214. FULL JOIN
  215. (
  216. SELECT
  217. TT.r,
  218. TT.缺陷名称
  219. FROM(
  220. SELECT
  221. ROWNUM r,
  222. T.S_NAME AS 缺陷名称
  223. FROM
  224. (
  225. SELECT
  226. T1.S_NAME,
  227. T1.数量
  228. FROM
  229. (
  230. SELECT
  231. TMD.S_NAME,
  232. count( DISTINCT TPD.BARCODE ) AS 数量
  233. FROM
  234. TP_PM_DEFECT TPD
  235. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  236. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPD.BARCODE
  237. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  238. WHERE
  239. TPD.CREATETIME >= TRUNC( SYSDATE )
  240. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  241. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05')
  242. AND TPD.DEFECTDEDUCTIONNUM >= 1
  243. AND SUBSTR(TPD.DEFECTUSERCODE,1,3) = 'SGY'
  244. GROUP BY
  245. TMD.S_NAME
  246. ORDER BY
  247. 数量 DESC
  248. ) T1
  249. WHERE
  250. ROWNUM < 4
  251. ) T
  252. )TT WHERE TT.r < 4)TT2 ON TT1.r = TT2.r";
  253. //直接获取不分页数据
  254. DataTable dt = conn.ExecuteDatatable(sqlStr);
  255. string jsonStr = new JsonResult(dt).ToJson();
  256. context.Response.Write(jsonStr);
  257. }
  258. //产量柱状图
  259. if (context.Request["m"].ToString() == "cl")
  260. {
  261. string sqlStr = @"SELECT
  262. ROWNUM,
  263. substr(T.USERCODE,4,6) USERCODE,
  264. T.count
  265. FROM(
  266. SELECT
  267. TPG.USERCODE,
  268. COUNT( * ) count
  269. FROM
  270. TP_PM_GROUTINGDAILYDETAIL TPG
  271. WHERE
  272. TPG.CREATETIME >= TRUNC( SYSDATE )
  273. AND TPG.GROUTINGFLAG = 1
  274. AND ( SUBSTR( TPG.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  275. AND TPG.VALUEFLAG = 1
  276. AND TPG.TESTFLAG = 0
  277. GROUP BY
  278. TPG.USERCODE)T ORDER BY ROWNUM DESC";
  279. //直接获取不分页数据
  280. DataTable dt = conn.ExecuteDatatable(sqlStr);
  281. string jsonStr = new JsonResult(dt).ToJson();
  282. context.Response.Write(jsonStr);
  283. }
  284. //半检缺陷扇形图
  285. if (context.Request["m"].ToString() == "defect")
  286. {
  287. string sqlStr = @"SELECT
  288. substr(TT1.责任工号,4,6) 责任工号,
  289. TT1.缺陷TOP1,
  290. TT1.缺陷TOP2,
  291. TT1.缺陷TOP3,
  292. CASE WHEN TT2.缺陷名称 IS NULL THEN cast('无' as nvarchar2(10)) ELSE TT2.缺陷名称 END 缺陷名称
  293. FROM(
  294. SELECT
  295. ROWNUM r,
  296. T.DEFECTUSERCODE 责任工号,
  297. T1.count 缺陷TOP1,
  298. CASE WHEN T2.count IS NULL THEN 0 ELSE T2.count END 缺陷TOP2,
  299. CASE WHEN T3.count IS NULL THEN 0 ELSE T3.count END 缺陷TOP3
  300. FROM(
  301. SELECT DISTINCT
  302. TPSD.DEFECTUSERCODE
  303. FROM
  304. TP_PM_SEMICHECK TPS
  305. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  306. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  307. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  308. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  309. WHERE
  310. TPS.CREATETIME >= TRUNC( SYSDATE )
  311. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  312. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  313. AND TPGL.TESTFLAG = 0
  314. )T
  315. FULL JOIN
  316. (SELECT
  317. TMD.S_NAME,
  318. TPSD.DEFECTUSERCODE,
  319. COUNT( * ) count
  320. FROM
  321. TP_PM_SEMICHECK TPS
  322. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  323. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  324. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  325. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  326. WHERE
  327. TPS.CREATETIME >= TRUNC( SYSDATE )
  328. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  329. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  330. AND TPGL.TESTFLAG = 0
  331. AND TMD.S_NAME = (
  332. SELECT
  333. TT.缺陷名称
  334. FROM(
  335. SELECT
  336. ROWNUM,
  337. T.S_NAME AS 缺陷名称
  338. FROM
  339. (
  340. SELECT
  341. TMD.S_NAME,
  342. COUNT( * ) 数量
  343. FROM
  344. TP_PM_SEMICHECK TPS
  345. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  346. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  347. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  348. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  349. WHERE
  350. TPS.CREATETIME >= TRUNC( SYSDATE )
  351. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  352. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  353. AND TPGL.TESTFLAG = 0
  354. GROUP BY
  355. TMD.S_NAME
  356. ORDER BY
  357. COUNT( * ) DESC
  358. ) T
  359. WHERE
  360. ROWNUM = 1)TT
  361. )
  362. GROUP BY
  363. TMD.S_NAME,TPSD.DEFECTUSERCODE
  364. ORDER BY
  365. COUNT( * ) DESC
  366. )T1 ON T.DEFECTUSERCODE = T1.DEFECTUSERCODE
  367. FULL JOIN
  368. (SELECT
  369. TMD.S_NAME,
  370. TPSD.DEFECTUSERCODE,
  371. COUNT( * ) count
  372. FROM
  373. TP_PM_SEMICHECK TPS
  374. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  375. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  376. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  377. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  378. WHERE
  379. TPS.CREATETIME >= TRUNC( SYSDATE )
  380. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  381. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  382. AND TPGL.TESTFLAG = 0
  383. AND TMD.S_NAME = (
  384. SELECT
  385. TT.缺陷名称
  386. FROM(
  387. SELECT
  388. ROWNUM r,
  389. T.S_NAME AS 缺陷名称
  390. FROM
  391. (
  392. SELECT
  393. TMD.S_NAME,
  394. COUNT( * ) 数量
  395. FROM
  396. TP_PM_SEMICHECK TPS
  397. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  398. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  399. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  400. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  401. WHERE
  402. TPS.CREATETIME >= TRUNC( SYSDATE )
  403. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  404. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  405. AND TPGL.TESTFLAG = 0
  406. GROUP BY
  407. TMD.S_NAME
  408. ORDER BY
  409. COUNT( * ) DESC
  410. ) T
  411. )TT WHERE TT.r = 2
  412. )
  413. GROUP BY
  414. TMD.S_NAME,TPSD.DEFECTUSERCODE
  415. ORDER BY
  416. COUNT( * ) DESC
  417. )T2 ON T.DEFECTUSERCODE = T2.DEFECTUSERCODE
  418. FULL JOIN
  419. (SELECT
  420. TMD.S_NAME,
  421. TPSD.DEFECTUSERCODE,
  422. COUNT( * ) count
  423. FROM
  424. TP_PM_SEMICHECK TPS
  425. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  426. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  427. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  428. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  429. WHERE
  430. TPS.CREATETIME >= TRUNC( SYSDATE )
  431. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  432. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  433. AND TPGL.TESTFLAG = 0
  434. AND TMD.S_NAME = (
  435. SELECT
  436. TT.缺陷名称
  437. FROM(
  438. SELECT
  439. ROWNUM r,
  440. T.S_NAME AS 缺陷名称
  441. FROM
  442. (
  443. SELECT
  444. TMD.S_NAME,
  445. COUNT( * ) 数量
  446. FROM
  447. TP_PM_SEMICHECK TPS
  448. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  449. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  450. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  451. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  452. WHERE
  453. TPS.CREATETIME >= TRUNC( SYSDATE )
  454. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  455. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  456. AND TPGL.TESTFLAG = 0
  457. GROUP BY
  458. TMD.S_NAME
  459. ORDER BY
  460. COUNT( * ) DESC
  461. ) T
  462. )TT WHERE TT.r = 3
  463. )
  464. GROUP BY
  465. TMD.S_NAME,TPSD.DEFECTUSERCODE
  466. ORDER BY
  467. COUNT( * ) DESC
  468. )T3 ON T.DEFECTUSERCODE = T3.DEFECTUSERCODE ORDER BY r)TT1
  469. FULL JOIN
  470. (
  471. SELECT
  472. TT.r,
  473. TT.缺陷名称
  474. FROM(
  475. SELECT
  476. ROWNUM r,
  477. T.S_NAME AS 缺陷名称
  478. FROM
  479. (
  480. SELECT
  481. TMD.S_NAME,
  482. COUNT( * ) 数量
  483. FROM
  484. TP_PM_SEMICHECK TPS
  485. LEFT JOIN TP_PM_SemiCheckDefect TPSD ON TPSD.SemiCheckID = TPS.SemiCheckID
  486. LEFT JOIN TP_MST_DEFECT TMD ON TPSD.DEFECTCODE = TMD.DEFECTCODE
  487. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  488. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  489. WHERE
  490. TPS.CREATETIME >= TRUNC( SYSDATE )
  491. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  492. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 3 ) = 'C05' )
  493. AND TPGL.TESTFLAG = 0
  494. GROUP BY
  495. TMD.S_NAME
  496. ORDER BY
  497. COUNT( * ) DESC
  498. ) T
  499. )TT WHERE TT.r < 4)TT2 ON TT1.r = TT2.r ORDER BY 责任工号";
  500. //直接获取不分页数据
  501. DataTable dt = conn.ExecuteDatatable(sqlStr);
  502. string jsonStr = new JsonResult(dt).ToJson();
  503. context.Response.Write(jsonStr);
  504. }
  505. //成型折线图
  506. if (context.Request["m"].ToString() == "zx")
  507. {
  508. string sqlStr = @"SELECT
  509. CASE
  510. WHEN
  511. T4.半检数量 = 0 THEN
  512. '100%' ELSE TO_CHAR( ROUND( T4.半检合格 / T4.半检数量, 4 ) * 100, '9,990.00' ) || '%'
  513. END AS 半检合格率,
  514. CASE
  515. WHEN T4.本烧数量 = 0 THEN
  516. '100%' ELSE TO_CHAR( ROUND( T4.本烧合格 / T4.本烧数量, 4 ) * 100, '9,990.00' ) || '%'
  517. END AS 本烧合格率,
  518. SUBSTR( T4.CREATETIME, 5, 2 )||'.'||SUBSTR( T4.CREATETIME, 7, 2 ) AS 日期
  519. FROM
  520. (
  521. SELECT
  522. T.半检数量,
  523. T.半检数量 - ( CASE WHEN T2.半检不合格数量 IS NULL THEN 0 ELSE T2.半检不合格数量 END ) AS 半检合格,
  524. T1.本烧数量,
  525. T3.本烧不合格数量,
  526. T1.本烧数量 - T3.本烧不合格数量 AS 本烧合格,
  527. T.CREATETIME
  528. FROM
  529. (--半检数量
  530. SELECT
  531. CASE
  532. WHEN
  533. T2.半检数量 IS NULL THEN
  534. 0 ELSE T2.半检数量
  535. END 半检数量,
  536. T1.CREATETIME CREATETIME
  537. FROM
  538. (
  539. SELECT
  540. 0 半检数量,
  541. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) AS CREATETIME
  542. FROM
  543. DUAL CONNECT BY ROWNUM <= 7
  544. ORDER BY
  545. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) DESC
  546. ) T1
  547. LEFT JOIN (
  548. SELECT
  549. 半检数量,
  550. CREATETIME
  551. FROM
  552. (
  553. SELECT DISTINCT
  554. CASE
  555. WHEN
  556. COUNT( TPPD.BARCODE ) IS NULL THEN
  557. 0 ELSE COUNT( TPPD.BARCODE )
  558. END 半检数量,
  559. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  560. FROM
  561. TP_PM_PRODUCTIONDATA TPPD
  562. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  563. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  564. WHERE
  565. TPPD.PROCEDUREID IN ( 118, 92, 88 )
  566. AND PGD.TESTFLAG = 0
  567. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 2) = 'C0')
  568. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  569. AND TPPD.VALUEFLAG = 1
  570. GROUP BY
  571. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  572. ORDER BY
  573. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  574. )
  575. ) T2 ON T1.CREATETIME = T2.CREATETIME
  576. ORDER BY
  577. T1.CREATETIME DESC
  578. ) T
  579. LEFT JOIN (
  580. SELECT
  581. CASE
  582. WHEN
  583. T2.半检不合格数量 IS NULL THEN
  584. 0 ELSE T2.半检不合格数量
  585. END 半检不合格数量,
  586. T1.CREATETIME CREATETIME
  587. FROM
  588. (
  589. SELECT
  590. 0 半检不合格数量,
  591. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) AS CREATETIME
  592. FROM
  593. DUAL CONNECT BY ROWNUM <= 7
  594. ORDER BY
  595. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) DESC
  596. ) T1
  597. LEFT JOIN (
  598. SELECT
  599. 半检不合格数量,
  600. CREATETIME
  601. FROM
  602. (--半检不合格
  603. SELECT DISTINCT
  604. NVL( COUNT( TPS.BARCODE ), 0 ) 半检不合格数量,
  605. to_char( TPS.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  606. FROM
  607. TP_PM_SEMICHECK TPS
  608. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  609. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  610. WHERE
  611. TPS.SEMICHECKTYPE = 2
  612. AND TPS.PROCEDUREID IN ( 118, 92, 88 )
  613. AND TPS.CREATETIME >= trunc( SYSDATE - 6 )
  614. AND TPGL.TESTFLAG = 0
  615. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0')
  616. AND TPS.VALUEFLAG = 1
  617. GROUP BY
  618. to_char( TPS.CREATETIME, 'yyyymmdd' )
  619. ORDER BY
  620. to_char( TPS.CREATETIME, 'yyyymmdd' ) DESC
  621. )
  622. ) T2 ON T1.CREATETIME = T2.CREATETIME
  623. ORDER BY
  624. T1.CREATETIME DESC
  625. ) T2 ON T2.CREATETIME = T.CREATETIME
  626. LEFT JOIN (
  627. SELECT
  628. CASE
  629. WHEN
  630. T2.本烧数量 IS NULL THEN
  631. 0 ELSE T2.本烧数量
  632. END 本烧数量,
  633. T1.CREATETIME CREATETIME
  634. FROM
  635. (
  636. SELECT
  637. 0 本烧数量,
  638. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) AS CREATETIME
  639. FROM
  640. DUAL CONNECT BY ROWNUM <= 7
  641. ORDER BY
  642. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) DESC
  643. ) T1
  644. LEFT JOIN (
  645. SELECT
  646. 本烧数量,
  647. CREATETIME
  648. FROM
  649. (
  650. SELECT DISTINCT--本烧数量
  651. COUNT( TPPD.BARCODE ) 本烧数量,
  652. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  653. FROM
  654. TP_PM_PRODUCTIONDATA TPPD
  655. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  656. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  657. WHERE
  658. ( ( TPPD.procedureid = 11 AND TPPD.valueflag = '1' )
  659. OR ( TPPD.procedureid = 104 AND TPPD.isrefire = '0' AND TPPD.checkflag = '1' ) )
  660. AND TPPD.PROCEDUREID IN ( 11,104 )
  661. AND PGD.RECYCLINGFLAG = '0'
  662. AND TPPD.ISREFIRE = 0
  663. AND PGD.TESTFLAG = 0
  664. AND TPPD.VALUEFLAG = 1
  665. AND PGD.RECYCLINGFLAG = '0'
  666. AND TPPD.AccountID = 1
  667. AND TPPD.KILNID IN ( 1, 2, 5 )
  668. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  669. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  670. GROUP BY
  671. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  672. ORDER BY
  673. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  674. )
  675. ) T2 ON T1.CREATETIME = T2.CREATETIME
  676. ORDER BY
  677. T1.CREATETIME DESC
  678. ) T1 ON T.CREATETIME = T1.CREATETIME
  679. LEFT JOIN (
  680. SELECT
  681. CASE
  682. WHEN
  683. T2.本烧不合格数量 IS NULL THEN
  684. 0 ELSE T2.本烧不合格数量
  685. END 本烧不合格数量,
  686. T1.CREATETIME CREATETIME
  687. FROM
  688. (
  689. SELECT
  690. 0 本烧不合格数量,
  691. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) AS CREATETIME
  692. FROM
  693. DUAL CONNECT BY ROWNUM <= 7
  694. ORDER BY
  695. to_char( ( TRUNC( SYSDATE - 6 ) + ROWNUM - 1 ), 'yyyymmdd' ) DESC
  696. ) T1
  697. LEFT JOIN (
  698. SELECT
  699. 本烧不合格数量,
  700. CREATETIME
  701. FROM
  702. (
  703. SELECT
  704. to_char( T1.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
  705. COUNT( T1.BARCODE ) AS 本烧不合格数量
  706. FROM
  707. (
  708. SELECT DISTINCT
  709. T.BARCODE,
  710. TPPD.CREATETIME
  711. FROM
  712. TP_PM_PRODUCTIONDATA TPPD
  713. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  714. LEFT JOIN (
  715. SELECT
  716. TPPD.BARCODE
  717. FROM
  718. TP_PM_PRODUCTIONDATA TPPD
  719. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  720. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  721. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  722. WHERE
  723. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  724. AND TPPD.GOODSLEVELID IN ( 6, 7 )
  725. AND TPPD.CHECKBATCHNO = 1
  726. AND TPGL.TESTFLAG = 0
  727. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  728. AND TPD.DEFECTNAME is not null
  729. AND TPPD.VALUEFLAG = 1
  730. AND TPPD.ISREFIRE = 0
  731. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0')
  732. ) T ON T.BARCODE = TPPD.BARCODE
  733. WHERE
  734. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  735. AND TPPD.PROCEDUREID IN ( 104 )
  736. AND length( TPPD.kilncarbatchno ) > 0
  737. AND TPGL.TESTFLAG = 0
  738. AND TPPD.VALUEFLAG = 1
  739. AND TPPD.ISREFIRE = 0
  740. AND ( SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0')
  741. ) T1
  742. GROUP BY
  743. to_char( T1.CREATETIME, 'yyyymmdd' )
  744. ORDER BY
  745. to_char( T1.CREATETIME, 'yyyymmdd' ) DESC
  746. )
  747. ) T2 ON T1.CREATETIME = T2.CREATETIME
  748. ORDER BY
  749. T1.CREATETIME DESC
  750. ) T3 ON T3.CREATETIME = T.CREATETIME
  751. ) T4
  752. ORDER BY
  753. CREATETIME
  754. ";
  755. //直接获取不分页数据
  756. DataTable dt = conn.ExecuteDatatable(sqlStr);
  757. string jsonStr = new JsonResult(dt).ToJson();
  758. context.Response.Write(jsonStr);
  759. }
  760. //产线信息
  761. if (context.Request["m"].ToString() == "MonthTable")
  762. {
  763. string sqlStr = @" SELECT
  764. B.GROUTINGLINENAME AS 成型线,
  765. B.USERCODE AS 工号,
  766. B.GOODSCODE AS 产品,
  767. CASE
  768. WHEN A.高压注浆数量 IS NULL THEN
  769. 0 ELSE A.高压注浆数量
  770. END AS 日注浆数,
  771. CASE
  772. WHEN A.成型数 IS NULL THEN
  773. 0 ELSE A.成型数
  774. END AS 日成型数,
  775. CASE
  776. WHEN A.注成率 IS NULL THEN
  777. '0%' ELSE A.注成率
  778. END AS 日注成率,
  779. CASE
  780. WHEN A.半检数量 IS NULL THEN
  781. 0 ELSE A.半检数量
  782. END AS 日半检数,
  783. CASE
  784. WHEN A.半检合格数量 IS NULL THEN
  785. 0 ELSE A.半检合格数量
  786. END AS 日半检合格数,
  787. CASE
  788. WHEN A.半检合格率 IS NULL THEN
  789. '0%' ELSE A.半检合格率
  790. END AS 日半检合格率,
  791. CASE
  792. WHEN A.成检数量 IS NULL THEN
  793. 0 ELSE A.成检数量
  794. END AS 日成检数,
  795. CASE
  796. WHEN A.成检合格数 IS NULL THEN
  797. 0 ELSE A.成检合格数
  798. END AS 日成检合格数,
  799. CASE
  800. WHEN A.成检合格率 IS NULL THEN
  801. '0' ELSE A.成检合格率
  802. END AS 日成检合格率,
  803. CASE
  804. WHEN B.高压注浆数量 IS NULL THEN
  805. 0 ELSE B.高压注浆数量
  806. END AS 月注浆数,
  807. CASE
  808. WHEN B.成型数 IS NULL THEN
  809. 0 ELSE B.成型数
  810. END AS 月成型数,
  811. CASE
  812. WHEN B.注成率 IS NULL THEN
  813. '0' ELSE B.注成率
  814. END AS 月注成率,
  815. CASE
  816. WHEN B.半检数量 IS NULL THEN
  817. 0 ELSE B.半检数量
  818. END AS 月半检数,
  819. CASE
  820. WHEN B.半检合格数量 IS NULL THEN
  821. 0 ELSE B.半检合格数量
  822. END AS 月半检合格数,
  823. CASE
  824. WHEN B.半检合格率 IS NULL THEN
  825. '0' ELSE B.半检合格率
  826. END AS 月半检合格率,
  827. CASE
  828. WHEN B.成检数量 IS NULL THEN
  829. 0 ELSE B.成检数量
  830. END AS 月成检数,
  831. CASE
  832. WHEN B.成检合格数 IS NULL THEN
  833. 0 ELSE B.成检合格数
  834. END AS 月成检合格数,
  835. CASE
  836. WHEN B.成检合格率 IS NULL THEN
  837. '0' ELSE B.成检合格率
  838. END AS 月成检合格率
  839. FROM
  840. (
  841. SELECT
  842. T.GROUTINGLINENAME,
  843. T.USERCODE,
  844. T.GOODSCODE,
  845. T.高压注浆数量,
  846. T.成型数,
  847. -- CASE
  848. --
  849. -- WHEN T.成型数 > 0 THEN
  850. -- TO_CHAR( T.成型数 / T.高压注浆数量 * 100, '9,990.00' ) || '%' ELSE 0 || '%'
  851. -- END AS 注成率,
  852. CASE
  853. WHEN T.成型数 = 0
  854. AND T.高压注浆数量 > 0 THEN
  855. '0%'
  856. WHEN T.成型数 > 0
  857. AND T.高压注浆数量 = 0 THEN
  858. '100.00%'
  859. WHEN T.成型数 = 0
  860. AND T.高压注浆数量 = 0 THEN
  861. '100.00%'
  862. WHEN T.成型数 >= 1
  863. AND T.高压注浆数量 >= 1 THEN
  864. TO_CHAR( T.成型数 / T.高压注浆数量 * 100, '9,990.00' ) || '%' ELSE '0%'
  865. END AS 注成率,
  866. T.半检数量,
  867. T.半检合格数量,
  868. CASE
  869. WHEN T.半检合格数量 = 0
  870. AND T.半检数量 > 0 THEN
  871. '0%'
  872. WHEN T.半检合格数量 > 0
  873. AND T.半检数量 = 0 THEN
  874. '100.00%'
  875. WHEN T.半检合格数量 = 0
  876. AND T.半检数量 = 0 THEN
  877. '100.00%'
  878. WHEN T.半检合格数量 > 0
  879. AND T.半检数量 > 0 THEN
  880. TO_CHAR( T.半检合格数量 / T.半检数量 * 100, '9,990.00' ) || '%' ELSE '0%'
  881. END AS 半检合格率,
  882. T.成检数量,
  883. T.成检合格数,
  884. CASE
  885. WHEN T.成检合格数 = 0
  886. AND T.成检数量 > 0 THEN
  887. '0%'
  888. WHEN T.成检合格数 > 0
  889. AND T.成检数量 = 0 THEN
  890. '100.00%'
  891. WHEN T.成检合格数 = 0
  892. AND T.成检数量 = 0 THEN
  893. '100.00%'
  894. WHEN T.成检合格数 > 0
  895. AND T.成检数量 > 0 THEN
  896. TO_CHAR( T.成检合格数 / T.成检数量 * 100, '9,990.00' ) || '%' ELSE '0%'
  897. END AS 成检合格率 --T.成检合格数/T.成检数量
  898. FROM
  899. (
  900. SELECT
  901. TPGL.GROUTINGLINENAME,
  902. TMU.USERCODE,
  903. TMG.GOODSCODE,
  904. SUM(
  905. CASE
  906. WHEN SUBSTR( TPGL.GROUTINGLINENAME, 1, 4 ) = 'C05A'
  907. AND TPPD.CREATETIME >= TRUNC( SYSDATE ) THEN
  908. 1 ELSE 0
  909. END
  910. ) 高压注浆数量,
  911. SUM(
  912. CASE
  913. WHEN SUBSTR( TPGL.GROUTINGLINENAME, 1, 4 ) = 'C05A'
  914. AND TPPD.CREATETIME >= TRUNC( SYSDATE )
  915. AND TPPD.SCRAPFLAG = '0' THEN
  916. 1 ELSE 0
  917. END
  918. ) 成型数,
  919. CASE
  920. WHEN BJJP.BJJPNUM IS NULL THEN
  921. 0 ELSE BJJP.BJJPNUM
  922. END AS 半检数量,
  923. CASE
  924. WHEN BJ.BJNUM IS NULL THEN
  925. 0 ELSE BJ.BJNUM
  926. END AS 半检不合格数量,
  927. CASE
  928. WHEN BJJP.BJJPNUM IS NULL THEN
  929. 0 ELSE BJJP.BJJPNUM
  930. END -
  931. CASE
  932. WHEN BJ.BJNUM IS NULL THEN
  933. 0 ELSE BJ.BJNUM
  934. END AS 半检合格数量,
  935. CASE
  936. WHEN CJ.CJNUM IS NULL THEN
  937. 0 ELSE CJ.CJNUM
  938. END AS 成检数量,
  939. CASE
  940. WHEN CJBHG.CJBHGNUM IS NULL THEN
  941. 0 ELSE CJBHG.CJBHGNUM
  942. END AS 成检不合格数量,
  943. CASE
  944. WHEN CJ.CJNUM IS NULL THEN
  945. 0 ELSE CJ.CJNUM
  946. END -
  947. CASE
  948. WHEN CJBHG.CJBHGNUM IS NULL THEN
  949. 0 ELSE CJBHG.CJBHGNUM
  950. END AS 成检合格数
  951. FROM--TP_PM_PRODUCTIONDATA TPP
  952. --INNER JOIN
  953. TP_PM_GROUTINGDAILYDETAIL TPPD --TPPD ON TPP.BARCODE = TPPD.BARCODE
  954. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = TPPD.GROUTINGLINEID
  955. LEFT JOIN TP_MST_USER TMU ON TPPD.USERID = TMU.USERID
  956. LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID
  957. LEFT JOIN (--半检数量
  958. SELECT DISTINCT
  959. COUNT( TPS.BARCODE ) BJJPNUM,
  960. PGD.GROUTINGLINECODE,
  961. PGD.USERCODE,
  962. PGD.GOODSCODE,
  963. to_char( TPS.CREATETIME, 'yyyymm' ) AS CREATETIME
  964. FROM
  965. TP_PM_SEMICHECK TPS
  966. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  967. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  968. WHERE
  969. TPGL.HIGHPRESSUREFLAG = 1
  970. AND PGD.TESTFLAG = 0
  971. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 4 ) = 'C05A'
  972. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  973. GROUP BY
  974. PGD.GROUTINGLINECODE,
  975. PGD.USERCODE,
  976. PGD.GOODSCODE,
  977. to_char( TPS.CREATETIME, 'yyyymm' )
  978. ) BJJP ON BJJP.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  979. AND BJJP.USERCODE = TPPD.USERCODE
  980. AND BJJP.GOODSCODE = TMG.Goodscode
  981. LEFT JOIN (--半检不合格
  982. SELECT DISTINCT
  983. COUNT( TPS.BARCODE ) BJNUM,
  984. PGD.GROUTINGLINECODE,
  985. PGD.USERCODE,
  986. PGD.GOODSCODE,
  987. to_char( TPS.CREATETIME, 'yyyymm' ) AS CREATETIME
  988. FROM
  989. TP_PM_SEMICHECK TPS
  990. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  991. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  992. WHERE
  993. TPS.GOODSLEVELID IN ( 13, 14 )
  994. AND PGD.TESTFLAG = 0
  995. AND TPGL.HIGHPRESSUREFLAG = 1
  996. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 4 ) = 'C05A'
  997. AND TPS.CREATETIME >= TRUNC( SYSDATE )
  998. GROUP BY
  999. PGD.GROUTINGLINECODE,
  1000. PGD.USERCODE,
  1001. PGD.GOODSCODE,
  1002. to_char( TPS.CREATETIME, 'yyyymm' )
  1003. ) BJ ON BJ.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1004. AND BJ.USERCODE = TPPD.USERCODE
  1005. AND bj.GOODSCODE = TMG.Goodscode
  1006. LEFT JOIN (--成检数量
  1007. SELECT DISTINCT
  1008. COUNT( PD.BARCODE ) CJNUM,
  1009. PGD.GROUTINGLINECODE,
  1010. PGD.USERCODE,
  1011. PGD.GOODSCODE,
  1012. to_char( PD.CREATETIME, 'yyyymm' ) AS CREATETIME
  1013. FROM
  1014. TP_PM_PRODUCTIONDATA PD
  1015. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = PD.BARCODE
  1016. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1017. WHERE ( ( pd.procedureid = 11 AND pd.valueflag = '1' )
  1018. OR ( pd.procedureid = 104 AND pd.isrefire = '0' AND pd.checkflag = '1' ) )
  1019. AND pd.procedureid IN ( 11, 104 )
  1020. AND PGD.RECYCLINGFLAG = '0'
  1021. AND pd.AccountID = 1
  1022. AND PD.KILNID IN ( 1, 2, 5 )
  1023. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1024. GROUP BY
  1025. PGD.GROUTINGLINECODE,
  1026. PGD.USERCODE,
  1027. PGD.GOODSCODE,
  1028. to_char( PD.CREATETIME, 'yyyymm' )
  1029. ) CJ ON CJ.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1030. AND CJ.USERCODE = TPPD.USERCODE
  1031. AND CJ.GOODSCODE = TMG.Goodscode
  1032. LEFT JOIN (--成检不合格
  1033. SELECT DISTINCT
  1034. COUNT( PD.BARCODE ) CJBHGNUM,
  1035. PGD.GROUTINGLINECODE,
  1036. PGD.USERCODE,
  1037. PGD.GOODSCODE,
  1038. to_char( PD.CREATETIME, 'yyyymm' ) AS CREATETIME
  1039. FROM
  1040. TP_PM_PRODUCTIONDATA PD
  1041. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = PD.BARCODE
  1042. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1043. LEFT JOIN TP_PM_DEFECT TPD ON PGD.BARCODE = TPD.BARCODE
  1044. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  1045. WHERE
  1046. pd.valueflag = '1'
  1047. AND PD.modeltype IN ( - 1, - 4, - 5 )
  1048. AND PD.CHECKBATCHNO = 1
  1049. AND PGD.RECYCLINGFLAG = '0'
  1050. AND pd.GOODSLEVELID IN ( 6, 7 )
  1051. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  1052. AND TPD.DEFECTNAME is not null
  1053. AND length( pd.kilncarbatchno ) > 0
  1054. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1055. GROUP BY
  1056. PGD.GROUTINGLINECODE,
  1057. PGD.USERCODE,
  1058. PGD.GOODSCODE,
  1059. to_char( PD.CREATETIME, 'yyyymm' )
  1060. ) CJBHG ON CJBHG.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1061. AND CJBHG.USERCODE = TPPD.USERCODE
  1062. AND CJBHG.GOODSCODE = TMG.Goodscode
  1063. WHERE
  1064. TPPD.VALUEFLAG = 1
  1065. AND TPGL.HIGHPRESSUREFLAG = 1
  1066. AND TPPD.TESTFLAG = 0
  1067. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 4 ) = 'C05A'
  1068. AND (
  1069. TPPD.CREATETIME >= TRUNC( SYSDATE )
  1070. OR bj.CREATETIME = to_char( SYSDATE, 'yyyymmdd' )
  1071. OR cj.CREATETIME = to_char( SYSDATE, 'yyyymmdd' )
  1072. )
  1073. GROUP BY
  1074. TPGL.GROUTINGLINENAME,
  1075. TMU.USERCODE,
  1076. TMG.GOODSCODE,
  1077. BJ.BJNUM,
  1078. CJ.CJNUM,
  1079. BJJP.BJJPNUM,
  1080. CJBHG.CJBHGNUM
  1081. ) T
  1082. ) A
  1083. FULL JOIN (
  1084. SELECT--DISTINCT
  1085. T2.GROUTINGLINENAME,
  1086. T2.USERCODE,
  1087. T2.GOODSCODE,
  1088. T2.高压注浆数量,
  1089. T2.成型数,
  1090. CASE
  1091. WHEN T2.成型数 > 0 THEN
  1092. TO_CHAR( T2.成型数 / T2.高压注浆数量 * 100, '9,990.00' ) || '%' ELSE 0 || '%'
  1093. END AS 注成率,
  1094. T2.半检数量,
  1095. T2.半检合格数量,
  1096. CASE
  1097. WHEN T2.半检合格数量 = 0
  1098. AND T2.半检数量 > 0 THEN
  1099. '0%'
  1100. WHEN T2.半检合格数量 > 0
  1101. AND T2.半检数量 = 0 THEN
  1102. '100.00%'
  1103. WHEN T2.半检合格数量 = 0
  1104. AND T2.半检数量 = 0 THEN
  1105. '100.00%'
  1106. WHEN T2.半检合格数量 > 0
  1107. AND T2.半检数量 > 0 THEN
  1108. TO_CHAR( T2.半检合格数量 / T2.半检数量 * 100, '9,990.00' ) || '%' ELSE '0%'
  1109. END AS 半检合格率,
  1110. T2.成检数量,
  1111. T2.成检合格数,
  1112. CASE
  1113. WHEN T2.成检合格数 = 0
  1114. AND T2.成检数量 > 0 THEN
  1115. '0%'
  1116. WHEN T2.成检合格数 > 0
  1117. AND T2.成检数量 = 0 THEN
  1118. '100.00%'
  1119. WHEN T2.成检合格数 = 0
  1120. AND T2.成检数量 = 0 THEN
  1121. '100.00%'
  1122. WHEN T2.成检合格数 > 0
  1123. AND T2.成检数量 > 0 THEN
  1124. TO_CHAR( T2.成检合格数 / T2.成检数量 * 100, '9,990.00' ) || '%' ELSE '0%'
  1125. END AS 成检合格率 --T.成检合格数/T.成检数量
  1126. FROM
  1127. (
  1128. SELECT DISTINCT
  1129. TPGL.GROUTINGLINENAME,
  1130. TMU.USERCODE,
  1131. TMG.GOODSCODE,
  1132. SUM(
  1133. CASE
  1134. WHEN SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1135. AND TPPD.CREATETIME >= trunc( SYSDATE, 'mm' ) THEN
  1136. 1 ELSE 0
  1137. END
  1138. ) 高压注浆数量,
  1139. SUM(
  1140. CASE
  1141. WHEN SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1142. AND TPPD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1143. AND TPPD.SCRAPFLAG = '0' THEN
  1144. 1 ELSE 0
  1145. END
  1146. ) 成型数,
  1147. CASE
  1148. WHEN BJJP.BJJPNUM IS NULL THEN
  1149. 0 ELSE BJJP.BJJPNUM
  1150. END AS 半检数量,
  1151. CASE
  1152. WHEN BJ.BJNUM IS NULL THEN
  1153. 0 ELSE BJ.BJNUM
  1154. END AS 半检不合格数量,
  1155. CASE
  1156. WHEN BJJP.BJJPNUM IS NULL THEN
  1157. 0 ELSE BJJP.BJJPNUM
  1158. END -
  1159. CASE
  1160. WHEN BJ.BJNUM IS NULL THEN
  1161. 0 ELSE BJ.BJNUM
  1162. END AS 半检合格数量,
  1163. CASE
  1164. WHEN CJ.CJNUM IS NULL THEN
  1165. 0 ELSE CJ.CJNUM
  1166. END AS 成检数量,
  1167. CASE
  1168. WHEN CJBHG.CJBHGNUM IS NULL THEN
  1169. 0 ELSE CJBHG.CJBHGNUM
  1170. END AS 成检不合格数量,
  1171. CASE
  1172. WHEN CJ.CJNUM IS NULL THEN
  1173. 0 ELSE CJ.CJNUM
  1174. END -
  1175. CASE
  1176. WHEN CJBHG.CJBHGNUM IS NULL THEN
  1177. 0 ELSE CJBHG.CJBHGNUM
  1178. END AS 成检合格数
  1179. FROM
  1180. TP_PM_GROUTINGDAILYDETAIL TPPD --TPPD ON TPP.BARCODE = TPPD.BARCODE
  1181. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = TPPD.GROUTINGLINEID
  1182. LEFT JOIN TP_MST_USER TMU ON TPPD.USERID = TMU.USERID
  1183. LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID
  1184. LEFT JOIN (--半检数量
  1185. SELECT DISTINCT
  1186. COUNT( TPS.BARCODE ) BJJPNUM,
  1187. PGD.GROUTINGLINECODE,
  1188. PGD.USERCODE,
  1189. PGD.GOODSCODE,
  1190. to_char( TPS.CREATETIME, 'yyyymm' ) AS CREATETIME
  1191. FROM
  1192. TP_PM_SEMICHECK TPS
  1193. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  1194. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1195. WHERE
  1196. TPGL.HIGHPRESSUREFLAG = 1
  1197. AND PGD.TESTFLAG = 0
  1198. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1199. AND TPS.CREATETIME >= trunc( SYSDATE, 'mm' ) --DATE'2023-6-1'
  1200. GROUP BY
  1201. PGD.GROUTINGLINECODE,
  1202. PGD.USERCODE,
  1203. PGD.GOODSCODE,
  1204. to_char( TPS.CREATETIME, 'yyyymm' )
  1205. ) BJJP ON BJJP.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1206. AND BJJP.USERCODE = TPPD.USERCODE
  1207. AND BJJP.GOODSCODE = TMG.Goodscode
  1208. LEFT JOIN (--半检不合格
  1209. SELECT DISTINCT
  1210. COUNT( TPS.BARCODE ) BJNUM,
  1211. PGD.GROUTINGLINECODE,
  1212. PGD.USERCODE,
  1213. PGD.GOODSCODE,
  1214. to_char( TPS.CREATETIME, 'yyyymm' ) AS CREATETIME
  1215. FROM
  1216. TP_PM_SEMICHECK TPS
  1217. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPS.BARCODE
  1218. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1219. WHERE
  1220. TPS.GOODSLEVELID IN ( 13, 14 )
  1221. AND PGD.TESTFLAG = 0
  1222. AND TPGL.HIGHPRESSUREFLAG = 1
  1223. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1224. AND TPS.CREATETIME >= trunc( SYSDATE, 'mm' )
  1225. GROUP BY
  1226. PGD.GROUTINGLINECODE,
  1227. PGD.USERCODE,
  1228. PGD.GOODSCODE,
  1229. to_char( TPS.CREATETIME, 'yyyymm' )
  1230. ) BJ ON BJ.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1231. AND BJ.USERCODE = TPPD.USERCODE
  1232. AND bj.GOODSCODE = TMG.Goodscode
  1233. LEFT JOIN (--成检数量
  1234. SELECT DISTINCT
  1235. COUNT( PD.BARCODE ) CJNUM,
  1236. PGD.GROUTINGLINECODE,
  1237. PGD.USERCODE,
  1238. PGD.GOODSCODE,
  1239. to_char( PD.CREATETIME, 'yyyymm' ) AS CREATETIME
  1240. FROM
  1241. TP_PM_PRODUCTIONDATA PD
  1242. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = PD.BARCODE
  1243. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1244. WHERE ( ( pd.procedureid = 11 AND pd.valueflag = '1' )
  1245. OR ( pd.procedureid = 104 AND pd.isrefire = '0' AND pd.checkflag = '1' ) )
  1246. AND pd.procedureid IN ( 11, 104 )
  1247. AND PGD.RECYCLINGFLAG = '0'
  1248. AND PD.ISREFIRE = 0
  1249. AND pd.AccountID = 1
  1250. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1251. AND PGD.TESTFLAG = 0
  1252. AND PD.KILNID IN ( 1, 2, 5 )
  1253. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1254. GROUP BY
  1255. PGD.GROUTINGLINECODE,
  1256. PGD.USERCODE,
  1257. PGD.GOODSCODE,
  1258. to_char( PD.CREATETIME, 'yyyymm' )
  1259. ) CJ ON CJ.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1260. AND CJ.USERCODE = TPPD.USERCODE
  1261. AND CJ.GOODSCODE = TMG.Goodscode
  1262. LEFT JOIN (--成检不合格
  1263. SELECT DISTINCT
  1264. COUNT( PD.BARCODE ) CJBHGNUM,
  1265. PGD.GROUTINGLINECODE,
  1266. PGD.USERCODE,
  1267. PGD.GOODSCODE,
  1268. to_char( PD.CREATETIME, 'yyyymm' ) AS CREATETIME
  1269. FROM
  1270. TP_PM_PRODUCTIONDATA PD
  1271. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = PD.BARCODE
  1272. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  1273. LEFT JOIN TP_PM_DEFECT TPD ON PGD.BARCODE = TPD.BARCODE
  1274. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  1275. WHERE
  1276. pd.valueflag = '1'
  1277. AND PD.modeltype IN ( - 1, - 4, - 5 )
  1278. AND PD.CHECKBATCHNO = 1
  1279. AND PGD.RECYCLINGFLAG = '0'
  1280. AND pd.GOODSLEVELID IN ( 6, 7 )
  1281. AND TMD.DEFECTTYPEID IN ( 15, 16,8)
  1282. AND TPD.DEFECTNAME is not null
  1283. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1284. AND PGD.TESTFLAG = 0
  1285. AND length( pd.kilncarbatchno ) > 0
  1286. AND PD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1287. GROUP BY
  1288. PGD.GROUTINGLINECODE,
  1289. PGD.USERCODE,
  1290. PGD.GOODSCODE,
  1291. to_char( PD.CREATETIME, 'yyyymm' )
  1292. ) CJBHG ON CJBHG.GROUTINGLINECODE = TPPD.GROUTINGLINECODE
  1293. AND CJBHG.USERCODE = TPPD.USERCODE
  1294. AND CJBHG.GOODSCODE = TMG.Goodscode
  1295. WHERE
  1296. TPPD.VALUEFLAG = 1
  1297. AND TPGL.HIGHPRESSUREFLAG = 1
  1298. AND TPPD.TESTFLAG = 0
  1299. AND SUBSTR( TPGL.GROUTINGLINENAME, 1, 2 ) = 'C0'
  1300. AND SUBSTR( TMG.GOODSCODE, -2, LENGTH(TMG.GOODSCODE) ) = '-W'
  1301. AND (
  1302. TPPD.CREATETIME >= trunc( SYSDATE, 'mm' )
  1303. OR bj.CREATETIME = to_char( SYSDATE, 'yyyymmdd' )
  1304. OR cj.CREATETIME = to_char( SYSDATE, 'yyyymmdd' )
  1305. )
  1306. GROUP BY
  1307. TPGL.GROUTINGLINENAME,
  1308. TMU.USERCODE,
  1309. TMG.GOODSCODE,
  1310. BJ.BJNUM,
  1311. CJ.CJNUM,
  1312. BJJP.BJJPNUM,
  1313. CJBHG.CJBHGNUM
  1314. ) T2
  1315. ) B ON A.GROUTINGLINENAME = B.GROUTINGLINENAME
  1316. AND A.USERCODE = B.USERCODE
  1317. AND A.GOODSCODE = B.GOODSCODE
  1318. ";
  1319. //直接获取不分页数据
  1320. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1321. int a = 1;
  1322. string jsonStr = new JsonResult(dt).ToJson();
  1323. context.Response.Write(jsonStr);
  1324. }
  1325. }
  1326. }
  1327. public bool IsReusable {
  1328. get {
  1329. return false;
  1330. }
  1331. }
  1332. }