SecondaryCheck.ashx 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225
  1. <%@ WebHandler Language="C#" Class="Get_HG5010_CHECK_DEFECT" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Configuration;
  6. using Newtonsoft.Json.Linq;
  7. using System.Data;
  8. using Curtain.DataAccess;
  9. using Curtain.Log;
  10. using DK.XuWei.WebMes;
  11. using System.Collections.Generic;
  12. public class Get_HG5010_CHECK_DEFECT : IHttpHandler, IRequiresSessionState
  13. {
  14. public void ProcessRequest(HttpContext context)
  15. {
  16. using (IDataAccess conn = DataAccess.Create())
  17. {
  18. #region 第一样式
  19. #region 二检一期总数据
  20. if (context.Request["m"].ToString() == "TK1Big")
  21. {
  22. string sqlStr = @"
  23. WITH
  24. 工序废品数 AS
  25. (
  26. SELECT
  27. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  28. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  29. FROM
  30. TP_PM_DEFECT DEFECT
  31. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  32. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  33. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  34. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  35. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  36. WHERE
  37. DEFECT.CREATETIME >= trunc(sysdate)
  38. --DEFECT.CREATETIME >= date'2022-08-12'
  39. --AND DEFECT.CREATETIME < date'2022-08-13'
  40. AND PD.VALUEFLAG = '1' --有效'64'
  41. AND DEFECT.VALUEFLAG = '1' --有效
  42. AND PD.ISREFIRE = 0 --非重烧
  43. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  44. AND GDT.GOODSTYPEID IN (4,6)
  45. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51')
  46. AND PD.PROCEDUREID IN ( 49, 10 )
  47. AND PD.GOODSLEVELTYPEID=7--次品
  48. AND PD.ACCOUNTID=1
  49. AND PD.CHECKBATCHNO=1
  50. GROUP BY
  51. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  52. ),
  53. 数量 AS
  54. (
  55. SELECT
  56. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间,
  57. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62' ) THEN 1 ELSE 0 END ) 上水,
  58. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '63','64' ) THEN 1 ELSE 0 END ) 吹风
  59. FROM
  60. TP_PM_DEFECT DEFECT
  61. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  62. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  63. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  64. WHERE
  65. DEFECT.CREATETIME >= trunc(sysdate)
  66. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51')
  67. AND PD.VALUEFLAG = '1' --有效
  68. AND DEFECT.VALUEFLAG = '1' --有效
  69. AND PD.ISREFIRE = 0 --非重烧
  70. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  71. AND GDT.GOODSTYPEID IN (4,6)
  72. GROUP BY
  73. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  74. ),
  75. 检验数 AS (
  76. SELECT
  77. COUNT( * ) 成检交接数量,
  78. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  79. FROM
  80. TP_PM_PRODUCTIONDATA PD
  81. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  82. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  83. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  84. WHERE
  85. PD.VALUEFLAG = '1'
  86. AND PD.CREATETIME >= trunc(sysdate)
  87. AND PD.PROCEDUREID IN ( 48,9 )
  88. AND PPD.USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  89. AND PD.ISREFIRE = 0 --非重烧
  90. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  91. AND GDT.GOODSTYPEID IN (4,6)
  92. GROUP BY
  93. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  94. ),
  95. 工序缺陷数量 AS (
  96. SELECT
  97. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  98. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  99. FROM
  100. TP_PM_DEFECT DEFECT
  101. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  102. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  103. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  104. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  105. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  106. WHERE
  107. DEFECT.CREATETIME >= trunc(sysdate)
  108. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51')
  109. AND PD.VALUEFLAG = '1' --有效
  110. AND DEFECT.VALUEFLAG = '1' --有效
  111. GROUP BY
  112. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  113. ),
  114. 前三部位 AS (
  115. SELECT
  116. TT9.上水,
  117. TT10.吹风
  118. FROM
  119. --二检上水
  120. (
  121. SELECT
  122. LISTAGG ( T9.前三部位 ) within GROUP ( ORDER BY T9.数量 DESC ) 上水
  123. FROM
  124. (
  125. SELECT
  126. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  127. T.数量
  128. FROM
  129. (
  130. SELECT
  131. TMDPI.DEFECTPOSITIONNAME AS 位置,
  132. COUNT( * ) AS 数量
  133. FROM
  134. TP_PM_DEFECT TMDP
  135. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  136. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  137. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  138. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  139. WHERE
  140. TMDP.CREATETIME >= trunc(sysdate)
  141. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51')
  142. --TMDP.CREATETIME >= DATE'2022-08-12'
  143. --AND TMDP.CREATETIME < DATE'2022-08-13'
  144. AND TMDP.DEFECTCODE IN ( '62' )
  145. AND PD.ISREFIRE = 0 --非重烧
  146. AND PD.VALUEFLAG = '1' --有效
  147. AND TMDP.VALUEFLAG = '1' --有效
  148. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  149. AND GDT.GOODSTYPEID IN (4,6)
  150. GROUP BY
  151. TMDPI.DEFECTPOSITIONID,
  152. TMDPI.DEFECTPOSITIONNAME
  153. ORDER BY
  154. COUNT( * ) DESC
  155. ) T
  156. WHERE
  157. ROWNUM <= 3
  158. ) T9
  159. ) TT9
  160. LEFT JOIN
  161. --二检吹风
  162. (
  163. SELECT
  164. LISTAGG ( T10.前三部位 ) within GROUP ( ORDER BY T10.数量 DESC ) 吹风
  165. FROM
  166. (
  167. SELECT
  168. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  169. T.数量
  170. FROM
  171. (
  172. SELECT
  173. TMDPI.DEFECTPOSITIONNAME AS 位置,
  174. COUNT( * ) AS 数量
  175. FROM
  176. TP_PM_DEFECT TMDP
  177. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  178. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  179. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  180. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  181. WHERE
  182. TMDP.CREATETIME >= trunc(sysdate)
  183. --TMDP.CREATETIME >= DATE'2022-08-12'
  184. --AND TMDP.CREATETIME < DATE'2022-08-13'
  185. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51')
  186. AND TMDP.DEFECTCODE IN ( '63', '64' )
  187. AND PD.ISREFIRE = 0 --非重烧
  188. AND PD.VALUEFLAG = '1' --有效
  189. AND TMDP.VALUEFLAG = '1' --有效
  190. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  191. AND GDT.GOODSTYPEID IN (4,6)
  192. GROUP BY
  193. TMDPI.DEFECTPOSITIONID,
  194. TMDPI.DEFECTPOSITIONNAME
  195. ORDER BY
  196. COUNT( * ) DESC
  197. ) T
  198. WHERE
  199. ROWNUM <= 3
  200. ) T10
  201. ) TT10 ON 1 = 1
  202. )
  203. SELECT
  204. TO_CHAR( 数量.上水 ) 上水,
  205. TO_CHAR( 数量.吹风 ) 吹风
  206. FROM
  207. 数量
  208. UNION ALL
  209. SELECT
  210. DECODE( NVL( 数量.上水, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.上水, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' ) ,
  211. DECODE( NVL( 数量.吹风, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.吹风, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' )
  212. FROM
  213. 数量
  214. INNER JOIN 检验数 ON 数量.时间 = 检验数.时间
  215. UNION ALL
  216. SELECT
  217. NVL(前三部位.上水,'-'),
  218. NVL(前三部位.吹风,'-')
  219. FROM
  220. 前三部位
  221. UNION ALL
  222. -- SELECT
  223. -- '',
  224. -- --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  225. -- DECODE( NVL( 工序缺陷数量.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序缺陷数量.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  226. -- FROM
  227. -- 工序缺陷数量
  228. -- INNER JOIN 检验数 ON 工序缺陷数量.时间 = 检验数.时间
  229. -- UNION ALL
  230. SELECT
  231. '',
  232. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  233. DECODE( NVL( 工序废品数.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序废品数.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  234. FROM
  235. 工序废品数
  236. INNER JOIN 检验数 ON 工序废品数.时间 = 检验数.时间
  237. ";
  238. //直接获取不分页数据
  239. DataTable dt = conn.ExecuteDatatable(sqlStr);
  240. context.Response.Write(new JsonResult(dt).ToJson());
  241. }
  242. #endregion
  243. //二检二期
  244. if (context.Request["m"].ToString() == "TK1QualifiedRate")
  245. {
  246. string sqlStr = @"
  247. WITH
  248. 工序废品数 AS
  249. (
  250. SELECT
  251. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  252. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  253. FROM
  254. TP_PM_DEFECT DEFECT
  255. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  256. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  257. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  258. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  259. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  260. WHERE
  261. DEFECT.CREATETIME >= trunc(sysdate)
  262. --DEFECT.CREATETIME >= date'2022-08-12'
  263. --AND DEFECT.CREATETIME < date'2022-08-13'
  264. AND PD.VALUEFLAG = '1' --有效
  265. AND DEFECT.VALUEFLAG = '1' --有效
  266. AND PD.ISREFIRE = 0 --非重烧
  267. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  268. AND GDT.GOODSTYPEID IN (4,6)
  269. AND DEFECTUSERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  270. AND PD.PROCEDUREID IN ( 49, 10 )
  271. AND PD.GOODSLEVELTYPEID=7--次品
  272. AND PD.ACCOUNTID=1
  273. AND PD.CHECKBATCHNO=1
  274. GROUP BY
  275. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  276. ),
  277. 数量 AS
  278. (
  279. SELECT
  280. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间,
  281. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62' ) THEN 1 ELSE 0 END ) 上水,
  282. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '63','64' ) THEN 1 ELSE 0 END ) 吹风
  283. FROM
  284. TP_PM_DEFECT DEFECT
  285. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  286. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  287. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  288. WHERE
  289. DEFECT.CREATETIME >= trunc(sysdate)
  290. AND DEFECTUSERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  291. AND PD.VALUEFLAG = '1' --有效
  292. AND DEFECT.VALUEFLAG = '1' --有效
  293. AND PD.ISREFIRE = 0 --非重烧
  294. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  295. AND GDT.GOODSTYPEID IN (4,6)
  296. GROUP BY
  297. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  298. ),
  299. 检验数 AS (
  300. SELECT
  301. COUNT( * ) 成检交接数量,
  302. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  303. FROM
  304. TP_PM_PRODUCTIONDATA PD
  305. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  306. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  307. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  308. WHERE
  309. PD.VALUEFLAG = '1'
  310. AND PD.CREATETIME >= trunc(sysdate)
  311. AND PD.PROCEDUREID IN ( 48,9 )
  312. AND PPD.USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  313. AND PD.ISREFIRE = 0 --非重烧
  314. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  315. AND GDT.GOODSTYPEID IN (4,6)
  316. GROUP BY
  317. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  318. ),
  319. 工序缺陷数量 AS (
  320. SELECT
  321. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  322. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  323. FROM
  324. TP_PM_DEFECT DEFECT
  325. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  326. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  327. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  328. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  329. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  330. WHERE
  331. DEFECT.CREATETIME >= trunc(sysdate)
  332. --DEFECT.CREATETIME >= date'2022-08-12'
  333. --AND DEFECT.CREATETIME < date'2022-08-13'
  334. AND DEFECTUSERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  335. AND PD.VALUEFLAG = '1' --有效
  336. AND DEFECT.VALUEFLAG = '1' --有效
  337. GROUP BY
  338. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  339. ),
  340. 前三部位 AS (
  341. SELECT
  342. TT9.上水,
  343. TT10.吹风
  344. FROM
  345. --二检上水
  346. (
  347. SELECT
  348. LISTAGG ( T9.前三部位 ) within GROUP ( ORDER BY T9.数量 DESC ) 上水
  349. FROM
  350. (
  351. SELECT
  352. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  353. T.数量
  354. FROM
  355. (
  356. SELECT
  357. TMDPI.DEFECTPOSITIONNAME AS 位置,
  358. COUNT( * ) AS 数量
  359. FROM
  360. TP_PM_DEFECT TMDP
  361. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  362. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  363. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  364. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  365. WHERE
  366. TMDP.CREATETIME >= trunc(sysdate)
  367. AND DEFECTUSERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  368. --TMDP.CREATETIME >= DATE'2022-08-12'
  369. --AND TMDP.CREATETIME < DATE'2022-08-13'
  370. AND TMDP.DEFECTCODE IN ( '62' )
  371. AND PD.ISREFIRE = 0 --非重烧
  372. AND PD.VALUEFLAG = '1' --有效
  373. AND TMDP.VALUEFLAG = '1' --有效
  374. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  375. AND GDT.GOODSTYPEID IN (4,6)
  376. GROUP BY
  377. TMDPI.DEFECTPOSITIONID,
  378. TMDPI.DEFECTPOSITIONNAME
  379. ORDER BY
  380. COUNT( * ) DESC
  381. ) T
  382. WHERE
  383. ROWNUM <= 3
  384. ) T9
  385. ) TT9
  386. LEFT JOIN
  387. --二检吹风
  388. (
  389. SELECT
  390. LISTAGG ( T10.前三部位 ) within GROUP ( ORDER BY T10.数量 DESC ) 吹风
  391. FROM
  392. (
  393. SELECT
  394. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  395. T.数量
  396. FROM
  397. (
  398. SELECT
  399. TMDPI.DEFECTPOSITIONNAME AS 位置,
  400. COUNT( * ) AS 数量
  401. FROM
  402. TP_PM_DEFECT TMDP
  403. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  404. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  405. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  406. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  407. WHERE
  408. TMDP.CREATETIME>= trunc(sysdate)
  409. --TMDP.CREATETIME >= DATE'2022-08-12'
  410. --AND TMDP.CREATETIME < DATE'2022-08-13'
  411. AND DEFECTUSERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  412. AND TMDP.DEFECTCODE IN ( '63', '64' )
  413. AND PD.ISREFIRE = 0 --非重烧
  414. AND PD.VALUEFLAG = '1' --有效
  415. AND TMDP.VALUEFLAG = '1' --有效
  416. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  417. AND GDT.GOODSTYPEID IN (4,6)
  418. GROUP BY
  419. TMDPI.DEFECTPOSITIONID,
  420. TMDPI.DEFECTPOSITIONNAME
  421. ORDER BY
  422. COUNT( * ) DESC
  423. ) T
  424. WHERE
  425. ROWNUM <= 3
  426. ) T10
  427. ) TT10 ON 1 = 1
  428. )
  429. SELECT
  430. TO_CHAR( 数量.上水 ) 上水,
  431. TO_CHAR( 数量.吹风 ) 吹风
  432. FROM
  433. 数量
  434. UNION ALL
  435. SELECT
  436. DECODE( NVL( 数量.上水, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.上水, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' ) ,
  437. DECODE( NVL( 数量.吹风, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.吹风, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' )
  438. FROM
  439. 数量
  440. INNER JOIN 检验数 ON 数量.时间 = 检验数.时间
  441. UNION ALL
  442. SELECT
  443. NVL(前三部位.上水,'-'),
  444. NVL(前三部位.吹风,'-')
  445. FROM
  446. 前三部位
  447. UNION ALL
  448. -- SELECT
  449. -- '',
  450. -- --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  451. -- DECODE( NVL( 工序缺陷数量.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序缺陷数量.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  452. -- FROM
  453. -- 工序缺陷数量
  454. -- INNER JOIN 检验数 ON 工序缺陷数量.时间 = 检验数.时间
  455. -- UNION ALL
  456. SELECT
  457. '',
  458. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  459. DECODE( NVL( 工序废品数.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序废品数.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  460. FROM
  461. 工序废品数
  462. INNER JOIN 检验数 ON 工序废品数.时间 = 检验数.时间
  463. ";
  464. //直接获取不分页数据
  465. DataTable dt = conn.ExecuteDatatable(sqlStr);
  466. context.Response.Write(new JsonResult(dt).ToJson());
  467. }
  468. //二检二线缺陷明细
  469. if (context.Request["m"].ToString() == "TK1smallTableTitle")
  470. {
  471. string sqlStr = @"
  472. WITH 基础数据 AS (
  473. SELECT DISTINCT
  474. TMDP.DEFECTUSERCODE 责任工号,
  475. TMDP.DEFECTUSERNAME 责任人,
  476. TMDP.BARCODE 条码,
  477. TMDP.DEFECTPOSITIONNAME 缺陷位置,
  478. TMDP.DEFECTNAME 缺陷名称,
  479. TMG.GOODSLEVELNAME 产品分级
  480. FROM TP_PM_DEFECT TMDP
  481. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  482. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  483. LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
  484. --LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
  485. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  486. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  487. --INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
  488. WHERE TMDP.CREATETIME >= trunc(sysdate)
  489. AND TMDP.DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D99','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D33','D36','D37','D39','D40','D88','D51','D50')
  490. AND PD.VALUEFLAG = '1' --有效
  491. AND TMDP.VALUEFLAG = '1' --有效
  492. AND TMDP.DEFECTCODE IN ('62','63','64' )
  493. AND PD.ISREFIRE = 0 --非重烧
  494. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  495. AND GDT.GOODSTYPEID IN (4,6)
  496. ORDER BY TMDP.DEFECTUSERCODE
  497. ),
  498. 责任工号出现次数 AS(
  499. SELECT
  500. *
  501. FROM(
  502. SELECT
  503. 责任工号 AS 工号,
  504. COUNT(责任工号)as 出现次数
  505. FROM(
  506. SELECT DISTINCT
  507. TMDP.DEFECTUSERCODE 责任工号,
  508. TMDP.DEFECTUSERNAME 责任人,
  509. TMDP.BARCODE 条码,
  510. TMDP.DEFECTPOSITIONNAME 缺陷位置,
  511. TMDP.DEFECTNAME 缺陷名称,
  512. TMG.GOODSLEVELNAME 产品分级
  513. FROM TP_PM_DEFECT TMDP
  514. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  515. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  516. LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
  517. --LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
  518. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  519. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  520. --INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
  521. WHERE TMDP.CREATETIME >= trunc(sysdate)
  522. AND TMDP.DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D99','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D33','D36','D37','D39','D40','D88','D51','D50')
  523. AND PD.VALUEFLAG = '1' --有效
  524. AND TMDP.VALUEFLAG = '1' --有效
  525. AND TMDP.DEFECTCODE IN ('62','63','64' )
  526. AND PD.ISREFIRE = 0 --非重烧
  527. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  528. AND GDT.GOODSTYPEID IN (4,6)
  529. ORDER BY TMDP.DEFECTUSERCODE
  530. )
  531. GROUP BY 责任工号
  532. )
  533. )
  534. SELECT
  535. 基础数据.责任工号,
  536. 基础数据.责任人,
  537. 基础数据.条码,
  538. 基础数据.缺陷位置,
  539. 基础数据.缺陷名称,
  540. 基础数据.产品分级,
  541. 责任工号出现次数.出现次数
  542. FROM 基础数据
  543. LEFT JOIN 责任工号出现次数 on 基础数据.责任工号=责任工号出现次数.工号
  544. ORDER BY 基础数据.责任工号
  545. ";
  546. //获取分页参数
  547. int page = 1;
  548. if (Convert.ToInt32(context.Request["page"].ToString()) != 1)
  549. {
  550. page = Convert.ToInt32(context.Request["page"].ToString());
  551. }
  552. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 7;
  553. //获取分页数据
  554. int total = 0;
  555. DataTable dt = conn.SelectPages(page, rows, out total, sqlStr);
  556. context.Response.Write( new JsonResult(dt) { total = total }.ToJson());
  557. //DataTable dt = conn.ExecuteDatatable(sqlStr);
  558. //context.Response.Write(new JsonResult(dt).ToJson());
  559. }
  560. //二检一线产量明细总条数
  561. if (context.Request["m"].ToString() == "count1"){
  562. string sqlStr = @" SELECT COUNT(*) AS counts FROM( SELECT TPP.USERCODE FROM(SELECT DISTINCT BARCODE,USERCODE FROM TP_PM_PRODUCTIONDATA
  563. where USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51') AND
  564. CREATETIME >= trunc(sysdate)
  565. AND ACCOUNTID=1 AND VALUEFLAG=1 AND PROCEDUREID = 35 ) TPP GROUP BY TPP.USERCODE ORDER BY TPP.USERCODE)";
  566. object count = conn.ExecuteScalar(sqlStr,null);
  567. JObject json = new JObject(
  568. new JProperty("success",true),
  569. new JProperty("counts", Convert.ToInt32(count))
  570. );
  571. context.Response.Write(json.ToString());
  572. }
  573. //二检二线产量明细
  574. if (context.Request["m"].ToString() == "DD1")
  575. {
  576. string sqlStr = @"SELECT TPP.USERCODE 工号,COUNT(TPP.USERCODE) 产量 FROM(SELECT DISTINCT BARCODE,USERCODE FROM TP_PM_PRODUCTIONDATA
  577. where USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D30','D99','D39','D40','D88','D51') AND
  578. CREATETIME >= trunc(sysdate)
  579. AND ACCOUNTID=1 AND VALUEFLAG=1 AND PROCEDUREID = 35 ) TPP GROUP BY TPP.USERCODE ORDER BY TPP.USERCODE";
  580. //获取分页参数
  581. int page = 1;
  582. if (Convert.ToInt32(context.Request["page"].ToString()) != 1)
  583. {
  584. page = Convert.ToInt32(context.Request["page"].ToString());
  585. }
  586. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 4;
  587. //获取分页数据
  588. int total = 0;
  589. DataTable dt = conn.SelectPages(page, rows, out total, sqlStr);
  590. context.Response.Write( new JsonResult(dt) { total = total }.ToJson());
  591. }
  592. //二检二线产量明细总条数
  593. if (context.Request["m"].ToString() == "count2"){
  594. string sqlStr = @"SELECT COUNT(*) AS counts FROM( SELECT TPP.USERCODE FROM(SELECT DISTINCT BARCODE,USERCODE FROM TP_PM_PRODUCTIONDATA
  595. where USERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50') AND
  596. CREATETIME >= trunc(sysdate)
  597. AND ACCOUNTID=1 AND VALUEFLAG=1 AND PROCEDUREID = 35 ) TPP GROUP BY TPP.USERCODE ORDER BY TPP.USERCODE)";
  598. object count = conn.ExecuteScalar(sqlStr,null);
  599. JObject json = new JObject(
  600. new JProperty("success",true),
  601. new JProperty("counts", Convert.ToInt32(count))
  602. );
  603. context.Response.Write(json.ToString());
  604. }
  605. //二检二线产量明细
  606. if (context.Request["m"].ToString() == "DD2")
  607. {
  608. string sqlStr = @"SELECT TPP.USERCODE 工号,COUNT(TPP.USERCODE) 产量 FROM(SELECT DISTINCT BARCODE,USERCODE FROM TP_PM_PRODUCTIONDATA
  609. where USERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50') AND
  610. CREATETIME >= trunc(sysdate)
  611. AND ACCOUNTID=1 AND VALUEFLAG=1 AND PROCEDUREID = 35 ) TPP GROUP BY TPP.USERCODE ORDER BY TPP.USERCODE";
  612. //获取分页参数
  613. int page = 1;
  614. if (Convert.ToInt32(context.Request["page"].ToString()) != 1)
  615. {
  616. page = Convert.ToInt32(context.Request["page"].ToString());
  617. }
  618. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 4;
  619. //获取分页数据
  620. int total = 0;
  621. DataTable dt = conn.SelectPages(page, rows, out total, sqlStr);
  622. context.Response.Write( new JsonResult(dt) { total = total }.ToJson());
  623. }
  624. //缺陷明细总条数
  625. if (context.Request["m"].ToString() == "count"){
  626. string sqlStr = @"SELECT COUNT(*)
  627. FROM TP_PM_DEFECT TMDP
  628. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  629. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  630. LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
  631. --LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
  632. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  633. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  634. --INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
  635. WHERE TMDP.CREATETIME >= trunc(sysdate)
  636. AND TMDP.DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D99','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D33','D36','D37','D39','D40','D88','D51','D50')
  637. AND PD.VALUEFLAG = '1' --有效
  638. AND TMDP.VALUEFLAG = '1' --有效
  639. AND TMDP.DEFECTCODE IN ('62','63','64' )
  640. AND PD.ISREFIRE = 0 --非重烧
  641. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  642. AND GDT.GOODSTYPEID IN (4,6)
  643. ORDER BY TMDP.DEFECTUSERCODE";
  644. object count = conn.ExecuteScalar(sqlStr,null);
  645. JObject json = new JObject(
  646. new JProperty("success",true),
  647. new JProperty("counts", Convert.ToInt32(count))
  648. );
  649. context.Response.Write(json.ToString());
  650. }
  651. if (context.Request["m"].ToString() == "NumberStatistics") {
  652. string sqlStr = @"WITH 一线产量 AS (
  653. SELECT
  654. COUNT( * ) AS 一线
  655. FROM
  656. (
  657. SELECT DISTINCT
  658. BARCODE
  659. FROM
  660. TP_PM_PRODUCTIONDATA
  661. WHERE
  662. USERCODE IN ( 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19', 'D22', 'D27', 'D29', 'D30', 'D99','D39','D40','D88','D51' )
  663. AND CREATETIME >= trunc( SYSDATE )
  664. AND ACCOUNTID = 1
  665. AND VALUEFLAG = 1
  666. AND PROCEDUREID = 35
  667. )
  668. ),
  669. 二线产量 AS (
  670. SELECT
  671. COUNT( * ) AS 二线
  672. FROM
  673. (
  674. SELECT DISTINCT
  675. BARCODE
  676. FROM
  677. TP_PM_PRODUCTIONDATA
  678. WHERE
  679. USERCODE IN ( 'D11', 'D20', 'D21', 'D25', 'D26', 'D28', 'D32', 'D34', 'D35', 'D38','D33','D36','D37','D50' )
  680. AND CREATETIME >= trunc( SYSDATE )
  681. AND ACCOUNTID = 1
  682. AND VALUEFLAG = 1
  683. AND PROCEDUREID = 35
  684. )
  685. ),
  686. 总产量 AS (
  687. SELECT
  688. COUNT( * ) AS 总产量
  689. FROM
  690. (
  691. SELECT DISTINCT
  692. BARCODE
  693. FROM
  694. TP_PM_PRODUCTIONDATA
  695. WHERE USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  696. AND CREATETIME >= trunc(sysdate)
  697. AND ACCOUNTID = 1
  698. AND VALUEFLAG = 1
  699. AND PROCEDUREID = 35
  700. )
  701. )
  702. SELECT
  703. 一线,
  704. 二线,
  705. 总产量
  706. FROM 一线产量
  707. INNER JOIN 二线产量 ON 1=1
  708. INNER JOIN 总产量 ON 1=1";
  709. DataTable dt = conn.ExecuteDatatable(sqlStr);
  710. context.Response.Write(new JsonResult(dt).ToJson());
  711. }
  712. //合格率
  713. if (context.Request["m"].ToString() == "HGL") {
  714. string sqlStr = @"
  715. WITH
  716. 工序废品数 AS
  717. (
  718. SELECT
  719. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  720. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  721. FROM
  722. TP_PM_DEFECT DEFECT
  723. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  724. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  725. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  726. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  727. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  728. WHERE
  729. DEFECT.CREATETIME >= trunc(sysdate)
  730. --DEFECT.CREATETIME >= date'2022-08-12'
  731. --AND DEFECT.CREATETIME < date'2022-08-13'
  732. AND PD.VALUEFLAG = '1' --有效
  733. AND DEFECT.VALUEFLAG = '1' --有效
  734. AND PD.ISREFIRE = 0 --非重烧
  735. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  736. AND GDT.GOODSTYPEID IN (4,6)
  737. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D27','D29','D11','D20','D21','D22','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  738. AND PD.PROCEDUREID IN ( 49, 10 )
  739. AND PD.GOODSLEVELTYPEID=7--次品
  740. AND PD.ACCOUNTID=1
  741. AND PD.CHECKBATCHNO=1
  742. GROUP BY
  743. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  744. ),
  745. 数量 AS
  746. (
  747. SELECT
  748. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间,
  749. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62' ) THEN 1 ELSE 0 END ) 上水,
  750. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '63','64','65' ) THEN 1 ELSE 0 END ) 吹风
  751. FROM
  752. TP_PM_DEFECT DEFECT
  753. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  754. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  755. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  756. WHERE
  757. DEFECT.CREATETIME >= trunc(sysdate)
  758. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','E4','E5','E9','E10','D33','D36','D37','D39','D40','D88','D51','D50')
  759. AND PD.VALUEFLAG = '1' --有效
  760. AND DEFECT.VALUEFLAG = '1' --有效
  761. AND PD.ISREFIRE = 0 --非重烧
  762. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  763. AND GDT.GOODSTYPEID IN (4,6)
  764. GROUP BY
  765. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  766. ),
  767. 检验数 AS (
  768. SELECT
  769. COUNT( * ) 成检交接数量,
  770. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  771. FROM
  772. TP_PM_PRODUCTIONDATA PD
  773. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  774. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  775. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  776. WHERE
  777. PD.VALUEFLAG = '1'
  778. AND PD.CREATETIME >= trunc(sysdate)
  779. AND PD.PROCEDUREID IN ( 48,9 )
  780. AND PPD.USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  781. GROUP BY
  782. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  783. ),
  784. 工序缺陷数量 AS (
  785. SELECT
  786. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  787. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  788. FROM
  789. TP_PM_DEFECT DEFECT
  790. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  791. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  792. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  793. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  794. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  795. WHERE
  796. DEFECT.CREATETIME >= trunc(sysdate)
  797. --DEFECT.CREATETIME >= date'2022-08-12'
  798. --AND DEFECT.CREATETIME < date'2022-08-13'
  799. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  800. AND PD.VALUEFLAG = '1' --有效
  801. AND DEFECT.VALUEFLAG = '1' --有效
  802. GROUP BY
  803. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  804. ),
  805. 前三部位 AS (
  806. SELECT
  807. TT9.上水,
  808. TT10.吹风
  809. FROM
  810. --二检上水
  811. (
  812. SELECT
  813. LISTAGG ( T9.前三部位 ) within GROUP ( ORDER BY T9.数量 DESC ) 上水
  814. FROM
  815. (
  816. SELECT
  817. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  818. T.数量
  819. FROM
  820. (
  821. SELECT
  822. TMDPI.DEFECTPOSITIONNAME AS 位置,
  823. COUNT( * ) AS 数量
  824. FROM
  825. TP_PM_DEFECT TMDP
  826. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  827. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  828. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  829. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  830. WHERE
  831. TMDP.CREATETIME >= trunc(sysdate)
  832. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  833. --TMDP.CREATETIME >= DATE'2022-08-12'
  834. --AND TMDP.CREATETIME < DATE'2022-08-13'
  835. AND TMDP.DEFECTCODE IN ( '62' )
  836. AND PD.ISREFIRE = 0 --非重烧
  837. AND PD.VALUEFLAG = '1' --有效
  838. AND TMDP.VALUEFLAG = '1' --有效
  839. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  840. AND GDT.GOODSTYPEID IN (4,6)
  841. GROUP BY
  842. TMDPI.DEFECTPOSITIONID,
  843. TMDPI.DEFECTPOSITIONNAME
  844. ORDER BY
  845. COUNT( * ) DESC
  846. ) T
  847. WHERE
  848. ROWNUM <= 3
  849. ) T9
  850. ) TT9
  851. LEFT JOIN
  852. --二检吹风
  853. (
  854. SELECT
  855. LISTAGG ( T10.前三部位 ) within GROUP ( ORDER BY T10.数量 DESC ) 吹风
  856. FROM
  857. (
  858. SELECT
  859. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  860. T.数量
  861. FROM
  862. (
  863. SELECT
  864. TMDPI.DEFECTPOSITIONNAME AS 位置,
  865. COUNT( * ) AS 数量
  866. FROM
  867. TP_PM_DEFECT TMDP
  868. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  869. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  870. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  871. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  872. WHERE
  873. TMDP.CREATETIME >= trunc(sysdate)
  874. --TMDP.CREATETIME >= DATE'2022-08-12'
  875. --AND TMDP.CREATETIME < DATE'2022-08-13'
  876. AND DEFECTUSERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D22','D27','D29','D11','D20','D21','D25','D26','D28','D30','D32','D34','D35','D38','D99','D33','D36','D37','D39','D40','D88','D51','D50')
  877. AND TMDP.DEFECTCODE IN ( '63', '64' )
  878. AND PD.ISREFIRE = 0 --非重烧
  879. AND PD.VALUEFLAG = '1' --有效
  880. AND TMDP.VALUEFLAG = '1' --有效
  881. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  882. AND GDT.GOODSTYPEID IN (4,6)
  883. GROUP BY
  884. TMDPI.DEFECTPOSITIONID,
  885. TMDPI.DEFECTPOSITIONNAME
  886. ORDER BY
  887. COUNT( * ) DESC
  888. ) T
  889. WHERE
  890. ROWNUM <= 3
  891. ) T10
  892. ) TT10 ON 1 = 1
  893. )
  894. SELECT
  895. TO_CHAR( 数量.上水 ) 上水,
  896. TO_CHAR( 数量.吹风 ) 吹风
  897. FROM
  898. 数量
  899. UNION ALL
  900. SELECT
  901. DECODE( NVL( 数量.上水, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.上水, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' ) ,
  902. DECODE( NVL( 数量.吹风, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.吹风, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' )
  903. FROM
  904. 数量
  905. INNER JOIN 检验数 ON 数量.时间 = 检验数.时间
  906. UNION ALL
  907. SELECT
  908. NVL(前三部位.上水,'-'),
  909. NVL(前三部位.吹风,'-')
  910. FROM
  911. 前三部位
  912. UNION ALL
  913. SELECT
  914. '',
  915. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  916. DECODE( NVL( 工序缺陷数量.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序缺陷数量.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  917. FROM
  918. 工序缺陷数量
  919. INNER JOIN 检验数 ON 工序缺陷数量.时间 = 检验数.时间
  920. UNION ALL
  921. SELECT
  922. '',
  923. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  924. DECODE( NVL( 工序废品数.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序废品数.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  925. FROM
  926. 工序废品数
  927. INNER JOIN 检验数 ON 工序废品数.时间 = 检验数.时间
  928. ";
  929. //直接获取不分页数据
  930. DataTable dt = conn.ExecuteDatatable(sqlStr);
  931. int sumjs2 = (Convert.ToInt32( dt.Rows[0]["上水"])+Convert.ToInt32( dt.Rows[0]["吹风"]));
  932. string sqlStr2 = @"SELECT
  933. COUNT( DISTINCT PD.BARCODE ) 成检交接数量,
  934. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  935. FROM
  936. TP_PM_PRODUCTIONDATA PD
  937. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  938. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  939. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  940. WHERE
  941. PD.VALUEFLAG = '1'
  942. AND PD.CREATETIME >= trunc(sysdate)
  943. AND PD.PROCEDUREID IN ( 48,9 )
  944. AND PPD.USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D27','D29','D11','D20','D21','D22','D25','D26','D28','D32','D30','D34','D35','D38','D99','E4','E5','E9','E10','D33','D36','D37','D39','D40','D88','D51','D50')
  945. AND PD.ISREFIRE = 0 --非重烧
  946. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  947. AND GDT.GOODSTYPEID IN (4,6)
  948. GROUP BY
  949. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )";
  950. object DSUM = conn.ExecuteScalar(sqlStr2, null);
  951. double sumjs = Convert.ToInt32(DSUM);
  952. double hgsum = (sumjs - sumjs2);
  953. double HGL = (hgsum/sumjs)*100;
  954. JObject json = new JObject(
  955. new JProperty("success", true),
  956. new JProperty("sumhgl", Convert.ToDouble(HGL))
  957. );
  958. context.Response.Write(json.ToString());
  959. }
  960. //一期合格率
  961. if (context.Request["m"].ToString() == "HGL1") {
  962. string sqlStr = @"
  963. SELECT
  964. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END ) 二检缺陷数量,
  965. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间
  966. FROM
  967. TP_PM_DEFECT DEFECT
  968. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  969. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  970. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  971. WHERE
  972. DEFECT.CREATETIME >= trunc( SYSDATE )
  973. AND DEFECT.DEFECTUSERCODE IN ( 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19','D22', 'D27', 'D29','D30', 'D99','D39','D40','D88','D51' )
  974. AND PD.VALUEFLAG = '1' --有效
  975. AND DEFECT.VALUEFLAG = '1' --有效
  976. GROUP BY
  977. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  978. ";
  979. //直接获取不分页数据
  980. object QSUM = conn.ExecuteScalar(sqlStr);
  981. double qsum = Convert.ToInt32(QSUM);
  982. string sqlStr2 = @" SELECT
  983. COUNT( * ) 成检交接数量,
  984. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  985. FROM
  986. TP_PM_PRODUCTIONDATA PD
  987. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  988. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  989. LEFT JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  990. WHERE
  991. PD.VALUEFLAG = '1'
  992. AND PD.CREATETIME >= trunc( SYSDATE )
  993. AND PD.PROCEDUREID IN ( 48, 9 )
  994. AND PPD.USERCODE IN ( 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19','D22','D27', 'D29', 'D30','D99','D39','D40','D88','D51' )
  995. AND PD.ISREFIRE = 0 --非重烧
  996. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  997. AND GDT.GOODSTYPEID IN ( 4, 6 )
  998. GROUP BY
  999. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )";
  1000. object DSUM = conn.ExecuteScalar(sqlStr2, null);
  1001. double dsum = Convert.ToInt32(DSUM);
  1002. double zsum = dsum - qsum;
  1003. double HGL = (zsum/dsum)*100;
  1004. JObject json = new JObject(
  1005. new JProperty("success", true),
  1006. new JProperty("sumhgl", Convert.ToDouble(HGL))
  1007. );
  1008. context.Response.Write(json.ToString());
  1009. }
  1010. //二期合格率
  1011. if (context.Request["m"].ToString() == "HGL2") {
  1012. string sqlStr = @"
  1013. SELECT
  1014. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END ) 二检缺陷数量,
  1015. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间
  1016. FROM
  1017. TP_PM_DEFECT DEFECT
  1018. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  1019. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  1020. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  1021. WHERE
  1022. DEFECT.CREATETIME >= trunc( SYSDATE )
  1023. AND DEFECT.DEFECTUSERCODE IN ( 'D11', 'D20', 'D21', 'D25', 'D26', 'D28', 'D32', 'D34', 'D35', 'D38','D33','D36','D37','D50' )
  1024. AND PD.VALUEFLAG = '1' --有效
  1025. AND DEFECT.VALUEFLAG = '1' --有效
  1026. GROUP BY
  1027. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  1028. ";
  1029. //直接获取不分页数据
  1030. object QSUM = conn.ExecuteScalar(sqlStr, null);
  1031. double qsum = Convert.ToInt32(QSUM);
  1032. string sqlStr2 = @"SELECT
  1033. COUNT( * ) 成检交接数量,
  1034. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  1035. FROM
  1036. TP_PM_PRODUCTIONDATA PD
  1037. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  1038. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  1039. LEFT JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  1040. WHERE
  1041. PD.VALUEFLAG = '1'
  1042. AND PD.CREATETIME >= trunc( SYSDATE )
  1043. AND PD.PROCEDUREID IN ( 48, 9 )
  1044. AND PPD.USERCODE IN ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  1045. AND PD.ISREFIRE = 0 --非重烧
  1046. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  1047. AND GDT.GOODSTYPEID IN ( 4, 6 )
  1048. GROUP BY
  1049. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )";
  1050. object DSUM = conn.ExecuteScalar(sqlStr2, null);
  1051. double dsum = Convert.ToInt32(DSUM);
  1052. double zsum = dsum - qsum;
  1053. double HGL = (zsum/dsum)*100;
  1054. JObject json = new JObject(
  1055. new JProperty("success", true),
  1056. new JProperty("sumhgl", Convert.ToDouble(HGL))
  1057. );
  1058. context.Response.Write(json.ToString());
  1059. }
  1060. //服务器时间
  1061. if (context.Request["m"].ToString() == "fwq")
  1062. {
  1063. string time = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm ");
  1064. Dictionary<string, string> d = new Dictionary<string, string>();
  1065. JObject json = new JObject(
  1066. new JProperty("success", true),
  1067. new JProperty("sj", time)
  1068. );
  1069. context.Response.Write(json.ToString());
  1070. }
  1071. #endregion
  1072. #region 样式二 sql
  1073. if (context.Request["m"].ToString() == "SumCrack") {
  1074. string sqlStr = @"SELECT
  1075. COUNT(DISTINCT DF.BARCODE) 一线
  1076. FROM TP_PM_DEFECT df
  1077. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  1078. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  1079. AND pda.USERCODE in ('D12','D13','D14','D15','D16','D22','D17','D18','D19','D27','D29','D30','D99','D39','D40','D88','D51')
  1080. WHERE
  1081. df.CREATETIME >= trunc(sysdate)
  1082. AND df.VALUEFLAG=1
  1083. AND PD.PROCEDUREID IN ( 48,9 )
  1084. AND PD.VALUEFLAG=1
  1085. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6','8')
  1086. UNION ALL
  1087. SELECT
  1088. COUNT(DISTINCT DF.BARCODE) 二线
  1089. FROM TP_PM_DEFECT df
  1090. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  1091. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  1092. AND pda.USERCODE in ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  1093. WHERE
  1094. df.CREATETIME >= trunc(sysdate)
  1095. AND PD.PROCEDUREID IN ( 48,9 )
  1096. AND df.VALUEFLAG=1
  1097. AND PD.VALUEFLAG=1
  1098. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6','8')
  1099. UNION ALL
  1100. SELECT
  1101. COUNT(DISTINCT DF.BARCODE) 总计
  1102. FROM TP_PM_DEFECT df
  1103. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  1104. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  1105. AND pda.USERCODE in ('D12','D13','D14','D15','D16','D22','D17','D18','D19','D27','D29','D30','D99','D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D39','D40','D88','D51','D50')
  1106. WHERE
  1107. df.CREATETIME >= trunc(sysdate)
  1108. AND df.VALUEFLAG=1
  1109. AND PD.PROCEDUREID IN ( 48,9 )
  1110. AND PD.VALUEFLAG=1
  1111. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6','8')";
  1112. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1113. context.Response.Write(new JsonResult(dt).ToJson());
  1114. }
  1115. if (context.Request["m"].ToString() == "firstTable") {
  1116. string sqlStr = @"SELECT
  1117. code,
  1118. LISTAGG ( 缺陷 ) within GROUP ( ORDER BY 一线 DESC ) 位置统计,
  1119. SUM(一线) 一线产量
  1120. FROM(
  1121. SELECT
  1122. code,
  1123. 缺陷位置 || '(' || 一线|| ')' AS 缺陷,
  1124. 一线
  1125. FROM(
  1126. SELECT
  1127. pda.USERCODE code,
  1128. df.DEFECTPOSITIONNAME 缺陷位置,
  1129. COUNT(DISTINCT DF.BARCODE) 一线
  1130. FROM TP_PM_DEFECT df
  1131. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  1132. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  1133. AND pda.USERCODE in ('D12','D13','D14','D15','D16','D22','D17','D18','D19','D27','D29','D30','D99','D39','D40','D88','D51')
  1134. WHERE
  1135. df.CREATETIME >= trunc(sysdate)
  1136. AND df.VALUEFLAG=1
  1137. AND PD.PROCEDUREID IN ( 48,9 )
  1138. AND PD.VALUEFLAG=1
  1139. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6','8')
  1140. GROUP BY pda.USERCODE,
  1141. df.DEFECTPOSITIONNAME
  1142. )
  1143. )
  1144. GROUP BY code ";
  1145. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1146. context.Response.Write(new JsonResult(dt).ToJson());
  1147. }
  1148. if (context.Request["m"].ToString() == "SecondTable") {
  1149. string sqlStr = @"SELECT
  1150. code,
  1151. LISTAGG ( 缺陷 ) within GROUP ( ORDER BY 二线 DESC ) 位置统计,
  1152. SUM(二线) 二线产量
  1153. FROM(
  1154. SELECT
  1155. code,
  1156. 缺陷位置 || '(' || 二线|| ')' AS 缺陷,
  1157. 二线
  1158. FROM(
  1159. SELECT pda.USERCODE code,
  1160. df.DEFECTPOSITIONNAME 缺陷位置,
  1161. COUNT(DISTINCT DF.BARCODE) 二线
  1162. FROM TP_PM_DEFECT df
  1163. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  1164. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  1165. AND pda.USERCODE in ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  1166. WHERE
  1167. df.CREATETIME >= trunc(sysdate)
  1168. AND df.VALUEFLAG=1
  1169. AND PD.PROCEDUREID IN ( 48,9 )
  1170. AND PD.VALUEFLAG=1
  1171. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6','8')
  1172. GROUP BY pda.USERCODE,
  1173. df.DEFECTPOSITIONNAME
  1174. )
  1175. )
  1176. GROUP BY code
  1177. ";
  1178. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1179. context.Response.Write(new JsonResult(dt).ToJson());
  1180. }
  1181. #endregion
  1182. }
  1183. }
  1184. public bool IsReusable
  1185. {
  1186. get
  1187. {
  1188. return false;
  1189. }
  1190. }
  1191. }