rpt.ashx 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class rpt : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. using(IDataAccess conn = DataAccess.Create())
  19. {
  20. if (context.Request["m"].ToString() == "defect")
  21. {
  22. string sqlStr = @"
  23. WITH MES AS (
  24. SELECT
  25. DEFECTCODE,
  26. DEFECTNAME,
  27. NUM,
  28. RN
  29. FROM
  30. (
  31. SELECT
  32. DEFECTCODE,
  33. DEFECTNAME,
  34. NUM,
  35. ROW_NUMBER ( ) OVER ( ORDER BY NUM DESC, DEFECTCODE ) AS RN
  36. FROM
  37. (
  38. SELECT
  39. D.DEFECTCODE,
  40. DEFECT.S_NAME AS DEFECTNAME,
  41. COUNT( DISTINCT D.BARCODE ) AS NUM
  42. FROM
  43. TP_PM_DEFECT D
  44. LEFT JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  45. LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  46. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  47. INNER JOIN TP_MST_DEFECTFINERELATION DFR ON D.DEFECTID = DFR.DEFECTID
  48. INNER JOIN TP_MST_DEFECTFINE DF ON DF.DEFECTFINEID = DFR.DEFECTFINEID
  49. INNER JOIN TP_MST_DEFECTDEDUCTIONRELATION DDR ON D.DEFECTID = DDR.DEFECTID
  50. INNER JOIN TP_MST_DEFECTDEDUCTION DD ON DD.DEFECTDEDUCTIONID = DDR.DEFECTDEDUCTIONID
  51. INNER JOIN TP_MST_DEFECT DEFECT ON D.DEFECTID = DEFECT.DEFECTID
  52. WHERE
  53. D.VALUEFLAG = 1
  54. AND PD.VALUEFLAG = 1
  55. AND PD.GOODSLEVELTYPEID IN(6, 7)
  56. AND PD.KILNCODE IN('SK3', 'TK3')
  57. AND D.CREATETIME >= trunc(sysdate) + 7/24
  58. AND D.CREATETIME < trunc(sysdate) + 7/24 + 1
  59. -- AND (INSTR( PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4 OR INSTR( PD.GROUTINGLINECODE, 'C06B' ) = 1)
  60. AND INSTR (PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4
  61. GROUP BY
  62. D.DEFECTCODE,
  63. DEFECT.S_NAME
  64. )
  65. )
  66. WHERE
  67. RN <= 6
  68. )
  69. SELECT
  70. DEFECTCODE 缺陷编码,
  71. 'TOP'||RN 缺陷排行,
  72. DEFECTNAME 缺陷名称,
  73. -- DEFECTPOSITIONCODE,
  74. DEFECTPOSITIONNAME 缺陷位置,
  75. 'TOP'||RN2 位置排行,
  76. NUM 数量,
  77. n,
  78. ROUND( 100 * RATIO_TO_REPORT ( NUM ) OVER ( PARTITION BY RN ), 1 )||'%' AS 占比
  79. FROM
  80. (
  81. SELECT
  82. DEFECTCODE,
  83. DEFECTNAME,
  84. n,
  85. RN,
  86. DEFECTPOSITIONCODE,
  87. DEFECTPOSITIONNAME,
  88. NUM,
  89. RN2
  90. FROM
  91. (
  92. SELECT
  93. DEFECTCODE,
  94. DEFECTNAME,
  95. n,
  96. RN,
  97. DEFECTPOSITIONCODE,
  98. DEFECTPOSITIONNAME,
  99. NUM,
  100. ROW_NUMBER ( ) OVER ( PARTITION BY DEFECTCODE ORDER BY RN, NUM DESC ) AS RN2
  101. FROM
  102. (
  103. SELECT
  104. M.DEFECTCODE,
  105. M.DEFECTNAME,
  106. m.NUM as n,
  107. M.RN,
  108. D.DEFECTPOSITIONCODE,
  109. DEFECTPOSITION.S_NAME AS DEFECTPOSITIONNAME,
  110. COUNT( DISTINCT D.BARCODE ) AS NUM
  111. FROM
  112. MES M
  113. LEFT JOIN TP_PM_DEFECT D ON M.DEFECTCODE = D.DEFECTCODE
  114. LEFT JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  115. LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  116. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  117. INNER JOIN TP_MST_DEFECTPOSITION DEFECTPOSITION ON DEFECTPOSITION .DEFECTPOSITIONID = D.DEFECTPOSITIONID
  118. WHERE
  119. D.VALUEFLAG = 1
  120. AND PD.VALUEFLAG = 1
  121. AND D.CREATETIME >= trunc(sysdate) + 7/24
  122. AND D.CREATETIME < trunc(sysdate) + 7/24 + 1
  123. -- AND (INSTR( PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4 OR INSTR( PD.GROUTINGLINECODE, 'C06B' ) = 1)
  124. AND INSTR (PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4
  125. AND PD.GOODSLEVELTYPEID IN(6, 7)
  126. AND PD.KILNCODE IN('SK3', 'TK3')
  127. GROUP BY
  128. M.DEFECTCODE,
  129. M.DEFECTNAME,
  130. m.num,
  131. M.RN,
  132. D.DEFECTPOSITIONCODE,
  133. DEFECTPOSITION.S_NAME
  134. )
  135. )
  136. WHERE
  137. RN2 <= 3
  138. )
  139. ORDER BY
  140. LPAD(RN,3,'0'),
  141. LPAD(RN2,3,'0')
  142. ";
  143. //直接获取不分页数据
  144. DataTable dt = conn.ExecuteDatatable(sqlStr);
  145. string jsonStr = new JsonResult(dt).ToJson();
  146. context.Response.Write(jsonStr);
  147. }
  148. else if (context.Request["m"].ToString() == "nm")
  149. {
  150. string sqlStr = @"
  151. -- SELECT
  152. -- SUM( CASE WHEN pd.CREATETIME >= TRUNC( SYSDATE )
  153. -- AND pd.CREATETIME < TRUNC( SYSDATE ) + 1
  154. -- AND GL.HIGHPRESSUREFLAG = 1 THEN 1 ELSE 0 END ) AS NUM1,
  155. -- SUM( CASE WHEN pd.CREATETIME >= TRUNC( SYSDATE )
  156. -- AND pd.CREATETIME < TRUNC( SYSDATE ) + 1
  157. -- THEN 1 ELSE 0 END ) AS NUM2,
  158. -- SUM( CASE WHEN pd.CREATETIME >= TRUNC(ADD_MONTHS(LAST_DAY(SYSDATE), -1)+1 )
  159. -- AND pd.CREATETIME < TRUNC( SYSDATE ) + 1
  160. -- AND GL.HIGHPRESSUREFLAG = 1 THEN 1 ELSE 0 END ) AS NUM3,
  161. -- SUM( CASE WHEN pd.CREATETIME >= TRUNC(ADD_MONTHS(LAST_DAY(SYSDATE), -1)+1 )
  162. -- AND pd.CREATETIME < TRUNC( SYSDATE ) + 1
  163. -- THEN 1 ELSE 0 END ) AS NUM4
  164. -- FROM
  165. -- TP_PM_PRODUCTIONDATA pd
  166. -- INNER JOIN TP_PC_GROUTINGLINE GL ON pd.GROUTINGLINEID = GL.GROUTINGLINEID
  167. -- WHERE
  168. -- (
  169. -- pd.PROCEDUREID = 104
  170. -- AND pd.ISREFIRE = 0
  171. -- AND pd.CHECKFLAG = 1
  172. -- OR pd.PROCEDUREID = 11
  173. -- AND pd.VALUEFLAG = 1
  174. -- )
  175. -- AND (
  176. -- INSTR( pd.GROUTINGLINECODE, 'C' ) = 1
  177. -- AND INSTR( pd.GROUTINGLINECODE, 'A' ) = 4
  178. -- OR INSTR( pd.GROUTINGLINECODE, 'C06B' ) = 1
  179. -- )
  180. SELECT
  181. SUM( CASE WHEN GL.HIGHPRESSUREFLAG = 1 THEN 1 ELSE 0 END ) AS NUM1,
  182. COUNT(DISTINCT PD.BARCODE) AS NUM2
  183. FROM
  184. TP_PM_PRODUCTIONDATA pd
  185. INNER JOIN TP_PC_GROUTINGLINE GL ON pd.GROUTINGLINEID = GL.GROUTINGLINEID
  186. WHERE
  187. pd.CREATETIME >= TRUNC( SYSDATE ) + 7/24
  188. AND pd.CREATETIME < TRUNC( SYSDATE ) + 7/24 + 1
  189. AND
  190. (
  191. pd.PROCEDUREID = 104
  192. AND pd.ISREFIRE = 0
  193. AND pd.CHECKFLAG = 1
  194. OR pd.PROCEDUREID = 11
  195. AND pd.VALUEFLAG = 1
  196. )
  197. AND (
  198. INSTR( pd.GROUTINGLINECODE, 'C' ) = 1
  199. AND INSTR( pd.GROUTINGLINECODE, 'A' ) = 4
  200. OR INSTR( pd.GROUTINGLINECODE, 'C06B' ) = 1
  201. )
  202. ";
  203. //直接获取不分页数据
  204. DataTable dt = conn.ExecuteDatatable(sqlStr);
  205. string jsonStr = new JsonResult(dt).ToJson();
  206. context.Response.Write(jsonStr);
  207. }
  208. else if (context.Request["m"].ToString() == "pass")
  209. {
  210. // string sqlStr = @"
  211. // SELECT
  212. // SJ,
  213. //-- ROUND( ( NUM1 - NUM2 ) / DECODE( NUM1, 0, 1, NUM1 )*100, 1 ) AS 本烧,
  214. //-- ROUND( ( NUM3 - NUM4 ) / DECODE( NUM1, 0, 1, NUM1 )*100, 1 ) AS 整体
  215. // NUM1 - NUM2 AS 本烧,
  216. // NUM3 - NUM4 AS 整体
  217. // FROM
  218. // (
  219. // SELECT
  220. // TO_CHAR( TRUNC( CREATETIME - 7/24 ), 'YY-MM-DD' ) AS SJ,
  221. // -- SUM( CASE WHEN ( PROCEDUREID = 104 AND ISREFIRE = 0 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 OR PROCEDUREID = 58 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM1,
  222. // SUM( CASE WHEN PROCEDUREID = 104 AND ISREFIRE = 0 AND CHECKFLAG = 1 THEN 1 ELSE 0 END ) AS NUM1,
  223. // SUM(
  224. // CASE
  225. // WHEN
  226. // ( PROCEDUREID = 105 AND ISREFIRE = 0 OR PROCEDUREID = 12 )
  227. // -- PROCEDUREID = 105 AND ISREFIRE = 0
  228. // AND GOODSLEVELTYPEID IN ( 6, 7, 8 )
  229. // AND VALUEFLAG = 1 THEN
  230. // 1 ELSE 0
  231. // END
  232. // ) AS NUM2,
  233. // SUM( CASE WHEN PROCEDUREID = 104 AND CHECKFLAG = 1 THEN 1 ELSE 0 END ) AS NUM3,
  234. // -- SUM( CASE WHEN ( PROCEDUREID = 104 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 OR PROCEDUREID = 58 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM3,
  235. // -- SUM( CASE WHEN ( PROCEDUREID = 105 OR PROCEDUREID = 12 OR PROCEDUREID = 59 ) AND GOODSLEVELTYPEID IN ( 6, 7, 8 ) AND VALUEFLAG = 1 THEN 1 ELSE 0 END ) AS NUM4
  236. // SUM( CASE WHEN PROCEDUREID = 105 AND GOODSLEVELTYPEID IN ( 6, 7, 8 ) AND VALUEFLAG = 1 THEN 1 ELSE 0 END ) AS NUM4
  237. // FROM
  238. // TP_PM_PRODUCTIONDATA
  239. // WHERE
  240. // CREATETIME >= TRUNC( SYSDATE ) - 6 + 7/24
  241. // AND CREATETIME < TRUNC( SYSDATE ) + 1 + 7/24
  242. // -- AND KILNCODE IN('SK3', 'TK3')
  243. // -- AND (INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4 OR INSTR( GROUTINGLINECODE, 'C06B' ) = 1)
  244. // -- AND INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4
  245. // GROUP BY
  246. // TO_CHAR( TRUNC( CREATETIME - 7/24 ), 'YY-MM-DD' )
  247. // )
  248. // ORDER BY
  249. // SJ -- DESC ";
  250. string sqlStr = @"SELECT
  251. TO_CHAR( TRUNC( T4.本烧合格 / T4.本烧数量,4) * 100, '9,999.99' ) || '%' AS 合格率,
  252. T4.本烧合格 as 烧成合格数,
  253. SUBSTR(T4.CREATETIME,5,2 ) ||'.'|| SUBSTR(T4.CREATETIME,7,2 ) AS 月日
  254. FROM
  255. (
  256. SELECT
  257. T1.本烧数量,
  258. T2.本烧不合格数量,
  259. T1.本烧数量 - T2.本烧不合格数量 AS 本烧合格,
  260. T1.CREATETIME
  261. FROM
  262. (
  263. SELECT DISTINCT--本烧数量
  264. COUNT( TPPD.BARCODE ) 本烧数量,
  265. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  266. FROM
  267. TP_PM_PRODUCTIONDATA TPPD
  268. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  269. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  270. WHERE
  271. TPPD.PROCEDUREID IN ( 104 )
  272. AND TPPD.ISREFIRE = 0
  273. AND PGD.TESTFLAG = 0
  274. AND TPPD.VALUEFLAG = 1
  275. --AND TPPD.checkflag = '1'
  276. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  277. GROUP BY
  278. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  279. ORDER BY
  280. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  281. ) T1
  282. LEFT JOIN (
  283. SELECT
  284. to_char( T1.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
  285. COUNT( T1.BARCODE ) AS 本烧不合格数量
  286. FROM
  287. (
  288. SELECT DISTINCT
  289. T.BARCODE,
  290. TPPD.CREATETIME
  291. FROM
  292. TP_PM_PRODUCTIONDATA TPPD
  293. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  294. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  295. LEFT JOIN (
  296. SELECT
  297. DISTINCT
  298. TPPD.BARCODE
  299. FROM
  300. TP_PM_PRODUCTIONDATA TPPD
  301. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  302. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  303. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  304. WHERE
  305. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  306. AND TPPD.GOODSLEVELID IN ( 6, 7 )
  307. AND TPPD.CHECKBATCHNO = 1
  308. AND TPGL.TESTFLAG = 0
  309. AND TMD.DEFECTTYPEID <> 14
  310. AND TPPD.VALUEFLAG = 1
  311. AND TPD.DEFECTNAME IS NOT NULL
  312. --AND TPPD.ISREFIRE = 0
  313. ) T ON T.BARCODE = TPPD.BARCODE
  314. WHERE
  315. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  316. AND TPPD.PROCEDUREID IN ( 104 )
  317. AND length( TPPD.kilncarbatchno ) > 0
  318. AND TPGL.TESTFLAG = 0
  319. AND TPPD.VALUEFLAG = 1
  320. AND TPPD.ISREFIRE = 0
  321. AND TPD.DEFECTNAME IS NOT NULL
  322. ) T1
  323. GROUP BY
  324. to_char( T1.CREATETIME, 'yyyymmdd' )
  325. ORDER BY
  326. to_char( T1.CREATETIME, 'yyyymmdd' ) DESC
  327. ) T2 ON T2.CREATETIME = T1.CREATETIME
  328. ORDER BY
  329. CREATETIME DESC)T4 ORDER BY T4.CREATETIME";
  330. //直接获取不分页数据
  331. DataTable dt = conn.ExecuteDatatable(sqlStr);
  332. string jsonStr = new JsonResult(dt).ToJson();
  333. context.Response.Write(jsonStr);
  334. }
  335. else if (context.Request["m"].ToString() == "scrap")
  336. {
  337. string sqlStr = @"
  338. SELECT
  339. RN,
  340. DC,
  341. -- DN||'('||DC||')' DN,
  342. DN||'_'||OFFICENAME DN,
  343. NM,
  344. ROUND( 100 * RATIO_TO_REPORT ( NM ) OVER ( PARTITION BY 1 ), 1 ) || '%' AS PERCENTAGE
  345. FROM
  346. (
  347. SELECT
  348. D.DEFECTCODE AS DC,
  349. DEFECT.S_NAME AS DN,
  350. -- ,s.GOODSLEVELTYPEID
  351. DOL.OFFICENAME,
  352. COUNT( DISTINCT S.BARCODE ) AS NM,
  353. ROW_NUMBER ( ) OVER ( ORDER BY COUNT( DISTINCT S.BARCODE ) DESC ) AS RN
  354. FROM
  355. TP_PM_SCRAPPRODUCT S
  356. INNER JOIN TP_PM_DEFECT D ON S.BARCODE = D.BARCODE
  357. INNER JOIN TP_DSB_DEFECTOFFICELINKED DOL ON DOL.DEFECTCODE = D.DEFECTCODE
  358. INNER JOIN TP_MST_DEFECT DEFECT ON D.DEFECTID = DEFECT.DEFECTID
  359. WHERE
  360. S.VALUEFLAG = 1
  361. AND S.GOODSLEVELTYPEID IN ( 7 )
  362. AND D.VALUEFLAG = 1
  363. AND instr( D.DEFECTCODE, '0' ) <> 1
  364. AND S.SCRAPTYPE = 1
  365. AND S.AUDITSTATUS = 1
  366. AND S.ISREFIRE = 0
  367. AND S.CREATETIME >= TRUNC( SYSDATE ) + 7/24
  368. GROUP BY
  369. DOL.OFFICENAME,
  370. D.DEFECTCODE,
  371. DEFECT.S_NAME
  372. )
  373. -- WHERE
  374. -- RN < 11
  375. ";
  376. //直接获取不分页数据
  377. DataTable dt = conn.ExecuteDatatable(sqlStr);
  378. string jsonStr = new JsonResult(dt).ToJson();
  379. context.Response.Write(jsonStr);
  380. }
  381. else if (context.Request["m"].ToString() == "officedefect")
  382. {
  383. string sqlStr = @"
  384. SELECT
  385. DOL.OFFICENAME,
  386. -- D.DEFECTCODE,
  387. -- D.DEFECTNAME,
  388. COUNT( DISTINCT D.BARCODE ) AS NUM,
  389. ROUND( 100 * RATIO_TO_REPORT ( COUNT( DISTINCT D.BARCODE ) ) OVER ( PARTITION BY 1 ), 1 ) || '%' AS PERCENTAGE
  390. FROM
  391. TP_PM_DEFECT D
  392. LEFT JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  393. LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  394. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  395. INNER JOIN TP_DSB_DEFECTOFFICELINKED DOL ON D.DEFECTCODE = DOL.DEFECTCODE
  396. WHERE
  397. D.VALUEFLAG = 1
  398. AND PD.VALUEFLAG = 1
  399. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  400. AND PD.KILNCODE IN ( 'SK3', 'TK3' )
  401. AND D.CREATETIME >= TRUNC( SYSDATE ) + 7/24
  402. AND D.CREATETIME < TRUNC( SYSDATE ) + 7/24 + 1
  403. -- AND (INSTR( PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4 OR INSTR( PD.GROUTINGLINECODE, 'C06B' ) = 1)
  404. AND INSTR( PD.GROUTINGLINECODE, 'C' ) = 1
  405. AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4
  406. GROUP BY
  407. DOL.OFFICENAME -- ,
  408. -- D.DEFECTCODE,
  409. -- D.DEFECTNAME
  410. ORDER BY
  411. NUM DESC
  412. ";
  413. //直接获取不分页数据
  414. DataTable dt = conn.ExecuteDatatable(sqlStr);
  415. string jsonStr = new JsonResult(dt).ToJson();
  416. context.Response.Write(jsonStr);
  417. }
  418. else if (context.Request["m"].ToString() == "goodsdefect")
  419. {
  420. string sqlStr = @"
  421. SELECT
  422. D.GOODSCODE,
  423. D.DEFECTCODE,
  424. -- D.DEFECTNAME||'('||D.DEFECTCODE||')' DEFECTNAME,
  425. DEFECT.S_NAME || '_' || DOL.OFFICENAME DEFECTNAME,
  426. -- D.DEFECTNAME,
  427. COUNT( DISTINCT D.BARCODE ) AS NUM,
  428. ROUND( 100 * RATIO_TO_REPORT ( COUNT( DISTINCT D.BARCODE ) ) OVER ( PARTITION BY 1 ), 1 ) || '%' AS PERCENTAGE
  429. FROM
  430. TP_PM_DEFECT D
  431. LEFT JOIN TP_MST_GOODS G ON D.GOODSID = G.GOODSID
  432. LEFT JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  433. INNER JOIN TP_PM_PRODUCTIONDATA PD ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  434. INNER JOIN TP_DSB_DEFECTOFFICELINKED DOL ON DOL.DEFECTCODE = D.DEFECTCODE
  435. INNER JOIN TP_MST_DEFECT DEFECT ON D.DEFECTID = DEFECT.DEFECTID
  436. WHERE
  437. D.VALUEFLAG = 1
  438. AND PD.VALUEFLAG = 1
  439. AND PD.GOODSLEVELTYPEID IN ( 6, 7 )
  440. AND PD.KILNCODE IN ( 'SK3', 'TK3' )
  441. AND D.CREATETIME >= trunc( SYSDATE ) + 7/24
  442. AND D.CREATETIME < trunc( SYSDATE ) + 7/24 + 1 -- AND (INSTR( PD.GROUTINGLINECODE, 'C' ) = 1 AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4 OR INSTR( PD.GROUTINGLINECODE, 'C06B' ) = 1)
  443. AND INSTR( PD.GROUTINGLINECODE, 'C' ) = 1
  444. AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4
  445. GROUP BY
  446. DOL.OFFICENAME,
  447. D.GOODSCODE,
  448. D.DEFECTCODE,
  449. DEFECT.S_NAME
  450. ORDER BY
  451. NUM DESC
  452. ";
  453. //直接获取不分页数据
  454. DataTable dt = conn.ExecuteDatatable(sqlStr);
  455. string jsonStr = new JsonResult(dt).ToJson();
  456. context.Response.Write(jsonStr);
  457. }
  458. else if (context.Request["m"].ToString() == "count")
  459. {
  460. string sqlStr = @"
  461. SELECT
  462. TO_CHAR( TRUNC( CREATETIME -7/24 ), 'YY-MM-DD' ) AS SJ,
  463. -- SUM( CASE WHEN ( PROCEDUREID = 104 AND ISREFIRE = 0 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM1,
  464. SUM( CASE WHEN PROCEDUREID = 104 AND ISREFIRE = 0 AND CHECKFLAG = 1 THEN 1 ELSE 0 END ) AS NUM1,
  465. SUM(
  466. CASE
  467. WHEN
  468. ( PROCEDUREID = 105 AND ISREFIRE = 0 OR PROCEDUREID = 12 )
  469. -- PROCEDUREID = 105 AND ISREFIRE = 0
  470. AND GOODSLEVELTYPEID IN ( 6, 7, 8 )
  471. AND VALUEFLAG = 1 THEN
  472. 1 ELSE 0
  473. END
  474. ) AS NUM2,
  475. SUM( CASE WHEN PROCEDUREID = 104 AND CHECKFLAG = 1 THEN 1 ELSE 0 END ) AS NUM3,
  476. -- SUM( CASE WHEN ( PROCEDUREID = 104 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 OR PROCEDUREID = 58 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM3,
  477. SUM( CASE WHEN ( PROCEDUREID = 105 OR PROCEDUREID = 12 OR PROCEDUREID = 59 ) AND GOODSLEVELTYPEID IN ( 6, 7, 8 ) AND VALUEFLAG = 1 THEN 1 ELSE 0 END ) AS NUM4
  478. -- SUM( CASE WHEN PROCEDUREID = 105 AND GOODSLEVELTYPEID IN ( 6, 7, 8 ) AND VALUEFLAG = 1 THEN 1 ELSE 0 END ) AS NUM4
  479. FROM
  480. TP_PM_PRODUCTIONDATA
  481. WHERE
  482. CREATETIME >= TRUNC( SYSDATE ) - 6 + 7/24
  483. AND CREATETIME < TRUNC( SYSDATE ) + 1 + 7/24
  484. -- AND KILNCODE IN('SK3', 'TK3')
  485. -- AND (INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4 OR INSTR( GROUTINGLINECODE, 'C06B' ) = 1)
  486. -- AND INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4
  487. GROUP BY
  488. TO_CHAR( TRUNC( CREATETIME -7/24 ), 'YY-MM-DD' )
  489. ORDER BY
  490. TO_CHAR( TRUNC( CREATETIME -7/24 ), 'YY-MM-DD' ) -- DESC
  491. ";
  492. //直接获取不分页数据
  493. DataTable dt = conn.ExecuteDatatable(sqlStr);
  494. string jsonStr = new JsonResult(dt).ToJson();
  495. context.Response.Write(jsonStr);
  496. }
  497. else if (context.Request["m"].ToString() == "high")
  498. {
  499. string sqlStr = @"
  500. SELECT
  501. GOODSCODE,
  502. NVL( NUM1, 0 ) AS N1,
  503. NVL( NUM1, 0 ) - NVL( NUM2, 0 ) AS N2,
  504. ROUND(
  505. ( NVL( NUM1, 0 ) - NVL( NUM2, 0 ) ) / DECODE( NVL( NUM1, 1 ), 0, 1, NVL( NUM1, 1 ) ) * 100,
  506. 1
  507. ) || '%' AS GP
  508. FROM
  509. (
  510. SELECT
  511. PD.GOODSCODE,
  512. SUM(
  513. CASE
  514. WHEN (
  515. PD.PROCEDUREID = 104
  516. AND PD.ISREFIRE = 0
  517. AND PD.CHECKFLAG = 1
  518. OR PD.PROCEDUREID = 11
  519. AND PD.VALUEFLAG = 1
  520. ) THEN
  521. 1 ELSE 0
  522. END
  523. ) AS NUM1,
  524. SUM(
  525. CASE
  526. WHEN ( PD.PROCEDUREID = 105 AND PD.ISREFIRE = 0 OR PD.PROCEDUREID = 12 )
  527. AND PD.GOODSLEVELTYPEID IN ( 6, 7, 8 )
  528. AND PD.VALUEFLAG = 1 THEN
  529. 1 ELSE 0
  530. END
  531. ) AS NUM2
  532. FROM
  533. TP_PM_PRODUCTIONDATA PD
  534. INNER JOIN TP_PC_GROUTINGLINE GL ON PD.GROUTINGLINEID = GL.GROUTINGLINEID
  535. WHERE
  536. PD.CREATETIME >= TRUNC( SYSDATE ) + 7/24
  537. AND PD.CREATETIME < TRUNC( SYSDATE ) + 1 + 7/24
  538. AND GL.HIGHPRESSUREFLAG = 1
  539. AND (
  540. INSTR( PD.GROUTINGLINECODE, 'C' ) = 1
  541. AND INSTR( PD.GROUTINGLINECODE, 'A' ) = 4
  542. OR INSTR( PD.GROUTINGLINECODE, 'C06B' ) = 1
  543. )
  544. GROUP BY
  545. GROUPING SETS
  546. (PD.GOODSCODE ,())
  547. )
  548. ORDER BY
  549. N1 DESC,
  550. N2 DESC
  551. ";
  552. //直接获取不分页数据
  553. DataTable dt = conn.ExecuteDatatable(sqlStr);
  554. string jsonStr = new JsonResult(dt).ToJson();
  555. context.Response.Write(jsonStr);
  556. }
  557. // else if (context.Request["m"].ToString() == "pass2")
  558. // {
  559. //string sqlStr = @"
  560. //SELECT
  561. // SJ,
  562. // round( ( num1 - num2 ) / decode( num1, 0, 1, num1 )*100, 1 ) AS 本烧,
  563. // round( ( num3 - num4 ) / decode( num1, 0, 1, num1 )*100, 1 ) AS 整体
  564. //FROM
  565. // (
  566. // SELECT
  567. // TO_CHAR( TRUNC( CREATETIME ), 'YY-MM-DD' ) AS SJ,
  568. // SUM( CASE WHEN ( PROCEDUREID = 104 AND ISREFIRE = 0 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM1,
  569. // SUM(
  570. // CASE
  571. // WHEN
  572. // ( PROCEDUREID = 105 AND ISREFIRE = 0 OR PROCEDUREID = 12 )
  573. // AND GOODSLEVELTYPEID IN ( 6, 7, 8 )
  574. // AND VALUEFLAG = 1 THEN
  575. // 1 ELSE 0
  576. // END
  577. // ) AS NUM2,
  578. // SUM( CASE WHEN ( PROCEDUREID = 104 AND CHECKFLAG = 1 OR PROCEDUREID = 11 AND VALUEFLAG = 1 ) THEN 1 ELSE 0 END ) AS NUM3,
  579. // SUM( CASE WHEN ( PROCEDUREID = 105 OR PROCEDUREID = 12 ) AND GOODSLEVELTYPEID IN ( 6, 7, 8 ) AND VALUEFLAG = 1 THEN 1 ELSE 0 END ) AS NUM4
  580. // FROM
  581. // TP_PM_PRODUCTIONDATA
  582. // WHERE
  583. // CREATETIME >= TRUNC( SYSDATE ) - 13
  584. // AND CREATETIME < TRUNC( SYSDATE ) - 6
  585. // -- AND KILNCODE IN('SK3', 'TK3')
  586. // -- AND (INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4 OR INSTR( GROUTINGLINECODE, 'C06B' ) = 1)
  587. // -- AND INSTR( GROUTINGLINECODE, 'C' ) = 1 AND INSTR( GROUTINGLINECODE, 'A' ) = 4
  588. // GROUP BY
  589. // TO_CHAR( TRUNC( CREATETIME ), 'YY-MM-DD' )
  590. // )
  591. // ORDER BY
  592. // SJ -- DESC
  593. // ";
  594. // //直接获取不分页数据
  595. // DataTable dt = conn.ExecuteDatatable(sqlStr);
  596. // string jsonStr = new JsonResult(dt).ToJson();
  597. // context.Response.Write(jsonStr);
  598. // }
  599. }
  600. }
  601. public decimal toNumber(object o)
  602. {
  603. if (o != DBNull.Value)
  604. return Convert.ToDecimal(o);
  605. else
  606. return 0;
  607. }
  608. public bool IsReusable
  609. {
  610. get
  611. {
  612. return false;
  613. }
  614. }
  615. }