SAPDataLogicPartial.cs 123 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024
  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 Dongke.IBOSS.PRD.Basics.BaseResources;
  11. using Dongke.IBOSS.PRD.Basics.DataAccess;
  12. using Dongke.IBOSS.PRD.Basics.Library;
  13. using Dongke.IBOSS.PRD.Service.BPMDataService;
  14. using Dongke.IBOSS.PRD.Service.DataModels;
  15. using Dongke.IBOSS.PRD.WCF.DataModels;
  16. using Newtonsoft.Json;
  17. using Newtonsoft.Json.Linq;
  18. using Oracle.ManagedDataAccess.Client;
  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 && SAP_ING_NEW == "1")
  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 result = PostData(url033, postString, "POST");
  93. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  94. string msg = JObject.Parse(result)["ZMSG"].ToString();
  95. sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  96. paras = new OracleParameter[]
  97. {
  98. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  99. new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  100. new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  101. };
  102. oracleConn.ExecuteNonQuery(sqlString, paras);
  103. oracleConn.Commit();
  104. }
  105. #endregion
  106. }
  107. catch (Exception ex)
  108. {
  109. OutputLog.TraceLog(LogPriority.Error,
  110. "CrossWorkshopToSAP",
  111. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  112. ex.ToString(),
  113. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  114. }
  115. }
  116. public static void CrossWorkshopToSAP_test(DateTime date, DateTime ndate)
  117. {
  118. IDBTransaction oracleConn = null;
  119. ServiceResultEntity sre = new ServiceResultEntity();
  120. int logid = 0;
  121. string message = string.Empty;
  122. string sqlString = string.Empty;
  123. try
  124. {
  125. #region 同步SAP
  126. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  127. //sqlString = "select workcode from tp_mst_account where rownum = 1";
  128. //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  129. //workcode = "5000";
  130. sqlString = @"SELECT
  131. to_char(:v_datebegin, 'yyyymmddhh24miss') AS ZYWKS,
  132. to_char(:in_dateend, 'yyyymmddhh24miss') AS ZYWJS,
  133. to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,
  134. '5000' AS WERKS,
  135. MATERIALCODE AS MATNR,
  136. GOODSCODE AS GROES,
  137. to_char(WORKSHOP) AS ZSCCJ,
  138. to_char(DATACODE) AS ZJDNU,
  139. to_char(ITEM) AS ZZYLX,
  140. to_char(count( * )) AS MENGE,
  141. 'T' AS ZSCS,
  142. CASE WHEN TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  143. '' AS ZTYPE1,
  144. '' AS ZMSG1
  145. FROM
  146. (--产量
  147. SELECT
  148. GDD.MATERIALCODE,
  149. gdd.goodscode,
  150. HGDI.WORKSHOP,
  151. HGDI.DATACODE,
  152. 1 AS ITEM,
  153. GDD.TESTMOULDFLAG,
  154. G.GOODS_LINE_CODE AS ZSCS
  155. FROM
  156. TP_PM_PRODUCTIONDATA PD
  157. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  158. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  159. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  160. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  161. AND HGDI.ITEMTYPE = 1
  162. AND HGDI.ITEMID = PD.PROCEDUREID
  163. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  164. WHERE
  165. PD.VALUEFLAG = 1
  166. AND PD.CREATETIME >= :v_datebegin
  167. AND PD.CREATETIME < :in_dateend
  168. AND(
  169. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  170. OR(
  171. HGDI.WORKSHOP = 3
  172. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  173. )
  174. )
  175. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  176. UNION ALL
  177. --产量撤销
  178. SELECT
  179. GDD.MATERIALCODE,
  180. GDD.goodscode,
  181. HGDI.WORKSHOP,
  182. HGDI.DATACODE AS DATACODE,
  183. 2 AS ITEM,
  184. GDD.TESTMOULDFLAG,
  185. G.GOODS_LINE_CODE AS ZSCS
  186. FROM
  187. TP_PM_PRODUCTIONDATA PD
  188. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  189. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  190. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  191. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  192. AND HGDI.ITEMID = PD.PROCEDUREID
  193. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  194. WHERE
  195. PD.VALUEFLAG = 0
  196. AND PD.BACKOUTTIME >= :v_datebegin
  197. AND PD.BACKOUTTIME < :in_dateend
  198. AND(
  199. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  200. OR(
  201. HGDI.WORKSHOP = 3
  202. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  203. )
  204. )
  205. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损
  206. UNION ALL
  207. SELECT
  208. GDD.MATERIALCODE,
  209. GDD.goodscode,
  210. HGDI.WORKSHOP,
  211. HGDI.DATACODE AS DATACODE,
  212. 3 AS ITEM,
  213. GDD.TESTMOULDFLAG,
  214. G.GOODS_LINE_CODE AS ZSCS
  215. FROM
  216. TP_PM_SCRAPPRODUCT SP
  217. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  218. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  219. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  220. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  221. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  222. AND HGDI.ITEMTYPE = 2
  223. AND HGDI.ITEMID = PD.PROCEDUREID
  224. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  225. WHERE
  226. SP.AUDITSTATUS = 1
  227. AND SP.AUDITDATE >= :v_datebegin
  228. AND SP.AUDITDATE < :in_dateend
  229. AND(
  230. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  231. OR(
  232. HGDI.WORKSHOP = 3
  233. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  234. )
  235. )
  236. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损撤销
  237. UNION ALL
  238. SELECT
  239. GDD.MATERIALCODE,
  240. GDD.goodscode,
  241. HGDI.WORKSHOP,
  242. HGDI.DATACODE AS DATACODE,
  243. 4 AS ITEM,
  244. GDD.TESTMOULDFLAG,
  245. G.GOODS_LINE_CODE AS ZSCS
  246. FROM
  247. TP_PM_SCRAPPRODUCT SP
  248. INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  249. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  250. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  251. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  252. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  253. AND HGDI.ITEMTYPE = 2
  254. AND HGDI.ITEMID = PD.PROCEDUREID
  255. AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  256. WHERE
  257. SP.AUDITSTATUS = 1
  258. AND SP.VALUEFLAG = '0'
  259. AND SP.BACKOUTTIME >= :v_datebegin
  260. AND SP.BACKOUTTIME < :in_dateend
  261. AND(
  262. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  263. OR(
  264. HGDI.WORKSHOP = 3
  265. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  266. )
  267. )
  268. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 盘点清除
  269. UNION ALL
  270. SELECT
  271. GDD.MATERIALCODE,
  272. GDD.GOODSCODE,
  273. HGDI.WORKSHOP,
  274. HGDI.DATACODE,
  275. 5 AS ITEM,
  276. GDD.TESTMOULDFLAG ,
  277. G.GOODS_LINE_CODE AS ZSCS
  278. FROM
  279. TP_PM_GOODSCHANGEHISTORY GH
  280. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  281. INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID
  282. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  283. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  284. AND HGDI.ITEMTYPE = 2
  285. AND HGDI.ITEMID = GH.OTHERID
  286. WHERE
  287. GH.CREATETIME >= :v_datebegin
  288. AND GH.CREATETIME < :in_dateend
  289. AND GH.DATATYPE IN( 11, 12 )
  290. AND(
  291. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  292. OR(
  293. HGDI.WORKSHOP = 3
  294. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  295. )
  296. )
  297. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 干补
  298. UNION ALL
  299. SELECT
  300. GDD.MATERIALCODE,
  301. GDD.GOODSCODE,
  302. HGDI.WORKSHOP,
  303. HGDI.DATACODE,
  304. 6 AS ITEM,
  305. GDD.TESTMOULDFLAG,
  306. G.GOODS_LINE_CODE AS ZSCS
  307. FROM
  308. TP_PM_SCRAPPRODUCT SP
  309. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  310. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  311. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  312. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  313. AND HGDI.ITEMTYPE = 2
  314. AND HGDI.ITEMID = SP.PROCEDUREID
  315. WHERE
  316. SP.AUDITSTATUS = 1
  317. AND SP.VALUEFLAG = '1'
  318. AND SP.GOODSLEVELTYPEID = 9
  319. AND SP.SPECIALREPAIRTIME >= :v_datebegin
  320. AND SP.SPECIALREPAIRTIME < :in_dateend
  321. AND(
  322. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  323. OR(
  324. HGDI.WORKSHOP = 3
  325. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  326. )
  327. )
  328. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 回收
  329. UNION ALL
  330. SELECT
  331. GDD.MATERIALCODE,
  332. GDD.GOODSCODE,
  333. HGDI.WORKSHOP,
  334. HGDI.DATACODE,
  335. 7 AS ITEM,
  336. GDD.TESTMOULDFLAG,
  337. G.GOODS_LINE_CODE AS ZSCS
  338. FROM
  339. TP_PM_SCRAPPRODUCT SP
  340. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  341. INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  342. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  343. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  344. AND HGDI.ITEMTYPE = 2
  345. AND HGDI.ITEMID = SP.PROCEDUREID
  346. WHERE
  347. SP.AUDITSTATUS = 1
  348. AND SP.VALUEFLAG = '1'
  349. AND SP.RECYCLINGFLAG = '1'
  350. AND SP.RECYCLINGTIME >= :v_datebegin
  351. AND SP.RECYCLINGTIME < :in_dateend
  352. AND(
  353. (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  354. OR(
  355. HGDI.WORKSHOP = 3
  356. AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  357. )
  358. )
  359. AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  360. )
  361. GROUP BY
  362. MATERIALCODE,
  363. GOODSCODE,
  364. WORKSHOP,
  365. DATACODE,
  366. ITEM,
  367. TESTMOULDFLAG,
  368. ZSCS
  369. ORDER BY
  370. DATACODE,
  371. ITEM,
  372. WORKSHOP";
  373. OracleParameter[] paras = new OracleParameter[]
  374. {
  375. new OracleParameter(":v_datebegin", OracleDbType.Date, date, ParameterDirection.Input),
  376. new OracleParameter(":in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  377. };
  378. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  379. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  380. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  381. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  382. {
  383. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  384. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  385. //string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  386. string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  387. string result = PostData(url033, postString, "POST");
  388. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  389. string msg = JObject.Parse(result)["ZMSG"].ToString();
  390. //sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  391. //paras = new OracleParameter[]
  392. //{
  393. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  394. // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  395. // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  396. //};
  397. //oracleConn.ExecuteNonQuery(sqlString, paras);
  398. oracleConn.Commit();
  399. }
  400. #endregion
  401. }
  402. catch (Exception ex)
  403. {
  404. OutputLog.TraceLog(LogPriority.Error,
  405. "CrossWorkshopToSAP",
  406. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  407. ex.ToString(),
  408. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  409. }
  410. }
  411. /// <summary>
  412. /// 查询跨车间作业同步日志
  413. /// </summary>
  414. /// <param name="cre"></param>
  415. /// <param name="userInfo"></param>
  416. /// <returns></returns>
  417. public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre)
  418. {
  419. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  420. ServiceResultEntity sre = new ServiceResultEntity();
  421. try
  422. {
  423. string sqlString = "SELECT\n" +
  424. " dl.logid,\n" +
  425. " dl.begintime,\n" +
  426. " dl.endtime,\n" +
  427. " dl.yyyymmdd,\n" +
  428. " dl.workcode,\n" +
  429. " dl.datastuts,\n" +
  430. " dl.datamsg,\n" +
  431. " dl.executedatebegin,\n" +
  432. " dl.executedateend,\n" +
  433. " u.usercode synusercode\n" +
  434. "FROM\n" +
  435. " tsap_hegii_datalog_kcjzy dl\n" +
  436. " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" +
  437. "WHERE\n" +
  438. " dl.EXECUTEDATEBEGIN >= :datebegin \n" +
  439. " AND dl.EXECUTEDATEEND <= :dateend \n";
  440. OracleParameter[] oracleParameter = new OracleParameter[]
  441. {
  442. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  443. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  444. };
  445. string datastuts = cre.Properties["datastuts"] + "";
  446. if (!string.IsNullOrEmpty(datastuts))
  447. {
  448. sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  449. }
  450. sqlString += "ORDER BY dl.logid DESC\n";
  451. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  452. return sre;
  453. }
  454. catch (Exception ex)
  455. {
  456. throw ex;
  457. }
  458. }
  459. /// <summary>
  460. /// 查询同步明细
  461. /// </summary>
  462. /// <param name="logid"></param>
  463. /// <param name="userInfo"></param>
  464. /// <returns></returns>
  465. public static ServiceResultEntity GetWorkData_kczzy(ClientRequestEntity cre)
  466. {
  467. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  468. ServiceResultEntity sre = new ServiceResultEntity();
  469. try
  470. {
  471. int logid = Convert.ToInt32(cre.Request);
  472. string sqlString = "\n" +
  473. "select wd.workshop\n" +
  474. " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " +
  475. " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" +
  476. " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" +
  477. " ,item\n" +
  478. " ,wd.datacode\n" +
  479. " ,dc.datacodename\n" +
  480. " ,wd.goodscode\n" +
  481. " ,wd.sapcode\n" +
  482. " ,wd.num\n" +
  483. " ,wd.createtime\n" +
  484. " ,wd.testmouldflag\n" +
  485. " ,wd.zscs\n" +
  486. " ,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" +
  487. " ,wd.logid\n" +
  488. " from tsap_hegii_workdata_kcjzy wd\n" +
  489. " inner join tsap_hegii_datacode dc\n" +
  490. " on dc.datacode = wd.datacode\n";
  491. if (logid > 0)
  492. {
  493. sqlString += " where wd.logid = :logid \n";
  494. }
  495. else
  496. {
  497. sqlString += " inner join tsap_hegii_datalog_kcjzy dl\n" +
  498. " on wd.logid=dl.logid \n" +
  499. " where dl.EXECUTEDATEBEGIN>= :datebegin \n" +
  500. " and dl.EXECUTEDATEEND<= :dateend \n";
  501. }
  502. sqlString += " order by wd.datacode,wd.item,wd.workshop \n";
  503. OracleParameter[] oracleParameter = new OracleParameter[]
  504. {
  505. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  506. new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  507. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  508. };
  509. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  510. return sre;
  511. }
  512. catch (Exception ex)
  513. {
  514. throw ex;
  515. }
  516. }
  517. #endregion
  518. #region 报工
  519. ///// <summary>
  520. ///// 同步SAP数据(自动)
  521. ///// </summary>
  522. ///// <param name="date"></param>
  523. //public static void AutoWorkDataToSAP5000(DateTime date, string funCode)
  524. //{
  525. // if (string.IsNullOrWhiteSpace(funCode))
  526. // {
  527. // //return;
  528. // funCode = "ALL";
  529. // }
  530. // funCode = "," + funCode + ",";
  531. // ServiceResultEntity sre = null;
  532. // // 10 模具
  533. // if (funCode == ",ALL," || funCode.Contains(",10,"))
  534. // {
  535. // try
  536. // {
  537. // sre = SetWorkData10_50(date, "10", 0);
  538. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  539. // "S" != sre.Result + "")
  540. // {
  541. // OutputLog.TraceLog(LogPriority.Warning,
  542. // "AutoWorkDataToSAP",
  543. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  544. // JsonHelper.ToJson(sre),
  545. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  546. // }
  547. // }
  548. // catch (Exception ex)
  549. // {
  550. // OutputLog.TraceLog(LogPriority.Error,
  551. // "AutoWorkDataToSAP",
  552. // "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  553. // ex.ToString(),
  554. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  555. // }
  556. // }
  557. // // 20 湿坯
  558. // if (funCode == ",ALL," || funCode.Contains(",20,"))
  559. // {
  560. // try
  561. // {
  562. // sre = SetWorkData10_50(date, "20", 0);
  563. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  564. // "S" != sre.Result + "")
  565. // {
  566. // OutputLog.TraceLog(LogPriority.Warning,
  567. // "AutoWorkDataToSAP",
  568. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  569. // JsonHelper.ToJson(sre),
  570. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  571. // }
  572. // }
  573. // catch (Exception ex)
  574. // {
  575. // OutputLog.TraceLog(LogPriority.Error,
  576. // "AutoWorkDataToSAP",
  577. // "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  578. // ex.ToString(),
  579. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  580. // }
  581. // }
  582. // // 30 精坯
  583. // if (funCode == ",ALL," || funCode.Contains(",30,"))
  584. // {
  585. // try
  586. // {
  587. // sre = SetWorkData10_50(date, "30", 0);
  588. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  589. // "S" != sre.Result + "")
  590. // {
  591. // OutputLog.TraceLog(LogPriority.Warning,
  592. // "AutoWorkDataToSAP",
  593. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  594. // JsonHelper.ToJson(sre),
  595. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  596. // }
  597. // }
  598. // catch (Exception ex)
  599. // {
  600. // OutputLog.TraceLog(LogPriority.Error,
  601. // "AutoWorkDataToSAP",
  602. // "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  603. // ex.ToString(),
  604. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  605. // }
  606. // }
  607. // // 40 釉坯
  608. // if (funCode == ",ALL," || funCode.Contains(",40,"))
  609. // {
  610. // try
  611. // {
  612. // sre = SetWorkData10_50(date, "40", 0);
  613. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  614. // "S" != sre.Result + "")
  615. // {
  616. // OutputLog.TraceLog(LogPriority.Warning,
  617. // "AutoWorkDataToSAP",
  618. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  619. // JsonHelper.ToJson(sre),
  620. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  621. // }
  622. // }
  623. // catch (Exception ex)
  624. // {
  625. // OutputLog.TraceLog(LogPriority.Error,
  626. // "AutoWorkDataToSAP",
  627. // "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  628. // ex.ToString(),
  629. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  630. // }
  631. // }
  632. // // 50 烧成
  633. // if (funCode == ",ALL," || funCode.Contains(",50,"))
  634. // {
  635. // try
  636. // {
  637. // sre = SetWorkData10_50(date, "50", 0);
  638. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  639. // "S" != sre.Result + "")
  640. // {
  641. // OutputLog.TraceLog(LogPriority.Warning,
  642. // "AutoWorkDataToSAP",
  643. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  644. // JsonHelper.ToJson(sre),
  645. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  646. // }
  647. // }
  648. // catch (Exception ex)
  649. // {
  650. // OutputLog.TraceLog(LogPriority.Error,
  651. // "AutoWorkDataToSAP",
  652. // "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  653. // ex.ToString(),
  654. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  655. // }
  656. // }
  657. // //// 6001 成品明细
  658. // //if (funCode == ",ALL," || funCode.Contains(",6001,"))
  659. // //{
  660. // // try
  661. // // {
  662. // // sre = SetFP6001(date, 0);
  663. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  664. // // "S" != sre.Result + "")
  665. // // {
  666. // // OutputLog.TraceLog(LogPriority.Warning,
  667. // // "AutoWorkDataToSAP",
  668. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  669. // // JsonHelper.ToJson(sre),
  670. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  671. // // }
  672. // // }
  673. // // catch (Exception ex)
  674. // // {
  675. // // OutputLog.TraceLog(LogPriority.Error,
  676. // // "AutoWorkDataToSAP",
  677. // // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  678. // // ex.ToString(),
  679. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  680. // // }
  681. // //}
  682. // //// 6001 成品明细(小时)-20分钟
  683. // //if (funCode == ",6002,")
  684. // //{
  685. // // try
  686. // // {
  687. // // sre = SetFP6002(date, 0);
  688. // // if (sre.Status != Constant.ServiceResultStatus.Success ||
  689. // // "S" != sre.Result + "")
  690. // // {
  691. // // OutputLog.TraceLog(LogPriority.Warning,
  692. // // "AutoWorkDataToSAP",
  693. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  694. // // JsonHelper.ToJson(sre),
  695. // // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  696. // // }
  697. // // }
  698. // // catch (Exception ex)
  699. // // {
  700. // // OutputLog.TraceLog(LogPriority.Error,
  701. // // "AutoWorkDataToSAP",
  702. // // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  703. // // ex.ToString(),
  704. // // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  705. // // }
  706. // //}
  707. //}
  708. /// <summary>
  709. /// 同步SAP数据(自动)(重载)
  710. /// </summary>
  711. /// <param name="date">当前时间</param>
  712. /// <param name="funCode">工序码</param>
  713. /// <param name="ndate">本次要执行到的时间</param>
  714. public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate)
  715. {
  716. if (string.IsNullOrWhiteSpace(funCode))
  717. {
  718. //return;
  719. funCode = "ALL";
  720. }
  721. funCode = "," + funCode + ",";
  722. ServiceResultEntity sre = null;
  723. // 10 模具
  724. if (funCode == ",ALL," || funCode.Contains(",10,"))
  725. {
  726. try
  727. {
  728. sre = SetWorkData10_50_5000("10", ndate);
  729. if (sre.Status != Constant.ServiceResultStatus.Success ||
  730. "S" != sre.Result + "")
  731. {
  732. OutputLog.TraceLog(LogPriority.Warning,
  733. "AutoWorkDataToSAP5000",
  734. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  735. JsonHelper.ToJson(sre),
  736. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  737. }
  738. }
  739. catch (Exception ex)
  740. {
  741. OutputLog.TraceLog(LogPriority.Error,
  742. "AutoWorkDataToSAP5000",
  743. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  744. ex.ToString(),
  745. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  746. }
  747. }
  748. // 20 湿坯
  749. if (funCode == ",ALL," || funCode.Contains(",20,"))
  750. {
  751. try
  752. {
  753. sre = SetWorkData10_50_5000("20", ndate);
  754. if (sre.Status != Constant.ServiceResultStatus.Success ||
  755. "S" != sre.Result + "")
  756. {
  757. OutputLog.TraceLog(LogPriority.Warning,
  758. "AutoWorkDataToSAP5000",
  759. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  760. JsonHelper.ToJson(sre),
  761. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  762. }
  763. }
  764. catch (Exception ex)
  765. {
  766. OutputLog.TraceLog(LogPriority.Error,
  767. "AutoWorkDataToSAP5000",
  768. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  769. ex.ToString(),
  770. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  771. }
  772. }
  773. // 30 精坯
  774. if (funCode == ",ALL," || funCode.Contains(",30,"))
  775. {
  776. try
  777. {
  778. sre = SetWorkData10_50_5000("30", ndate);
  779. if (sre.Status != Constant.ServiceResultStatus.Success ||
  780. "S" != sre.Result + "")
  781. {
  782. OutputLog.TraceLog(LogPriority.Warning,
  783. "AutoWorkDataToSAP5000",
  784. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  785. JsonHelper.ToJson(sre),
  786. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  787. }
  788. }
  789. catch (Exception ex)
  790. {
  791. OutputLog.TraceLog(LogPriority.Error,
  792. "AutoWorkDataToSAP5000",
  793. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  794. ex.ToString(),
  795. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  796. }
  797. }
  798. // 40 釉坯
  799. if (funCode == ",ALL," || funCode.Contains(",40,"))
  800. {
  801. try
  802. {
  803. sre = SetWorkData10_50_5000("40", ndate);
  804. if (sre.Status != Constant.ServiceResultStatus.Success ||
  805. "S" != sre.Result + "")
  806. {
  807. OutputLog.TraceLog(LogPriority.Warning,
  808. "AutoWorkDataToSAP5000",
  809. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  810. JsonHelper.ToJson(sre),
  811. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  812. }
  813. }
  814. catch (Exception ex)
  815. {
  816. OutputLog.TraceLog(LogPriority.Error,
  817. "AutoWorkDataToSAP5000",
  818. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  819. ex.ToString(),
  820. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  821. }
  822. }
  823. // 50 烧成
  824. if (funCode == ",ALL," || funCode.Contains(",50,"))
  825. {
  826. try
  827. {
  828. sre = SetWorkData10_50_5000("50", ndate);
  829. if (sre.Status != Constant.ServiceResultStatus.Success ||
  830. "S" != sre.Result + "")
  831. {
  832. OutputLog.TraceLog(LogPriority.Warning,
  833. "AutoWorkDataToSAP5000",
  834. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  835. JsonHelper.ToJson(sre),
  836. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  837. }
  838. }
  839. catch (Exception ex)
  840. {
  841. OutputLog.TraceLog(LogPriority.Error,
  842. "AutoWorkDataToSAP5000",
  843. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  844. ex.ToString(),
  845. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  846. }
  847. }
  848. }
  849. /// <summary>
  850. /// 执行与推送
  851. /// </summary>
  852. /// <param name="datacode"></param>
  853. /// <param name="ndate"></param>
  854. /// <returns></returns>
  855. public static ServiceResultEntity SetWorkData10_50_5000(string datacode, DateTime ndate)
  856. {
  857. ServiceResultEntity sre = new ServiceResultEntity();
  858. IDBTransaction oracleConn = null;
  859. try
  860. {
  861. #region 事务1,执行存储过程
  862. OracleParameter[] paras = null;
  863. int logid = 0;
  864. string message = string.Empty;
  865. // 10 模具
  866. if ("10".Equals(datacode))
  867. {
  868. paras = new OracleParameter[]
  869. {
  870. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  871. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  872. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  873. };
  874. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  875. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras);
  876. int.TryParse(paras[1].Value + "", out logid);
  877. message = paras[2].Value + "";
  878. oracleConn.Commit();
  879. }
  880. // 20 湿坯
  881. else if ("20".Equals(datacode))
  882. {
  883. paras = new OracleParameter[]
  884. {
  885. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  886. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  887. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  888. };
  889. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  890. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras);
  891. int.TryParse(paras[1].Value + "", out logid);
  892. message = paras[2].Value + "";
  893. oracleConn.Commit();
  894. }
  895. // 30 精坯、40 釉坯
  896. else if ("30".Equals(datacode) || "40".Equals(datacode))
  897. {
  898. paras = new OracleParameter[]
  899. {
  900. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  901. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  902. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  903. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  904. };
  905. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  906. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras);
  907. int.TryParse(paras[2].Value + "", out logid);
  908. message = paras[3].Value + "";
  909. oracleConn.Commit();
  910. }
  911. // 50 烧成
  912. else if ("50".Equals(datacode))
  913. {
  914. paras = new OracleParameter[]
  915. {
  916. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  917. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  918. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  919. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  920. };
  921. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  922. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG50", paras);
  923. int.TryParse(paras[2].Value + "", out logid);
  924. message = paras[3].Value + "";
  925. oracleConn.Commit();
  926. }
  927. // 如果logid为0,则数据没有生成
  928. if (logid == 0)
  929. {
  930. sre.Status = Constant.ServiceResultStatus.Other;
  931. sre.Message = message;
  932. return sre;
  933. }
  934. #endregion
  935. // 事物2,同步SAP接口
  936. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  937. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  938. if (SAP_ING_NEW == "1")
  939. {
  940. sre = SyncSap5000(ndate, datacode);
  941. }
  942. return sre;
  943. }
  944. catch (Exception ex)
  945. {
  946. throw ex;
  947. }
  948. finally
  949. {
  950. if (oracleConn != null &&
  951. oracleConn.ConnState == ConnectionState.Open)
  952. {
  953. oracleConn.Disconnect();
  954. }
  955. }
  956. }
  957. /// <summary>
  958. /// 同步SAP接口5000端口新
  959. /// </summary>
  960. /// <param name="date"></param>
  961. /// <param name="datacode"></param>
  962. /// <param name="userid"></param>
  963. /// <param name="logid"></param>
  964. /// <returns></returns>
  965. public static ServiceResultEntity SyncSap5000(DateTime date, string datacode)
  966. {
  967. ServiceResultEntity sre = new ServiceResultEntity();
  968. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  969. try
  970. {
  971. OracleParameter[] paras = null;
  972. int r = 0;
  973. // 查询当前节点所有不为S的日志
  974. string sqlString = @"
  975. SELECT DL.LOGID
  976. FROM TSAP_HEGII_DATALOG_BG DL
  977. WHERE 1 = 1
  978. AND DL.DATASTUTS = 'F'
  979. AND DL.LOGID > 6
  980. AND DL.DATACODE = :DATACODE ";
  981. paras = new OracleParameter[]
  982. {
  983. new OracleParameter(":DATACODE", datacode),
  984. };
  985. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  986. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  987. sqlString = @"
  988. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  989. WD.WORKCODE AS WERKS,
  990. TO_CHAR(WD.GOODSCODE) GROES,
  991. TO_CHAR(WD.SAPCODE) MATNR,
  992. TO_CHAR(WD.USERCODE) ZGHNU,
  993. TO_CHAR(WD.DATACODE) ZJDNU,
  994. TO_CHAR(WD.YYYYMMDD) ZSCNU,
  995. TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ,
  996. TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ,
  997. TO_CHAR(WD.ORDERCODE) VBELN,
  998. TO_CHAR(WD.ORDERITEM) POSNR,
  999. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  1000. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  1001. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  1002. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  1003. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  1004. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  1005. DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS,
  1006. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  1007. WD.CHARG,
  1008. TO_CHAR(:DATACODE) DATACODE,
  1009. WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID
  1010. FROM TSAP_HEGII_WORKDATA_BG WD
  1011. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  1012. ON WD.LOGID = DL.LOGID
  1013. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ";
  1014. paras = new OracleParameter[]
  1015. {
  1016. new OracleParameter(":DATACODE",datacode),
  1017. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1018. };
  1019. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1020. int num = workData.Rows.Count;
  1021. // 调用SAP接口
  1022. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1023. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1024. // 配置文件
  1025. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  1026. // 测试
  1027. // string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  1028. // 正式
  1029. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  1030. string result = PostData(url030, postString, "POST");
  1031. sqlString = @"
  1032. UPDATE TSAP_HEGII_DATALOG_BG T
  1033. SET T.ENDTIME = SYSDATE,
  1034. DATASTUTS = :DATASTUTS,
  1035. DATAMSG = :MSG
  1036. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  1037. paras = new OracleParameter[]
  1038. {
  1039. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  1040. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  1041. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1042. };
  1043. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1044. oracleConn.Commit();
  1045. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  1046. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  1047. return sre;
  1048. }
  1049. catch (Exception ex)
  1050. {
  1051. OutputLog.TraceLog(LogPriority.Error,
  1052. "BGToSAP",
  1053. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1054. ex.ToString(),
  1055. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1056. throw ex;
  1057. }
  1058. finally
  1059. {
  1060. if (oracleConn != null &&
  1061. oracleConn.ConnState == ConnectionState.Open)
  1062. {
  1063. oracleConn.Disconnect();
  1064. }
  1065. }
  1066. }
  1067. /// <summary>
  1068. /// 查询同步日志
  1069. /// </summary>
  1070. /// <param name="cre"></param>
  1071. /// <param name="userInfo"></param>
  1072. /// <returns></returns>
  1073. public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre)
  1074. {
  1075. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1076. ServiceResultEntity sre = new ServiceResultEntity();
  1077. try
  1078. {
  1079. string sqlString =
  1080. "select dl.logid\n" +
  1081. " ,dl.logtype\n" +
  1082. " ,dl.begintime\n" +
  1083. " ,dl.endtime\n" +
  1084. " ,dl.yyyymmdd\n" +
  1085. " ,dl.workcode\n" +
  1086. " ,dl.datacode\n" +
  1087. " ,dc.datacodename\n" +
  1088. " ,dl.datastuts\n" +
  1089. " ,dl.datamsg\n" +
  1090. " ,dl.datalogid\n" +
  1091. " ,dl.executedatebegin\n" +
  1092. " ,dl.executedateend\n" +
  1093. " ,u.usercode synusercode\n" +
  1094. " from TSAP_HEGII_DATALOG_BG dl\n" +
  1095. " inner join tsap_hegii_datacode dc\n" +
  1096. " on dc.datacode = dl.datacode\n" +
  1097. " left join tp_mst_user u\n" +
  1098. " on u.userid = dl.createuserid\n" +
  1099. " where dl.logtype IN('2','3')\n" +
  1100. " and dl.executedatebegin >= :DATEBEGIN\n" +
  1101. " and dl.executedateend < :DATEEND\n" +
  1102. " and (-1= :DATACODE or dl.datacode=:DATACODE )";//add xiacm 2022-10-12
  1103. OracleParameter[] oracleParameter = new OracleParameter[]
  1104. {
  1105. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1106. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1107. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1108. };
  1109. sqlString += "ORDER BY dl.logid DESC\n";
  1110. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1111. return sre;
  1112. }
  1113. catch (Exception ex)
  1114. {
  1115. throw ex;
  1116. }
  1117. }
  1118. /// <summary>
  1119. /// 查询同步明细
  1120. /// </summary>
  1121. /// <param name="logid"></param>
  1122. /// <param name="userInfo"></param>
  1123. /// <returns></returns>
  1124. public static ServiceResultEntity GetWorkData_BG(ClientRequestEntity cre)
  1125. {
  1126. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1127. ServiceResultEntity sre = new ServiceResultEntity();
  1128. try
  1129. {
  1130. int logid = Convert.ToInt32(cre.Request);
  1131. string sqlString = "\n" +
  1132. "select wd.yyyymmdd\n" +
  1133. " ,wd.workcode\n" +
  1134. " ,wd.datacode\n" +
  1135. " ,dc.datacodename\n" +
  1136. " ,wd.goodscode\n" +
  1137. " ,wd.sapcode\n" +
  1138. " ,wd.usercode\n" +
  1139. " ,wd.ordercode\n" +
  1140. " ,wd.orderitem\n" +
  1141. " ,to_number(wd.outputnum) outputnum\n" +
  1142. " ,to_number(wd.scrapnum) scrapnum\n" +
  1143. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  1144. " ,to_number(wd.recoverynum) recoverynum\n" +
  1145. " ,to_number(wd.repairnum) repairnum\n" +
  1146. " ,wd.createtime\n" +
  1147. " ,wd.ztype\n" +
  1148. " ,wd.zmsg\n" +
  1149. " ,wd.ztime\n" +
  1150. " ,wd.testmouldflag\n" +
  1151. " ,wd.zscs\n" +
  1152. " ,wd.logid\n" +
  1153. " from tsap_hegii_workdata_BG wd\n" +
  1154. " inner join TSAP_HEGII_DATALOG_BG dl\n" +
  1155. " on dl.logid = wd.logid\n" +
  1156. " inner join tsap_hegii_datacode dc\n" +
  1157. " on dc.datacode = wd.datacode\n";
  1158. //update xiacm 2022-10-12
  1159. if (logid > 0)
  1160. {
  1161. sqlString += " where wd.logid = :logid \n";
  1162. }
  1163. else
  1164. {
  1165. sqlString += " where dl.executedatebegin >= :DATEBEGIN and dl.executedateend < :DATEEND";
  1166. sqlString += " and (-1= :DATACODE OR wd.datacode = :DATACODE)";
  1167. }
  1168. sqlString += " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  1169. OracleParameter[] oracleParameter = new OracleParameter[]
  1170. {
  1171. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  1172. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1173. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1174. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1175. };
  1176. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1177. return sre;
  1178. }
  1179. catch (Exception ex)
  1180. {
  1181. throw ex;
  1182. }
  1183. }
  1184. /// <summary>
  1185. /// 报工汇总 add xiacm 2022-10-12
  1186. /// </summary>
  1187. /// <param name="cre"></param>
  1188. /// <returns></returns>
  1189. public static ServiceResultEntity GetDataLogTotal_BG(ClientRequestEntity cre)
  1190. {
  1191. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1192. ServiceResultEntity sre = new ServiceResultEntity();
  1193. try
  1194. {
  1195. string sqlString = @"
  1196. SELECT T1.DATACODE,
  1197. T1.ACTUALOUTPUT,
  1198. T2.OUTPUT,
  1199. T2.SCRAPNUM,
  1200. T2.CLEANNUPNUM,
  1201. T2.RECOVERYNUM,
  1202. T2.REPAIRNUM,
  1203. T3.DRCXFDRJJDCCP,
  1204. T4.DRJJBQTRCXDCCP,
  1205. T1.ACTUALOUTPUT + NVL(T4.DRJJBQTRCXDCCP, 0) - NVL(T3.DRCXFDRJJDCCP, 0) -
  1206. (T2.OUTPUT + T2.RECOVERYNUM) AS DIFFER
  1207. FROM (
  1208. -- 业务数据汇总
  1209. -- 10
  1210. SELECT '10' AS DATACODE,
  1211. SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS ACTUALOUTPUT
  1212. FROM (SELECT MH.GOODSID,
  1213. MH.MOULDID,
  1214. MH.OPERATIONTYPE,
  1215. MH.GROUTINGNUM
  1216. FROM TP_PC_MOULDCHANGEHISTORY MH
  1217. WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)
  1218. AND MH.CREATETIME >= :DATEBEGIN
  1219. AND MH.CREATETIME < :DATEEND
  1220. UNION ALL
  1221. SELECT MH.GOODSIDAFTER,
  1222. MH.MOULDID,
  1223. 0,
  1224. MH.GROUTINGNUM
  1225. FROM TP_PC_MOULDCHANGEHISTORY MH
  1226. WHERE MH.OPERATIONTYPE = -1
  1227. AND MH.CREATETIME >= :DATEBEGIN
  1228. AND MH.CREATETIME < :DATEEND) MHH
  1229. INNER JOIN TP_PC_MOULD M
  1230. ON M.MOULDID = MHH.MOULDID
  1231. UNION ALL
  1232. -- 20
  1233. SELECT '20' AS DATACODE,
  1234. SUM(DECODE(GH.DATATYPE, 1, 1, -1)) BUSINESSOUTPUT
  1235. FROM TP_PM_GOODSCHANGEHISTORY GH
  1236. INNER JOIN TP_MST_GOODS G
  1237. ON G.GOODSID = GH.GOODSID
  1238. WHERE GH.CREATETIME >= :DATEBEGIN
  1239. AND GH.CREATETIME < :DATEEND
  1240. AND GH.DATATYPE IN (1, 2)
  1241. AND G.SCRAPSUMFLAG = '1'
  1242. UNION ALL
  1243. -- 30
  1244. SELECT '30' AS DATACODE,
  1245. SUM(T1.CC) AS BUSINESSOUTPUT
  1246. FROM (SELECT 1 AS CC
  1247. FROM TP_PM_PRODUCTIONDATA P
  1248. WHERE P.PROCEDUREID IN (53, 97)
  1249. AND P.CREATETIME >= :DATEBEGIN
  1250. AND P.CREATETIME < :DATEEND
  1251. UNION ALL
  1252. SELECT -1 AS CC
  1253. FROM TP_PM_PRODUCTIONDATA P
  1254. WHERE P.PROCEDUREID IN (53, 97)
  1255. AND P.VALUEFLAG = '0'
  1256. AND P.BACKOUTTIME >= :DATEBEGIN
  1257. AND P.BACKOUTTIME < :DATEEND) T1
  1258. UNION ALL
  1259. -- 40
  1260. SELECT '40' AS DATACODE,
  1261. SUM(T1.CC) AS BUSINESSOUTPUT
  1262. FROM (SELECT 1 AS CC
  1263. FROM TP_PM_PRODUCTIONDATA P
  1264. WHERE P.PROCEDUREID IN (65, 99)
  1265. AND P.CREATETIME >= :DATEBEGIN
  1266. AND P.CREATETIME < :DATEEND
  1267. UNION ALL
  1268. SELECT -1 AS CC
  1269. FROM TP_PM_PRODUCTIONDATA P
  1270. WHERE P.PROCEDUREID IN (65, 99)
  1271. AND P.VALUEFLAG = '0'
  1272. AND P.BACKOUTTIME >= :DATEBEGIN
  1273. AND P.BACKOUTTIME < :DATEEND) T1
  1274. UNION ALL
  1275. -- 50
  1276. SELECT '50' AS DATACODE,
  1277. SUM(T1.CC) AS BUSINESSOUTPUT
  1278. FROM (SELECT COUNT(DISTINCT P.BARCODE) AS CC
  1279. FROM TP_PM_PRODUCTIONDATA P
  1280. WHERE P.PROCEDUREID IN (11, 104)
  1281. AND ((P.PROCEDUREID <> 104 AND P.VALUEFLAG = '1') OR
  1282. (P.PROCEDUREID = 104 AND P.ISREFIRE = '0' AND P.CHECKFLAG = '1'))
  1283. AND P.CREATETIME >= :DATEBEGIN
  1284. AND P.CREATETIME < :DATEEND
  1285. UNION ALL
  1286. SELECT -1 AS CC
  1287. FROM TP_PM_PRODUCTIONDATA P
  1288. WHERE P.PROCEDUREID IN (11, 104)
  1289. AND P.VALUEFLAG = '0'
  1290. AND P.PROCEDUREID <> 104
  1291. AND P.ISREFIRE = '0'
  1292. AND P.BACKOUTTIME >= :DATEBEGIN
  1293. AND P.BACKOUTTIME < :DATEEND) T1
  1294. UNION ALL
  1295. -- 60
  1296. SELECT '60' AS DATACODE,
  1297. COUNT(1) AS BUSINESSOUTPUT
  1298. FROM TP_PM_FINISHEDPRODUCT GH
  1299. WHERE GH.FHTIME >= :DATEBEGIN
  1300. AND GH.FHTIME < :DATEEND) T1
  1301. LEFT JOIN (
  1302. -- 当日推送日志数据汇总
  1303. SELECT DATACODE AS DATACODETD,
  1304. SUM(TO_NUMBER(OUTPUTNUM)) AS OUTPUT,
  1305. SUM(TO_NUMBER(SCRAPNUM)) AS SCRAPNUM,
  1306. SUM(TO_NUMBER(CLEANUPNUM)) AS CLEANNUPNUM,
  1307. SUM(TO_NUMBER(RECOVERYNUM)) AS RECOVERYNUM,
  1308. SUM(TO_NUMBER(REPAIRNUM)) AS REPAIRNUM
  1309. FROM TSAP_HEGII_WORKDATA_BG
  1310. WHERE LOGID IN (SELECT LOGID
  1311. FROM TSAP_HEGII_DATALOG_BG T
  1312. WHERE DATASTUTS = 'S'
  1313. AND EXECUTEDATEBEGIN >= :DATEBEGIN
  1314. AND EXECUTEDATEEND <= :DATEEND)
  1315. GROUP BY DATACODE
  1316. ORDER BY DATACODE) T2
  1317. ON T2.DATACODETD = T1.DATACODE
  1318. LEFT JOIN (
  1319. -- 当日撤销非当日交接的产成品
  1320. SELECT '60' AS DATACODE,
  1321. COUNT(WL.CODEI) AS DRCXFDRJJDCCP
  1322. FROM TP_WMS_LOG WL
  1323. WHERE LOGTYPE = 2
  1324. AND EXISTS (SELECT 1
  1325. FROM TP_WMS_LOG WL1
  1326. WHERE WL1.CODEI = WL.CODEI
  1327. AND WL1.LOGTYPE = 1
  1328. AND TRUNC(WL1.CREATETIME) < TRUNC(WL.CREATETIME))
  1329. AND WL.CREATETIME >= :DATEBEGIN
  1330. AND WL.CREATETIME < :DATEEND) T3
  1331. ON T3.DATACODE = T1.DATACODE
  1332. LEFT JOIN (
  1333. -- 当日交接被其他日撤销的产成品
  1334. SELECT '60' AS DATACODE,
  1335. COUNT(WL.CODEI) AS DRJJBQTRCXDCCP
  1336. FROM TP_WMS_LOG WL
  1337. WHERE LOGTYPE = 1
  1338. AND EXISTS (SELECT 1
  1339. FROM TP_WMS_LOG WL1
  1340. WHERE WL1.CODEI = WL.CODEI
  1341. AND WL1.LOGTYPE = 2
  1342. AND TRUNC(WL1.CREATETIME) > TRUNC(WL.CREATETIME))
  1343. AND WL.CREATETIME >= :DATEBEGIN
  1344. AND WL.CREATETIME < :DATEEND) T4
  1345. ON T4.DATACODE = T1.DATACODE
  1346. WHERE (-1 = :DATACODE OR T1.DATACODE = :DATACODE)
  1347. ORDER BY T1.DATACODE ";
  1348. OracleParameter[] oracleParameter = new OracleParameter[]
  1349. {
  1350. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1351. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1352. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1353. };
  1354. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1355. return sre;
  1356. }
  1357. catch (Exception ex)
  1358. {
  1359. throw ex;
  1360. }
  1361. }
  1362. /// <summary>
  1363. /// 半成品库存 add xiacm 2022-11-09
  1364. /// </summary>
  1365. /// <param name="cre"></param>
  1366. /// <returns></returns>
  1367. public static ServiceResultEntity GetDataIVITotal_BC(ClientRequestEntity cre)
  1368. {
  1369. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1370. ServiceResultEntity sre = new ServiceResultEntity();
  1371. try
  1372. {
  1373. string sqlString = @"SELECT semi.DATACODE ,
  1374. semi.WORKSHOP ,
  1375. semi.MATERIALCODE ,
  1376. semi.GOODSCODE ,
  1377. semi.GOODSNAME ,
  1378. COUNT(1) AS INVENTORYQUANTITY,
  1379. SYSDATE AS CREATETIME
  1380. FROM (
  1381. --配置表里的所有工序
  1382. SELECT DI.DATACODE,
  1383. CASE
  1384. WHEN DI.WORKSHOP = 0
  1385. AND DI.ITEMTYPE = 1
  1386. AND IP.KILNCODE = 'SK1' THEN
  1387. 1
  1388. WHEN DI.WORKSHOP = 0
  1389. AND DI.ITEMTYPE = 1
  1390. AND IP.KILNCODE = 'SK2' THEN
  1391. 2
  1392. WHEN DI.WORKSHOP = 0
  1393. AND DI.ITEMTYPE = 1
  1394. AND IP.KILNCODE = 'SK3' THEN
  1395. 3
  1396. WHEN DI.WORKSHOP = 2
  1397. AND DI.ITEMTYPE = 1
  1398. AND IP.KILNCODE = 'TK1' THEN
  1399. 1
  1400. WHEN DI.WORKSHOP = 2
  1401. AND DI.ITEMTYPE = 1
  1402. AND IP.KILNCODE = 'TK2' THEN
  1403. 2
  1404. WHEN DI.WORKSHOP = 2
  1405. AND DI.ITEMTYPE = 2
  1406. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1407. 2
  1408. WHEN DI.WORKSHOP = 2
  1409. AND DI.ITEMTYPE = 2
  1410. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1411. 1
  1412. WHEN DI.WORKSHOP = 3 THEN
  1413. 3
  1414. ELSE
  1415. 0
  1416. END WORKSHOP,
  1417. GDD.MATERIALCODE,
  1418. G.GOODSCODE,
  1419. G.GOODSNAME
  1420. FROM TP_PM_INPRODUCTION IP
  1421. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  1422. ON IP.PROCEDUREID = DI.ITEMID
  1423. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1424. ON IP.BARCODE = GDD.BARCODE
  1425. INNER JOIN TP_MST_GOODS G
  1426. ON G.GOODSID = GDD.GOODSID
  1427. INNER JOIN TP_MST_GOODSTYPE GT
  1428. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1429. UNION ALL
  1430. --10-0干补
  1431. SELECT DI.DATACODE,
  1432. CASE
  1433. WHEN DI.WORKSHOP = 0
  1434. AND DI.ITEMTYPE = 1
  1435. AND IP.KILNCODE = 'SK1' THEN
  1436. 1
  1437. WHEN DI.WORKSHOP = 0
  1438. AND DI.ITEMTYPE = 1
  1439. AND IP.KILNCODE = 'SK2' THEN
  1440. 2
  1441. WHEN DI.WORKSHOP = 0
  1442. AND DI.ITEMTYPE = 1
  1443. AND IP.KILNCODE = 'SK3' THEN
  1444. 3
  1445. WHEN DI.WORKSHOP = 2
  1446. AND DI.ITEMTYPE = 1
  1447. AND IP.KILNCODE = 'TK1' THEN
  1448. 1
  1449. WHEN DI.WORKSHOP = 2
  1450. AND DI.ITEMTYPE = 1
  1451. AND IP.KILNCODE = 'TK2' THEN
  1452. 2
  1453. WHEN DI.WORKSHOP = 2
  1454. AND DI.ITEMTYPE = 2
  1455. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  1456. 2
  1457. WHEN DI.WORKSHOP = 2
  1458. AND DI.ITEMTYPE = 2
  1459. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  1460. 1
  1461. WHEN DI.WORKSHOP = 3 THEN
  1462. 3
  1463. ELSE
  1464. 0
  1465. END WORKSHOP,
  1466. GDD.MATERIALCODE,
  1467. G.GOODSCODE,
  1468. G.GOODSNAME
  1469. FROM TP_PM_INPRODUCTION IP
  1470. INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
  1471. ON IP.FLOWPROCEDUREID = DI.ITEMID
  1472. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1473. ON IP.BARCODE = GDD.BARCODE
  1474. INNER JOIN TP_MST_GOODS G
  1475. ON G.GOODSID = GDD.GOODSID
  1476. INNER JOIN TP_MST_GOODSTYPE GT
  1477. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1478. WHERE PROCEDUREID = 18
  1479. UNION ALL
  1480. --未交坯
  1481. SELECT '20' DATACODE,
  1482. CASE
  1483. WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1
  1484. AND
  1485. (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  1486. 2
  1487. WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1
  1488. AND
  1489. (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
  1490. 1
  1491. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN
  1492. 3
  1493. ELSE
  1494. 0
  1495. END WORKSHOP,
  1496. GDD.MATERIALCODE,
  1497. G.GOODSCODE,
  1498. G.GOODSNAME
  1499. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  1500. INNER JOIN TP_MST_GOODS G
  1501. ON GDD.GOODSID = G.GOODSID
  1502. INNER JOIN TP_MST_GOODSTYPE GT
  1503. ON GT.GOODSTYPEID = G.GOODSTYPEID
  1504. WHERE GDD.VALUEFLAG = 1
  1505. AND GDD.BARCODE IS NOT NULL
  1506. AND GDD.BEGINNINGFLAG = 0
  1507. AND GDD.DELIVERFLAG = 0
  1508. AND GDD.SCRAPFLAG = 0) semi
  1509. where (:DATACODE is null or :DATACODE ='' or :DATACODE ='-1' or instr(','||:DATACODE||',',','||semi.DATACODE||',')>0)
  1510. and (:WORKSHOP is null or :WORKSHOP = '' or instr(','||:WORKSHOP||',',','||semi.WORKSHOP||',')>0)
  1511. and (:MATERIALCODE is null or :MATERIALCODE = '' or instr(','||:MATERIALCODE||',',','||semi.MATERIALCODE||',')>0)
  1512. GROUP BY DATACODE,
  1513. WORKSHOP,
  1514. MATERIALCODE,
  1515. GOODSCODE,
  1516. GOODSNAME
  1517. ORDER BY DATACODE,
  1518. WORKSHOP,
  1519. MATERIALCODE,
  1520. GOODSCODE,
  1521. GOODSNAME";
  1522. OracleParameter[] oracleParameter = new OracleParameter[]
  1523. {
  1524. new OracleParameter(":WORKSHOP",OracleDbType.Varchar2, cre.Properties["WORKSHOP"], ParameterDirection.Input),
  1525. new OracleParameter(":MATERIALCODE",OracleDbType.Varchar2, cre.Properties["MATERIALCODE"], ParameterDirection.Input),
  1526. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1527. };
  1528. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1529. return sre;
  1530. }
  1531. catch (Exception ex)
  1532. {
  1533. throw ex;
  1534. }
  1535. }
  1536. /// <summary>
  1537. /// 查询报损数据
  1538. /// </summary>
  1539. /// <param name="cre"></param>
  1540. /// <returns></returns>
  1541. public static ServiceResultEntity GetDataBARCODEIDNRKSCRAP(ClientRequestEntity cre)
  1542. {
  1543. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1544. ServiceResultEntity sre = new ServiceResultEntity();
  1545. try
  1546. {
  1547. string sqlString = @"SELECT 0 as check1
  1548. ,bis.scrapid
  1549. ,bis.barcode
  1550. ,bis.matnr
  1551. ,bis.idnrk
  1552. ,bis.meins
  1553. ,bis.menge
  1554. ,bis.idnrkname
  1555. ,bis.idnrkonlycode
  1556. ,bis.charg
  1557. ,bis.lgort
  1558. ,CASE
  1559. WHEN bis.scraptype = 1 THEN
  1560. '报损'
  1561. ELSE
  1562. '撤销报损'
  1563. END scraptypename ,case WHEN bis.checkflag = 0 THEN '未确认' ELSE '已确认' END checkflagname
  1564. ,bis.checktime
  1565. ,CASE
  1566. WHEN bis.syncflag = 0 THEN
  1567. '未同步'
  1568. WHEN bis.syncflag = 1 THEN
  1569. '已同步'
  1570. when bis.syncflag = 2 THEN
  1571. 'BPM系统审批不通过'
  1572. when bis.syncflag = 3 THEN
  1573. 'BPM系统审批通过'
  1574. END syncflagname
  1575. ,mu.username createusername
  1576. ,bis.createtime
  1577. ,bis.costcenter
  1578. ,bis.costcentername
  1579. ,bis.incident
  1580. ,bis.documentno
  1581. ,bis.errormessage
  1582. ,mdd.remarks meinsname
  1583. FROM tp_pm_barcodeidnrkscrap bis
  1584. LEFT JOIN tp_mst_user mu
  1585. ON mu.userid = bis.createuserid
  1586. LEFT JOIN tp_mst_datadictionary mdd
  1587. on mdd.dictionaryvalue = bis.meins and mdd.dictionarytype = 'TPC012'
  1588. WHERE bis.createtime >= :dateagin
  1589. AND bis.createtime < :dateend
  1590. AND (:checkflag is null or :checkflag = '-1' OR instr(',' || :checkflag || ',', ',' || bis.checkflag || ',') > 0)
  1591. AND (:syncflag is null or :syncflag = '-1' OR instr(',' || :syncflag || ',', ',' || bis.syncflag || ',') > 0)
  1592. Order by bis.createtime desc";
  1593. OracleParameter[] oracleParameter = new OracleParameter[]
  1594. {
  1595. new OracleParameter(":dateagin",OracleDbType.Date, cre.Properties["dateagin"], ParameterDirection.Input),
  1596. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1597. new OracleParameter(":checkflag",OracleDbType.Varchar2, cre.Properties["CheckFlag"], ParameterDirection.Input),
  1598. new OracleParameter(":syncflag",OracleDbType.Varchar2, cre.Properties["SyncFlag"], ParameterDirection.Input),
  1599. };
  1600. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1601. return sre;
  1602. }
  1603. catch (Exception ex)
  1604. {
  1605. throw ex;
  1606. }
  1607. }
  1608. /// <summary>
  1609. /// 确认组件报损
  1610. /// </summary>
  1611. /// <param name="cre"></param>
  1612. /// <returns></returns>
  1613. public static ServiceResultEntity SaveConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  1614. {
  1615. ServiceResultEntity sre = new ServiceResultEntity();
  1616. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  1617. int returnRows = 0;
  1618. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1619. try
  1620. {
  1621. if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0)
  1622. {
  1623. foreach (DataRow item in IdnrkScrapDt.Rows)
  1624. {
  1625. string sqlString = @"select 1 from tp_pm_barcodeidnrkscrap bis
  1626. where bis.scraptype=1
  1627. and bis.checkflag = 0
  1628. and bis.syncflag = 0
  1629. and bis.scrapid = :scrapid";
  1630. OracleParameter[] Paras = new OracleParameter[] {
  1631. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  1632. };
  1633. DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, Paras);
  1634. if(dt==null || dt.Rows.Count==0)
  1635. {
  1636. sre.Message = "数据状态已改变!";
  1637. sre.OtherStatus = -999;
  1638. return sre;
  1639. }
  1640. sqlString = @"UPDATE tp_pm_barcodeidnrkscrap
  1641. SET checkflag = 1
  1642. ,updateuserid = :userid
  1643. ,checktime = SYSDATE
  1644. ,updatetime = SYSDATE
  1645. WHERE scrapid = :scrapid
  1646. AND scraptype = 1";
  1647. Paras = new OracleParameter[] {
  1648. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  1649. new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input),
  1650. };
  1651. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  1652. }
  1653. }
  1654. sre.OtherStatus = returnRows;
  1655. oracleTrConn.Commit();
  1656. }
  1657. catch (Exception ex)
  1658. {
  1659. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1660. {
  1661. oracleTrConn.Rollback();
  1662. oracleTrConn.Disconnect();
  1663. }
  1664. throw ex;
  1665. }
  1666. finally
  1667. {
  1668. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1669. {
  1670. oracleTrConn.Disconnect();
  1671. }
  1672. }
  1673. return sre;
  1674. }
  1675. /// <summary>
  1676. /// 撤销确认组件报损
  1677. /// </summary>
  1678. /// <param name="cre"></param>
  1679. /// <returns></returns>
  1680. public static ServiceResultEntity SaveUNConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  1681. {
  1682. ServiceResultEntity sre = new ServiceResultEntity();
  1683. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  1684. int returnRows = 0;
  1685. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1686. try
  1687. {
  1688. if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0)
  1689. {
  1690. foreach (DataRow item in IdnrkScrapDt.Rows)
  1691. {
  1692. string sqlString = @"UPDATE tp_pm_barcodeidnrkscrap
  1693. SET checkflag = 0
  1694. ,updateuserid = :userid
  1695. ,checktime = null
  1696. ,updatetime = SYSDATE
  1697. WHERE scrapid = :scrapid
  1698. AND scraptype = 1";
  1699. OracleParameter[] Paras = new OracleParameter[] {
  1700. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  1701. new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input),
  1702. };
  1703. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  1704. }
  1705. }
  1706. sre.OtherStatus = returnRows;
  1707. oracleTrConn.Commit();
  1708. }
  1709. catch (Exception ex)
  1710. {
  1711. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1712. {
  1713. oracleTrConn.Rollback();
  1714. oracleTrConn.Disconnect();
  1715. }
  1716. throw ex;
  1717. }
  1718. finally
  1719. {
  1720. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1721. {
  1722. oracleTrConn.Disconnect();
  1723. }
  1724. }
  1725. return sre;
  1726. }
  1727. /// <summary>
  1728. /// 校验同一BPM流程实例报损是否全部勾选
  1729. /// </summary>
  1730. /// <param name="cre"></param>
  1731. /// <param name="userInfo"></param>
  1732. /// <returns></returns>
  1733. public static ServiceResultEntity CheckScrap(ClientRequestEntity cre, SUserInfo userInfo)
  1734. {
  1735. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1736. ServiceResultEntity sre = new ServiceResultEntity();
  1737. try
  1738. {
  1739. string sqlString = @"SELECT 1
  1740. FROM tp_pm_barcodeidnrkscrap bis
  1741. INNER JOIN (SELECT bs.incident
  1742. FROM tp_pm_barcodeidnrkscrap bs
  1743. WHERE instr( :scrapids , ',' || bs.scrapid || ',') > 0
  1744. ) t
  1745. ON bis.incident = t.incident
  1746. WHERE bis.valueflag = 1
  1747. AND bis.accountid = :accountid
  1748. AND instr( :scrapids , ',' || bis.scrapid || ',') <= 0";
  1749. OracleParameter[] oracleParameter = new OracleParameter[]
  1750. {
  1751. new OracleParameter(":scrapids",OracleDbType.Varchar2, cre.Properties["SCRAPIDs"], ParameterDirection.Input),
  1752. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  1753. };
  1754. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1755. return sre;
  1756. }
  1757. catch (Exception ex)
  1758. {
  1759. throw ex;
  1760. }
  1761. }
  1762. /// <summary>
  1763. /// 同步bpm
  1764. /// </summary>
  1765. /// <param name="cre"></param>
  1766. /// <param name="userInfo"></param>
  1767. /// <returns></returns>
  1768. public static ServiceResultEntity SynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  1769. {
  1770. ServiceResultEntity sre = new ServiceResultEntity();
  1771. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  1772. int returnRows = 0;
  1773. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1774. try
  1775. {
  1776. #region 首次推送
  1777. DataRow[] drs = IdnrkScrapDt.Select("INCIDENT is null");
  1778. if (drs.Length > 0)
  1779. {
  1780. string scrapids = ",";
  1781. foreach (DataRow item in IdnrkScrapDt.Rows)
  1782. {
  1783. scrapids += item["SCRAPID"].ToString() + ",";
  1784. }
  1785. //校验是否存在状态改变数据
  1786. string sqlString = @"SELECT 1
  1787. FROM tp_pm_barcodeidnrkscrap bis
  1788. WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0
  1789. AND bis.accountid = :accountid
  1790. AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag =1 OR bis.scraptype = 2 OR
  1791. bis.incident IS NOT NULL)";
  1792. OracleParameter[] oracleParameter = new OracleParameter[]
  1793. {
  1794. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  1795. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  1796. };
  1797. DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  1798. if (NoneDt != null && NoneDt.Rows.Count > 0)
  1799. {
  1800. sre.Status = Constant.ServiceResultStatus.DataChanged;
  1801. sre.Message = "数据状态已被修改!";
  1802. return sre;
  1803. }
  1804. //生成推送数据
  1805. sqlString = @"SELECT wmsys.wm_concat(bis.scrapid) scrapids
  1806. ,bis.idnrk
  1807. ,bis.idnrkname
  1808. ,SUM(menge) menge
  1809. ,bis.meins
  1810. ,mdd.remarks meinsname
  1811. ,bis.lgort
  1812. ,bis.charg
  1813. ,bis.INCIDENT
  1814. FROM tp_pm_barcodeidnrkscrap bis
  1815. LEFT JOIN tp_mst_datadictionary mdd
  1816. ON mdd.dictionaryvalue = bis.meins
  1817. AND mdd.dictionarytype = 'TPC012'
  1818. where instr(:scrapids,','||bis.scrapid||',')>0
  1819. GROUP BY bis.idnrk
  1820. ,bis.idnrkname
  1821. ,meins
  1822. ,mdd.remarks
  1823. ,bis.lgort
  1824. ,bis.INCIDENT
  1825. ,bis.charg";
  1826. oracleParameter = new OracleParameter[]
  1827. {
  1828. new OracleParameter(":scrapids",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  1829. };
  1830. DataTable NoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  1831. if (NoneInfo != null && NoneInfo.Rows.Count > 0)
  1832. {
  1833. foreach (DataRow item in NoneInfo.Rows)
  1834. {
  1835. string strResult = BPMDataLogic.PushBPM(item);
  1836. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  1837. string isSeccess = "0";//bpm 同步失败
  1838. if (data["Result"].ToString() == "1")
  1839. {
  1840. isSeccess = "1";
  1841. //更新报损履历
  1842. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  1843. SET syncflag = :syncflag
  1844. ,errormessage = :message
  1845. ,documentno = :documentno
  1846. ,incident = :incident
  1847. WHERE instr(',' || :scrapids || ',',',' || scrapid || ',') > 0";
  1848. oracleParameter = new OracleParameter[]
  1849. {
  1850. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  1851. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  1852. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  1853. new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input),
  1854. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  1855. };
  1856. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  1857. }
  1858. else
  1859. {
  1860. //更新报损履历
  1861. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  1862. SET syncflag = :syncflag
  1863. ,errormessage = :message
  1864. ,incident = :incident
  1865. WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  1866. oracleParameter = new OracleParameter[]
  1867. {
  1868. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  1869. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  1870. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  1871. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  1872. };
  1873. sre.OtherStatus = -1;
  1874. sre.Message = data["ErrorMessage"].ToString();
  1875. return sre;
  1876. }
  1877. }
  1878. }
  1879. }
  1880. #endregion
  1881. #region 再次推送
  1882. DataRow[] pushagin = IdnrkScrapDt.Select("INCIDENT is not null");
  1883. if(pushagin.Length>0)
  1884. {
  1885. string scrapids = ",";
  1886. foreach (DataRow item in IdnrkScrapDt.Rows)
  1887. {
  1888. scrapids += item["SCRAPID"].ToString() + ",";
  1889. }
  1890. //校验是否存在状态改变数据
  1891. string sqlString = @"SELECT 1
  1892. FROM tp_pm_barcodeidnrkscrap bis
  1893. WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0
  1894. AND bis.accountid = :accountid
  1895. AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag = 1 OR bis.scraptype = 2 OR
  1896. bis.incident IS NULL)";
  1897. OracleParameter[] oracleParameter = new OracleParameter[]
  1898. {
  1899. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  1900. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  1901. };
  1902. DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  1903. if (NoneDt != null && NoneDt.Rows.Count > 0)
  1904. {
  1905. sre.Status = Constant.ServiceResultStatus.DataChanged;
  1906. sre.Message = "数据状态已被修改!";
  1907. return sre;
  1908. }
  1909. //获取推送数据
  1910. sqlString = @"SELECT wmsys.wm_concat(bis.scrapid) scrapids
  1911. ,bis.idnrk
  1912. ,bis.idnrkname
  1913. ,SUM(menge) menge
  1914. ,bis.meins
  1915. ,mdd.remarks meinsname
  1916. ,bis.lgort
  1917. ,bis.charg
  1918. ,bis.INCIDENT
  1919. FROM tp_pm_barcodeidnrkscrap bis
  1920. LEFT JOIN tp_mst_datadictionary mdd
  1921. ON mdd.dictionaryvalue = bis.meins
  1922. AND mdd.dictionarytype = 'TPC012'
  1923. where instr(:scrapids ,','||bis.scrapid||',')>0
  1924. GROUP BY bis.idnrk
  1925. ,bis.idnrkname
  1926. ,meins
  1927. ,mdd.remarks
  1928. ,bis.lgort
  1929. ,bis.INCIDENT
  1930. ,bis.charg";
  1931. oracleParameter = new OracleParameter[]
  1932. {
  1933. new OracleParameter(":scrapids",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  1934. };
  1935. DataTable NoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  1936. if (NoneInfo != null && NoneInfo.Rows.Count > 0)
  1937. {
  1938. foreach (DataRow item in NoneInfo.Rows)
  1939. {
  1940. string strResult = BPMDataLogic.PushBPM(item);
  1941. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  1942. string isSeccess = "0";//bpm 审批不通过
  1943. if (data["Result"].ToString() == "1")
  1944. {
  1945. isSeccess = "1";
  1946. //更新报损履历
  1947. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  1948. SET syncflag = :syncflag
  1949. ,errormessage = :message
  1950. ,documentno = :documentno
  1951. ,incident = :incident
  1952. WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  1953. oracleParameter = new OracleParameter[]
  1954. {
  1955. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  1956. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  1957. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  1958. new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input),
  1959. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  1960. };
  1961. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  1962. }
  1963. else
  1964. {
  1965. //更新报损履历
  1966. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  1967. SET syncflag = :syncflag
  1968. ,errormessage = :message
  1969. ,incident = :incident
  1970. WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  1971. oracleParameter = new OracleParameter[]
  1972. {
  1973. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  1974. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  1975. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  1976. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  1977. };
  1978. sre.OtherStatus = -1;
  1979. sre.Message = data["ErrorMessage"].ToString();
  1980. return sre;
  1981. }
  1982. }
  1983. }
  1984. }
  1985. #endregion
  1986. sre.OtherStatus = returnRows;
  1987. oracleTrConn.Commit();
  1988. }
  1989. catch (Exception ex)
  1990. {
  1991. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1992. {
  1993. oracleTrConn.Rollback();
  1994. oracleTrConn.Disconnect();
  1995. }
  1996. throw ex;
  1997. }
  1998. finally
  1999. {
  2000. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2001. {
  2002. oracleTrConn.Disconnect();
  2003. }
  2004. }
  2005. return sre;
  2006. }
  2007. /// <summary>
  2008. /// 撤销bpm同步数据
  2009. /// </summary>
  2010. /// <param name="cre"></param>
  2011. /// <param name="userInfo"></param>
  2012. /// <returns></returns>
  2013. public static ServiceResultEntity CancelSynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  2014. {
  2015. ServiceResultEntity sre = new ServiceResultEntity();
  2016. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  2017. int returnRows = 0;
  2018. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2019. try
  2020. {
  2021. string scrapids = ",";
  2022. foreach (DataRow item in IdnrkScrapDt.Rows)
  2023. {
  2024. scrapids += item["SCRAPID"].ToString() + ",";
  2025. }
  2026. //获取待撤销bpm 实例号
  2027. string sqlString = @"SELECT wmsys.wm_concat(bis.scrapid) scrapids
  2028. ,bis.incident
  2029. FROM tp_pm_barcodeidnrkscrap bis
  2030. WHERE instr( :scrapids ,',' || bis.scrapid || ',') > 0
  2031. AND bis.syncflag = 1
  2032. group by incident";
  2033. OracleParameter [] oracleParameter = new OracleParameter[]
  2034. {
  2035. new OracleParameter(":scrapids",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  2036. };
  2037. DataTable Info = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  2038. if(Info!=null&&Info.Rows.Count>0)
  2039. {
  2040. foreach (DataRow item in Info.Rows)
  2041. {
  2042. string strResult = BPMDataLogic.CancelPushBPM(Convert.ToInt32( item["incident"]));
  2043. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  2044. string isSeccess = "0";//bpm 审批不通过
  2045. if (data["Result"].ToString() == "1")
  2046. {
  2047. isSeccess = "0";
  2048. //更新报损履历
  2049. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  2050. SET syncflag = :syncflag
  2051. ,errormessage = :message
  2052. ,incident = :incident
  2053. WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0";
  2054. oracleParameter = new OracleParameter[]
  2055. {
  2056. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  2057. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  2058. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  2059. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  2060. };
  2061. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2062. }
  2063. else
  2064. {
  2065. //更新报损履历
  2066. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  2067. SET
  2068. errormessage = :message
  2069. ,incident = :incident
  2070. WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0";
  2071. oracleParameter = new OracleParameter[]
  2072. {
  2073. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  2074. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  2075. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  2076. };
  2077. oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2078. sre.Message = data["ErrorMessage"].ToString();
  2079. sre.OtherStatus = -999;
  2080. }
  2081. }
  2082. }
  2083. sre.OtherStatus = returnRows;
  2084. oracleTrConn.Commit();
  2085. }
  2086. catch (Exception ex)
  2087. {
  2088. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2089. {
  2090. oracleTrConn.Rollback();
  2091. oracleTrConn.Disconnect();
  2092. }
  2093. throw ex;
  2094. }
  2095. finally
  2096. {
  2097. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2098. {
  2099. oracleTrConn.Disconnect();
  2100. }
  2101. }
  2102. return sre;
  2103. }
  2104. /// <summary>
  2105. /// 查询成本中心(BPM)
  2106. /// </summary>
  2107. /// <param name="cre"></param>
  2108. /// <param name="userInfo"></param>
  2109. /// <returns></returns>
  2110. public static ServiceResultEntity GetCostCenter(ClientRequestEntity cre, SUserInfo userInfo)
  2111. {
  2112. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2113. ServiceResultEntity sre = new ServiceResultEntity();
  2114. try
  2115. {
  2116. string sqlString = @"SELECT 0 check1
  2117. ,t.dictionaryvalue COSTCENTER
  2118. ,t.remarks COSTCENTERNAME
  2119. FROM tp_mst_datadictionary t
  2120. WHERE t.valueflag = 1
  2121. AND t.dictionarytype = 'TPC013'
  2122. AND t.accountid = :accountid
  2123. AND (:dictionaryvalue IS NULL OR :dictionaryvalue = '' OR
  2124. instr(t.dictionaryvalue, :dictionaryvalue) > 0)
  2125. AND (:remark IS NULL OR :remark = '' OR instr(t.remarks, :remark) > 0)";
  2126. OracleParameter[] oracleParameter = new OracleParameter[]
  2127. {
  2128. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  2129. new OracleParameter(":dictionaryvalue",OracleDbType.Varchar2, cre.Properties["CostCenter"], ParameterDirection.Input),
  2130. new OracleParameter(":remark",OracleDbType.Varchar2, cre.Properties["CostcenterName"], ParameterDirection.Input),
  2131. };
  2132. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2133. return sre;
  2134. }
  2135. catch (Exception ex)
  2136. {
  2137. throw ex;
  2138. }
  2139. }
  2140. /// <summary>
  2141. /// 保存报损履历成本中心
  2142. /// </summary>
  2143. /// <param name="cre"></param>
  2144. /// <param name="userInfo"></param>
  2145. /// <returns></returns>
  2146. public static ServiceResultEntity SaveCostCenter(ClientRequestEntity cre, SUserInfo userInfo)
  2147. {
  2148. ServiceResultEntity sre = new ServiceResultEntity();
  2149. int returnRows = 0;
  2150. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2151. string sqlString = string.Empty;
  2152. try
  2153. {
  2154. string CostCenter = cre.Properties["CostCenter"].ToString();
  2155. string CostCenterName = cre.Properties["CostCenterName"].ToString();
  2156. DataTable data = cre.Data.Tables[0];
  2157. DataRow[] rows = data.Select("INCIDENT is null");
  2158. if (rows.Length > 0)
  2159. {
  2160. foreach (DataRow item in rows)
  2161. {
  2162. sqlString = @"update TP_PM_BARCODEIDNRKSCRAP
  2163. set COSTCENTERNAME =:COSTCENTERNAME
  2164. ,costcenter = :costcenter
  2165. where SCRAPID = :SCRAPID";
  2166. OracleParameter[] oracleParameter = new OracleParameter[]
  2167. {
  2168. new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input),
  2169. new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input),
  2170. new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input),
  2171. };
  2172. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2173. }
  2174. }
  2175. //BPM流程实例,相同实例数据同时更新
  2176. DataRow[] drs = data.Select("INCIDENT is not null");
  2177. if (drs.Length > 0)
  2178. {
  2179. string SCRAPIDs = ",";
  2180. //传入拼接报损履历主键id
  2181. foreach (DataRow item in drs)
  2182. {
  2183. SCRAPIDs += item["SCRAPID"].ToString() + ",";
  2184. }
  2185. //查询报损履历数据
  2186. sqlString = @"SELECT bs.scrapid
  2187. ,bs.idnrk
  2188. ,bs.incident
  2189. FROM tp_pm_barcodeidnrkscrap bs
  2190. INNER JOIN (SELECT bis.idnrk
  2191. ,bis.incident
  2192. FROM tp_pm_barcodeidnrkscrap bis
  2193. WHERE instr( ',' || :scrapids || ',', ',' || bis.scrapid || ',') > 0
  2194. GROUP BY bis.idnrk
  2195. ,bis.incident) t
  2196. ON bs.idnrk = t.idnrk
  2197. AND bs.incident = t.incident";
  2198. OracleParameter[] oracleParameter = new OracleParameter[]
  2199. {
  2200. new OracleParameter(":scrapids",OracleDbType.Int32, SCRAPIDs, ParameterDirection.Input),
  2201. };
  2202. DataTable bsdt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  2203. if (bsdt != null && bsdt.Rows.Count > 0)
  2204. {
  2205. foreach (DataRow item in bsdt.Rows)
  2206. {
  2207. sqlString = @"update TP_PM_BARCODEIDNRKSCRAP
  2208. set COSTCENTERNAME =:COSTCENTERNAME
  2209. ,costcenter = :costcenter
  2210. where SCRAPID = :SCRAPID";
  2211. oracleParameter = new OracleParameter[]
  2212. {
  2213. new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input),
  2214. new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input),
  2215. new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input),
  2216. };
  2217. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2218. }
  2219. }
  2220. }
  2221. sre.OtherStatus = returnRows;
  2222. oracleTrConn.Commit();
  2223. }
  2224. catch (Exception ex)
  2225. {
  2226. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2227. {
  2228. oracleTrConn.Rollback();
  2229. oracleTrConn.Disconnect();
  2230. }
  2231. throw ex;
  2232. }
  2233. finally
  2234. {
  2235. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2236. {
  2237. oracleTrConn.Disconnect();
  2238. }
  2239. }
  2240. return sre;
  2241. }
  2242. #endregion
  2243. #region 报工移库
  2244. /// <summary>
  2245. /// 报工移库_同步SAP数据(自动)
  2246. /// </summary>
  2247. /// <param name="date"></param>
  2248. public static void BGYKToSAP(DateTime date, DateTime ndate)
  2249. {
  2250. IDBTransaction oracleConn = null;
  2251. ServiceResultEntity sre = new ServiceResultEntity();
  2252. int logid = 0;
  2253. string message = string.Empty;
  2254. string sqlString = string.Empty;
  2255. try
  2256. {
  2257. #region 生成日志
  2258. OracleParameter[] paras = new OracleParameter[]
  2259. {
  2260. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  2261. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  2262. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  2263. };
  2264. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2265. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras);
  2266. int.TryParse(paras[1].Value + "", out logid);
  2267. message = paras[2].Value + "";
  2268. oracleConn.Commit();
  2269. #endregion
  2270. #region 同步SAP
  2271. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2272. //2022年9月8日11:38:51 更改 by fy
  2273. //sqlString = @"
  2274. //SELECT WERKS,
  2275. // MATNR,
  2276. // ZJDNU,
  2277. // ZSCS,
  2278. // ZSCCJ,
  2279. // ZSCMS,
  2280. // CHARG,
  2281. // MENGE,
  2282. // ZMLID
  2283. // FROM TSAP_HEGII_WORKDATA_BGYK
  2284. // WHERE LOGID = :LOGID ";
  2285. sqlString = @"SELECT
  2286. A.WERKS,
  2287. A.MATNR,
  2288. A.ZJDNU,
  2289. -- A.ZSCS,
  2290. 'T' AS ZSCS,
  2291. A.ZSCCJ,
  2292. A.ZSCMS,
  2293. A.CHARG,
  2294. A.MENGE,
  2295. A.ZMLID,
  2296. to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  2297. to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  2298. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  2299. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT,
  2300. '' AS ZTYPE1,
  2301. '' AS ZMSG1
  2302. FROM
  2303. TSAP_HEGII_WORKDATA_BGYK A
  2304. INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID
  2305. WHERE
  2306. A.LOGID = :LOGID";
  2307. paras = new OracleParameter[]
  2308. {
  2309. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  2310. };
  2311. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2312. //获取报工SAP接口是否开启
  2313. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  2314. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  2315. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  2316. {
  2317. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  2318. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2319. string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  2320. //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  2321. string result = PostData(url034, postString, "POST");
  2322. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  2323. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  2324. sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  2325. paras = new OracleParameter[]
  2326. {
  2327. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  2328. new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  2329. new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  2330. };
  2331. oracleConn.ExecuteNonQuery(sqlString, paras);
  2332. oracleConn.Commit();
  2333. }
  2334. #endregion
  2335. }
  2336. catch (Exception ex)
  2337. {
  2338. OutputLog.TraceLog(LogPriority.Error,
  2339. "BGYKToSAP",
  2340. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2341. ex.ToString(),
  2342. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2343. }
  2344. }
  2345. public static void BGYKToSAP_TEST(DateTime date, DateTime ndate)
  2346. {
  2347. IDBTransaction oracleConn = null;
  2348. ServiceResultEntity sre = new ServiceResultEntity();
  2349. int logid = 0;
  2350. string message = string.Empty;
  2351. string sqlString = string.Empty;
  2352. try
  2353. {
  2354. #region 同步SAP
  2355. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2356. //2022年9月8日11:38:51 更改 by fy
  2357. //sqlString = @"
  2358. //SELECT WERKS,
  2359. // MATNR,
  2360. // ZJDNU,
  2361. // ZSCS,
  2362. // ZSCCJ,
  2363. // ZSCMS,
  2364. // CHARG,
  2365. // MENGE,
  2366. // ZMLID
  2367. // FROM TSAP_HEGII_WORKDATA_BGYK
  2368. // WHERE LOGID = :LOGID ";
  2369. sqlString = @"SELECT '5000' WERKS,MATNR,to_char(ZJDNU) ZJDNU,'T' AS ZSCS,to_char(ZSCCJ) ZSCCJ,to_char(ZSCMS) ZSCMS,to_char(CHARG)CHARG,
  2370. to_char(MENGE) MENGE,to_char(ZMLID) ZMLID,
  2371. to_char(:V_DATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  2372. to_char(:IN_DATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  2373. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  2374. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT FROM (
  2375. SELECT
  2376. T.MATNR,
  2377. '30' AS ZJDNU,
  2378. G.GOODS_LINE_CODE AS ZSCS,
  2379. '2' AS ZSCCJ,
  2380. T.ZSCMS,
  2381. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2382. SUM( T.MENGE ) AS MENGE,
  2383. '3' AS ZMLID
  2384. FROM
  2385. (-- 3-3线上施釉(3)到3#刮登(99)
  2386. SELECT
  2387. GDD.GOODSID,
  2388. GDD.MATERIALCODE AS MATNR,
  2389. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2390. COUNT( 1 ) AS MENGE
  2391. FROM
  2392. TP_PM_PRODUCTIONDATA PD1
  2393. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2394. WHERE
  2395. PD1.CREATETIME >= :V_DATEBEGIN
  2396. AND PD1.CREATETIME < :IN_DATEEND
  2397. AND PD1.PROCEDUREID = 99
  2398. AND PD1.VALUEFLAG = '1'
  2399. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  2400. GROUP BY
  2401. GDD.GOODSID,
  2402. GDD.MATERIALCODE,
  2403. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  2404. SELECT
  2405. GDD.GOODSID,
  2406. GDD.MATERIALCODE AS MATNR,
  2407. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2408. - COUNT( 1 ) AS MENGE
  2409. FROM
  2410. TP_PM_PRODUCTIONDATA PD1
  2411. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2412. WHERE
  2413. PD1.BACKOUTTIME >= :V_DATEBEGIN
  2414. AND PD1.BACKOUTTIME < :IN_DATEEND
  2415. AND PD1.PROCEDUREID = 99
  2416. AND PD1.VALUEFLAG = '0'
  2417. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  2418. GROUP BY
  2419. GDD.GOODSID,
  2420. GDD.MATERIALCODE,
  2421. GDD.TESTMOULDFLAG
  2422. ) T
  2423. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  2424. GROUP BY
  2425. T.MATNR,
  2426. T.ZSCMS,
  2427. G.GOODS_LINE_CODE UNION ALL
  2428. SELECT
  2429. T.MATNR,
  2430. '40' AS ZJDNU,
  2431. G.GOODS_LINE_CODE AS ZSCS,
  2432. '2' AS ZSCCJ,
  2433. T.ZSCMS,
  2434. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2435. SUM( T.MENGE ) AS MENGE,
  2436. '3' AS ZMLID
  2437. FROM
  2438. (-- 3#卸窑(103)到7-1成检出窑交接(11)
  2439. SELECT
  2440. GDD.GOODSID,
  2441. GDD.MATERIALCODE AS MATNR,
  2442. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2443. COUNT( 1 ) AS MENGE
  2444. FROM
  2445. TP_PM_PRODUCTIONDATA PD1
  2446. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2447. WHERE
  2448. PD1.CREATETIME >= :V_DATEBEGIN
  2449. AND PD1.CREATETIME < :IN_DATEEND
  2450. AND PD1.PROCEDUREID = 11
  2451. AND PD1.VALUEFLAG = '1'
  2452. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  2453. GROUP BY
  2454. GDD.GOODSID,
  2455. GDD.MATERIALCODE,
  2456. GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  2457. SELECT
  2458. GDD.GOODSID,
  2459. GDD.MATERIALCODE AS MATNR,
  2460. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2461. - COUNT( 1 ) AS MENGE
  2462. FROM
  2463. TP_PM_PRODUCTIONDATA PD1
  2464. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2465. WHERE
  2466. PD1.BACKOUTTIME >= :V_DATEBEGIN
  2467. AND PD1.BACKOUTTIME < :IN_DATEEND
  2468. AND PD1.PROCEDUREID = 11
  2469. AND PD1.VALUEFLAG = '0'
  2470. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  2471. GROUP BY
  2472. GDD.GOODSID,
  2473. GDD.MATERIALCODE,
  2474. GDD.TESTMOULDFLAG
  2475. ) T
  2476. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  2477. GROUP BY
  2478. T.MATNR,
  2479. T.ZSCMS,
  2480. G.GOODS_LINE_CODE UNION ALL
  2481. SELECT
  2482. T.MATNR,
  2483. '40' AS ZJDNU,
  2484. G.GOODS_LINE_CODE AS ZSCS,
  2485. '3' AS ZSCCJ,
  2486. T.ZSCMS,
  2487. TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  2488. SUM( T.MENGE ) AS MENGE,
  2489. '2' AS ZMLID
  2490. FROM
  2491. (-- 6-1卸窑(10)到3#成检交接(104)
  2492. SELECT
  2493. GDD.GOODSID,
  2494. GDD.MATERIALCODE AS MATNR,
  2495. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2496. COUNT( 1 ) AS MENGE
  2497. FROM
  2498. TP_PM_PRODUCTIONDATA PD1
  2499. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2500. WHERE
  2501. PD1.CREATETIME >= :V_DATEBEGIN
  2502. AND PD1.CREATETIME < :IN_DATEEND
  2503. AND PD1.PROCEDUREID = 104
  2504. AND PD1.VALUEFLAG = '1'
  2505. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  2506. GROUP BY
  2507. GDD.GOODSID,
  2508. GDD.MATERIALCODE,
  2509. GDD.TESTMOULDFLAG UNION ALL-- 6-1卸窑(10)到3#成检交接(104)撤销了的
  2510. SELECT
  2511. GDD.GOODSID,
  2512. GDD.MATERIALCODE AS MATNR,
  2513. DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  2514. - COUNT( 1 ) AS MENGE
  2515. FROM
  2516. TP_PM_PRODUCTIONDATA PD1
  2517. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  2518. WHERE
  2519. PD1.BACKOUTTIME >= :V_DATEBEGIN
  2520. AND PD1.BACKOUTTIME < :IN_DATEEND
  2521. AND PD1.PROCEDUREID = 104
  2522. AND PD1.VALUEFLAG = '0'
  2523. AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  2524. GROUP BY
  2525. GDD.GOODSID,
  2526. GDD.MATERIALCODE,
  2527. GDD.TESTMOULDFLAG
  2528. ) T
  2529. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  2530. GROUP BY
  2531. T.MATNR,
  2532. T.ZSCMS,
  2533. G.GOODS_LINE_CODE
  2534. ) WHERE MENGE > 0";
  2535. OracleParameter[] paras = new OracleParameter[]
  2536. {
  2537. new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input),
  2538. new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input),
  2539. };
  2540. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2541. //获取报工SAP接口是否开启
  2542. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  2543. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  2544. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  2545. {
  2546. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  2547. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2548. //string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  2549. string url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  2550. string result = PostData(url034, postString, "POST");
  2551. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  2552. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  2553. //sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  2554. //paras = new OracleParameter[]
  2555. //{
  2556. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  2557. // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  2558. // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  2559. //};
  2560. //oracleConn.ExecuteNonQuery(sqlString, paras);
  2561. oracleConn.Commit();
  2562. }
  2563. #endregion
  2564. }
  2565. catch (Exception ex)
  2566. {
  2567. OutputLog.TraceLog(LogPriority.Error,
  2568. "BGYKToSAP",
  2569. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2570. ex.ToString(),
  2571. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2572. }
  2573. }
  2574. /// <summary>
  2575. /// 查询同步日志
  2576. /// </summary>
  2577. /// <param name="cre"></param>
  2578. /// <param name="userInfo"></param>
  2579. /// <returns></returns>
  2580. public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre)
  2581. {
  2582. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2583. ServiceResultEntity sre = new ServiceResultEntity();
  2584. try
  2585. {
  2586. string sqlString = @"
  2587. SELECT DL.LOGID,
  2588. DL.BEGINTIME,
  2589. DL.ENDTIME,
  2590. DL.YYYYMMDD,
  2591. DL.ZTYPE,
  2592. DL.ZMSG,
  2593. U.USERCODE SYNUSERCODE
  2594. FROM TSAP_HEGII_DATALOG_BGYK DL
  2595. LEFT JOIN TP_MST_USER U
  2596. ON U.USERID = DL.CREATEUSERID
  2597. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  2598. AND DL.EXECUTEDATEEND <= :DATEEND ";
  2599. OracleParameter[] oracleParameter = new OracleParameter[]
  2600. {
  2601. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  2602. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  2603. };
  2604. sqlString += "ORDER BY dl.logid DESC\n";
  2605. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2606. return sre;
  2607. }
  2608. catch (Exception ex)
  2609. {
  2610. throw ex;
  2611. }
  2612. }
  2613. /// <summary>
  2614. /// 查询同步明细
  2615. /// </summary>
  2616. /// <param name="logid"></param>
  2617. /// <param name="userInfo"></param>
  2618. /// <returns></returns>
  2619. public static ServiceResultEntity GetWorkData_BGYK(ClientRequestEntity cre)
  2620. {
  2621. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2622. ServiceResultEntity sre = new ServiceResultEntity();
  2623. try
  2624. {
  2625. //add xiacm 2022-10-21
  2626. int logid = Convert.ToInt32(cre.Request);
  2627. string sqlString = @"
  2628. SELECT WERKS,
  2629. MATNR,
  2630. ZJDNU,
  2631. ZSCS,
  2632. ZSCCJ,
  2633. ZSCMS,
  2634. CHARG,
  2635. MENGE,
  2636. ZMLID
  2637. FROM TSAP_HEGII_WORKDATA_BGYK WD ";
  2638. if (logid > 0)
  2639. {
  2640. sqlString += "WHERE WD.LOGID = :LOGID ";
  2641. }
  2642. else
  2643. {
  2644. sqlString += @" INNER JOIN TSAP_HEGII_DATALOG_BGYK DL
  2645. ON WD.LOGID = DL.LOGID
  2646. WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
  2647. AND DL.EXECUTEDATEEND <= :DATEEND ";
  2648. }
  2649. OracleParameter[] oracleParameter = new OracleParameter[]
  2650. {
  2651. new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input),
  2652. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  2653. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  2654. };
  2655. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2656. return sre;
  2657. }
  2658. catch (Exception ex)
  2659. {
  2660. throw ex;
  2661. }
  2662. }
  2663. #endregion
  2664. #region PostData 请求
  2665. public static string PostData(string url, string data, string method)
  2666. {
  2667. //将单引号转义成双引号
  2668. data = data.Replace("'", "\"");
  2669. //创建Web访问对象
  2670. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  2671. //把用户传过来的数据转成“UTF-8”的字节流
  2672. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  2673. myRequest.Method = method;
  2674. myRequest.ContentLength = buf.Length;
  2675. myRequest.ContentType = "application/json;charset=UTF-8";
  2676. //myRequest.MaximumAutomaticRedirections = 1;
  2677. myRequest.AllowAutoRedirect = true;
  2678. //UTF8标准转码加密
  2679. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2680. // 配置文件
  2681. string userName = ini.ReadIniData("SAP_NEW_INFO", "userName");
  2682. // 测试
  2683. //string userName = "hgsapdk:Sapdk#240";
  2684. // 正式
  2685. //string userName = "PODKMES:Sapdk#800";
  2686. string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
  2687. myRequest.Headers.Add("Authorization", "Basic " + base64Header);
  2688. //发送请求
  2689. Stream stream = myRequest.GetRequestStream();
  2690. stream.Write(buf, 0, buf.Length);
  2691. stream.Close();
  2692. //获取接口返回值
  2693. //通过Web访问对象获取响应内容
  2694. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  2695. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  2696. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  2697. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  2698. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  2699. reader.Close();
  2700. myResponse.Close();
  2701. // 结果
  2702. OutputLog.TraceLog(LogPriority.Information,
  2703. "报工030", method, data,
  2704. LocalPath.LogExePath + "SAP_HEGII\\Info_030");
  2705. return returnXml;
  2706. }
  2707. #endregion
  2708. #region 转换
  2709. public class ModelConvertHelper<T> where T : new()
  2710. {
  2711. public static List<T> ConvertToModel(DataTable dt)
  2712. {
  2713. // 定义集合
  2714. List<T> ts = new List<T>();
  2715. // 获得此模型的类型
  2716. Type type = typeof(T);
  2717. string tempName = "";
  2718. foreach (DataRow dr in dt.Rows)
  2719. {
  2720. T t = new T();
  2721. // 获得此模型的公共属性
  2722. PropertyInfo[] propertys = t.GetType().GetProperties();
  2723. foreach (PropertyInfo pi in propertys)
  2724. {
  2725. tempName = pi.Name;
  2726. // 检查DataTable是否包含此列
  2727. if (dt.Columns.Contains(tempName))
  2728. {
  2729. // 判断此属性是否有Setter
  2730. if (!pi.CanWrite) continue;
  2731. object value = dr[tempName];
  2732. if (value != DBNull.Value)
  2733. pi.SetValue(t, value, null);
  2734. }
  2735. }
  2736. ts.Add(t);
  2737. }
  2738. return ts;
  2739. }
  2740. }
  2741. #endregion
  2742. }
  2743. }