SAPDataLogicPartial.cs 160 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Net;
  8. using System.Reflection;
  9. using System.Text;
  10. using System.Threading;
  11. using Dongke.IBOSS.PRD.Basics.BaseResources;
  12. using Dongke.IBOSS.PRD.Basics.DataAccess;
  13. using Dongke.IBOSS.PRD.Basics.Library;
  14. using Dongke.IBOSS.PRD.Service.WMSDataService;
  15. using Dongke.IBOSS.PRD.WCF.DataModels;
  16. using Newtonsoft.Json.Linq;
  17. using Oracle.ManagedDataAccess.Client;
  18. using static System.Net.WebRequestMethods;
  19. namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
  20. {
  21. public partial class SAPDataLogic
  22. {
  23. #region 跨车间作业
  24. /// <summary>
  25. /// 同步SAP数据(自动)
  26. /// </summary>
  27. /// <param name="date"></param>
  28. public static void CrossWorkshopToSAP(DateTime date, DateTime ndate)
  29. {
  30. IDBTransaction oracleConn = null;
  31. ServiceResultEntity sre = new ServiceResultEntity();
  32. OracleParameter[] paras = null;
  33. int logid = 0;
  34. string message = string.Empty;
  35. string sqlString = string.Empty;
  36. try
  37. {
  38. #region 生成日志
  39. paras = new OracleParameter[]
  40. {
  41. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  42. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  43. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  44. };
  45. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  46. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_kcjzy", paras);
  47. int.TryParse(paras[1].Value + "", out logid);
  48. message = paras[2].Value + "";
  49. oracleConn.Commit();
  50. #endregion
  51. #region 同步SAP
  52. // 手动推
  53. //logid = 28;
  54. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  55. sqlString = @"
  56. SELECT TO_CHAR(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  57. TO_CHAR(B.EXECUTEDATEEND - 1 / 24 / 60 / 60, 'yyyymmddhh24miss') AS ZYWJS,
  58. TO_CHAR(SYSDATE, 'yyyymmddhh24miss') AS ZMONT,
  59. A.WORKCODE AS WERKS,
  60. A.SAPCODE AS MATNR,
  61. A.GOODSCODE AS GROES,
  62. A.WORKSHOP AS ZSCCJ,
  63. A.WORKSHOP AS ZSSCJ,
  64. A.DATACODE AS ZJDNU,
  65. A.ITEM AS ZZYLX,
  66. A.NUM AS MENGE,
  67. 'T' AS ZSCS,
  68. CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  69. '' AS ZTYPE1,
  70. '' AS ZMSG1
  71. FROM TSAP_HEGII_WORKDATA_KCJZY A
  72. INNER JOIN TSAP_HEGII_DATALOG_KCJZY B
  73. ON B.LOGID = A.LOGID
  74. WHERE A.LOGID = :LOGID ";
  75. paras = new OracleParameter[]
  76. {
  77. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  78. };
  79. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  80. //sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  81. //string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  82. if (workData != null && workData.Rows.Count > 0)
  83. {
  84. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  85. // 配置文件
  86. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  87. string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  88. // 测试
  89. //string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  90. // 正式
  91. //string url033 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM033";
  92. string ztype, msg = string.Empty;
  93. try
  94. {
  95. string result = PostData(url033, postString, "POST");
  96. ztype = JObject.Parse(result)["ZTYPE"].ToString();
  97. msg = JObject.Parse(result)["ZMSG"].ToString();
  98. }
  99. catch (Exception ex)
  100. {
  101. ztype = "E";
  102. msg = ex.Message;
  103. }
  104. sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  105. paras = new OracleParameter[]
  106. {
  107. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  108. new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  109. new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  110. };
  111. oracleConn.ExecuteNonQuery(sqlString, paras);
  112. oracleConn.Commit();
  113. }
  114. #endregion
  115. }
  116. catch (Exception ex)
  117. {
  118. OutputLog.TraceLog(LogPriority.Error,
  119. "CrossWorkshopToSAP",
  120. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  121. ex.ToString(),
  122. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  123. }
  124. finally
  125. {
  126. if (oracleConn != null)
  127. {
  128. oracleConn.Close();
  129. }
  130. }
  131. }
  132. public static void CrossWorkshopToSAP_test(DateTime date, DateTime ndate)
  133. {
  134. IDBTransaction oracleConn = null;
  135. ServiceResultEntity sre = new ServiceResultEntity();
  136. int logid = 0;
  137. string message = string.Empty;
  138. string sqlString = string.Empty;
  139. try
  140. {
  141. #region 同步SAP
  142. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  143. //sqlString = "select workcode from tp_mst_account where rownum = 1";
  144. //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  145. //workcode = "5000";
  146. sqlString = @"SELECT
  147. to_char(:v_datebegin, 'yyyymmddhh24miss') AS ZYWKS,
  148. to_char(:in_dateend, 'yyyymmddhh24miss') AS ZYWJS,
  149. to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,
  150. '5000' AS WERKS,
  151. MATERIALCODE AS MATNR,
  152. GOODSCODE AS GROES,
  153. to_char(WORKSHOP) AS ZSCCJ,
  154. to_char(DATACODE) AS ZJDNU,
  155. to_char(ITEM) AS ZZYLX,
  156. to_char(count( * )) AS MENGE,
  157. 'T' AS ZSCS,
  158. CASE WHEN TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  159. '' AS ZTYPE1,
  160. '' AS ZMSG1
  161. FROM
  162. (--产量
  163. SELECT
  164. GDD.MATERIALCODE,
  165. gdd.goodscode,
  166. HGDI.WORKSHOP,
  167. HGDI.DATACODE,
  168. 1 AS ITEM,
  169. GDD.TESTMOULDFLAG,
  170. G.GOODS_LINE_CODE AS ZSCS
  171. FROM
  172. TP_PM_PRODUCTIONDATA PD
  173. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  174. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  175. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  176. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  177. AND HGDI.ITEMTYPE = 1
  178. AND HGDI.ITEMID = PD.PROCEDUREID
  179. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  180. WHERE
  181. PD.VALUEFLAG = 1
  182. AND PD.CREATETIME >= :v_datebegin
  183. AND PD.CREATETIME < :in_dateend
  184. AND(
  185. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  186. OR(
  187. HGDI.WORKSHOP = 3
  188. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  189. )
  190. )
  191. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  192. UNION ALL
  193. --产量撤销
  194. SELECT
  195. GDD.MATERIALCODE,
  196. GDD.goodscode,
  197. HGDI.WORKSHOP,
  198. HGDI.DATACODE AS DATACODE,
  199. 2 AS ITEM,
  200. GDD.TESTMOULDFLAG,
  201. G.GOODS_LINE_CODE AS ZSCS
  202. FROM
  203. TP_PM_PRODUCTIONDATA PD
  204. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  205. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  206. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  207. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  208. AND HGDI.ITEMID = PD.PROCEDUREID
  209. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  210. WHERE
  211. PD.VALUEFLAG = 0
  212. AND PD.BACKOUTTIME >= :v_datebegin
  213. AND PD.BACKOUTTIME < :in_dateend
  214. AND(
  215. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  216. OR(
  217. HGDI.WORKSHOP = 3
  218. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  219. )
  220. )
  221. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损
  222. UNION ALL
  223. SELECT
  224. GDD.MATERIALCODE,
  225. GDD.goodscode,
  226. HGDI.WORKSHOP,
  227. HGDI.DATACODE AS DATACODE,
  228. 3 AS ITEM,
  229. GDD.TESTMOULDFLAG,
  230. G.GOODS_LINE_CODE AS ZSCS
  231. FROM
  232. TP_PM_SCRAPPRODUCT SP
  233. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  234. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  235. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  236. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  237. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  238. AND HGDI.ITEMTYPE = 2
  239. AND HGDI.ITEMID = PD.PROCEDUREID
  240. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  241. WHERE
  242. SP.AUDITSTATUS = 1
  243. AND SP.AUDITDATE >= :v_datebegin
  244. AND SP.AUDITDATE < :in_dateend
  245. AND(
  246. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  247. OR(
  248. HGDI.WORKSHOP = 3
  249. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  250. )
  251. )
  252. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损撤销
  253. UNION ALL
  254. SELECT
  255. GDD.MATERIALCODE,
  256. GDD.goodscode,
  257. HGDI.WORKSHOP,
  258. HGDI.DATACODE AS DATACODE,
  259. 4 AS ITEM,
  260. GDD.TESTMOULDFLAG,
  261. G.GOODS_LINE_CODE AS ZSCS
  262. FROM
  263. TP_PM_SCRAPPRODUCT SP
  264. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  265. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  266. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  267. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  268. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  269. AND HGDI.ITEMTYPE = 2
  270. AND HGDI.ITEMID = PD.PROCEDUREID
  271. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  272. WHERE
  273. SP.AUDITSTATUS = 1
  274. AND SP.VALUEFLAG = '0'
  275. AND SP.BACKOUTTIME >= :v_datebegin
  276. AND SP.BACKOUTTIME < :in_dateend
  277. AND(
  278. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  279. OR(
  280. HGDI.WORKSHOP = 3
  281. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  282. )
  283. )
  284. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 盘点清除
  285. UNION ALL
  286. SELECT
  287. GDD.MATERIALCODE,
  288. GDD.GOODSCODE,
  289. HGDI.WORKSHOP,
  290. HGDI.DATACODE,
  291. 5 AS ITEM,
  292. GDD.TESTMOULDFLAG ,
  293. G.GOODS_LINE_CODE AS ZSCS
  294. FROM
  295. TP_PM_GOODSCHANGEHISTORY GH
  296. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  297. INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID
  298. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  299. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  300. AND HGDI.ITEMTYPE = 2
  301. AND HGDI.ITEMID = GH.OTHERID
  302. WHERE
  303. GH.CREATETIME >= :v_datebegin
  304. AND GH.CREATETIME < :in_dateend
  305. AND GH.DATATYPE IN( 11, 12 )
  306. AND(
  307. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  308. OR(
  309. HGDI.WORKSHOP = 3
  310. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  311. )
  312. )
  313. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 干补
  314. UNION ALL
  315. SELECT
  316. GDD.MATERIALCODE,
  317. GDD.GOODSCODE,
  318. HGDI.WORKSHOP,
  319. HGDI.DATACODE,
  320. 6 AS ITEM,
  321. GDD.TESTMOULDFLAG,
  322. G.GOODS_LINE_CODE AS ZSCS
  323. FROM
  324. TP_PM_SCRAPPRODUCT SP
  325. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  326. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  327. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  328. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  329. AND HGDI.ITEMTYPE = 2
  330. AND HGDI.ITEMID = SP.PROCEDUREID
  331. WHERE
  332. SP.AUDITSTATUS = 1
  333. AND SP.VALUEFLAG = '1'
  334. AND SP.GOODSLEVELTYPEID = 9
  335. AND SP.SPECIALREPAIRTIME >= :v_datebegin
  336. AND SP.SPECIALREPAIRTIME < :in_dateend
  337. AND(
  338. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  339. OR(
  340. HGDI.WORKSHOP = 3
  341. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  342. )
  343. )
  344. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 回收
  345. UNION ALL
  346. SELECT
  347. GDD.MATERIALCODE,
  348. GDD.GOODSCODE,
  349. HGDI.WORKSHOP,
  350. HGDI.DATACODE,
  351. 7 AS ITEM,
  352. GDD.TESTMOULDFLAG,
  353. G.GOODS_LINE_CODE AS ZSCS
  354. FROM
  355. TP_PM_SCRAPPRODUCT SP
  356. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  357. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  358. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  359. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  360. AND HGDI.ITEMTYPE = 2
  361. AND HGDI.ITEMID = SP.PROCEDUREID
  362. WHERE
  363. SP.AUDITSTATUS = 1
  364. AND SP.VALUEFLAG = '1'
  365. AND SP.RECYCLINGFLAG = '1'
  366. AND SP.RECYCLINGTIME >= :v_datebegin
  367. AND SP.RECYCLINGTIME < :in_dateend
  368. AND(
  369. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  370. OR(
  371. HGDI.WORKSHOP = 3
  372. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  373. )
  374. )
  375. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  376. )
  377. GROUP BY
  378. MATERIALCODE,
  379. GOODSCODE,
  380. WORKSHOP,
  381. DATACODE,
  382. ITEM,
  383. TESTMOULDFLAG,
  384. ZSCS
  385. ORDER BY
  386. DATACODE,
  387. ITEM,
  388. WORKSHOP";
  389. OracleParameter[] paras = new OracleParameter[]
  390. {
  391. new OracleParameter(":v_datebegin", OracleDbType.Date, date, ParameterDirection.Input),
  392. new OracleParameter(":in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  393. };
  394. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  395. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  396. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  397. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  398. {
  399. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  400. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  401. //string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  402. string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  403. string result = PostData(url033, postString, "POST");
  404. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  405. string msg = JObject.Parse(result)["ZMSG"].ToString();
  406. //sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  407. //paras = new OracleParameter[]
  408. //{
  409. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  410. // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  411. // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  412. //};
  413. //oracleConn.ExecuteNonQuery(sqlString, paras);
  414. oracleConn.Commit();
  415. }
  416. #endregion
  417. }
  418. catch (Exception ex)
  419. {
  420. OutputLog.TraceLog(LogPriority.Error,
  421. "CrossWorkshopToSAP",
  422. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  423. ex.ToString(),
  424. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  425. }
  426. finally
  427. {
  428. if (oracleConn != null)
  429. {
  430. oracleConn.Close();
  431. }
  432. }
  433. }
  434. /// <summary>
  435. /// 查询跨车间作业同步日志
  436. /// </summary>
  437. /// <param name="cre"></param>
  438. /// <param name="userInfo"></param>
  439. /// <returns></returns>
  440. public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre)
  441. {
  442. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  443. ServiceResultEntity sre = new ServiceResultEntity();
  444. try
  445. {
  446. string sqlString = "SELECT\n" +
  447. " dl.logid,\n" +
  448. " dl.begintime,\n" +
  449. " dl.endtime,\n" +
  450. " dl.yyyymmdd,\n" +
  451. " dl.workcode,\n" +
  452. " dl.datastuts,\n" +
  453. " dl.datamsg,\n" +
  454. " dl.executedatebegin,\n" +
  455. " dl.executedateend,\n" +
  456. " u.usercode synusercode\n" +
  457. "FROM\n" +
  458. " tsap_hegii_datalog_kcjzy dl\n" +
  459. " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" +
  460. "WHERE\n" +
  461. " dl.EXECUTEDATEBEGIN >= :datebegin \n" +
  462. " AND dl.EXECUTEDATEEND <= :dateend \n";
  463. OracleParameter[] oracleParameter = new OracleParameter[]
  464. {
  465. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  466. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  467. };
  468. string datastuts = cre.Properties["datastuts"] + "";
  469. if (!string.IsNullOrEmpty(datastuts))
  470. {
  471. sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  472. }
  473. sqlString += "ORDER BY dl.logid DESC\n";
  474. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  475. return sre;
  476. }
  477. catch (Exception ex)
  478. {
  479. throw ex;
  480. }
  481. finally
  482. {
  483. if (oracleConn != null)
  484. {
  485. oracleConn.Close();
  486. }
  487. }
  488. }
  489. /// <summary>
  490. /// 查询同步明细
  491. /// </summary>
  492. /// <param name="logid"></param>
  493. /// <param name="userInfo"></param>
  494. /// <returns></returns>
  495. public static ServiceResultEntity GetWorkData_kczzy(ClientRequestEntity cre)
  496. {
  497. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  498. ServiceResultEntity sre = new ServiceResultEntity();
  499. try
  500. {
  501. int logid = Convert.ToInt32(cre.Request);
  502. string sqlString = "\n" +
  503. "select wd.workshop\n" +
  504. " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " +
  505. " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" +
  506. " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" +
  507. " ,item\n" +
  508. " ,wd.datacode\n" +
  509. " ,dc.datacodename\n" +
  510. " ,wd.goodscode\n" +
  511. " ,wd.sapcode\n" +
  512. " ,wd.num\n" +
  513. " ,wd.createtime\n" +
  514. " ,wd.testmouldflag\n" +
  515. " ,wd.zscs\n" +
  516. " ,case when wd.zscs = 'L' then '立浇【L】' when wd.zscs = 'G' then '高压【G】' when wd.zscs = 'M' then '粘接高压(三水厂)【M】' when wd.zscs = 'Q' then '吊装线【Q】' else '-' end as zscsname\n" +
  517. " ,wd.logid\n" +
  518. " from tsap_hegii_workdata_kcjzy wd\n" +
  519. " inner join tsap_hegii_datacode dc\n" +
  520. " on dc.datacode = wd.datacode\n";
  521. if (logid > 0)
  522. {
  523. sqlString += " where wd.logid = :logid \n";
  524. }
  525. else
  526. {
  527. sqlString += " inner join tsap_hegii_datalog_kcjzy dl\n" +
  528. " on wd.logid=dl.logid \n" +
  529. " where dl.EXECUTEDATEBEGIN>= :datebegin \n" +
  530. " and dl.EXECUTEDATEEND<= :dateend \n";
  531. }
  532. sqlString += " order by wd.datacode,wd.item,wd.workshop \n";
  533. OracleParameter[] oracleParameter = new OracleParameter[]
  534. {
  535. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  536. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  537. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  538. };
  539. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  540. return sre;
  541. }
  542. catch (Exception ex)
  543. {
  544. throw ex;
  545. }
  546. finally
  547. {
  548. if (oracleConn != null)
  549. {
  550. oracleConn.Close();
  551. }
  552. }
  553. }
  554. #endregion
  555. #region 报工
  556. ///// <summary>
  557. ///// 同步SAP数据(自动)
  558. ///// </summary>
  559. ///// <param name="date"></param>
  560. //public static void AutoWorkDataToSAP5000(DateTime date, string funCode)
  561. //{
  562. // if (string.IsNullOrWhiteSpace(funCode))
  563. // {
  564. // //return;
  565. // funCode = "ALL";
  566. // }
  567. // funCode = "," + funCode + ",";
  568. // ServiceResultEntity sre = null;
  569. // // 10 模具
  570. // if (funCode == ",ALL," || funCode.Contains(",10,"))
  571. // {
  572. // try
  573. // {
  574. // sre = SetWorkData10_50(date, "10", 0);
  575. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  576. // "S" != sre.Result + "")
  577. // {
  578. // OutputLog.TraceLog(LogPriority.Warning,
  579. // "AutoWorkDataToSAP",
  580. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  581. // JsonHelper.ToJson(sre),
  582. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  583. // }
  584. // }
  585. // catch (Exception ex)
  586. // {
  587. // OutputLog.TraceLog(LogPriority.Error,
  588. // "AutoWorkDataToSAP",
  589. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  590. // ex.ToString(),
  591. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  592. // }
  593. // }
  594. // // 20 湿坯
  595. // if (funCode == ",ALL," || funCode.Contains(",20,"))
  596. // {
  597. // try
  598. // {
  599. // sre = SetWorkData10_50(date, "20", 0);
  600. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  601. // "S" != sre.Result + "")
  602. // {
  603. // OutputLog.TraceLog(LogPriority.Warning,
  604. // "AutoWorkDataToSAP",
  605. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  606. // JsonHelper.ToJson(sre),
  607. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  608. // }
  609. // }
  610. // catch (Exception ex)
  611. // {
  612. // OutputLog.TraceLog(LogPriority.Error,
  613. // "AutoWorkDataToSAP",
  614. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  615. // ex.ToString(),
  616. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  617. // }
  618. // }
  619. // // 30 精坯
  620. // if (funCode == ",ALL," || funCode.Contains(",30,"))
  621. // {
  622. // try
  623. // {
  624. // sre = SetWorkData10_50(date, "30", 0);
  625. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  626. // "S" != sre.Result + "")
  627. // {
  628. // OutputLog.TraceLog(LogPriority.Warning,
  629. // "AutoWorkDataToSAP",
  630. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  631. // JsonHelper.ToJson(sre),
  632. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  633. // }
  634. // }
  635. // catch (Exception ex)
  636. // {
  637. // OutputLog.TraceLog(LogPriority.Error,
  638. // "AutoWorkDataToSAP",
  639. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  640. // ex.ToString(),
  641. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  642. // }
  643. // }
  644. // // 40 釉坯
  645. // if (funCode == ",ALL," || funCode.Contains(",40,"))
  646. // {
  647. // try
  648. // {
  649. // sre = SetWorkData10_50(date, "40", 0);
  650. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  651. // "S" != sre.Result + "")
  652. // {
  653. // OutputLog.TraceLog(LogPriority.Warning,
  654. // "AutoWorkDataToSAP",
  655. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  656. // JsonHelper.ToJson(sre),
  657. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  658. // }
  659. // }
  660. // catch (Exception ex)
  661. // {
  662. // OutputLog.TraceLog(LogPriority.Error,
  663. // "AutoWorkDataToSAP",
  664. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  665. // ex.ToString(),
  666. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  667. // }
  668. // }
  669. // // 50 烧成
  670. // if (funCode == ",ALL," || funCode.Contains(",50,"))
  671. // {
  672. // try
  673. // {
  674. // sre = SetWorkData10_50(date, "50", 0);
  675. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  676. // "S" != sre.Result + "")
  677. // {
  678. // OutputLog.TraceLog(LogPriority.Warning,
  679. // "AutoWorkDataToSAP",
  680. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  681. // JsonHelper.ToJson(sre),
  682. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  683. // }
  684. // }
  685. // catch (Exception ex)
  686. // {
  687. // OutputLog.TraceLog(LogPriority.Error,
  688. // "AutoWorkDataToSAP",
  689. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  690. // ex.ToString(),
  691. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  692. // }
  693. // }
  694. // //// 6001 成品明细
  695. // //if (funCode == ",ALL," || funCode.Contains(",6001,"))
  696. // //{
  697. // // try
  698. // // {
  699. // // sre = SetFP6001(date, 0);
  700. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  701. // // "S" != sre.Result + "")
  702. // // {
  703. // // OutputLog.TraceLog(LogPriority.Warning,
  704. // // "AutoWorkDataToSAP",
  705. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  706. // // JsonHelper.ToJson(sre),
  707. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  708. // // }
  709. // // }
  710. // // catch (Exception ex)
  711. // // {
  712. // // OutputLog.TraceLog(LogPriority.Error,
  713. // // "AutoWorkDataToSAP",
  714. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  715. // // ex.ToString(),
  716. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  717. // // }
  718. // //}
  719. // //// 6001 成品明细(小时)-20分钟
  720. // //if (funCode == ",6002,")
  721. // //{
  722. // // try
  723. // // {
  724. // // sre = SetFP6002(date, 0);
  725. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  726. // // "S" != sre.Result + "")
  727. // // {
  728. // // OutputLog.TraceLog(LogPriority.Warning,
  729. // // "AutoWorkDataToSAP",
  730. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  731. // // JsonHelper.ToJson(sre),
  732. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  733. // // }
  734. // // }
  735. // // catch (Exception ex)
  736. // // {
  737. // // OutputLog.TraceLog(LogPriority.Error,
  738. // // "AutoWorkDataToSAP",
  739. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  740. // // ex.ToString(),
  741. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  742. // // }
  743. // //}
  744. //}
  745. /// <summary>
  746. /// 同步SAP数据(自动)(重载)
  747. /// </summary>
  748. /// <param name="date">当前时间</param>
  749. /// <param name="funCode">工序码</param>
  750. /// <param name="ndate">本次要执行到的时间</param>
  751. public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate)
  752. {
  753. if (string.IsNullOrWhiteSpace(funCode))
  754. {
  755. //return;
  756. funCode = "ALL";
  757. }
  758. funCode = "," + funCode + ",";
  759. ServiceResultEntity sre = null;
  760. // 1001 模具生产
  761. if (funCode == ",ALL," || funCode.Contains(",1001,"))
  762. {
  763. try
  764. {
  765. sre = SetWorkData1001_5000("1001", ndate);
  766. if (sre.Status != Constant.ServiceResultStatus.Success ||
  767. "S" != sre.Result + "")
  768. {
  769. OutputLog.TraceLog(LogPriority.Warning,
  770. "AutoWorkDataToSAP5000",
  771. "1001 模具生产 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  772. JsonHelper.ToJson(sre),
  773. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  774. }
  775. }
  776. catch (Exception ex)
  777. {
  778. OutputLog.TraceLog(LogPriority.Error,
  779. "AutoWorkDataToSAP5000",
  780. "1001 模具生产 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  781. ex.ToString(),
  782. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  783. }
  784. }
  785. // 10 模具
  786. if (funCode == ",ALL," || funCode.Contains(",10,"))
  787. {
  788. try
  789. {
  790. sre = SetWorkData10_50_5000("10", ndate);
  791. if (sre.Status != Constant.ServiceResultStatus.Success ||
  792. "S" != sre.Result + "")
  793. {
  794. OutputLog.TraceLog(LogPriority.Warning,
  795. "AutoWorkDataToSAP5000",
  796. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  797. JsonHelper.ToJson(sre),
  798. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  799. }
  800. }
  801. catch (Exception ex)
  802. {
  803. OutputLog.TraceLog(LogPriority.Error,
  804. "AutoWorkDataToSAP5000",
  805. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  806. ex.ToString(),
  807. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  808. }
  809. }
  810. // 20 湿坯
  811. if (funCode == ",ALL," || funCode.Contains(",20,"))
  812. {
  813. try
  814. {
  815. sre = SetWorkData10_50_5000("20", ndate);
  816. if (sre.Status != Constant.ServiceResultStatus.Success ||
  817. "S" != sre.Result + "")
  818. {
  819. OutputLog.TraceLog(LogPriority.Warning,
  820. "AutoWorkDataToSAP5000",
  821. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  822. JsonHelper.ToJson(sre),
  823. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  824. }
  825. }
  826. catch (Exception ex)
  827. {
  828. OutputLog.TraceLog(LogPriority.Error,
  829. "AutoWorkDataToSAP5000",
  830. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  831. ex.ToString(),
  832. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  833. }
  834. }
  835. // 30 精坯
  836. if (funCode == ",ALL," || funCode.Contains(",30,"))
  837. {
  838. try
  839. {
  840. sre = SetWorkData10_50_5000("30", ndate);
  841. if (sre.Status != Constant.ServiceResultStatus.Success ||
  842. "S" != sre.Result + "")
  843. {
  844. OutputLog.TraceLog(LogPriority.Warning,
  845. "AutoWorkDataToSAP5000",
  846. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  847. JsonHelper.ToJson(sre),
  848. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  849. }
  850. }
  851. catch (Exception ex)
  852. {
  853. OutputLog.TraceLog(LogPriority.Error,
  854. "AutoWorkDataToSAP5000",
  855. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  856. ex.ToString(),
  857. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  858. }
  859. }
  860. // 40 釉坯
  861. if (funCode == ",ALL," || funCode.Contains(",40,"))
  862. {
  863. try
  864. {
  865. sre = SetWorkData10_50_5000("40", ndate);
  866. if (sre.Status != Constant.ServiceResultStatus.Success ||
  867. "S" != sre.Result + "")
  868. {
  869. OutputLog.TraceLog(LogPriority.Warning,
  870. "AutoWorkDataToSAP5000",
  871. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  872. JsonHelper.ToJson(sre),
  873. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  874. }
  875. }
  876. catch (Exception ex)
  877. {
  878. OutputLog.TraceLog(LogPriority.Error,
  879. "AutoWorkDataToSAP5000",
  880. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  881. ex.ToString(),
  882. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  883. }
  884. }
  885. // 50 烧成
  886. if (funCode == ",ALL," || funCode.Contains(",50,"))
  887. {
  888. try
  889. {
  890. sre = SetWorkData10_50_5000("50", ndate);
  891. if (sre.Status != Constant.ServiceResultStatus.Success ||
  892. "S" != sre.Result + "")
  893. {
  894. OutputLog.TraceLog(LogPriority.Warning,
  895. "AutoWorkDataToSAP5000",
  896. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  897. JsonHelper.ToJson(sre),
  898. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  899. }
  900. }
  901. catch (Exception ex)
  902. {
  903. OutputLog.TraceLog(LogPriority.Error,
  904. "AutoWorkDataToSAP5000",
  905. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  906. ex.ToString(),
  907. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  908. }
  909. }
  910. // 60 产成品
  911. if (funCode == ",ALL," || funCode.Contains(",60,"))
  912. {
  913. try
  914. {
  915. sre = SyncSap5000_60(ndate);
  916. if (sre.Status != Constant.ServiceResultStatus.Success ||
  917. "S" != sre.Result + "")
  918. {
  919. OutputLog.TraceLog(LogPriority.Warning,
  920. "AutoWorkDataToSAP5000",
  921. "60 产成品 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  922. JsonHelper.ToJson(sre),
  923. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  924. }
  925. }
  926. catch (Exception ex)
  927. {
  928. OutputLog.TraceLog(LogPriority.Error,
  929. "AutoWorkDataToSAP5000",
  930. "60 产成品 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  931. ex.ToString(),
  932. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  933. }
  934. }
  935. }
  936. /// <summary>
  937. /// 商标变更插入数据
  938. /// </summary>
  939. /// <param name="date">当前时间</param>
  940. /// <param name="ndate">本次要执行到的时间</param>
  941. public static void AutoWorkDataToSAP5000SBBG(DateTime ndate )
  942. {
  943. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  944. ServiceResultEntity sre = new ServiceResultEntity();
  945. try
  946. {
  947. // 查询该时间段内的所有商标变更 的条码
  948. string sqlString = "SELECT T.*\n" +
  949. " FROM (SELECT lh.barcode\n" +
  950. " ,lh.oldlogoid\n" +
  951. " ,nvl(gls.materialcode, g.materialcode) materialcode\n" +
  952. " ,nvl(gls1.materialcode, g.materialcode) newmaterialcode\n" +
  953. " ,lh.newlogoid\n" +
  954. " ,gdd.goodsid\n" +
  955. " ,lh.createtime\n" +
  956. " ,lh.SAPFLAG\n" +
  957. " FROM tp_pm_logochangedrecord lh\n" +
  958. " LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
  959. " ON gdd.barcode = lh.barcode\n" +
  960. " INNER JOIN tp_mst_goods g\n" +
  961. " ON g.goodsid = gdd.goodsid\n" +
  962. " LEFT JOIN tp_mst_goodslogosap gls\n" +
  963. " ON gdd.goodsid = gls.goodsid\n" +
  964. " AND gls.logoid = lh.oldlogoid\n" +
  965. " LEFT JOIN tp_mst_goodslogosap gls1\n" +
  966. " ON gdd.goodsid = gls1.goodsid\n" +
  967. " AND gls1.logoid = lh.newlogoid\n" +
  968. " WHERE lh.createtime >= DATE '2024-03-01'\n" +
  969. " AND lh.SAPFLAG = 0 " +
  970. " AND lh.oldlogoid <> lh.newlogoid " +
  971. " AND nvl(gls.materialcode, g.materialcode) <> nvl(gls1.materialcode, g.materialcode) " +
  972. " order by lh.createtime) T\n" +
  973. " WHERE rownum < 15";
  974. DataTable barcodeTable = oracleTrConn.GetSqlResultToDt(sqlString, null);
  975. int returnRows = 0;
  976. if (barcodeTable != null && barcodeTable.Rows.Count > 0)
  977. {
  978. for (int i = 0; i < barcodeTable.Rows.Count; i++)
  979. {
  980. string barcode = barcodeTable.Rows[i]["barcode"].ToString();
  981. string oldMatnr = barcodeTable.Rows[i]["materialcode"].ToString();
  982. string newMatnr = barcodeTable.Rows[i]["newmaterialcode"].ToString();
  983. string cretetime = barcodeTable.Rows[i]["createtime"].ToString();
  984. int logoid = Convert.ToInt32(barcodeTable.Rows[i]["newlogoid"]);
  985. if (oldMatnr != newMatnr)
  986. {
  987. #region 先查询sap数据
  988. DataSet sapDataSet = new DataSet();
  989. //查询变更的型号信息
  990. OracleParameter[] paras = new OracleParameter[]
  991. {
  992. new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  993. new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
  994. new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
  995. new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
  996. };
  997. sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
  998. #endregion
  999. #region sap报工
  1000. if (sapDataSet != null && sapDataSet.Tables.Count > 0 && sapDataSet.Tables[0].Rows.Count > 0 && !string.IsNullOrEmpty(oldMatnr))
  1001. {
  1002. DataTable sapresultTable = sapDataSet.Tables[0];
  1003. //记录所有logid,先设置状态为Q,加完明细改为F
  1004. List<int> logids = new List<int>();
  1005. DataTable dTable = new DataTable();
  1006. //获取总单datacode
  1007. DataView dv = new DataView(sapresultTable);
  1008. dTable = dv.ToTable(true, "DATACODE");
  1009. for (int j = 0; j < dTable.Rows.Count; j++)
  1010. {
  1011. //sap日志总单(不同节点)
  1012. string sqlText = "SELECT SEQ_TSAP_DATALOG_BG.nextval FROM dual";
  1013. //判断有几个节点 20,30,40,50
  1014. #region 20节点
  1015. if (dTable.Rows[j]["DATACODE"].ToString() == "20")
  1016. {
  1017. int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  1018. //记录logid
  1019. logids.Add(logid);
  1020. #region log总单
  1021. sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
  1022. " (LOGID,\n" +
  1023. " LOGTYPE,\n" +
  1024. " BEGINTIME,\n" +
  1025. " YYYYMMDD,\n" +
  1026. " WORKCODE,\n" +
  1027. " DATACODE,\n" +
  1028. " DATASTUTS,\n" +
  1029. " DATAMSG,\n" +
  1030. " DATALOGID,\n" +
  1031. " EXECUTEDATEBEGIN,\n" +
  1032. " EXECUTEDATEEND,\n" +
  1033. " REMARKS,\n" +
  1034. " SAPGUID)\n" +
  1035. " VALUES\n" +
  1036. " (:LOGID,\n" +
  1037. " '4',\n" +
  1038. " SYSDATE,\n" +
  1039. " TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1040. " '5000',\n" +
  1041. " '20',\n" +
  1042. " 'Q',\n" +
  1043. " '',\n" +
  1044. " :LOGID,\n" +
  1045. " SYSDATE,\n" +
  1046. " SYSDATE,\n" +
  1047. " :REMARKS,\n" +
  1048. " SYS_GUID())";
  1049. paras = new OracleParameter[]
  1050. {
  1051. new OracleParameter(":LOGID",logid),
  1052. new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
  1053. };
  1054. returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1055. #endregion
  1056. #region 明细
  1057. DataTable table20 = sapresultTable.Copy();
  1058. DataRow[] drRow20 = table20.Select("DATACODE = 20");
  1059. foreach (DataRow row in drRow20)
  1060. {
  1061. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1062. " (YYYYMMDD,\n" +
  1063. " WORKCODE,\n" +
  1064. " DATACODE,\n" +
  1065. " GOODSCODE,\n" +
  1066. " SAPCODE,\n" +
  1067. " USERCODE,\n" +
  1068. " OUTPUTNUM,\n" +
  1069. " SCRAPNUM,\n" +
  1070. " CLEANUPNUM,\n" +
  1071. " REPAIRNUM,\n" +
  1072. " WORKSHOP,\n" +
  1073. " LOGID,\n" +
  1074. " TESTMOULDFLAG,\n" +
  1075. " ZSCS,\n" +
  1076. " CHARG)\n" +
  1077. " VALUES\n" +
  1078. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1079. " '5000',\n" +
  1080. " '20',\n" +
  1081. " :GOODSCODE,\n" +
  1082. " :SAPCODE,\n" +
  1083. " :USERCODE,\n" +
  1084. " :OUTPUTNUM,\n" +
  1085. " :SCRAPNUM,\n" +
  1086. " :CLEANUPNUM,\n" +
  1087. " :REPAIRNUM,\n" +
  1088. " :WORKSHOP,\n" +
  1089. " :LOGID,\n" +
  1090. " :TESTMOULDFLAG,\n" +
  1091. " :ZSCS,\n" +
  1092. " :CHARG)";
  1093. paras = new OracleParameter[]
  1094. {
  1095. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1096. new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
  1097. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1098. new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
  1099. new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
  1100. new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
  1101. new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
  1102. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1103. new OracleParameter(":LOGID",logid),
  1104. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1105. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1106. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1107. };
  1108. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1109. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1110. " (YYYYMMDD,\n" +
  1111. " WORKCODE,\n" +
  1112. " DATACODE,\n" +
  1113. " GOODSCODE,\n" +
  1114. " SAPCODE,\n" +
  1115. " USERCODE,\n" +
  1116. " OUTPUTNUM,\n" +
  1117. " SCRAPNUM,\n" +
  1118. " CLEANUPNUM,\n" +
  1119. " REPAIRNUM,\n" +
  1120. " WORKSHOP,\n" +
  1121. " LOGID,\n" +
  1122. " TESTMOULDFLAG,\n" +
  1123. " ZSCS,\n" +
  1124. " CHARG)\n" +
  1125. " VALUES\n" +
  1126. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1127. " '5000',\n" +
  1128. " '20',\n" +
  1129. " :GOODSCODE,\n" +
  1130. " :SAPCODE,\n" +
  1131. " :USERCODE,\n" +
  1132. " :OUTPUTNUM,\n" +
  1133. " :SCRAPNUM,\n" +
  1134. " :CLEANUPNUM,\n" +
  1135. " :REPAIRNUM,\n" +
  1136. " :WORKSHOP,\n" +
  1137. " :LOGID,\n" +
  1138. " :TESTMOULDFLAG,\n" +
  1139. " :ZSCS,\n" +
  1140. " :CHARG)";
  1141. paras = new OracleParameter[]
  1142. {
  1143. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1144. new OracleParameter(":SAPCODE",oldMatnr),
  1145. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1146. new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
  1147. new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
  1148. new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
  1149. new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
  1150. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1151. new OracleParameter(":LOGID",logid),
  1152. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1153. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1154. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1155. };
  1156. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1157. }
  1158. #endregion
  1159. }
  1160. #endregion
  1161. #region 30节点
  1162. else if (dTable.Rows[j]["DATACODE"].ToString() == "30")
  1163. {
  1164. int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  1165. //记录logid
  1166. logids.Add(logid);
  1167. sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
  1168. " (LOGID,\n" +
  1169. " LOGTYPE,\n" +
  1170. " BEGINTIME,\n" +
  1171. " YYYYMMDD,\n" +
  1172. " WORKCODE,\n" +
  1173. " DATACODE,\n" +
  1174. " DATASTUTS,\n" +
  1175. " DATAMSG,\n" +
  1176. " DATALOGID,\n" +
  1177. " EXECUTEDATEBEGIN,\n" +
  1178. " EXECUTEDATEEND,\n" +
  1179. " REMARKS,\n" +
  1180. " SAPGUID)\n" +
  1181. " VALUES\n" +
  1182. " (:LOGID,\n" +
  1183. " '4',\n" +
  1184. " SYSDATE,\n" +
  1185. " TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1186. " 5000,\n" +
  1187. " :DATACODE,\n" +
  1188. " 'Q',\n" +
  1189. " '',\n" +
  1190. " :LOGID,\n" +
  1191. " SYSDATE,\n" +
  1192. " SYSDATE,\n" +
  1193. " :REMARKS,\n" +
  1194. " SYS_GUID())";
  1195. paras = new OracleParameter[]
  1196. {
  1197. new OracleParameter(":LOGID",logid),
  1198. new OracleParameter(":DATACODE","30"),
  1199. new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
  1200. };
  1201. returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1202. #region 明细
  1203. DataTable table30 = sapresultTable.Copy();
  1204. DataRow[] drRow30 = table30.Select("DATACODE = 30");
  1205. foreach (DataRow row in drRow30)
  1206. {
  1207. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1208. " (YYYYMMDD,\n" +
  1209. " WORKCODE,\n" +
  1210. " DATACODE,\n" +
  1211. " GOODSCODE,\n" +
  1212. " SAPCODE,\n" +
  1213. " USERCODE,\n" +
  1214. " OUTPUTNUM,\n" +
  1215. " SCRAPNUM,\n" +
  1216. " CLEANUPNUM,\n" +
  1217. " REPAIRNUM,\n" +
  1218. " WORKSHOP,\n" +
  1219. " LOGID,\n" +
  1220. " TESTMOULDFLAG,\n" +
  1221. " ZSCS,\n" +
  1222. " CHARG)\n" +
  1223. " VALUES\n" +
  1224. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1225. " '5000',\n" +
  1226. " '30',\n" +
  1227. " :GOODSCODE,\n" +
  1228. " :SAPCODE,\n" +
  1229. " :USERCODE,\n" +
  1230. " :OUTPUTNUM,\n" +
  1231. " :SCRAPNUM,\n" +
  1232. " :CLEANUPNUM,\n" +
  1233. " :REPAIRNUM,\n" +
  1234. " :WORKSHOP,\n" +
  1235. " :LOGID,\n" +
  1236. " :TESTMOULDFLAG,\n" +
  1237. " :ZSCS,\n" +
  1238. " :CHARG)";
  1239. paras = new OracleParameter[]
  1240. {
  1241. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1242. new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
  1243. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1244. new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
  1245. new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
  1246. new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
  1247. new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
  1248. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1249. new OracleParameter(":LOGID",logid),
  1250. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1251. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1252. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1253. };
  1254. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1255. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1256. " (YYYYMMDD,\n" +
  1257. " WORKCODE,\n" +
  1258. " DATACODE,\n" +
  1259. " GOODSCODE,\n" +
  1260. " SAPCODE,\n" +
  1261. " USERCODE,\n" +
  1262. " OUTPUTNUM,\n" +
  1263. " SCRAPNUM,\n" +
  1264. " CLEANUPNUM,\n" +
  1265. " REPAIRNUM,\n" +
  1266. " WORKSHOP,\n" +
  1267. " LOGID,\n" +
  1268. " TESTMOULDFLAG,\n" +
  1269. " ZSCS,\n" +
  1270. " CHARG)\n" +
  1271. " VALUES\n" +
  1272. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1273. " '5000',\n" +
  1274. " '30',\n" +
  1275. " :GOODSCODE,\n" +
  1276. " :SAPCODE,\n" +
  1277. " :USERCODE,\n" +
  1278. " :OUTPUTNUM,\n" +
  1279. " :SCRAPNUM,\n" +
  1280. " :CLEANUPNUM,\n" +
  1281. " :REPAIRNUM,\n" +
  1282. " :WORKSHOP,\n" +
  1283. " :LOGID,\n" +
  1284. " :TESTMOULDFLAG,\n" +
  1285. " :ZSCS,\n" +
  1286. " :CHARG)";
  1287. paras = new OracleParameter[]
  1288. {
  1289. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1290. new OracleParameter(":SAPCODE",oldMatnr),
  1291. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1292. new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
  1293. new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
  1294. new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
  1295. new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
  1296. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1297. new OracleParameter(":LOGID",logid),
  1298. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1299. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1300. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1301. };
  1302. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1303. }
  1304. #endregion
  1305. }
  1306. #endregion
  1307. #region 40节点
  1308. else if (dTable.Rows[j]["DATACODE"].ToString() == "40")
  1309. {
  1310. int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  1311. //记录logid
  1312. logids.Add(logid);
  1313. sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
  1314. " (LOGID,\n" +
  1315. " LOGTYPE,\n" +
  1316. " BEGINTIME,\n" +
  1317. " YYYYMMDD,\n" +
  1318. " WORKCODE,\n" +
  1319. " DATACODE,\n" +
  1320. " DATASTUTS,\n" +
  1321. " DATAMSG,\n" +
  1322. " DATALOGID,\n" +
  1323. " EXECUTEDATEBEGIN,\n" +
  1324. " EXECUTEDATEEND,\n" +
  1325. " REMARKS,\n" +
  1326. " SAPGUID)\n" +
  1327. " VALUES\n" +
  1328. " (:LOGID,\n" +
  1329. " '4',\n" +
  1330. " SYSDATE,\n" +
  1331. " TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1332. " 5000,\n" +
  1333. " :DATACODE,\n" +
  1334. " 'Q',\n" +
  1335. " '',\n" +
  1336. " :LOGID,\n" +
  1337. " SYSDATE,\n" +
  1338. " SYSDATE,\n" +
  1339. " :REMARKS,\n" +
  1340. " SYS_GUID())";
  1341. paras = new OracleParameter[]
  1342. {
  1343. new OracleParameter(":LOGID",logid),
  1344. new OracleParameter(":DATACODE","40"),
  1345. new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
  1346. };
  1347. returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1348. #region 明细
  1349. DataTable table40 = sapresultTable.Copy();
  1350. DataRow[] drRow40 = table40.Select("DATACODE = 40");
  1351. foreach (DataRow row in drRow40)
  1352. {
  1353. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1354. " (YYYYMMDD,\n" +
  1355. " WORKCODE,\n" +
  1356. " DATACODE,\n" +
  1357. " GOODSCODE,\n" +
  1358. " SAPCODE,\n" +
  1359. " USERCODE,\n" +
  1360. " OUTPUTNUM,\n" +
  1361. " SCRAPNUM,\n" +
  1362. " CLEANUPNUM,\n" +
  1363. " REPAIRNUM,\n" +
  1364. " WORKSHOP,\n" +
  1365. " LOGID,\n" +
  1366. " TESTMOULDFLAG,\n" +
  1367. " ZSCS,\n" +
  1368. " CHARG)\n" +
  1369. " VALUES\n" +
  1370. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1371. " '5000',\n" +
  1372. " '40',\n" +
  1373. " :GOODSCODE,\n" +
  1374. " :SAPCODE,\n" +
  1375. " :USERCODE,\n" +
  1376. " :OUTPUTNUM,\n" +
  1377. " :SCRAPNUM,\n" +
  1378. " :CLEANUPNUM,\n" +
  1379. " :REPAIRNUM,\n" +
  1380. " :WORKSHOP,\n" +
  1381. " :LOGID,\n" +
  1382. " :TESTMOULDFLAG,\n" +
  1383. " :ZSCS,\n" +
  1384. " :CHARG)";
  1385. paras = new OracleParameter[]
  1386. {
  1387. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1388. new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
  1389. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1390. new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
  1391. new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
  1392. new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
  1393. new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
  1394. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1395. new OracleParameter(":LOGID",logid),
  1396. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1397. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1398. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1399. };
  1400. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1401. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1402. " (YYYYMMDD,\n" +
  1403. " WORKCODE,\n" +
  1404. " DATACODE,\n" +
  1405. " GOODSCODE,\n" +
  1406. " SAPCODE,\n" +
  1407. " USERCODE,\n" +
  1408. " OUTPUTNUM,\n" +
  1409. " SCRAPNUM,\n" +
  1410. " CLEANUPNUM,\n" +
  1411. " REPAIRNUM,\n" +
  1412. " WORKSHOP,\n" +
  1413. " LOGID,\n" +
  1414. " TESTMOULDFLAG,\n" +
  1415. " ZSCS,\n" +
  1416. " CHARG)\n" +
  1417. " VALUES\n" +
  1418. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1419. " '5000',\n" +
  1420. " '40',\n" +
  1421. " :GOODSCODE,\n" +
  1422. " :SAPCODE,\n" +
  1423. " :USERCODE,\n" +
  1424. " :OUTPUTNUM,\n" +
  1425. " :SCRAPNUM,\n" +
  1426. " :CLEANUPNUM,\n" +
  1427. " :REPAIRNUM,\n" +
  1428. " :WORKSHOP,\n" +
  1429. " :LOGID,\n" +
  1430. " :TESTMOULDFLAG,\n" +
  1431. " :ZSCS,\n" +
  1432. " :CHARG)";
  1433. paras = new OracleParameter[]
  1434. {
  1435. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1436. new OracleParameter(":SAPCODE",oldMatnr),
  1437. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1438. new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
  1439. new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
  1440. new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
  1441. new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
  1442. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1443. new OracleParameter(":LOGID",logid),
  1444. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1445. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1446. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1447. };
  1448. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1449. }
  1450. #endregion
  1451. }
  1452. #endregion
  1453. #region 50节点
  1454. else if (dTable.Rows[j]["DATACODE"].ToString() == "50")
  1455. {
  1456. int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  1457. //记录logid
  1458. logids.Add(logid);
  1459. sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
  1460. " (LOGID,\n" +
  1461. " LOGTYPE,\n" +
  1462. " BEGINTIME,\n" +
  1463. " YYYYMMDD,\n" +
  1464. " WORKCODE,\n" +
  1465. " DATACODE,\n" +
  1466. " DATASTUTS,\n" +
  1467. " DATAMSG,\n" +
  1468. " DATALOGID,\n" +
  1469. " EXECUTEDATEBEGIN,\n" +
  1470. " EXECUTEDATEEND,\n" +
  1471. " REMARKS,\n" +
  1472. " SAPGUID)\n" +
  1473. " VALUES\n" +
  1474. " (:LOGID,\n" +
  1475. " '4',\n" +
  1476. " SYSDATE,\n" +
  1477. " TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1478. " 5000,\n" +
  1479. " :DATACODE,\n" +
  1480. " 'Q',\n" +
  1481. " '',\n" +
  1482. " :LOGID,\n" +
  1483. " SYSDATE,\n" +
  1484. " SYSDATE,\n" +
  1485. " :REMARKS,\n" +
  1486. " SYS_GUID())";
  1487. paras = new OracleParameter[]
  1488. {
  1489. new OracleParameter(":LOGID",logid),
  1490. new OracleParameter(":DATACODE","50"),
  1491. new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
  1492. };
  1493. returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1494. #region 明细
  1495. DataTable table50 = sapresultTable.Copy();
  1496. DataRow[] drRow50 = table50.Select("DATACODE = 50");
  1497. foreach (DataRow row in drRow50)
  1498. {
  1499. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1500. " (YYYYMMDD,\n" +
  1501. " WORKCODE,\n" +
  1502. " DATACODE,\n" +
  1503. " GOODSCODE,\n" +
  1504. " SAPCODE,\n" +
  1505. " USERCODE,\n" +
  1506. " OUTPUTNUM,\n" +
  1507. " SCRAPNUM,\n" +
  1508. " CLEANUPNUM,\n" +
  1509. " REPAIRNUM,\n" +
  1510. " WORKSHOP,\n" +
  1511. " LOGID,\n" +
  1512. " TESTMOULDFLAG,\n" +
  1513. " ZSCS,\n" +
  1514. " CHARG)\n" +
  1515. " VALUES\n" +
  1516. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1517. " '5000',\n" +
  1518. " '50',\n" +
  1519. " :GOODSCODE,\n" +
  1520. " :SAPCODE,\n" +
  1521. " :USERCODE,\n" +
  1522. " :OUTPUTNUM,\n" +
  1523. " :SCRAPNUM,\n" +
  1524. " :CLEANUPNUM,\n" +
  1525. " :REPAIRNUM,\n" +
  1526. " :WORKSHOP,\n" +
  1527. " :LOGID,\n" +
  1528. " :TESTMOULDFLAG,\n" +
  1529. " :ZSCS,\n" +
  1530. " :CHARG)";
  1531. paras = new OracleParameter[]
  1532. {
  1533. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1534. new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
  1535. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1536. new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
  1537. new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
  1538. new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
  1539. new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
  1540. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1541. new OracleParameter(":LOGID",logid),
  1542. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1543. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1544. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1545. };
  1546. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1547. sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
  1548. " (YYYYMMDD,\n" +
  1549. " WORKCODE,\n" +
  1550. " DATACODE,\n" +
  1551. " GOODSCODE,\n" +
  1552. " SAPCODE,\n" +
  1553. " USERCODE,\n" +
  1554. " OUTPUTNUM,\n" +
  1555. " SCRAPNUM,\n" +
  1556. " CLEANUPNUM,\n" +
  1557. " REPAIRNUM,\n" +
  1558. " WORKSHOP,\n" +
  1559. " LOGID,\n" +
  1560. " TESTMOULDFLAG,\n" +
  1561. " ZSCS,\n" +
  1562. " CHARG)\n" +
  1563. " VALUES\n" +
  1564. " (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
  1565. " '5000',\n" +
  1566. " '50',\n" +
  1567. " :GOODSCODE,\n" +
  1568. " :SAPCODE,\n" +
  1569. " :USERCODE,\n" +
  1570. " :OUTPUTNUM,\n" +
  1571. " :SCRAPNUM,\n" +
  1572. " :CLEANUPNUM,\n" +
  1573. " :REPAIRNUM,\n" +
  1574. " :WORKSHOP,\n" +
  1575. " :LOGID,\n" +
  1576. " :TESTMOULDFLAG,\n" +
  1577. " :ZSCS,\n" +
  1578. " :CHARG)";
  1579. paras = new OracleParameter[]
  1580. {
  1581. new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
  1582. new OracleParameter(":SAPCODE",oldMatnr),
  1583. new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
  1584. new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
  1585. new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
  1586. new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
  1587. new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
  1588. new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
  1589. new OracleParameter(":LOGID",logid),
  1590. new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
  1591. new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
  1592. new OracleParameter(":CHARG",row["CHARG"].ToString()),
  1593. };
  1594. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  1595. }
  1596. #endregion
  1597. }
  1598. #endregion
  1599. }
  1600. #region 更新总单状态为F
  1601. string ids = string.Join(",", logids);
  1602. if (!string.IsNullOrWhiteSpace(ids))
  1603. {
  1604. string sql1 = "update TSAP_HEGII_DATALOG_BG set DATASTUTS='F' where DATASTUTS = 'Q' AND LOGID IN (" + ids + ") ";
  1605. returnRows += oracleTrConn.ExecuteNonQuery(sql1);
  1606. //更新商标变更明细表
  1607. sql1 = " update tp_pm_logochangedrecord set SAPFLAG='1',SAPLOGID = '" + ids + "' where barcode =" + barcode + " and createtime = to_date('" + cretetime + "','yyyy-mm-dd hh24:mi:ss')";
  1608. returnRows += oracleTrConn.ExecuteNonQuery(sql1);
  1609. }
  1610. #endregion
  1611. }
  1612. #endregion
  1613. }
  1614. }
  1615. }
  1616. oracleTrConn.Commit();
  1617. oracleTrConn.Disconnect();
  1618. }
  1619. catch (Exception ex)
  1620. {
  1621. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1622. {
  1623. oracleTrConn.Rollback();
  1624. oracleTrConn.Disconnect();
  1625. }
  1626. throw ex;
  1627. }
  1628. finally
  1629. {
  1630. if (oracleTrConn != null)
  1631. {
  1632. oracleTrConn.Close();
  1633. }
  1634. }
  1635. }
  1636. /// <summary>
  1637. /// 执行与推送
  1638. /// </summary>
  1639. /// <param name="datacode"></param>
  1640. /// <param name="ndate"></param>
  1641. /// <returns></returns>
  1642. public static ServiceResultEntity SetWorkData1001_5000(string datacode, DateTime ndate)
  1643. {
  1644. ServiceResultEntity sre = new ServiceResultEntity();
  1645. IDBTransaction oracleConn = null;
  1646. try
  1647. {
  1648. #region 事务1,执行存储过程
  1649. OracleParameter[] paras = null;
  1650. int logid = 0;
  1651. string message = string.Empty;
  1652. // 1001 模具生产
  1653. if ("1001".Equals(datacode))
  1654. {
  1655. paras = new OracleParameter[]
  1656. {
  1657. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1658. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1659. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1660. };
  1661. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1662. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG1001", paras);
  1663. int.TryParse(paras[1].Value + "", out logid);
  1664. message = paras[2].Value + "";
  1665. oracleConn.Commit();
  1666. }
  1667. // 如果logid为0,则数据没有生成
  1668. if (logid == 0)
  1669. {
  1670. sre.Status = Constant.ServiceResultStatus.Other;
  1671. sre.Message = message;
  1672. return sre;
  1673. }
  1674. #endregion
  1675. // 事物2,同步SAP接口
  1676. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1677. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1678. if (SAP_ING_NEW == "1")
  1679. {
  1680. sre = SyncSap1001_5000(ndate, datacode);
  1681. }
  1682. return sre;
  1683. }
  1684. catch (Exception ex)
  1685. {
  1686. throw ex;
  1687. }
  1688. finally
  1689. {
  1690. if (oracleConn != null &&
  1691. oracleConn.ConnState == ConnectionState.Open)
  1692. {
  1693. oracleConn.Disconnect();
  1694. }
  1695. }
  1696. }
  1697. /// <summary>
  1698. /// 同步SAP接口5000端口新
  1699. /// </summary>
  1700. /// <param name="date"></param>
  1701. /// <param name="datacode"></param>
  1702. /// <param name="userid"></param>
  1703. /// <param name="logid"></param>
  1704. /// <returns></returns>
  1705. public static ServiceResultEntity SyncSap1001_5000(DateTime date, string datacode)
  1706. {
  1707. ServiceResultEntity sre = new ServiceResultEntity();
  1708. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1709. try
  1710. {
  1711. OracleParameter[] paras = null;
  1712. int r = 0;
  1713. // 查询当前节点所有不为S的日志
  1714. string sqlString = @"
  1715. SELECT DL.LOGID
  1716. FROM TSAP_HEGII_DATALOG_BG DL
  1717. WHERE DL.DATASTUTS = 'F'
  1718. AND DL.DATACODE = :DATACODE ";
  1719. paras = new OracleParameter[]
  1720. {
  1721. new OracleParameter(":DATACODE", datacode),
  1722. };
  1723. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  1724. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  1725. sqlString = @"
  1726. SELECT TO_CHAR(WD.ORDERCODE) AS ZID,
  1727. TO_CHAR(WD.WORKCODE) AS WERKS,
  1728. TO_CHAR(WD.SAPCODE) MATNR,
  1729. TO_CHAR(WD.YYYYMMDD) BUDAT,
  1730. TO_CHAR(WD.OUTPUTNUM) ZDKCL,
  1731. TO_CHAR(WD.ORDERITEM) IDNRK
  1732. FROM TSAP_HEGII_WORKDATA_BG WD
  1733. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  1734. ON WD.LOGID = DL.LOGID
  1735. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ";
  1736. paras = new OracleParameter[]
  1737. {
  1738. new OracleParameter(":DATACODE",datacode),
  1739. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1740. };
  1741. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1742. int num = workData.Rows.Count;
  1743. if (num > 0)
  1744. {
  1745. // 调用SAP接口
  1746. //string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1747. string postString = "{\"IT_TAB\":{\"item\":" + JsonHelper.ToJson(workData) + "}}";
  1748. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1749. // 配置文件
  1750. string url_BG1001_049 = ini.ReadIniData("SAP_NEW_INFO", "Url_BG1001_049");
  1751. //string url_BG1001_049 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM049";
  1752. string result = PostData(url_BG1001_049, postString, "POST");
  1753. sqlString = @"
  1754. UPDATE TSAP_HEGII_DATALOG_BG T
  1755. SET T.ENDTIME = SYSDATE,
  1756. DATASTUTS = :DATASTUTS,
  1757. DATAMSG = :MSG
  1758. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  1759. paras = new OracleParameter[]
  1760. {
  1761. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  1762. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  1763. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1764. };
  1765. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1766. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  1767. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  1768. }
  1769. else
  1770. {
  1771. sqlString = @"
  1772. UPDATE TSAP_HEGII_DATALOG_BG T
  1773. SET T.ENDTIME = SYSDATE,
  1774. DATASTUTS = :DATASTUTS,
  1775. DATAMSG = :MSG
  1776. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  1777. paras = new OracleParameter[]
  1778. {
  1779. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, "S", ParameterDirection.Input),
  1780. new OracleParameter(":MSG",OracleDbType.Varchar2, "num:0", ParameterDirection.Input),
  1781. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1782. };
  1783. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1784. sre.Message = "num:0";
  1785. sre.Result = "S";
  1786. }
  1787. oracleConn.Commit();
  1788. return sre;
  1789. }
  1790. catch (Exception ex)
  1791. {
  1792. OutputLog.TraceLog(LogPriority.Error,
  1793. "BG1001ToSAP",
  1794. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1795. ex.ToString(),
  1796. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1797. throw ex;
  1798. }
  1799. finally
  1800. {
  1801. if (oracleConn != null &&
  1802. oracleConn.ConnState == ConnectionState.Open)
  1803. {
  1804. oracleConn.Disconnect();
  1805. }
  1806. }
  1807. }
  1808. /// <summary>
  1809. /// 执行与推送
  1810. /// </summary>
  1811. /// <param name="datacode"></param>
  1812. /// <param name="ndate"></param>
  1813. /// <returns></returns>
  1814. public static ServiceResultEntity SetWorkData10_50_5000(string datacode, DateTime ndate)
  1815. {
  1816. ServiceResultEntity sre = new ServiceResultEntity();
  1817. IDBTransaction oracleConn = null;
  1818. try
  1819. {
  1820. #region 事务1,执行存储过程
  1821. OracleParameter[] paras = null;
  1822. int logid = 0;
  1823. string message = string.Empty;
  1824. // 10 模具
  1825. if ("10".Equals(datacode))
  1826. {
  1827. paras = new OracleParameter[]
  1828. {
  1829. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1830. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1831. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1832. };
  1833. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1834. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras);
  1835. int.TryParse(paras[1].Value + "", out logid);
  1836. message = paras[2].Value + "";
  1837. oracleConn.Commit();
  1838. }
  1839. // 20 湿坯
  1840. else if ("20".Equals(datacode))
  1841. {
  1842. paras = new OracleParameter[]
  1843. {
  1844. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1845. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1846. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1847. };
  1848. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1849. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras);
  1850. int.TryParse(paras[1].Value + "", out logid);
  1851. message = paras[2].Value + "";
  1852. oracleConn.Commit();
  1853. }
  1854. // 30 精坯、40 釉坯
  1855. else if ("30".Equals(datacode) || "40".Equals(datacode))
  1856. {
  1857. paras = new OracleParameter[]
  1858. {
  1859. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1860. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  1861. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1862. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1863. };
  1864. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1865. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras);
  1866. int.TryParse(paras[2].Value + "", out logid);
  1867. message = paras[3].Value + "";
  1868. oracleConn.Commit();
  1869. }
  1870. // 50 烧成
  1871. else if ("50".Equals(datacode))
  1872. {
  1873. paras = new OracleParameter[]
  1874. {
  1875. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1876. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  1877. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1878. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1879. };
  1880. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1881. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG50", paras);
  1882. int.TryParse(paras[2].Value + "", out logid);
  1883. message = paras[3].Value + "";
  1884. oracleConn.Commit();
  1885. }
  1886. // 如果logid为0,则数据没有生成
  1887. if (logid == 0)
  1888. {
  1889. sre.Status = Constant.ServiceResultStatus.Other;
  1890. sre.Message = message;
  1891. return sre;
  1892. }
  1893. #endregion
  1894. // 事物2,同步SAP接口
  1895. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1896. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1897. if (SAP_ING_NEW == "1")
  1898. {
  1899. sre = SyncSap5000(ndate, datacode);
  1900. }
  1901. return sre;
  1902. }
  1903. catch (Exception ex)
  1904. {
  1905. throw ex;
  1906. }
  1907. finally
  1908. {
  1909. if (oracleConn != null &&
  1910. oracleConn.ConnState == ConnectionState.Open)
  1911. {
  1912. oracleConn.Disconnect();
  1913. }
  1914. }
  1915. }
  1916. /// <summary>
  1917. /// 同步SAP接口5000端口新
  1918. /// </summary>
  1919. /// <param name="date"></param>
  1920. /// <param name="datacode"></param>
  1921. /// <param name="userid"></param>
  1922. /// <param name="logid"></param>
  1923. /// <returns></returns>
  1924. public static ServiceResultEntity SyncSap5000(DateTime date, string datacode)
  1925. {
  1926. ServiceResultEntity sre = new ServiceResultEntity();
  1927. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1928. try
  1929. {
  1930. OracleParameter[] paras = null;
  1931. int r = 0;
  1932. // 查询当前节点所有不为S的日志
  1933. string sqlString = @"
  1934. SELECT DL.LOGID
  1935. FROM TSAP_HEGII_DATALOG_BG DL
  1936. WHERE 1 = 1
  1937. AND DL.DATASTUTS = 'F'
  1938. AND DL.LOGID > 6
  1939. AND DL.DATACODE = :DATACODE ";
  1940. paras = new OracleParameter[]
  1941. {
  1942. new OracleParameter(":DATACODE", datacode),
  1943. };
  1944. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  1945. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  1946. sqlString = @"
  1947. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  1948. WD.WORKCODE AS WERKS,
  1949. TO_CHAR(WD.GOODSCODE) GROES,
  1950. TO_CHAR(WD.SAPCODE) MATNR,
  1951. TO_CHAR(WD.USERCODE) ZGHNU,
  1952. TO_CHAR(WD.DATACODE) ZJDNU,
  1953. TO_CHAR(WD.YYYYMMDD) ZSCNU,
  1954. TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ,
  1955. TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ,
  1956. TO_CHAR(WD.ORDERCODE) VBELN,
  1957. TO_CHAR(WD.ORDERITEM) POSNR,
  1958. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  1959. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  1960. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  1961. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  1962. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  1963. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  1964. DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS,
  1965. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  1966. WD.CHARG,
  1967. TO_CHAR(:DATACODE) DATACODE,
  1968. WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID
  1969. FROM TSAP_HEGII_WORKDATA_BG WD
  1970. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  1971. ON WD.LOGID = DL.LOGID
  1972. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ";
  1973. paras = new OracleParameter[]
  1974. {
  1975. new OracleParameter(":DATACODE",datacode),
  1976. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1977. };
  1978. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1979. int num = workData.Rows.Count;
  1980. // 调用SAP接口
  1981. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1982. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1983. // 配置文件
  1984. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  1985. // 测试
  1986. // string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  1987. // 正式
  1988. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  1989. string result = PostData(url030, postString, "POST");
  1990. sqlString = @"
  1991. UPDATE TSAP_HEGII_DATALOG_BG T
  1992. SET T.ENDTIME = SYSDATE,
  1993. DATASTUTS = :DATASTUTS,
  1994. DATAMSG = :MSG
  1995. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  1996. paras = new OracleParameter[]
  1997. {
  1998. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  1999. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  2000. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  2001. };
  2002. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  2003. oracleConn.Commit();
  2004. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  2005. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  2006. return sre;
  2007. }
  2008. catch (Exception ex)
  2009. {
  2010. OutputLog.TraceLog(LogPriority.Error,
  2011. "BGToSAP",
  2012. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2013. ex.ToString(),
  2014. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2015. throw ex;
  2016. }
  2017. finally
  2018. {
  2019. if (oracleConn != null &&
  2020. oracleConn.ConnState == ConnectionState.Open)
  2021. {
  2022. oracleConn.Disconnect();
  2023. }
  2024. }
  2025. }
  2026. /// <summary>
  2027. /// 查询同步日志
  2028. /// </summary>
  2029. /// <param name="cre"></param>
  2030. /// <param name="userInfo"></param>
  2031. /// <returns></returns>
  2032. public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre)
  2033. {
  2034. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2035. ServiceResultEntity sre = new ServiceResultEntity();
  2036. try
  2037. {
  2038. string sqlString =
  2039. "select dl.logid\n" +
  2040. " ,dl.logtype\n" +
  2041. " ,dl.begintime\n" +
  2042. " ,dl.endtime\n" +
  2043. " ,dl.yyyymmdd\n" +
  2044. " ,dl.workcode\n" +
  2045. " ,dl.datacode\n" +
  2046. " ,dc.datacodename\n" +
  2047. " ,dl.datastuts\n" +
  2048. " ,dl.datamsg\n" +
  2049. " ,dl.datalogid\n" +
  2050. " ,dl.executedatebegin\n" +
  2051. " ,dl.executedateend\n" +
  2052. " ,u.usercode synusercode\n" +
  2053. " ,DECODE(dl.logtype, '4', '变更数据','') AS Remarks\n" +
  2054. " from TSAP_HEGII_DATALOG_BG dl\n" +
  2055. " inner join tsap_hegii_datacode dc\n" +
  2056. " on dc.datacode = dl.datacode\n" +
  2057. " left join tp_mst_user u\n" +
  2058. " on u.userid = dl.createuserid\n" +
  2059. " where dl.logtype IN('2','3','4')\n" +
  2060. " and dl.executedatebegin >= :DATEBEGIN\n" +
  2061. " and dl.executedateend < :DATEEND\n" +
  2062. " and (-1= :DATACODE or dl.datacode=:DATACODE )";//add xiacm 2022-10-12
  2063. OracleParameter[] oracleParameter = new OracleParameter[]
  2064. {
  2065. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  2066. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  2067. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  2068. };
  2069. sqlString += "ORDER BY dl.logid DESC\n";
  2070. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2071. return sre;
  2072. }
  2073. catch (Exception ex)
  2074. {
  2075. throw ex;
  2076. }
  2077. finally
  2078. {
  2079. if (oracleConn != null)
  2080. {
  2081. oracleConn.Close();
  2082. }
  2083. }
  2084. }
  2085. /// <summary>
  2086. /// 查询同步明细
  2087. /// </summary>
  2088. /// <param name="logid"></param>
  2089. /// <param name="userInfo"></param>
  2090. /// <returns></returns>
  2091. public static ServiceResultEntity GetWorkData_BG(ClientRequestEntity cre)
  2092. {
  2093. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2094. ServiceResultEntity sre = new ServiceResultEntity();
  2095. try
  2096. {
  2097. int logid = Convert.ToInt32(cre.Request);
  2098. string sqlString = "\n" +
  2099. "select wd.yyyymmdd\n" +
  2100. " ,wd.workcode\n" +
  2101. " ,wd.datacode\n" +
  2102. " ,dc.datacodename\n" +
  2103. " ,wd.goodscode\n" +
  2104. " ,wd.sapcode\n" +
  2105. " ,wd.usercode\n" +
  2106. " ,wd.ordercode\n" +
  2107. " ,wd.orderitem\n" +
  2108. " ,to_number(wd.outputnum) outputnum\n" +
  2109. " ,to_number(wd.scrapnum) scrapnum\n" +
  2110. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  2111. " ,to_number(wd.recoverynum) recoverynum\n" +
  2112. " ,to_number(wd.repairnum) repairnum\n" +
  2113. " ,wd.createtime\n" +
  2114. " ,wd.ztype\n" +
  2115. " ,wd.zmsg\n" +
  2116. " ,wd.ztime\n" +
  2117. " ,wd.testmouldflag\n" +
  2118. " ,wd.zscs\n" +
  2119. " ,wd.logid\n" +
  2120. " from tsap_hegii_workdata_BG wd\n" +
  2121. " inner join TSAP_HEGII_DATALOG_BG dl\n" +
  2122. " on dl.logid = wd.logid\n" +
  2123. " inner join tsap_hegii_datacode dc\n" +
  2124. " on dc.datacode = wd.datacode\n";
  2125. //update xiacm 2022-10-12
  2126. if (logid > 0)
  2127. {
  2128. sqlString += " where wd.logid = :logid \n";
  2129. }
  2130. else
  2131. {
  2132. sqlString += " where dl.executedatebegin >= :DATEBEGIN and dl.executedateend <= :DATEEND";
  2133. sqlString += " and (-1= :DATACODE OR wd.datacode = :DATACODE)";
  2134. }
  2135. sqlString += " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  2136. OracleParameter[] oracleParameter = new OracleParameter[]
  2137. {
  2138. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  2139. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  2140. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  2141. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  2142. };
  2143. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2144. return sre;
  2145. }
  2146. catch (Exception ex)
  2147. {
  2148. throw ex;
  2149. }
  2150. finally
  2151. {
  2152. if (oracleConn != null)
  2153. {
  2154. oracleConn.Close();
  2155. }
  2156. }
  2157. }
  2158. /// <summary>
  2159. /// 报工汇总 add xiacm 2022-10-12
  2160. /// </summary>
  2161. /// <param name="cre"></param>
  2162. /// <returns></returns>
  2163. public static ServiceResultEntity GetDataLogTotal_BG(ClientRequestEntity cre)
  2164. {
  2165. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2166. ServiceResultEntity sre = new ServiceResultEntity();
  2167. try
  2168. {
  2169. string sqlString = @"
  2170. SELECT T1.DATACODE,
  2171. T1.ACTUALOUTPUT,
  2172. T2.OUTPUT,
  2173. T2.SCRAPNUM,
  2174. T2.CLEANNUPNUM,
  2175. T2.RECOVERYNUM,
  2176. T2.REPAIRNUM,
  2177. T3.DRCXFDRJJDCCP,
  2178. T4.DRJJBQTRCXDCCP,
  2179. T1.ACTUALOUTPUT + NVL(T4.DRJJBQTRCXDCCP, 0) - NVL(T3.DRCXFDRJJDCCP, 0) -
  2180. (T2.OUTPUT + T2.RECOVERYNUM) AS DIFFER
  2181. FROM (
  2182. -- 业务数据汇总
  2183. -- 10
  2184. SELECT '10' AS DATACODE,
  2185. SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS ACTUALOUTPUT
  2186. FROM (SELECT MH.GOODSID,
  2187. MH.MOULDID,
  2188. MH.OPERATIONTYPE,
  2189. MH.GROUTINGNUM
  2190. FROM TP_PC_MOULDCHANGEHISTORY MH
  2191. WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)
  2192. AND MH.CREATETIME >= :DATEBEGIN
  2193. AND MH.CREATETIME < :DATEEND
  2194. UNION ALL
  2195. SELECT MH.GOODSIDAFTER,
  2196. MH.MOULDID,
  2197. 0,
  2198. MH.GROUTINGNUM
  2199. FROM TP_PC_MOULDCHANGEHISTORY MH
  2200. WHERE MH.OPERATIONTYPE = -1
  2201. AND MH.CREATETIME >= :DATEBEGIN
  2202. AND MH.CREATETIME < :DATEEND) MHH
  2203. INNER JOIN TP_PC_MOULD M
  2204. ON M.MOULDID = MHH.MOULDID
  2205. UNION ALL
  2206. -- 20
  2207. SELECT '20' AS DATACODE,
  2208. SUM(DECODE(GH.DATATYPE, 1, 1, -1)) BUSINESSOUTPUT
  2209. FROM TP_PM_GOODSCHANGEHISTORY GH
  2210. INNER JOIN TP_MST_GOODS G
  2211. ON G.GOODSID = GH.GOODSID
  2212. WHERE GH.CREATETIME >= :DATEBEGIN
  2213. AND GH.CREATETIME < :DATEEND
  2214. AND GH.DATATYPE IN (1, 2)
  2215. AND G.SCRAPSUMFLAG = '1'
  2216. UNION ALL
  2217. -- 30
  2218. SELECT '30' AS DATACODE,
  2219. SUM(T1.CC) AS BUSINESSOUTPUT
  2220. FROM (SELECT 1 AS CC
  2221. FROM TP_PM_PRODUCTIONDATA P
  2222. WHERE P.PROCEDUREID IN (53, 97)
  2223. AND P.CREATETIME >= :DATEBEGIN
  2224. AND P.CREATETIME < :DATEEND
  2225. UNION ALL
  2226. SELECT -1 AS CC
  2227. FROM TP_PM_PRODUCTIONDATA P
  2228. WHERE P.PROCEDUREID IN (53, 97)
  2229. AND P.VALUEFLAG = '0'
  2230. AND P.BACKOUTTIME >= :DATEBEGIN
  2231. AND P.BACKOUTTIME < :DATEEND) T1
  2232. UNION ALL
  2233. -- 40
  2234. SELECT '40' AS DATACODE,
  2235. SUM(T1.CC) AS BUSINESSOUTPUT
  2236. FROM (SELECT 1 AS CC
  2237. FROM TP_PM_PRODUCTIONDATA P
  2238. WHERE P.PROCEDUREID IN (65, 99)
  2239. AND P.CREATETIME >= :DATEBEGIN
  2240. AND P.CREATETIME < :DATEEND
  2241. UNION ALL
  2242. SELECT -1 AS CC
  2243. FROM TP_PM_PRODUCTIONDATA P
  2244. WHERE P.PROCEDUREID IN (65, 99)
  2245. AND P.VALUEFLAG = '0'
  2246. AND P.BACKOUTTIME >= :DATEBEGIN
  2247. AND P.BACKOUTTIME < :DATEEND) T1
  2248. UNION ALL
  2249. -- 50
  2250. SELECT '50' AS DATACODE,
  2251. SUM(T1.CC) AS BUSINESSOUTPUT
  2252. FROM (SELECT COUNT(DISTINCT P.BARCODE) AS CC
  2253. FROM TP_PM_PRODUCTIONDATA P
  2254. WHERE P.PROCEDUREID IN (11, 104)
  2255. AND P.ISREFIRE = '0'
  2256. AND P.ISLENGBU = '0'
  2257. AND ((P.PROCEDUREID = 11 AND (P.CHECKFLAG = '1' OR P.CHECKFLAG IS NULL))
  2258. OR (P.PROCEDUREID = 104 AND P.CHECKFLAG = '1'))
  2259. AND P.CREATETIME >= :DATEBEGIN
  2260. AND P.CREATETIME < :DATEEND
  2261. UNION ALL
  2262. SELECT -1 AS CC
  2263. FROM TP_PM_PRODUCTIONDATA P
  2264. WHERE P.PROCEDUREID = 11
  2265. AND P.VALUEFLAG = '0'
  2266. AND P.ISREFIRE = '0'
  2267. AND P.ISLENGBU = '0'
  2268. AND P.BACKOUTTIME >= :DATEBEGIN
  2269. AND P.BACKOUTTIME < :DATEEND) T1
  2270. UNION ALL
  2271. -- 60
  2272. SELECT '60' AS DATACODE,
  2273. COUNT(1) AS BUSINESSOUTPUT
  2274. FROM TP_PM_FINISHEDPRODUCT GH
  2275. WHERE GH.FHTIME >= :DATEBEGIN
  2276. AND GH.FHTIME < :DATEEND) T1
  2277. LEFT JOIN (
  2278. -- 当日推送日志数据汇总
  2279. SELECT DATACODE AS DATACODETD,
  2280. SUM(TO_NUMBER(OUTPUTNUM)) AS OUTPUT,
  2281. SUM(TO_NUMBER(SCRAPNUM)) AS SCRAPNUM,
  2282. SUM(TO_NUMBER(CLEANUPNUM)) AS CLEANNUPNUM,
  2283. SUM(TO_NUMBER(RECOVERYNUM)) AS RECOVERYNUM,
  2284. SUM(TO_NUMBER(REPAIRNUM)) AS REPAIRNUM
  2285. FROM TSAP_HEGII_WORKDATA_BG
  2286. WHERE LOGID IN (SELECT LOGID
  2287. FROM TSAP_HEGII_DATALOG_BG T
  2288. WHERE DATASTUTS = 'S'
  2289. AND EXECUTEDATEBEGIN >= :DATEBEGIN
  2290. AND EXECUTEDATEEND <= :DATEEND)
  2291. GROUP BY DATACODE
  2292. ORDER BY DATACODE) T2
  2293. ON T2.DATACODETD = T1.DATACODE
  2294. LEFT JOIN (
  2295. -- 当日撤销非当日交接的产成品
  2296. SELECT '60' AS DATACODE,
  2297. COUNT(WL.CODEI) AS DRCXFDRJJDCCP
  2298. FROM TP_WMS_LOG WL
  2299. WHERE LOGTYPE = 2
  2300. AND EXISTS (SELECT 1
  2301. FROM TP_WMS_LOG WL1
  2302. WHERE WL1.CODEI = WL.CODEI
  2303. AND WL1.LOGTYPE = 1
  2304. AND TRUNC(WL1.CREATETIME) < TRUNC(WL.CREATETIME))
  2305. AND WL.CREATETIME >= :DATEBEGIN
  2306. AND WL.CREATETIME < :DATEEND) T3
  2307. ON T3.DATACODE = T1.DATACODE
  2308. LEFT JOIN (
  2309. -- 当日交接被其他日撤销的产成品
  2310. SELECT '60' AS DATACODE,
  2311. COUNT(WL.CODEI) AS DRJJBQTRCXDCCP
  2312. FROM TP_WMS_LOG WL
  2313. WHERE LOGTYPE = 1
  2314. AND EXISTS (SELECT 1
  2315. FROM TP_WMS_LOG WL1
  2316. WHERE WL1.CODEI = WL.CODEI
  2317. AND WL1.LOGTYPE = 2
  2318. AND TRUNC(WL1.CREATETIME) > TRUNC(WL.CREATETIME))
  2319. AND WL.CREATETIME >= :DATEBEGIN
  2320. AND WL.CREATETIME < :DATEEND) T4
  2321. ON T4.DATACODE = T1.DATACODE
  2322. WHERE (-1 = :DATACODE OR T1.DATACODE = :DATACODE)
  2323. ORDER BY T1.DATACODE ";
  2324. OracleParameter[] oracleParameter = new OracleParameter[]
  2325. {
  2326. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  2327. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  2328. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  2329. };
  2330. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2331. return sre;
  2332. }
  2333. catch (Exception ex)
  2334. {
  2335. throw ex;
  2336. }
  2337. finally
  2338. {
  2339. if (oracleConn != null)
  2340. {
  2341. oracleConn.Close();
  2342. }
  2343. }
  2344. }
  2345. /// <summary>
  2346. /// 半成品库存 add xiacm 2022-11-09
  2347. /// </summary>
  2348. /// <param name="cre"></param>
  2349. /// <returns></returns>
  2350. public static ServiceResultEntity GetDataIVITotal_BC(ClientRequestEntity cre)
  2351. {
  2352. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2353. ServiceResultEntity sre = new ServiceResultEntity();
  2354. try
  2355. {
  2356. string sqlString = @"SELECT semi.DATACODE ,
  2357. semi.WORKSHOP ,
  2358. semi.MATERIALCODE ,
  2359. semi.GOODSCODE ,
  2360. semi.GOODSNAME ,
  2361. COUNT(1) AS INVENTORYQUANTITY,
  2362. SYSDATE AS CREATETIME
  2363. FROM (
  2364. --配置表里的所有工序
  2365. SELECT DI.DATACODE,
  2366. CASE
  2367. WHEN DI.WORKSHOP = 0
  2368. AND DI.ITEMTYPE = 1
  2369. AND IP.KILNCODE = 'SK1' THEN
  2370. 1
  2371. WHEN DI.WORKSHOP = 0
  2372. AND DI.ITEMTYPE = 1
  2373. AND IP.KILNCODE = 'SK2' THEN
  2374. 2
  2375. WHEN DI.WORKSHOP = 0
  2376. AND DI.ITEMTYPE = 1
  2377. AND IP.KILNCODE = 'SK3' THEN
  2378. 3
  2379. WHEN DI.WORKSHOP = 2
  2380. AND DI.ITEMTYPE = 1
  2381. AND IP.KILNCODE = 'TK1' THEN
  2382. 1
  2383. WHEN DI.WORKSHOP = 2
  2384. AND DI.ITEMTYPE = 1
  2385. AND IP.KILNCODE = 'TK2' THEN
  2386. 2
  2387. WHEN DI.WORKSHOP = 2
  2388. AND DI.ITEMTYPE = 2
  2389. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  2390. 2
  2391. WHEN DI.WORKSHOP = 2
  2392. AND DI.ITEMTYPE = 2
  2393. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  2394. 1
  2395. WHEN DI.WORKSHOP = 3 THEN
  2396. 3
  2397. ELSE
  2398. 0
  2399. END WORKSHOP,
  2400. GDD.MATERIALCODE,
  2401. G.GOODSCODE,
  2402. G.GOODSNAME
  2403. FROM TP_PM_INPRODUCTION IP
  2404. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  2405. ON IP.PROCEDUREID = DI.ITEMID
  2406. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2407. ON IP.BARCODE = GDD.BARCODE
  2408. INNER JOIN TP_MST_GOODS G
  2409. ON G.GOODSID = GDD.GOODSID
  2410. INNER JOIN TP_MST_GOODSTYPE GT
  2411. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2412. UNION ALL
  2413. --10-0干补
  2414. SELECT DI.DATACODE,
  2415. CASE
  2416. WHEN DI.WORKSHOP = 0
  2417. AND DI.ITEMTYPE = 1
  2418. AND IP.KILNCODE = 'SK1' THEN
  2419. 1
  2420. WHEN DI.WORKSHOP = 0
  2421. AND DI.ITEMTYPE = 1
  2422. AND IP.KILNCODE = 'SK2' THEN
  2423. 2
  2424. WHEN DI.WORKSHOP = 0
  2425. AND DI.ITEMTYPE = 1
  2426. AND IP.KILNCODE = 'SK3' THEN
  2427. 3
  2428. WHEN DI.WORKSHOP = 2
  2429. AND DI.ITEMTYPE = 1
  2430. AND IP.KILNCODE = 'TK1' THEN
  2431. 1
  2432. WHEN DI.WORKSHOP = 2
  2433. AND DI.ITEMTYPE = 1
  2434. AND IP.KILNCODE = 'TK2' THEN
  2435. 2
  2436. WHEN DI.WORKSHOP = 2
  2437. AND DI.ITEMTYPE = 2
  2438. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  2439. 2
  2440. WHEN DI.WORKSHOP = 2
  2441. AND DI.ITEMTYPE = 2
  2442. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  2443. 1
  2444. WHEN DI.WORKSHOP = 3 THEN
  2445. 3
  2446. ELSE
  2447. 0
  2448. END WORKSHOP,
  2449. GDD.MATERIALCODE,
  2450. G.GOODSCODE,
  2451. G.GOODSNAME
  2452. FROM TP_PM_INPRODUCTION IP
  2453. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  2454. ON IP.FLOWPROCEDUREID = DI.ITEMID
  2455. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2456. ON IP.BARCODE = GDD.BARCODE
  2457. INNER JOIN TP_MST_GOODS G
  2458. ON G.GOODSID = GDD.GOODSID
  2459. INNER JOIN TP_MST_GOODSTYPE GT
  2460. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2461. WHERE PROCEDUREID = 18
  2462. UNION ALL
  2463. --未交坯
  2464. SELECT '20' DATACODE,
  2465. CASE
  2466. WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1
  2467. AND
  2468. (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  2469. 2
  2470. WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1
  2471. AND
  2472. (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  2473. 1
  2474. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN
  2475. 3
  2476. ELSE
  2477. 0
  2478. END WORKSHOP,
  2479. GDD.MATERIALCODE,
  2480. G.GOODSCODE,
  2481. G.GOODSNAME
  2482. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  2483. INNER JOIN TP_MST_GOODS G
  2484. ON GDD.GOODSID = G.GOODSID
  2485. INNER JOIN TP_MST_GOODSTYPE GT
  2486. ON GT.GOODSTYPEID = G.GOODSTYPEID
  2487. WHERE GDD.VALUEFLAG = 1
  2488. AND GDD.BARCODE IS NOT NULL
  2489. AND GDD.BEGINNINGFLAG = 0
  2490. AND GDD.DELIVERFLAG = 0
  2491. AND GDD.SCRAPFLAG = 0) semi
  2492. where (:DATACODE is null or :DATACODE ='' or :DATACODE ='-1' or instr(','||:DATACODE||',',','||semi.DATACODE||',')>0)
  2493. and (:WORKSHOP is null or :WORKSHOP = '' or instr(','||:WORKSHOP||',',','||semi.WORKSHOP||',')>0)
  2494. and (:MATERIALCODE is null or :MATERIALCODE = '' or instr(','||:MATERIALCODE||',',','||semi.MATERIALCODE||',')>0)
  2495. GROUP BY DATACODE,
  2496. WORKSHOP,
  2497. MATERIALCODE,
  2498. GOODSCODE,
  2499. GOODSNAME
  2500. ORDER BY DATACODE,
  2501. WORKSHOP,
  2502. MATERIALCODE,
  2503. GOODSCODE,
  2504. GOODSNAME";
  2505. OracleParameter[] oracleParameter = new OracleParameter[]
  2506. {
  2507. new OracleParameter(":WORKSHOP",OracleDbType.Varchar2, cre.Properties["WORKSHOP"], ParameterDirection.Input),
  2508. new OracleParameter(":MATERIALCODE",OracleDbType.Varchar2, cre.Properties["MATERIALCODE"], ParameterDirection.Input),
  2509. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  2510. };
  2511. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2512. return sre;
  2513. }
  2514. catch (Exception ex)
  2515. {
  2516. throw ex;
  2517. }
  2518. finally
  2519. {
  2520. if (oracleConn != null)
  2521. {
  2522. oracleConn.Close();
  2523. }
  2524. }
  2525. }
  2526. /// <summary>
  2527. /// 同步SAP接口5000端口_60节点
  2528. /// </summary>
  2529. /// <param name="date"></param>
  2530. /// <param name="datacode"></param>
  2531. /// <param name="userid"></param>
  2532. /// <param name="logid"></param>
  2533. /// <returns></returns>
  2534. public static ServiceResultEntity SyncSap5000_60(DateTime date)
  2535. {
  2536. ServiceResultEntity sre = new ServiceResultEntity();
  2537. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2538. try
  2539. {
  2540. OracleParameter[] paras = null;
  2541. int r = 0;
  2542. // 查询当前节点所有不为S的日志
  2543. string sqlString = @"
  2544. SELECT DL.LOGID
  2545. FROM TSAP_HEGII_DATALOG_BG DL
  2546. WHERE 1 = 1
  2547. AND DL.DATASTUTS = 'F'
  2548. AND DL.LOGID > 6
  2549. AND DL.DATACODE = '60'
  2550. ORDER BY DL.LOGID ";
  2551. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString);
  2552. if (dtLogID.Rows.Count == 0)
  2553. {
  2554. sre.Result = "S";
  2555. sre.Message = "没有要同步的数据";
  2556. return sre;
  2557. }
  2558. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  2559. sqlString = @"
  2560. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  2561. TO_CHAR(5000) WERKS,
  2562. TO_CHAR(WD.GOODSCODE) GROES,
  2563. TO_CHAR(WD.SAPCODE) MATNR,
  2564. TO_CHAR(WD.USERCODE) ZGHNU,
  2565. TO_CHAR(WD.DATACODE) ZJDNU,
  2566. TO_CHAR(WD.CREATETIME, 'YYYYMMDD') ZSCNU,
  2567. TO_CHAR(WD.CREATETIME, 'HH24MISS') ZKSSJ,
  2568. TO_CHAR(WD.CREATETIME, 'YYYYMMDDHH24MISS') ZJSRQ,
  2569. TO_CHAR(WD.ORDERCODE) VBELN,
  2570. TO_CHAR(WD.ORDERITEM) POSNR,
  2571. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  2572. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  2573. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  2574. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  2575. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  2576. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  2577. 'T' AS ZSCS,
  2578. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  2579. WD.CHARG,
  2580. '60' DATACODE,
  2581. '5000' || WD.CHARG || LPAD(DL.LOGID, 10, '0') AS ZID
  2582. FROM TSAP_HEGII_WORKDATA_BG WD
  2583. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  2584. ON WD.LOGID = DL.LOGID
  2585. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0
  2586. ORDER BY WD.LOGID ";
  2587. paras = new OracleParameter[]
  2588. {
  2589. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  2590. };
  2591. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2592. int num = workData.Rows.Count;
  2593. //sqlString = @"
  2594. //SELECT ZID,
  2595. // WERKS,
  2596. // MATNR,
  2597. // ZJDNU,
  2598. // ZSCS,
  2599. // ZSCCJ,
  2600. // ZSCMS,
  2601. // ZSCNU,
  2602. // ZKSSJ,
  2603. // ZGHNU,
  2604. // GROES,
  2605. // POSNR,
  2606. // IDNRK,
  2607. // MENGE,
  2608. // MEINS,
  2609. // CHARG,
  2610. // LGORT
  2611. // FROM TSAP_HEGII_WORKDATA_BG_ZB
  2612. // WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0
  2613. // ORDER BY LOGID ";
  2614. //paras = new OracleParameter[]
  2615. //{
  2616. // new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  2617. //};
  2618. //DataTable dtDetail = oracleConn.GetSqlResultToDt(sqlString, paras);
  2619. // 调用SAP接口
  2620. //string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}"
  2621. // + ",\"TABLE_IN1\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAPDetail>.ConvertToModel(dtDetail)) + "}}";
  2622. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  2623. // 配置文件
  2624. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2625. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  2626. // 测试
  2627. //url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  2628. // 正式
  2629. //url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  2630. string result = string.Empty;
  2631. try
  2632. {
  2633. result = PostData(url030, postString, "POST");
  2634. }
  2635. catch (Exception ex)
  2636. {
  2637. sre.Result = -2;
  2638. sre.Message = "sap030接口同步失败," + ex.Message;
  2639. return sre;
  2640. }
  2641. sqlString = @"
  2642. UPDATE TSAP_HEGII_DATALOG_BG T
  2643. SET T.ENDTIME = SYSDATE,
  2644. DATASTUTS = :DATASTUTS,
  2645. DATAMSG = :MSG
  2646. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  2647. paras = new OracleParameter[]
  2648. {
  2649. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  2650. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  2651. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  2652. };
  2653. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  2654. #region 同步WMS系统
  2655. DateTime now = DateTime.Now;
  2656. string message = string.Empty;
  2657. string sqlFpData = @"
  2658. SELECT WL.SKU,
  2659. WL.SERIALNO,
  2660. WL.ADDDAY,
  2661. WL.ADDTIME,
  2662. WL.CODEI,
  2663. WL.UDF1,
  2664. WL.UDF2,
  2665. WL.LPN,
  2666. WL.CREATETIME,
  2667. GDD.SECURITYCODE,
  2668. WL.LOGTYPE
  2669. FROM TP_WMS_LOG WL
  2670. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  2671. ON GDD.BARCODE = WL.CODEI
  2672. WHERE WL.VALUEFLAG = '1'
  2673. AND WL.BGLOGID = :BGLOGID ";
  2674. string sqlUpdate = @"
  2675. UPDATE TP_WMS_LOG
  2676. SET RETURNDESC = :RETURNDESC,
  2677. UPDATETIME = :UPDATETIME
  2678. WHERE BGLOGID = :BGLOGID ";
  2679. foreach (DataRow row in dtLogID.Rows)
  2680. {
  2681. // 歇2s,调太快会给接口累着。
  2682. Thread.Sleep(2000);
  2683. paras = new OracleParameter[]
  2684. {
  2685. new OracleParameter(":BGLOGID", OracleDbType.Int32, row["LOGID"], ParameterDirection.Input),
  2686. };
  2687. DataTable fpData = oracleConn.GetSqlResultToDt(sqlFpData, paras);
  2688. if (fpData.Rows.Count > 0)
  2689. {
  2690. if ("1".Equals(fpData.Rows[0]["LOGTYPE"] + ""))
  2691. {
  2692. message = WMSDataLogic.PushWMS2(fpData, now);
  2693. }
  2694. else
  2695. {
  2696. message = WMSDataLogic.BackPushWMS2(fpData, now);
  2697. }
  2698. }
  2699. paras = new OracleParameter[]
  2700. {
  2701. new OracleParameter(":RETURNDESC", OracleDbType.NVarchar2, message, ParameterDirection.Input),
  2702. new OracleParameter(":UPDATETIME", OracleDbType.Date, now, ParameterDirection.Input),
  2703. new OracleParameter(":BGLOGID", OracleDbType.Int32, row["LOGID"], ParameterDirection.Input),
  2704. };
  2705. r = oracleConn.ExecuteNonQuery(sqlUpdate, paras);
  2706. }
  2707. #endregion
  2708. oracleConn.Commit();
  2709. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  2710. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  2711. return sre;
  2712. }
  2713. catch (Exception ex)
  2714. {
  2715. OutputLog.TraceLog(LogPriority.Error,
  2716. "BGToSAP",
  2717. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2718. ex.ToString(),
  2719. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2720. throw ex;
  2721. }
  2722. finally
  2723. {
  2724. if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open)
  2725. {
  2726. oracleConn.Disconnect();
  2727. }
  2728. }
  2729. }
  2730. #endregion
  2731. #region 报工移库
  2732. /// <summary>
  2733. /// 报工移库_同步SAP数据(自动)
  2734. /// </summary>
  2735. /// <param name="date"></param>
  2736. public static void BGYKToSAP(DateTime date, DateTime ndate)
  2737. {
  2738. IDBTransaction oracleConn = null;
  2739. ServiceResultEntity sre = new ServiceResultEntity();
  2740. int logid = 0;
  2741. string message = string.Empty;
  2742. string sqlString = string.Empty;
  2743. try
  2744. {
  2745. #region 生成日志
  2746. OracleParameter[] paras = new OracleParameter[]
  2747. {
  2748. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  2749. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  2750. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  2751. };
  2752. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2753. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras);
  2754. int.TryParse(paras[1].Value + "", out logid);
  2755. message = paras[2].Value + "";
  2756. oracleConn.Commit();
  2757. #endregion
  2758. #region 同步SAP
  2759. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2760. //2022年9月8日11:38:51 更改 by fy
  2761. //sqlString = @"
  2762. //SELECT WERKS,
  2763. // MATNR,
  2764. // ZJDNU,
  2765. // ZSCS,
  2766. // ZSCCJ,
  2767. // ZSCMS,
  2768. // CHARG,
  2769. // MENGE,
  2770. // ZMLID
  2771. // FROM TSAP_HEGII_WORKDATA_BGYK
  2772. // WHERE LOGID = :LOGID ";
  2773. sqlString = @"SELECT
  2774. A.WERKS,
  2775. A.MATNR,
  2776. A.ZJDNU,
  2777. -- A.ZSCS,
  2778. 'T' AS ZSCS,
  2779. A.ZSCCJ,
  2780. A.ZSCMS,
  2781. A.CHARG,
  2782. A.MENGE,
  2783. A.ZMLID,
  2784. to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  2785. to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  2786. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  2787. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT,
  2788. '' AS ZTYPE1,
  2789. '' AS ZMSG1
  2790. FROM
  2791. TSAP_HEGII_WORKDATA_BGYK A
  2792. INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID
  2793. WHERE
  2794. A.LOGID = :LOGID";
  2795. paras = new OracleParameter[]
  2796. {
  2797. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  2798. };
  2799. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2800. //获取报工SAP接口是否开启
  2801. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  2802. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  2803. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  2804. {
  2805. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  2806. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2807. string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  2808. //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  2809. string result = PostData(url034, postString, "POST");
  2810. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  2811. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  2812. sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  2813. paras = new OracleParameter[]
  2814. {
  2815. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  2816. new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  2817. new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  2818. };
  2819. oracleConn.ExecuteNonQuery(sqlString, paras);
  2820. oracleConn.Commit();
  2821. }
  2822. #endregion
  2823. }
  2824. catch (Exception ex)
  2825. {
  2826. OutputLog.TraceLog(LogPriority.Error,
  2827. "BGYKToSAP",
  2828. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2829. ex.ToString(),
  2830. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2831. }
  2832. finally
  2833. {
  2834. if (oracleConn != null)
  2835. {
  2836. oracleConn.Close();
  2837. }
  2838. }
  2839. }
  2840. public static void BGYKToSAP_TEST(DateTime date, DateTime ndate)
  2841. {
  2842. IDBTransaction oracleConn = null;
  2843. ServiceResultEntity sre = new ServiceResultEntity();
  2844. int logid = 0;
  2845. string message = string.Empty;
  2846. string sqlString = string.Empty;
  2847. try
  2848. {
  2849. #region 同步SAP
  2850. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2851. //2022年9月8日11:38:51 更改 by fy
  2852. //sqlString = @"
  2853. //SELECT WERKS,
  2854. // MATNR,
  2855. // ZJDNU,
  2856. // ZSCS,
  2857. // ZSCCJ,
  2858. // ZSCMS,
  2859. // CHARG,
  2860. // MENGE,
  2861. // ZMLID
  2862. // FROM TSAP_HEGII_WORKDATA_BGYK
  2863. // WHERE LOGID = :LOGID ";
  2864. sqlString = @"SELECT '5000' WERKS,MATNR,to_char(ZJDNU) ZJDNU,'T' AS ZSCS,to_char(ZSCCJ) ZSCCJ,to_char(ZSCMS) ZSCMS,to_char(CHARG)CHARG,
  2865. to_char(MENGE) MENGE,to_char(ZMLID) ZMLID,
  2866. to_char(:V_DATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  2867. to_char(:IN_DATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  2868. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  2869. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT FROM (
  2870. SELECT
  2871. T.MATNR,
  2872. '30' AS ZJDNU,
  2873. G.GOODS_LINE_CODE AS ZSCS,
  2874. '2' AS ZSCCJ,
  2875. T.ZSCMS,
  2876. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2877. SUM( T.MENGE ) AS MENGE,
  2878. '3' AS ZMLID
  2879. FROM
  2880. (-- 3-3线上施釉(3)到3#刮登(99)
  2881. SELECT
  2882. GDD.GOODSID,
  2883. GDD.MATERIALCODE AS MATNR,
  2884. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2885. COUNT( 1 ) AS MENGE
  2886. FROM
  2887. TP_PM_PRODUCTIONDATA PD1
  2888. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2889. WHERE
  2890. PD1.CREATETIME >= :V_DATEBEGIN
  2891. AND PD1.CREATETIME < :IN_DATEEND
  2892. AND PD1.PROCEDUREID = 99
  2893. AND PD1.VALUEFLAG = '1'
  2894. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  2895. GROUP BY
  2896. GDD.GOODSID,
  2897. GDD.MATERIALCODE,
  2898. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  2899. SELECT
  2900. GDD.GOODSID,
  2901. GDD.MATERIALCODE AS MATNR,
  2902. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2903. - COUNT( 1 ) AS MENGE
  2904. FROM
  2905. TP_PM_PRODUCTIONDATA PD1
  2906. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2907. WHERE
  2908. PD1.BACKOUTTIME >= :V_DATEBEGIN
  2909. AND PD1.BACKOUTTIME < :IN_DATEEND
  2910. AND PD1.PROCEDUREID = 99
  2911. AND PD1.VALUEFLAG = '0'
  2912. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  2913. GROUP BY
  2914. GDD.GOODSID,
  2915. GDD.MATERIALCODE,
  2916. GDD.TESTMOULDFLAG
  2917. ) T
  2918. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  2919. GROUP BY
  2920. T.MATNR,
  2921. T.ZSCMS,
  2922. G.GOODS_LINE_CODE UNION ALL
  2923. SELECT
  2924. T.MATNR,
  2925. '40' AS ZJDNU,
  2926. G.GOODS_LINE_CODE AS ZSCS,
  2927. '2' AS ZSCCJ,
  2928. T.ZSCMS,
  2929. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2930. SUM( T.MENGE ) AS MENGE,
  2931. '3' AS ZMLID
  2932. FROM
  2933. (-- 3#卸窑(103)到7-1成检出窑交接(11)
  2934. SELECT
  2935. GDD.GOODSID,
  2936. GDD.MATERIALCODE AS MATNR,
  2937. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2938. COUNT( 1 ) AS MENGE
  2939. FROM
  2940. TP_PM_PRODUCTIONDATA PD1
  2941. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2942. WHERE
  2943. PD1.CREATETIME >= :V_DATEBEGIN
  2944. AND PD1.CREATETIME < :IN_DATEEND
  2945. AND PD1.PROCEDUREID = 11
  2946. AND PD1.VALUEFLAG = '1'
  2947. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  2948. GROUP BY
  2949. GDD.GOODSID,
  2950. GDD.MATERIALCODE,
  2951. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  2952. SELECT
  2953. GDD.GOODSID,
  2954. GDD.MATERIALCODE AS MATNR,
  2955. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2956. - COUNT( 1 ) AS MENGE
  2957. FROM
  2958. TP_PM_PRODUCTIONDATA PD1
  2959. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2960. WHERE
  2961. PD1.BACKOUTTIME >= :V_DATEBEGIN
  2962. AND PD1.BACKOUTTIME < :IN_DATEEND
  2963. AND PD1.PROCEDUREID = 11
  2964. AND PD1.VALUEFLAG = '0'
  2965. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  2966. GROUP BY
  2967. GDD.GOODSID,
  2968. GDD.MATERIALCODE,
  2969. GDD.TESTMOULDFLAG
  2970. ) T
  2971. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  2972. GROUP BY
  2973. T.MATNR,
  2974. T.ZSCMS,
  2975. G.GOODS_LINE_CODE UNION ALL
  2976. SELECT
  2977. T.MATNR,
  2978. '40' AS ZJDNU,
  2979. G.GOODS_LINE_CODE AS ZSCS,
  2980. '3' AS ZSCCJ,
  2981. T.ZSCMS,
  2982. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2983. SUM( T.MENGE ) AS MENGE,
  2984. '2' AS ZMLID
  2985. FROM
  2986. (-- 6-1卸窑(10)到3#成检交接(104)
  2987. SELECT
  2988. GDD.GOODSID,
  2989. GDD.MATERIALCODE AS MATNR,
  2990. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2991. COUNT( 1 ) AS MENGE
  2992. FROM
  2993. TP_PM_PRODUCTIONDATA PD1
  2994. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2995. WHERE
  2996. PD1.CREATETIME >= :V_DATEBEGIN
  2997. AND PD1.CREATETIME < :IN_DATEEND
  2998. AND PD1.PROCEDUREID = 104
  2999. AND PD1.VALUEFLAG = '1'
  3000. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  3001. GROUP BY
  3002. GDD.GOODSID,
  3003. GDD.MATERIALCODE,
  3004. GDD.TESTMOULDFLAG UNION ALL-- 6-1卸窑(10)到3#成检交接(104)撤销了的
  3005. SELECT
  3006. GDD.GOODSID,
  3007. GDD.MATERIALCODE AS MATNR,
  3008. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  3009. - COUNT( 1 ) AS MENGE
  3010. FROM
  3011. TP_PM_PRODUCTIONDATA PD1
  3012. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  3013. WHERE
  3014. PD1.BACKOUTTIME >= :V_DATEBEGIN
  3015. AND PD1.BACKOUTTIME < :IN_DATEEND
  3016. AND PD1.PROCEDUREID = 104
  3017. AND PD1.VALUEFLAG = '0'
  3018. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  3019. GROUP BY
  3020. GDD.GOODSID,
  3021. GDD.MATERIALCODE,
  3022. GDD.TESTMOULDFLAG
  3023. ) T
  3024. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  3025. GROUP BY
  3026. T.MATNR,
  3027. T.ZSCMS,
  3028. G.GOODS_LINE_CODE
  3029. ) WHERE MENGE > 0";
  3030. OracleParameter[] paras = new OracleParameter[]
  3031. {
  3032. new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input),
  3033. new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input),
  3034. };
  3035. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  3036. //获取报工SAP接口是否开启
  3037. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  3038. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  3039. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  3040. {
  3041. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  3042. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  3043. //string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  3044. string url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  3045. string result = PostData(url034, postString, "POST");
  3046. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  3047. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  3048. //sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  3049. //paras = new OracleParameter[]
  3050. //{
  3051. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  3052. // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  3053. // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  3054. //};
  3055. //oracleConn.ExecuteNonQuery(sqlString, paras);
  3056. oracleConn.Commit();
  3057. }
  3058. #endregion
  3059. }
  3060. catch (Exception ex)
  3061. {
  3062. OutputLog.TraceLog(LogPriority.Error,
  3063. "BGYKToSAP",
  3064. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  3065. ex.ToString(),
  3066. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3067. }
  3068. finally
  3069. {
  3070. if (oracleConn != null)
  3071. {
  3072. oracleConn.Close();
  3073. }
  3074. }
  3075. }
  3076. /// <summary>
  3077. /// 查询同步日志
  3078. /// </summary>
  3079. /// <param name="cre"></param>
  3080. /// <param name="userInfo"></param>
  3081. /// <returns></returns>
  3082. public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre)
  3083. {
  3084. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3085. ServiceResultEntity sre = new ServiceResultEntity();
  3086. try
  3087. {
  3088. string sqlString = @"
  3089. SELECT DL.LOGID,
  3090. DL.BEGINTIME,
  3091. DL.ENDTIME,
  3092. DL.YYYYMMDD,
  3093. DL.ZTYPE,
  3094. DL.ZMSG,
  3095. U.USERCODE SYNUSERCODE
  3096. FROM TSAP_HEGII_DATALOG_BGYK DL
  3097. LEFT JOIN TP_MST_USER U
  3098. ON U.USERID = DL.CREATEUSERID
  3099. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  3100. AND DL.EXECUTEDATEEND <= :DATEEND ";
  3101. OracleParameter[] oracleParameter = new OracleParameter[]
  3102. {
  3103. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  3104. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  3105. };
  3106. sqlString += "ORDER BY dl.logid DESC\n";
  3107. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  3108. return sre;
  3109. }
  3110. catch (Exception ex)
  3111. {
  3112. throw ex;
  3113. }
  3114. finally
  3115. {
  3116. if (oracleConn != null)
  3117. {
  3118. oracleConn.Close();
  3119. }
  3120. }
  3121. }
  3122. /// <summary>
  3123. /// 查询同步明细
  3124. /// </summary>
  3125. /// <param name="logid"></param>
  3126. /// <param name="userInfo"></param>
  3127. /// <returns></returns>
  3128. public static ServiceResultEntity GetWorkData_BGYK(ClientRequestEntity cre)
  3129. {
  3130. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3131. ServiceResultEntity sre = new ServiceResultEntity();
  3132. try
  3133. {
  3134. //add xiacm 2022-10-21
  3135. int logid = Convert.ToInt32(cre.Request);
  3136. string sqlString = @"
  3137. SELECT WERKS,
  3138. MATNR,
  3139. ZJDNU,
  3140. ZSCS,
  3141. ZSCCJ,
  3142. ZSCMS,
  3143. CHARG,
  3144. MENGE,
  3145. ZMLID
  3146. FROM TSAP_HEGII_WORKDATA_BGYK WD ";
  3147. if (logid > 0)
  3148. {
  3149. sqlString += "WHERE WD.LOGID = :LOGID ";
  3150. }
  3151. else
  3152. {
  3153. sqlString += @" INNER JOIN TSAP_HEGII_DATALOG_BGYK DL
  3154. ON WD.LOGID = DL.LOGID
  3155. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  3156. AND DL.EXECUTEDATEEND <= :DATEEND ";
  3157. }
  3158. OracleParameter[] oracleParameter = new OracleParameter[]
  3159. {
  3160. new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input),
  3161. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  3162. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  3163. };
  3164. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  3165. return sre;
  3166. }
  3167. catch (Exception ex)
  3168. {
  3169. throw ex;
  3170. }
  3171. finally
  3172. {
  3173. if (oracleConn != null)
  3174. {
  3175. oracleConn.Close();
  3176. }
  3177. }
  3178. }
  3179. #endregion
  3180. #region PostData 请求
  3181. public static string PostData(string url, string data, string method)
  3182. {
  3183. //将单引号转义成双引号
  3184. data = data.Replace("'", "\"");
  3185. //创建Web访问对象
  3186. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  3187. //把用户传过来的数据转成“UTF-8”的字节流
  3188. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  3189. myRequest.Method = method;
  3190. myRequest.ContentLength = buf.Length;
  3191. myRequest.ContentType = "application/json;charset=UTF-8";
  3192. //myRequest.MaximumAutomaticRedirections = 1;
  3193. myRequest.AllowAutoRedirect = true;
  3194. //UTF8标准转码加密
  3195. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  3196. // 配置文件
  3197. string userName = ini.ReadIniData("SAP_NEW_INFO", "userName");
  3198. // 测试
  3199. //userName = "hgsapdk:Sapdk#240";
  3200. // 正式
  3201. //string userName = "PODKMES:Sapdk#800";
  3202. string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
  3203. myRequest.Headers.Add("Authorization", "Basic " + base64Header);
  3204. //发送请求
  3205. Stream stream = myRequest.GetRequestStream();
  3206. stream.Write(buf, 0, buf.Length);
  3207. stream.Close();
  3208. //获取接口返回值
  3209. //通过Web访问对象获取响应内容
  3210. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  3211. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  3212. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  3213. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  3214. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  3215. reader.Close();
  3216. myResponse.Close();
  3217. // 结果
  3218. OutputLog.TraceLog(LogPriority.Information,
  3219. "报工030", method, data,
  3220. LocalPath.LogExePath + "SAP_HEGII\\Info_030");
  3221. return returnXml;
  3222. }
  3223. #endregion
  3224. #region 转换
  3225. public class ModelConvertHelper<T> where T : new()
  3226. {
  3227. public static List<T> ConvertToModel(DataTable dt)
  3228. {
  3229. // 定义集合
  3230. List<T> ts = new List<T>();
  3231. // 获得此模型的类型
  3232. Type type = typeof(T);
  3233. string tempName = "";
  3234. foreach (DataRow dr in dt.Rows)
  3235. {
  3236. T t = new T();
  3237. // 获得此模型的公共属性
  3238. PropertyInfo[] propertys = t.GetType().GetProperties();
  3239. foreach (PropertyInfo pi in propertys)
  3240. {
  3241. tempName = pi.Name;
  3242. // 检查DataTable是否包含此列
  3243. if (dt.Columns.Contains(tempName))
  3244. {
  3245. // 判断此属性是否有Setter
  3246. if (!pi.CanWrite) continue;
  3247. object value = dr[tempName];
  3248. if (value != DBNull.Value)
  3249. pi.SetValue(t, value, null);
  3250. }
  3251. }
  3252. ts.Add(t);
  3253. }
  3254. return ts;
  3255. }
  3256. }
  3257. #endregion
  3258. }
  3259. }