SAPDataLogicPartial.cs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Net;
  7. using System.Reflection;
  8. using System.Text;
  9. using Dongke.IBOSS.PRD.Basics.BaseResources;
  10. using Dongke.IBOSS.PRD.Basics.DataAccess;
  11. using Dongke.IBOSS.PRD.Basics.Library;
  12. using Dongke.IBOSS.PRD.WCF.DataModels;
  13. using Newtonsoft.Json.Linq;
  14. using Oracle.ManagedDataAccess.Client;
  15. namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
  16. {
  17. public partial class SAPDataLogic
  18. {
  19. #region 跨车间作业
  20. /// <summary>
  21. /// 同步SAP数据(自动)
  22. /// </summary>
  23. /// <param name="date"></param>
  24. public static void CrossWorkshopToSAP(DateTime date, DateTime ndate)
  25. {
  26. IDBTransaction oracleConn = null;
  27. ServiceResultEntity sre = new ServiceResultEntity();
  28. int logid = 0;
  29. string message = string.Empty;
  30. string sqlString = string.Empty;
  31. try
  32. {
  33. #region 生成日志
  34. OracleParameter[] paras = new OracleParameter[]
  35. {
  36. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  37. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  38. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  39. };
  40. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  41. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_kcjzy", paras);
  42. int.TryParse(paras[1].Value + "", out logid);
  43. message = paras[2].Value + "";
  44. oracleConn.Commit();
  45. #endregion
  46. #region 同步SAP
  47. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  48. //sqlString = "select workcode from tp_mst_account where rownum = 1";
  49. //string workcode = oracleConn.GetSqlResultToStr(sqlString);
  50. //workcode = "5000";
  51. sqlString = "SELECT\n" +
  52. " to_char(B.EXECUTEDATEBEGIN,'yyyymmddhh24miss') AS ZYWKS,\n" +
  53. " to_char(B.EXECUTEDATEEND,'yyyymmddhh24miss') AS ZYWJS,\n" +
  54. " to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,\n" +
  55. " A.WORKCODE AS WERKS,\n" +
  56. " A.SAPCODE AS MATNR,\n" +
  57. " A.GOODSCODE AS GROES,\n" +
  58. " A.WORKSHOP AS ZSCCJ,\n" +
  59. " A.WORKSHOP AS ZSSCJ,\n" +
  60. " A.DATACODE AS ZJDNU,\n" +
  61. " A.ITEM AS ZZYLX,\n" +
  62. " A.NUM AS MENGE,\n" +
  63. //" A.ZSCS,\n" +
  64. " 'T' AS ZSCS,\n" +
  65. " CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS, \n" +
  66. " '' AS ZTYPE1, \n" +
  67. " '' AS ZMSG1 \n" +
  68. "FROM\n" +
  69. " TSAP_HEGII_WORKDATA_KCJZY A\n" +
  70. " INNER JOIN TSAP_HEGII_DATALOG_KCJZY B ON B.LOGID = A.LOGID\n" +
  71. "WHERE\n" +
  72. " A.LOGID = :logid";
  73. paras = new OracleParameter[]
  74. {
  75. new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
  76. };
  77. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  78. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  79. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  80. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  81. {
  82. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<CrossWorkShopToSAP>.ConvertToModel(workData)) + "}}";
  83. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  84. string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033");
  85. //url033 = "Url033=http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033"
  86. string result = PostData(url033, postString, "POST");
  87. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  88. string msg = JObject.Parse(result)["ZMSG"].ToString();
  89. sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  90. paras = new OracleParameter[]
  91. {
  92. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  93. new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  94. new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input),
  95. };
  96. oracleConn.ExecuteNonQuery(sqlString, paras);
  97. oracleConn.Commit();
  98. }
  99. #endregion
  100. }
  101. catch (Exception ex)
  102. {
  103. OutputLog.TraceLog(LogPriority.Error,
  104. "CrossWorkshopToSAP",
  105. "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  106. ex.ToString(),
  107. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  108. }
  109. }
  110. /// <summary>
  111. /// 查询跨车间作业同步日志
  112. /// </summary>
  113. /// <param name="cre"></param>
  114. /// <param name="userInfo"></param>
  115. /// <returns></returns>
  116. public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre)
  117. {
  118. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  119. ServiceResultEntity sre = new ServiceResultEntity();
  120. try
  121. {
  122. string sqlString = "SELECT\n" +
  123. " dl.logid,\n" +
  124. " dl.begintime,\n" +
  125. " dl.endtime,\n" +
  126. " dl.yyyymmdd,\n" +
  127. " dl.workcode,\n" +
  128. " dl.datastuts,\n" +
  129. " dl.datamsg,\n" +
  130. " dl.executedatebegin,\n" +
  131. " dl.executedateend,\n" +
  132. " u.usercode synusercode\n" +
  133. "FROM\n" +
  134. " tsap_hegii_datalog_kcjzy dl\n" +
  135. " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" +
  136. "WHERE\n" +
  137. " dl.yyyymmdd >= :datebegin \n" +
  138. " AND dl.yyyymmdd <= :dateend \n";
  139. OracleParameter[] oracleParameter = new OracleParameter[]
  140. {
  141. new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  142. new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  143. };
  144. string datastuts = cre.Properties["datastuts"] + "";
  145. if (!string.IsNullOrEmpty(datastuts))
  146. {
  147. sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  148. }
  149. sqlString += "ORDER BY dl.logid DESC\n";
  150. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  151. return sre;
  152. }
  153. catch (Exception ex)
  154. {
  155. throw ex;
  156. }
  157. }
  158. /// <summary>
  159. /// 查询同步明细
  160. /// </summary>
  161. /// <param name="logid"></param>
  162. /// <param name="userInfo"></param>
  163. /// <returns></returns>
  164. public static ServiceResultEntity GetWorkData_kczzy(int logid)
  165. {
  166. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  167. ServiceResultEntity sre = new ServiceResultEntity();
  168. try
  169. {
  170. string sqlString = "\n" +
  171. "select wd.workshop\n" +
  172. " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " +
  173. " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" +
  174. " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" +
  175. " ,item\n" +
  176. " ,wd.datacode\n" +
  177. " ,dc.datacodename\n" +
  178. " ,wd.goodscode\n" +
  179. " ,wd.sapcode\n" +
  180. " ,wd.num\n" +
  181. " ,wd.createtime\n" +
  182. " ,wd.testmouldflag\n" +
  183. " ,wd.zscs\n" +
  184. " ,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" +
  185. " ,wd.logid\n" +
  186. " from tsap_hegii_workdata_kcjzy wd\n" +
  187. " inner join tsap_hegii_datacode dc\n" +
  188. " on dc.datacode = wd.datacode\n" +
  189. " where wd.logid = :logid \n" +
  190. " order by wd.datacode,wd.item,wd.workshop \n";
  191. OracleParameter[] oracleParameter = new OracleParameter[]
  192. {
  193. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  194. };
  195. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  196. return sre;
  197. }
  198. catch (Exception ex)
  199. {
  200. throw ex;
  201. }
  202. }
  203. #endregion
  204. #region 报工
  205. /// <summary>
  206. /// 同步SAP数据(自动)
  207. /// </summary>
  208. /// <param name="date"></param>
  209. public static void AutoWorkDataToSAP5000(DateTime date, string funCode)
  210. {
  211. if (string.IsNullOrWhiteSpace(funCode))
  212. {
  213. //return;
  214. funCode = "ALL";
  215. }
  216. funCode = "," + funCode + ",";
  217. ServiceResultEntity sre = null;
  218. // 10 模具
  219. if (funCode == ",ALL," || funCode.Contains(",10,"))
  220. {
  221. try
  222. {
  223. sre = SetWorkData10_50(date, "10", 0);
  224. if (sre.Status != Constant.ServiceResultStatus.Success ||
  225. "S" != sre.Result + "")
  226. {
  227. OutputLog.TraceLog(LogPriority.Warning,
  228. "AutoWorkDataToSAP",
  229. "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  230. JsonHelper.ToJson(sre),
  231. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  232. }
  233. }
  234. catch (Exception ex)
  235. {
  236. OutputLog.TraceLog(LogPriority.Error,
  237. "AutoWorkDataToSAP",
  238. "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  239. ex.ToString(),
  240. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  241. }
  242. }
  243. // 20 湿坯
  244. if (funCode == ",ALL," || funCode.Contains(",20,"))
  245. {
  246. try
  247. {
  248. sre = SetWorkData10_50(date, "20", 0);
  249. if (sre.Status != Constant.ServiceResultStatus.Success ||
  250. "S" != sre.Result + "")
  251. {
  252. OutputLog.TraceLog(LogPriority.Warning,
  253. "AutoWorkDataToSAP",
  254. "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  255. JsonHelper.ToJson(sre),
  256. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  257. }
  258. }
  259. catch (Exception ex)
  260. {
  261. OutputLog.TraceLog(LogPriority.Error,
  262. "AutoWorkDataToSAP",
  263. "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  264. ex.ToString(),
  265. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  266. }
  267. }
  268. // 30 精坯
  269. if (funCode == ",ALL," || funCode.Contains(",30,"))
  270. {
  271. try
  272. {
  273. sre = SetWorkData10_50(date, "30", 0);
  274. if (sre.Status != Constant.ServiceResultStatus.Success ||
  275. "S" != sre.Result + "")
  276. {
  277. OutputLog.TraceLog(LogPriority.Warning,
  278. "AutoWorkDataToSAP",
  279. "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  280. JsonHelper.ToJson(sre),
  281. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  282. }
  283. }
  284. catch (Exception ex)
  285. {
  286. OutputLog.TraceLog(LogPriority.Error,
  287. "AutoWorkDataToSAP",
  288. "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  289. ex.ToString(),
  290. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  291. }
  292. }
  293. // 40 釉坯
  294. if (funCode == ",ALL," || funCode.Contains(",40,"))
  295. {
  296. try
  297. {
  298. sre = SetWorkData10_50(date, "40", 0);
  299. if (sre.Status != Constant.ServiceResultStatus.Success ||
  300. "S" != sre.Result + "")
  301. {
  302. OutputLog.TraceLog(LogPriority.Warning,
  303. "AutoWorkDataToSAP",
  304. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  305. JsonHelper.ToJson(sre),
  306. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  307. }
  308. }
  309. catch (Exception ex)
  310. {
  311. OutputLog.TraceLog(LogPriority.Error,
  312. "AutoWorkDataToSAP",
  313. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  314. ex.ToString(),
  315. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  316. }
  317. }
  318. // 50 烧成
  319. if (funCode == ",ALL," || funCode.Contains(",50,"))
  320. {
  321. try
  322. {
  323. sre = SetWorkData10_50(date, "50", 0);
  324. if (sre.Status != Constant.ServiceResultStatus.Success ||
  325. "S" != sre.Result + "")
  326. {
  327. OutputLog.TraceLog(LogPriority.Warning,
  328. "AutoWorkDataToSAP",
  329. "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  330. JsonHelper.ToJson(sre),
  331. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  332. }
  333. }
  334. catch (Exception ex)
  335. {
  336. OutputLog.TraceLog(LogPriority.Error,
  337. "AutoWorkDataToSAP",
  338. "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  339. ex.ToString(),
  340. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  341. }
  342. }
  343. // 6001 成品明细
  344. if (funCode == ",ALL," || funCode.Contains(",6001,"))
  345. {
  346. try
  347. {
  348. sre = SetFP6001(date, 0);
  349. if (sre.Status != Constant.ServiceResultStatus.Success ||
  350. "S" != sre.Result + "")
  351. {
  352. OutputLog.TraceLog(LogPriority.Warning,
  353. "AutoWorkDataToSAP",
  354. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  355. JsonHelper.ToJson(sre),
  356. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  357. }
  358. }
  359. catch (Exception ex)
  360. {
  361. OutputLog.TraceLog(LogPriority.Error,
  362. "AutoWorkDataToSAP",
  363. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  364. ex.ToString(),
  365. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  366. }
  367. }
  368. // 6001 成品明细(小时)-20分钟
  369. if (funCode == ",6002,")
  370. {
  371. try
  372. {
  373. sre = SetFP6002(date, 0);
  374. if (sre.Status != Constant.ServiceResultStatus.Success ||
  375. "S" != sre.Result + "")
  376. {
  377. OutputLog.TraceLog(LogPriority.Warning,
  378. "AutoWorkDataToSAP",
  379. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  380. JsonHelper.ToJson(sre),
  381. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  382. }
  383. }
  384. catch (Exception ex)
  385. {
  386. OutputLog.TraceLog(LogPriority.Error,
  387. "AutoWorkDataToSAP",
  388. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  389. ex.ToString(),
  390. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  391. }
  392. }
  393. }
  394. /// <summary>
  395. /// 同步SAP数据(自动)(重载)
  396. /// </summary>
  397. /// <param name="date">当前时间</param>
  398. /// <param name="funCode">工序码</param>
  399. /// <param name="ndate">本次要执行到的时间</param>
  400. public static void AutoWorkDataToSAP5000(DateTime date, string funCode, DateTime ndate)
  401. {
  402. if (string.IsNullOrWhiteSpace(funCode))
  403. {
  404. //return;
  405. funCode = "ALL";
  406. }
  407. funCode = "," + funCode + ",";
  408. ServiceResultEntity sre = null;
  409. // 10 模具
  410. if (funCode == ",ALL," || funCode.Contains(",10,"))
  411. {
  412. try
  413. {
  414. sre = SetWorkData10_50_5000("10", 0, ndate);
  415. if (sre.Status != Constant.ServiceResultStatus.Success ||
  416. "S" != sre.Result + "")
  417. {
  418. OutputLog.TraceLog(LogPriority.Warning,
  419. "AutoWorkDataToSAP5000",
  420. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  421. JsonHelper.ToJson(sre),
  422. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  423. }
  424. }
  425. catch (Exception ex)
  426. {
  427. OutputLog.TraceLog(LogPriority.Error,
  428. "AutoWorkDataToSAP5000",
  429. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  430. ex.ToString(),
  431. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  432. }
  433. }
  434. // 20 湿坯
  435. if (funCode == ",ALL," || funCode.Contains(",20,"))
  436. {
  437. try
  438. {
  439. sre = SetWorkData10_50_5000("20", 0, ndate);
  440. if (sre.Status != Constant.ServiceResultStatus.Success ||
  441. "S" != sre.Result + "")
  442. {
  443. OutputLog.TraceLog(LogPriority.Warning,
  444. "AutoWorkDataToSAP5000",
  445. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  446. JsonHelper.ToJson(sre),
  447. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  448. }
  449. }
  450. catch (Exception ex)
  451. {
  452. OutputLog.TraceLog(LogPriority.Error,
  453. "AutoWorkDataToSAP5000",
  454. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  455. ex.ToString(),
  456. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  457. }
  458. }
  459. // 30 精坯
  460. if (funCode == ",ALL," || funCode.Contains(",30,"))
  461. {
  462. try
  463. {
  464. sre = SetWorkData10_50_5000("30", 0, ndate);
  465. if (sre.Status != Constant.ServiceResultStatus.Success ||
  466. "S" != sre.Result + "")
  467. {
  468. OutputLog.TraceLog(LogPriority.Warning,
  469. "AutoWorkDataToSAP5000",
  470. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  471. JsonHelper.ToJson(sre),
  472. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  473. }
  474. }
  475. catch (Exception ex)
  476. {
  477. OutputLog.TraceLog(LogPriority.Error,
  478. "AutoWorkDataToSAP5000",
  479. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  480. ex.ToString(),
  481. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  482. }
  483. }
  484. // 40 釉坯
  485. if (funCode == ",ALL," || funCode.Contains(",40,"))
  486. {
  487. try
  488. {
  489. sre = SetWorkData10_50_5000("40", 0, ndate);
  490. if (sre.Status != Constant.ServiceResultStatus.Success ||
  491. "S" != sre.Result + "")
  492. {
  493. OutputLog.TraceLog(LogPriority.Warning,
  494. "AutoWorkDataToSAP5000",
  495. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  496. JsonHelper.ToJson(sre),
  497. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  498. }
  499. }
  500. catch (Exception ex)
  501. {
  502. OutputLog.TraceLog(LogPriority.Error,
  503. "AutoWorkDataToSAP5000",
  504. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  505. ex.ToString(),
  506. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  507. }
  508. }
  509. // 50 烧成
  510. if (funCode == ",ALL," || funCode.Contains(",50,"))
  511. {
  512. try
  513. {
  514. sre = SetWorkData10_50_5000("50", 0, ndate);
  515. if (sre.Status != Constant.ServiceResultStatus.Success ||
  516. "S" != sre.Result + "")
  517. {
  518. OutputLog.TraceLog(LogPriority.Warning,
  519. "AutoWorkDataToSAP5000",
  520. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  521. JsonHelper.ToJson(sre),
  522. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  523. }
  524. }
  525. catch (Exception ex)
  526. {
  527. OutputLog.TraceLog(LogPriority.Error,
  528. "AutoWorkDataToSAP5000",
  529. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  530. ex.ToString(),
  531. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  532. }
  533. }
  534. // 6001 成品明细
  535. //if (funCode == ",ALL," || funCode.Contains(",6001,"))
  536. //{
  537. // try
  538. // {
  539. // sre = SetFP6001(date, 0);
  540. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  541. // "S" != sre.Result + "")
  542. // {
  543. // OutputLog.TraceLog(LogPriority.Warning,
  544. // "AutoWorkDataToSAP5000",
  545. // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  546. // JsonHelper.ToJson(sre),
  547. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  548. // }
  549. // }
  550. // catch (Exception ex)
  551. // {
  552. // OutputLog.TraceLog(LogPriority.Error,
  553. // "AutoWorkDataToSAP5000",
  554. // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  555. // ex.ToString(),
  556. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  557. // }
  558. //}
  559. //// 6001 成品明细(小时)-20分钟
  560. //if (funCode == ",6002,")
  561. //{
  562. // try
  563. // {
  564. // sre = SetFP6002(date, 0);
  565. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  566. // "S" != sre.Result + "")
  567. // {
  568. // OutputLog.TraceLog(LogPriority.Warning,
  569. // "AutoWorkDataToSAP5000",
  570. // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  571. // JsonHelper.ToJson(sre),
  572. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  573. // }
  574. // }
  575. // catch (Exception ex)
  576. // {
  577. // OutputLog.TraceLog(LogPriority.Error,
  578. // "AutoWorkDataToSAP5000",
  579. // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  580. // ex.ToString(),
  581. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  582. // }
  583. //}
  584. }
  585. /// <summary>
  586. /// 查询同步日志
  587. /// </summary>
  588. /// <param name="cre"></param>
  589. /// <param name="userInfo"></param>
  590. /// <returns></returns>
  591. public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre)
  592. {
  593. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  594. ServiceResultEntity sre = new ServiceResultEntity();
  595. try
  596. {
  597. string sqlString =
  598. "select dl.logid\n" +
  599. " ,dl.logtype\n" +
  600. " ,dl.begintime\n" +
  601. " ,dl.endtime\n" +
  602. " ,dl.yyyymmdd\n" +
  603. " ,dl.workcode\n" +
  604. " ,dl.datacode\n" +
  605. " ,dc.datacodename\n" +
  606. " ,dl.datastuts\n" +
  607. " ,dl.datamsg\n" +
  608. " ,dl.datalogid\n" +
  609. " ,dl.executedatebegin\n" +
  610. " ,dl.executedateend\n" +
  611. " ,u.usercode synusercode\n" +
  612. " from TSAP_HEGII_DATALOG_BG dl\n" +
  613. " inner join tsap_hegii_datacode dc\n" +
  614. " on dc.datacode = dl.datacode\n" +
  615. " left join tp_mst_user u\n" +
  616. " on u.userid = dl.createuserid\n" +
  617. " where dl.logtype IN('2','3')\n" +
  618. " and dl.yyyymmdd >= :DATEBEGIN\n" +
  619. " and dl.yyyymmdd <= :DATEEND\n";
  620. OracleParameter[] oracleParameter = new OracleParameter[]
  621. {
  622. new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  623. new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  624. };
  625. sqlString += "ORDER BY dl.logid DESC\n";
  626. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  627. return sre;
  628. }
  629. catch (Exception ex)
  630. {
  631. throw ex;
  632. }
  633. }
  634. /// <summary>
  635. /// 查询同步明细
  636. /// </summary>
  637. /// <param name="logid"></param>
  638. /// <param name="userInfo"></param>
  639. /// <returns></returns>
  640. public static ServiceResultEntity GetWorkData_BG(int logid)
  641. {
  642. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  643. ServiceResultEntity sre = new ServiceResultEntity();
  644. try
  645. {
  646. string sqlString = "\n" +
  647. "select wd.yyyymmdd\n" +
  648. " ,wd.workcode\n" +
  649. " ,wd.datacode\n" +
  650. " ,dc.datacodename\n" +
  651. " ,wd.goodscode\n" +
  652. " ,wd.sapcode\n" +
  653. " ,wd.usercode\n" +
  654. " ,wd.ordercode\n" +
  655. " ,wd.orderitem\n" +
  656. " ,to_number(wd.outputnum) outputnum\n" +
  657. " ,to_number(wd.scrapnum) scrapnum\n" +
  658. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  659. " ,to_number(wd.recoverynum) recoverynum\n" +
  660. " ,to_number(wd.repairnum) repairnum\n" +
  661. " ,wd.createtime\n" +
  662. " ,wd.ztype\n" +
  663. " ,wd.zmsg\n" +
  664. " ,wd.ztime\n" +
  665. " ,wd.testmouldflag\n" +
  666. " ,wd.zscs\n" +
  667. " ,wd.logid\n" +
  668. " from tsap_hegii_workdata_BG wd\n" +
  669. " inner join tsap_hegii_datacode dc\n" +
  670. " on dc.datacode = wd.datacode\n" +
  671. " where wd.logid = :logid \n" +
  672. " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  673. OracleParameter[] oracleParameter = new OracleParameter[]
  674. {
  675. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  676. };
  677. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  678. return sre;
  679. }
  680. catch (Exception ex)
  681. {
  682. throw ex;
  683. }
  684. }
  685. #endregion
  686. #region 报工移库
  687. /// <summary>
  688. /// 报工移库_同步SAP数据(自动)
  689. /// </summary>
  690. /// <param name="date"></param>
  691. public static void BGYKToSAP(DateTime date, DateTime ndate)
  692. {
  693. IDBTransaction oracleConn = null;
  694. ServiceResultEntity sre = new ServiceResultEntity();
  695. int logid = 0;
  696. string message = string.Empty;
  697. string sqlString = string.Empty;
  698. try
  699. {
  700. #region 生成日志
  701. OracleParameter[] paras = new OracleParameter[]
  702. {
  703. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  704. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  705. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  706. };
  707. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  708. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras);
  709. int.TryParse(paras[1].Value + "", out logid);
  710. message = paras[2].Value + "";
  711. oracleConn.Commit();
  712. #endregion
  713. #region 同步SAP
  714. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  715. //2022年9月8日11:38:51 更改 by fy
  716. //sqlString = @"
  717. //SELECT WERKS,
  718. // MATNR,
  719. // ZJDNU,
  720. // ZSCS,
  721. // ZSCCJ,
  722. // ZSCMS,
  723. // CHARG,
  724. // MENGE,
  725. // ZMLID
  726. // FROM TSAP_HEGII_WORKDATA_BGYK
  727. // WHERE LOGID = :LOGID ";
  728. sqlString = @"SELECT
  729. A.WERKS,
  730. A.MATNR,
  731. A.ZJDNU,
  732. -- A.ZSCS,
  733. 'T' AS ZSCS,
  734. A.ZSCCJ,
  735. A.ZSCMS,
  736. A.CHARG,
  737. A.MENGE,
  738. A.ZMLID,
  739. to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
  740. to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS,
  741. to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT,
  742. to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT,
  743. '' AS ZTYPE1,
  744. '' AS ZMSG1
  745. FROM
  746. TSAP_HEGII_WORKDATA_BGYK A
  747. INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID
  748. WHERE
  749. A.LOGID = :LOGID";
  750. paras = new OracleParameter[]
  751. {
  752. new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input),
  753. };
  754. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  755. //获取报工SAP接口是否开启
  756. sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  757. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  758. if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1")
  759. {
  760. string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGYKToSAP>.ConvertToModel(workData)) + "}}";
  761. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  762. string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034");
  763. //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034";
  764. string result = PostData(url034, postString, "POST");
  765. string ztype = JObject.Parse(result)["ZTYPE"].ToString();
  766. string zmsg = JObject.Parse(result)["ZMSG"].ToString();
  767. sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid";
  768. paras = new OracleParameter[]
  769. {
  770. new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input),
  771. new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input),
  772. new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input),
  773. };
  774. oracleConn.ExecuteNonQuery(sqlString, paras);
  775. oracleConn.Commit();
  776. }
  777. #endregion
  778. }
  779. catch (Exception ex)
  780. {
  781. OutputLog.TraceLog(LogPriority.Error,
  782. "BGYKToSAP",
  783. "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  784. ex.ToString(),
  785. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  786. }
  787. }
  788. /// <summary>
  789. /// 查询同步日志
  790. /// </summary>
  791. /// <param name="cre"></param>
  792. /// <param name="userInfo"></param>
  793. /// <returns></returns>
  794. public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre)
  795. {
  796. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  797. ServiceResultEntity sre = new ServiceResultEntity();
  798. try
  799. {
  800. string sqlString = @"
  801. SELECT DL.LOGID,
  802. DL.BEGINTIME,
  803. DL.ENDTIME,
  804. DL.YYYYMMDD,
  805. DL.ZTYPE,
  806. DL.ZMSG,
  807. U.USERCODE SYNUSERCODE
  808. FROM TSAP_HEGII_DATALOG_BGYK DL
  809. LEFT JOIN TP_MST_USER U
  810. ON U.USERID = DL.CREATEUSERID
  811. WHERE DL.YYYYMMDD >= :DATEBEGIN
  812. AND DL.YYYYMMDD <= :DATEEND ";
  813. OracleParameter[] oracleParameter = new OracleParameter[]
  814. {
  815. new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  816. new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  817. };
  818. sqlString += "ORDER BY dl.logid DESC\n";
  819. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  820. return sre;
  821. }
  822. catch (Exception ex)
  823. {
  824. throw ex;
  825. }
  826. }
  827. /// <summary>
  828. /// 查询同步明细
  829. /// </summary>
  830. /// <param name="logid"></param>
  831. /// <param name="userInfo"></param>
  832. /// <returns></returns>
  833. public static ServiceResultEntity GetWorkData_BGYK(int logid)
  834. {
  835. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  836. ServiceResultEntity sre = new ServiceResultEntity();
  837. try
  838. {
  839. string sqlString = @"
  840. SELECT WERKS,
  841. MATNR,
  842. ZJDNU,
  843. ZSCS,
  844. ZSCCJ,
  845. ZSCMS,
  846. CHARG,
  847. MENGE,
  848. ZMLID
  849. FROM TSAP_HEGII_WORKDATA_BGYK
  850. WHERE LOGID = :LOGID ";
  851. OracleParameter[] oracleParameter = new OracleParameter[]
  852. {
  853. new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input),
  854. };
  855. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  856. return sre;
  857. }
  858. catch (Exception ex)
  859. {
  860. throw ex;
  861. }
  862. }
  863. #endregion
  864. #region PostData 请求
  865. public static string PostData(string url, string data, string method)
  866. {
  867. //将单引号转义成双引号
  868. data = data.Replace("'", "\"");
  869. //创建Web访问对象
  870. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  871. //把用户传过来的数据转成“UTF-8”的字节流
  872. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  873. myRequest.Method = method;
  874. myRequest.ContentLength = buf.Length;
  875. myRequest.ContentType = "application/json;charset=UTF-8";
  876. //myRequest.MaximumAutomaticRedirections = 1;
  877. myRequest.AllowAutoRedirect = true;
  878. //UTF8标准转码加密
  879. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  880. string userName = ini.ReadIniData("SAP_NEW_INFO", "userName");
  881. //userName = "hgsapdk:Sapdk#240";
  882. string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName));
  883. myRequest.Headers.Add("Authorization", "Basic " + base64Header);
  884. //发送请求
  885. Stream stream = myRequest.GetRequestStream();
  886. stream.Write(buf, 0, buf.Length);
  887. stream.Close();
  888. //获取接口返回值
  889. //通过Web访问对象获取响应内容
  890. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  891. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  892. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  893. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  894. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  895. reader.Close();
  896. myResponse.Close();
  897. return returnXml;
  898. }
  899. #endregion
  900. #region 转换
  901. public class ModelConvertHelper<T> where T : new()
  902. {
  903. public static List<T> ConvertToModel(DataTable dt)
  904. {
  905. // 定义集合
  906. List<T> ts = new List<T>();
  907. // 获得此模型的类型
  908. Type type = typeof(T);
  909. string tempName = "";
  910. foreach (DataRow dr in dt.Rows)
  911. {
  912. T t = new T();
  913. // 获得此模型的公共属性
  914. PropertyInfo[] propertys = t.GetType().GetProperties();
  915. foreach (PropertyInfo pi in propertys)
  916. {
  917. tempName = pi.Name;
  918. // 检查DataTable是否包含此列
  919. if (dt.Columns.Contains(tempName))
  920. {
  921. // 判断此属性是否有Setter
  922. if (!pi.CanWrite) continue;
  923. object value = dr[tempName];
  924. if (value != DBNull.Value)
  925. pi.SetValue(t, value, null);
  926. }
  927. }
  928. ts.Add(t);
  929. }
  930. return ts;
  931. }
  932. }
  933. #endregion
  934. }
  935. }