SAPDataLogicPartial.cs 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779
  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.WCF.DataModels;
  14. using Newtonsoft.Json.Linq;
  15. using Oracle.ManagedDataAccess.Client;
  16. namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
  17. {
  18. public partial class SAPDataLogic
  19. {
  20. #region 跨车间作业(注销)
  21. // /// <summary>
  22. // /// 同步SAP数据(自动)
  23. // /// </summary>
  24. // /// <param name="date"></param>
  25. // public static void CrossWorkshopToSAP(DateTime date, DateTime ndate)
  26. // {
  27. // IDBTransaction oracleConn = null;
  28. // ServiceResultEntity sre = new ServiceResultEntity();
  29. // int logid = 0;
  30. // string message = string.Empty;
  31. // string sqlString = string.Empty;
  32. // try
  33. // {
  34. // #region 生成日志
  35. // OracleParameter[] paras = new OracleParameter[]
  36. // {
  37. // new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  38. // new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  39. // new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  40. // };
  41. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  42. // DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_kcjzy", paras);
  43. // int.TryParse(paras[1].Value + "", out logid);
  44. // message = paras[2].Value + "";
  45. // oracleConn.Commit();
  46. // #endregion
  47. // #region 同步SAP
  48. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  49. // //sqlString = "select workcode from tp_mst_account where rownum = 1";
  50. // //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  51. // //workcode = "5000";
  52. // sqlString = "SELECT\n" +
  53. // " to_char(B.EXECUTEDATEBEGIN,'yyyymmddhh24miss') AS ZYWKS,\n" +
  54. // " to_char(B.EXECUTEDATEEND,'yyyymmddhh24miss') AS ZYWJS,\n" +
  55. // " to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,\n" +
  56. // " A.WORKCODE AS WERKS,\n" +
  57. // " A.SAPCODE AS MATNR,\n" +
  58. // " A.GOODSCODE AS GROES,\n" +
  59. // " A.WORKSHOP AS ZSCCJ,\n" +
  60. // " A.WORKSHOP AS ZSSCJ,\n" +
  61. // " A.DATACODE AS ZJDNU,\n" +
  62. // " A.ITEM AS ZZYLX,\n" +
  63. // " A.NUM AS MENGE,\n" +
  64. // //" A.ZSCS,\n" +
  65. // " 'T' AS ZSCS,\n" +
  66. // " CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS, \n" +
  67. // " '' AS ZTYPE1, \n" +
  68. // " '' AS ZMSG1 \n" +
  69. // "FROM\n" +
  70. // " TSAP_HEGII_WORKDATA_KCJZY A\n" +
  71. // " INNER JOIN TSAP_HEGII_DATALOG_KCJZY B ON B.LOGID = A.LOGID\n" +
  72. // "WHERE\n" +
  73. // " A.LOGID = :logid";
  74. // paras = new OracleParameter[]
  75. // {
  76. // new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
  77. // };
  78. // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  79. // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  80. // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  81. // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  82. // {
  83. // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  84. // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  85. // string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  86. // //url033 = "Url033=http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033"
  87. // string result = PostData(url033, postString, "POST");
  88. // string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  89. // string msg = JObject.Parse(result)["ZMSG"].ToString();
  90. // sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  91. // paras = new OracleParameter[]
  92. // {
  93. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  94. // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  95. // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  96. // };
  97. // oracleConn.ExecuteNonQuery(sqlString, paras);
  98. // oracleConn.Commit();
  99. // }
  100. // #endregion
  101. // }
  102. // catch (Exception ex)
  103. // {
  104. // OutputLog.TraceLog(LogPriority.Error,
  105. // "CrossWorkshopToSAP",
  106. // "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  107. // ex.ToString(),
  108. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  109. // }
  110. // }
  111. // public static void CrossWorkshopToSAP_test(DateTime date, DateTime ndate)
  112. // {
  113. // IDBTransaction oracleConn = null;
  114. // ServiceResultEntity sre = new ServiceResultEntity();
  115. // int logid = 0;
  116. // string message = string.Empty;
  117. // string sqlString = string.Empty;
  118. // try
  119. // {
  120. // #region 同步SAP
  121. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  122. // //sqlString = "select workcode from tp_mst_account where rownum = 1";
  123. // //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  124. // //workcode = "5000";
  125. // sqlString = @"SELECT
  126. // to_char(:v_datebegin, 'yyyymmddhh24miss') AS ZYWKS,
  127. // to_char(:in_dateend, 'yyyymmddhh24miss') AS ZYWJS,
  128. // to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,
  129. //'5000' AS WERKS,
  130. // MATERIALCODE AS MATNR,
  131. //GOODSCODE AS GROES,
  132. //to_char(WORKSHOP) AS ZSCCJ,
  133. //to_char(DATACODE) AS ZJDNU,
  134. // to_char(ITEM) AS ZZYLX,
  135. // to_char(count( * )) AS MENGE,
  136. // 'T' AS ZSCS,
  137. // CASE WHEN TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
  138. // '' AS ZTYPE1,
  139. // '' AS ZMSG1
  140. // FROM
  141. // (--产量
  142. // SELECT
  143. // GDD.MATERIALCODE,
  144. // gdd.goodscode,
  145. // HGDI.WORKSHOP,
  146. // HGDI.DATACODE,
  147. // 1 AS ITEM,
  148. // GDD.TESTMOULDFLAG,
  149. // G.GOODS_LINE_CODE AS ZSCS
  150. // FROM
  151. // TP_PM_PRODUCTIONDATA PD
  152. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  153. // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  154. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  155. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  156. // AND HGDI.ITEMTYPE = 1
  157. // AND HGDI.ITEMID = PD.PROCEDUREID
  158. // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  159. // WHERE
  160. // PD.VALUEFLAG = 1
  161. // AND PD.CREATETIME >= :v_datebegin
  162. // AND PD.CREATETIME < :in_dateend
  163. // AND(
  164. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  165. // OR(
  166. // HGDI.WORKSHOP = 3
  167. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  168. // )
  169. // )
  170. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  171. // UNION ALL
  172. // --产量撤销
  173. // SELECT
  174. // GDD.MATERIALCODE,
  175. // GDD.goodscode,
  176. // HGDI.WORKSHOP,
  177. // HGDI.DATACODE AS DATACODE,
  178. // 2 AS ITEM,
  179. // GDD.TESTMOULDFLAG,
  180. // G.GOODS_LINE_CODE AS ZSCS
  181. // FROM
  182. // TP_PM_PRODUCTIONDATA PD
  183. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  184. // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  185. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  186. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  187. // AND HGDI.ITEMID = PD.PROCEDUREID
  188. // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  189. // WHERE
  190. // PD.VALUEFLAG = 0
  191. // AND PD.BACKOUTTIME >= :v_datebegin
  192. // AND PD.BACKOUTTIME < :in_dateend
  193. // AND(
  194. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  195. // OR(
  196. // HGDI.WORKSHOP = 3
  197. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  198. // )
  199. // )
  200. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损
  201. // UNION ALL
  202. // SELECT
  203. // GDD.MATERIALCODE,
  204. // GDD.goodscode,
  205. // HGDI.WORKSHOP,
  206. // HGDI.DATACODE AS DATACODE,
  207. // 3 AS ITEM,
  208. // GDD.TESTMOULDFLAG,
  209. // G.GOODS_LINE_CODE AS ZSCS
  210. // FROM
  211. // TP_PM_SCRAPPRODUCT SP
  212. // INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  213. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  214. // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  215. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  216. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  217. // AND HGDI.ITEMTYPE = 2
  218. // AND HGDI.ITEMID = PD.PROCEDUREID
  219. // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  220. // WHERE
  221. // SP.AUDITSTATUS = 1
  222. // AND SP.AUDITDATE >= :v_datebegin
  223. // AND SP.AUDITDATE < :in_dateend
  224. // AND(
  225. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  226. // OR(
  227. // HGDI.WORKSHOP = 3
  228. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  229. // )
  230. // )
  231. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损撤销
  232. // UNION ALL
  233. // SELECT
  234. // GDD.MATERIALCODE,
  235. // GDD.goodscode,
  236. // HGDI.WORKSHOP,
  237. // HGDI.DATACODE AS DATACODE,
  238. // 4 AS ITEM,
  239. // GDD.TESTMOULDFLAG,
  240. // G.GOODS_LINE_CODE AS ZSCS
  241. // FROM
  242. // TP_PM_SCRAPPRODUCT SP
  243. // INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid
  244. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  245. // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  246. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  247. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  248. // AND HGDI.ITEMTYPE = 2
  249. // AND HGDI.ITEMID = PD.PROCEDUREID
  250. // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))
  251. // WHERE
  252. // SP.AUDITSTATUS = 1
  253. // AND SP.VALUEFLAG = '0'
  254. // AND SP.BACKOUTTIME >= :v_datebegin
  255. // AND SP.BACKOUTTIME < :in_dateend
  256. // AND(
  257. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  258. // OR(
  259. // HGDI.WORKSHOP = 3
  260. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  261. // )
  262. // )
  263. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 盘点清除
  264. // UNION ALL
  265. // SELECT
  266. // GDD.MATERIALCODE,
  267. // GDD.GOODSCODE,
  268. // HGDI.WORKSHOP,
  269. // HGDI.DATACODE,
  270. // 5 AS ITEM,
  271. // GDD.TESTMOULDFLAG ,
  272. // G.GOODS_LINE_CODE AS ZSCS
  273. // FROM
  274. // TP_PM_GOODSCHANGEHISTORY GH
  275. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  276. // INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID
  277. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  278. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  279. // AND HGDI.ITEMTYPE = 2
  280. // AND HGDI.ITEMID = GH.OTHERID
  281. // WHERE
  282. // GH.CREATETIME >= :v_datebegin
  283. // AND GH.CREATETIME < :in_dateend
  284. // AND GH.DATATYPE IN( 11, 12 )
  285. // AND(
  286. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  287. // OR(
  288. // HGDI.WORKSHOP = 3
  289. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  290. // )
  291. // )
  292. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 干补
  293. // UNION ALL
  294. // SELECT
  295. // GDD.MATERIALCODE,
  296. // GDD.GOODSCODE,
  297. // HGDI.WORKSHOP,
  298. // HGDI.DATACODE,
  299. // 6 AS ITEM,
  300. // GDD.TESTMOULDFLAG,
  301. // G.GOODS_LINE_CODE AS ZSCS
  302. // FROM
  303. // TP_PM_SCRAPPRODUCT SP
  304. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  305. // INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  306. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  307. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  308. // AND HGDI.ITEMTYPE = 2
  309. // AND HGDI.ITEMID = SP.PROCEDUREID
  310. // WHERE
  311. // SP.AUDITSTATUS = 1
  312. // AND SP.VALUEFLAG = '1'
  313. // AND SP.GOODSLEVELTYPEID = 9
  314. // AND SP.SPECIALREPAIRTIME >= :v_datebegin
  315. // AND SP.SPECIALREPAIRTIME < :in_dateend
  316. // AND(
  317. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  318. // OR(
  319. // HGDI.WORKSHOP = 3
  320. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  321. // )
  322. // )
  323. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 回收
  324. // UNION ALL
  325. // SELECT
  326. // GDD.MATERIALCODE,
  327. // GDD.GOODSCODE,
  328. // HGDI.WORKSHOP,
  329. // HGDI.DATACODE,
  330. // 7 AS ITEM,
  331. // GDD.TESTMOULDFLAG,
  332. // G.GOODS_LINE_CODE AS ZSCS
  333. // FROM
  334. // TP_PM_SCRAPPRODUCT SP
  335. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  336. // INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID
  337. // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  338. // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50')
  339. // AND HGDI.ITEMTYPE = 2
  340. // AND HGDI.ITEMID = SP.PROCEDUREID
  341. // WHERE
  342. // SP.AUDITSTATUS = 1
  343. // AND SP.VALUEFLAG = '1'
  344. // AND SP.RECYCLINGFLAG = '1'
  345. // AND SP.RECYCLINGTIME >= :v_datebegin
  346. // AND SP.RECYCLINGTIME < :in_dateend
  347. // AND(
  348. // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1)
  349. // OR(
  350. // HGDI.WORKSHOP = 3
  351. // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  352. // )
  353. // )
  354. // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1
  355. // )
  356. // GROUP BY
  357. // MATERIALCODE,
  358. // GOODSCODE,
  359. // WORKSHOP,
  360. // DATACODE,
  361. // ITEM,
  362. // TESTMOULDFLAG,
  363. // ZSCS
  364. // ORDER BY
  365. // DATACODE,
  366. // ITEM,
  367. // WORKSHOP";
  368. // OracleParameter[] paras = new OracleParameter[]
  369. // {
  370. // new OracleParameter(":v_datebegin", OracleDbType.Date, date, ParameterDirection.Input),
  371. // new OracleParameter(":in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  372. // };
  373. // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  374. // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  375. // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  376. // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  377. // {
  378. // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  379. // //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  380. // //string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  381. // string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033";
  382. // string result = PostData(url033, postString, "POST");
  383. // string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  384. // string msg = JObject.Parse(result)["ZMSG"].ToString();
  385. // //sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  386. // //paras = new OracleParameter[]
  387. // //{
  388. // // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  389. // // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  390. // // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  391. // //};
  392. // //oracleConn.ExecuteNonQuery(sqlString, paras);
  393. // oracleConn.Commit();
  394. // }
  395. // #endregion
  396. // }
  397. // catch (Exception ex)
  398. // {
  399. // OutputLog.TraceLog(LogPriority.Error,
  400. // "CrossWorkshopToSAP",
  401. // "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  402. // ex.ToString(),
  403. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  404. // }
  405. // }
  406. // /// <summary>
  407. // /// 查询跨车间作业同步日志
  408. // /// </summary>
  409. // /// <param name="cre"></param>
  410. // /// <param name="userInfo"></param>
  411. // /// <returns></returns>
  412. // public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre)
  413. // {
  414. // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  415. // ServiceResultEntity sre = new ServiceResultEntity();
  416. // try
  417. // {
  418. // string sqlString = "SELECT\n" +
  419. // " dl.logid,\n" +
  420. // " dl.begintime,\n" +
  421. // " dl.endtime,\n" +
  422. // " dl.yyyymmdd,\n" +
  423. // " dl.workcode,\n" +
  424. // " dl.datastuts,\n" +
  425. // " dl.datamsg,\n" +
  426. // " dl.executedatebegin,\n" +
  427. // " dl.executedateend,\n" +
  428. // " u.usercode synusercode\n" +
  429. // "FROM\n" +
  430. // " tsap_hegii_datalog_kcjzy dl\n" +
  431. // " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" +
  432. // "WHERE\n" +
  433. // " dl.yyyymmdd >= :datebegin \n" +
  434. // " AND dl.yyyymmdd <= :dateend \n";
  435. // OracleParameter[] oracleParameter = new OracleParameter[]
  436. // {
  437. // new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  438. // new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  439. // };
  440. // string datastuts = cre.Properties["datastuts"] + "";
  441. // if (!string.IsNullOrEmpty(datastuts))
  442. // {
  443. // sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  444. // }
  445. // sqlString += "ORDER BY dl.logid DESC\n";
  446. // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  447. // return sre;
  448. // }
  449. // catch (Exception ex)
  450. // {
  451. // throw ex;
  452. // }
  453. // }
  454. // /// <summary>
  455. // /// 查询同步明细
  456. // /// </summary>
  457. // /// <param name="logid"></param>
  458. // /// <param name="userInfo"></param>
  459. // /// <returns></returns>
  460. // public static ServiceResultEntity GetWorkData_kczzy(int logid)
  461. // {
  462. // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  463. // ServiceResultEntity sre = new ServiceResultEntity();
  464. // try
  465. // {
  466. // string sqlString = "\n" +
  467. // "select wd.workshop\n" +
  468. // " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " +
  469. // " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" +
  470. // " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" +
  471. // " ,item\n" +
  472. // " ,wd.datacode\n" +
  473. // " ,dc.datacodename\n" +
  474. // " ,wd.goodscode\n" +
  475. // " ,wd.sapcode\n" +
  476. // " ,wd.num\n" +
  477. // " ,wd.createtime\n" +
  478. // " ,wd.testmouldflag\n" +
  479. // " ,wd.zscs\n" +
  480. // " ,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" +
  481. // " ,wd.logid\n" +
  482. // " from tsap_hegii_workdata_kcjzy wd\n" +
  483. // " inner join tsap_hegii_datacode dc\n" +
  484. // " on dc.datacode = wd.datacode\n" +
  485. // " where wd.logid = :logid \n" +
  486. // " order by wd.datacode,wd.item,wd.workshop \n";
  487. // OracleParameter[] oracleParameter = new OracleParameter[]
  488. // {
  489. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  490. // };
  491. // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  492. // return sre;
  493. // }
  494. // catch (Exception ex)
  495. // {
  496. // throw ex;
  497. // }
  498. // }
  499. #endregion
  500. #region 报工
  501. /// <summary>
  502. /// 同步SAP数据(自动)(重载)
  503. /// </summary>
  504. /// <param name="date">当前时间</param>
  505. /// <param name="funCode">工序码</param>
  506. /// <param name="ndate">本次要执行到的时间</param>
  507. public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate)
  508. {
  509. if (string.IsNullOrWhiteSpace(funCode))
  510. {
  511. //return;
  512. funCode = "ALL";
  513. }
  514. funCode = "," + funCode + ",";
  515. ServiceResultEntity sre = null;
  516. // 10 模具
  517. if (funCode == ",ALL," || funCode.Contains(",10,"))
  518. {
  519. try
  520. {
  521. sre = SetWorkData10_50_5000("10", ndate);
  522. if (sre.Status != Constant.ServiceResultStatus.Success ||
  523. "S" != sre.Result + "")
  524. {
  525. OutputLog.TraceLog(LogPriority.Warning,
  526. "AutoWorkDataToSAP5000",
  527. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  528. JsonHelper.ToJson(sre),
  529. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  530. }
  531. }
  532. catch (Exception ex)
  533. {
  534. OutputLog.TraceLog(LogPriority.Error,
  535. "AutoWorkDataToSAP5000",
  536. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  537. ex.ToString(),
  538. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  539. }
  540. }
  541. // 20 湿坯
  542. if (funCode == ",ALL," || funCode.Contains(",20,"))
  543. {
  544. try
  545. {
  546. sre = SetWorkData10_50_5000("20", ndate);
  547. if (sre.Status != Constant.ServiceResultStatus.Success ||
  548. "S" != sre.Result + "")
  549. {
  550. OutputLog.TraceLog(LogPriority.Warning,
  551. "AutoWorkDataToSAP5000",
  552. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  553. JsonHelper.ToJson(sre),
  554. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  555. }
  556. }
  557. catch (Exception ex)
  558. {
  559. OutputLog.TraceLog(LogPriority.Error,
  560. "AutoWorkDataToSAP5000",
  561. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  562. ex.ToString(),
  563. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  564. }
  565. }
  566. // 30 精坯
  567. if (funCode == ",ALL," || funCode.Contains(",30,"))
  568. {
  569. try
  570. {
  571. sre = SetWorkData10_50_5000("30", ndate);
  572. if (sre.Status != Constant.ServiceResultStatus.Success ||
  573. "S" != sre.Result + "")
  574. {
  575. OutputLog.TraceLog(LogPriority.Warning,
  576. "AutoWorkDataToSAP5000",
  577. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  578. JsonHelper.ToJson(sre),
  579. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  580. }
  581. }
  582. catch (Exception ex)
  583. {
  584. OutputLog.TraceLog(LogPriority.Error,
  585. "AutoWorkDataToSAP5000",
  586. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  587. ex.ToString(),
  588. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  589. }
  590. }
  591. // 40 釉坯
  592. if (funCode == ",ALL," || funCode.Contains(",40,"))
  593. {
  594. try
  595. {
  596. sre = SetWorkData10_50_5000("40", ndate);
  597. if (sre.Status != Constant.ServiceResultStatus.Success ||
  598. "S" != sre.Result + "")
  599. {
  600. OutputLog.TraceLog(LogPriority.Warning,
  601. "AutoWorkDataToSAP5000",
  602. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  603. JsonHelper.ToJson(sre),
  604. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  605. }
  606. }
  607. catch (Exception ex)
  608. {
  609. OutputLog.TraceLog(LogPriority.Error,
  610. "AutoWorkDataToSAP5000",
  611. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  612. ex.ToString(),
  613. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  614. }
  615. }
  616. // 50 烧成
  617. if (funCode == ",ALL," || funCode.Contains(",50,"))
  618. {
  619. try
  620. {
  621. sre = SetWorkData10_50_5000("50", ndate);
  622. if (sre.Status != Constant.ServiceResultStatus.Success ||
  623. "S" != sre.Result + "")
  624. {
  625. OutputLog.TraceLog(LogPriority.Warning,
  626. "AutoWorkDataToSAP5000",
  627. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  628. JsonHelper.ToJson(sre),
  629. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  630. }
  631. }
  632. catch (Exception ex)
  633. {
  634. OutputLog.TraceLog(LogPriority.Error,
  635. "AutoWorkDataToSAP5000",
  636. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  637. ex.ToString(),
  638. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  639. }
  640. }
  641. }
  642. /// <summary>
  643. /// 执行与推送
  644. /// </summary>
  645. /// <param name="datacode"></param>
  646. /// <param name="ndate"></param>
  647. /// <returns></returns>
  648. public static ServiceResultEntity SetWorkData10_50_5000(string datacode, DateTime ndate)
  649. {
  650. ServiceResultEntity sre = new ServiceResultEntity();
  651. IDBTransaction oracleConn = null;
  652. try
  653. {
  654. #region 事务1,执行存储过程
  655. OracleParameter[] paras = null;
  656. int logid = 0;
  657. string message = string.Empty;
  658. // 10 模具
  659. if ("10".Equals(datacode))
  660. {
  661. paras = new OracleParameter[]
  662. {
  663. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  664. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  665. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  666. };
  667. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  668. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras);
  669. int.TryParse(paras[1].Value + "", out logid);
  670. message = paras[2].Value + "";
  671. oracleConn.Commit();
  672. }
  673. // 20 湿坯
  674. else if ("20".Equals(datacode))
  675. {
  676. paras = new OracleParameter[]
  677. {
  678. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  679. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  680. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  681. };
  682. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  683. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras);
  684. int.TryParse(paras[1].Value + "", out logid);
  685. message = paras[2].Value + "";
  686. oracleConn.Commit();
  687. }
  688. // 30 精坯、40 釉坯、50 烧成
  689. else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode))
  690. {
  691. paras = new OracleParameter[]
  692. {
  693. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  694. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  695. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  696. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  697. };
  698. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  699. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras);
  700. int.TryParse(paras[2].Value + "", out logid);
  701. message = paras[3].Value + "";
  702. oracleConn.Commit();
  703. }
  704. // 如果logid为0,则数据没有生成
  705. if (logid == 0)
  706. {
  707. sre.Status = Constant.ServiceResultStatus.Other;
  708. sre.Message = message;
  709. return sre;
  710. }
  711. #endregion
  712. // 事物2,同步SAP接口
  713. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  714. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  715. if (SAP_ING_NEW == "1")
  716. {
  717. sre = SyncSap5000(ndate, datacode);
  718. }
  719. return sre;
  720. }
  721. catch (Exception ex)
  722. {
  723. throw ex;
  724. }
  725. finally
  726. {
  727. if (oracleConn != null &&
  728. oracleConn.ConnState == ConnectionState.Open)
  729. {
  730. oracleConn.Disconnect();
  731. }
  732. }
  733. }
  734. /// <summary>
  735. /// 同步SAP接口5000端口新
  736. /// </summary>
  737. /// <param name="date"></param>
  738. /// <param name="datacode"></param>
  739. /// <param name="userid"></param>
  740. /// <param name="logid"></param>
  741. /// <returns></returns>
  742. public static ServiceResultEntity SyncSap5000(DateTime date, string datacode)
  743. {
  744. ServiceResultEntity sre = new ServiceResultEntity();
  745. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  746. try
  747. {
  748. OracleParameter[] paras = null;
  749. //INIUtility sap_hegii = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  750. //string workcode = sap_hegii.ReadIniData("SAP_NEW_INFO", "Factory");
  751. //string workcode = "5310"; //原5010
  752. //string workcode = "5320"; //原5011
  753. int r = 0;
  754. // 查询当前节点所有不为S的日志
  755. string sqlString = @"
  756. SELECT DL.LOGID
  757. FROM TSAP_HEGII_DATALOG_BG DL
  758. WHERE 1 = 1
  759. --AND DL.LOGTYPE = '3'
  760. AND DL.DATASTUTS = 'F'
  761. AND DL.LOGID > 6
  762. AND DL.DATACODE = :DATACODE ";
  763. paras = new OracleParameter[]
  764. {
  765. new OracleParameter(":DATACODE", datacode),
  766. };
  767. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  768. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  769. sqlString = @"
  770. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  771. WD.WORKCODE AS WERKS,
  772. TO_CHAR(WD.GOODSCODE) GROES,
  773. TO_CHAR(WD.SAPCODE) MATNR,
  774. TO_CHAR(WD.USERCODE) ZGHNU,
  775. TO_CHAR(WD.DATACODE) ZJDNU,
  776. TO_CHAR(WD.YYYYMMDD) ZSCNU,
  777. TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ,
  778. TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ,
  779. TO_CHAR(WD.ORDERCODE) VBELN,
  780. TO_CHAR(WD.ORDERITEM) POSNR,
  781. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  782. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  783. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  784. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  785. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  786. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  787. DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS,
  788. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  789. WD.CHARG,
  790. TO_CHAR(:DATACODE) DATACODE,
  791. WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID
  792. FROM TSAP_HEGII_WORKDATA_BG WD
  793. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  794. ON WD.LOGID = DL.LOGID
  795. WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ";
  796. paras = new OracleParameter[]
  797. {
  798. new OracleParameter(":DATACODE", datacode),
  799. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  800. };
  801. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  802. int num = workData.Rows.Count;
  803. // 调用SAP接口
  804. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  805. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  806. // 配置文件
  807. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  808. // 测试
  809. // string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  810. // 正式
  811. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  812. string result = PostData(url030, postString, "POST");
  813. sqlString = @"
  814. UPDATE TSAP_HEGII_DATALOG_BG T
  815. SET T.ENDTIME = SYSDATE,
  816. DATASTUTS = :DATASTUTS,
  817. DATAMSG = :MSG
  818. WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 ";
  819. paras = new OracleParameter[]
  820. {
  821. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  822. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  823. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  824. };
  825. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  826. oracleConn.Commit();
  827. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  828. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  829. return sre;
  830. }
  831. catch (Exception ex)
  832. {
  833. OutputLog.TraceLog(LogPriority.Error,
  834. "BGToSAP",
  835. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  836. ex.ToString(),
  837. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  838. throw ex;
  839. }
  840. finally
  841. {
  842. if (oracleConn != null &&
  843. oracleConn.ConnState == ConnectionState.Open)
  844. {
  845. oracleConn.Disconnect();
  846. }
  847. }
  848. }
  849. /// <summary>
  850. /// 查询同步日志
  851. /// </summary>
  852. /// <param name="cre"></param>
  853. /// <param name="userInfo"></param>
  854. /// <returns></returns>
  855. public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre)
  856. {
  857. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  858. ServiceResultEntity sre = new ServiceResultEntity();
  859. try
  860. {
  861. string sqlString =
  862. "select dl.logid\n" +
  863. " ,dl.logtype\n" +
  864. " ,dl.begintime\n" +
  865. " ,dl.endtime\n" +
  866. " ,dl.yyyymmdd\n" +
  867. " ,dl.workcode\n" +
  868. " ,dl.datacode\n" +
  869. " ,dc.datacodename\n" +
  870. " ,dl.datastuts\n" +
  871. " ,dl.datamsg\n" +
  872. " ,dl.datalogid\n" +
  873. " ,dl.executedatebegin\n" +
  874. " ,dl.executedateend\n" +
  875. " ,u.usercode synusercode\n" +
  876. " from TSAP_HEGII_DATALOG_BG dl\n" +
  877. " inner join tsap_hegii_datacode dc\n" +
  878. " on dc.datacode = dl.datacode\n" +
  879. " left join tp_mst_user u\n" +
  880. " on u.userid = dl.createuserid\n" +
  881. " where dl.logtype IN('2','3')\n" +
  882. " and dl.yyyymmdd >= :DATEBEGIN\n" +
  883. " and dl.yyyymmdd < :DATEEND\n" +
  884. " and (-1= :DATACODE or dl.datacode=:DATACODE )";//add xiacm 2022-10-12
  885. OracleParameter[] oracleParameter = new OracleParameter[]
  886. {
  887. new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  888. new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  889. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  890. };
  891. sqlString += "ORDER BY dl.logid DESC\n";
  892. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  893. return sre;
  894. }
  895. catch (Exception ex)
  896. {
  897. throw ex;
  898. }
  899. }
  900. /// <summary>
  901. /// 查询同步明细
  902. /// </summary>
  903. /// <param name="logid"></param>
  904. /// <param name="userInfo"></param>
  905. /// <returns></returns>
  906. public static ServiceResultEntity GetWorkData_BG(ClientRequestEntity cre)
  907. {
  908. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  909. ServiceResultEntity sre = new ServiceResultEntity();
  910. try
  911. {
  912. int logid = Convert.ToInt32(cre.Request);
  913. string sqlString = "\n" +
  914. "select wd.yyyymmdd\n" +
  915. " ,wd.workcode\n" +
  916. " ,wd.datacode\n" +
  917. " ,dc.datacodename\n" +
  918. " ,wd.goodscode\n" +
  919. " ,wd.sapcode\n" +
  920. " ,wd.usercode\n" +
  921. " ,wd.ordercode\n" +
  922. " ,wd.orderitem\n" +
  923. " ,to_number(wd.outputnum) outputnum\n" +
  924. " ,to_number(wd.scrapnum) scrapnum\n" +
  925. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  926. " ,to_number(wd.recoverynum) recoverynum\n" +
  927. " ,to_number(wd.repairnum) repairnum\n" +
  928. " ,wd.createtime\n" +
  929. " ,wd.ztype\n" +
  930. " ,wd.zmsg\n" +
  931. " ,wd.ztime\n" +
  932. " ,wd.testmouldflag\n" +
  933. " ,wd.zscs\n" +
  934. " ,wd.logid\n" +
  935. " from tsap_hegii_workdata_BG wd\n" +
  936. " inner join tsap_hegii_datacode dc\n" +
  937. " on dc.datacode = wd.datacode\n";
  938. //update xiacm 2022-10-17
  939. if (logid > 0)
  940. {
  941. sqlString += " where wd.logid = :logid \n";
  942. }
  943. else
  944. {
  945. sqlString += " where dl.executedatebegin >= :DATEBEGIN and dl.executedateend < :DATEEND";
  946. sqlString += " and (-1= :DATACODE OR wd.datacode = :DATACODE)";
  947. }
  948. sqlString += " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  949. OracleParameter[] oracleParameter = new OracleParameter[]
  950. {
  951. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  952. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  953. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  954. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  955. };
  956. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  957. return sre;
  958. }
  959. catch (Exception ex)
  960. {
  961. throw ex;
  962. }
  963. }
  964. /// <summary>
  965. /// 报工汇总 add xiacm 2022-10-12
  966. /// </summary>
  967. /// <param name="cre"></param>
  968. /// <returns></returns>
  969. public static ServiceResultEntity GetDataLogTotal_BG(ClientRequestEntity cre)
  970. {
  971. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  972. ServiceResultEntity sre = new ServiceResultEntity();
  973. try
  974. {
  975. string sqlString =
  976. "SELECT T1.DATACODE,\n" +
  977. " T1.Actualoutput,\n" +
  978. " T2.*\n" +
  979. " FROM (\n" +
  980. " -- 业务数据汇总\n" +
  981. " -- 10\n" +
  982. " SELECT '10' AS DATACODE,\n" +
  983. " SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS Actualoutput\n" +
  984. " FROM (SELECT MH.GOODSID,\n" +
  985. " MH.MOULDID,\n" +
  986. " MH.OPERATIONTYPE,\n" +
  987. " MH.GROUTINGNUM\n" +
  988. " FROM TP_PC_MOULDCHANGEHISTORY MH\n" +
  989. " WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)\n" +
  990. " AND MH.CREATETIME >= :DATEBEGIN\n" +
  991. " AND MH.CREATETIME < :DATEEND\n" +
  992. " UNION ALL\n" +
  993. " SELECT MH.GOODSIDAFTER,\n" +
  994. " MH.MOULDID,\n" +
  995. " 0,\n" +
  996. " MH.GROUTINGNUM\n" +
  997. " FROM TP_PC_MOULDCHANGEHISTORY MH\n" +
  998. " WHERE MH.OPERATIONTYPE = -1\n" +
  999. " AND MH.CREATETIME >= :DATEBEGIN\n" +
  1000. " AND MH.CREATETIME < :DATEEND) MHH\n" +
  1001. " INNER JOIN TP_PC_MOULD M\n" +
  1002. " ON M.MOULDID = MHH.MOULDID\n" +
  1003. " UNION ALL\n" +
  1004. " -- 20\n" +
  1005. " SELECT '20' AS DATACODE,\n" +
  1006. " COUNT(1) AS Businessoutput\n" +
  1007. " FROM TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  1008. " LEFT JOIN TP_MST_GOODS G\n" +
  1009. " ON GDD.GOODSID = G.GOODSID\n" +
  1010. " WHERE GDD.CREATETIME >= :DATEBEGIN\n" +
  1011. " AND GDD.CREATETIME < :DATEEND\n" +
  1012. " AND GDD.GROUTINGFLAG = '1'\n" +
  1013. " AND G.SCRAPSUMFLAG = '1'\n" +
  1014. " UNION ALL\n" +
  1015. " -- 30\n" +
  1016. " SELECT '30' AS DATACODE,\n" +
  1017. " COUNT(DISTINCT P.BARCODE) AS Businessoutput\n" +
  1018. " FROM TP_PM_PRODUCTIONDATA P\n" +
  1019. " WHERE ((P.PROCEDUREID = 53 AND P.VALUEFLAG = 1) OR (P.PROCEDUREID = 97 AND P.VALUEFLAG = 1))\n" +
  1020. " AND P.CREATETIME >= :DATEBEGIN\n" +
  1021. " AND P.CREATETIME < :DATEEND\n" +
  1022. " UNION ALL\n" +
  1023. " -- 40\n" +
  1024. " SELECT '40' AS DATACODE,\n" +
  1025. " COUNT(DISTINCT P.BARCODE) AS Businessoutput\n" +
  1026. " FROM TP_PM_PRODUCTIONDATA P\n" +
  1027. " WHERE ((P.PROCEDUREID = 65 AND P.VALUEFLAG = 1) OR (P.PROCEDUREID = 99 AND P.VALUEFLAG = 1))\n" +
  1028. " AND P.CREATETIME >= :DATEBEGIN\n" +
  1029. " AND P.CREATETIME < :DATEEND\n" +
  1030. " UNION ALL\n" +
  1031. " -- 50\n" +
  1032. " SELECT '50' AS DATACODE,\n" +
  1033. " COUNT(DISTINCT P.BARCODE) AS Businessoutput\n" +
  1034. " FROM TP_PM_PRODUCTIONDATA P\n" +
  1035. " WHERE ((P.PROCEDUREID = 11 AND P.VALUEFLAG = 1) OR\n" +
  1036. " (P.PROCEDUREID = 104 AND P.CHECKFLAG = 1 AND P.ISREFIRE = 0))\n" +
  1037. " AND P.CREATETIME >= :DATEBEGIN\n" +
  1038. " AND P.CREATETIME < :DATEEND\n" +
  1039. " UNION ALL\n" +
  1040. " -- 60\n" +
  1041. " SELECT '60' AS DATACODE,\n" +
  1042. " COUNT(1) AS Businessoutput\n" +
  1043. " FROM TP_PM_FINISHEDPRODUCT GH\n" +
  1044. " WHERE GH.FHTIME >= :DATEBEGIN\n" +
  1045. " AND GH.FHTIME < :DATEEND) T1\n" +
  1046. " LEFT JOIN (\n" +
  1047. " -- 当日推送日志数据汇总\n" +
  1048. " SELECT DATACODE AS DATACODETD,\n" +
  1049. " SUM(TO_NUMBER(OUTPUTNUM)) AS output,\n" +
  1050. " SUM(TO_NUMBER(SCRAPNUM)) AS scrapnum,\n" +
  1051. " SUM(TO_NUMBER(CLEANUPNUM)) AS cleannupnum,\n" +
  1052. " SUM(TO_NUMBER(RECOVERYNUM)) AS recoverynum,\n" +
  1053. " SUM(TO_NUMBER(REPAIRNUM)) AS repairnum\n" +
  1054. " FROM TSAP_HEGII_WORKDATA_BG\n" +
  1055. " WHERE LOGID IN (SELECT LOGID\n" +
  1056. " FROM TSAP_HEGII_DATALOG_BG T\n" +
  1057. " WHERE DATASTUTS = 'S'\n" +
  1058. " AND EXECUTEDATEBEGIN >= :DATEBEGIN\n" +
  1059. " AND EXECUTEDATEEND <= :DATEEND)\n" +
  1060. " GROUP BY DATACODE\n" +
  1061. " ORDER BY DATACODE) T2\n" +
  1062. " ON T2.DATACODETD = T1.DATACODE\n" +
  1063. " where (-1=:DATACODE OR T1.DATACODE= :DATACODE)\n" +
  1064. " ORDER BY T1.DATACODE";
  1065. OracleParameter[] oracleParameter = new OracleParameter[]
  1066. {
  1067. new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  1068. new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  1069. new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input),
  1070. };
  1071. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1072. return sre;
  1073. }
  1074. catch (Exception ex)
  1075. {
  1076. throw ex;
  1077. }
  1078. }
  1079. #endregion
  1080. #region 报工移库(注销)
  1081. ///// <summary>
  1082. ///// 报工移库_同步SAP数据(自动)
  1083. ///// </summary>
  1084. ///// <param name="date"></param>
  1085. //public static void BGYKToSAP(DateTime date, DateTime ndate)
  1086. //{
  1087. // IDBTransaction oracleConn = null;
  1088. // ServiceResultEntity sre = new ServiceResultEntity();
  1089. // int logid = 0;
  1090. // string message = string.Empty;
  1091. // string sqlString = string.Empty;
  1092. // try
  1093. // {
  1094. // #region 生成日志
  1095. // OracleParameter[] paras = new OracleParameter[]
  1096. // {
  1097. // new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  1098. // new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  1099. // new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  1100. // };
  1101. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1102. // DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras);
  1103. // int.TryParse(paras[1].Value + "", out logid);
  1104. // message = paras[2].Value + "";
  1105. // oracleConn.Commit();
  1106. // #endregion
  1107. // #region 同步SAP
  1108. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1109. // //2022年9月8日11:38:51 更改 by fy
  1110. // //sqlString = @"
  1111. // //SELECT WERKS,
  1112. // // MATNR,
  1113. // // ZJDNU,
  1114. // // ZSCS,
  1115. // // ZSCCJ,
  1116. // // ZSCMS,
  1117. // // CHARG,
  1118. // // MENGE,
  1119. // // ZMLID
  1120. // // FROM TSAP_HEGII_WORKDATA_BGYK
  1121. // // WHERE LOGID = :LOGID ";
  1122. // sqlString = @"SELECT
  1123. // A.WERKS,
  1124. // A.MATNR,
  1125. // A.ZJDNU,
  1126. // -- A.ZSCS,
  1127. // 'T' AS ZSCS,
  1128. // A.ZSCCJ,
  1129. // A.ZSCMS,
  1130. // A.CHARG,
  1131. // A.MENGE,
  1132. // A.ZMLID,
  1133. // to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  1134. // to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  1135. // to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  1136. // to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT,
  1137. // '' AS ZTYPE1,
  1138. // '' AS ZMSG1
  1139. // FROM
  1140. // TSAP_HEGII_WORKDATA_BGYK A
  1141. // INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID
  1142. // WHERE
  1143. // A.LOGID = :LOGID";
  1144. // paras = new OracleParameter[]
  1145. // {
  1146. // new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  1147. // };
  1148. // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1149. // //获取报工SAP接口是否开启
  1150. // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1151. // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1152. // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  1153. // {
  1154. // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  1155. // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1156. // string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  1157. // //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  1158. // string result = PostData(url034, postString, "POST");
  1159. // string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  1160. // string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  1161. // sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  1162. // paras = new OracleParameter[]
  1163. // {
  1164. // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  1165. // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  1166. // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  1167. // };
  1168. // oracleConn.ExecuteNonQuery(sqlString, paras);
  1169. // oracleConn.Commit();
  1170. // }
  1171. // #endregion
  1172. // }
  1173. // catch (Exception ex)
  1174. // {
  1175. // OutputLog.TraceLog(LogPriority.Error,
  1176. // "BGYKToSAP",
  1177. // "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1178. // ex.ToString(),
  1179. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1180. // }
  1181. //}
  1182. //public static void BGYKToSAP_TEST(DateTime date, DateTime ndate)
  1183. //{
  1184. // IDBTransaction oracleConn = null;
  1185. // ServiceResultEntity sre = new ServiceResultEntity();
  1186. // int logid = 0;
  1187. // string message = string.Empty;
  1188. // string sqlString = string.Empty;
  1189. // try
  1190. // {
  1191. // #region 同步SAP
  1192. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1193. // //2022年9月8日11:38:51 更改 by fy
  1194. // //sqlString = @"
  1195. // //SELECT WERKS,
  1196. // // MATNR,
  1197. // // ZJDNU,
  1198. // // ZSCS,
  1199. // // ZSCCJ,
  1200. // // ZSCMS,
  1201. // // CHARG,
  1202. // // MENGE,
  1203. // // ZMLID
  1204. // // FROM TSAP_HEGII_WORKDATA_BGYK
  1205. // // WHERE LOGID = :LOGID ";
  1206. // sqlString = @"SELECT '5000' WERKS,MATNR,to_char(ZJDNU) ZJDNU,'T' AS ZSCS,to_char(ZSCCJ) ZSCCJ,to_char(ZSCMS) ZSCMS,to_char(CHARG)CHARG,
  1207. // to_char(MENGE) MENGE,to_char(ZMLID) ZMLID,
  1208. // to_char(:V_DATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  1209. // to_char(:IN_DATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  1210. // to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  1211. // to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT FROM (
  1212. // SELECT
  1213. // T.MATNR,
  1214. // '30' AS ZJDNU,
  1215. // G.GOODS_LINE_CODE AS ZSCS,
  1216. // '2' AS ZSCCJ,
  1217. // T.ZSCMS,
  1218. // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1219. // SUM( T.MENGE ) AS MENGE,
  1220. // '3' AS ZMLID
  1221. // FROM
  1222. // (-- 3-3线上施釉(3)到3#刮登(99)
  1223. // SELECT
  1224. // GDD.GOODSID,
  1225. // GDD.MATERIALCODE AS MATNR,
  1226. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1227. // COUNT( 1 ) AS MENGE
  1228. // FROM
  1229. // TP_PM_PRODUCTIONDATA PD1
  1230. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1231. // WHERE
  1232. // PD1.CREATETIME >= :V_DATEBEGIN
  1233. // AND PD1.CREATETIME < :IN_DATEEND
  1234. // AND PD1.PROCEDUREID = 99
  1235. // AND PD1.VALUEFLAG = '1'
  1236. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  1237. // GROUP BY
  1238. // GDD.GOODSID,
  1239. // GDD.MATERIALCODE,
  1240. // GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  1241. // SELECT
  1242. // GDD.GOODSID,
  1243. // GDD.MATERIALCODE AS MATNR,
  1244. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1245. // - COUNT( 1 ) AS MENGE
  1246. // FROM
  1247. // TP_PM_PRODUCTIONDATA PD1
  1248. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1249. // WHERE
  1250. // PD1.BACKOUTTIME >= :V_DATEBEGIN
  1251. // AND PD1.BACKOUTTIME < :IN_DATEEND
  1252. // AND PD1.PROCEDUREID = 99
  1253. // AND PD1.VALUEFLAG = '0'
  1254. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 )
  1255. // GROUP BY
  1256. // GDD.GOODSID,
  1257. // GDD.MATERIALCODE,
  1258. // GDD.TESTMOULDFLAG
  1259. // ) T
  1260. // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1261. // GROUP BY
  1262. // T.MATNR,
  1263. // T.ZSCMS,
  1264. // G.GOODS_LINE_CODE UNION ALL
  1265. // SELECT
  1266. // T.MATNR,
  1267. // '40' AS ZJDNU,
  1268. // G.GOODS_LINE_CODE AS ZSCS,
  1269. // '2' AS ZSCCJ,
  1270. // T.ZSCMS,
  1271. // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1272. // SUM( T.MENGE ) AS MENGE,
  1273. // '3' AS ZMLID
  1274. // FROM
  1275. // (-- 3#卸窑(103)到7-1成检出窑交接(11)
  1276. // SELECT
  1277. // GDD.GOODSID,
  1278. // GDD.MATERIALCODE AS MATNR,
  1279. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1280. // COUNT( 1 ) AS MENGE
  1281. // FROM
  1282. // TP_PM_PRODUCTIONDATA PD1
  1283. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1284. // WHERE
  1285. // PD1.CREATETIME >= :V_DATEBEGIN
  1286. // AND PD1.CREATETIME < :IN_DATEEND
  1287. // AND PD1.PROCEDUREID = 11
  1288. // AND PD1.VALUEFLAG = '1'
  1289. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  1290. // GROUP BY
  1291. // GDD.GOODSID,
  1292. // GDD.MATERIALCODE,
  1293. // GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的
  1294. // SELECT
  1295. // GDD.GOODSID,
  1296. // GDD.MATERIALCODE AS MATNR,
  1297. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1298. // - COUNT( 1 ) AS MENGE
  1299. // FROM
  1300. // TP_PM_PRODUCTIONDATA PD1
  1301. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1302. // WHERE
  1303. // PD1.BACKOUTTIME >= :V_DATEBEGIN
  1304. // AND PD1.BACKOUTTIME < :IN_DATEEND
  1305. // AND PD1.PROCEDUREID = 11
  1306. // AND PD1.VALUEFLAG = '0'
  1307. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 )
  1308. // GROUP BY
  1309. // GDD.GOODSID,
  1310. // GDD.MATERIALCODE,
  1311. // GDD.TESTMOULDFLAG
  1312. // ) T
  1313. // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1314. // GROUP BY
  1315. // T.MATNR,
  1316. // T.ZSCMS,
  1317. // G.GOODS_LINE_CODE UNION ALL
  1318. // SELECT
  1319. // T.MATNR,
  1320. // '40' AS ZJDNU,
  1321. // G.GOODS_LINE_CODE AS ZSCS,
  1322. // '3' AS ZSCCJ,
  1323. // T.ZSCMS,
  1324. // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG,
  1325. // SUM( T.MENGE ) AS MENGE,
  1326. // '2' AS ZMLID
  1327. // FROM
  1328. // (-- 6-1卸窑(10)到3#成检交接(104)
  1329. // SELECT
  1330. // GDD.GOODSID,
  1331. // GDD.MATERIALCODE AS MATNR,
  1332. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1333. // COUNT( 1 ) AS MENGE
  1334. // FROM
  1335. // TP_PM_PRODUCTIONDATA PD1
  1336. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1337. // WHERE
  1338. // PD1.CREATETIME >= :V_DATEBEGIN
  1339. // AND PD1.CREATETIME < :IN_DATEEND
  1340. // AND PD1.PROCEDUREID = 104
  1341. // AND PD1.VALUEFLAG = '1'
  1342. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  1343. // GROUP BY
  1344. // GDD.GOODSID,
  1345. // GDD.MATERIALCODE,
  1346. // GDD.TESTMOULDFLAG UNION ALL-- 6-1卸窑(10)到3#成检交接(104)撤销了的
  1347. // SELECT
  1348. // GDD.GOODSID,
  1349. // GDD.MATERIALCODE AS MATNR,
  1350. // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS,
  1351. // - COUNT( 1 ) AS MENGE
  1352. // FROM
  1353. // TP_PM_PRODUCTIONDATA PD1
  1354. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
  1355. // WHERE
  1356. // PD1.BACKOUTTIME >= :V_DATEBEGIN
  1357. // AND PD1.BACKOUTTIME < :IN_DATEEND
  1358. // AND PD1.PROCEDUREID = 104
  1359. // AND PD1.VALUEFLAG = '0'
  1360. // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 )
  1361. // GROUP BY
  1362. // GDD.GOODSID,
  1363. // GDD.MATERIALCODE,
  1364. // GDD.TESTMOULDFLAG
  1365. // ) T
  1366. // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID
  1367. // GROUP BY
  1368. // T.MATNR,
  1369. // T.ZSCMS,
  1370. // G.GOODS_LINE_CODE
  1371. // ) WHERE MENGE > 0";
  1372. // OracleParameter[] paras = new OracleParameter[]
  1373. // {
  1374. // new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input),
  1375. // new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input),
  1376. // };
  1377. // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1378. // //获取报工SAP接口是否开启
  1379. // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  1380. // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  1381. // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0")
  1382. // {
  1383. // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  1384. // //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1385. // //string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  1386. // string url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  1387. // string result = PostData(url034, postString, "POST");
  1388. // string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  1389. // string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  1390. // //sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  1391. // //paras = new OracleParameter[]
  1392. // //{
  1393. // // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  1394. // // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  1395. // // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  1396. // //};
  1397. // //oracleConn.ExecuteNonQuery(sqlString, paras);
  1398. // oracleConn.Commit();
  1399. // }
  1400. // #endregion
  1401. // }
  1402. // catch (Exception ex)
  1403. // {
  1404. // OutputLog.TraceLog(LogPriority.Error,
  1405. // "BGYKToSAP",
  1406. // "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1407. // ex.ToString(),
  1408. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1409. // }
  1410. //}
  1411. ///// <summary>
  1412. ///// 查询同步日志
  1413. ///// </summary>
  1414. ///// <param name="cre"></param>
  1415. ///// <param name="userInfo"></param>
  1416. ///// <returns></returns>
  1417. //public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre)
  1418. //{
  1419. // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1420. // ServiceResultEntity sre = new ServiceResultEntity();
  1421. // try
  1422. // {
  1423. // string sqlString = @"
  1424. // SELECT DL.LOGID,
  1425. // DL.BEGINTIME,
  1426. // DL.ENDTIME,
  1427. // DL.YYYYMMDD,
  1428. // DL.ZTYPE,
  1429. // DL.ZMSG,
  1430. // U.USERCODE SYNUSERCODE
  1431. // FROM TSAP_HEGII_DATALOG_BGYK DL
  1432. // LEFT JOIN TP_MST_USER U
  1433. // ON U.USERID = DL.CREATEUSERID
  1434. // WHERE DL.YYYYMMDD >= :DATEBEGIN
  1435. // AND DL.YYYYMMDD <= :DATEEND ";
  1436. // OracleParameter[] oracleParameter = new OracleParameter[]
  1437. // {
  1438. // new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  1439. // new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  1440. // };
  1441. // sqlString += "ORDER BY dl.logid DESC\n";
  1442. // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1443. // return sre;
  1444. // }
  1445. // catch (Exception ex)
  1446. // {
  1447. // throw ex;
  1448. // }
  1449. //}
  1450. ///// <summary>
  1451. ///// 查询同步明细
  1452. ///// </summary>
  1453. ///// <param name="logid"></param>
  1454. ///// <param name="userInfo"></param>
  1455. ///// <returns></returns>
  1456. //public static ServiceResultEntity GetWorkData_BGYK(int logid)
  1457. //{
  1458. // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1459. // ServiceResultEntity sre = new ServiceResultEntity();
  1460. // try
  1461. // {
  1462. // string sqlString = @"
  1463. // SELECT WERKS,
  1464. // MATNR,
  1465. // ZJDNU,
  1466. // ZSCS,
  1467. // ZSCCJ,
  1468. // ZSCMS,
  1469. // CHARG,
  1470. // MENGE,
  1471. // ZMLID
  1472. // FROM TSAP_HEGII_WORKDATA_BGYK
  1473. // WHERE LOGID = :LOGID ";
  1474. // OracleParameter[] oracleParameter = new OracleParameter[]
  1475. // {
  1476. // new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input),
  1477. // };
  1478. // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1479. // return sre;
  1480. // }
  1481. // catch (Exception ex)
  1482. // {
  1483. // throw ex;
  1484. // }
  1485. //}
  1486. #endregion
  1487. #region PostData 请求
  1488. public static string PostData(string url, string data, string method)
  1489. {
  1490. //将单引号转义成双引号
  1491. data = data.Replace("'", "\"");
  1492. //创建Web访问对象
  1493. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  1494. //把用户传过来的数据转成“UTF-8”的字节流
  1495. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  1496. myRequest.Method = method;
  1497. myRequest.ContentLength = buf.Length;
  1498. myRequest.ContentType = "application/json;charset=UTF-8";
  1499. //myRequest.MaximumAutomaticRedirections = 1;
  1500. myRequest.AllowAutoRedirect = true;
  1501. //UTF8标准转码加密
  1502. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1503. // 配置文件
  1504. string userName = ini.ReadIniData("SAP_NEW_INFO", "userName");
  1505. // 测试
  1506. //string userName = "hgsapdk:Sapdk#240";
  1507. // 正式
  1508. //string userName = "PODKMES:Sapdk#800";
  1509. string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
  1510. myRequest.Headers.Add("Authorization", "Basic " + base64Header);
  1511. //发送请求
  1512. Stream stream = myRequest.GetRequestStream();
  1513. stream.Write(buf, 0, buf.Length);
  1514. stream.Close();
  1515. //获取接口返回值
  1516. //通过Web访问对象获取响应内容
  1517. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  1518. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  1519. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  1520. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  1521. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  1522. reader.Close();
  1523. myResponse.Close();
  1524. // 结果
  1525. OutputLog.TraceLog(LogPriority.Information,
  1526. "报工030", method, data,
  1527. LocalPath.LogExePath + "SAP_HEGII\\Info_030");
  1528. return returnXml;
  1529. }
  1530. #endregion
  1531. #region 转换
  1532. public class ModelConvertHelper<T> where T : new()
  1533. {
  1534. public static List<T> ConvertToModel(DataTable dt)
  1535. {
  1536. // 定义集合
  1537. List<T> ts = new List<T>();
  1538. // 获得此模型的类型
  1539. Type type = typeof(T);
  1540. string tempName = "";
  1541. foreach (DataRow dr in dt.Rows)
  1542. {
  1543. T t = new T();
  1544. // 获得此模型的公共属性
  1545. PropertyInfo[] propertys = t.GetType().GetProperties();
  1546. foreach (PropertyInfo pi in propertys)
  1547. {
  1548. tempName = pi.Name;
  1549. // 检查DataTable是否包含此列
  1550. if (dt.Columns.Contains(tempName))
  1551. {
  1552. // 判断此属性是否有Setter
  1553. if (!pi.CanWrite) continue;
  1554. object value = dr[tempName];
  1555. if (value != DBNull.Value)
  1556. pi.SetValue(t, value, null);
  1557. }
  1558. }
  1559. ts.Add(t);
  1560. }
  1561. return ts;
  1562. }
  1563. }
  1564. #endregion
  1565. }
  1566. }