Form1.cs 22 KB

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