SAPDataLogicPartial.cs 117 KB

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