rpt.ashx 180 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348
  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. int nodetype1;
  21. //主表
  22. if(context.Request["m"].ToString()=="0")
  23. {
  24. DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
  25. DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]).AddDays(1);
  26. DateTime dbegin = dateBegin;
  27. string totalMaster = context.Request["totalMaster"].ToString();
  28. string datestr = "";
  29. if (totalMaster == "YYYYMMDD") {
  30. datestr += " SELECT " + "'" + dateBegin.Year + "'||'" + (dateBegin.Month + "").PadLeft(2, '0') + "'||'" + (dateBegin.Day + "").PadLeft(2, '0') + "' AS 时间 FROM DUAL ";
  31. while (dbegin < dateEnd.AddDays(-1)) {
  32. dbegin = dbegin.AddDays(1);
  33. datestr += " UNION SELECT " + "'" + dbegin.Year + "'||'" + (dbegin.Month + "").PadLeft(2, '0') + "'||'" + (dbegin.Day + "").PadLeft(2, '0') + "' AS 时间 FROM DUAL ";
  34. }
  35. datestr += " UNION SELECT '合计' AS 时间 FROM DUAL ";
  36. } else if (totalMaster == "YYYYMM") {
  37. datestr += " SELECT " + "'" + dateBegin.Year + "'||'" + (dateBegin.Month + "").PadLeft(2, '0') + "' AS 时间 FROM DUAL ";
  38. //while (dbegin.Month < dateEnd.AddDays(-1).Month) {
  39. // dbegin = dbegin.AddMonths(1);
  40. // datestr += " UNION SELECT " + "'" + dbegin.Year + "'||'" + (dbegin.Month + "").PadLeft(2, '0') + "' AS 时间 FROM DUAL ";
  41. //}
  42. DateTime start = Convert.ToDateTime(dateBegin.ToShortDateString());
  43. DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());
  44. TimeSpan sp = end.Subtract(start);
  45. while (DateTime.DaysInMonth(dateEnd.AddDays(-1).Year,dateEnd.AddDays(-1).Month)< sp.Days + dateBegin.Day - 1) {
  46. dbegin = dbegin.AddMonths(1);
  47. sp = end.Subtract(Convert.ToDateTime(dbegin.ToShortDateString()));
  48. datestr += " UNION SELECT " + "'" + dbegin.Year + "'||'" + (dbegin.Month + "").PadLeft(2, '0') + "' AS 时间 FROM DUAL ";
  49. }
  50. datestr += " UNION SELECT '合计' AS 时间 FROM DUAL ";
  51. }
  52. string groutinglineId = context.Request["groutinglineMaster[]"] is object ? context.Request["groutinglineMaster[]"].ToString() : "0,0";
  53. if (groutinglineId == "0,0" && (context.Request["groutinglineMaster"] is object)) groutinglineId = context.Request["groutinglineMaster"].ToString();
  54. if (groutinglineId == "") groutinglineId = "0,0";
  55. string goodsId = context.Request["goodsMaster[]"] is object ? context.Request["goodsMaster[]"].ToString() : "0,0";
  56. if (goodsId == "0,0" && (context.Request["goodsMaster"] is object)) goodsId = context.Request["goodsMaster"].ToString();
  57. if (goodsId == "") goodsId = "0,0";
  58. string highFlag = context.Request["highFlagMaster"];
  59. if (highFlag == "") highFlag = "-1";
  60. string testType = context.Request["testMaster"];
  61. if (testType == "2") testType = "";
  62. string testFlagMaster = context.Request["testFlagMaster"];
  63. if (testFlagMaster == "2") testFlagMaster = "";
  64. string testmouldflag = " ";
  65. if (testType == "0")
  66. {
  67. //testmouldflag = " AND GDD.TESTMOULDFLAG = '0' ";
  68. testmouldflag = @" AND ((0 = 0 AND GDD.TESTMOULDFLAG = 0 AND (GDD.TESTFORMFLAG IN(0,1) OR GDD.TESTFORMFLAG IS NULL ) ) ";
  69. }
  70. else if (testType == "1")
  71. {
  72. //testmouldflag = " AND GDD.TESTMOULDFLAG = '1' ";
  73. testmouldflag = " AND (1 = 1 AND (GDD.TESTFORMFLAG = 2 OR GDD.TESTMOULDFLAG = 1)) ";
  74. }
  75. string testflagmaster = " ";
  76. if (testFlagMaster == "0")
  77. {
  78. testflagmaster = " AND GDD.TESTFLAG = '0' ";
  79. }
  80. else if (testFlagMaster == "1")
  81. {
  82. testflagmaster = " AND GDD.TESTFLAG = '1' ";
  83. }
  84. //读取报表数据
  85. string sqlStr = @"
  86. WITH
  87. 拼接日期 AS
  88. ({DATESTR}),
  89. 注浆数 AS
  90. (
  91. SELECT
  92. GROUPING_ID (TO_CHAR(GH.CREATETIME, 'YYYYMM')) AS GID,
  93. NVL(TO_CHAR(GH.CREATETIME, 'YYYYMM'),'合计') AS 时间,
  94. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  95. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 AND GH.DATATYPE = 1 THEN 1 ELSE
  96. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  97. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 AND GH.DATATYPE != 1 THEN -1 END
  98. END) AS 注浆数_一部全部,
  99. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  100. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 AND GH.DATATYPE = 1 THEN 1 ELSE
  101. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  102. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 AND GH.DATATYPE != 1 THEN -1 END
  103. END ) AS 注浆数_二部全部,
  104. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 AND GH.DATATYPE = 1 THEN 1 ELSE
  105. CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 AND GH.DATATYPE != 1 THEN -1 END
  106. END ) 注浆数_三部全部
  107. FROM TP_PM_GOODSCHANGEHISTORY GH
  108. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  109. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  110. INNER JOIN TP_MST_USER U
  111. ON U.USERID = GH.USERID
  112. INNER JOIN TP_MST_GOODS G
  113. ON G.GOODSID = GH.GOODSID
  114. INNER JOIN TP_MST_GOODSTYPE GT
  115. ON G.GOODSTYPEID = GT.GOODSTYPEID
  116. INNER JOIN TP_PC_GROUTINGLINE GL
  117. ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  118. WHERE GH.CREATETIME >= @DATEBEGIN@
  119. AND GH.CREATETIME < @DATEEND@
  120. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  121. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  122. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  123. {TESTMOULDFLAG}
  124. {TESTFLAG}
  125. AND GH.DATATYPE IN (1, 2)
  126. AND G.SCRAPSUMFLAG = '1'
  127. GROUP BY GROUPING SETS (TO_CHAR(GH.CREATETIME, 'YYYYMM'),())
  128. ),
  129. 成型报损 AS
  130. (
  131. SELECT
  132. GROUPING_ID (TO_CHAR(GH.CREATETIME, 'YYYYMM')) AS GID,
  133. NVL(TO_CHAR(GH.CREATETIME, 'YYYYMM'),'合计') AS 时间,
  134. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  135. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 AND GH.DATATYPE = 3 THEN 1 ELSE
  136. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  137. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 AND GH.DATATYPE != 3 THEN -1 END
  138. END) AS 成型报损_一部全部,
  139. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  140. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 AND GH.DATATYPE = 3 THEN 1 ELSE
  141. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  142. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 AND GH.DATATYPE != 3 THEN -1 END
  143. END ) AS 成型报损_二部全部,
  144. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 AND GH.DATATYPE = 3 THEN 1 ELSE
  145. CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 AND GH.DATATYPE != 3 THEN -1 END
  146. END ) 成型报损_三部全部
  147. FROM
  148. TP_PM_GOODSCHANGEHISTORY GH
  149. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  150. INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID
  151. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID
  152. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  153. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  154. WHERE
  155. GH.CREATETIME >= @DATEBEGIN@
  156. AND GH.CREATETIME < @DATEEND@
  157. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  158. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  159. AND (@HIGHPRESSUREFLAG@ = '-1' OR GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ )
  160. {TESTMOULDFLAG}
  161. {TESTFLAG}
  162. AND GH.DATATYPE IN ( 3, 4 )
  163. AND G.SCRAPSUMFLAG = '1'
  164. GROUP BY GROUPING SETS (TO_CHAR(GH.CREATETIME, 'YYYYMM'),())
  165. ),
  166. 半检不合格 AS
  167. (
  168. SELECT
  169. GROUPING_ID (T.时间) AS GID,
  170. NVL(T.时间,'合计') AS 时间,
  171. SUM(T.一车间) 半检不合格_一部全部,
  172. SUM(T.二车间) 半检不合格_二部全部,
  173. SUM(T.三车间) 半检不合格_三部全部
  174. FROM(
  175. SELECT
  176. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  177. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1 ELSE 0
  178. END) AS 一车间,
  179. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  180. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 1 ELSE 0
  181. END ) AS 二车间,
  182. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 1 ELSE 0
  183. END ) 三车间,
  184. TO_CHAR(SP.AUDITDATE, 'YYYYMM') 时间
  185. FROM
  186. TP_PM_SCRAPPRODUCT SP
  187. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  188. AND HGDI.ITEMTYPE = 2
  189. AND HGDI.ITEMID = SP.PROCEDUREID
  190. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  191. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  192. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  193. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  194. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  195. WHERE
  196. SP.AUDITSTATUS = 1
  197. AND SP.AUDITDATE >= @DATEBEGIN@
  198. AND SP.AUDITDATE < @DATEEND@
  199. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  200. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  201. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  202. {TESTMOULDFLAG}
  203. {TESTFLAG}
  204. AND SP.SCRAPTYPE IN (2)
  205. GROUP BY TO_CHAR(SP.AUDITDATE, 'YYYYMM')
  206. UNION ALL-- 工序报损撤销
  207. SELECT
  208. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  209. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN -1 ELSE 0
  210. END) AS 一车间,
  211. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  212. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN -1 ELSE 0
  213. END ) AS 二车间,
  214. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN -1 ELSE 0
  215. END ) 三车间,
  216. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') 时间
  217. FROM
  218. TP_PM_SCRAPPRODUCT SP
  219. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  220. AND HGDI.ITEMTYPE = 2
  221. AND HGDI.ITEMID = SP.PROCEDUREID
  222. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  223. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  224. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  225. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  226. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  227. WHERE
  228. SP.AUDITSTATUS = 1
  229. AND SP.VALUEFLAG = '0'
  230. AND SP.SCRAPTYPE IN (2)
  231. AND SP.BACKOUTTIME >= @DATEBEGIN@
  232. AND SP.BACKOUTTIME < @DATEEND@
  233. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  234. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  235. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  236. {TESTMOULDFLAG}
  237. {TESTFLAG}
  238. GROUP BY TO_CHAR(SP.BACKOUTTIME, 'YYYYMM')
  239. -- AND SP.SCRAPTYPE IN (0, 2, 3)
  240. UNION ALL
  241. -- 干补报损
  242. ---------------------------------------------------
  243. SELECT
  244. COUNT(CASE WHEN WORKSHOP = 1 THEN 1 ELSE 0 END) 一车间,
  245. COUNT(CASE WHEN WORKSHOP = 2 THEN 1 ELSE 0 END) 二车间,
  246. COUNT(CASE WHEN WORKSHOP = 3 THEN 1 ELSE 0 END) 三车间,
  247. TO_CHAR(AUDITDATE, 'YYYYMM') 时间
  248. --COUNT( * ) SCRAPNUM
  249. FROM
  250. (
  251. SELECT
  252. SP.GOODSCODE,
  253. GDD.MATERIALCODE SAPCODE,
  254. PD.USERCODE,
  255. CASE
  256. WHEN HGDI.WORKSHOP = 2
  257. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  258. 1
  259. WHEN HGDI.WORKSHOP = 2
  260. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  261. 2
  262. WHEN HGDI.WORKSHOP = 3 THEN
  263. 3 ELSE 4
  264. END AS WORKSHOP,
  265. GDD.TESTMOULDFLAG,
  266. G.GOODS_LINE_CODE,
  267. SP.AUDITDATE,
  268. TO_CHAR( SP.AUDITDATE, 'yymm' ) || '5000E' AS CHARG --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  269. FROM
  270. (
  271. SELECT
  272. T.*
  273. FROM
  274. (
  275. SELECT
  276. SP.BARCODE,
  277. SP.GOODSCODE,
  278. SP.GROUTINGDAILYDETAILID,
  279. PD.PROCEDUREID,
  280. PD.PRODUCTIONDATAID,
  281. SP.AUDITDATE,
  282. RANK ( ) OVER ( PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC ) AS RK
  283. FROM
  284. TP_PM_SCRAPPRODUCT SP
  285. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE -- 不包含干补工序
  286. AND PD.PROCEDUREID <> 18 -- 要找干补之前的工序
  287. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  288. AND PD.VALUEFLAG = '1'
  289. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  290. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  291. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  292. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  293. WHERE
  294. SP.AUDITSTATUS = 1
  295. AND SP.PROCEDUREID = 18
  296. AND SP.SCRAPTYPE IN (2)
  297. AND SP.AUDITDATE >= @DATEBEGIN@
  298. AND SP.AUDITDATE < @DATEEND@
  299. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  300. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  301. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  302. {TESTMOULDFLAG}
  303. {TESTFLAG}
  304. ) T
  305. WHERE
  306. T.RK <= 1
  307. ) SP
  308. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  309. AND HGDI.ITEMTYPE = 2
  310. AND HGDI.ITEMID = SP.PROCEDUREID
  311. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  312. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  313. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  314. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  315. ) GROUP BY TO_CHAR(AUDITDATE, 'YYYYMM') )T GROUP BY
  316. GROUPING SETS ( T.时间, ( ) )
  317. ),
  318. 复检不合格 AS
  319. (
  320. SELECT
  321. GROUPING_ID (T.时间) AS GID,
  322. NVL(T.时间,'合计') AS 时间,
  323. SUM(T.一车间) 复检不合格_一部全部,
  324. SUM(T.二车间) 复检不合格_二部全部,
  325. SUM(T.三车间) 复检不合格_三部全部
  326. FROM(
  327. SELECT
  328. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  329. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1 ELSE 0
  330. END) AS 一车间,
  331. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  332. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 1 ELSE 0
  333. END ) AS 二车间,
  334. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 1 ELSE 0
  335. END ) 三车间,
  336. TO_CHAR(SP.AUDITDATE, 'YYYYMM') 时间
  337. FROM
  338. TP_PM_SCRAPPRODUCT SP
  339. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  340. AND HGDI.ITEMTYPE = 2
  341. AND HGDI.ITEMID = SP.PROCEDUREID
  342. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  343. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  344. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  345. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  346. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  347. WHERE
  348. SP.AUDITSTATUS = 1
  349. AND SP.AUDITDATE >= @DATEBEGIN@
  350. AND SP.AUDITDATE < @DATEEND@
  351. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  352. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  353. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  354. {TESTMOULDFLAG}
  355. {TESTFLAG}
  356. AND SP.SCRAPTYPE IN (3)
  357. GROUP BY TO_CHAR(SP.AUDITDATE, 'YYYYMM')
  358. UNION ALL-- 工序报损撤销
  359. SELECT
  360. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  361. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN -1 ELSE 0
  362. END) AS 一车间,
  363. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  364. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN -1 ELSE 0
  365. END ) AS 二车间,
  366. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN -1 ELSE 0
  367. END ) 三车间,
  368. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') 时间
  369. FROM
  370. TP_PM_SCRAPPRODUCT SP
  371. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  372. AND HGDI.ITEMTYPE = 2
  373. AND HGDI.ITEMID = SP.PROCEDUREID
  374. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  375. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  376. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  377. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  378. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  379. WHERE
  380. SP.AUDITSTATUS = 1
  381. AND SP.VALUEFLAG = '0'
  382. AND SP.SCRAPTYPE IN (3)
  383. AND SP.BACKOUTTIME >= @DATEBEGIN@
  384. AND SP.BACKOUTTIME < @DATEEND@
  385. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  386. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  387. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  388. {TESTMOULDFLAG}
  389. {TESTFLAG}
  390. GROUP BY TO_CHAR(SP.BACKOUTTIME, 'YYYYMM')
  391. -- AND SP.SCRAPTYPE IN (0, 2, 3)
  392. UNION ALL
  393. -- 干补报损
  394. ---------------------------------------------------
  395. SELECT
  396. COUNT(CASE WHEN WORKSHOP = 1 THEN 1 ELSE 0 END) 一车间,
  397. COUNT(CASE WHEN WORKSHOP = 2 THEN 1 ELSE 0 END) 二车间,
  398. COUNT(CASE WHEN WORKSHOP = 3 THEN 1 ELSE 0 END) 三车间,
  399. TO_CHAR(AUDITDATE, 'YYYYMM') 时间
  400. FROM
  401. (
  402. SELECT
  403. SP.GOODSCODE,
  404. GDD.MATERIALCODE SAPCODE,
  405. PD.USERCODE,
  406. CASE
  407. WHEN HGDI.WORKSHOP = 2
  408. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  409. 1
  410. WHEN HGDI.WORKSHOP = 2
  411. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  412. 2
  413. WHEN HGDI.WORKSHOP = 3 THEN
  414. 3 ELSE 4
  415. END AS WORKSHOP,
  416. GDD.TESTMOULDFLAG,
  417. G.GOODS_LINE_CODE,
  418. SP.AUDITDATE
  419. FROM
  420. (
  421. SELECT
  422. T.*
  423. FROM
  424. (
  425. SELECT
  426. SP.BARCODE,
  427. SP.GOODSCODE,
  428. SP.GROUTINGDAILYDETAILID,
  429. PD.PROCEDUREID,
  430. PD.PRODUCTIONDATAID,
  431. SP.AUDITDATE,
  432. RANK ( ) OVER ( PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC ) AS RK
  433. FROM
  434. TP_PM_SCRAPPRODUCT SP
  435. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE -- 不包含干补工序
  436. AND PD.PROCEDUREID <> 18 -- 要找干补之前的工序
  437. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  438. AND PD.VALUEFLAG = '1'
  439. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  440. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  441. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  442. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  443. WHERE
  444. SP.AUDITSTATUS = 1
  445. AND SP.PROCEDUREID = 18
  446. AND SP.SCRAPTYPE IN (3)
  447. AND SP.AUDITDATE >= @DATEBEGIN@
  448. AND SP.AUDITDATE < @DATEEND@
  449. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  450. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  451. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  452. {TESTMOULDFLAG}
  453. {TESTFLAG}
  454. ) T
  455. WHERE
  456. T.RK <= 1
  457. ) SP
  458. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  459. AND HGDI.ITEMTYPE = 2
  460. AND HGDI.ITEMID = SP.PROCEDUREID
  461. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  462. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  463. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  464. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  465. ) GROUP BY TO_CHAR(AUDITDATE, 'YYYYMM')
  466. )T GROUP BY
  467. GROUPING SETS ( T.时间, ( ) )
  468. ),
  469. 半成品损坯数 AS
  470. (
  471. SELECT
  472. GROUPING_ID (T.时间) AS GID,
  473. NVL(T.时间,'合计') AS 时间,
  474. SUM(T.一车间) 半成品损坯数_一部全部,
  475. SUM(T.二车间) 半成品损坯数_二部全部,
  476. SUM(T.三车间) 半成品损坯数_三部全部
  477. FROM(
  478. SELECT
  479. SUM( CASE WHEN HGDI.WORKSHOP = 2
  480. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  481. 1 ELSE 0
  482. END) AS 一车间,
  483. SUM(CASE WHEN HGDI.WORKSHOP = 2
  484. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  485. 1 ELSE 0
  486. END ) AS 二车间,
  487. SUM(CASE WHEN HGDI.WORKSHOP = 3 THEN 1 ELSE 0
  488. END ) 三车间,
  489. TO_CHAR(SP.AUDITDATE, 'YYYYMM') 时间
  490. FROM
  491. TP_PM_SCRAPPRODUCT SP
  492. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  493. AND HGDI.ITEMTYPE = 2
  494. AND HGDI.ITEMID = SP.PROCEDUREID
  495. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  496. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  497. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  498. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  499. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  500. WHERE
  501. SP.AUDITSTATUS = 1
  502. AND SP.AUDITDATE >= @DATEBEGIN@
  503. AND SP.AUDITDATE < @DATEEND@
  504. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  505. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  506. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  507. {TESTMOULDFLAG}
  508. {TESTFLAG}
  509. AND SP.SCRAPTYPE IN (0)
  510. GROUP BY TO_CHAR(SP.AUDITDATE, 'YYYYMM')
  511. UNION ALL-- 工序报损撤销
  512. SELECT
  513. SUM( CASE WHEN HGDI.WORKSHOP = 2
  514. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  515. -1 ELSE 0
  516. END) AS 一车间,
  517. SUM(CASE WHEN HGDI.WORKSHOP = 2
  518. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  519. -1 ELSE 0
  520. END ) AS 二车间,
  521. SUM(CASE WHEN HGDI.WORKSHOP = 3 THEN -1 ELSE 0
  522. END ) 三车间,
  523. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') 时间
  524. FROM
  525. TP_PM_SCRAPPRODUCT SP
  526. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  527. AND HGDI.ITEMTYPE = 2
  528. AND HGDI.ITEMID = SP.PROCEDUREID
  529. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  530. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  531. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  532. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  533. WHERE
  534. SP.AUDITSTATUS = 1
  535. AND SP.VALUEFLAG = '0'
  536. AND SP.SCRAPTYPE IN (0)
  537. AND SP.BACKOUTTIME >= @DATEBEGIN@
  538. AND SP.BACKOUTTIME < @DATEEND@ -- AND SP.SCRAPTYPE IN (0, 2, 3)
  539. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  540. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  541. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  542. {TESTMOULDFLAG}
  543. {TESTFLAG}
  544. GROUP BY TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') UNION ALL
  545. -- 干补报损
  546. ---------------------------------------------------
  547. SELECT
  548. SUM(CASE WHEN WORKSHOP = 1 THEN 1 ELSE 0 END) 一车间,
  549. SUM(CASE WHEN WORKSHOP = 2 THEN 1 ELSE 0 END) 二车间,
  550. SUM(CASE WHEN WORKSHOP = 3 THEN 1 ELSE 0 END) 三车间,
  551. TO_CHAR(AUDITDATE, 'YYYYMM') 时间
  552. FROM
  553. (
  554. SELECT
  555. SP.GOODSCODE,
  556. GDD.MATERIALCODE SAPCODE,
  557. PD.USERCODE,
  558. CASE
  559. WHEN HGDI.WORKSHOP = 2
  560. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  561. 1
  562. WHEN HGDI.WORKSHOP = 2
  563. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  564. 2
  565. WHEN HGDI.WORKSHOP = 3 THEN
  566. 3 ELSE 4
  567. END AS WORKSHOP,
  568. GDD.TESTMOULDFLAG,
  569. G.GOODS_LINE_CODE,
  570. SP.AUDITDATE
  571. FROM
  572. (
  573. SELECT
  574. T.*
  575. FROM
  576. (
  577. SELECT
  578. SP.BARCODE,
  579. SP.GOODSCODE,
  580. SP.GROUTINGDAILYDETAILID,
  581. PD.PROCEDUREID,
  582. PD.PRODUCTIONDATAID,
  583. SP.AUDITDATE,
  584. RANK ( ) OVER ( PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC ) AS RK
  585. FROM
  586. TP_PM_SCRAPPRODUCT SP
  587. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE -- 不包含干补工序
  588. AND PD.PROCEDUREID <> 18 -- 要找干补之前的工序
  589. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  590. AND PD.VALUEFLAG = '1'
  591. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  592. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  593. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  594. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  595. WHERE
  596. SP.AUDITSTATUS = 1
  597. AND SP.PROCEDUREID = 18
  598. AND SP.SCRAPTYPE IN (0)
  599. AND SP.AUDITDATE >= @DATEBEGIN@
  600. AND SP.AUDITDATE < @DATEEND@
  601. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  602. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  603. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  604. {TESTMOULDFLAG}
  605. {TESTFLAG}
  606. ) T
  607. WHERE
  608. T.RK <= 1
  609. ) SP
  610. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  611. AND HGDI.ITEMTYPE = 2
  612. AND HGDI.ITEMID = SP.PROCEDUREID
  613. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  614. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  615. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  616. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  617. ) GROUP BY TO_CHAR(AUDITDATE, 'YYYYMM')
  618. )T GROUP BY
  619. GROUPING SETS ( T.时间, ( ) )
  620. ),
  621. 干补回收数 AS
  622. (
  623. SELECT
  624. GROUPING_ID (T.时间) AS GID,
  625. NVL(T.时间,'合计') AS 时间,
  626. SUM(T.一车间) 干补回收数_一部全部,
  627. SUM(T.二车间) 干补回收数_二部全部,
  628. SUM(T.三车间) 干补回收数_三部全部
  629. FROM(
  630. SELECT
  631. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  632. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1 ELSE 0
  633. END) AS 一车间,
  634. SUM(CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  635. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 1 ELSE 0
  636. END ) AS 二车间,
  637. SUM(CASE WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 1 ELSE 0
  638. END ) 三车间,
  639. TO_CHAR(SP.SPECIALREPAIRTIME, 'YYYYMM') 时间
  640. FROM
  641. TP_PM_SCRAPPRODUCT SP
  642. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( '20', '30', '40' )
  643. AND HGDI.ITEMTYPE = 2
  644. AND HGDI.ITEMID = SP.PROCEDUREID
  645. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  646. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  647. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  648. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  649. WHERE
  650. SP.AUDITSTATUS = 1
  651. AND SP.GOODSLEVELTYPEID = 9
  652. AND SP.SPECIALREPAIRTIME >= @DATEBEGIN@
  653. AND SP.SPECIALREPAIRTIME < @DATEEND@
  654. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  655. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  656. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  657. {TESTMOULDFLAG}
  658. {TESTFLAG}
  659. GROUP BY TO_CHAR(SP.SPECIALREPAIRTIME, 'YYYYMM'))T GROUP BY
  660. GROUPING SETS ( T.时间, ( ) )
  661. ),
  662. 出窑数 AS
  663. (
  664. SELECT
  665. GROUPING_ID (TT2.时间) AS GID,
  666. NVL(TT2.时间,'合计') AS 时间,
  667. SUM(TT2.出窑数_一部全部) 出窑数_一部全部,
  668. SUM(TT2.出窑数_二部全部) 出窑数_二部全部,
  669. SUM(TT2.出窑数_三部全部) 出窑数_三部全部
  670. FROM(
  671. SELECT
  672. TO_CHAR(TT.CREATETIME, 'YYYYMM') AS 时间,
  673. SUM(CASE WHEN TT.WORKSHOP = 1 THEN 1 ELSE 0 END) 出窑数_一部全部,
  674. SUM(CASE WHEN TT.WORKSHOP = 2 THEN 1 ELSE 0 END) 出窑数_二部全部,
  675. SUM(CASE WHEN TT.WORKSHOP = 3 THEN 1 ELSE 0 END) 出窑数_三部全部
  676. FROM(
  677. SELECT CASE
  678. WHEN T.IS3 > 0 THEN
  679. 3
  680. WHEN INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  681. 1
  682. WHEN INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  683. 2
  684. ELSE
  685. 2
  686. END AS WORKSHOP,
  687. T.*
  688. FROM (SELECT DISTINCT PD.BARCODE,
  689. PD.GOODSCODE,
  690. PD.CREATETIME,
  691. GDD.MATERIALCODE SAPCODE,
  692. PD.USERCODE,
  693. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  694. G.GOODS_LINE_CODE,
  695. TO_CHAR(PD.CREATETIME, 'yymm') || '5000E' AS CHARG,
  696. --TO_CHAR(PD.CREATETIME, 'yyyymm') AS CHARG,
  697. HGDI.WORKSHOP AS HGDIWORKSHOP,
  698. GT.GOODSTYPECODE,
  699. -- 如果3#卸窑(103),就是3车间的
  700. (SELECT COUNT(1)
  701. FROM TP_PM_PRODUCTIONDATA PD2
  702. WHERE PD2.BARCODE = PD.BARCODE
  703. AND PD2.PROCEDUREID = 103) AS IS3
  704. FROM TP_PM_PRODUCTIONDATA PD
  705. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  706. ON HGDI.DATACODE = '50'
  707. AND HGDI.ITEMTYPE = 1
  708. AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判)
  709. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  710. ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  711. INNER JOIN TP_MST_GOODS G
  712. ON G.GOODSID = PD.GOODSID
  713. INNER JOIN TP_MST_GOODSTYPE GT
  714. ON G.GOODSTYPEID = GT.GOODSTYPEID
  715. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  716. WHERE PD.CREATETIME >= @DATEBEGIN@
  717. AND PD.CREATETIME < @DATEEND@
  718. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  719. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  720. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  721. {TESTMOULDFLAG}
  722. {TESTFLAG}
  723. AND PD.ISREFIRE = '0'
  724. AND PD.Islengbu = '0'
  725. --AND PD.KILNID IN(1,2,5)-- 取本烧的窑炉
  726. --AND ((HGDI.ITEMID <> 104 AND PD.VALUEFLAG = '1') OR
  727. -- (HGDI.ITEMID = 104 AND PD.ISREFIRE = '0' AND
  728. -- PD.CHECKFLAG = '1'))) T
  729. AND ((HGDI.ITEMID = 11 AND (PD.CHECKFLAG = '1' OR PD.CHECKFLAG IS NULL))
  730. OR (HGDI.ITEMID = 104 AND PD.CHECKFLAG = '1')) ) T )TT
  731. GROUP BY TO_CHAR(TT.CREATETIME, 'YYYYMM') )TT2 GROUP BY
  732. GROUPING SETS ( TT2.时间, ( ) )
  733. ),
  734. 回收数 AS
  735. (
  736. SELECT
  737. GROUPING_ID (TT2.时间) AS GID,
  738. NVL(TT2.时间,'合计') AS 时间,
  739. SUM(TT2.回收数_一部全部) 回收数_一部全部,
  740. SUM(TT2.回收数_二部全部) 回收数_二部全部,
  741. SUM(TT2.回收数_三部全部) 回收数_三部全部
  742. FROM(
  743. SELECT
  744. TT.CHARG AS 时间,
  745. SUM(CASE WHEN TT.WORKSHOP = 1 AND TT.RECYCLINGFLAG = '1' THEN 1 ELSE 0 END) 回收数_一部全部,
  746. SUM(CASE WHEN TT.WORKSHOP = 2 AND TT.RECYCLINGFLAG = '1' THEN 1 ELSE 0 END) 回收数_二部全部,
  747. SUM(CASE WHEN TT.WORKSHOP = 3 AND TT.RECYCLINGFLAG = '1' THEN 1 ELSE 0 END) 回收数_三部全部
  748. FROM(
  749. SELECT BAR.GOODSCODE,
  750. BAR.MATERIALCODE SAPCODE,
  751. GH.FHUSERCODE USERCODE,
  752. O.ORDERNO,
  753. BAR.RECYCLINGFLAG,
  754. BAR.TESTMOULDFLAG,
  755. DECODE(BAR.TESTMOULDFLAG
  756. ,'0'
  757. ,''
  758. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  759. CASE
  760. WHEN O.ORDERID IS NULL
  761. OR O.ORDERNO LIKE 'HEGII%' THEN
  762. ' '
  763. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  764. TO_CHAR(O.ORDERNO)
  765. ELSE
  766. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  767. END ORDERCODE -- 销售凭证
  768. ,
  769. CASE
  770. WHEN O.ORDERID IS NULL
  771. OR O.ORDERNO LIKE 'HEGII%'
  772. OR INSTR(O.ORDERNO, '/') = 0 THEN
  773. '0'
  774. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  775. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  776. ELSE
  777. TO_CHAR(SUBSTR(O.ORDERNO
  778. ,INSTR(O.ORDERNO, '/') + 1
  779. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  780. END ORDERITEM,
  781. CASE
  782. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  783. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  784. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  785. 1
  786. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  787. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  788. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  789. 2
  790. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  791. 3
  792. ELSE
  793. 0
  794. END AS WORKSHOP,
  795. TO_CHAR(GH.FHTIME, 'YYYYMM') AS CHARG
  796. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  797. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  798. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  799. INNER JOIN TP_MST_GOODS G
  800. ON G.GOODSID = BAR.GOODSID
  801. INNER JOIN TP_MST_GOODSTYPE GT
  802. ON GT.GOODSTYPEID = G.GOODSTYPEID
  803. LEFT JOIN TP_PM_ORDER O
  804. ON O.ORDERID = GH.FHORDERID
  805. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  806. ON GDD.GROUTINGDAILYDETAILID = BAR.GROUTINGDAILYDETAILID
  807. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  808. WHERE GH.FHUSERID IS NOT NULL
  809. AND GH.FHTIME >= @DATEBEGIN@
  810. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  811. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  812. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  813. {TESTMOULDFLAG}
  814. {TESTFLAG}
  815. AND GH.FHTIME < @DATEEND@ )TT GROUP BY TT.CHARG )TT2 GROUP BY
  816. GROUPING SETS ( TT2.时间, ( ) )
  817. ),
  818. 入库数 AS
  819. (
  820. SELECT
  821. GROUPING_ID (TT2.时间) AS GID,
  822. NVL(TT2.时间,'合计') AS 时间,
  823. SUM(TT2.入库数_一部全部) 入库数_一部全部,
  824. SUM(TT2.入库数_二部全部) 入库数_二部全部,
  825. SUM(TT2.入库数_三部全部) 入库数_三部全部
  826. FROM(
  827. SELECT
  828. TT.CHARG AS 时间,
  829. SUM(CASE WHEN TT.WORKSHOP = 1 AND TT.RECYCLINGFLAG = '0' THEN 1 ELSE 0 END) 入库数_一部全部,
  830. SUM(CASE WHEN TT.WORKSHOP = 2 AND TT.RECYCLINGFLAG = '0' THEN 1 ELSE 0 END) 入库数_二部全部,
  831. SUM(CASE WHEN TT.WORKSHOP = 3 AND TT.RECYCLINGFLAG = '0' THEN 1 ELSE 0 END) 入库数_三部全部
  832. FROM(
  833. SELECT BAR.GOODSCODE,
  834. BAR.MATERIALCODE SAPCODE,
  835. GH.FHUSERCODE USERCODE,
  836. O.ORDERNO,
  837. BAR.RECYCLINGFLAG,
  838. BAR.TESTMOULDFLAG,
  839. DECODE(BAR.TESTMOULDFLAG
  840. ,'0'
  841. ,''
  842. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  843. CASE
  844. WHEN O.ORDERID IS NULL
  845. OR O.ORDERNO LIKE 'HEGII%' THEN
  846. ' '
  847. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  848. TO_CHAR(O.ORDERNO)
  849. ELSE
  850. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  851. END ORDERCODE -- 销售凭证
  852. ,
  853. CASE
  854. WHEN O.ORDERID IS NULL
  855. OR O.ORDERNO LIKE 'HEGII%'
  856. OR INSTR(O.ORDERNO, '/') = 0 THEN
  857. '0'
  858. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  859. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  860. ELSE
  861. TO_CHAR(SUBSTR(O.ORDERNO
  862. ,INSTR(O.ORDERNO, '/') + 1
  863. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  864. END ORDERITEM,
  865. CASE
  866. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  867. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  868. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  869. 1
  870. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  871. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  872. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  873. 2
  874. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  875. 3
  876. ELSE
  877. 0
  878. END AS WORKSHOP,
  879. TO_CHAR(GH.FHTIME, 'YYYYMM') AS CHARG
  880. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  881. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  882. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  883. INNER JOIN TP_MST_GOODS G
  884. ON G.GOODSID = BAR.GOODSID
  885. INNER JOIN TP_MST_GOODSTYPE GT
  886. ON GT.GOODSTYPEID = G.GOODSTYPEID
  887. LEFT JOIN TP_PM_ORDER O
  888. ON O.ORDERID = GH.FHORDERID
  889. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  890. ON GDD.GROUTINGDAILYDETAILID = BAR.GROUTINGDAILYDETAILID
  891. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  892. WHERE GH.FHUSERID IS NOT NULL
  893. AND GH.FHTIME >= @DATEBEGIN@
  894. AND GH.FHTIME < @DATEEND@
  895. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  896. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  897. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  898. {TESTMOULDFLAG}
  899. {TESTFLAG}
  900. )TT GROUP BY TT.CHARG)TT2 GROUP BY
  901. GROUPING SETS ( TT2.时间, ( ) )
  902. ),
  903. 质量登记次品数 AS
  904. (
  905. SELECT
  906. GROUPING_ID (TT2.时间) AS GID,
  907. NVL(TT2.时间,'合计') AS 时间,
  908. SUM(TT2.质量登记次品数_一部全部) 质量登记次品数_一部全部,
  909. SUM(TT2.质量登记次品数_二部全部) 质量登记次品数_二部全部,
  910. SUM(TT2.质量登记次品数_三部全部) 质量登记次品数_三部全部
  911. FROM(
  912. SELECT
  913. TT.CHARG AS 时间,
  914. SUM(CASE WHEN TT.WORKSHOP = 1 THEN SCRAPNUM ELSE 0 END) 质量登记次品数_一部全部,
  915. SUM(CASE WHEN TT.WORKSHOP = 2 THEN SCRAPNUM ELSE 0 END) 质量登记次品数_二部全部,
  916. SUM(CASE WHEN TT.WORKSHOP = 3 THEN SCRAPNUM ELSE 0 END) 质量登记次品数_三部全部
  917. FROM(
  918. SELECT GOODSCODE,
  919. SAPCODE,
  920. USERCODE,
  921. 0 OUTPUTNUM,
  922. COUNT(*) SCRAPNUM,
  923. 0 CLEANUPNUM,
  924. 0 REPAIRNUM,
  925. WORKSHOP,
  926. TESTMOULDFLAG,
  927. GOODS_LINE_CODE,
  928. CHARG
  929. FROM (SELECT CASE
  930. WHEN T.IS3 > 0 THEN
  931. 3
  932. WHEN T.HGDIWORKSHOP = 2
  933. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  934. 1
  935. WHEN T.HGDIWORKSHOP = 2
  936. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  937. 2
  938. WHEN T.HGDIWORKSHOP = 3 THEN
  939. 3
  940. ELSE
  941. 2
  942. END AS WORKSHOP,
  943. T.*
  944. FROM (SELECT SP.BARCODE,
  945. SP.GOODSCODE,
  946. GDD.MATERIALCODE SAPCODE,
  947. PD.USERCODE,
  948. GT.GOODSTYPECODE,
  949. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  950. G.GOODS_LINE_CODE,
  951. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG,
  952. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  953. HGDI.WORKSHOP AS HGDIWORKSHOP,
  954. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  955. (SELECT COUNT(1)
  956. FROM TP_PM_PRODUCTIONDATA PD2
  957. WHERE PD2.BARCODE = PD.BARCODE
  958. AND PD2.PROCEDUREID = 103
  959. -- 重烧相关的ID
  960. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  961. FROM TP_PM_SCRAPPRODUCT SP
  962. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  963. ON HGDI.DATACODE = '50'
  964. AND HGDI.ITEMTYPE = 2
  965. AND HGDI.ITEMID = SP.PROCEDUREID
  966. INNER JOIN TP_PM_PRODUCTIONDATA PD
  967. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  968. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  969. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  970. INNER JOIN TP_MST_GOODS G
  971. ON G.GOODSID = PD.GOODSID
  972. INNER JOIN TP_MST_GOODSTYPE GT
  973. ON G.GOODSTYPEID = GT.GOODSTYPEID
  974. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  975. WHERE SP.AUDITSTATUS = 1
  976. AND SP.AUDITDATE >= @DATEBEGIN@
  977. AND SP.AUDITDATE < @DATEEND@
  978. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  979. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  980. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  981. {TESTMOULDFLAG}
  982. {TESTFLAG}
  983. AND PD.ISREFIRE = 0
  984. AND SP.GOODSLEVELTYPEID in (7)
  985. --AND SP.SCRAPTYPE = 1
  986. --AND SP.SCRAPTYPE IN (0, 2, 3)
  987. ) T)
  988. GROUP BY GOODSCODE,
  989. SAPCODE,
  990. USERCODE,
  991. WORKSHOP,
  992. TESTMOULDFLAG,
  993. GOODS_LINE_CODE,
  994. CHARG
  995. ---------------------------------------------------
  996. UNION ALL
  997. -- 工序报损撤销
  998. ---------------------------------------------------
  999. SELECT GOODSCODE,
  1000. SAPCODE,
  1001. USERCODE,
  1002. 0 OUTPUTNUM,
  1003. 0 - COUNT(*) SCRAPNUM,
  1004. 0 CLEANUPNUM,
  1005. 0 REPAIRNUM,
  1006. WORKSHOP,
  1007. TESTMOULDFLAG,
  1008. GOODS_LINE_CODE,
  1009. CHARG
  1010. FROM (SELECT CASE
  1011. WHEN T.IS3 > 0 THEN
  1012. 3
  1013. WHEN T.HGDIWORKSHOP = 2
  1014. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1015. 1
  1016. WHEN T.HGDIWORKSHOP = 2
  1017. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1018. 2
  1019. WHEN T.HGDIWORKSHOP = 3 THEN
  1020. 3
  1021. ELSE
  1022. 2
  1023. END AS WORKSHOP,
  1024. T.*
  1025. FROM (SELECT SP.BARCODE,
  1026. SP.GOODSCODE,
  1027. GDD.MATERIALCODE SAPCODE,
  1028. PD.USERCODE,
  1029. GT.GOODSTYPECODE,
  1030. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1031. G.GOODS_LINE_CODE,
  1032. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') AS CHARG,
  1033. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1034. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1035. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1036. (SELECT COUNT(1)
  1037. FROM TP_PM_PRODUCTIONDATA PD2
  1038. WHERE PD2.BARCODE = PD.BARCODE
  1039. AND PD2.PROCEDUREID = 103
  1040. -- 重烧相关的ID
  1041. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1042. FROM TP_PM_SCRAPPRODUCT SP
  1043. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1044. ON HGDI.DATACODE = '50'
  1045. AND HGDI.ITEMTYPE = 2
  1046. AND HGDI.ITEMID = SP.PROCEDUREID
  1047. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1048. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1049. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1050. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1051. INNER JOIN TP_MST_GOODS G
  1052. ON G.GOODSID = PD.GOODSID
  1053. INNER JOIN TP_MST_GOODSTYPE GT
  1054. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1055. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1056. WHERE SP.AUDITSTATUS = 1
  1057. AND SP.BACKOUTTIME >= @DATEBEGIN@
  1058. AND SP.BACKOUTTIME < @DATEEND@
  1059. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1060. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1061. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1062. {TESTMOULDFLAG}
  1063. {TESTFLAG}
  1064. AND PD.ISREFIRE = 0
  1065. AND SP.GOODSLEVELTYPEID in (7)
  1066. --AND SP.SCRAPTYPE = 1
  1067. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1068. ) T)
  1069. GROUP BY GOODSCODE,
  1070. SAPCODE,
  1071. USERCODE,
  1072. WORKSHOP,
  1073. TESTMOULDFLAG,
  1074. GOODS_LINE_CODE,
  1075. CHARG
  1076. ---------------------------------------------------
  1077. UNION ALL
  1078. -- 干补报损
  1079. ---------------------------------------------------
  1080. SELECT GOODSCODE,
  1081. SAPCODE,
  1082. USERCODE,
  1083. 0 OUTPUTNUM,
  1084. COUNT(*) SCRAPNUM,
  1085. 0 CLEANUPNUM,
  1086. 0 REPAIRNUM,
  1087. WORKSHOP,
  1088. TESTMOULDFLAG,
  1089. GOODS_LINE_CODE,
  1090. CHARG
  1091. FROM (SELECT SP.GOODSCODE,
  1092. GDD.MATERIALCODE SAPCODE,
  1093. PD.USERCODE,
  1094. CASE
  1095. WHEN HGDI.WORKSHOP = 2
  1096. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1097. 1
  1098. WHEN HGDI.WORKSHOP = 2
  1099. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1100. 2
  1101. WHEN HGDI.WORKSHOP = 3 THEN
  1102. 3
  1103. ELSE
  1104. 4
  1105. END AS WORKSHOP,
  1106. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1107. G.GOODS_LINE_CODE,
  1108. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG
  1109. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  1110. FROM (SELECT T.*
  1111. FROM (SELECT SP.BARCODE,
  1112. SP.GOODSCODE,
  1113. SP.GROUTINGDAILYDETAILID,
  1114. PD.PROCEDUREID,
  1115. PD.PRODUCTIONDATAID,
  1116. SP.AUDITDATE,
  1117. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  1118. FROM TP_PM_SCRAPPRODUCT SP
  1119. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE
  1120. -- 不包含干补工序
  1121. AND PD.PROCEDUREID <> 18
  1122. -- 要找干补之前的工序
  1123. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  1124. AND PD.VALUEFLAG = '1'
  1125. INNER JOIN TP_MST_GOODS G
  1126. ON G.GOODSID = PD.GOODSID
  1127. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1128. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1129. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1130. WHERE SP.AUDITSTATUS = 1
  1131. AND SP.PROCEDUREID = 18
  1132. AND PD.ISREFIRE = 0
  1133. AND SP.GOODSLEVELTYPEID in (7)
  1134. --AND SP.SCRAPTYPE = 1
  1135. AND SP.AUDITDATE >= @DATEBEGIN@
  1136. AND SP.AUDITDATE < @DATEEND@
  1137. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1138. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1139. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1140. {TESTMOULDFLAG}
  1141. {TESTFLAG}
  1142. ) T
  1143. WHERE T.RK <= 1) SP
  1144. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1145. ON HGDI.DATACODE = '50'
  1146. AND HGDI.ITEMTYPE = 2
  1147. AND HGDI.ITEMID = SP.PROCEDUREID
  1148. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1149. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1150. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1151. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1152. INNER JOIN TP_MST_GOODS G
  1153. ON G.GOODSID = PD.GOODSID
  1154. INNER JOIN TP_MST_GOODSTYPE GT
  1155. ON G.GOODSTYPEID = GT.GOODSTYPEID)
  1156. GROUP BY GOODSCODE,
  1157. SAPCODE,
  1158. USERCODE,
  1159. WORKSHOP,
  1160. TESTMOULDFLAG,
  1161. GOODS_LINE_CODE,
  1162. CHARG)TT
  1163. GROUP BY TT.CHARG )TT2 GROUP BY GROUPING SETS ( TT2.时间, ( ) )
  1164. ),
  1165. 质量登记损坏数 AS
  1166. (
  1167. SELECT
  1168. GROUPING_ID (TT2.时间) AS GID,
  1169. NVL(TT2.时间,'合计') AS 时间,
  1170. SUM(TT2.质量登记损坏数_一部全部) 质量登记损坏数_一部全部,
  1171. SUM(TT2.质量登记损坏数_二部全部) 质量登记损坏数_二部全部,
  1172. SUM(TT2.质量登记损坏数_三部全部) 质量登记损坏数_三部全部
  1173. FROM(
  1174. SELECT
  1175. TT.CHARG AS 时间,
  1176. SUM(CASE WHEN TT.WORKSHOP = 1 THEN SCRAPNUM ELSE 0 END) 质量登记损坏数_一部全部,
  1177. SUM(CASE WHEN TT.WORKSHOP = 2 THEN SCRAPNUM ELSE 0 END) 质量登记损坏数_二部全部,
  1178. SUM(CASE WHEN TT.WORKSHOP = 3 THEN SCRAPNUM ELSE 0 END) 质量登记损坏数_三部全部
  1179. FROM(
  1180. SELECT GOODSCODE,
  1181. SAPCODE,
  1182. USERCODE,
  1183. 0 OUTPUTNUM,
  1184. COUNT(*) SCRAPNUM,
  1185. 0 CLEANUPNUM,
  1186. 0 REPAIRNUM,
  1187. WORKSHOP,
  1188. TESTMOULDFLAG,
  1189. GOODS_LINE_CODE,
  1190. CHARG
  1191. FROM (SELECT CASE
  1192. WHEN T.IS3 > 0 THEN
  1193. 3
  1194. WHEN T.HGDIWORKSHOP = 2
  1195. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1196. 1
  1197. WHEN T.HGDIWORKSHOP = 2
  1198. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1199. 2
  1200. WHEN T.HGDIWORKSHOP = 3 THEN
  1201. 3
  1202. ELSE
  1203. 2
  1204. END AS WORKSHOP,
  1205. T.*
  1206. FROM (SELECT SP.BARCODE,
  1207. SP.GOODSCODE,
  1208. GDD.MATERIALCODE SAPCODE,
  1209. PD.USERCODE,
  1210. GT.GOODSTYPECODE,
  1211. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1212. G.GOODS_LINE_CODE,
  1213. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG,
  1214. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1215. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1216. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1217. (SELECT COUNT(1)
  1218. FROM TP_PM_PRODUCTIONDATA PD2
  1219. WHERE PD2.BARCODE = PD.BARCODE
  1220. AND PD2.PROCEDUREID = 103
  1221. -- 重烧相关的ID
  1222. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1223. FROM TP_PM_SCRAPPRODUCT SP
  1224. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1225. ON HGDI.DATACODE = '50'
  1226. AND HGDI.ITEMTYPE = 2
  1227. AND HGDI.ITEMID = SP.PROCEDUREID
  1228. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1229. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1230. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1231. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1232. INNER JOIN TP_MST_GOODS G
  1233. ON G.GOODSID = PD.GOODSID
  1234. INNER JOIN TP_MST_GOODSTYPE GT
  1235. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1236. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1237. WHERE SP.AUDITSTATUS = 1
  1238. AND SP.AUDITDATE >= @DATEBEGIN@
  1239. AND SP.AUDITDATE < @DATEEND@
  1240. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1241. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1242. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1243. {TESTMOULDFLAG}
  1244. {TESTFLAG}
  1245. AND PD.ISREFIRE = 0
  1246. AND SP.GOODSLEVELTYPEID in (8,9)
  1247. --AND SP.SCRAPTYPE = 1
  1248. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1249. ) T)
  1250. GROUP BY GOODSCODE,
  1251. SAPCODE,
  1252. USERCODE,
  1253. WORKSHOP,
  1254. TESTMOULDFLAG,
  1255. GOODS_LINE_CODE,
  1256. CHARG
  1257. ---------------------------------------------------
  1258. UNION ALL
  1259. -- 工序报损撤销
  1260. ---------------------------------------------------
  1261. SELECT GOODSCODE,
  1262. SAPCODE,
  1263. USERCODE,
  1264. 0 OUTPUTNUM,
  1265. 0 - COUNT(*) SCRAPNUM,
  1266. 0 CLEANUPNUM,
  1267. 0 REPAIRNUM,
  1268. WORKSHOP,
  1269. TESTMOULDFLAG,
  1270. GOODS_LINE_CODE,
  1271. CHARG
  1272. FROM (SELECT CASE
  1273. WHEN T.IS3 > 0 THEN
  1274. 3
  1275. WHEN T.HGDIWORKSHOP = 2
  1276. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1277. 1
  1278. WHEN T.HGDIWORKSHOP = 2
  1279. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1280. 2
  1281. WHEN T.HGDIWORKSHOP = 3 THEN
  1282. 3
  1283. ELSE
  1284. 2
  1285. END AS WORKSHOP,
  1286. T.*
  1287. FROM (SELECT SP.BARCODE,
  1288. SP.GOODSCODE,
  1289. GDD.MATERIALCODE SAPCODE,
  1290. PD.USERCODE,
  1291. GT.GOODSTYPECODE,
  1292. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1293. G.GOODS_LINE_CODE,
  1294. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') AS CHARG,
  1295. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1296. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1297. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1298. (SELECT COUNT(1)
  1299. FROM TP_PM_PRODUCTIONDATA PD2
  1300. WHERE PD2.BARCODE = PD.BARCODE
  1301. AND PD2.PROCEDUREID = 103
  1302. -- 重烧相关的ID
  1303. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1304. FROM TP_PM_SCRAPPRODUCT SP
  1305. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1306. ON HGDI.DATACODE = '50'
  1307. AND HGDI.ITEMTYPE = 2
  1308. AND HGDI.ITEMID = SP.PROCEDUREID
  1309. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1310. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1311. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1312. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1313. INNER JOIN TP_MST_GOODS G
  1314. ON G.GOODSID = PD.GOODSID
  1315. INNER JOIN TP_MST_GOODSTYPE GT
  1316. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1317. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1318. WHERE SP.AUDITSTATUS = 1
  1319. AND SP.BACKOUTTIME >= @DATEBEGIN@
  1320. AND SP.BACKOUTTIME < @DATEEND@
  1321. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1322. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1323. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1324. {TESTMOULDFLAG}
  1325. {TESTFLAG}
  1326. AND PD.ISREFIRE = 0
  1327. AND SP.GOODSLEVELTYPEID in (8,9)
  1328. --AND SP.SCRAPTYPE = 1
  1329. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1330. ) T)
  1331. GROUP BY GOODSCODE,
  1332. SAPCODE,
  1333. USERCODE,
  1334. WORKSHOP,
  1335. TESTMOULDFLAG,
  1336. GOODS_LINE_CODE,
  1337. CHARG
  1338. ---------------------------------------------------
  1339. UNION ALL
  1340. -- 干补报损
  1341. ---------------------------------------------------
  1342. SELECT GOODSCODE,
  1343. SAPCODE,
  1344. USERCODE,
  1345. 0 OUTPUTNUM,
  1346. COUNT(*) SCRAPNUM,
  1347. 0 CLEANUPNUM,
  1348. 0 REPAIRNUM,
  1349. WORKSHOP,
  1350. TESTMOULDFLAG,
  1351. GOODS_LINE_CODE,
  1352. CHARG
  1353. FROM (SELECT SP.GOODSCODE,
  1354. GDD.MATERIALCODE SAPCODE,
  1355. PD.USERCODE,
  1356. CASE
  1357. WHEN HGDI.WORKSHOP = 2
  1358. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1359. 1
  1360. WHEN HGDI.WORKSHOP = 2
  1361. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1362. 2
  1363. WHEN HGDI.WORKSHOP = 3 THEN
  1364. 3
  1365. ELSE
  1366. 4
  1367. END AS WORKSHOP,
  1368. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1369. G.GOODS_LINE_CODE,
  1370. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG
  1371. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  1372. FROM (SELECT T.*
  1373. FROM (SELECT SP.BARCODE,
  1374. SP.GOODSCODE,
  1375. SP.GROUTINGDAILYDETAILID,
  1376. PD.PROCEDUREID,
  1377. PD.PRODUCTIONDATAID,
  1378. SP.AUDITDATE,
  1379. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  1380. FROM TP_PM_SCRAPPRODUCT SP
  1381. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE
  1382. -- 不包含干补工序
  1383. AND PD.PROCEDUREID <> 18
  1384. -- 要找干补之前的工序
  1385. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  1386. AND PD.VALUEFLAG = '1'
  1387. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1388. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1389. INNER JOIN TP_MST_GOODS G
  1390. ON G.GOODSID = PD.GOODSID
  1391. INNER JOIN TP_MST_GOODSTYPE GT
  1392. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1393. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1394. WHERE SP.AUDITSTATUS = 1
  1395. AND SP.PROCEDUREID = 18
  1396. AND PD.ISREFIRE = 0
  1397. AND SP.GOODSLEVELTYPEID in (8,9)
  1398. --AND SP.SCRAPTYPE = 1
  1399. AND SP.AUDITDATE >= @DATEBEGIN@
  1400. AND SP.AUDITDATE < @DATEEND@
  1401. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1402. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1403. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1404. {TESTMOULDFLAG}
  1405. {TESTFLAG}
  1406. ) T
  1407. WHERE T.RK <= 1) SP
  1408. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1409. ON HGDI.DATACODE = '50'
  1410. AND HGDI.ITEMTYPE = 2
  1411. AND HGDI.ITEMID = SP.PROCEDUREID
  1412. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1413. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1414. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1415. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1416. INNER JOIN TP_MST_GOODS G
  1417. ON G.GOODSID = PD.GOODSID
  1418. INNER JOIN TP_MST_GOODSTYPE GT
  1419. ON G.GOODSTYPEID = GT.GOODSTYPEID)
  1420. GROUP BY GOODSCODE,
  1421. SAPCODE,
  1422. USERCODE,
  1423. WORKSHOP,
  1424. TESTMOULDFLAG,
  1425. GOODS_LINE_CODE,
  1426. CHARG
  1427. )TT
  1428. GROUP BY TT.CHARG )TT2 GROUP BY GROUPING SETS ( TT2.时间, ( ) )
  1429. ),
  1430. 重烧登记次品数 AS
  1431. (
  1432. SELECT
  1433. GROUPING_ID (TT2.时间) AS GID,
  1434. NVL(TT2.时间,'合计') AS 时间,
  1435. SUM(TT2.重烧登记次品数_一部全部) 重烧登记次品数_一部全部,
  1436. SUM(TT2.重烧登记次品数_二部全部) 重烧登记次品数_二部全部,
  1437. SUM(TT2.重烧登记次品数_三部全部) 重烧登记次品数_三部全部
  1438. FROM(
  1439. SELECT
  1440. TT.CHARG AS 时间,
  1441. SUM(CASE WHEN TT.WORKSHOP = 1 THEN SCRAPNUM ELSE 0 END) 重烧登记次品数_一部全部,
  1442. SUM(CASE WHEN TT.WORKSHOP = 2 THEN SCRAPNUM ELSE 0 END) 重烧登记次品数_二部全部,
  1443. SUM(CASE WHEN TT.WORKSHOP = 3 THEN SCRAPNUM ELSE 0 END) 重烧登记次品数_三部全部
  1444. FROM(
  1445. SELECT GOODSCODE,
  1446. SAPCODE,
  1447. USERCODE,
  1448. 0 OUTPUTNUM,
  1449. COUNT(*) SCRAPNUM,
  1450. 0 CLEANUPNUM,
  1451. 0 REPAIRNUM,
  1452. WORKSHOP,
  1453. TESTMOULDFLAG,
  1454. GOODS_LINE_CODE,
  1455. CHARG
  1456. FROM (SELECT CASE
  1457. WHEN T.IS3 > 0 THEN
  1458. 3
  1459. WHEN T.HGDIWORKSHOP = 2
  1460. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1461. 1
  1462. WHEN T.HGDIWORKSHOP = 2
  1463. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1464. 2
  1465. WHEN T.HGDIWORKSHOP = 3 THEN
  1466. 3
  1467. ELSE
  1468. 2
  1469. END AS WORKSHOP,
  1470. T.*
  1471. FROM (SELECT SP.BARCODE,
  1472. SP.GOODSCODE,
  1473. GDD.MATERIALCODE SAPCODE,
  1474. PD.USERCODE,
  1475. GT.GOODSTYPECODE,
  1476. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1477. G.GOODS_LINE_CODE,
  1478. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG,
  1479. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1480. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1481. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1482. (SELECT COUNT(1)
  1483. FROM TP_PM_PRODUCTIONDATA PD2
  1484. WHERE PD2.BARCODE = PD.BARCODE
  1485. AND PD2.PROCEDUREID = 103
  1486. -- 重烧相关的ID
  1487. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1488. FROM TP_PM_SCRAPPRODUCT SP
  1489. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1490. ON HGDI.DATACODE = '50'
  1491. AND HGDI.ITEMTYPE = 2
  1492. AND HGDI.ITEMID = SP.PROCEDUREID
  1493. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1494. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1495. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1496. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1497. INNER JOIN TP_MST_GOODS G
  1498. ON G.GOODSID = PD.GOODSID
  1499. INNER JOIN TP_MST_GOODSTYPE GT
  1500. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1501. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1502. WHERE SP.AUDITSTATUS = 1
  1503. AND SP.AUDITDATE >= @DATEBEGIN@
  1504. AND SP.AUDITDATE < @DATEEND@
  1505. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1506. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1507. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1508. {TESTMOULDFLAG}
  1509. {TESTFLAG}
  1510. AND PD.ISREFIRE = 6
  1511. AND SP.GOODSLEVELTYPEID in (7)
  1512. --AND SP.SCRAPTYPE = 1
  1513. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1514. ) T)
  1515. GROUP BY GOODSCODE,
  1516. SAPCODE,
  1517. USERCODE,
  1518. WORKSHOP,
  1519. TESTMOULDFLAG,
  1520. GOODS_LINE_CODE,
  1521. CHARG
  1522. ---------------------------------------------------
  1523. UNION ALL
  1524. -- 工序报损撤销
  1525. ---------------------------------------------------
  1526. SELECT GOODSCODE,
  1527. SAPCODE,
  1528. USERCODE,
  1529. 0 OUTPUTNUM,
  1530. 0 - COUNT(*) SCRAPNUM,
  1531. 0 CLEANUPNUM,
  1532. 0 REPAIRNUM,
  1533. WORKSHOP,
  1534. TESTMOULDFLAG,
  1535. GOODS_LINE_CODE,
  1536. CHARG
  1537. FROM (SELECT CASE
  1538. WHEN T.IS3 > 0 THEN
  1539. 3
  1540. WHEN T.HGDIWORKSHOP = 2
  1541. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1542. 1
  1543. WHEN T.HGDIWORKSHOP = 2
  1544. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1545. 2
  1546. WHEN T.HGDIWORKSHOP = 3 THEN
  1547. 3
  1548. ELSE
  1549. 2
  1550. END AS WORKSHOP,
  1551. T.*
  1552. FROM (SELECT SP.BARCODE,
  1553. SP.GOODSCODE,
  1554. GDD.MATERIALCODE SAPCODE,
  1555. PD.USERCODE,
  1556. GT.GOODSTYPECODE,
  1557. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1558. G.GOODS_LINE_CODE,
  1559. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') AS CHARG,
  1560. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1561. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1562. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1563. (SELECT COUNT(1)
  1564. FROM TP_PM_PRODUCTIONDATA PD2
  1565. WHERE PD2.BARCODE = PD.BARCODE
  1566. AND PD2.PROCEDUREID = 103
  1567. -- 重烧相关的ID
  1568. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1569. FROM TP_PM_SCRAPPRODUCT SP
  1570. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1571. ON HGDI.DATACODE = '50'
  1572. AND HGDI.ITEMTYPE = 2
  1573. AND HGDI.ITEMID = SP.PROCEDUREID
  1574. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1575. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1576. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1577. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1578. INNER JOIN TP_MST_GOODS G
  1579. ON G.GOODSID = PD.GOODSID
  1580. INNER JOIN TP_MST_GOODSTYPE GT
  1581. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1582. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1583. WHERE SP.AUDITSTATUS = 1
  1584. AND SP.BACKOUTTIME >= @DATEBEGIN@
  1585. AND SP.BACKOUTTIME < @DATEEND@
  1586. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1587. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1588. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1589. {TESTMOULDFLAG}
  1590. {TESTFLAG}
  1591. AND PD.ISREFIRE = 6
  1592. AND SP.GOODSLEVELTYPEID in (7)
  1593. --AND SP.SCRAPTYPE = 1
  1594. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1595. ) T)
  1596. GROUP BY GOODSCODE,
  1597. SAPCODE,
  1598. USERCODE,
  1599. WORKSHOP,
  1600. TESTMOULDFLAG,
  1601. GOODS_LINE_CODE,
  1602. CHARG
  1603. ---------------------------------------------------
  1604. UNION ALL
  1605. -- 干补报损
  1606. ---------------------------------------------------
  1607. SELECT GOODSCODE,
  1608. SAPCODE,
  1609. USERCODE,
  1610. 0 OUTPUTNUM,
  1611. COUNT(*) SCRAPNUM,
  1612. 0 CLEANUPNUM,
  1613. 0 REPAIRNUM,
  1614. WORKSHOP,
  1615. TESTMOULDFLAG,
  1616. GOODS_LINE_CODE,
  1617. CHARG
  1618. FROM (SELECT SP.GOODSCODE,
  1619. GDD.MATERIALCODE SAPCODE,
  1620. PD.USERCODE,
  1621. CASE
  1622. WHEN HGDI.WORKSHOP = 2
  1623. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1624. 1
  1625. WHEN HGDI.WORKSHOP = 2
  1626. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1627. 2
  1628. WHEN HGDI.WORKSHOP = 3 THEN
  1629. 3
  1630. ELSE
  1631. 4
  1632. END AS WORKSHOP,
  1633. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1634. G.GOODS_LINE_CODE,
  1635. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG
  1636. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  1637. FROM (SELECT T.*
  1638. FROM (SELECT SP.BARCODE,
  1639. SP.GOODSCODE,
  1640. SP.GROUTINGDAILYDETAILID,
  1641. PD.PROCEDUREID,
  1642. PD.PRODUCTIONDATAID,
  1643. SP.AUDITDATE,
  1644. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  1645. FROM TP_PM_SCRAPPRODUCT SP
  1646. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE
  1647. -- 不包含干补工序
  1648. AND PD.PROCEDUREID <> 18
  1649. -- 要找干补之前的工序
  1650. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  1651. AND PD.VALUEFLAG = '1'
  1652. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1653. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1654. INNER JOIN TP_MST_GOODS G
  1655. ON G.GOODSID = PD.GOODSID
  1656. INNER JOIN TP_MST_GOODSTYPE GT
  1657. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1658. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1659. WHERE SP.AUDITSTATUS = 1
  1660. AND SP.PROCEDUREID = 18
  1661. AND PD.ISREFIRE = 6
  1662. AND SP.GOODSLEVELTYPEID in (7)
  1663. --AND SP.SCRAPTYPE = 1
  1664. AND SP.AUDITDATE >= @DATEBEGIN@
  1665. AND SP.AUDITDATE < @DATEEND@
  1666. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1667. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1668. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1669. {TESTMOULDFLAG}
  1670. {TESTFLAG}
  1671. ) T
  1672. WHERE T.RK <= 1) SP
  1673. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1674. ON HGDI.DATACODE = '50'
  1675. AND HGDI.ITEMTYPE = 2
  1676. AND HGDI.ITEMID = SP.PROCEDUREID
  1677. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1678. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1679. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1680. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1681. INNER JOIN TP_MST_GOODS G
  1682. ON G.GOODSID = PD.GOODSID
  1683. INNER JOIN TP_MST_GOODSTYPE GT
  1684. ON G.GOODSTYPEID = GT.GOODSTYPEID)
  1685. GROUP BY GOODSCODE,
  1686. SAPCODE,
  1687. USERCODE,
  1688. WORKSHOP,
  1689. TESTMOULDFLAG,
  1690. GOODS_LINE_CODE,
  1691. CHARG )TT
  1692. GROUP BY TT.CHARG )TT2 GROUP BY GROUPING SETS ( TT2.时间, ( ) )
  1693. ),
  1694. 重烧登记损坯数 AS
  1695. (
  1696. SELECT
  1697. GROUPING_ID (TT2.时间) AS GID,
  1698. NVL(TT2.时间,'合计') AS 时间,
  1699. SUM(TT2.重烧登记损坯数_一部全部) 重烧登记损坯数_一部全部,
  1700. SUM(TT2.重烧登记损坯数_二部全部) 重烧登记损坯数_二部全部,
  1701. SUM(TT2.重烧登记损坯数_三部全部) 重烧登记损坯数_三部全部
  1702. FROM(
  1703. SELECT
  1704. TT.CHARG AS 时间,
  1705. SUM(CASE WHEN TT.WORKSHOP = 1 THEN SCRAPNUM ELSE 0 END) 重烧登记损坯数_一部全部,
  1706. SUM(CASE WHEN TT.WORKSHOP = 2 THEN SCRAPNUM ELSE 0 END) 重烧登记损坯数_二部全部,
  1707. SUM(CASE WHEN TT.WORKSHOP = 3 THEN SCRAPNUM ELSE 0 END) 重烧登记损坯数_三部全部
  1708. FROM(
  1709. SELECT GOODSCODE,
  1710. SAPCODE,
  1711. USERCODE,
  1712. 0 OUTPUTNUM,
  1713. COUNT(*) SCRAPNUM,
  1714. 0 CLEANUPNUM,
  1715. 0 REPAIRNUM,
  1716. WORKSHOP,
  1717. TESTMOULDFLAG,
  1718. GOODS_LINE_CODE,
  1719. CHARG
  1720. FROM (SELECT CASE
  1721. WHEN T.IS3 > 0 THEN
  1722. 3
  1723. WHEN T.HGDIWORKSHOP = 2
  1724. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1725. 1
  1726. WHEN T.HGDIWORKSHOP = 2
  1727. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1728. 2
  1729. WHEN T.HGDIWORKSHOP = 3 THEN
  1730. 3
  1731. ELSE
  1732. 2
  1733. END AS WORKSHOP,
  1734. T.*
  1735. FROM (SELECT SP.BARCODE,
  1736. SP.GOODSCODE,
  1737. GDD.MATERIALCODE SAPCODE,
  1738. PD.USERCODE,
  1739. GT.GOODSTYPECODE,
  1740. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1741. G.GOODS_LINE_CODE,
  1742. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG,
  1743. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1744. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1745. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1746. (SELECT COUNT(1)
  1747. FROM TP_PM_PRODUCTIONDATA PD2
  1748. WHERE PD2.BARCODE = PD.BARCODE
  1749. AND PD2.PROCEDUREID = 103
  1750. -- 重烧相关的ID
  1751. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1752. FROM TP_PM_SCRAPPRODUCT SP
  1753. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1754. ON HGDI.DATACODE = '50'
  1755. AND HGDI.ITEMTYPE = 2
  1756. AND HGDI.ITEMID = SP.PROCEDUREID
  1757. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1758. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1759. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1760. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1761. INNER JOIN TP_MST_GOODS G
  1762. ON G.GOODSID = PD.GOODSID
  1763. INNER JOIN TP_MST_GOODSTYPE GT
  1764. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1765. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1766. WHERE SP.AUDITSTATUS = 1
  1767. AND SP.AUDITDATE >= @DATEBEGIN@
  1768. AND SP.AUDITDATE < @DATEEND@
  1769. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1770. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1771. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1772. {TESTMOULDFLAG}
  1773. {TESTFLAG}
  1774. AND PD.ISREFIRE = 6
  1775. AND SP.GOODSLEVELTYPEID in (8,9)
  1776. --AND SP.SCRAPTYPE = 1
  1777. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1778. ) T)
  1779. GROUP BY GOODSCODE,
  1780. SAPCODE,
  1781. USERCODE,
  1782. WORKSHOP,
  1783. TESTMOULDFLAG,
  1784. GOODS_LINE_CODE,
  1785. CHARG
  1786. ---------------------------------------------------
  1787. UNION ALL
  1788. -- 工序报损撤销
  1789. ---------------------------------------------------
  1790. SELECT GOODSCODE,
  1791. SAPCODE,
  1792. USERCODE,
  1793. 0 OUTPUTNUM,
  1794. 0 - COUNT(*) SCRAPNUM,
  1795. 0 CLEANUPNUM,
  1796. 0 REPAIRNUM,
  1797. WORKSHOP,
  1798. TESTMOULDFLAG,
  1799. GOODS_LINE_CODE,
  1800. CHARG
  1801. FROM (SELECT CASE
  1802. WHEN T.IS3 > 0 THEN
  1803. 3
  1804. WHEN T.HGDIWORKSHOP = 2
  1805. AND INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  1806. 1
  1807. WHEN T.HGDIWORKSHOP = 2
  1808. AND INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  1809. 2
  1810. WHEN T.HGDIWORKSHOP = 3 THEN
  1811. 3
  1812. ELSE
  1813. 2
  1814. END AS WORKSHOP,
  1815. T.*
  1816. FROM (SELECT SP.BARCODE,
  1817. SP.GOODSCODE,
  1818. GDD.MATERIALCODE SAPCODE,
  1819. PD.USERCODE,
  1820. GT.GOODSTYPECODE,
  1821. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1822. G.GOODS_LINE_CODE,
  1823. TO_CHAR(SP.BACKOUTTIME, 'YYYYMM') AS CHARG,
  1824. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG,
  1825. HGDI.WORKSHOP AS HGDIWORKSHOP,
  1826. -- 如果参与了重烧,则判断这个条码是否走过3#卸窑
  1827. (SELECT COUNT(1)
  1828. FROM TP_PM_PRODUCTIONDATA PD2
  1829. WHERE PD2.BARCODE = PD.BARCODE
  1830. AND PD2.PROCEDUREID = 103
  1831. -- 重烧相关的ID
  1832. AND SP.PROCEDUREID IN (14, 16, 57, 58, 59, 60,113)) AS IS3
  1833. FROM TP_PM_SCRAPPRODUCT SP
  1834. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1835. ON HGDI.DATACODE = '50'
  1836. AND HGDI.ITEMTYPE = 2
  1837. AND HGDI.ITEMID = SP.PROCEDUREID
  1838. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1839. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1840. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1841. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1842. INNER JOIN TP_MST_GOODS G
  1843. ON G.GOODSID = PD.GOODSID
  1844. INNER JOIN TP_MST_GOODSTYPE GT
  1845. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1846. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1847. WHERE SP.AUDITSTATUS = 1
  1848. AND SP.BACKOUTTIME >= @DATEBEGIN@
  1849. AND SP.BACKOUTTIME < @DATEEND@
  1850. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1851. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1852. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1853. {TESTMOULDFLAG}
  1854. {TESTFLAG}
  1855. AND PD.ISREFIRE = 6
  1856. AND SP.GOODSLEVELTYPEID in (8,9)
  1857. --AND SP.SCRAPTYPE = 1
  1858. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1859. ) T)
  1860. GROUP BY GOODSCODE,
  1861. SAPCODE,
  1862. USERCODE,
  1863. WORKSHOP,
  1864. TESTMOULDFLAG,
  1865. GOODS_LINE_CODE,
  1866. CHARG
  1867. ---------------------------------------------------
  1868. UNION ALL
  1869. -- 干补报损
  1870. ---------------------------------------------------
  1871. SELECT GOODSCODE,
  1872. SAPCODE,
  1873. USERCODE,
  1874. 0 OUTPUTNUM,
  1875. COUNT(*) SCRAPNUM,
  1876. 0 CLEANUPNUM,
  1877. 0 REPAIRNUM,
  1878. WORKSHOP,
  1879. TESTMOULDFLAG,
  1880. GOODS_LINE_CODE,
  1881. CHARG
  1882. FROM (SELECT SP.GOODSCODE,
  1883. GDD.MATERIALCODE SAPCODE,
  1884. PD.USERCODE,
  1885. CASE
  1886. WHEN HGDI.WORKSHOP = 2
  1887. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1888. 1
  1889. WHEN HGDI.WORKSHOP = 2
  1890. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1891. 2
  1892. WHEN HGDI.WORKSHOP = 3 THEN
  1893. 3
  1894. ELSE
  1895. 4
  1896. END AS WORKSHOP,
  1897. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  1898. G.GOODS_LINE_CODE,
  1899. TO_CHAR(SP.AUDITDATE, 'YYYYMM') AS CHARG
  1900. --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  1901. FROM (SELECT T.*
  1902. FROM (SELECT SP.BARCODE,
  1903. SP.GOODSCODE,
  1904. SP.GROUTINGDAILYDETAILID,
  1905. PD.PROCEDUREID,
  1906. PD.PRODUCTIONDATAID,
  1907. SP.AUDITDATE,
  1908. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  1909. FROM TP_PM_SCRAPPRODUCT SP
  1910. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE
  1911. -- 不包含干补工序
  1912. AND PD.PROCEDUREID <> 18
  1913. -- 要找干补之前的工序
  1914. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  1915. AND PD.VALUEFLAG = '1'
  1916. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1917. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1918. INNER JOIN TP_MST_GOODS G
  1919. ON G.GOODSID = PD.GOODSID
  1920. INNER JOIN TP_MST_GOODSTYPE GT
  1921. ON G.GOODSTYPEID = GT.GOODSTYPEID
  1922. INNER JOIN TP_PC_GROUTINGLINE GL ON GDD.GROUTINGLINEID = GL.GROUTINGLINEID
  1923. WHERE SP.AUDITSTATUS = 1
  1924. AND SP.PROCEDUREID = 18
  1925. AND PD.ISREFIRE = 6
  1926. AND SP.GOODSLEVELTYPEID in (8,9)
  1927. --AND SP.SCRAPTYPE = 1
  1928. AND SP.AUDITDATE >= @DATEBEGIN@
  1929. AND SP.AUDITDATE < @DATEEND@
  1930. AND (G.GOODSID IN ({GOODSID}) OR '{GOODSID}' = '0,0')
  1931. AND (GDD.GROUTINGLINEID IN (0,0) OR '0,0' = '0,0')
  1932. AND (GL.HIGHPRESSUREFLAG = @HIGHPRESSUREFLAG@ OR @HIGHPRESSUREFLAG@ = '-1')
  1933. {TESTMOULDFLAG}
  1934. {TESTFLAG}
  1935. ) T
  1936. WHERE T.RK <= 1) SP
  1937. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1938. ON HGDI.DATACODE = '50'
  1939. AND HGDI.ITEMTYPE = 2
  1940. AND HGDI.ITEMID = SP.PROCEDUREID
  1941. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1942. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1943. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1944. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1945. INNER JOIN TP_MST_GOODS G
  1946. ON G.GOODSID = PD.GOODSID
  1947. INNER JOIN TP_MST_GOODSTYPE GT
  1948. ON G.GOODSTYPEID = GT.GOODSTYPEID)
  1949. GROUP BY GOODSCODE,
  1950. SAPCODE,
  1951. USERCODE,
  1952. WORKSHOP,
  1953. TESTMOULDFLAG,
  1954. GOODS_LINE_CODE,
  1955. CHARG)TT
  1956. GROUP BY TT.CHARG )TT2 GROUP BY GROUPING SETS ( TT2.时间, ( ) )
  1957. )
  1958. SELECT
  1959. 拼接日期.时间,
  1960. NVL(注浆数.注浆数_一部全部,0) 注浆数_一部全部,
  1961. NVL(注浆数.注浆数_二部全部,0) 注浆数_二部全部,
  1962. NVL(注浆数.注浆数_三部全部,0) 注浆数_三部全部,
  1963. NVL(成型报损.成型报损_一部全部,0) 成型报损_一部全部,
  1964. NVL(成型报损.成型报损_二部全部,0) 成型报损_二部全部,
  1965. NVL(成型报损.成型报损_三部全部,0) 成型报损_三部全部,
  1966. NVL(半检不合格.半检不合格_一部全部,0) 半检不合格_一部全部,
  1967. NVL(半检不合格.半检不合格_二部全部,0) 半检不合格_二部全部,
  1968. NVL(半检不合格.半检不合格_三部全部,0) 半检不合格_三部全部,
  1969. NVL(复检不合格.复检不合格_一部全部,0) 复检不合格_一部全部,
  1970. NVL(复检不合格.复检不合格_二部全部,0) 复检不合格_二部全部,
  1971. NVL(复检不合格.复检不合格_三部全部,0) 复检不合格_三部全部,
  1972. NVL(半成品损坯数.半成品损坯数_一部全部,0) 半成品损坯数_一部全部,
  1973. NVL(半成品损坯数.半成品损坯数_二部全部,0) 半成品损坯数_二部全部,
  1974. NVL(半成品损坯数.半成品损坯数_三部全部,0) 半成品损坯数_三部全部,
  1975. NVL(干补回收数.干补回收数_一部全部,0) 干补回收数_一部全部,
  1976. NVL(干补回收数.干补回收数_二部全部,0) 干补回收数_二部全部,
  1977. NVL(干补回收数.干补回收数_三部全部,0) 干补回收数_三部全部,
  1978. NVL(出窑数.出窑数_一部全部,0) 出窑数_一部全部,
  1979. NVL(出窑数.出窑数_二部全部,0) 出窑数_二部全部,
  1980. NVL(出窑数.出窑数_三部全部,0) 出窑数_三部全部,
  1981. NVL(质量登记次品数.质量登记次品数_一部全部,0) 质量登记次品数_一部全部,
  1982. NVL(质量登记次品数.质量登记次品数_二部全部,0) 质量登记次品数_二部全部,
  1983. NVL(质量登记次品数.质量登记次品数_三部全部,0) 质量登记次品数_三部全部,
  1984. NVL(重烧登记次品数.重烧登记次品数_一部全部,0) 重烧登记次品数_一部全部,
  1985. NVL(重烧登记次品数.重烧登记次品数_二部全部,0) 重烧登记次品数_二部全部,
  1986. NVL(重烧登记次品数.重烧登记次品数_三部全部,0) 重烧登记次品数_三部全部,
  1987. NVL(质量登记损坏数.质量登记损坏数_一部全部,0) 质量登记损坏数_一部全部,
  1988. NVL(质量登记损坏数.质量登记损坏数_二部全部,0) 质量登记损坏数_二部全部,
  1989. NVL(质量登记损坏数.质量登记损坏数_三部全部,0) 质量登记损坏数_三部全部,
  1990. NVL(重烧登记损坯数.重烧登记损坯数_一部全部,0) 重烧登记损坯数_一部全部,
  1991. NVL(重烧登记损坯数.重烧登记损坯数_二部全部,0) 重烧登记损坯数_二部全部,
  1992. NVL(重烧登记损坯数.重烧登记损坯数_三部全部,0) 重烧登记损坯数_三部全部,
  1993. NVL(回收数.回收数_一部全部,0) 回收数_一部全部,
  1994. NVL(回收数.回收数_二部全部,0) 回收数_二部全部,
  1995. NVL(回收数.回收数_三部全部,0) 回收数_三部全部,
  1996. NVL(入库数.入库数_一部全部,0) 入库数_一部全部,
  1997. NVL(入库数.入库数_二部全部,0) 入库数_二部全部,
  1998. NVL(入库数.入库数_三部全部,0) 入库数_三部全部
  1999. FROM 拼接日期
  2000. LEFT JOIN 注浆数 ON 拼接日期.时间 = 注浆数.时间
  2001. LEFT JOIN 成型报损 ON 拼接日期.时间 = 成型报损.时间
  2002. LEFT JOIN 半检不合格 ON 拼接日期.时间 = 半检不合格.时间
  2003. LEFT JOIN 复检不合格 ON 拼接日期.时间 = 复检不合格.时间
  2004. LEFT JOIN 半成品损坯数 ON 拼接日期.时间 = 半成品损坯数.时间
  2005. LEFT JOIN 干补回收数 ON 拼接日期.时间 = 干补回收数.时间
  2006. LEFT JOIN 出窑数 ON 拼接日期.时间 = 出窑数.时间
  2007. LEFT JOIN 回收数 ON 拼接日期.时间 = 回收数.时间
  2008. LEFT JOIN 入库数 ON 拼接日期.时间 = 入库数.时间
  2009. LEFT JOIN 质量登记次品数 ON 拼接日期.时间 = 质量登记次品数.时间
  2010. LEFT JOIN 质量登记损坏数 ON 拼接日期.时间 = 质量登记损坏数.时间
  2011. LEFT JOIN 重烧登记次品数 ON 拼接日期.时间 = 重烧登记次品数.时间
  2012. LEFT JOIN 重烧登记损坯数 ON 拼接日期.时间 = 重烧登记损坯数.时间
  2013. ".Replace("YYYYMM",totalMaster)
  2014. .Replace("{GOODSID}",goodsId)
  2015. .Replace("{GROUTINGLINEID}",groutinglineId)
  2016. .Replace("{DATESTR}",datestr)
  2017. .Replace("{TESTMOULDFLAG}", testmouldflag)
  2018. .Replace("{TESTFLAG}",testflagmaster);
  2019. //获取查询条件
  2020. if (context.Request["checke"].ToString()=="false")
  2021. {
  2022. //highFlag ="null";
  2023. testType = "-1";
  2024. testFlagMaster = "-1";
  2025. }
  2026. List<CDAParameter> sqlPara = new List<CDAParameter>();
  2027. sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
  2028. sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
  2029. sqlPara.Add(new CDAParameter("HIGHPRESSUREFLAG",highFlag));
  2030. sqlPara.Add(new CDAParameter("TESTMOULDFLAG",testType));
  2031. sqlPara.Add(new CDAParameter("TESTFLAG",testFlagMaster));
  2032. //sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
  2033. //行列互换
  2034. //===============================================================================
  2035. DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
  2036. DataTable dt2 = new DataTable();
  2037. dt2.Columns.Add("部门序号");
  2038. dt2.Columns.Add("部门");
  2039. dt2.Columns.Add("工序");
  2040. for (int i = 0; i < dt.Rows.Count; i++) dt2.Columns.Add("日期" + dt.Rows[i]["时间"].ToString());
  2041. for (int j = 1; j < dt.Columns.Count; j++)
  2042. {
  2043. DataRow dr = dt2.NewRow();
  2044. dr["部门序号"] = dt.Columns[j].ColumnName.Substring(dt.Columns[j].ColumnName.IndexOf("_")+1)
  2045. .Replace("一部全部","1").Replace("二部全部","2").Replace("三部全部","3");
  2046. dr["部门"] = dt.Columns[j].ColumnName.Substring(dt.Columns[j].ColumnName.IndexOf("_")+1);
  2047. dr["工序"] = dt.Columns[j].ColumnName.Substring(0, dt.Columns[j].ColumnName.IndexOf("_"));
  2048. for (int i = 0; i < dt.Rows.Count; i++)
  2049. {
  2050. dr["日期" + dt.Rows[i]["时间"].ToString()] = dt.Rows[i][dt.Columns[j].ColumnName];
  2051. }
  2052. dt2.Rows.Add(dr);
  2053. }
  2054. DataView dv = dt2.DefaultView;
  2055. dv.Sort = "部门序号";
  2056. dt2.Columns.Remove("部门序号");
  2057. dt2 = dv.ToTable();
  2058. context.Response.Write(new JsonResult(dt2) { total = dt.Rows.Count }.ToJson());
  2059. }
  2060. //子表1
  2061. if(context.Request["m"].ToString()=="1")
  2062. {
  2063. //读取报表数据
  2064. string sqlStr = @"
  2065. SELECT
  2066. TT1.BARCODE 条码
  2067. --TT1.车间
  2068. FROM(
  2069. SELECT
  2070. TT.BARCODE,
  2071. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2072. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2073. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2074. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2075. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 车间
  2076. FROM(
  2077. SELECT GDD.BARCODE,'1' nodetype,GDD.groutingdailydetailid FROM(
  2078. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2079. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2080. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2081. FROM (SELECT decode(gh.datatype, 1, 1, -1) outputnum,gdd.groutingdailydetailid
  2082. FROM tp_pm_goodschangehistory gh
  2083. INNER JOIN tp_pm_groutingdailydetail gdd
  2084. ON gdd.groutingdailydetailid = gh.groutingdailydetailid
  2085. INNER JOIN tp_mst_goods g
  2086. ON g.goodsid = gh.goodsid
  2087. INNER JOIN tp_mst_goodstype gt
  2088. ON g.goodstypeid = gt.goodstypeid
  2089. WHERE gh.createtime >= @DATEBEGIN@
  2090. AND gh.createtime < @DATEEND@
  2091. AND gh.datatype IN (1, 2)
  2092. AND g.scrapsumflag = '1')
  2093. GROUP BY groutingdailydetailid,outputnum) a
  2094. LEFT JOIN (SELECT groutingdailydetailid,outputnum,COUNT(*) countt
  2095. FROM tsap_hegii_datalog_bg_detail THDBD
  2096. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2097. WHERE THDBD.outputnum NOT IN (0)
  2098. AND THDB.DATACODE = 20
  2099. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2100. GROUP BY groutingdailydetailid,outputnum) tt
  2101. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2102. AND tt.outputnum = a.outputnum ) s
  2103. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2104. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2105. UNION ALL
  2106. SELECT GDD.BARCODE,'2' nodetype,gdd.groutingdailydetailid FROM(
  2107. SELECT s.groutingdailydetailid,s.SCRAPNUM,NVL(s.counts,0),NVL(s.countt,0)
  2108. FROM (SELECT a.groutingdailydetailid,a.SCRAPNUM,a.counts,tt.countt
  2109. FROM (SELECT
  2110. TT.GROUTINGDAILYDETAILID,
  2111. TT.SCRAPNUM,
  2112. COUNT(*) counts
  2113. FROM(
  2114. SELECT
  2115. gdd.groutingdailydetailid,
  2116. DECODE( GH.DATATYPE, 3, 1, - 1 )SCRAPNUM
  2117. FROM
  2118. TP_PM_GOODSCHANGEHISTORY GH
  2119. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2120. INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID
  2121. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID
  2122. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2123. WHERE
  2124. GH.CREATETIME >= @DATEBEGIN@
  2125. AND GH.CREATETIME < @DATEEND@
  2126. AND GH.DATATYPE IN ( 3, 4 )
  2127. AND G.SCRAPSUMFLAG = '1'
  2128. UNION ALL-- 工序报损
  2129. SELECT
  2130. gdd.groutingdailydetailid,
  2131. 1 SCRAPNUM
  2132. FROM
  2133. TP_PM_SCRAPPRODUCT SP
  2134. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  2135. AND HGDI.ITEMTYPE = 2
  2136. AND HGDI.ITEMID = SP.PROCEDUREID
  2137. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2138. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2139. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2140. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2141. WHERE
  2142. SP.AUDITSTATUS = 1
  2143. AND SP.AUDITDATE >= @DATEBEGIN@
  2144. AND SP.AUDITDATE < @DATEEND@ -- AND SP.SCRAPTYPE IN (0, 2, 3)
  2145. UNION ALL-- 工序报损撤销
  2146. SELECT
  2147. gdd.groutingdailydetailid,
  2148. -1 SCRAPNUM
  2149. FROM
  2150. TP_PM_SCRAPPRODUCT SP
  2151. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  2152. AND HGDI.ITEMTYPE = 2
  2153. AND HGDI.ITEMID = SP.PROCEDUREID
  2154. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2155. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2156. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2157. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2158. WHERE
  2159. SP.AUDITSTATUS = 1
  2160. AND SP.VALUEFLAG = '0'
  2161. AND SP.BACKOUTTIME >= @DATEBEGIN@
  2162. AND SP.BACKOUTTIME < @DATEEND@ -- AND SP.SCRAPTYPE IN (0, 2, 3)
  2163. UNION ALL-- 干补报损
  2164. ---------------------------------------------------
  2165. SELECT
  2166. groutingdailydetailid,
  2167. 1
  2168. FROM
  2169. (
  2170. SELECT
  2171. SP.GOODSCODE,
  2172. GDD.MATERIALCODE SAPCODE,
  2173. PD.USERCODE,
  2174. gdd.groutingdailydetailid,
  2175. CASE
  2176. WHEN HGDI.WORKSHOP = 2
  2177. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  2178. 1
  2179. WHEN HGDI.WORKSHOP = 2
  2180. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  2181. 2
  2182. WHEN HGDI.WORKSHOP = 3 THEN
  2183. 3 ELSE 4
  2184. END AS WORKSHOP,
  2185. GDD.TESTMOULDFLAG,
  2186. G.GOODS_LINE_CODE,
  2187. TO_CHAR( SP.AUDITDATE, 'yymm' ) || '5000E' AS CHARG --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  2188. FROM
  2189. (
  2190. SELECT
  2191. T.*
  2192. FROM
  2193. (
  2194. SELECT
  2195. SP.BARCODE,
  2196. SP.GOODSCODE,
  2197. SP.GROUTINGDAILYDETAILID,
  2198. PD.PROCEDUREID,
  2199. PD.PRODUCTIONDATAID,
  2200. SP.AUDITDATE,
  2201. RANK ( ) OVER ( PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC ) AS RK
  2202. FROM
  2203. TP_PM_SCRAPPRODUCT SP
  2204. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE -- 不包含干补工序
  2205. AND PD.PROCEDUREID <> 18 -- 要找干补之前的工序
  2206. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  2207. AND PD.VALUEFLAG = '1'
  2208. WHERE
  2209. SP.AUDITSTATUS = 1
  2210. AND SP.PROCEDUREID = 18
  2211. AND SP.AUDITDATE >= @DATEBEGIN@
  2212. AND SP.AUDITDATE < @DATEEND@
  2213. ) T
  2214. WHERE
  2215. T.RK <= 1
  2216. ) SP
  2217. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  2218. AND HGDI.ITEMTYPE = 2
  2219. AND HGDI.ITEMID = SP.PROCEDUREID
  2220. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2221. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2222. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  2223. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2224. ) )TT GROUP BY TT.GROUTINGDAILYDETAILID,TT.SCRAPNUM) a
  2225. LEFT JOIN (SELECT groutingdailydetailid,SCRAPNUM,COUNT(*) countt
  2226. FROM tsap_hegii_datalog_bg_detail THDBD
  2227. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2228. WHERE THDBD.SCRAPNUM NOT IN (0)
  2229. AND THDB.DATACODE IN (20,30,40)
  2230. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2231. GROUP BY groutingdailydetailid,SCRAPNUM) tt
  2232. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2233. AND tt.SCRAPNUM = a.SCRAPNUM ) s
  2234. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2235. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2236. UNION ALL
  2237. SELECT GDD.BARCODE,'3' nodetype,gdd.groutingdailydetailid FROM(
  2238. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2239. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2240. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2241. FROM (--20、30、40干补
  2242. SELECT
  2243. 1 outputnum,
  2244. groutingdailydetailid
  2245. FROM
  2246. (
  2247. SELECT
  2248. SP.GOODSCODE,
  2249. GDD.MATERIALCODE SAPCODE,
  2250. SP.SPECIALREPAIRUSERCODE USERCODE,
  2251. gdd.groutingdailydetailid,
  2252. CASE
  2253. WHEN HGDI.WORKSHOP = 2
  2254. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  2255. 1
  2256. WHEN HGDI.WORKSHOP = 2
  2257. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  2258. 2
  2259. WHEN HGDI.WORKSHOP = 3 THEN
  2260. 3 ELSE 4
  2261. END AS WORKSHOP,
  2262. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  2263. G.GOODS_LINE_CODE,
  2264. TO_CHAR( SP.SPECIALREPAIRTIME, 'yymm' ) || '5000E' AS CHARG --TO_CHAR(SP.SPECIALREPAIRTIME, 'yyyymm') AS CHARG
  2265. FROM
  2266. TP_PM_SCRAPPRODUCT SP
  2267. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( '20','30','40')
  2268. AND HGDI.ITEMTYPE = 2
  2269. AND HGDI.ITEMID = SP.PROCEDUREID
  2270. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2271. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2272. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2273. WHERE
  2274. SP.AUDITSTATUS = 1
  2275. AND SP.GOODSLEVELTYPEID = 9
  2276. AND SP.SPECIALREPAIRTIME >= @DATEBEGIN@
  2277. AND SP.SPECIALREPAIRTIME < @DATEEND@ ) )
  2278. GROUP BY groutingdailydetailid,outputnum) a
  2279. LEFT JOIN (SELECT groutingdailydetailid,REPAIRNUM outputnum,COUNT(*) countt
  2280. FROM tsap_hegii_datalog_bg_detail THDBD
  2281. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2282. WHERE THDBD.REPAIRNUM NOT IN (0)
  2283. AND THDB.DATACODE IN ('20','30','40')
  2284. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2285. GROUP BY groutingdailydetailid,REPAIRNUM) tt
  2286. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2287. AND tt.outputnum = a.outputnum ) s
  2288. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2289. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2290. UNION ALL
  2291. SELECT GDD.BARCODE,'4' nodetype,gdd.groutingdailydetailid FROM(
  2292. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2293. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2294. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2295. FROM (SELECT GROUTINGDAILYDETAILID,
  2296. 1 OUTPUTNUM
  2297. FROM (SELECT CASE
  2298. WHEN T.IS3 > 0 THEN
  2299. 3
  2300. WHEN INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  2301. 1
  2302. WHEN INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  2303. 2
  2304. ELSE
  2305. 2
  2306. END AS WORKSHOP,
  2307. T.GROUTINGDAILYDETAILID
  2308. FROM (SELECT DISTINCT PD.BARCODE,
  2309. PD.GOODSCODE,
  2310. GDD.GROUTINGDAILYDETAILID,
  2311. GDD.MATERIALCODE SAPCODE,
  2312. PD.USERCODE,
  2313. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  2314. G.GOODS_LINE_CODE,
  2315. TO_CHAR(PD.CREATETIME, 'yymm') || '5000E' AS CHARG,
  2316. --TO_CHAR(PD.CREATETIME, 'yyyymm') AS CHARG,
  2317. HGDI.WORKSHOP AS HGDIWORKSHOP,
  2318. GT.GOODSTYPECODE,
  2319. -- 如果3#卸窑(103),就是3车间的
  2320. (SELECT COUNT(1)
  2321. FROM TP_PM_PRODUCTIONDATA PD2
  2322. WHERE PD2.BARCODE = PD.BARCODE
  2323. AND PD2.PROCEDUREID = 103) AS IS3
  2324. FROM TP_PM_PRODUCTIONDATA PD
  2325. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  2326. ON HGDI.DATACODE = '50'
  2327. AND HGDI.ITEMTYPE = 1
  2328. AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判)
  2329. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2330. ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  2331. INNER JOIN TP_MST_GOODS G
  2332. ON G.GOODSID = PD.GOODSID
  2333. INNER JOIN TP_MST_GOODSTYPE GT
  2334. ON G.GOODSTYPEID = GT.GOODSTYPEID
  2335. WHERE PD.CREATETIME >= @DATEBEGIN@
  2336. AND PD.CREATETIME < @DATEEND@
  2337. AND PD.ISREFIRE = '0'
  2338. AND PD.Islengbu = '0'
  2339. --AND PD.KILNID IN(1,2,5)-- 取本烧的窑炉
  2340. --AND ((HGDI.ITEMID <> 104 AND PD.VALUEFLAG = '1') OR
  2341. -- (HGDI.ITEMID = 104 AND PD.ISREFIRE = '0' AND
  2342. -- PD.CHECKFLAG = '1'))) T
  2343. AND ((HGDI.ITEMID = 11 AND (PD.CHECKFLAG = '1' OR PD.CHECKFLAG IS NULL))
  2344. OR (HGDI.ITEMID = 104 AND PD.CHECKFLAG = '1')) ) T
  2345. ))
  2346. GROUP BY groutingdailydetailid,outputnum) a
  2347. LEFT JOIN (SELECT groutingdailydetailid,outputnum,COUNT(*) countt
  2348. FROM tsap_hegii_datalog_bg_detail THDBD
  2349. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2350. WHERE THDBD.outputnum NOT IN (0)
  2351. AND THDB.DATACODE = 50
  2352. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2353. GROUP BY groutingdailydetailid,outputnum) tt
  2354. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2355. AND tt.outputnum = a.outputnum ) s
  2356. WHERE NVL(s.counts,0)!=NVL(s.countt,0)
  2357. )T
  2358. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2359. UNION ALL
  2360. SELECT GDD.BARCODE,'5' nodetype,gdd.groutingdailydetailid FROM(
  2361. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2362. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2363. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2364. FROM (SELECT groutingdailydetailid,
  2365. 1 outputnum
  2366. FROM (SELECT
  2367. T.groutingdailydetailid
  2368. FROM (SELECT GDD.groutingdailydetailid
  2369. FROM TP_PM_SCRAPPRODUCT SP
  2370. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  2371. ON HGDI.DATACODE = '50'
  2372. AND HGDI.ITEMTYPE = 2
  2373. AND HGDI.ITEMID = SP.PROCEDUREID
  2374. INNER JOIN TP_PM_PRODUCTIONDATA PD
  2375. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2376. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2377. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2378. INNER JOIN TP_MST_GOODS G
  2379. ON G.GOODSID = PD.GOODSID
  2380. INNER JOIN TP_MST_GOODSTYPE GT
  2381. ON G.GOODSTYPEID = GT.GOODSTYPEID
  2382. WHERE SP.AUDITSTATUS = 1
  2383. AND SP.AUDITDATE >= @DATEBEGIN@
  2384. AND SP.AUDITDATE < @DATEEND@
  2385. --AND SP.SCRAPTYPE IN (0, 2, 3)
  2386. ) T)
  2387. ---------------------------------------------------
  2388. UNION ALL
  2389. -- 工序报损撤销
  2390. ---------------------------------------------------
  2391. SELECT groutingdailydetailid,
  2392. -1 SCRAPNUM
  2393. FROM (SELECT
  2394. T.groutingdailydetailid
  2395. FROM (SELECT gdd.groutingdailydetailid
  2396. FROM TP_PM_SCRAPPRODUCT SP
  2397. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  2398. ON HGDI.DATACODE = '50'
  2399. AND HGDI.ITEMTYPE = 2
  2400. AND HGDI.ITEMID = SP.PROCEDUREID
  2401. INNER JOIN TP_PM_PRODUCTIONDATA PD
  2402. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2403. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2404. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2405. INNER JOIN TP_MST_GOODS G
  2406. ON G.GOODSID = PD.GOODSID
  2407. INNER JOIN TP_MST_GOODSTYPE GT
  2408. ON G.GOODSTYPEID = GT.GOODSTYPEID
  2409. WHERE SP.AUDITSTATUS = 1
  2410. AND SP.BACKOUTTIME >= @DATEBEGIN@
  2411. AND SP.BACKOUTTIME < @DATEEND@
  2412. --AND SP.SCRAPTYPE IN (0, 2, 3)
  2413. ) T)
  2414. ---------------------------------------------------
  2415. UNION ALL
  2416. -- 干补报损
  2417. ---------------------------------------------------
  2418. SELECT groutingdailydetailid,
  2419. 1
  2420. FROM (SELECT SP.groutingdailydetailid
  2421. FROM (SELECT T.*
  2422. FROM (SELECT SP.BARCODE,
  2423. SP.GOODSCODE,
  2424. SP.groutingdailydetailid,
  2425. PD.PROCEDUREID,
  2426. PD.PRODUCTIONDATAID,
  2427. SP.AUDITDATE,
  2428. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  2429. FROM TP_PM_SCRAPPRODUCT SP
  2430. INNER JOIN TP_PM_PRODUCTIONDATA PD
  2431. ON SP.BARCODE = PD.BARCODE
  2432. -- 不包含干补工序
  2433. AND PD.PROCEDUREID <> 18
  2434. -- 要找干补之前的工序
  2435. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  2436. AND PD.VALUEFLAG = '1'
  2437. WHERE SP.AUDITSTATUS = 1
  2438. AND SP.PROCEDUREID = 18
  2439. AND SP.AUDITDATE >= @DATEBEGIN@
  2440. AND SP.AUDITDATE < @DATEEND@) T
  2441. WHERE T.RK <= 1) SP
  2442. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  2443. ON HGDI.DATACODE = '50'
  2444. AND HGDI.ITEMTYPE = 2
  2445. AND HGDI.ITEMID = SP.PROCEDUREID
  2446. INNER JOIN TP_PM_PRODUCTIONDATA PD
  2447. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2448. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2449. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2450. INNER JOIN TP_MST_GOODS G
  2451. ON G.GOODSID = PD.GOODSID
  2452. INNER JOIN TP_MST_GOODSTYPE GT
  2453. ON G.GOODSTYPEID = GT.GOODSTYPEID))
  2454. GROUP BY groutingdailydetailid,outputnum) a
  2455. LEFT JOIN (SELECT groutingdailydetailid,SCRAPNUM outputnum,COUNT(*) countt
  2456. FROM tsap_hegii_datalog_bg_detail THDBD
  2457. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2458. WHERE THDBD.SCRAPNUM NOT IN (0)
  2459. AND THDB.DATACODE IN (50)
  2460. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2461. GROUP BY groutingdailydetailid,SCRAPNUM) tt
  2462. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2463. AND tt.outputnum = a.outputnum ) s
  2464. WHERE NVL(s.counts,0)!=NVL(s.countt,0) )T
  2465. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2466. UNION ALL
  2467. SELECT GDD.BARCODE,'6' nodetype,gdd.groutingdailydetailid FROM(
  2468. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2469. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2470. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2471. FROM (SELECT T.GROUTINGDAILYDETAILID,
  2472. DECODE(T.RECYCLINGFLAG, '0', 0, 1) outputnum
  2473. FROM (SELECT
  2474. BAR.RECYCLINGFLAG,
  2475. BAR.GROUTINGDAILYDETAILID,
  2476. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  2477. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  2478. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  2479. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2480. INNER JOIN TP_MST_GOODS G
  2481. ON G.GOODSID = BAR.GOODSID
  2482. INNER JOIN TP_MST_GOODSTYPE GT
  2483. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2484. LEFT JOIN TP_PM_ORDER O
  2485. ON O.ORDERID = GH.FHORDERID
  2486. WHERE GH.FHUSERID IS NOT NULL
  2487. AND GH.FHTIME >= @DATEBEGIN@
  2488. AND GH.FHTIME < @DATEEND@) T)
  2489. GROUP BY groutingdailydetailid,outputnum) a
  2490. LEFT JOIN ( SELECT T1.groutingdailydetailid,T1.OUTPUTNUM,COUNT(*) countt FROM (
  2491. SELECT DISTINCT TPF.groutingdailydetailid,DECODE(BAR.RECYCLINGFLAG, '0', 0, 1) outputnum FROM TSAP_HEGII_WORKDATA_BG TSH
  2492. INNER JOIN TP_PM_FINISHEDPRODUCT TPF ON TSH.LOGID = TPF.BGLOGID
  2493. INNER JOIN TP_PM_GROUTINGDAILYDETAIL BAR ON TPF.groutingdailydetailid = BAR.groutingdailydetailid
  2494. WHERE
  2495. TSH.CREATETIME>=@DATEBEGIN@
  2496. AND TSH.CREATETIME<@DATEEND@
  2497. AND TPF.CREATETIME>=@DATEBEGINONE@
  2498. AND TPF.CREATETIME<@DATEEND@
  2499. AND TPF.VALUEFLAG = 1
  2500. and TSH.DATACODE = 60
  2501. AND TSH.outputnum NOT IN (0))T1 GROUP BY T1.groutingdailydetailid,T1.OUTPUTNUM) tt
  2502. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2503. AND tt.outputnum = a.outputnum ) s
  2504. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2505. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2506. UNION ALL
  2507. SELECT GDD.BARCODE,'7' nodetype,gdd.groutingdailydetailid FROM(
  2508. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0),NVL(s.countt,0)
  2509. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2510. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2511. FROM (SELECT T1.GROUTINGDAILYDETAILID,
  2512. DECODE(T1.RECYCLINGFLAG, '1', 0, 1) OUTPUTNUM
  2513. FROM (SELECT
  2514. BAR.RECYCLINGFLAG,
  2515. BAR.GROUTINGDAILYDETAILID,
  2516. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  2517. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  2518. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  2519. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2520. INNER JOIN TP_MST_GOODS G
  2521. ON G.GOODSID = BAR.GOODSID
  2522. INNER JOIN TP_MST_GOODSTYPE GT
  2523. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2524. LEFT JOIN TP_PM_ORDER O
  2525. ON O.ORDERID = GH.FHORDERID
  2526. WHERE GH.FHUSERID IS NOT NULL
  2527. AND GH.FHTIME >= @DATEBEGIN@
  2528. AND GH.FHTIME < @DATEEND@) T1)
  2529. GROUP BY groutingdailydetailid,outputnum) a
  2530. LEFT JOIN ( SELECT T1.groutingdailydetailid,T1.OUTPUTNUM,COUNT(*) countt FROM (
  2531. SELECT DISTINCT TPF.groutingdailydetailid,DECODE(BAR.RECYCLINGFLAG, '1', 0, 1) OUTPUTNUM FROM TSAP_HEGII_WORKDATA_BG TSH
  2532. INNER JOIN TP_PM_FINISHEDPRODUCT TPF ON TSH.LOGID = TPF.BGLOGID
  2533. INNER JOIN TP_PM_GROUTINGDAILYDETAIL BAR ON TPF.groutingdailydetailid = BAR.groutingdailydetailid
  2534. WHERE
  2535. TSH.CREATETIME>=@DATEBEGIN@
  2536. AND TSH.CREATETIME<@DATEEND@
  2537. AND TPF.CREATETIME>=@DATEBEGINONE@
  2538. AND TPF.CREATETIME<@DATEEND@
  2539. AND TPF.VALUEFLAG = 1
  2540. and TSH.DATACODE = 60
  2541. AND TSH.outputnum NOT IN (0))T1 GROUP BY T1.groutingdailydetailid,T1.OUTPUTNUM) tt
  2542. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2543. AND tt.outputnum = a.outputnum ) s
  2544. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2545. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid) TT
  2546. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON TT.groutingdailydetailid = GDD.groutingdailydetailid
  2547. INNER JOIN tp_mst_goods g ON g.goodsid = GDD.goodsid
  2548. INNER JOIN tp_mst_goodstype gt ON g.goodstypeid = gt.goodstypeid WHERE TT.nodetype = @nodetype@ )TT1
  2549. WHERE TT1.车间 = @WORKSHOP@ and TT1.BARCODE is not null
  2550. ";
  2551. if (context.Request["shorname"].ToString() == "注浆数")
  2552. {
  2553. nodetype1 = 1;
  2554. }
  2555. else if (context.Request["shorname"].ToString() == "损坯数")
  2556. {
  2557. nodetype1 = 2;
  2558. }
  2559. else if (context.Request["shorname"].ToString() == "干补数")
  2560. {
  2561. nodetype1 = 3;
  2562. }
  2563. else if (context.Request["shorname"].ToString() == "出窑数")
  2564. {
  2565. nodetype1 = 4;
  2566. }
  2567. else if (context.Request["shorname"].ToString() == "质量登记数")
  2568. {
  2569. nodetype1 = 5;
  2570. }
  2571. else if (context.Request["shorname"].ToString() == "回收数")
  2572. {
  2573. nodetype1 = 6;
  2574. }
  2575. else
  2576. {
  2577. nodetype1 = 7;
  2578. }
  2579. DateTime dateend = Convert.ToDateTime(context.Request["dateendMaster"]).AddDays(1);
  2580. DateTime datebeginone = Convert.ToDateTime(context.Request["datebeginMaster"]).AddDays(-1);
  2581. List<CDAParameter> sqlPara = new List<CDAParameter>();
  2582. sqlPara.Add(new CDAParameter("nodetype", nodetype1));
  2583. sqlPara.Add(new CDAParameter("WORKSHOP", context.Request["WORKSHOP"].ToString()));
  2584. sqlPara.Add(new CDAParameter("DATEBEGIN", context.Request["datebeginMaster"].ToString(), DataType.DateTime));
  2585. sqlPara.Add(new CDAParameter("DATEBEGINONE", datebeginone, DataType.DateTime));
  2586. sqlPara.Add(new CDAParameter("DATEEND", dateend, DataType.DateTime));
  2587. JsonResult data = Easyui.ExecuteJsonResult(conn, sqlStr, sqlPara);
  2588. context.Response.Write(data.ToJson());
  2589. }
  2590. if (context.Request["m"].ToString() == "cy")
  2591. {
  2592. //读取报表数据
  2593. string sqlStr = @"
  2594. SELECT
  2595. --Q.注浆数_车间 车间,
  2596. Q.注浆数_差异量 差异量
  2597. FROM(
  2598. SELECT O.注浆数_车间,'注浆数_'||NVL(O.注浆数_差异量,0)注浆数_差异量,1 NUM FROM(
  2599. SELECT A.注浆数_车间,B.注浆数_差异量 FROM(
  2600. SELECT 1 注浆数_车间,NULL 注浆数_差异量 FROM dual UNION ALL
  2601. SELECT 2 注浆数_车间,NULL 注浆数_差异量 FROM dual UNION ALL
  2602. SELECT 3 注浆数_车间,NULL 注浆数_差异量 FROM dual )A
  2603. LEFT JOIN(
  2604. SELECT
  2605. TT.注浆数_车间,
  2606. TO_CHAR(NVL(SUM(TT.注浆数_差异量),0)) 注浆数_差异量
  2607. FROM(
  2608. SELECT
  2609. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2610. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2611. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2612. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2613. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 注浆数_车间,
  2614. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 注浆数_差异量
  2615. FROM(
  2616. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2617. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2618. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2619. FROM (SELECT decode(gh.datatype, 1, 1, -1) outputnum,gdd.groutingdailydetailid
  2620. FROM tp_pm_goodschangehistory gh
  2621. INNER JOIN tp_pm_groutingdailydetail gdd
  2622. ON gdd.groutingdailydetailid = gh.groutingdailydetailid
  2623. INNER JOIN tp_mst_goods g
  2624. ON g.goodsid = gh.goodsid
  2625. INNER JOIN tp_mst_goodstype gt
  2626. ON g.goodstypeid = gt.goodstypeid
  2627. WHERE gh.createtime >= @DATEBEGIN@
  2628. AND gh.createtime < @DATEEND@
  2629. AND gh.datatype IN (1, 2)
  2630. AND g.scrapsumflag = '1')
  2631. GROUP BY groutingdailydetailid,outputnum) a
  2632. LEFT JOIN (SELECT groutingdailydetailid,outputnum,COUNT(*) countt
  2633. FROM tsap_hegii_datalog_bg_detail THDBD
  2634. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2635. WHERE THDBD.outputnum NOT IN (0)
  2636. AND THDB.DATACODE = 20
  2637. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2638. GROUP BY groutingdailydetailid,outputnum) tt
  2639. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2640. AND tt.outputnum = a.outputnum ) s
  2641. WHERE NVL(s.counts,0)!=NVL(s.countt,0) )T
  2642. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2643. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2644. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2645. )TT GROUP BY TT.注浆数_车间)B ON B.注浆数_车间 = A.注浆数_车间
  2646. )O
  2647. UNION ALL
  2648. SELECT O.出窑数_车间,'出窑数_'||NVL(O.出窑数_差异量,0),4 NUM FROM(
  2649. SELECT A.出窑数_车间,B.出窑数_差异量 FROM(
  2650. SELECT 1 出窑数_车间,NULL 出窑数_差异量 FROM dual UNION ALL
  2651. SELECT 2 出窑数_车间,NULL 出窑数_差异量 FROM dual UNION ALL
  2652. SELECT 3 出窑数_车间,NULL 出窑数_差异量 FROM dual) A
  2653. LEFT JOIN(
  2654. SELECT
  2655. TT.出窑数_车间,
  2656. SUM(TT.出窑数_差异量) 出窑数_差异量
  2657. FROM(
  2658. SELECT
  2659. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2660. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2661. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2662. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2663. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 出窑数_车间,
  2664. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 出窑数_差异量
  2665. FROM(
  2666. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2667. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2668. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2669. FROM (SELECT GROUTINGDAILYDETAILID,
  2670. 1 OUTPUTNUM
  2671. FROM (SELECT CASE
  2672. WHEN T.IS3 > 0 THEN
  2673. 3
  2674. WHEN INSTR(T.GOODSTYPECODE, '001002') = 1 THEN
  2675. 1
  2676. WHEN INSTR(T.GOODSTYPECODE, '001001') = 1 THEN
  2677. 2
  2678. ELSE
  2679. 2
  2680. END AS WORKSHOP,
  2681. T.GROUTINGDAILYDETAILID
  2682. FROM (SELECT DISTINCT PD.BARCODE,
  2683. PD.GOODSCODE,
  2684. GDD.GROUTINGDAILYDETAILID,
  2685. GDD.MATERIALCODE SAPCODE,
  2686. PD.USERCODE,
  2687. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS TESTMOULDFLAG,
  2688. G.GOODS_LINE_CODE,
  2689. TO_CHAR(PD.CREATETIME, 'yymm') || '5000E' AS CHARG,
  2690. --TO_CHAR(PD.CREATETIME, 'yyyymm') AS CHARG,
  2691. HGDI.WORKSHOP AS HGDIWORKSHOP,
  2692. GT.GOODSTYPECODE,
  2693. -- 如果3#卸窑(103),就是3车间的
  2694. (SELECT COUNT(1)
  2695. FROM TP_PM_PRODUCTIONDATA PD2
  2696. WHERE PD2.BARCODE = PD.BARCODE
  2697. AND PD2.PROCEDUREID = 103) AS IS3
  2698. FROM TP_PM_PRODUCTIONDATA PD
  2699. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  2700. ON HGDI.DATACODE = '50'
  2701. AND HGDI.ITEMTYPE = 1
  2702. AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判)
  2703. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2704. ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  2705. INNER JOIN TP_MST_GOODS G
  2706. ON G.GOODSID = PD.GOODSID
  2707. INNER JOIN TP_MST_GOODSTYPE GT
  2708. ON G.GOODSTYPEID = GT.GOODSTYPEID
  2709. WHERE PD.CREATETIME >= @DATEBEGIN@
  2710. AND PD.CREATETIME < @DATEEND@
  2711. AND PD.ISREFIRE = '0'
  2712. AND PD.Islengbu = '0'
  2713. --AND PD.KILNID IN(1,2,5)-- 取本烧的窑炉
  2714. --AND ((HGDI.ITEMID <> 104 AND PD.VALUEFLAG = '1') OR
  2715. -- (HGDI.ITEMID = 104 AND PD.ISREFIRE = '0' AND
  2716. -- PD.CHECKFLAG = '1'))) T
  2717. AND ((HGDI.ITEMID = 11 AND (PD.CHECKFLAG = '1' OR PD.CHECKFLAG IS NULL))
  2718. OR (HGDI.ITEMID = 104 AND PD.CHECKFLAG = '1')) ) T
  2719. ))
  2720. GROUP BY groutingdailydetailid,outputnum) a
  2721. LEFT JOIN (SELECT groutingdailydetailid,outputnum,COUNT(*) countt
  2722. FROM tsap_hegii_datalog_bg_detail THDBD
  2723. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2724. WHERE THDBD.outputnum NOT IN (0)
  2725. AND THDB.DATACODE = 50
  2726. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2727. GROUP BY groutingdailydetailid,outputnum) tt
  2728. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2729. AND tt.outputnum = a.outputnum ) s
  2730. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2731. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2732. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2733. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.出窑数_车间 )B ON A.出窑数_车间 = B.出窑数_车间
  2734. )O
  2735. UNION ALL
  2736. SELECT O.回收数_车间,'回收数_'||NVL(O.回收数_差异量,0),6 NUM FROM(
  2737. SELECT A.回收数_车间,B.回收数_差异量 FROM(
  2738. SELECT 1 回收数_车间,NULL 回收数_差异量 FROM dual UNION ALL
  2739. SELECT 2 回收数_车间,NULL 回收数_差异量 FROM dual UNION ALL
  2740. SELECT 3 回收数_车间,NULL 回收数_差异量 FROM dual) A
  2741. LEFT JOIN(
  2742. SELECT
  2743. TT.回收数_车间,
  2744. SUM(TT.回收数_差异量) 回收数_差异量
  2745. FROM(
  2746. SELECT
  2747. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2748. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2749. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2750. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2751. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 回收数_车间,
  2752. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 回收数_差异量
  2753. FROM(
  2754. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2755. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2756. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2757. FROM (SELECT T.GROUTINGDAILYDETAILID,
  2758. DECODE(T.RECYCLINGFLAG, '0', 0, 1) outputnum
  2759. FROM (SELECT
  2760. BAR.RECYCLINGFLAG,
  2761. BAR.GROUTINGDAILYDETAILID,
  2762. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  2763. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  2764. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  2765. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2766. INNER JOIN TP_MST_GOODS G
  2767. ON G.GOODSID = BAR.GOODSID
  2768. INNER JOIN TP_MST_GOODSTYPE GT
  2769. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2770. LEFT JOIN TP_PM_ORDER O
  2771. ON O.ORDERID = GH.FHORDERID
  2772. WHERE GH.FHUSERID IS NOT NULL
  2773. AND GH.FHTIME >= @DATEBEGIN@
  2774. AND GH.FHTIME < @DATEEND@) T)
  2775. GROUP BY groutingdailydetailid,outputnum) a
  2776. LEFT JOIN ( SELECT T1.groutingdailydetailid,T1.OUTPUTNUM,COUNT(*) countt FROM (
  2777. SELECT DISTINCT TPF.groutingdailydetailid,CASE WHEN BAR.RECYCLINGFLAG='0' THEN 0 ELSE 1 END outputnum FROM TSAP_HEGII_WORKDATA_BG TSH
  2778. INNER JOIN TP_PM_FINISHEDPRODUCT TPF ON TSH.LOGID = TPF.BGLOGID
  2779. INNER JOIN TP_PM_GROUTINGDAILYDETAIL BAR ON TPF.groutingdailydetailid = BAR.groutingdailydetailid
  2780. WHERE
  2781. TSH.CREATETIME>=@DATEBEGIN@
  2782. AND TSH.CREATETIME<@DATEEND@
  2783. AND TPF.CREATETIME>=@DATEBEGINONE@
  2784. AND TPF.CREATETIME<@DATEEND@
  2785. AND TPF.VALUEFLAG = 1
  2786. and TSH.DATACODE = 60
  2787. AND TSH.outputnum != 0 )T1 GROUP BY T1.groutingdailydetailid,T1.OUTPUTNUM) tt
  2788. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2789. AND tt.outputnum = a.outputnum ) s
  2790. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2791. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2792. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2793. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.回收数_车间 )B ON A.回收数_车间 = B.回收数_车间
  2794. )O
  2795. UNION ALL
  2796. SELECT O.入库数_车间,'入库数_'||NVL(O.入库数_差异量,0),7 NUM FROM(
  2797. SELECT A.入库数_车间,B.入库数_差异量 FROM(
  2798. SELECT 1 入库数_车间,NULL 入库数_差异量 FROM dual UNION ALL
  2799. SELECT 2 入库数_车间,NULL 入库数_差异量 FROM dual UNION ALL
  2800. SELECT 3 入库数_车间,NULL 入库数_差异量 FROM dual) A
  2801. LEFT JOIN(
  2802. SELECT
  2803. TT.入库数_车间,
  2804. SUM(TT.入库数_差异量) 入库数_差异量
  2805. FROM(
  2806. SELECT
  2807. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2808. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2809. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2810. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2811. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 入库数_车间,
  2812. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 入库数_差异量
  2813. FROM(
  2814. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2815. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2816. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2817. FROM (SELECT T1.GROUTINGDAILYDETAILID,
  2818. DECODE(T1.RECYCLINGFLAG, '1', 0, 1) OUTPUTNUM
  2819. FROM (SELECT
  2820. BAR.RECYCLINGFLAG,
  2821. BAR.GROUTINGDAILYDETAILID,
  2822. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  2823. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  2824. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  2825. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2826. INNER JOIN TP_MST_GOODS G
  2827. ON G.GOODSID = BAR.GOODSID
  2828. INNER JOIN TP_MST_GOODSTYPE GT
  2829. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2830. LEFT JOIN TP_PM_ORDER O
  2831. ON O.ORDERID = GH.FHORDERID
  2832. WHERE GH.FHUSERID IS NOT NULL
  2833. AND GH.FHTIME >= @DATEBEGIN@
  2834. AND GH.FHTIME < @DATEEND@) T1)
  2835. GROUP BY groutingdailydetailid,outputnum) a
  2836. LEFT JOIN ( SELECT T1.groutingdailydetailid,T1.OUTPUTNUM,COUNT(*) countt FROM (
  2837. SELECT DISTINCT TPF.groutingdailydetailid,DECODE(BAR.RECYCLINGFLAG, '1', 0, 1) OUTPUTNUM FROM TSAP_HEGII_WORKDATA_BG TSH
  2838. INNER JOIN TP_PM_FINISHEDPRODUCT TPF ON TSH.LOGID = TPF.BGLOGID
  2839. INNER JOIN TP_PM_GROUTINGDAILYDETAIL BAR ON TPF.groutingdailydetailid = BAR.groutingdailydetailid
  2840. WHERE
  2841. TSH.CREATETIME>=@DATEBEGIN@
  2842. AND TSH.CREATETIME<@DATEEND@
  2843. AND TPF.CREATETIME>=@DATEBEGINONE@
  2844. AND TPF.CREATETIME<@DATEEND@
  2845. AND TPF.VALUEFLAG = 1
  2846. and TSH.DATACODE = 60
  2847. AND TSH.outputnum NOT IN (0))T1 GROUP BY T1.groutingdailydetailid,T1.OUTPUTNUM) tt
  2848. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2849. AND tt.outputnum = a.outputnum ) s
  2850. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2851. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2852. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2853. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.入库数_车间 )B ON A.入库数_车间 = B.入库数_车间
  2854. )O
  2855. UNION ALL
  2856. SELECT O.干补数_车间,'干补数_'||NVL(O.干补数_差异量,0),3 NUM FROM(
  2857. SELECT A.干补数_车间,B.干补数_差异量 FROM(
  2858. SELECT 1 干补数_车间,NULL 干补数_差异量 FROM dual UNION ALL
  2859. SELECT 2 干补数_车间,NULL 干补数_差异量 FROM dual UNION ALL
  2860. SELECT 3 干补数_车间,NULL 干补数_差异量 FROM dual) A
  2861. LEFT JOIN(
  2862. SELECT
  2863. TT.干补数_车间,
  2864. SUM(TT.干补数_差异量) 干补数_差异量
  2865. FROM(
  2866. SELECT
  2867. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2868. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2869. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2870. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2871. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 干补数_车间,
  2872. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 干补数_差异量
  2873. FROM(
  2874. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2875. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  2876. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  2877. FROM (--20、30、40干补
  2878. SELECT
  2879. 1 outputnum,
  2880. groutingdailydetailid
  2881. FROM
  2882. (
  2883. SELECT
  2884. SP.GOODSCODE,
  2885. GDD.MATERIALCODE SAPCODE,
  2886. SP.SPECIALREPAIRUSERCODE USERCODE,
  2887. gdd.groutingdailydetailid,
  2888. CASE
  2889. WHEN HGDI.WORKSHOP = 2
  2890. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  2891. 1
  2892. WHEN HGDI.WORKSHOP = 2
  2893. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  2894. 2
  2895. WHEN HGDI.WORKSHOP = 3 THEN
  2896. 3 ELSE 4
  2897. END AS WORKSHOP,
  2898. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  2899. G.GOODS_LINE_CODE,
  2900. TO_CHAR( SP.SPECIALREPAIRTIME, 'yymm' ) || '5000E' AS CHARG --TO_CHAR(SP.SPECIALREPAIRTIME, 'yyyymm') AS CHARG
  2901. FROM
  2902. TP_PM_SCRAPPRODUCT SP
  2903. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( '20','30','40')
  2904. AND HGDI.ITEMTYPE = 2
  2905. AND HGDI.ITEMID = SP.PROCEDUREID
  2906. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2907. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2908. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2909. WHERE
  2910. SP.AUDITSTATUS = 1
  2911. AND SP.GOODSLEVELTYPEID = 9
  2912. AND SP.SPECIALREPAIRTIME >= @DATEBEGIN@
  2913. AND SP.SPECIALREPAIRTIME < @DATEEND@
  2914. ) )
  2915. GROUP BY groutingdailydetailid,outputnum) a
  2916. LEFT JOIN (SELECT groutingdailydetailid,REPAIRNUM outputnum,COUNT(*) countt
  2917. FROM tsap_hegii_datalog_bg_detail THDBD
  2918. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  2919. WHERE THDBD.REPAIRNUM NOT IN (0)
  2920. AND THDB.DATACODE IN ('20','30','40')
  2921. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  2922. GROUP BY groutingdailydetailid,REPAIRNUM) tt
  2923. ON tt.groutingdailydetailid = a.groutingdailydetailid
  2924. AND tt.outputnum = a.outputnum ) s
  2925. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  2926. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  2927. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2928. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.干补数_车间 )B ON A.干补数_车间 = B.干补数_车间
  2929. )O
  2930. UNION ALL
  2931. SELECT O.损坯数_车间,'损坯数_'||NVL(O.损坯数_差异量,0),2 NUM FROM(
  2932. SELECT A.损坯数_车间,B.损坯数_差异量 FROM(
  2933. SELECT 1 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2934. SELECT 1 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2935. SELECT 1 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2936. SELECT 1 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2937. SELECT 2 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2938. SELECT 2 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2939. SELECT 2 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2940. SELECT 2 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2941. SELECT 3 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2942. SELECT 3 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2943. SELECT 3 损坯数_车间,NULL 损坯数_差异量 FROM dual UNION ALL
  2944. SELECT 3 损坯数_车间,NULL 损坯数_差异量 FROM dual) A
  2945. LEFT JOIN(
  2946. SELECT
  2947. TT.损坯数_车间,
  2948. SUM(TT.损坯数_差异量) 损坯数_差异量
  2949. FROM(
  2950. SELECT
  2951. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2952. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  2953. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  2954. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  2955. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 损坯数_车间,
  2956. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 损坯数_差异量
  2957. FROM(
  2958. SELECT s.groutingdailydetailid,s.SCRAPNUM outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  2959. FROM (SELECT a.groutingdailydetailid,a.SCRAPNUM,a.counts,tt.countt
  2960. FROM (SELECT
  2961. TT.GROUTINGDAILYDETAILID,
  2962. TT.SCRAPNUM,
  2963. COUNT(*) counts
  2964. FROM(
  2965. SELECT
  2966. gdd.groutingdailydetailid,
  2967. DECODE( GH.DATATYPE, 3, 1, - 1 )SCRAPNUM
  2968. FROM
  2969. TP_PM_GOODSCHANGEHISTORY GH
  2970. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  2971. INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID
  2972. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID
  2973. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2974. WHERE
  2975. GH.CREATETIME >= @DATEBEGIN@
  2976. AND GH.CREATETIME < @DATEEND@
  2977. AND GH.DATATYPE IN ( 3, 4 )
  2978. AND G.SCRAPSUMFLAG = '1'
  2979. UNION ALL-- 工序报损
  2980. SELECT
  2981. gdd.groutingdailydetailid,
  2982. 1 SCRAPNUM
  2983. FROM
  2984. TP_PM_SCRAPPRODUCT SP
  2985. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  2986. AND HGDI.ITEMTYPE = 2
  2987. AND HGDI.ITEMID = SP.PROCEDUREID
  2988. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  2989. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  2990. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  2991. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2992. WHERE
  2993. SP.AUDITSTATUS = 1
  2994. AND SP.AUDITDATE >= @DATEBEGIN@
  2995. AND SP.AUDITDATE < @DATEEND@ -- AND SP.SCRAPTYPE IN (0, 2, 3)
  2996. UNION ALL-- 工序报损撤销
  2997. SELECT
  2998. gdd.groutingdailydetailid,
  2999. -1 SCRAPNUM
  3000. FROM
  3001. TP_PM_SCRAPPRODUCT SP
  3002. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  3003. AND HGDI.ITEMTYPE = 2
  3004. AND HGDI.ITEMID = SP.PROCEDUREID
  3005. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  3006. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  3007. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  3008. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  3009. WHERE
  3010. SP.AUDITSTATUS = 1
  3011. AND SP.VALUEFLAG = '0'
  3012. AND SP.BACKOUTTIME >= @DATEBEGIN@
  3013. AND SP.BACKOUTTIME < @DATEEND@ -- AND SP.SCRAPTYPE IN (0, 2, 3)
  3014. UNION ALL-- 干补报损
  3015. ---------------------------------------------------
  3016. SELECT
  3017. groutingdailydetailid,
  3018. 1
  3019. FROM
  3020. (
  3021. SELECT
  3022. SP.GOODSCODE,
  3023. GDD.MATERIALCODE SAPCODE,
  3024. PD.USERCODE,
  3025. gdd.groutingdailydetailid,
  3026. CASE
  3027. WHEN HGDI.WORKSHOP = 2
  3028. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  3029. 1
  3030. WHEN HGDI.WORKSHOP = 2
  3031. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  3032. 2
  3033. WHEN HGDI.WORKSHOP = 3 THEN
  3034. 3 ELSE 4
  3035. END AS WORKSHOP,
  3036. GDD.TESTMOULDFLAG,
  3037. G.GOODS_LINE_CODE,
  3038. TO_CHAR( SP.AUDITDATE, 'yymm' ) || '5000E' AS CHARG --TO_CHAR(SP.AUDITDATE, 'yyyymm') AS CHARG
  3039. FROM
  3040. (
  3041. SELECT
  3042. T.*
  3043. FROM
  3044. (
  3045. SELECT
  3046. SP.BARCODE,
  3047. SP.GOODSCODE,
  3048. SP.GROUTINGDAILYDETAILID,
  3049. PD.PROCEDUREID,
  3050. PD.PRODUCTIONDATAID,
  3051. SP.AUDITDATE,
  3052. RANK ( ) OVER ( PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC ) AS RK
  3053. FROM
  3054. TP_PM_SCRAPPRODUCT SP
  3055. INNER JOIN TP_PM_PRODUCTIONDATA PD ON SP.BARCODE = PD.BARCODE -- 不包含干补工序
  3056. AND PD.PROCEDUREID <> 18 -- 要找干补之前的工序
  3057. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  3058. AND PD.VALUEFLAG = '1'
  3059. WHERE
  3060. SP.AUDITSTATUS = 1
  3061. AND SP.PROCEDUREID = 18
  3062. AND SP.AUDITDATE >= @DATEBEGIN@
  3063. AND SP.AUDITDATE < @DATEEND@
  3064. ) T
  3065. WHERE
  3066. T.RK <= 1
  3067. ) SP
  3068. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE IN ( 20,30,40 )
  3069. AND HGDI.ITEMTYPE = 2
  3070. AND HGDI.ITEMID = SP.PROCEDUREID
  3071. INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  3072. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  3073. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  3074. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  3075. ) )TT GROUP BY TT.GROUTINGDAILYDETAILID,TT.SCRAPNUM) a
  3076. LEFT JOIN (SELECT groutingdailydetailid,SCRAPNUM,COUNT(*) countt
  3077. FROM tsap_hegii_datalog_bg_detail THDBD
  3078. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  3079. WHERE THDBD.SCRAPNUM NOT IN (0)
  3080. AND THDB.DATACODE IN (20,30,40)
  3081. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  3082. GROUP BY groutingdailydetailid,SCRAPNUM) tt
  3083. ON tt.groutingdailydetailid = a.groutingdailydetailid
  3084. AND tt.SCRAPNUM = a.SCRAPNUM ) s
  3085. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  3086. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  3087. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  3088. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.损坯数_车间 )B ON A.损坯数_车间 = B.损坯数_车间
  3089. )O
  3090. UNION ALL
  3091. SELECT O.质量登记数_车间,'质量登记数_'||NVL(O.质量登记数_差异量,0),5 NUM FROM(
  3092. SELECT A.质量登记数_车间,B.质量登记数_差异量 FROM(
  3093. SELECT 1 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3094. SELECT 1 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3095. SELECT 1 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3096. SELECT 1 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3097. SELECT 2 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3098. SELECT 2 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3099. SELECT 2 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3100. SELECT 2 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3101. SELECT 3 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3102. SELECT 3 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3103. SELECT 3 质量登记数_车间,NULL 质量登记数_差异量 FROM dual UNION ALL
  3104. SELECT 3 质量登记数_车间,NULL 质量登记数_差异量 FROM dual) A
  3105. LEFT JOIN(
  3106. SELECT
  3107. TT.质量登记数_车间,
  3108. SUM(TT.质量登记数_差异量) 质量登记数_差异量
  3109. FROM(
  3110. SELECT
  3111. CASE WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  3112. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN 1
  3113. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  3114. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN 2
  3115. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END 质量登记数_车间,
  3116. CASE WHEN T.outputnum * T.counts = NULL THEN 0 ELSE T.outputnum * T.counts END 质量登记数_差异量
  3117. FROM(
  3118. SELECT s.groutingdailydetailid,s.outputnum,NVL(s.counts,0) counts,NVL(s.countt,0) countt
  3119. FROM (SELECT a.groutingdailydetailid,a.outputnum,a.counts,tt.countt
  3120. FROM (SELECT groutingdailydetailid,outputnum,COUNT(*) counts
  3121. FROM (SELECT groutingdailydetailid,
  3122. 1 outputnum
  3123. FROM (SELECT
  3124. T.groutingdailydetailid
  3125. FROM (SELECT GDD.groutingdailydetailid
  3126. FROM TP_PM_SCRAPPRODUCT SP
  3127. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  3128. ON HGDI.DATACODE = '50'
  3129. AND HGDI.ITEMTYPE = 2
  3130. AND HGDI.ITEMID = SP.PROCEDUREID
  3131. INNER JOIN TP_PM_PRODUCTIONDATA PD
  3132. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  3133. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  3134. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  3135. INNER JOIN TP_MST_GOODS G
  3136. ON G.GOODSID = PD.GOODSID
  3137. INNER JOIN TP_MST_GOODSTYPE GT
  3138. ON G.GOODSTYPEID = GT.GOODSTYPEID
  3139. WHERE SP.AUDITSTATUS = 1
  3140. AND SP.AUDITDATE >= @DATEBEGIN@
  3141. AND SP.AUDITDATE < @DATEEND@
  3142. --AND SP.SCRAPTYPE IN (0, 2, 3)
  3143. ) T)
  3144. ---------------------------------------------------
  3145. UNION ALL
  3146. -- 工序报损撤销
  3147. ---------------------------------------------------
  3148. SELECT groutingdailydetailid,
  3149. -1 SCRAPNUM
  3150. FROM (SELECT
  3151. T.groutingdailydetailid
  3152. FROM (SELECT gdd.groutingdailydetailid
  3153. FROM TP_PM_SCRAPPRODUCT SP
  3154. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  3155. ON HGDI.DATACODE = '50'
  3156. AND HGDI.ITEMTYPE = 2
  3157. AND HGDI.ITEMID = SP.PROCEDUREID
  3158. INNER JOIN TP_PM_PRODUCTIONDATA PD
  3159. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  3160. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  3161. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  3162. INNER JOIN TP_MST_GOODS G
  3163. ON G.GOODSID = PD.GOODSID
  3164. INNER JOIN TP_MST_GOODSTYPE GT
  3165. ON G.GOODSTYPEID = GT.GOODSTYPEID
  3166. WHERE SP.AUDITSTATUS = 1
  3167. AND SP.BACKOUTTIME >= @DATEBEGIN@
  3168. AND SP.BACKOUTTIME < @DATEEND@
  3169. --AND SP.SCRAPTYPE IN (0, 2, 3)
  3170. ) T)
  3171. ---------------------------------------------------
  3172. UNION ALL
  3173. -- 干补报损
  3174. ---------------------------------------------------
  3175. SELECT groutingdailydetailid,
  3176. 1
  3177. FROM (SELECT SP.groutingdailydetailid
  3178. FROM (SELECT T.*
  3179. FROM (SELECT SP.BARCODE,
  3180. SP.GOODSCODE,
  3181. SP.groutingdailydetailid,
  3182. PD.PROCEDUREID,
  3183. PD.PRODUCTIONDATAID,
  3184. SP.AUDITDATE,
  3185. RANK() OVER(PARTITION BY SP.BARCODE ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  3186. FROM TP_PM_SCRAPPRODUCT SP
  3187. INNER JOIN TP_PM_PRODUCTIONDATA PD
  3188. ON SP.BARCODE = PD.BARCODE
  3189. -- 不包含干补工序
  3190. AND PD.PROCEDUREID <> 18
  3191. -- 要找干补之前的工序
  3192. AND PD.PRODUCTIONDATAID < SP.PRODUCTIONDATAID
  3193. AND PD.VALUEFLAG = '1'
  3194. WHERE SP.AUDITSTATUS = 1
  3195. AND SP.PROCEDUREID = 18
  3196. AND SP.AUDITDATE >= @DATEBEGIN@
  3197. AND SP.AUDITDATE < @DATEEND@) T
  3198. WHERE T.RK <= 1) SP
  3199. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  3200. ON HGDI.DATACODE = '50'
  3201. AND HGDI.ITEMTYPE = 2
  3202. AND HGDI.ITEMID = SP.PROCEDUREID
  3203. INNER JOIN TP_PM_PRODUCTIONDATA PD
  3204. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  3205. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  3206. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  3207. INNER JOIN TP_MST_GOODS G
  3208. ON G.GOODSID = PD.GOODSID
  3209. INNER JOIN TP_MST_GOODSTYPE GT
  3210. ON G.GOODSTYPEID = GT.GOODSTYPEID))
  3211. GROUP BY groutingdailydetailid,outputnum) a
  3212. LEFT JOIN (SELECT groutingdailydetailid,SCRAPNUM outputnum,COUNT(*) countt
  3213. FROM tsap_hegii_datalog_bg_detail THDBD
  3214. LEFT JOIN TSAP_HEGII_DATALOG_BG THDB ON THDBD.LOGID = THDB.LOGID
  3215. WHERE THDBD.SCRAPNUM NOT IN (0)
  3216. AND THDB.DATACODE IN (50)
  3217. AND THDB.YYYYMMDD>=TO_CHAR(@DATEBEGIN@,'YYYYMMDD') AND THDB.YYYYMMDD<TO_CHAR(@DATEEND@,'YYYYMMDD')
  3218. GROUP BY groutingdailydetailid,SCRAPNUM) tt
  3219. ON tt.groutingdailydetailid = a.groutingdailydetailid
  3220. AND tt.outputnum = a.outputnum ) s
  3221. WHERE NVL(s.counts,0)!=NVL(s.countt,0))T
  3222. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON T.groutingdailydetailid = GDD.groutingdailydetailid
  3223. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  3224. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID)TT GROUP BY TT.质量登记数_车间 )B ON A.质量登记数_车间 = B.质量登记数_车间
  3225. )O
  3226. )Q ORDER BY Q.注浆数_车间,Q.NUM
  3227. ";
  3228. DateTime dateend = Convert.ToDateTime(context.Request["dateendMaster"]).AddDays(1);
  3229. DateTime datebeginone = Convert.ToDateTime(context.Request["datebeginMaster"]).AddDays(-1);
  3230. List<CDAParameter> sqlPara = new List<CDAParameter>();
  3231. sqlPara.Add(new CDAParameter("DATEBEGIN", context.Request["datebeginMaster"].ToString(), DataType.DateTime));
  3232. sqlPara.Add(new CDAParameter("DATEBEGINONE", datebeginone, DataType.DateTime));
  3233. sqlPara.Add(new CDAParameter("DATEEND", dateend, DataType.DateTime));
  3234. //sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
  3235. JsonResult data = Easyui.ExecuteJsonResult(conn, sqlStr, sqlPara);
  3236. context.Response.Write(data.ToJson());
  3237. }
  3238. //子表2
  3239. if(context.Request["m"].ToString()=="2")
  3240. {
  3241. //读取报表数据
  3242. string sqlStr = @"
  3243. SELECT
  3244. '测试子表2' AS 测试列1,
  3245. '测试子表2' AS 测试列2,
  3246. '测试子表2' AS 测试列3,
  3247. '测试子表2' AS 测试列4,
  3248. '测试子表2' AS 测试列5
  3249. FROM
  3250. DUAL
  3251. ";
  3252. List<CDAParameter> sqlPara = new List<CDAParameter>();
  3253. //sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
  3254. JsonResult data = Easyui.ExecuteJsonResult(conn, sqlStr, sqlPara);
  3255. context.Response.Write(data.ToJson());
  3256. }
  3257. }
  3258. }
  3259. public bool IsReusable
  3260. {
  3261. get
  3262. {
  3263. return false;
  3264. }
  3265. }
  3266. }