rpt.ashx 180 KB

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