SecondaryCheckTwo.ashx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. <%@ WebHandler Language="C#" Class="SecondaryCheckTwo" %>
  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 SecondaryCheckTwo : IHttpHandler, IRequiresSessionState
  13. {
  14. public void ProcessRequest(HttpContext context)
  15. {
  16. using (IDataAccess conn = DataAccess.Create())
  17. {
  18. #region 样式二 sql
  19. //总产量
  20. if (context.Request["m"].ToString() == "sumjs") {
  21. string sqlStr = @" SELECT COUNT(*) FROM(SELECT DISTINCT BARCODE FROM TP_PM_PRODUCTIONDATA
  22. 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') AND TRUNC(CREATETIME ) = trunc(sysdate)
  23. AND ACCOUNTID=1 AND VALUEFLAG=1 AND PROCEDUREID = 35)";
  24. object JS2SUM = conn.ExecuteScalar(sqlStr, null);
  25. JObject json = new JObject(
  26. new JProperty("success", true),
  27. new JProperty("sumjs", Convert.ToInt32(JS2SUM))
  28. );
  29. context.Response.Write(json.ToString());
  30. }
  31. //合格率
  32. if (context.Request["m"].ToString() == "HGL") {
  33. string sqlStr = @"
  34. WITH
  35. 工序废品数 AS
  36. (
  37. SELECT
  38. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  39. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  40. FROM
  41. TP_PM_DEFECT DEFECT
  42. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  43. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  44. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  45. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  46. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  47. WHERE
  48. TRUNC( DEFECT.CREATETIME ) = trunc(sysdate)
  49. --DEFECT.CREATETIME >= date'2022-08-12'
  50. --AND DEFECT.CREATETIME < date'2022-08-13'
  51. AND PD.VALUEFLAG = '1' --有效
  52. AND DEFECT.VALUEFLAG = '1' --有效
  53. AND PD.ISREFIRE = 0 --非重烧
  54. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  55. AND GDT.GOODSTYPEID IN (4,6)
  56. 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')
  57. AND PD.PROCEDUREID IN ( 49, 10 )
  58. AND PD.GOODSLEVELTYPEID=7--次品
  59. AND PD.ACCOUNTID=1
  60. AND PD.CHECKBATCHNO=1
  61. GROUP BY
  62. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  63. ),
  64. 数量 AS
  65. (
  66. SELECT
  67. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间,
  68. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '62' ) THEN 1 ELSE 0 END ) 上水,
  69. SUM( CASE WHEN DEFECT.DEFECTCODE IN ( '63','64' ) THEN 1 ELSE 0 END ) 吹风
  70. FROM
  71. TP_PM_DEFECT DEFECT
  72. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  73. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  74. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  75. WHERE
  76. TRUNC( DEFECT.CREATETIME ) = trunc(sysdate)
  77. 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')
  78. AND PD.VALUEFLAG = '1' --有效
  79. AND DEFECT.VALUEFLAG = '1' --有效
  80. AND PD.ISREFIRE = 0 --非重烧
  81. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  82. AND GDT.GOODSTYPEID IN (4,6)
  83. GROUP BY
  84. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  85. ),
  86. 检验数 AS (
  87. SELECT
  88. COUNT( * ) 成检交接数量,
  89. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  90. FROM
  91. TP_PM_PRODUCTIONDATA PD
  92. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  93. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  94. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  95. WHERE
  96. PD.VALUEFLAG = '1'
  97. AND TRUNC( PD.CREATETIME ) = trunc(sysdate)
  98. AND PD.PROCEDUREID IN ( 48,9 )
  99. 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')
  100. GROUP BY
  101. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )
  102. ),
  103. 工序缺陷数量 AS (
  104. SELECT
  105. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' ) 时间,
  106. SUM(CASE WHEN DEFECT.DEFECTCODE IN ( '62', '64', '63' ) THEN 1 ELSE 0 END) 二检数量
  107. FROM
  108. TP_PM_DEFECT DEFECT
  109. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON DEFECT.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  110. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  111. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  112. LEFT JOIN TP_MST_DEFECT MSTDEFECECT ON DEFECT.DEFECTID = MSTDEFECECT.DEFECTID
  113. LEFT JOIN TP_MST_DEFECTTYPE MSTDEFECECTTYPE ON MSTDEFECECT.DEFECTTYPEID = MSTDEFECECTTYPE.DEFECTTYPEID
  114. WHERE
  115. TRUNC( DEFECT.CREATETIME ) = trunc(sysdate)
  116. --DEFECT.CREATETIME >= date'2022-08-12'
  117. --AND DEFECT.CREATETIME < date'2022-08-13'
  118. 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')
  119. AND PD.VALUEFLAG = '1' --有效
  120. AND DEFECT.VALUEFLAG = '1' --有效
  121. GROUP BY
  122. TO_CHAR( DEFECT.CREATETIME, 'yyyy-mm-dd' )
  123. ),
  124. 前三部位 AS (
  125. SELECT
  126. TT9.上水,
  127. TT10.吹风
  128. FROM
  129. --二检上水
  130. (
  131. SELECT
  132. LISTAGG ( T9.前三部位 ) within GROUP ( ORDER BY T9.数量 DESC ) 上水
  133. FROM
  134. (
  135. SELECT
  136. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  137. T.数量
  138. FROM
  139. (
  140. SELECT
  141. TMDPI.DEFECTPOSITIONNAME AS 位置,
  142. COUNT( * ) AS 数量
  143. FROM
  144. TP_PM_DEFECT TMDP
  145. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  146. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  147. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  148. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  149. WHERE
  150. TRUNC( TMDP.CREATETIME ) = trunc(sysdate)
  151. 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')
  152. --TMDP.CREATETIME >= DATE'2022-08-12'
  153. --AND TMDP.CREATETIME < DATE'2022-08-13'
  154. AND TMDP.DEFECTCODE IN ( '62' )
  155. AND PD.ISREFIRE = 0 --非重烧
  156. AND PD.VALUEFLAG = '1' --有效
  157. AND TMDP.VALUEFLAG = '1' --有效
  158. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  159. AND GDT.GOODSTYPEID IN (4,6)
  160. GROUP BY
  161. TMDPI.DEFECTPOSITIONID,
  162. TMDPI.DEFECTPOSITIONNAME
  163. ORDER BY
  164. COUNT( * ) DESC
  165. ) T
  166. WHERE
  167. ROWNUM <= 3
  168. ) T9
  169. ) TT9
  170. LEFT JOIN
  171. --二检吹风
  172. (
  173. SELECT
  174. LISTAGG ( T10.前三部位 ) within GROUP ( ORDER BY T10.数量 DESC ) 吹风
  175. FROM
  176. (
  177. SELECT
  178. T.位置 || '(' || T.数量 || ')' AS 前三部位,
  179. T.数量
  180. FROM
  181. (
  182. SELECT
  183. TMDPI.DEFECTPOSITIONNAME AS 位置,
  184. COUNT( * ) AS 数量
  185. FROM
  186. TP_PM_DEFECT TMDP
  187. LEFT JOIN TP_MST_DEFECTPOSITION TMDPI ON TMDP.DEFECTPOSITIONID = TMDPI.DEFECTPOSITIONID
  188. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  189. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  190. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  191. WHERE
  192. TRUNC( TMDP.CREATETIME ) = trunc(sysdate)
  193. --TMDP.CREATETIME >= DATE'2022-08-12'
  194. --AND TMDP.CREATETIME < DATE'2022-08-13'
  195. 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')
  196. AND TMDP.DEFECTCODE IN ( '63', '64' )
  197. AND PD.ISREFIRE = 0 --非重烧
  198. AND PD.VALUEFLAG = '1' --有效
  199. AND TMDP.VALUEFLAG = '1' --有效
  200. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  201. AND GDT.GOODSTYPEID IN (4,6)
  202. GROUP BY
  203. TMDPI.DEFECTPOSITIONID,
  204. TMDPI.DEFECTPOSITIONNAME
  205. ORDER BY
  206. COUNT( * ) DESC
  207. ) T
  208. WHERE
  209. ROWNUM <= 3
  210. ) T10
  211. ) TT10 ON 1 = 1
  212. )
  213. SELECT
  214. TO_CHAR( 数量.上水 ) 上水,
  215. TO_CHAR( 数量.吹风 ) 吹风
  216. FROM
  217. 数量
  218. UNION ALL
  219. SELECT
  220. DECODE( NVL( 数量.上水, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.上水, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' ) ,
  221. DECODE( NVL( 数量.吹风, 0 ), 0, '0%', TO_CHAR( ( NVL( 数量.吹风, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.0' ) || '%' )
  222. FROM
  223. 数量
  224. INNER JOIN 检验数 ON 数量.时间 = 检验数.时间
  225. UNION ALL
  226. SELECT
  227. NVL(前三部位.上水,'-'),
  228. NVL(前三部位.吹风,'-')
  229. FROM
  230. 前三部位
  231. UNION ALL
  232. SELECT
  233. '',
  234. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  235. DECODE( NVL( 工序缺陷数量.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序缺陷数量.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  236. FROM
  237. 工序缺陷数量
  238. INNER JOIN 检验数 ON 工序缺陷数量.时间 = 检验数.时间
  239. UNION ALL
  240. SELECT
  241. '',
  242. --DECODE(检验数.成检交接数量, 0, '0%', TO_CHAR( ROUND( (数量.上水 + 数量.吹风) / 检验数.成检交接数量, 4 ) * 100.00, 'FM900.09' ) || '%') ,
  243. DECODE( NVL( 工序废品数.二检数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 工序废品数.二检数量, 0 ) / DECODE( NVL( 检验数.成检交接数量, 1 ), 0, 1, NVL( 检验数.成检交接数量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' )
  244. FROM
  245. 工序废品数
  246. INNER JOIN 检验数 ON 工序废品数.时间 = 检验数.时间
  247. ";
  248. //直接获取不分页数据
  249. DataTable dt = conn.ExecuteDatatable(sqlStr);
  250. int sumjs2 = (Convert.ToInt32( dt.Rows[0]["上水"])+Convert.ToInt32( dt.Rows[0]["吹风"]));
  251. string sqlStr2 = @"SELECT
  252. COUNT( * ) 成检交接数量,
  253. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' ) 时间
  254. FROM
  255. TP_PM_PRODUCTIONDATA PD
  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. INNER JOIN TP_PM_PRODUCTIONDATA PPD ON PD.BARCODE = PPD.BARCODE
  259. WHERE
  260. PD.VALUEFLAG = '1'
  261. AND TRUNC( PD.CREATETIME ) = trunc(sysdate)
  262. AND PD.PROCEDUREID IN ( 48,9 )
  263. AND PPD.USERCODE IN ('D12','D13','D14','D15','D16','D17','D18','D19','D27','D29','D11','D20','D21','D25','D26','D28','D32','D30','D34','D35','D38','D99')
  264. AND PD.ISREFIRE = 0 --非重烧
  265. AND SUBSTR( GDT.GOODSTYPECODE, 0, 6 ) = '001001' --大件
  266. AND GDT.GOODSTYPEID IN (4,6)
  267. GROUP BY
  268. TO_CHAR( PD.CREATETIME, 'yyyy-mm-dd' )";
  269. object DSUM = conn.ExecuteScalar(sqlStr2, null);
  270. double sumjs = Convert.ToInt32(DSUM);
  271. double hgsum = (sumjs - sumjs2);
  272. double HGL = (hgsum/sumjs)*100;
  273. JObject json = new JObject(
  274. new JProperty("success", true),
  275. new JProperty("sumhgl", Convert.ToDouble(HGL))
  276. );
  277. context.Response.Write(json.ToString());
  278. }
  279. if (context.Request["m"].ToString() == "fwq")
  280. {
  281. string time = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm ");
  282. Dictionary<string, string> d = new Dictionary<string, string>();
  283. JObject json = new JObject(
  284. new JProperty("success", true),
  285. new JProperty("sj", time)
  286. );
  287. context.Response.Write(json.ToString());
  288. }
  289. if (context.Request["m"].ToString() == "SumCrack") {
  290. string sqlStr = @"SELECT
  291. COUNT(DISTINCT DF.BARCODE) 一线
  292. FROM TP_PM_DEFECT df
  293. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  294. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  295. AND pda.USERCODE in ('D12','D13','D14','D15','D16','D22','D17','D18','D19','D27','D29','D30','D99')
  296. WHERE
  297. TRUNC( df.CREATETIME ) = trunc(sysdate)
  298. AND df.VALUEFLAG=1
  299. AND PD.PROCEDUREID IN ( 48,9 )
  300. AND PD.VALUEFLAG=1
  301. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6')
  302. UNION ALL
  303. SELECT
  304. COUNT(DISTINCT DF.BARCODE) 二线
  305. FROM TP_PM_DEFECT df
  306. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  307. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  308. AND pda.USERCODE in ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38')
  309. WHERE
  310. TRUNC( df.CREATETIME ) = trunc(sysdate)
  311. AND PD.PROCEDUREID IN ( 48,9 )
  312. AND df.VALUEFLAG=1
  313. AND PD.VALUEFLAG=1
  314. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6')
  315. UNION ALL
  316. SELECT
  317. COUNT(DISTINCT DF.BARCODE) 总计
  318. FROM TP_PM_DEFECT df
  319. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  320. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  321. WHERE
  322. TRUNC( df.CREATETIME ) = trunc(sysdate)
  323. AND df.VALUEFLAG=1
  324. AND PD.PROCEDUREID IN ( 48,9 )
  325. AND PD.VALUEFLAG=1
  326. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6')";
  327. DataTable dt = conn.ExecuteDatatable(sqlStr);
  328. context.Response.Write(new JsonResult(dt).ToJson());
  329. }
  330. if (context.Request["m"].ToString() == "firstTable") {
  331. string sqlStr = @"SELECT
  332. code,
  333. LISTAGG ( 缺陷 ) within GROUP ( ORDER BY 一线 DESC ) 位置统计,
  334. SUM(一线) 一线产量
  335. FROM(
  336. SELECT
  337. code,
  338. 缺陷位置 || '(' || 一线|| ')' AS 缺陷,
  339. 一线
  340. FROM(
  341. SELECT
  342. pda.USERCODE code,
  343. df.DEFECTPOSITIONNAME 缺陷位置,
  344. COUNT(DISTINCT DF.BARCODE) 一线
  345. FROM TP_PM_DEFECT df
  346. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  347. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  348. AND pda.USERCODE in ('D12','D13','D14','D15','D16','D22','D17','D18','D19','D27','D29','D30','D99','D39','D40','D88','D51')
  349. WHERE
  350. df.CREATETIME >= trunc(sysdate)
  351. AND df.VALUEFLAG=1
  352. AND PD.PROCEDUREID IN ( 48,9 )
  353. AND PD.VALUEFLAG=1
  354. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6')
  355. GROUP BY pda.USERCODE,
  356. df.DEFECTPOSITIONNAME
  357. )
  358. )
  359. GROUP BY code ";
  360. DataTable dt = conn.ExecuteDatatable(sqlStr);
  361. context.Response.Write(new JsonResult(dt).ToJson());
  362. }
  363. if (context.Request["m"].ToString() == "SecondTable") {
  364. string sqlStr = @"SELECT
  365. code,
  366. LISTAGG ( 缺陷 ) within GROUP ( ORDER BY 二线 DESC ) 位置统计,
  367. SUM(二线) 二线产量
  368. FROM(
  369. SELECT
  370. code,
  371. 缺陷位置 || '(' || 二线|| ')' AS 缺陷,
  372. 二线
  373. FROM(
  374. SELECT pda.USERCODE code,
  375. df.DEFECTPOSITIONNAME 缺陷位置,
  376. COUNT(DISTINCT DF.BARCODE) 二线
  377. FROM TP_PM_DEFECT df
  378. LEFT JOIN TP_PM_PRODUCTIONDATA pd on pd.BARCODE =df.BARCODE
  379. INNER JOIN TP_PM_PRODUCTIONDATA pda on pda.BARCODE = pd.BARCODE
  380. AND pda.USERCODE in ('D11','D20','D21','D25','D26','D28','D32','D34','D35','D38','D33','D36','D37','D50')
  381. WHERE
  382. df.CREATETIME >= trunc(sysdate)
  383. AND df.VALUEFLAG=1
  384. AND PD.PROCEDUREID IN ( 48,9 )
  385. AND PD.VALUEFLAG=1
  386. AND df.DEFECTCODE='1' AND df.DEFECTPOSITIONCODE IN('1','2','3','6')
  387. GROUP BY pda.USERCODE,
  388. df.DEFECTPOSITIONNAME
  389. )
  390. )
  391. GROUP BY code
  392. ";
  393. DataTable dt = conn.ExecuteDatatable(sqlStr);
  394. context.Response.Write(new JsonResult(dt).ToJson());
  395. }
  396. #endregion
  397. }
  398. }
  399. public bool IsReusable
  400. {
  401. get
  402. {
  403. return false;
  404. }
  405. }
  406. }