SAPDataLogicPartial.cs 116 KB

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