rpt.ashx 96 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Configuration;
  6. using System.Data;
  7. using Curtain.DataAccess;
  8. using Curtain.Log;
  9. using DK.XuWei.WebMes;
  10. using Newtonsoft.Json.Linq;
  11. using System.Collections.Generic;
  12. using System.Linq;
  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. //成检大小件TOP3缺陷占比
  21. if (context.Request["m"].ToString() == "Load03")
  22. {
  23. string sqlStr = @"
  24. WITH 出窑数 AS (
  25. SELECT
  26. SUM(DECODE(T.OUTKILNCOUNT, 1, 1, 0)) ONEOUTKILNCOUNT,
  27. SUM(DECODE(T.OUTKILNCOUNT, 2, 1, 0)) TWOOUTKILNCOUNT,
  28. SUM(DECODE(T.OUTKILNCOUNT, 3, 1, 0)) THREEOUTKILNCOUNT
  29. FROM (
  30. SELECT
  31. CASE WHEN ((INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) AND INSTR(GT.GOODSTYPECODE, '001002') = 1) THEN 1
  32. WHEN ((INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) AND INSTR(GT.GOODSTYPECODE, '001001') = 1) THEN 2
  33. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3
  34. ELSE 0 END OUTKILNCOUNT
  35. FROM
  36. TP_PM_PRODUCTIONDATA PD
  37. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  38. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  39. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  40. WHERE
  41. (( PD.PROCEDUREID <> 104 AND PD.VALUEFLAG = '1' ) OR ( PD.PROCEDUREID = 104 AND PD.CHECKFLAG = '1' ))
  42. AND (11 IS NULL OR ((11 = 11 AND ( ( PD.PROCEDUREID = 11 ) OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' ) ) ) ) )
  43. AND ( 0 IS NULL OR GDD.RECYCLINGFLAG = 0 )
  44. AND PD.ACCOUNTID = 1
  45. AND PD.PROCEDUREID IN ( 11, 104 )
  46. AND PD.KILNID IN ( 1, 2, 5 )
  47. AND PD.CREATETIME >= TRUNC(sysdate-7)
  48. AND PD.CREATETIME<=TRUNC(SYSDATE)
  49. ) T
  50. ),
  51. 一车间前三缺陷数量 AS(
  52. SELECT
  53. *
  54. FROM(
  55. SELECT
  56. '一车间'AS workshops,
  57. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  58. 缺陷名称
  59. FROM
  60. (
  61. SELECT
  62. DISTINCT
  63. defect.BARCODE 缺陷条码,
  64. df.S_NAME 缺陷名称
  65. FROM TP_PM_DEFECT defect
  66. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=defect.barcode
  67. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  68. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  69. LEFT JOIN TP_MST_DEFECT df ON df.defectid =defect.defectID
  70. WHERE defect.CREATETIME>=TRUNC(sysdate-7)
  71. AND TRUNC(defect.CREATETIME)<=TRUNC(SYSDATE)
  72. AND defect.VALUEFLAG=1
  73. AND ((INSTR(gdd.GROUTINGLINECODE, 'A') = 1 OR INSTR(gdd.GROUTINGLINECODE, 'D') = 1) AND INSTR(GTP.GOODSTYPECODE, '001002') = 1)
  74. AND gdd.VALUEFLAG=1
  75. )
  76. GROUP BY 缺陷名称
  77. ORDER BY COUNT( 缺陷条码) DESC
  78. )
  79. WHERE ROWNUM<=3
  80. )
  81. ,
  82. 二车间前三缺陷数量 AS(
  83. SELECT
  84. *
  85. FROM(
  86. SELECT
  87. '二车间'AS workshops,
  88. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  89. 缺陷名称
  90. FROM
  91. (
  92. SELECT
  93. DISTINCT
  94. defect.BARCODE 缺陷条码,
  95. df.S_NAME 缺陷名称
  96. FROM TP_PM_DEFECT defect
  97. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=defect.barcode
  98. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  99. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  100. LEFT JOIN TP_MST_DEFECT df ON df.defectid =defect.defectID
  101. WHERE defect.CREATETIME>=TRUNC(sysdate-7)
  102. AND defect.CREATETIME <=TRUNC(SYSDATE)
  103. AND defect.VALUEFLAG=1
  104. AND ((INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) AND INSTR(GTP.GOODSTYPECODE, '001001') = 1)
  105. AND gdd.VALUEFLAG=1
  106. )
  107. GROUP BY 缺陷名称
  108. ORDER BY COUNT( 缺陷条码) DESC
  109. )
  110. WHERE ROWNUM<=3
  111. ),
  112. 三车间前三缺陷数量 AS(
  113. SELECT
  114. *
  115. FROM(
  116. SELECT
  117. '三车间' AS workshops,
  118. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  119. 缺陷名称
  120. FROM
  121. (
  122. SELECT
  123. DISTINCT
  124. defect.BARCODE 缺陷条码,
  125. df.S_NAME 缺陷名称
  126. FROM TP_PM_DEFECT defect
  127. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=defect.barcode
  128. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  129. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  130. LEFT JOIN TP_MST_DEFECT df ON df.defectid =defect.defectID
  131. WHERE defect.CREATETIME>=TRUNC(sysdate-7)
  132. AND defect.CREATETIME <=TRUNC(SYSDATE)
  133. AND defect.VALUEFLAG=1
  134. AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1
  135. AND gdd.VALUEFLAG=1
  136. )
  137. GROUP BY 缺陷名称
  138. ORDER BY COUNT( 缺陷条码) DESC
  139. )
  140. WHERE ROWNUM<=3
  141. )
  142. SELECT
  143. 一车间前三缺陷数量.workshops,
  144. DECODE( NVL( 一车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 一车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 出窑数.ONEOUTKILNCOUNT, 1 ), 0, 1, NVL( 出窑数.ONEOUTKILNCOUNT, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 一车间前三缺陷数量.缺陷名称
  145. FROM
  146. 一车间前三缺陷数量
  147. LEFT JOIN 出窑数 on 1=1
  148. UNION ALL
  149. SELECT
  150. 二车间前三缺陷数量.workshops,
  151. DECODE( NVL( 二车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 二车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 出窑数.TWOOUTKILNCOUNT, 1 ), 0, 1, NVL( 出窑数.TWOOUTKILNCOUNT, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 二车间前三缺陷数量.缺陷名称
  152. FROM
  153. 二车间前三缺陷数量
  154. LEFT JOIN 出窑数 on 1=1
  155. UNION ALL
  156. SELECT
  157. 三车间前三缺陷数量.workshops,
  158. DECODE( NVL( 三车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 三车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 出窑数.THREEOUTKILNCOUNT, 1 ), 0, 1, NVL( 出窑数.THREEOUTKILNCOUNT, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 三车间前三缺陷数量.缺陷名称
  159. FROM
  160. 三车间前三缺陷数量
  161. LEFT JOIN 出窑数 on 1=1";
  162. //直接获取不分页数据
  163. DataTable dt = conn.ExecuteDatatable(sqlStr);
  164. string jsonStr = new JsonResult(dt).ToJson();
  165. context.Response.Write(jsonStr);
  166. }
  167. if (context.Request["m"].ToString() == "Load02")
  168. {
  169. //直接获取不分页数据
  170. string sqlStr = @"WITH 一车间前三缺陷数量 AS (
  171. SELECT
  172. *
  173. FROM(
  174. SELECT
  175. workshops,
  176. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  177. 缺陷名称
  178. FROM
  179. (
  180. SELECT
  181. '一车间' workshops,
  182. CASE WHEN semicheck.GOODSLEVELTYPEID IN (2,13) or semicheck.SEMICHECKTYPE is not NULL THEN semicheck.BARCODE ELSE NULL END 缺陷条码,
  183. SEMIDEFCET.S_NAME 缺陷名称
  184. FROM TP_PM_SEMICHECK semicheck
  185. LEFT JOIN TP_PM_SEMICHECKDEFECT semicheckdefect on semicheckdefect.SEMICHECKID=semicheck.SEMICHECKID
  186. LEFT JOIN TP_MST_SEMICHECKDEFECT SEMIDEFCET ON SEMIDEFCET.DEFECTID=semicheckdefect.DEFECTID
  187. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=semicheck.barcode
  188. INNER JOIN TP_PM_PRODUCTIONDATA pd on pd.barcode=gdd.barcode AND pd.PROCEDUREID IN(1,17)
  189. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  190. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  191. WHERE semicheck.CREATETIME>=TRUNC(sysdate-7)
  192. AND semicheck.CREATETIME <=TRUNC(SYSDATE)
  193. AND semicheck.VALUEFLAG=1
  194. AND INSTR(GTP.GOODSTYPECODE, '001002') = 1
  195. AND gdd.VALUEFLAG=1
  196. AND pd.VALUEFLAG=1
  197. )
  198. GROUP BY workshops,缺陷名称
  199. ORDER BY COUNT( DISTINCT 缺陷条码) DESC
  200. )
  201. WHERE ROWNUM<=3
  202. ),
  203. 二车间前三缺陷数量 AS (
  204. SELECT
  205. *
  206. FROM(
  207. SELECT
  208. workshops,
  209. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  210. 缺陷名称
  211. FROM
  212. (
  213. SELECT
  214. '二车间' workshops,
  215. CASE WHEN semicheck.GOODSLEVELTYPEID IN (2,13) or semicheck.SEMICHECKTYPE is not NULL THEN semicheck.BARCODE ELSE NULL END 缺陷条码,
  216. SEMIDEFCET.S_NAME 缺陷名称
  217. FROM TP_PM_SEMICHECK semicheck
  218. LEFT JOIN TP_PM_SEMICHECKDEFECT semicheckdefect on semicheckdefect.SEMICHECKID=semicheck.SEMICHECKID
  219. LEFT JOIN TP_MST_SEMICHECKDEFECT SEMIDEFCET ON SEMIDEFCET.DEFECTID=semicheckdefect.DEFECTID
  220. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=semicheck.barcode
  221. INNER JOIN TP_PM_PRODUCTIONDATA pd on pd.barcode=gdd.barcode AND pd.PROCEDUREID IN(1,17)
  222. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  223. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  224. WHERE semicheck.CREATETIME>=TRUNC(sysdate-7)
  225. AND semicheck.CREATETIME <=TRUNC(SYSDATE)
  226. AND semicheck.VALUEFLAG=1
  227. AND INSTR(GTP.GOODSTYPECODE, '001001') = 1
  228. AND gdd.VALUEFLAG=1
  229. AND pd.VALUEFLAG=1
  230. )
  231. GROUP BY workshops,缺陷名称
  232. ORDER BY COUNT( DISTINCT 缺陷条码) DESC
  233. )
  234. WHERE ROWNUM<=3
  235. ),
  236. 三车间前三缺陷数量 AS (
  237. SELECT
  238. *
  239. FROM(
  240. SELECT
  241. workshops,
  242. COUNT( DISTINCT 缺陷条码) 缺陷数量,
  243. 缺陷名称
  244. FROM
  245. (
  246. SELECT
  247. '三车间' workshops,
  248. CASE WHEN semicheck.GOODSLEVELTYPEID IN (2,13) or semicheck.SEMICHECKTYPE is not NULL THEN semicheck.BARCODE ELSE NULL END 缺陷条码,
  249. SEMIDEFCET.S_NAME 缺陷名称
  250. FROM TP_PM_SEMICHECK semicheck
  251. LEFT JOIN TP_PM_SEMICHECKDEFECT semicheckdefect on semicheckdefect.SEMICHECKID=semicheck.SEMICHECKID
  252. LEFT JOIN TP_MST_SEMICHECKDEFECT SEMIDEFCET ON SEMIDEFCET.DEFECTID=semicheckdefect.DEFECTID
  253. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.barcode=semicheck.barcode
  254. INNER JOIN TP_PM_PRODUCTIONDATA pd on pd.barcode=gdd.barcode AND pd.PROCEDUREID IN(118,92 ,88)
  255. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=GDD.GOODSID
  256. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  257. WHERE semicheck.CREATETIME>=TRUNC(sysdate-7)
  258. AND semicheck.CREATETIME <=TRUNC(SYSDATE)
  259. AND semicheck.VALUEFLAG=1
  260. AND gdd.VALUEFLAG=1
  261. AND pd.VALUEFLAG=1
  262. )
  263. GROUP BY workshops,缺陷名称
  264. ORDER BY COUNT( DISTINCT 缺陷条码) DESC
  265. )
  266. WHERE ROWNUM<=3
  267. ),
  268. 一车间产量 AS (
  269. SELECT '一车间' AS 车间, COUNT(DISTINCT PD.BARCODE )AS 检验量 FROM TP_PM_PRODUCTIONDATA PD
  270. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=PD.GOODSID
  271. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  272. WHERE PD.VALUEFLAG=1 AND PD.PROCEDUREID IN(1,17)AND PD.CREATETIME>=TRUNC(sysdate-7) AND PD.CREATETIME <=TRUNC(SYSDATE)
  273. AND INSTR(GTP.GOODSTYPECODE, '001002') = 1
  274. ),
  275. 二车间产量 AS (
  276. SELECT '二车间' AS 车间, COUNT(DISTINCT PD.BARCODE )AS 检验量 FROM TP_PM_PRODUCTIONDATA PD
  277. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=PD.GOODSID
  278. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  279. WHERE PD.VALUEFLAG=1 AND PD.PROCEDUREID IN(1,17)AND PD.CREATETIME>=TRUNC(sysdate-7) AND PD.CREATETIME <=TRUNC(SYSDATE)
  280. AND INSTR(GTP.GOODSTYPECODE, '001001') = 1
  281. ),三车间产量 AS (
  282. SELECT '三车间' AS 车间, COUNT(DISTINCT PD.BARCODE )AS 检验量 FROM TP_PM_PRODUCTIONDATA PD
  283. LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID=PD.GOODSID
  284. LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID=GOODS.GOODSTYPEID
  285. WHERE PD.VALUEFLAG=1 AND PD.PROCEDUREID IN(118,92 ,88)AND PD.CREATETIME>=TRUNC(sysdate-7) AND PD.CREATETIME <=TRUNC(SYSDATE)
  286. )
  287. SELECT
  288. 一车间前三缺陷数量.workshops,
  289. DECODE( NVL( 一车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 一车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 一车间产量.检验量, 1 ), 0, 1, NVL( 一车间产量.检验量, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 一车间前三缺陷数量.缺陷名称
  290. FROM
  291. 一车间前三缺陷数量
  292. LEFT JOIN 一车间产量 on 1=1
  293. UNION ALL
  294. SELECT
  295. 二车间前三缺陷数量.workshops,
  296. DECODE( NVL( 二车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 二车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 二车间产量.检验量, 1 ), 0, 1, NVL( 二车间产量.检验量, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 二车间前三缺陷数量.缺陷名称
  297. FROM
  298. 二车间前三缺陷数量
  299. LEFT JOIN 二车间产量 on 1=1
  300. UNION ALL
  301. SELECT
  302. 三车间前三缺陷数量.workshops,
  303. DECODE( NVL( 三车间前三缺陷数量.缺陷数量, 0 ), 0, '0%', TO_CHAR( ( NVL( 三车间前三缺陷数量.缺陷数量, 0 ) / DECODE( NVL( 三车间产量.检验量, 1 ), 0, 1, NVL( 三车间产量.检验量, 1 ) ) ) * 100, 'fm99990.0' ) ) 缺陷占比, 三车间前三缺陷数量.缺陷名称
  304. FROM
  305. 三车间前三缺陷数量
  306. LEFT JOIN 三车间产量 on 1=1
  307. ";
  308. DataTable dt = conn.ExecuteDatatable(sqlStr);
  309. string jsonStr = new JsonResult(dt).ToJson();
  310. context.Response.Write(jsonStr);
  311. }
  312. if (context.Request["m"].ToString() == "Load05")
  313. {
  314. string sqlStr = @" SELECT '连体'AS 产品类别,
  315. H.缺陷名称,
  316. H.缺陷数,
  317. H.缺陷占比,
  318. H.上周比,
  319. CASE WHEN H.上周比 > H.缺陷占比 THEN '下降↓'
  320. ELSE '上升↑'
  321. END 对比趋势
  322. FROM(
  323. SELECT
  324. TT.DEFECTNAME 缺陷名称,
  325. TT2.COUNT 出窑数,
  326. TT.COUNT 缺陷数,
  327. TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'fm99990.0') || '%' AS 缺陷占比,
  328. TT4.COUNT 上个月缺陷数量,
  329. TT6.COUNT 上个月出窑数,
  330. TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'fm99990.0') || '%' AS 上周比
  331. FROM(
  332. SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
  333. SELECT
  334. TMD.S_NAME DEFECTNAME,
  335. TMD.DEFECTID,
  336. COUNT( 1 ) count
  337. FROM
  338. TP_PM_PRODUCTIONDATA TPPD
  339. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  340. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  341. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  342. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  343. WHERE
  344. TPPD.PROCEDUREID IN (125,131)
  345. AND TPPD.GOODSLEVELTYPEID = 7
  346. AND TPD.VALUEFLAG = 1
  347. AND TPPD.VALUEFLAG = 1
  348. AND GDTYPE.GOODSTYPECODE='001001001'
  349. AND TMD.VALUEFLAG = 1
  350. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  351. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  352. GROUP BY
  353. TMD.S_NAME,TMD.DEFECTID
  354. ORDER BY
  355. count DESC)T
  356. WHERE ROWNUM<=3
  357. )TT
  358. FULL JOIN(
  359. SELECT
  360. ROWNUM id,
  361. T2.count
  362. FROM(
  363. SELECT
  364. COUNT(1) count
  365. FROM
  366. TP_PM_PRODUCTIONDATA TPPD
  367. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  368. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  369. WHERE
  370. TPPD.PROCEDUREID IN (104,11)
  371. AND TPPD.ISREFIRE = 0
  372. AND GDTYPE.GOODSTYPECODE='001001001'
  373. AND TPPD.VALUEFLAG = 1
  374. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  375. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  376. UNION ALL
  377. SELECT
  378. COUNT(1) count
  379. FROM
  380. TP_PM_PRODUCTIONDATA TPPD
  381. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  382. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  383. WHERE
  384. TPPD.PROCEDUREID IN (104,11)
  385. AND TPPD.ISREFIRE = 0
  386. AND GDTYPE.GOODSTYPECODE='001001001'
  387. AND TPPD.VALUEFLAG = 1
  388. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  389. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  390. UNION ALL
  391. SELECT
  392. COUNT(1)
  393. FROM
  394. TP_PM_PRODUCTIONDATA TPPD
  395. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  396. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  397. WHERE
  398. TPPD.PROCEDUREID IN (104,11)
  399. AND TPPD.ISREFIRE = 0
  400. AND GDTYPE.GOODSTYPECODE='001001001'
  401. AND TPPD.VALUEFLAG = 1
  402. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  403. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  404. )T2)TT2 ON TT.id = TT2.id
  405. FULL JOIN(
  406. SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
  407. SELECT
  408. TMD.S_NAME DEFECTNAME,
  409. COUNT( 1 ) count
  410. FROM
  411. TP_PM_PRODUCTIONDATA TPPD
  412. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  413. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  414. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  415. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  416. WHERE
  417. TPPD.PROCEDUREID IN (125,131)
  418. AND TPPD.GOODSLEVELTYPEID = 7
  419. AND GDTYPE.GOODSTYPECODE='001001001'
  420. AND TPD.VALUEFLAG = 1
  421. AND TPPD.VALUEFLAG = 1
  422. AND TMD.VALUEFLAG = 1
  423. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  424. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  425. GROUP BY
  426. TMD.S_NAME
  427. ORDER BY
  428. count DESC)T4 WHERE ROWNUM <= 3 )TT4 ON TT.id = TT4.id
  429. FULL JOIN(
  430. SELECT
  431. ROWNUM id,
  432. T6.count
  433. FROM(
  434. SELECT
  435. COUNT(1) count
  436. FROM
  437. TP_PM_PRODUCTIONDATA TPPD
  438. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  439. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  440. WHERE
  441. TPPD.PROCEDUREID IN (104,11)
  442. AND TPPD.ISREFIRE = 0
  443. AND GDTYPE.GOODSTYPECODE='001001001'
  444. AND TPPD.VALUEFLAG = 1
  445. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  446. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  447. UNION ALL
  448. SELECT
  449. COUNT(1) count
  450. FROM
  451. TP_PM_PRODUCTIONDATA TPPD
  452. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  453. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  454. WHERE
  455. TPPD.PROCEDUREID IN (104,11)
  456. AND TPPD.ISREFIRE = 0
  457. AND GDTYPE.GOODSTYPECODE='001001001'
  458. AND TPPD.VALUEFLAG = 1
  459. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  460. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  461. UNION ALL
  462. SELECT
  463. COUNT(1)
  464. FROM
  465. TP_PM_PRODUCTIONDATA TPPD
  466. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  467. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  468. WHERE
  469. TPPD.PROCEDUREID IN (104,11)
  470. AND TPPD.ISREFIRE = 0
  471. AND GDTYPE.GOODSTYPECODE='001001001'
  472. AND TPPD.VALUEFLAG = 1
  473. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  474. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  475. )T6)TT6 ON TT.id = TT6.id
  476. )H
  477. WHERE H.缺陷数 IS NOT NULL
  478. UNION ALL
  479. SELECT
  480. '智能',
  481. H.缺陷名称,
  482. H.缺陷数,
  483. H.缺陷占比,
  484. H.上周比,
  485. CASE WHEN H.上周比 > H.缺陷占比 THEN '下降↓'
  486. ELSE '上升↑'
  487. END 对比趋势
  488. FROM(
  489. SELECT
  490. TT.DEFECTNAME 缺陷名称,
  491. TT2.COUNT 出窑数,
  492. TT.COUNT 缺陷数,
  493. TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'fm99990.0') || '%' AS 缺陷占比,
  494. TT4.COUNT 上个月缺陷数量,
  495. TT6.COUNT 上个月出窑数,
  496. TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'fm99990.0') || '%' AS 上周比
  497. FROM(
  498. SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
  499. SELECT
  500. TMD.S_NAME DEFECTNAME,
  501. TMD.DEFECTID,
  502. COUNT( 1 ) count
  503. FROM
  504. TP_PM_PRODUCTIONDATA TPPD
  505. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  506. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  507. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  508. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  509. WHERE
  510. TPPD.PROCEDUREID IN (125,131)
  511. AND TPPD.GOODSLEVELTYPEID = 7
  512. AND TPD.VALUEFLAG = 1
  513. AND TPPD.VALUEFLAG = 1
  514. AND GDTYPE.GOODSTYPECODE='001001003'
  515. AND TMD.VALUEFLAG = 1
  516. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  517. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  518. GROUP BY
  519. TMD.S_NAME,TMD.DEFECTID
  520. ORDER BY
  521. count DESC)T
  522. WHERE ROWNUM<=3
  523. )TT
  524. FULL JOIN(
  525. SELECT
  526. ROWNUM id,
  527. T2.count
  528. FROM(
  529. SELECT
  530. COUNT(1) count
  531. FROM
  532. TP_PM_PRODUCTIONDATA TPPD
  533. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  534. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  535. WHERE
  536. TPPD.PROCEDUREID IN (104,11)
  537. AND TPPD.ISREFIRE = 0
  538. AND GDTYPE.GOODSTYPECODE='001001003'
  539. AND TPPD.VALUEFLAG = 1
  540. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  541. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  542. UNION ALL
  543. SELECT
  544. COUNT(1) count
  545. FROM
  546. TP_PM_PRODUCTIONDATA TPPD
  547. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  548. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  549. WHERE
  550. TPPD.PROCEDUREID IN (104,11)
  551. AND TPPD.ISREFIRE = 0
  552. AND GDTYPE.GOODSTYPECODE='001001003'
  553. AND TPPD.VALUEFLAG = 1
  554. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  555. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  556. UNION ALL
  557. SELECT
  558. COUNT(1)
  559. FROM
  560. TP_PM_PRODUCTIONDATA TPPD
  561. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  562. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  563. WHERE
  564. TPPD.PROCEDUREID IN (104,11)
  565. AND TPPD.ISREFIRE = 0
  566. AND GDTYPE.GOODSTYPECODE='001001003'
  567. AND TPPD.VALUEFLAG = 1
  568. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  569. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  570. )T2)TT2 ON TT.id = TT2.id
  571. FULL JOIN(
  572. SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
  573. SELECT
  574. TMD.S_NAME DEFECTNAME,
  575. COUNT( 1 ) count
  576. FROM
  577. TP_PM_PRODUCTIONDATA TPPD
  578. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  579. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  580. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  581. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  582. WHERE
  583. TPPD.PROCEDUREID IN (125,131)
  584. AND TPPD.GOODSLEVELTYPEID = 7
  585. AND GDTYPE.GOODSTYPECODE='001001003'
  586. AND TPD.VALUEFLAG = 1
  587. AND TPPD.VALUEFLAG = 1
  588. AND TMD.VALUEFLAG = 1
  589. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  590. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  591. GROUP BY
  592. TMD.S_NAME
  593. ORDER BY
  594. count DESC)T4 WHERE ROWNUM <= 3 )TT4 ON TT.id = TT4.id
  595. FULL JOIN(
  596. SELECT
  597. ROWNUM id,
  598. T6.count
  599. FROM(
  600. SELECT
  601. COUNT(1) count
  602. FROM
  603. TP_PM_PRODUCTIONDATA TPPD
  604. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  605. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  606. WHERE
  607. TPPD.PROCEDUREID IN (104,11)
  608. AND TPPD.ISREFIRE = 0
  609. AND GDTYPE.GOODSTYPECODE='001001003'
  610. AND TPPD.VALUEFLAG = 1
  611. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  612. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  613. UNION ALL
  614. SELECT
  615. COUNT(1) count
  616. FROM
  617. TP_PM_PRODUCTIONDATA TPPD
  618. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  619. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  620. WHERE
  621. TPPD.PROCEDUREID IN (104,11)
  622. AND TPPD.ISREFIRE = 0
  623. AND GDTYPE.GOODSTYPECODE='001001003'
  624. AND TPPD.VALUEFLAG = 1
  625. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  626. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  627. UNION ALL
  628. SELECT
  629. COUNT(1)
  630. FROM
  631. TP_PM_PRODUCTIONDATA TPPD
  632. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  633. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  634. WHERE
  635. TPPD.PROCEDUREID IN (104,11)
  636. AND TPPD.ISREFIRE = 0
  637. AND GDTYPE.GOODSTYPECODE='001001003'
  638. AND TPPD.VALUEFLAG = 1
  639. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  640. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  641. )T6)TT6 ON TT.id = TT6.id
  642. )H
  643. WHERE H.缺陷数 IS NOT NULL
  644. UNION ALL
  645. SELECT
  646. '小件',
  647. H.缺陷名称,
  648. H.缺陷数,
  649. H.缺陷占比,
  650. H.上周比,
  651. CASE WHEN H.上周比 > H.缺陷占比 THEN '下降↓'
  652. ELSE '上升↑'
  653. END 对比趋势
  654. FROM(
  655. SELECT
  656. TT.DEFECTNAME 缺陷名称,
  657. TT2.COUNT 出窑数,
  658. TT.COUNT 缺陷数,
  659. TO_CHAR((NVL(TT.COUNT,0)/TT2.COUNT)* 100,'fm99990.0') || '%' AS 缺陷占比,
  660. TT4.COUNT 上个月缺陷数量,
  661. TT6.COUNT 上个月出窑数,
  662. TO_CHAR((NVL(TT4.COUNT, 0)/TT6.COUNT)* 100,'fm99990.0') || '%' AS 上周比
  663. FROM(
  664. SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
  665. SELECT
  666. TMD.S_NAME DEFECTNAME,
  667. TMD.DEFECTID,
  668. COUNT( 1 ) count
  669. FROM
  670. TP_PM_PRODUCTIONDATA TPPD
  671. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  672. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  673. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  674. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  675. WHERE
  676. TPPD.PROCEDUREID IN (125,131)
  677. AND TPPD.GOODSLEVELTYPEID = 7
  678. AND TPD.VALUEFLAG = 1
  679. AND TPPD.VALUEFLAG = 1
  680. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  681. AND TMD.VALUEFLAG = 1
  682. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  683. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  684. GROUP BY
  685. TMD.S_NAME,TMD.DEFECTID
  686. ORDER BY
  687. count DESC)T
  688. WHERE ROWNUM<=3
  689. )TT
  690. FULL JOIN(
  691. SELECT
  692. ROWNUM id,
  693. T2.count
  694. FROM(
  695. SELECT
  696. COUNT(1) count
  697. FROM
  698. TP_PM_PRODUCTIONDATA TPPD
  699. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  700. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  701. WHERE
  702. TPPD.PROCEDUREID IN (104,11)
  703. AND TPPD.ISREFIRE = 0
  704. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  705. AND TPPD.VALUEFLAG = 1
  706. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  707. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  708. UNION ALL
  709. SELECT
  710. COUNT(1) count
  711. FROM
  712. TP_PM_PRODUCTIONDATA TPPD
  713. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  714. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  715. WHERE
  716. TPPD.PROCEDUREID IN (104,11)
  717. AND TPPD.ISREFIRE = 0
  718. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  719. AND TPPD.VALUEFLAG = 1
  720. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  721. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  722. UNION ALL
  723. SELECT
  724. COUNT(1)
  725. FROM
  726. TP_PM_PRODUCTIONDATA TPPD
  727. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  728. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  729. WHERE
  730. TPPD.PROCEDUREID IN (104,11)
  731. AND TPPD.ISREFIRE = 0
  732. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  733. AND TPPD.VALUEFLAG = 1
  734. AND TPPD.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  735. AND TPPD.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  736. )T2)TT2 ON TT.id = TT2.id
  737. FULL JOIN(
  738. SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
  739. SELECT
  740. TMD.S_NAME DEFECTNAME,
  741. COUNT( 1 ) count
  742. FROM
  743. TP_PM_PRODUCTIONDATA TPPD
  744. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  745. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  746. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  747. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  748. WHERE
  749. TPPD.PROCEDUREID IN (125,131)
  750. AND TPPD.GOODSLEVELTYPEID = 7
  751. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  752. AND TPD.VALUEFLAG = 1
  753. AND TPPD.VALUEFLAG = 1
  754. AND TMD.VALUEFLAG = 1
  755. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  756. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  757. GROUP BY
  758. TMD.S_NAME
  759. ORDER BY
  760. count DESC)T4 WHERE ROWNUM <= 3 )TT4 ON TT.id = TT4.id
  761. FULL JOIN(
  762. SELECT
  763. ROWNUM id,
  764. T6.count
  765. FROM(
  766. SELECT
  767. COUNT(1) count
  768. FROM
  769. TP_PM_PRODUCTIONDATA TPPD
  770. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  771. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  772. WHERE
  773. TPPD.PROCEDUREID IN (104,11)
  774. AND TPPD.ISREFIRE = 0
  775. AND SUBSTR(GDTYPE.GOODSTYPECODE,0,6)='001002'
  776. AND TPPD.VALUEFLAG = 1
  777. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  778. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  779. UNION ALL
  780. SELECT
  781. COUNT(1) count
  782. FROM
  783. TP_PM_PRODUCTIONDATA TPPD
  784. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  785. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  786. WHERE
  787. TPPD.PROCEDUREID IN (104,11)
  788. AND TPPD.ISREFIRE = 0
  789. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  790. AND TPPD.VALUEFLAG = 1
  791. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  792. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  793. UNION ALL
  794. SELECT
  795. COUNT(1)
  796. FROM
  797. TP_PM_PRODUCTIONDATA TPPD
  798. LEFT JOIN TP_MST_GOODS GD ON GD.GOODSID=TPPD.GOODSID
  799. LEFT JOIN TP_MST_GOODSTYPE GDTYPE ON GD.GOODSTYPEID=GDTYPE.GOODSTYPEID
  800. WHERE
  801. TPPD.PROCEDUREID IN (104,11)
  802. AND TPPD.ISREFIRE = 0
  803. AND SUBSTR( GDTYPE.GOODSTYPECODE,0,6)='001002'
  804. AND TPPD.VALUEFLAG = 1
  805. AND TPPD.CREATETIME >= TRUNC(NEXT_DAY(SYSDATE-8,1)-6)
  806. AND TPPD.CREATETIME < TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  807. )T6)TT6 ON TT.id = TT6.id
  808. )H
  809. WHERE H.缺陷数 IS NOT NULL ";
  810. DataTable dt = conn.ExecuteDatatable(sqlStr);
  811. string jsonStr = new JsonResult(dt).ToJson();
  812. context.Response.Write(jsonStr);
  813. }
  814. if (context.Request["m"].ToString() == "Load01")
  815. {
  816. // string sqlStr = "WITH 本烧出窑总数 AS (\n" +
  817. //" SELECT\n" +
  818. //" SUM(\n" +
  819. //" CASE WHEN (\n" +
  820. //" ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  821. //" AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 \n" +
  822. //" ) THEN\n" +
  823. //" 1 ELSE 0 \n" +
  824. //" END \n" +
  825. //" ) ONESUBSTANDARDCOUNT,\n" +
  826. //" SUM(\n" +
  827. //" CASE WHEN (\n" +
  828. //" ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  829. //" AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 \n" +
  830. //" ) THEN\n" +
  831. //" 1 ELSE 0 \n" +
  832. //" END \n" +
  833. //" ) TWOSUBSTANDARDCOUNT,\n" +
  834. //" SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT \n" +
  835. //"FROM\n" +
  836. //" TP_PM_PRODUCTIONDATA PD\n" +
  837. //" LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = PD.BARCODE\n" +
  838. //" INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID\n" +
  839. //" INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID \n" +
  840. //"WHERE\n" +
  841. //" PD.ACCOUNTID = 1 \n" +
  842. //" AND (\n" +
  843. //" (\n" +
  844. //" 11 = 11 \n" +
  845. //" AND (\n" +
  846. //" ( PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1' AND PD.ISREFIRE = '0' ) \n" +
  847. //" OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) \n" +
  848. //" ) \n" +
  849. //" ) \n" +
  850. //" OR (\n" +
  851. //" 11 = 58 \n" +
  852. //" AND (\n" +
  853. //" ( PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1' ) \n" +
  854. //" OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1' ) \n" +
  855. //" ) \n" +
  856. //" ) \n" +
  857. //" OR ( 11 NOT IN ( 11, 58 ) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 11 ) \n" +
  858. //" ) \n" +
  859. //" AND PD.CREATETIME >= TRUNC( SYSDATE - 7 ) \n" +
  860. //" AND TRUNC( PD.CREATETIME ) < TRUNC( SYSDATE ) \n" +
  861. //" ),\n" +
  862. //" 重烧出窑总数 AS (\n" +
  863. //" SELECT\n" +
  864. //" SUM(\n" +
  865. //" CASE WHEN (\n" +
  866. //" ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  867. //" AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 \n" +
  868. //" ) THEN\n" +
  869. //" 1 ELSE 0 \n" +
  870. //" END \n" +
  871. //" ) ONESUBSTANDARDCOUNT,\n" +
  872. //" SUM(\n" +
  873. //" CASE WHEN (\n" +
  874. //" ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  875. //" AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 \n" +
  876. //" ) THEN\n" +
  877. //" 1 ELSE 0 \n" +
  878. //" END \n" +
  879. //" ) TWOSUBSTANDARDCOUNT,\n" +
  880. //"--本烧三车间次品数\n" +
  881. //" SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT \n" +
  882. //"FROM\n" +
  883. //" TP_PM_PRODUCTIONDATA PD\n" +
  884. //" LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = PD.BARCODE\n" +
  885. //" INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID\n" +
  886. //" INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID \n" +
  887. //"WHERE\n" +
  888. //" PD.ACCOUNTID = 1 \n" +
  889. //" AND (\n" +
  890. //" (\n" +
  891. //" 58 = 11 \n" +
  892. //" AND (\n" +
  893. //" ( PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1' AND PD.ISREFIRE = '0' ) \n" +
  894. //" OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) \n" +
  895. //" ) \n" +
  896. //" ) \n" +
  897. //" OR (\n" +
  898. //" 58 = 58 \n" +
  899. //" AND (\n" +
  900. //" ( PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1' ) \n" +
  901. //" OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1' ) \n" +
  902. //" ) \n" +
  903. //" ) \n" +
  904. //" OR ( 58 NOT IN ( 11, 58 ) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 58 ) \n" +
  905. //" ) \n" +
  906. //" AND PD.CREATETIME >= TRUNC( SYSDATE - 7 ) \n" +
  907. //" AND TRUNC( PD.CREATETIME ) < TRUNC( SYSDATE ) \n" +
  908. //" ),\n" +
  909. //" 本烧次品重烧数 AS (\n" +
  910. //" SELECT\n" +
  911. //" SUM(\n" +
  912. //" CASE WHEN (\n" +
  913. //" GOODSLEVELTYPEID = 7 \n" +
  914. //" AND (\n" +
  915. //" ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  916. //" AND INSTR( GOODSTYPECODE, '001002' ) = 1 \n" +
  917. //" ) \n" +
  918. //" ) THEN\n" +
  919. //" 1 ELSE 0 \n" +
  920. //" END \n" +
  921. //" ) ONESUBSTANDARDCOUNT,\n" +
  922. //" SUM(\n" +
  923. //" CASE WHEN (\n" +
  924. //" GOODSLEVELTYPEID = 7 \n" +
  925. //" AND (\n" +
  926. //" ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  927. //" AND INSTR( GOODSTYPECODE, '001001' ) = 1 \n" +
  928. //" ) \n" +
  929. //" ) THEN\n" +
  930. //" 1 ELSE 0 \n" +
  931. //" END \n" +
  932. //" ) TWOSUBSTANDARDCOUNT,\n" +
  933. //" SUM( CASE WHEN ( GOODSLEVELTYPEID = 7 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT,\n" +
  934. //" SUM(\n" +
  935. //" CASE WHEN (\n" +
  936. //" GOODSLEVELTYPEID = 6 \n" +
  937. //" AND (\n" +
  938. //" ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  939. //" AND INSTR( GOODSTYPECODE, '001002' ) = 1 \n" +
  940. //" ) \n" +
  941. //" ) THEN\n" +
  942. //" 1 ELSE 0 \n" +
  943. //" END \n" +
  944. //" ) ONEREFIRECOUNT,\n" +
  945. //" SUM(\n" +
  946. //" CASE WHEN (\n" +
  947. //" GOODSLEVELTYPEID = 6 \n" +
  948. //" AND (\n" +
  949. //" ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  950. //" AND INSTR( GOODSTYPECODE, '001001' ) = 1 \n" +
  951. //" ) \n" +
  952. //" ) THEN\n" +
  953. //" 1 ELSE 0 \n" +
  954. //" END \n" +
  955. //" ) TWOREFIRECOUNT,\n" +
  956. //"--本烧三车间重烧数\n" +
  957. //" SUM( CASE WHEN ( GOODSLEVELTYPEID = 6 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREEREFIRECOUNT \n" +
  958. //"FROM\n" +
  959. //" (\n" +
  960. //" SELECT DISTINCT\n" +
  961. //" PD.BARCODE,\n" +
  962. //" GT.GOODSTYPECODE,\n" +
  963. //" GDD.GROUTINGLINECODE,\n" +
  964. //" PD.GOODSLEVELTYPEID \n" +
  965. //" FROM\n" +
  966. //" TP_PM_PRODUCTIONDATA PD\n" +
  967. //" LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE\n" +
  968. //" INNER JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  969. //" INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID\n" +
  970. //" INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID \n" +
  971. //" WHERE\n" +
  972. //" PD.VALUEFLAG = '1' \n" +
  973. //" AND PD.ACCOUNTID = 1 \n" +
  974. //" AND LENGTH( PD.KILNCARBATCHNO ) > 0 \n" +
  975. //" AND PD.CREATETIME >= TRUNC( SYSDATE - 7 ) \n" +
  976. //" AND TRUNC( PD.CREATETIME ) < TRUNC( SYSDATE ) \n" +
  977. //" AND PD.MODELTYPE IN ( - 1, - 4, - 5 ) \n" +
  978. //" AND PD.CHECKBATCHNO = 1 \n" +
  979. //" AND ( ( 11 <> 58 AND PD.ISREFIRE = '0' ) OR ( 11 = 58 AND PD.ISREFIRE = '6' ) ) \n" +
  980. //" AND GDD.RECYCLINGFLAG = '0' \n" +
  981. //" ) T \n" +
  982. //" ),\n" +
  983. //" 重烧次品重烧数 AS (\n" +
  984. //" SELECT\n" +
  985. //" SUM(\n" +
  986. //" CASE WHEN (\n" +
  987. //" GOODSLEVELTYPEID = 7 \n" +
  988. //" AND (\n" +
  989. //" ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  990. //" AND INSTR( GOODSTYPECODE, '001002' ) = 1 \n" +
  991. //" ) \n" +
  992. //" ) THEN\n" +
  993. //" 1 ELSE 0 \n" +
  994. //" END \n" +
  995. //" ) ONESUBSTANDARDCOUNT,\n" +
  996. //" SUM(\n" +
  997. //" CASE WHEN (\n" +
  998. //" GOODSLEVELTYPEID = 7 \n" +
  999. //" AND (\n" +
  1000. //" ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  1001. //" AND INSTR( GOODSTYPECODE, '001001' ) = 1 \n" +
  1002. //" ) \n" +
  1003. //" ) THEN\n" +
  1004. //" 1 ELSE 0 \n" +
  1005. //" END \n" +
  1006. //" ) TWOSUBSTANDARDCOUNT,\n" +
  1007. //" SUM( CASE WHEN ( GOODSLEVELTYPEID = 7 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT,\n" +
  1008. //" SUM(\n" +
  1009. //" CASE WHEN (\n" +
  1010. //" GOODSLEVELTYPEID = 6 \n" +
  1011. //" AND (\n" +
  1012. //" ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  1013. //" AND INSTR( GOODSTYPECODE, '001002' ) = 1 \n" +
  1014. //" ) \n" +
  1015. //" ) THEN\n" +
  1016. //" 1 ELSE 0 \n" +
  1017. //" END \n" +
  1018. //" ) ONEREFIRECOUNT,\n" +
  1019. //" SUM(\n" +
  1020. //" CASE WHEN (\n" +
  1021. //" GOODSLEVELTYPEID = 6 \n" +
  1022. //" AND (\n" +
  1023. //" ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 ) \n" +
  1024. //" AND INSTR( GOODSTYPECODE, '001001' ) = 1 \n" +
  1025. //" ) \n" +
  1026. //" ) THEN\n" +
  1027. //" 1 ELSE 0 \n" +
  1028. //" END \n" +
  1029. //" ) TWOREFIRECOUNT,\n" +
  1030. //" SUM( CASE WHEN ( GOODSLEVELTYPEID = 6 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREEREFIRECOUNT \n" +
  1031. //"FROM\n" +
  1032. //" (\n" +
  1033. //" SELECT DISTINCT\n" +
  1034. //" PD.BARCODE,\n" +
  1035. //" GT.GOODSTYPECODE,\n" +
  1036. //" GDD.GROUTINGLINECODE,\n" +
  1037. //" PD.GOODSLEVELTYPEID \n" +
  1038. //" FROM\n" +
  1039. //" TP_PM_PRODUCTIONDATA PD\n" +
  1040. //" LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE\n" +
  1041. //" INNER JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  1042. //" INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID\n" +
  1043. //" INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID \n" +
  1044. //" WHERE\n" +
  1045. //" PD.VALUEFLAG = '1' \n" +
  1046. //" AND PD.ACCOUNTID = 1 \n" +
  1047. //" AND LENGTH( PD.KILNCARBATCHNO ) > 0 \n" +
  1048. //" AND PD.CREATETIME >= TRUNC( SYSDATE - 7 ) \n" +
  1049. //" AND TRUNC( PD.CREATETIME ) < TRUNC( SYSDATE ) \n" +
  1050. //" AND PD.MODELTYPE IN ( - 1, - 4, - 5 ) \n" +
  1051. //" AND PD.CHECKBATCHNO = 1 \n" +
  1052. //" AND ( ( 58 <> 58 AND PD.ISREFIRE = '0' ) OR ( 58 = 58 AND PD.ISREFIRE = '6' ) ) \n" +
  1053. //" AND GDD.RECYCLINGFLAG = '0' \n" +
  1054. //" ) T \n" +
  1055. //" ) SELECT\n" +
  1056. //" 本烧出窑总数.ONESUBSTANDARDCOUNT AS 一车间,\n" +
  1057. //" 本烧出窑总数.TWOSUBSTANDARDCOUNT AS 二车间,\n" +
  1058. //" 本烧出窑总数.THREESUBSTANDARDCOUNT AS 三车间 \n" +
  1059. //"FROM\n" +
  1060. //" 本烧出窑总数 UNION ALL\n" +
  1061. //"SELECT\n" +
  1062. //" ROUND( ( ( 本烧出窑总数.ONESUBSTANDARDCOUNT - 本烧次品重烧数.ONESUBSTANDARDCOUNT - 本烧次品重烧数.ONEREFIRECOUNT ) / 本烧出窑总数.ONESUBSTANDARDCOUNT ) * 100, 1 ) AS 一车间,\n" +
  1063. //" ROUND( ( ( 本烧出窑总数.TWOSUBSTANDARDCOUNT - 本烧次品重烧数.TWOSUBSTANDARDCOUNT - 本烧次品重烧数.TWOREFIRECOUNT ) / 本烧出窑总数.TWOSUBSTANDARDCOUNT ) * 100, 1 ) AS 二车间,\n" +
  1064. //" ROUND( ( ( 本烧出窑总数.THREESUBSTANDARDCOUNT - 本烧次品重烧数.THREESUBSTANDARDCOUNT - 本烧次品重烧数.THREEREFIRECOUNT ) / 本烧出窑总数.THREESUBSTANDARDCOUNT ) * 100, 1 ) AS 三车间 \n" +
  1065. //"FROM\n" +
  1066. //" 本烧出窑总数\n" +
  1067. //" LEFT JOIN 本烧次品重烧数 ON 1 = 1 UNION ALL\n" +
  1068. //"SELECT\n" +
  1069. //" ROUND(\n" +
  1070. //" (\n" +
  1071. //" ( ( 本烧出窑总数.ONESUBSTANDARDCOUNT -本烧次品重烧数.ONESUBSTANDARDCOUNT -本烧次品重烧数.ONEREFIRECOUNT ) + ( 重烧出窑总数.ONESUBSTANDARDCOUNT -重烧次品重烧数.ONESUBSTANDARDCOUNT -重烧次品重烧数.ONEREFIRECOUNT ) ) /本烧出窑总数.ONESUBSTANDARDCOUNT \n" +
  1072. //" ) * 100,\n" +
  1073. //" 1 \n" +
  1074. //" ) AS 一车间,\n" +
  1075. //" ROUND(\n" +
  1076. //" (\n" +
  1077. //" ( ( 本烧出窑总数.TWOSUBSTANDARDCOUNT -本烧次品重烧数.TWOSUBSTANDARDCOUNT -本烧次品重烧数.TWOREFIRECOUNT ) + ( 重烧出窑总数.TWOSUBSTANDARDCOUNT -重烧次品重烧数.TWOSUBSTANDARDCOUNT -重烧次品重烧数.TWOREFIRECOUNT ) ) /本烧出窑总数.TWOSUBSTANDARDCOUNT \n" +
  1078. //" ) * 100,\n" +
  1079. //" 1 \n" +
  1080. //" ) AS 二车间,\n" +
  1081. //" ROUND(\n" +
  1082. //" (\n" +
  1083. //" ( ( 本烧出窑总数.THREESUBSTANDARDCOUNT -本烧次品重烧数.THREESUBSTANDARDCOUNT -本烧次品重烧数.THREEREFIRECOUNT ) + ( 重烧出窑总数.THREESUBSTANDARDCOUNT -重烧次品重烧数.THREESUBSTANDARDCOUNT -重烧次品重烧数.THREEREFIRECOUNT ) ) /本烧出窑总数.THREESUBSTANDARDCOUNT \n" +
  1084. //" ) * 100,\n" +
  1085. //" 1 \n" +
  1086. //" ) AS 三车间 \n" +
  1087. //"FROM\n" +
  1088. //" 本烧出窑总数\n" +
  1089. //" LEFT JOIN 本烧次品重烧数 ON 1 = 1\n" +
  1090. //" LEFT JOIN 重烧出窑总数 ON 1 = 1\n" +
  1091. //" LEFT JOIN 重烧次品重烧数 ON 1 = 1";
  1092. //DataTable dt = conn.ExecuteDatatable(sqlStr);
  1093. //string jsonStr = new JsonResult(dt).ToJson();
  1094. //context.Response.Write(jsonStr);
  1095. string 本烧出窑总数sql = @" SELECT
  1096. SUM(
  1097. CASE WHEN (
  1098. ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 )
  1099. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1
  1100. ) THEN
  1101. 1 ELSE 0
  1102. END
  1103. ) ONESUBSTANDARDCOUNT,
  1104. SUM(
  1105. CASE WHEN (
  1106. ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 )
  1107. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  1108. ) THEN
  1109. 1 ELSE 0
  1110. END
  1111. ) TWOSUBSTANDARDCOUNT,
  1112. SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT
  1113. FROM
  1114. TP_PM_PRODUCTIONDATA PD
  1115. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = PD.BARCODE
  1116. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1117. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1118. WHERE
  1119. PD.ACCOUNTID = 1
  1120. AND (
  1121. (
  1122. 11 = 11
  1123. AND (
  1124. ( PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1' AND PD.ISREFIRE = '0' )
  1125. OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' )
  1126. )
  1127. )
  1128. OR (
  1129. 11 = 58
  1130. AND (
  1131. ( PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1' )
  1132. OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1' )
  1133. )
  1134. )
  1135. OR ( 11 NOT IN ( 11, 58 ) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 11 )
  1136. )
  1137. AND PD.CREATETIME >= TRUNC( SYSDATE - 7 )
  1138. AND PD.CREATETIME < TRUNC( SYSDATE ) ";
  1139. DataTable dt1 = conn.ExecuteDatatable(本烧出窑总数sql);
  1140. var 本烧出窑总数 = new List<sqlResultOne>();
  1141. for (int i = 0; i < dt1.Rows.Count; i++)
  1142. {
  1143. 本烧出窑总数.Add(new sqlResultOne()
  1144. {
  1145. ONESUBSTANDARDCOUNT = double.Parse(dt1.Rows[i]["ONESUBSTANDARDCOUNT"].ToString()),
  1146. TWOSUBSTANDARDCOUNT = double.Parse(dt1.Rows[i]["TWOSUBSTANDARDCOUNT"].ToString()),
  1147. THREESUBSTANDARDCOUNT = double.Parse(dt1.Rows[i]["THREESUBSTANDARDCOUNT"].ToString())
  1148. });
  1149. }
  1150. string 重烧出窑总数sql = @"SELECT
  1151. SUM(
  1152. CASE WHEN (
  1153. ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 )
  1154. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1
  1155. ) THEN
  1156. 1 ELSE 0
  1157. END
  1158. ) ONESUBSTANDARDCOUNT,
  1159. SUM(
  1160. CASE WHEN (
  1161. ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 )
  1162. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  1163. ) THEN
  1164. 1 ELSE 0
  1165. END
  1166. ) TWOSUBSTANDARDCOUNT,
  1167. --本烧三车间次品数
  1168. SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT
  1169. FROM
  1170. TP_PM_PRODUCTIONDATA PD
  1171. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = PD.BARCODE
  1172. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1173. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1174. WHERE
  1175. PD.ACCOUNTID = 1
  1176. AND (
  1177. (
  1178. 58 = 11
  1179. AND (
  1180. ( PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1' AND PD.ISREFIRE = '0' )
  1181. OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' )
  1182. )
  1183. )
  1184. OR (
  1185. 58 = 58
  1186. AND (
  1187. ( PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1' )
  1188. OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1' )
  1189. )
  1190. )
  1191. OR ( 58 NOT IN ( 11, 58 ) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 58 )
  1192. )
  1193. AND PD.CREATETIME >= TRUNC( SYSDATE - 7 )
  1194. AND PD.CREATETIME < TRUNC( SYSDATE ) ";
  1195. DataTable dt2 = conn.ExecuteDatatable(重烧出窑总数sql);
  1196. var 重烧出窑总数 = new List<sqlResultOne>();
  1197. for (int i = 0; i < dt2.Rows.Count; i++)
  1198. {
  1199. 重烧出窑总数.Add(new sqlResultOne()
  1200. {
  1201. ONESUBSTANDARDCOUNT = double.Parse(dt2.Rows[i]["ONESUBSTANDARDCOUNT"].ToString()),
  1202. TWOSUBSTANDARDCOUNT = double.Parse(dt2.Rows[i]["TWOSUBSTANDARDCOUNT"].ToString()),
  1203. THREESUBSTANDARDCOUNT = double.Parse(dt2.Rows[i]["THREESUBSTANDARDCOUNT"].ToString())
  1204. });
  1205. }
  1206. string 本烧次品重烧数sql = @" SELECT
  1207. SUM(
  1208. CASE WHEN (
  1209. GOODSLEVELTYPEID = 7
  1210. AND (
  1211. ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1212. AND INSTR( GOODSTYPECODE, '001002' ) = 1
  1213. )
  1214. ) THEN
  1215. 1 ELSE 0
  1216. END
  1217. ) ONESUBSTANDARDCOUNT,
  1218. SUM(
  1219. CASE WHEN (
  1220. GOODSLEVELTYPEID = 7
  1221. AND (
  1222. ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1223. AND INSTR( GOODSTYPECODE, '001001' ) = 1
  1224. )
  1225. ) THEN
  1226. 1 ELSE 0
  1227. END
  1228. ) TWOSUBSTANDARDCOUNT,
  1229. SUM( CASE WHEN ( GOODSLEVELTYPEID = 7 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT,
  1230. SUM(
  1231. CASE WHEN (
  1232. GOODSLEVELTYPEID = 6
  1233. AND (
  1234. ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1235. AND INSTR( GOODSTYPECODE, '001002' ) = 1
  1236. )
  1237. ) THEN
  1238. 1 ELSE 0
  1239. END
  1240. ) ONEREFIRECOUNT,
  1241. SUM(
  1242. CASE WHEN (
  1243. GOODSLEVELTYPEID = 6
  1244. AND (
  1245. ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1246. AND INSTR( GOODSTYPECODE, '001001' ) = 1
  1247. )
  1248. ) THEN
  1249. 1 ELSE 0
  1250. END
  1251. ) TWOREFIRECOUNT,
  1252. --本烧三车间重烧数
  1253. SUM( CASE WHEN ( GOODSLEVELTYPEID = 6 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREEREFIRECOUNT
  1254. FROM
  1255. (
  1256. SELECT DISTINCT
  1257. PD.BARCODE,
  1258. GT.GOODSTYPECODE,
  1259. GDD.GROUTINGLINECODE,
  1260. PD.GOODSLEVELTYPEID
  1261. FROM
  1262. TP_PM_PRODUCTIONDATA PD
  1263. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE
  1264. INNER JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  1265. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1266. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1267. WHERE
  1268. PD.VALUEFLAG = '1'
  1269. AND PD.ACCOUNTID = 1
  1270. AND LENGTH( PD.KILNCARBATCHNO ) > 0
  1271. AND PD.CREATETIME >= TRUNC( SYSDATE - 7 )
  1272. AND PD.CREATETIME < TRUNC( SYSDATE )
  1273. AND PD.MODELTYPE IN ( - 1, - 4, - 5 )
  1274. AND PD.CHECKBATCHNO = 1
  1275. AND ( ( 11 <> 58 AND PD.ISREFIRE = '0' ) OR ( 11 = 58 AND PD.ISREFIRE = '6' ) )
  1276. AND GDD.RECYCLINGFLAG = '0'
  1277. ) T ";
  1278. DataTable dt3 = conn.ExecuteDatatable(本烧次品重烧数sql);
  1279. var 本烧次品重烧数 = new List<sqlResultTwo>();
  1280. for (int i = 0; i < dt3.Rows.Count; i++)
  1281. {
  1282. 本烧次品重烧数.Add(new sqlResultTwo()
  1283. {
  1284. ONESUBSTANDARDCOUNT = double.Parse(dt3.Rows[i]["ONESUBSTANDARDCOUNT"].ToString()),
  1285. TWOSUBSTANDARDCOUNT = double.Parse(dt3.Rows[i]["TWOSUBSTANDARDCOUNT"].ToString()),
  1286. THREESUBSTANDARDCOUNT = double.Parse(dt3.Rows[i]["THREESUBSTANDARDCOUNT"].ToString()),
  1287. ONEREFIRECOUNT = double.Parse(dt3.Rows[i]["ONEREFIRECOUNT"].ToString()),
  1288. TWOREFIRECOUNT = double.Parse(dt3.Rows[i]["TWOREFIRECOUNT"].ToString()),
  1289. THREEREFIRECOUNT = double.Parse(dt3.Rows[i]["THREEREFIRECOUNT"].ToString()),
  1290. });
  1291. }
  1292. string 重烧次品重烧数sql = @"SELECT
  1293. SUM(
  1294. CASE WHEN (
  1295. GOODSLEVELTYPEID = 7
  1296. AND (
  1297. ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1298. AND INSTR( GOODSTYPECODE, '001002' ) = 1
  1299. )
  1300. ) THEN
  1301. 1 ELSE 0
  1302. END
  1303. ) ONESUBSTANDARDCOUNT,
  1304. SUM(
  1305. CASE WHEN (
  1306. GOODSLEVELTYPEID = 7
  1307. AND (
  1308. ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1309. AND INSTR( GOODSTYPECODE, '001001' ) = 1
  1310. )
  1311. ) THEN
  1312. 1 ELSE 0
  1313. END
  1314. ) TWOSUBSTANDARDCOUNT,
  1315. SUM( CASE WHEN ( GOODSLEVELTYPEID = 7 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT,
  1316. SUM(
  1317. CASE WHEN (
  1318. GOODSLEVELTYPEID = 6
  1319. AND (
  1320. ( INSTR( GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1321. AND INSTR( GOODSTYPECODE, '001002' ) = 1
  1322. )
  1323. ) THEN
  1324. 1 ELSE 0
  1325. END
  1326. ) ONEREFIRECOUNT,
  1327. SUM(
  1328. CASE WHEN (
  1329. GOODSLEVELTYPEID = 6
  1330. AND (
  1331. ( INSTR( GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GROUTINGLINECODE, 'D' ) = 1 )
  1332. AND INSTR( GOODSTYPECODE, '001001' ) = 1
  1333. )
  1334. ) THEN
  1335. 1 ELSE 0
  1336. END
  1337. ) TWOREFIRECOUNT,
  1338. SUM( CASE WHEN ( GOODSLEVELTYPEID = 6 AND INSTR( GROUTINGLINECODE, 'C' ) = 1 ) THEN 1 ELSE 0 END ) THREEREFIRECOUNT
  1339. FROM
  1340. (
  1341. SELECT DISTINCT
  1342. PD.BARCODE,
  1343. GT.GOODSTYPECODE,
  1344. GDD.GROUTINGLINECODE,
  1345. PD.GOODSLEVELTYPEID
  1346. FROM
  1347. TP_PM_PRODUCTIONDATA PD
  1348. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE
  1349. INNER JOIN TP_PM_DEFECT D ON D.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  1350. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1351. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1352. WHERE
  1353. PD.VALUEFLAG = '1'
  1354. AND PD.ACCOUNTID = 1
  1355. AND LENGTH( PD.KILNCARBATCHNO ) > 0
  1356. AND PD.CREATETIME >= TRUNC( SYSDATE - 7 )
  1357. AND PD.CREATETIME < TRUNC( SYSDATE )
  1358. AND PD.MODELTYPE IN ( - 1, - 4, - 5 )
  1359. AND PD.CHECKBATCHNO = 1
  1360. AND ( ( 58 <> 58 AND PD.ISREFIRE = '0' ) OR ( 58 = 58 AND PD.ISREFIRE = '6' ) )
  1361. AND GDD.RECYCLINGFLAG = '0'
  1362. ) T ";
  1363. DataTable dt4 = conn.ExecuteDatatable(重烧次品重烧数sql);
  1364. var 重烧次品重烧数 = new List<sqlResultTwo>();
  1365. for (int i = 0; i < dt4.Rows.Count; i++)
  1366. {
  1367. 重烧次品重烧数.Add(new sqlResultTwo()
  1368. {
  1369. ONESUBSTANDARDCOUNT = double.Parse(dt4.Rows[i]["ONESUBSTANDARDCOUNT"].ToString()),
  1370. TWOSUBSTANDARDCOUNT = double.Parse(dt4.Rows[i]["TWOSUBSTANDARDCOUNT"].ToString()),
  1371. THREESUBSTANDARDCOUNT = double.Parse(dt4.Rows[i]["THREESUBSTANDARDCOUNT"].ToString()),
  1372. ONEREFIRECOUNT = double.Parse(dt4.Rows[i]["ONEREFIRECOUNT"].ToString()),
  1373. TWOREFIRECOUNT = double.Parse(dt4.Rows[i]["TWOREFIRECOUNT"].ToString()),
  1374. THREEREFIRECOUNT = double.Parse(dt4.Rows[i]["THREEREFIRECOUNT"].ToString()),
  1375. });
  1376. }
  1377. var results = new List<Result>();
  1378. // 第一个SELECT
  1379. var firstSelect = 本烧出窑总数.Select(ex => new Result
  1380. {
  1381. 一车间 = ex.ONESUBSTANDARDCOUNT,
  1382. 二车间 = ex.TWOSUBSTANDARDCOUNT,
  1383. 三车间 = ex.THREESUBSTANDARDCOUNT
  1384. }).Cast<Result>();
  1385. results.AddRange(firstSelect);
  1386. // 第二个SELECT
  1387. var secondSelect = from b in 本烧出窑总数
  1388. join bc in 本烧次品重烧数 on 1 equals 1 into bcj
  1389. from bc in bcj.DefaultIfEmpty()
  1390. select new Result
  1391. {
  1392. 一车间 = Math.Round(((b.ONESUBSTANDARDCOUNT - bc.ONESUBSTANDARDCOUNT - bc.ONEREFIRECOUNT) / (double)b.ONESUBSTANDARDCOUNT) * 100, 1),
  1393. 二车间 = Math.Round(((b.TWOSUBSTANDARDCOUNT - bc.TWOSUBSTANDARDCOUNT - bc.TWOREFIRECOUNT) / (double)b.TWOSUBSTANDARDCOUNT) * 100, 1),
  1394. 三车间 = Math.Round(((b.THREESUBSTANDARDCOUNT - bc.THREESUBSTANDARDCOUNT - bc.THREEREFIRECOUNT) / (double)b.THREESUBSTANDARDCOUNT) * 100, 1)
  1395. };
  1396. results.AddRange(secondSelect);
  1397. // 第三个SELECT
  1398. var thirdSelect = from b in 本烧出窑总数
  1399. join bc in 本烧次品重烧数 on 1 equals 1 into bcj
  1400. from bc in bcj.DefaultIfEmpty()
  1401. join z in 本烧出窑总数 on 1 equals 1 into zj
  1402. from z in zj.DefaultIfEmpty()
  1403. join zc in 重烧次品重烧数 on 1 equals 1 into zcj
  1404. from zc in zcj.DefaultIfEmpty()
  1405. select new Result
  1406. {
  1407. 一车间 = Math.Round(
  1408. (((b.ONESUBSTANDARDCOUNT - (bc != null ? bc.ONESUBSTANDARDCOUNT : 0) - (bc != null ? bc.ONEREFIRECOUNT : 0)) +
  1409. ((z != null ? z.ONESUBSTANDARDCOUNT : 0) - (zc != null ? zc.ONESUBSTANDARDCOUNT : 0) - (zc != null ? zc.ONEREFIRECOUNT : 0))) /
  1410. (double)(b.ONESUBSTANDARDCOUNT != 0 ? b.ONESUBSTANDARDCOUNT : 1)) * 100,
  1411. 1),
  1412. 二车间 = Math.Round(
  1413. (((b.TWOSUBSTANDARDCOUNT - (bc != null ? bc.TWOSUBSTANDARDCOUNT : 0) - (bc != null ? bc.TWOREFIRECOUNT : 0)) +
  1414. ((z != null ? z.TWOSUBSTANDARDCOUNT : 0) - (zc != null ? zc.TWOSUBSTANDARDCOUNT : 0) - (zc != null ? zc.TWOREFIRECOUNT : 0))) /
  1415. (double)(b.TWOSUBSTANDARDCOUNT != 0 ? b.TWOSUBSTANDARDCOUNT : 1)) * 100,
  1416. 1),
  1417. 三车间 = Math.Round(
  1418. (((b.THREESUBSTANDARDCOUNT - (bc != null ? bc.THREESUBSTANDARDCOUNT : 0) - (bc != null ? bc.THREEREFIRECOUNT : 0)) +
  1419. ((z != null ? z.THREESUBSTANDARDCOUNT : 0) - (zc != null ? zc.THREESUBSTANDARDCOUNT : 0) - (zc != null ? zc.THREEREFIRECOUNT : 0))) /
  1420. (double)(b.THREESUBSTANDARDCOUNT != 0 ? b.THREESUBSTANDARDCOUNT : 1)) * 100,
  1421. 1)
  1422. };
  1423. results.AddRange(thirdSelect);
  1424. DataTable dt = new DataTable();
  1425. dt.Columns.Add("一车间");
  1426. dt.Columns.Add("二车间");
  1427. dt.Columns.Add("三车间");
  1428. foreach (var item in results)
  1429. {
  1430. DataRow dr = dt.NewRow();
  1431. dr["一车间"] = item.一车间;
  1432. dr["二车间"] = item.二车间;
  1433. dr["三车间"] = item.三车间;
  1434. dt.Rows.Add(dr);
  1435. }
  1436. string jsonStr = new JsonResult(dt).ToJson();
  1437. context.Response.Write(jsonStr);
  1438. }
  1439. if (context.Request["m"].ToString() == "Load07")
  1440. {
  1441. string sqlStr = @"SELECT
  1442. --成型小件
  1443. MAX( (
  1444. SELECT
  1445. SUM( CASE WHEN ( INSTR( GT.GOODSTYPECODE, '001002' ) = 1 ) THEN 1 ELSE 0 END ) AS SMALLPACK
  1446. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  1447. INNER JOIN TP_MST_GOODS G ON GDD.GOODSID = G.GOODSID
  1448. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1449. WHERE GDD.VALUEFLAG = 1
  1450. AND GDD.CREATETIME >= TRUNC( sysdate - 7 )
  1451. AND GDD.CREATETIME < TRUNC( SYSDATE )
  1452. ) ) AS SMALLGDD,
  1453. --成型大件
  1454. MAX( (
  1455. SELECT
  1456. SUM( CASE WHEN ( INSTR( GT.GOODSTYPECODE, '001001' ) = 1 ) THEN 1 ELSE 0 END ) AS SMALLPACK
  1457. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  1458. INNER JOIN TP_MST_GOODS G ON GDD.GOODSID = G.GOODSID
  1459. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1460. WHERE GDD.VALUEFLAG = 1
  1461. AND GDD.CREATETIME >= TRUNC( sysdate - 7 )
  1462. AND GDD.CREATETIME < TRUNC( SYSDATE )
  1463. AND SUBSTR(GDD.GROUTINGLINECODE, 0, 4) NOT IN ('C05B','C05C')
  1464. ) ) AS BIGGDD,
  1465. --半检小件
  1466. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001002' ) = 1) AND PD.PROCEDUREID IN (1,17,118,92,88) THEN 1 ELSE 0 END ) AS SMALLHALF,
  1467. --半检大件
  1468. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001001' ) = 1) AND PD.PROCEDUREID IN (1,17,118,92,88) THEN 1 ELSE 0 END ) AS BIGHALF,
  1469. --施釉小件
  1470. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001002' ) = 1) AND PD.PROCEDUREID IN (65,99) THEN 1 ELSE 0 END ) AS SMALLGLAZE,
  1471. --施釉大件
  1472. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001001' ) = 1) AND PD.PROCEDUREID IN (65,99) THEN 1 ELSE 0 END ) AS BIGGLAZE,
  1473. --烧成小件
  1474. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001002' ) = 1) AND PD.PROCEDUREID IN (10,103) THEN 1 ELSE 0 END ) AS SMALLKILN,
  1475. --烧成大件
  1476. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001001' ) = 1) AND PD.PROCEDUREID IN (10,103) THEN 1 ELSE 0 END ) AS BIGKILN,
  1477. --成检小件
  1478. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001002' ) = 1) AND PD.PROCEDUREID IN (11,104) THEN 1 ELSE 0 END ) AS SMALLCHECK,
  1479. --成检大件
  1480. SUM(CASE WHEN (INSTR( GT.GOODSTYPECODE, '001001' ) = 1) AND PD.PROCEDUREID IN (11,104) THEN 1 ELSE 0 END ) AS BIGCHECK,
  1481. --包装小件
  1482. MAX( (
  1483. SELECT
  1484. SUM( CASE WHEN ( INSTR( GT.GOODSTYPECODE, '001002' ) = 1 ) THEN 1 ELSE 0 END ) AS SMALLPACK
  1485. FROM TP_PM_FINISHEDPRODUCT F
  1486. INNER JOIN TP_MST_GOODS G ON F.GOODSID = G.GOODSID
  1487. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1488. WHERE F.VALUEFLAG = 1
  1489. AND F.CREATETIME >= TRUNC( sysdate - 7 )
  1490. AND F.CREATETIME < TRUNC( SYSDATE )
  1491. ) ) AS SMALLPACK,
  1492. MAX( (
  1493. SELECT
  1494. SUM( CASE WHEN ( INSTR( GT.GOODSTYPECODE, '001001' ) = 1 ) THEN 1 ELSE 0 END ) AS SMALLPACK
  1495. FROM TP_PM_FINISHEDPRODUCT F
  1496. INNER JOIN TP_MST_GOODS G ON F.GOODSID = G.GOODSID
  1497. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1498. WHERE F.VALUEFLAG = 1
  1499. AND F.CREATETIME >= TRUNC( sysdate - 7 )
  1500. AND F.CREATETIME < TRUNC( SYSDATE )
  1501. ) ) AS BIGPACK
  1502. FROM
  1503. TP_PM_PRODUCTIONDATA PD
  1504. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  1505. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1506. WHERE
  1507. PD.VALUEFLAG = 1
  1508. AND PD.CREATETIME >= TRUNC( sysdate - 7 )
  1509. AND PD.CREATETIME < TRUNC( SYSDATE )
  1510. ";
  1511. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1512. string jsonStr = new JsonResult(dt).ToJson();
  1513. context.Response.Write(jsonStr);
  1514. }
  1515. if (context.Request["m"].ToString() == "Load06")
  1516. {
  1517. // string sqlStr = @"WITH 一车间半检产量 AS (
  1518. // SELECT
  1519. // COUNT( DISTINCT PD.BARCODE ) AS ONEHALFCHECK
  1520. // FROM
  1521. // TP_PM_PRODUCTIONDATA PD
  1522. // LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID = PD.GOODSID
  1523. // LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID = GOODS.GOODSTYPEID
  1524. // WHERE
  1525. // PD.VALUEFLAG = 1
  1526. // AND PD.PROCEDUREID IN ( 1, 17 )
  1527. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1528. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1529. // AND INSTR( GTP.GOODSTYPECODE, '001002' ) = 1
  1530. // ),
  1531. // 二车间半检产量 AS (
  1532. // SELECT
  1533. // COUNT( DISTINCT PD.BARCODE ) AS TWOHALFCHECK
  1534. // FROM
  1535. // TP_PM_PRODUCTIONDATA PD
  1536. // LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID = PD.GOODSID
  1537. // LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID = GOODS.GOODSTYPEID
  1538. // WHERE
  1539. // PD.VALUEFLAG = 1
  1540. // AND PD.PROCEDUREID IN ( 1, 17 )
  1541. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1542. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1543. // AND INSTR( GTP.GOODSTYPECODE, '001001' ) = 1
  1544. // ),
  1545. // 三车间半检产量 AS (
  1546. // SELECT
  1547. // COUNT( DISTINCT PD.BARCODE ) AS THREEHALFCHECK
  1548. // FROM
  1549. // TP_PM_PRODUCTIONDATA PD
  1550. // LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID = PD.GOODSID
  1551. // LEFT JOIN TP_MST_GOODSTYPE GTP ON GTP.GOODSTYPEID = GOODS.GOODSTYPEID
  1552. // WHERE
  1553. // PD.VALUEFLAG = 1
  1554. // AND PD.PROCEDUREID IN ( 118, 92, 88 )
  1555. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1556. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1557. // ),
  1558. // 车间干补数 AS (
  1559. // SELECT
  1560. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 ) THEN 1 ELSE 0 END ) AS ONESPECIALREPAIR,
  1561. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 ) THEN 1 ELSE 0 END ) AS TWOSPECIALREPAIR,
  1562. // SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) AS THREESPECIALREPAIR
  1563. // FROM
  1564. // TP_PM_PRODUCTIONDATA PD
  1565. // LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE
  1566. // LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID = GDD.GOODSID
  1567. // LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = GOODS.GOODSTYPEID
  1568. // WHERE
  1569. // PD.PROCEDUREID = 18
  1570. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1571. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1572. // ),
  1573. // 本烧出窑总数 AS (
  1574. // SELECT
  1575. // --本烧一车间数
  1576. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 ) THEN 1 ELSE 0 END ) ONESUBSTANDARDCOUNT,
  1577. // --本烧二车间数
  1578. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 ) THEN 1 ELSE 0 END ) TWOSUBSTANDARDCOUNT,
  1579. // --本烧三车间数
  1580. // SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) THREESUBSTANDARDCOUNT
  1581. // FROM
  1582. // TP_PM_PRODUCTIONDATA PD
  1583. // LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = PD.BARCODE
  1584. // INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1585. // INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1586. // WHERE
  1587. // PD.ACCOUNTID = 1
  1588. // AND (
  1589. // ( 11 = 11 AND ( ( PD.PROCEDUREID = 11 AND PD.VALUEFLAG = '1' AND PD.ISREFIRE = '0' ) OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) ) )
  1590. // OR
  1591. // ( 11 = 58 AND ( ( PD.PROCEDUREID = 58 AND PD.VALUEFLAG = '1' ) OR ( PD.PROCEDUREID = 104 AND PD.ISREFIRE = '6' AND PD.CHECKFLAG = '1' ) ) )
  1592. // OR
  1593. // ( 11 NOT IN ( 11, 58 ) AND PD.VALUEFLAG = '1' AND PD.PROCEDUREID = 11 )
  1594. // )
  1595. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1596. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1597. // ),
  1598. // 车间冷补数 AS (
  1599. // SELECT
  1600. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'A' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 ) THEN 1 ELSE 0 END ) AS ONELENGBU,
  1601. // SUM( CASE WHEN ( ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 ) THEN 1 ELSE 0 END ) AS TWOLENGBU,
  1602. // SUM( CASE WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 THEN 1 ELSE 0 END ) AS THREELENGBU
  1603. // FROM
  1604. // TP_PM_PRODUCTIONDATA PD
  1605. // LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON PD.BARCODE = GDD.BARCODE
  1606. // LEFT JOIN TP_MST_GOODS GOODS ON GOODS.GOODSID = GDD.GOODSID
  1607. // LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = GOODS.GOODSTYPEID
  1608. // WHERE
  1609. // PD.PROCEDUREID IN (113,135)
  1610. // AND PD.CREATETIME >= TRUNC( sysdate-7 )
  1611. // AND TRUNC( PD.CREATETIME ) <= TRUNC( SYSDATE )
  1612. // )
  1613. // SELECT
  1614. // TO_CHAR(ROUND(车间干补数.ONESPECIALREPAIR / 一车间半检产量.ONEHALFCHECK, 6) * 100,'fm99990.0') AS ONESPECIALREPAIR,
  1615. // TO_CHAR(ROUND(车间干补数.TWOSPECIALREPAIR /二车间半检产量.TWOHALFCHECK, 6) * 100,'fm99990.0') AS TWOSPECIALREPAIR,
  1616. // TO_CHAR(ROUND(车间干补数.THREESPECIALREPAIR / 三车间半检产量.THREEHALFCHECK, 6) * 100,'fm99990.0') AS THREESPECIALREPAIR,
  1617. // TO_CHAR(ROUND(车间冷补数.ONELENGBU / 本烧出窑总数.ONESUBSTANDARDCOUNT, 6) * 100,'fm99990.0') AS ONELENGBU,
  1618. // TO_CHAR(ROUND(车间冷补数.TWOLENGBU / 本烧出窑总数.TWOSUBSTANDARDCOUNT, 6) * 100,'fm99990.0') AS TWOLENGBU,
  1619. // TO_CHAR(ROUND(车间冷补数.THREELENGBU / 本烧出窑总数.THREESUBSTANDARDCOUNT, 6) * 100,'fm99990.0') AS THREELENGBU
  1620. // FROM
  1621. // 车间干补数
  1622. // INNER JOIN 车间冷补数 ON 1 = 1
  1623. // LEFT JOIN 一车间半检产量 ON 1 = 1
  1624. // LEFT JOIN 二车间半检产量 ON 1 = 1
  1625. // LEFT JOIN 三车间半检产量 ON 1 = 1
  1626. // LEFT JOIN 本烧出窑总数 ON 1 = 1
  1627. //";
  1628. string sqlStr = @"with 成检检验数 AS (
  1629. SELECT
  1630. pd.GOODSCODE,
  1631. COUNT( DISTINCT pd.BARCODE) AS 数量 FROM TP_PM_PRODUCTIONDATA pd
  1632. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pd.BARCODE AND gdd.TESTMOULDFLAG=0
  1633. WHERE pd.PROCEDUREID IN( 125,131)
  1634. AND pd.VALUEFLAG=1
  1635. AND pd.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  1636. AND pd.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  1637. GROUP BY pd.GOODSCODE
  1638. ),成检废品数 AS (
  1639. SELECT
  1640. pd.GOODSCODE,
  1641. COUNT( DISTINCT pd.BARCODE) AS 数量 FROM TP_PM_PRODUCTIONDATA pd
  1642. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pd.BARCODE AND gdd.TESTMOULDFLAG=0
  1643. WHERE pd.PROCEDUREID IN( 125,131)
  1644. AND pd.VALUEFLAG=1
  1645. AND pd.GOODSLEVELTYPEID in(7,13)
  1646. AND pd.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  1647. AND pd.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  1648. GROUP BY pd.GOODSCODE
  1649. )
  1650. SELECT
  1651. *
  1652. FROM(
  1653. SELECT
  1654. '成检' 工序,
  1655. TO_CHAR(成检检验数.GOODSCODE) AS GOODSCODE,
  1656. 成检检验数.数量 AS 检验数,
  1657. DECODE(NVL(成检废品数.数量, 0),0,'0%',TO_CHAR(((NVL(成检废品数.数量, 0)) /DECODE(NVL(成检检验数.数量, 1),0,1,NVL(成检检验数.数量, 1))) * 100,'fm99990.0')) AS 废品率
  1658. FROM 成检检验数
  1659. LEFT JOIN 成检废品数 ON 成检废品数.GOODSCODE=成检检验数.GOODSCODE
  1660. ORDER BY DECODE(NVL(成检废品数.数量, 0),0,'0%',TO_CHAR(((NVL(成检废品数.数量, 0)) /DECODE(NVL(成检检验数.数量, 1),0,1,NVL(成检检验数.数量, 1))) * 100,'fm99990.0')) DESC
  1661. ) WHERE ROWNUM<6";
  1662. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1663. string jsonStr = new JsonResult(dt).ToJson();
  1664. context.Response.Write(jsonStr);
  1665. }
  1666. if (context.Request["m"].ToString() == "Load09")
  1667. {
  1668. string sqlStr = @"SELECT
  1669. TO_CHAR(TT.plandate, 'MM-DD')AS plandate ,
  1670. TT.INSPECTIONQUANTITY,
  1671. DECODE(NVL(TT.INSPECTIONQUANTITY, 0),0,0,TO_CHAR(((NVL(TT.INSPECTIONQUANTITY, 0)) /DECODE(NVL(TT.PLANINSPECTIONQUANTITY, 1),0,1,NVL(TT.PLANINSPECTIONQUANTITY, 1))) * 100,'fm99990.0')) AS WANCHENGLV,
  1672. 100 - DECODE(NVL(TT.BUHEGESHU, 0) ,0 ,0,TO_CHAR(((NVL(TT.BUHEGESHU, 0)) / DECODE(NVL(TT.INSPECTIONQUANTITY, 1), 0, 1, NVL(TT.INSPECTIONQUANTITY, 1))) * 100,'fm99990.0')) AS HEGELV
  1673. FROM (
  1674. SELECT
  1675. t.plandate
  1676. ,SUM(t.planquantity) PLANINSPECTIONQUANTITY
  1677. ,SUM(t.INSPECTIONQUANTITY) INSPECTIONQUANTITY
  1678. ,SUM(t.unqualifiedquantity) BUHEGESHU
  1679. FROM (SELECT
  1680. fp.plandate
  1681. ,SUM(fp.planinspectionquantity) planquantity
  1682. ,SUM(fp.inspectionquantity) INSPECTIONQUANTITY
  1683. ,COUNT(DISTINCT fd.barcode) unqualifiedquantity
  1684. FROM tp_pm_fqcitemsplan fp
  1685. LEFT JOIN tp_pm_fqcitemsdata fd
  1686. ON fd.planid = fp.planid
  1687. AND fd.isqualified = 0
  1688. WHERE fp.plandate > TRUNC(SYSDATE - 7)
  1689. AND fp.plandate <= TRUNC(SYSDATE)
  1690. AND fp.configtype IN ('大件', '小件')
  1691. AND fp.planinspectionquantity <> 0
  1692. GROUP BY fp.plandate) t
  1693. GROUP BY t.plandate
  1694. ) TT ORDER BY plandate ";
  1695. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1696. string jsonStr = new JsonResult(dt).ToJson();
  1697. context.Response.Write(jsonStr);
  1698. }
  1699. if (context.Request["m"].ToString() == "Load04")
  1700. {
  1701. string sqlStr = @"SELECT
  1702. *
  1703. FROM
  1704. (
  1705. SELECT
  1706. ne.GOODCODE,
  1707. COUNT( DISTINCT FD.BARCODE ) AS COUNTS
  1708. FROM
  1709. TP_PM_FINISHEDPRODUCT FD
  1710. INNER JOIN TP_MST_GOODSNEW ne ON ne.GOODCODE = FD.GOODSCODE
  1711. WHERE
  1712. FD.VALUEFLAG = 1
  1713. AND FD.CREATETIME >= TRUNC( SYSDATE - 7 )
  1714. GROUP BY
  1715. ne.GOODCODE
  1716. )
  1717. WHERE
  1718. ROWNUM <6";
  1719. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1720. string jsonStr = new JsonResult(dt).ToJson();
  1721. context.Response.Write(jsonStr);
  1722. }
  1723. #region 模具库存周转率,产品 SKU 周转率
  1724. //if (context.Request["m"].ToString() == "Load10") 请勿删除 根据要求后期可能会再次使用
  1725. // { List<CDAParameter> sqlPara = new List<CDAParameter>();
  1726. // sqlPara.Add(new CDAParameter("DATEBEGIN", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+ " 00:00:00", DataType.DateTime));
  1727. // sqlPara.Add(new CDAParameter("DATEEND", DateTime.Now.AddDays(0).ToString("yyyy-MM-dd")+ " 23:59:59", DataType.DateTime));
  1728. // string sqlStr = @"SELECT
  1729. // *
  1730. // FROM
  1731. // (
  1732. // SELECT
  1733. // TO_CHAR( '模具' || GOODSCODE ) AS 地点,
  1734. // GOODSCODE,
  1735. // 时间差值,
  1736. // to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期
  1737. // FROM
  1738. // (
  1739. // SELECT
  1740. // mch.GOODSCODE,
  1741. // SUM( mch.时间差 ) AS 时间差值,
  1742. // COUNT( DISTINCT goodsmould.MOULDCODE ) AS 产量
  1743. // FROM
  1744. // (
  1745. // SELECT
  1746. // mch.MOULDCODE,
  1747. // mch.GOODSCODE,
  1748. // TO_CHAR( ( ceil( ( ( mch.CREATETIME - mchh.CREATETIME ) ) * 24 ) ), 'fm9999990' ) AS 时间差
  1749. // FROM
  1750. // tp_pc_mouldchangehistory mch
  1751. // LEFT JOIN tp_pc_mouldchangehistory mchh ON mchh.MOULDCODE = mch.MOULDCODE
  1752. // AND mchh.operationtype = 1
  1753. // WHERE
  1754. // mch.accountid = 1
  1755. // AND mch.operationtype = 6 --operationtype=1 新增入库 operationtype=6 库存上线(出库) -1为变更型号
  1756. // AND mch.operationtype >- 1
  1757. // AND mch.createtime >= @DATEBEGIN@
  1758. // AND mch.createtime <= @DATEEND@
  1759. // ) mch
  1760. // LEFT JOIN tp_pc_mouldchangehistory goodsmould ON goodsmould.MOULDCODE = mch.MOULDCODE
  1761. // WHERE
  1762. // goodsmould.accountid = 1
  1763. // AND goodsmould.operationtype = 6
  1764. // AND goodsmould.operationtype >- 1
  1765. // AND goodsmould.createtime >= @DATEBEGIN@
  1766. // AND goodsmould.createtime <= @DATEEND@
  1767. // GROUP BY
  1768. // mch.GOODSCODE
  1769. // ORDER BY
  1770. // SUM( mch.时间差 ) DESC
  1771. // )
  1772. // ORDER BY
  1773. // TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC
  1774. // )
  1775. // WHERE
  1776. // ROWNUM <= 4 UNION ALL
  1777. // SELECT
  1778. // *
  1779. // FROM
  1780. // (
  1781. // SELECT
  1782. // TO_CHAR( '精坯' || GOODSCODE ) AS 地点,
  1783. // GOODSCODE,
  1784. // 时间差值,
  1785. // to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期
  1786. // FROM
  1787. // (
  1788. // SELECT
  1789. // inoutPD.GOODSCODE,
  1790. // SUM( 时间差 ) AS 时间差值,
  1791. // COUNT( DISTINCT GOODSPD.BARCODE ) 产量
  1792. // FROM
  1793. // (
  1794. // SELECT
  1795. // OUTPD.BARCODE,
  1796. // OUTPD.GOODSCODE,
  1797. // TO_CHAR( ( ceil( ( ( OUTPD.CREATETIME - INPD.CREATETIME ) * 24 ) ) ), 'fm9999990' ) AS 时间差
  1798. // FROM
  1799. // TP_PM_PRODUCTIONDATA OUTPD
  1800. // INNER JOIN TP_PM_PRODUCTIONDATA INPD ON OUTPD.BARCODE = INPD.BARCODE
  1801. // AND INPD.PROCEDUREID IN ( 53, 97 )
  1802. // AND INPD.VALUEFLAG = 1
  1803. // WHERE
  1804. // OUTPD.PROCEDUREID IN ( 119, 64, 81 )
  1805. // AND OUTPD.VALUEFLAG = 1
  1806. // AND OUTPD.createtime >= @DATEBEGIN@
  1807. // AND OUTPD.createtime <= @DATEEND@
  1808. // ) inoutPD
  1809. // INNER JOIN TP_PM_PRODUCTIONDATA GOODSPD ON GOODSPD.BARCODE = inoutPD.BARCODE
  1810. // WHERE
  1811. // GOODSPD.PROCEDUREID IN ( 119, 64, 81 )
  1812. // AND GOODSPD.VALUEFLAG = 1
  1813. // AND GOODSPD.createtime >= @DATEBEGIN@
  1814. // AND GOODSPD.createtime <= @DATEEND@
  1815. // GROUP BY
  1816. // inoutPD.GOODSCODE
  1817. // )
  1818. // ORDER BY
  1819. // TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC
  1820. // )
  1821. // WHERE
  1822. // ROWNUM <= 3 UNION ALL
  1823. // SELECT
  1824. // *
  1825. // FROM
  1826. // (
  1827. // SELECT
  1828. // TO_CHAR( '施釉' || GOODSCODE ) AS 地点,
  1829. // GOODSCODE,
  1830. // 时间差值,
  1831. // to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期
  1832. // FROM
  1833. // (
  1834. // SELECT
  1835. // inoutPD.GOODSCODE,
  1836. // SUM( 时间差 ) AS 时间差值,
  1837. // COUNT( DISTINCT GOODSPD.BARCODE ) 产量
  1838. // FROM
  1839. // (
  1840. // SELECT
  1841. // OUTPD.BARCODE,
  1842. // OUTPD.GOODSCODE,
  1843. // TO_CHAR( ( ceil( ( ( OUTPD.CREATETIME - INPD.CREATETIME ) * 24 ) ) ), 'fm9999990' ) AS 时间差
  1844. // FROM
  1845. // TP_PM_PRODUCTIONDATA OUTPD
  1846. // INNER JOIN TP_PM_PRODUCTIONDATA INPD ON OUTPD.BARCODE = INPD.BARCODE
  1847. // AND INPD.PROCEDUREID IN ( 99, 65 )
  1848. // AND INPD.VALUEFLAG = 1
  1849. // WHERE
  1850. // OUTPD.PROCEDUREID IN ( 5, 101 )
  1851. // AND OUTPD.VALUEFLAG = 1
  1852. // AND OUTPD.createtime >= @DATEBEGIN@
  1853. // AND OUTPD.createtime <= @DATEEND@
  1854. // ) inoutPD
  1855. // INNER JOIN TP_PM_PRODUCTIONDATA GOODSPD ON GOODSPD.BARCODE = inoutPD.BARCODE
  1856. // WHERE
  1857. // GOODSPD.PROCEDUREID IN ( 5, 101 )
  1858. // AND GOODSPD.VALUEFLAG = 1
  1859. // AND GOODSPD.createtime >= @DATEBEGIN@
  1860. // AND GOODSPD.createtime <= @DATEEND@
  1861. // GROUP BY
  1862. // inoutPD.GOODSCODE
  1863. // )
  1864. // ORDER BY
  1865. // TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC
  1866. // )
  1867. // WHERE
  1868. // ROWNUM <=3";
  1869. // DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  1870. // string jsonStr = new JsonResult(dt).ToJson();
  1871. // context.Response.Write(jsonStr);
  1872. // }
  1873. #endregion
  1874. if (context.Request["m"].ToString() == "Load91")
  1875. {
  1876. string sqlStr = @"
  1877. SELECT
  1878. TO_char(T.ALLCOUNT) AS 缺陷数,
  1879. TO_char(T.INSPECTITEM) AS 缺陷名称,
  1880. TO_char(T.SUMCOUNT)缺陷总数,
  1881. TO_char(T.SUMCOUNT1)抽检数,
  1882. TO_char(DECODE(NVL(T.ALLCOUNT, 0) ,0 ,'0%' ,TO_CHAR(((NVL(T.ALLCOUNT, 0)) / DECODE(NVL(T.SUMCOUNT1, 1) ,0 ,1 ,NVL(T.SUMCOUNT1, 1))) * 100 ,'fm99990.0'))) AS 缺陷占比
  1883. FROM (
  1884. SELECT
  1885. COUNT(1) ALLCOUNT,
  1886. TP_PM_FQCITEMSDATA.INSPECTITEM,
  1887. SUM1.SUMCOUNT,
  1888. SUM2.SUMCOUNT1
  1889. FROM TP_PM_FQCITEMSDATA
  1890. LEFT JOIN (
  1891. SELECT
  1892. COUNT(1) SUMCOUNT,
  1893. VALUEFLAG
  1894. FROM TP_PM_FQCITEMSDATA
  1895. WHERE TP_PM_FQCITEMSDATA.VALUEFLAG = 1
  1896. AND TP_PM_FQCITEMSDATA.CREATETIME >= TRUNC(SYSDATE)
  1897. AND TP_PM_FQCITEMSDATA.INSPECTTYPE IN (616, 617, 653, 654, 647)
  1898. AND TP_PM_FQCITEMSDATA.ISQUALIFIED = 0
  1899. GROUP BY
  1900. VALUEFLAG
  1901. ) SUM1 ON SUM1.VALUEFLAG = TP_PM_FQCITEMSDATA.VALUEFLAG
  1902. LEFT JOIN (
  1903. SELECT
  1904. COUNT(1) SUMCOUNT1,
  1905. INSPECTITEM
  1906. FROM TP_PM_FQCITEMSDATA
  1907. WHERE TP_PM_FQCITEMSDATA.VALUEFLAG = 1
  1908. AND TP_PM_FQCITEMSDATA.CREATETIME >= TRUNC(SYSDATE)
  1909. AND TP_PM_FQCITEMSDATA.INSPECTTYPE IN (616, 617, 653, 654, 647)
  1910. GROUP BY
  1911. INSPECTITEM
  1912. ) SUM2 ON SUM2.INSPECTITEM = TP_PM_FQCITEMSDATA.INSPECTITEM
  1913. WHERE TP_PM_FQCITEMSDATA.VALUEFLAG = 1
  1914. AND TP_PM_FQCITEMSDATA.CREATETIME >= TRUNC(SYSDATE)
  1915. AND TP_PM_FQCITEMSDATA.INSPECTTYPE IN (616, 617, 653, 654, 647)
  1916. AND TP_PM_FQCITEMSDATA.ISQUALIFIED = 0
  1917. GROUP BY
  1918. TP_PM_FQCITEMSDATA.INSPECTITEM,
  1919. SUM1.SUMCOUNT,
  1920. SUM2.SUMCOUNT1
  1921. ORDER BY
  1922. ALLCOUNT DESC
  1923. ) T
  1924. WHERE ROWNUM < 6";
  1925. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1926. string jsonStr = new JsonResult(dt).ToJson();
  1927. context.Response.Write(jsonStr);
  1928. }
  1929. if (context.Request["m"].ToString() == "Load10")
  1930. {
  1931. string sqlStr = @"WITH 半检检验数 AS (
  1932. SELECT
  1933. pd.GOODSCODE,
  1934. COUNT( DISTINCT pd.BARCODE) AS 数量
  1935. FROM TP_PM_PRODUCTIONDATA pd
  1936. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pd.BARCODE AND gdd.TESTMOULDFLAG=0
  1937. WHERE pd.PROCEDUREID IN( 117,89,95,61)
  1938. AND pd.VALUEFLAG=1
  1939. AND pd.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  1940. AND pd.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  1941. GROUP BY pd.GOODSCODE
  1942. ),
  1943. 半检废品数 AS (
  1944. SELECT
  1945. pd.GOODSCODE,
  1946. COUNT( DISTINCT pd.BARCODE) AS 数量 FROM TP_PM_SEMICHECK pd
  1947. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pd.BARCODE AND gdd.TESTMOULDFLAG=0
  1948. WHERE pd.PROCEDUREID IN( 117,89,95,61,90,96)
  1949. AND pd.VALUEFLAG=1
  1950. AND pd.GOODSLEVELTYPEID in(7,13,14)
  1951. AND pd.CREATETIME >=TRUNC(NEXT_DAY(SYSDATE-8,1)+1)
  1952. AND pd.CREATETIME< TRUNC(NEXT_DAY(SYSDATE-8,1)+7)+1
  1953. GROUP BY pd.GOODSCODE
  1954. )
  1955. SELECT
  1956. *
  1957. FROM(
  1958. SELECT
  1959. '半检' 工序,
  1960. TO_CHAR(半检检验数.GOODSCODE) AS GOODSCODE,
  1961. 半检检验数.数量 AS 检验数,
  1962. DECODE(NVL(半检废品数.数量, 0),0,'0%',TO_CHAR(((NVL(半检废品数.数量, 0)) /DECODE(NVL(半检检验数.数量, 1),0,1,NVL(半检检验数.数量, 1))) * 100,'fm99990.0')) AS 废品率
  1963. FROM 半检检验数
  1964. LEFT JOIN 半检废品数 ON 半检废品数.GOODSCODE=半检检验数.GOODSCODE
  1965. ORDER BY DECODE(NVL(半检废品数.数量, 0),0,'0%',TO_CHAR(((NVL(半检废品数.数量, 0)) /DECODE(NVL(半检检验数.数量, 1),0,1,NVL(半检检验数.数量, 1))) * 100,'fm99990.0')) DESC
  1966. ) WHERE ROWNUM<6
  1967. ";
  1968. DataTable dt = conn.ExecuteDatatable(sqlStr);
  1969. string jsonStr = new JsonResult(dt).ToJson();
  1970. context.Response.Write(jsonStr);
  1971. }
  1972. }
  1973. }
  1974. public bool IsReusable
  1975. {
  1976. get
  1977. {
  1978. return false;
  1979. }
  1980. }
  1981. public class sqlResultOne
  1982. {
  1983. public double ONESUBSTANDARDCOUNT { get; set; }
  1984. public double TWOSUBSTANDARDCOUNT { get; set; }
  1985. public double THREESUBSTANDARDCOUNT { get; set; }
  1986. }
  1987. public class sqlResultTwo : sqlResultOne
  1988. {
  1989. public double ONEREFIRECOUNT { get; set; }
  1990. public double TWOREFIRECOUNT { get; set; }
  1991. public double THREEREFIRECOUNT { get; set; }
  1992. }
  1993. public class Result
  1994. {
  1995. public double 一车间 { get; set; }
  1996. public double 二车间 { get; set; }
  1997. public double 三车间 { get; set; }
  1998. }
  1999. }