Form1.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Dongke.IBOSS.PRD.Basics.DataAccess;
  10. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
  11. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM008;
  12. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM010;
  13. using Dongke.IBOSS.PRD.WCF.DataModels;
  14. using Oracle.ManagedDataAccess.Client;
  15. namespace SAPTest
  16. {
  17. public partial class Form1 : Form
  18. {
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. // 潮州1厂
  23. //DataManager.ConnectionString = string.Format(DataManager.ConnectionStringFormat, "172.19.22.61", "1521", "hgcz1", "hgcz1", "dongke" );
  24. // 潮州2厂
  25. DataManager.ConnectionString = string.Format(DataManager.ConnectionStringFormat, "172.19.22.61", "1521", "hgcz2", "hgcz2", "dongke");
  26. }
  27. private void button1_Click(object sender, EventArgs e)
  28. {
  29. try
  30. {
  31. //开始时间
  32. string dateString = "2022-09-25 00:00:00";
  33. DateTime dt = DateTime.ParseExact(dateString, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
  34. string dateString2 = "2022-10-02 13:00:00";
  35. //结束时间
  36. DateTime ndt = DateTime.ParseExact(dateString2, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
  37. //跨车间
  38. //SAPDataLogic.CrossWorkshopToSAP_test(dt, ndt);
  39. //报工移库
  40. //SAPDataLogic.BGYKToSAP_TEST(dt, ndt);
  41. //报工
  42. SAPDataLogic.SyncSap5000(ndt, "10");
  43. SAPDataLogic.SyncSap5000(ndt, "20");
  44. SAPDataLogic.SyncSap5000(ndt, "30");
  45. SAPDataLogic.SyncSap5000(ndt, "40");
  46. SAPDataLogic.SyncSap5000(ndt, "50");
  47. SAPDataLogic.SyncSap5000(ndt, "60");
  48. //报工-60节点-暂废
  49. //string dateString60 = "2022-09-29 00:00:00";
  50. //DateTime dt60 = DateTime.ParseExact(dateString60, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
  51. //SAPDataLogic.SyncSap5000_60_BSJ(dt60);
  52. // 记得换地址---正式--post中的密码
  53. //4号补数据专用
  54. //报工60节点
  55. //SAPDataLogic.SyncSap5000_test_jj(dt,"60", ndt);
  56. //跨车间
  57. //SAPDataLogic.CrossWorkshopToSAP(dt, ndt);
  58. MessageBox.Show("OK");
  59. }
  60. catch (Exception ex)
  61. {
  62. }
  63. }
  64. #region 手动调用同步SAP,补系统异常造成的SAP数据同步错误
  65. /// <summary>
  66. /// 撤销整板交接
  67. /// </summary>
  68. /// <param name="orderid"></param>
  69. /// <param name="dtData"></param>
  70. /// <param name="sUserInfo"></param>
  71. /// <returns></returns>
  72. public static ServiceResultEntity BackFinishedHandover()
  73. {
  74. ServiceResultEntity sre = new ServiceResultEntity();
  75. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  76. try
  77. {
  78. string sql = string.Empty;
  79. OracleParameter[] Paras = null;
  80. oracleTrConn.Connect();
  81. #region 同步SAP
  82. #region 取相关数据
  83. object isExists;
  84. string sqlString = string.Empty;
  85. OracleParameter[] oracleParameter = null;
  86. int r = 0;
  87. // 条码串
  88. //string fifter = " AND (bar.barcode = '";
  89. //foreach (DataRow row in dtData.Rows)
  90. //{
  91. // fifter += row["barcode"] + "' OR bar.barcode = '";
  92. //}
  93. //fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  94. DateTime date = DateTime.Now;
  95. string yyyymmdd = date.ToString("yyyyMMdd");
  96. sqlString = "select workcode from tp_mst_account where rownum = 1";
  97. string workcode = oracleTrConn.GetSqlResultToStr(sqlString);
  98. //DateTime datebegin = date.Date;
  99. //DateTime dateend = date.Date.AddDays(1);
  100. sqlString =
  101. "SELECT :yyyymmdd AS yyyymmdd\n" +
  102. " ,SYSDATE AS createtime\n" +
  103. " ,tt.goodscode\n" +
  104. " ,tt.sapcode\n" +
  105. " ,tt.usercode\n" +
  106. " ,tt.ordercode\n" +
  107. " ,tt.orderitem\n" +
  108. " ,tt.zscs\n" +
  109. " ,to_char(tt.outputnum) AS outputnum\n" +
  110. " ,to_char(tt.recoverynum) AS recoverynum\n" +
  111. " FROM (SELECT t.goodscode\n" +
  112. " ,t.sapcode\n" +
  113. " ,t.usercode\n" +
  114. " ,t.ordercode\n" +
  115. " ,t.orderitem\n" +
  116. " ,t.zscs\n" +
  117. " ,0 - SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  118. " ,0 - SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  119. " FROM (SELECT gh.goodscode\n" +
  120. " ,gh.sapcode\n" +
  121. " ,u.usercode\n" +
  122. " ,o.orderno\n" +
  123. " ,bar.recyclingflag\n" +
  124. " ,gh.datatype\n" +
  125. " ,'' zscs\n" +
  126. //" ,case when g.goods_line_type = 1 or gl.highpressureflag = '1' then 'G' else 'L' end zscs\n" +
  127. " ,CASE\n" +
  128. " WHEN o.orderid IS NULL\n" +
  129. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  130. " ' '\n" +
  131. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  132. " to_char(o.orderno)\n" +
  133. " ELSE\n" +
  134. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  135. " END ordercode -- 销售凭证\n" +
  136. " ,CASE\n" +
  137. " WHEN o.orderid IS NULL\n" +
  138. " OR o.orderno LIKE 'HEGII%'\n" +
  139. " OR instr(o.orderno, '/') = 0 THEN\n" +
  140. " '0'\n" +
  141. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  142. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  143. " ELSE\n" +
  144. " to_char(substr(o.orderno\n" +
  145. " ,instr(o.orderno, '/') + 1\n" +
  146. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  147. " END orderitem -- 销售凭证项目\n" +
  148. " FROM (SELECT gch.goodscode\n" +
  149. " ,gch.sapcode\n" +
  150. " ,decode(gch.datatype, 53, 51, gch.datatype) datatype\n" +
  151. " ,gch.userid\n" +
  152. " ,gch.groutingdailydetailid\n" +
  153. " ,gch.otherid\n" +
  154. " FROM tp_pm_goodschangehistory gch\n" +
  155. " WHERE gch.datatype IN (51, 53)\n" +
  156. //" WHERE gch.datatype IN (51, 52, 53)\n" +
  157. " UNION ALL\n" +
  158. " SELECT gch.goodscode\n" +
  159. " ,gch.sapcode\n" +
  160. " ,52 datatype\n" +
  161. " ,gch.userid\n" +
  162. " ,gch.groutingdailydetailid\n" +
  163. " ,gch.goodsidafter\n" +
  164. " FROM tp_pm_goodschangehistory gch\n" +
  165. " WHERE gch.datatype = 53) gh\n" +
  166. " INNER JOIN tp_mst_user u\n" +
  167. " ON u.userid = gh.userid\n" +
  168. " INNER JOIN tp_pm_groutingdailydetail bar\n" +
  169. " ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" +
  170. @" AND (bar.barcode = '80000975390' OR bar.barcode = '80000988487' OR bar.barcode = '80000983841' OR bar.barcode = '80000975382' OR bar.barcode = '80000960940' OR bar.barcode = '80000885561' OR bar.barcode = '80000874073' OR bar.barcode = '80000785446' OR bar.barcode = '80000802029' OR bar.barcode = '80000983400' OR bar.barcode = '80000975368' OR bar.barcode = '80000895382' OR bar.barcode = '80000975395' OR bar.barcode = '80000988905' OR bar.barcode = '80000988481' OR bar.barcode = '80000874563' OR bar.barcode = '80000983091'
  171. or bar.barcode = '80000901455' OR bar.barcode = '80000942388' OR bar.barcode = '80000983531' OR bar.barcode = '80000942155' OR bar.barcode = '80000798305' OR bar.barcode = '80000808142' OR bar.barcode = '80000983516' OR bar.barcode = '80000983497' )
  172. " +
  173. " INNER JOIN tp_pc_groutingline gl\n" +
  174. " ON gl.groutinglineid = bar.groutinglineid\n" +
  175. " INNER JOIN tp_mst_goods g\n" +
  176. " ON g.goodsid = bar.goodsid\n" +
  177. " LEFT JOIN tp_pm_order o\n" +
  178. " ON o.orderid = gh.otherid) t\n" +
  179. " GROUP BY t.goodscode\n" +
  180. " ,t.sapcode\n" +
  181. " ,t.usercode\n" +
  182. " ,t.ordercode\n" +
  183. " ,t.orderitem,t.zscs) tt\n" +
  184. " WHERE tt.outputnum <> 0\n" +
  185. " OR tt.recoverynum <> 0\n" +
  186. " ORDER BY tt.goodscode\n" +
  187. " ,tt.sapcode\n" +
  188. " ,tt.usercode\n" +
  189. " ,tt.ordercode\n" +
  190. " ,tt.orderitem,tt.zscs";
  191. oracleParameter = new OracleParameter[]
  192. {
  193. new OracleParameter(":yyyymmdd", yyyymmdd)
  194. };
  195. DataTable workData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  196. string logid = oracleTrConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  197. string msg = $"整板撤销[{logid}]:80000901455,80000975390" ;
  198. sqlString = "insert into tsap_hegii_datalog\n" +
  199. " (LogID\n" +
  200. " ,LogType\n" +
  201. " ,BeginTime\n" +
  202. " ,YYYYMMDD\n" +
  203. " ,WorkCode\n" +
  204. " ,DataCode\n" +
  205. " ,DataStuts\n" +
  206. " ,DataMSG\n" +
  207. " ,CreateUserID\n" +
  208. " ,DataLogID)\n" +
  209. "values\n" +
  210. " (:LogID\n" +
  211. " ,'2'\n" +
  212. " ,sysdate\n" +
  213. " ,:YYYYMMDD\n" +
  214. " ,:WorkCode\n" +
  215. " ,'60'\n" +
  216. " ,'S'\n" +
  217. " ,:DataMSG\n" +
  218. " ,:CreateUserID\n" +
  219. " ,:LogID)";
  220. oracleParameter = new OracleParameter[]
  221. {
  222. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  223. new OracleParameter(":CreateUserID",OracleDbType.Int32, 4, ParameterDirection.Input),
  224. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  225. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  226. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  227. };
  228. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  229. #endregion
  230. #region 同步条码明细(注销)
  231. sqlString =
  232. "select bar.yyyymmdd\n" +
  233. " ,bar.workcode\n" +
  234. " ,bar.barcode\n" +
  235. " ,bar.outcode\n" +
  236. " ,bar.goodscode\n" +
  237. " ,bar.sapcode\n" +
  238. " ,bar.sapflbatchno\n" +
  239. " ,bar.sapfhundoflag\n" +
  240. " ,bar.ordercode\n" +
  241. " ,bar.orderitem\n" +
  242. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  243. //" from tsap_hegii_finishedproduct bar where 1 = 1" + fifter +
  244. " from tsap_hegii_finishedproduct bar where ztype = 'S' "
  245. +
  246. @" AND (bar.barcode = '80000975390' OR bar.barcode = '80000988487' OR bar.barcode = '80000983841' OR bar.barcode = '80000975382' OR bar.barcode = '80000960940' OR bar.barcode = '80000885561' OR bar.barcode = '80000874073' OR bar.barcode = '80000785446' OR bar.barcode = '80000802029' OR bar.barcode = '80000983400' OR bar.barcode = '80000975368' OR bar.barcode = '80000895382' OR bar.barcode = '80000975395' OR bar.barcode = '80000988905' OR bar.barcode = '80000988481' OR bar.barcode = '80000874563' OR bar.barcode = '80000983091'
  247. or bar.barcode = '80000901455' OR bar.barcode = '80000942388' OR bar.barcode = '80000983531' OR bar.barcode = '80000942155' OR bar.barcode = '80000798305' OR bar.barcode = '80000808142' OR bar.barcode = '80000983516' OR bar.barcode = '80000983497' )
  248. " +
  249. " order by bar.sapflbatchno, bar.barcode";
  250. DataTable fpData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  251. // 单次传输最大条数
  252. int maxCount = 100000;
  253. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  254. if (fpData != null && fpData.Rows.Count > 0)
  255. {
  256. int index = 0;
  257. //Zppfm010 sapParameter = new Zppfm010();
  258. //sapParameter.Zsum = maxCount;
  259. //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  260. List<ZSPP110> tableInList = new List<ZSPP110>();
  261. foreach (DataRow item in fpData.Rows)
  262. {
  263. if (index >= maxCount)
  264. {
  265. Zppfm010 sapItem = new Zppfm010();
  266. sapItem.ZSUM = tableInList.Count;
  267. sapItem.TABLE_IN = tableInList.ToArray();
  268. sapParameterList.Add(sapItem);
  269. index = 0;
  270. tableInList.Clear();
  271. }
  272. ZSPP110 info110 = new ZSPP110();
  273. // 时间戳
  274. info110.ZSCNU = yyyymmdd;
  275. // 工厂
  276. info110.WERKS = workcode;
  277. // 生产条码
  278. info110.ZSCTM = item["barcode"].ToString();
  279. // 包装条码
  280. info110.ZBZTM = item["outcode"].ToString();
  281. // 产品编码
  282. info110.ZCPBM = item["goodscode"].ToString();
  283. // 物料编号
  284. info110.MATNR = item["sapcode"].ToString();
  285. // 包装整板标识
  286. info110.ZBZBS = item["sapflbatchno"].ToString();
  287. // 重新绑定标识
  288. info110.ZCXBD = "X";
  289. // 销售凭证
  290. info110.KDAUF = item["ordercode"].ToString();
  291. // 销售凭证项目
  292. info110.KDPOS = item["orderitem"].ToString();
  293. info110.UZEIT = date.ToString("HH:mm:ss");
  294. info110.ZCODEN = "";
  295. info110.ZCODEYZM = "";
  296. //if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  297. //{
  298. // continue;
  299. //}
  300. tableInList.Add(info110);
  301. index++;
  302. }
  303. Zppfm010 sapParameter010 = new Zppfm010();
  304. sapParameter010.ZSUM = tableInList.Count;
  305. sapParameter010.TABLE_IN = tableInList.ToArray();
  306. sapParameterList.Add(sapParameter010);
  307. index = 0;
  308. tableInList.Clear();
  309. }
  310. else
  311. {
  312. Zppfm010 sapParameter010 = new Zppfm010();
  313. sapParameter010.ZSUM = 0;
  314. sapParameter010.TABLE_IN = new ZSPP110[sapParameter010.ZSUM];
  315. sapParameterList.Add(sapParameter010);
  316. }
  317. foreach (Zppfm010 sapParameter010 in sapParameterList)
  318. {
  319. ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd);
  320. //sre.Message = result010.ZMSG;
  321. sre.Message = $"{result010.ZMSG}({sapParameter010.ZSUM})";
  322. sre.Result = result010.ZTYPE;
  323. if (result010.TABLE_OUT != null && result010.TABLE_OUT.Length > 0)
  324. {
  325. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  326. //sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where barcode=:barcode and sapflbatchno=:sapflbatchno";
  327. sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = 'D', ZMSG = :ZMSG where barcode=:barcode and ztype = 'S' and sapflbatchno=:sapflbatchno";
  328. foreach (ZSPP110 item in result010.TABLE_OUT)
  329. {
  330. oracleParameter = new OracleParameter[]
  331. {
  332. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  333. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  334. new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  335. new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  336. };
  337. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  338. }
  339. }
  340. if (result010.ZTYPE != "S")
  341. {
  342. sre.Result = -2;
  343. sre.Message = "同步条码失败," + result010.ZMSG;
  344. return sre;
  345. }
  346. }
  347. // 删除已同步条码
  348. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  349. //sql = "Delete from tsap_hegii_finishedproduct bar where 1 = 1" + fifter;
  350. //r = oracleTrConn.ExecuteNonQuery(sql);
  351. #endregion
  352. #region 同步产量
  353. // 潮州 暂时不同步产量 2020-10-25 chenxy
  354. Zppfm008 sapParameter = new Zppfm008();
  355. if (workData != null && workData.Rows.Count > 0)
  356. {
  357. sapParameter.ZSUM = workData.Rows.Count;
  358. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  359. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  360. " (YYYYMMDD\n" +
  361. " ,WorkCode\n" +
  362. " ,DataCode\n" +
  363. " ,GoodsCode\n" +
  364. " ,SAPCode\n" +
  365. " ,UserCode\n" +
  366. " ,OutputNum\n" +
  367. " ,RECOVERYNUM\n" +
  368. " ,ORDERCODE\n" +
  369. " ,ORDERITEM\n" +
  370. " ,zscs\n" +
  371. " ,LogID,createtime)\n" +
  372. "values\n" +
  373. " ('" + yyyymmdd + "'\n" +
  374. " ,'" + workcode + "'\n" +
  375. " ,'60'\n" +
  376. " ,:GoodsCode\n" +
  377. " ,:SAPCode\n" +
  378. " ,:UserCode\n" +
  379. " ,:OutputNum\n" +
  380. " ,:RECOVERYNUM\n" +
  381. " ,:ORDERCODE\n" +
  382. " ,:ORDERITEM\n" +
  383. " ,:zscs\n" +
  384. " ," + logid + ",:createtime)";
  385. int index = 0;
  386. DateTime now = DateTime.Now;
  387. foreach (DataRow item in workData.Rows)
  388. {
  389. ZSPP100 info100 = new ZSPP100();
  390. // 工厂
  391. info100.WERKS = workcode;
  392. // 型号
  393. info100.GROES = item["GoodsCode"].ToString();
  394. // 物料编号
  395. info100.MATNR = item["SAPCode"].ToString();
  396. // 生产工号
  397. info100.ZGHNU = item["UserCode"].ToString();
  398. // 数据节点
  399. info100.ZJDNU = "60";
  400. // 时间戳
  401. info100.ZSCNU = yyyymmdd;
  402. // 销售凭证
  403. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  404. // 销售凭证项目
  405. info100.POSNR = item["ORDERITEM"].ToString();
  406. // 产量
  407. info100.ZCLNG = item["OutputNum"].ToString();
  408. // 损坯
  409. info100.ZSPNG = "0";
  410. // 清除
  411. info100.ZQCNG = "0";
  412. // 回收
  413. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  414. // 干补
  415. info100.ZGBNG = "0";
  416. // 注浆类型 G高压 L普通
  417. info100.ZSCS = item["ZSCS"].ToString();
  418. info100.ZKSSJ = now.ToString("HHmmss");
  419. info100.ZJSRQ = Convert.ToDecimal(now.ToString("yyyyMMddHHmmss"));
  420. oracleParameter = new OracleParameter[]
  421. {
  422. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  423. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  424. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  425. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  426. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  427. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  428. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  429. new OracleParameter(":ZSCS",OracleDbType.Varchar2, item["ZSCS"], ParameterDirection.Input),
  430. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  431. };
  432. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  433. sapParameter.TABLE_IN[index++] = info100;
  434. }
  435. }
  436. else
  437. {
  438. sapParameter.ZSUM = 0;
  439. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  440. }
  441. ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  442. //if (result.Ztype == "E")
  443. //{
  444. // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  445. // oracleParameter = new OracleParameter[]
  446. // {
  447. // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  448. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  449. // };
  450. // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  451. //}
  452. //else
  453. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  454. {
  455. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  456. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  457. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  458. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  459. foreach (ZSPP100 item in result.TABLE_OUT)
  460. {
  461. string posnr = item.POSNR.TrimStart('0');
  462. oracleParameter = new OracleParameter[]
  463. {
  464. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  465. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  466. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  467. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  468. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  469. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  470. new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  471. };
  472. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  473. }
  474. //:msg||chr(13)||DataMSG
  475. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  476. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  477. oracleParameter = new OracleParameter[]
  478. {
  479. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  480. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  481. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  482. };
  483. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  484. }
  485. if (result.ZTYPE != "S")
  486. {
  487. sre.Result = -2;
  488. sre.Message = "同步产量失败," + result.ZMSG;
  489. return sre;
  490. }
  491. //sqlString =
  492. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  493. //" SET bar.issync = NULL\n" +
  494. //" WHERE 1 = 1" + fifter;
  495. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  496. //*/
  497. #endregion
  498. #endregion
  499. sre.Result = 1;
  500. oracleTrConn.Commit();
  501. oracleTrConn.Disconnect();
  502. return sre;
  503. }
  504. catch (Exception ex)
  505. {
  506. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  507. {
  508. oracleTrConn.Rollback();
  509. oracleTrConn.Disconnect();
  510. }
  511. throw ex;
  512. }
  513. finally
  514. {
  515. if (oracleTrConn.ConnState == ConnectionState.Open)
  516. {
  517. oracleTrConn.Disconnect();
  518. }
  519. }
  520. }
  521. #endregion
  522. }
  523. }