WMSDataLogic.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using Dongke.IBOSS.PRD.Basics.DataAccess;
  5. using Dongke.IBOSS.PRD.Basics.Library;
  6. using Dongke.IBOSS.PRD.Service.DataModels;
  7. using Dongke.IBOSS.PRD.Service.WMSDataService.WMS_putBARCODEData;
  8. using Dongke.IBOSS.PRD.WCF.DataModels;
  9. using Oracle.ManagedDataAccess.Client;
  10. namespace Dongke.IBOSS.PRD.Service.WMSDataService
  11. {
  12. public class WMSDataLogic
  13. {
  14. /// <summary>
  15. /// 同步WMS系统条码
  16. /// </summary>
  17. /// <param name="fpRows"></param>
  18. /// <returns></returns>
  19. public static string PushWMS(DataTable fpData, DateTime now)
  20. {
  21. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  22. string endPointConfigurationName = ini.ReadIniData("WMS_INFO", "EndPointConfigurationName");
  23. string userName = ini.ReadIniData("WMS_INFO", "UserName");
  24. string password = ini.ReadIniData("WMS_INFO", "Password");
  25. wmsResultInfo wmsResult = null;
  26. try
  27. {
  28. string outcode;
  29. string orderitem;
  30. // 主数据
  31. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  32. {
  33. // 登录
  34. wmsSecurityInfo info = new wmsSecurityInfo();
  35. info.username = userName;
  36. info.password = password;
  37. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  38. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  39. wmsBarCodeHeader header = null;
  40. foreach (DataRow row in fpData.Rows)
  41. {
  42. outcode = row["outcode"] + "";
  43. orderitem = row["orderitem"] + "";
  44. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  45. {
  46. orderitem = "000000";
  47. }
  48. header = new wmsBarCodeHeader();
  49. header.SPS = "5020";
  50. header.SKU = row["sapcode"] + "";
  51. header.SerialNO = outcode;
  52. header.SerialNO1 = outcode.Substring(outcode.Length - 10, 10);
  53. header.SerialNO2 = now.ToString("yyyyMMdd");
  54. header.AddDay = now.ToString("yyyyMMdd");
  55. header.AddTime = now.ToString("HHmmss");
  56. header.CODEI = row["barcode"] + "";
  57. header.UDF1 = row["ordercode"] + "";
  58. header.UDF2 = orderitem;
  59. header.AddWho = "HGMESDK";
  60. headers.Add(header);
  61. }
  62. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  63. wmsParamInfo wmsParam = new wmsParamInfo();
  64. wmsParam.customerid = "FLUXWMSSOAP";
  65. wmsParam.messageid = "ZTBARCODE";
  66. wmsParam.stdno = "ZTBARCODE";
  67. wmsParam.warehouseid = "WH01";
  68. string ss = JsonHelper.ToJson(barcodeInfo);
  69. // 参数
  70. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  71. if (wmsResult.returnCode != "0000")
  72. {
  73. return "同步失败:" + wmsResult.returnDesc;
  74. }
  75. }
  76. // 关系数据
  77. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  78. {
  79. // 登录
  80. wmsSecurityInfo info = new wmsSecurityInfo();
  81. info.username = userName;
  82. info.password = password;
  83. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  84. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  85. wmsBarCodeHeader header = null;
  86. foreach (DataRow row in fpData.Rows)
  87. {
  88. outcode = row["outcode"] + "";
  89. orderitem = row["orderitem"] + "";
  90. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  91. {
  92. orderitem = "000000";
  93. }
  94. header = new wmsBarCodeHeader();
  95. header.SPS = "5020";
  96. header.SKU = row["sapcode"] + "";
  97. header.SerialNO = outcode;
  98. header.TraceID = outcode;
  99. header.SerialNO1 = outcode.Substring(outcode.Length - 10, 10);
  100. header.SerialNO2 = now.ToString("yyyyMMdd");
  101. header.AddDay = now.ToString("yyyyMMdd");
  102. header.AddTime = now.ToString("HHmmss");
  103. header.LPN = row["sapflbatchno"] + "";
  104. header.UDF1 = row["ordercode"] + "";
  105. header.UDF2 = orderitem;
  106. header.AddWho = "HGMESDK";
  107. headers.Add(header);
  108. }
  109. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  110. wmsParamInfo wmsParam = new wmsParamInfo();
  111. wmsParam.customerid = "FLUXWMSSOAP";
  112. wmsParam.messageid = "ZPPCODE";
  113. wmsParam.stdno = "ZPPCODE";
  114. wmsParam.warehouseid = "WH01";
  115. // 参数
  116. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  117. if (wmsResult.returnCode != "0000")
  118. {
  119. return "同步失败:" + wmsResult.returnDesc;
  120. }
  121. }
  122. }
  123. catch (Exception ex)
  124. {
  125. return "同步失败:" + ex.Message;
  126. }
  127. return "同步成功";
  128. }
  129. /// <summary>
  130. /// 撤销同步WMS系统的条码
  131. /// </summary>
  132. /// <param name="fpRows"></param>
  133. /// <returns></returns>
  134. public static string BackPushWMS(DataTable fpData, DateTime now)
  135. {
  136. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  137. string endPointConfigurationName = ini.ReadIniData("WMS_INFO", "EndPointConfigurationName");
  138. string userName = ini.ReadIniData("WMS_INFO", "UserName");
  139. string password = ini.ReadIniData("WMS_INFO", "Password");
  140. wmsResultInfo wmsResult = null;
  141. try
  142. {
  143. string outcode;
  144. string orderitem;
  145. // 关系数据
  146. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  147. {
  148. // 登录
  149. wmsSecurityInfo info = new wmsSecurityInfo();
  150. info.username = userName;
  151. info.password = password;
  152. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  153. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  154. wmsBarCodeHeader header = null;
  155. foreach (DataRow row in fpData.Rows)
  156. {
  157. outcode = row["outcode"] + "";
  158. orderitem = row["orderitem"] + "";
  159. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  160. {
  161. orderitem = "000000";
  162. }
  163. header = new wmsBarCodeHeader();
  164. header.SPS = "5020";
  165. header.SKU = row["sapcode"] + "";
  166. header.SerialNO = outcode;
  167. header.TraceID = outcode;
  168. header.SerialNO1 = outcode.Substring(outcode.Length - 10, 10);
  169. header.SerialNO2 = now.ToString("yyyyMMdd");
  170. header.AddDay = now.ToString("yyyyMMdd");
  171. header.AddTime = now.ToString("HHmmss");
  172. header.LPN = row["sapflbatchno"] + "";
  173. header.UDF1 = row["ordercode"] + "";
  174. header.UDF2 = orderitem;
  175. header.UDF5 = "X";
  176. header.AddWho = "HGMESDK";
  177. headers.Add(header);
  178. }
  179. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  180. wmsParamInfo wmsParam = new wmsParamInfo();
  181. wmsParam.customerid = "FLUXWMSSOAP";
  182. wmsParam.messageid = "ZPPCODE";
  183. wmsParam.stdno = "ZPPCODE";
  184. wmsParam.warehouseid = "WH01";
  185. // 参数
  186. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  187. if (wmsResult.returnCode != "0000")
  188. {
  189. return "同步失败:" + wmsResult.returnDesc;
  190. }
  191. }
  192. }
  193. catch (Exception ex)
  194. {
  195. return "同步失败:" + ex.Message;
  196. }
  197. return "同步成功";
  198. }
  199. /// <summary>
  200. /// 手动同步WMS系统条码
  201. /// </summary>
  202. /// <param name="fpRows"></param>
  203. /// <returns></returns>
  204. public static ServiceResultEntity SyncWMSDataLog(ClientRequestEntity cre, SUserInfo userInfo)
  205. {
  206. ServiceResultEntity sre = new ServiceResultEntity();
  207. DataTable dtBarcode = cre.Data.Tables[0];
  208. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  209. string endPointConfigurationName = ini.ReadIniData("WMS_INFO", "EndPointConfigurationName");
  210. string userName = ini.ReadIniData("WMS_INFO", "UserName");
  211. string password = ini.ReadIniData("WMS_INFO", "Password");
  212. wmsResultInfo wmsResult = null;
  213. string serialNO;
  214. DateTime now;
  215. try
  216. {
  217. if ("1".Equals(cre.Properties["LogType"] + ""))
  218. {
  219. // 主数据
  220. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  221. {
  222. // 登录
  223. wmsSecurityInfo info = new wmsSecurityInfo();
  224. info.username = userName;
  225. info.password = password;
  226. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  227. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  228. wmsBarCodeHeader header = null;
  229. foreach (DataRow row in dtBarcode.Rows)
  230. {
  231. now = Convert.ToDateTime(row["CreateTime"]);
  232. serialNO = row["SerialNO"] + "";
  233. header = new wmsBarCodeHeader();
  234. header.SPS = "5020";
  235. header.SKU = row["SKU"] + "";
  236. header.SerialNO = serialNO;
  237. header.SerialNO1 = serialNO.Substring(serialNO.Length - 10, 10);
  238. header.SerialNO2 = now.ToString("yyyyMMdd");
  239. header.AddDay = now.ToString("yyyyMMdd");
  240. header.AddTime = now.ToString("HHmmss");
  241. header.CODEI = row["CODEI"] + "";
  242. header.UDF1 = row["UDF1"] + "";
  243. header.UDF2 = row["UDF2"] + "";
  244. header.AddWho = "HGMESDK";
  245. headers.Add(header);
  246. }
  247. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  248. wmsParamInfo wmsParam = new wmsParamInfo();
  249. wmsParam.customerid = "FLUXWMSSOAP";
  250. wmsParam.messageid = "ZTBARCODE";
  251. wmsParam.stdno = "ZTBARCODE";
  252. wmsParam.warehouseid = "WH01";
  253. // 参数
  254. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  255. if (wmsResult.returnCode != "0000")
  256. {
  257. sre.OtherStatus = -1;
  258. sre.Message = "同步失败:" + wmsResult.returnDesc;
  259. return sre;
  260. }
  261. }
  262. // 关系数据
  263. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  264. {
  265. // 登录
  266. wmsSecurityInfo info = new wmsSecurityInfo();
  267. info.username = userName;
  268. info.password = password;
  269. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  270. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  271. wmsBarCodeHeader header = null;
  272. foreach (DataRow row in dtBarcode.Rows)
  273. {
  274. now = Convert.ToDateTime(row["CreateTime"]);
  275. serialNO = row["SerialNO"] + "";
  276. header = new wmsBarCodeHeader();
  277. header.SPS = "5020";
  278. header.SKU = row["SKU"] + "";
  279. header.SerialNO = serialNO;
  280. header.TraceID = serialNO;
  281. header.SerialNO1 = serialNO.Substring(serialNO.Length - 10, 10);
  282. header.SerialNO2 = now.ToString("yyyyMMdd");
  283. header.AddDay = now.ToString("yyyyMMdd");
  284. header.AddTime = now.ToString("HHmmss");
  285. header.LPN = row["LPN"] + "";
  286. header.UDF1 = row["UDF1"] + "";
  287. header.UDF2 = row["UDF2"] + "";
  288. header.AddWho = "HGMESDK";
  289. headers.Add(header);
  290. }
  291. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  292. wmsParamInfo wmsParam = new wmsParamInfo();
  293. wmsParam.customerid = "FLUXWMSSOAP";
  294. wmsParam.messageid = "ZPPCODE";
  295. wmsParam.stdno = "ZPPCODE";
  296. wmsParam.warehouseid = "WH01";
  297. // 参数
  298. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  299. if (wmsResult.returnCode != "0000")
  300. {
  301. sre.OtherStatus = -1;
  302. sre.Message = "同步失败:" + wmsResult.returnDesc;
  303. return sre;
  304. }
  305. }
  306. }
  307. else
  308. {
  309. // 关系数据
  310. using (ERPWSService2Client wmsClient = new ERPWSService2Client(endPointConfigurationName))
  311. {
  312. // 登录
  313. wmsSecurityInfo info = new wmsSecurityInfo();
  314. info.username = userName;
  315. info.password = password;
  316. wmsBARCODEInfo barcodeInfo = new wmsBARCODEInfo();
  317. List<wmsBarCodeHeader> headers = new List<wmsBarCodeHeader>();
  318. wmsBarCodeHeader header = null;
  319. foreach (DataRow row in dtBarcode.Rows)
  320. {
  321. now = Convert.ToDateTime(row["CreateTime"]);
  322. serialNO = row["SerialNO"] + "";
  323. header = new wmsBarCodeHeader();
  324. header.SPS = "5020";
  325. header.SKU = row["SKU"] + "";
  326. header.SerialNO = serialNO;
  327. header.TraceID = serialNO;
  328. header.SerialNO1 = serialNO.Substring(serialNO.Length - 10, 10);
  329. header.SerialNO2 = now.ToString("yyyyMMdd");
  330. header.AddDay = now.ToString("yyyyMMdd");
  331. header.AddTime = now.ToString("HHmmss");
  332. header.LPN = row["LPN"] + "";
  333. header.UDF1 = row["UDF1"] + "";
  334. header.UDF2 = row["UDF2"] + "";
  335. header.UDF5 = "X";
  336. header.AddWho = "HGMESDK";
  337. headers.Add(header);
  338. }
  339. barcodeInfo.wmsBarCodeHeader = headers.ToArray();
  340. wmsParamInfo wmsParam = new wmsParamInfo();
  341. wmsParam.customerid = "FLUXWMSSOAP";
  342. wmsParam.messageid = "ZPPCODE";
  343. wmsParam.stdno = "ZPPCODE";
  344. wmsParam.warehouseid = "WH01";
  345. // 参数
  346. wmsResult = wmsClient.putBARCODEData(info, barcodeInfo, wmsParam);
  347. if (wmsResult.returnCode != "0000")
  348. {
  349. sre.OtherStatus = -1;
  350. sre.Message = "同步失败:" + wmsResult.returnDesc;
  351. return sre;
  352. }
  353. }
  354. }
  355. }
  356. catch (Exception ex)
  357. {
  358. sre.OtherStatus = -1;
  359. sre.Message = "同步失败:" + ex.Message;
  360. return sre;
  361. }
  362. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  363. string sql = @"
  364. UPDATE TP_WMS_LOG
  365. SET RETURNDESC = '同步成功',
  366. UPDATEUSERID = :USERID
  367. WHERE ACCOUNTID = :ACCOUNTID
  368. AND LOGTYPE = :LOGTYPE
  369. AND CODEI = :CODEI ";
  370. OracleParameter[] Paras;
  371. foreach (DataRow row in dtBarcode.Rows)
  372. {
  373. Paras = new OracleParameter[]
  374. {
  375. new OracleParameter(":USERID",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input),
  376. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,userInfo.AccountID,ParameterDirection.Input),
  377. new OracleParameter(":LOGTYPE",OracleDbType.Char, cre.Properties["LogType"] + "",ParameterDirection.Input),
  378. new OracleParameter(":CODEI",OracleDbType.Varchar2, row["CODEI"], ParameterDirection.Input),
  379. };
  380. oracleTrConn.ExecuteNonQuery(sql, Paras);
  381. }
  382. oracleTrConn.Commit();
  383. oracleTrConn.Disconnect();
  384. sre.OtherStatus = 1;
  385. sre.Message = "同步成功";
  386. return sre;
  387. }
  388. /// <summary>
  389. /// 查询同步日志
  390. /// </summary>
  391. /// <param name="cre"></param>
  392. /// <param name="userInfo"></param>
  393. /// <returns></returns>
  394. public static ServiceResultEntity GetWMSDataLog(ClientRequestEntity cre, SUserInfo userInfo)
  395. {
  396. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  397. ServiceResultEntity sre = new ServiceResultEntity();
  398. try
  399. {
  400. string sqlString = @"
  401. SELECT 0 AS SEL,
  402. WL.LOGID,
  403. WL.LOGTYPE,
  404. DECODE(WL.LOGTYPE, '1', '交接', '撤销') AS LOGTYPENAME,
  405. WL.SKU,
  406. WL.SERIALNO,
  407. WL.ADDDAY,
  408. WL.ADDTIME,
  409. WL.CODEI,
  410. NVL(WL.UDF1, 'hegii') AS UDF1,
  411. WL.UDF2,
  412. WL.LPN,
  413. WL.RETURNDESC,
  414. WL.CREATETIME
  415. FROM TP_WMS_LOG WL
  416. WHERE WL.VALUEFLAG = '1'
  417. AND WL.ACCOUNTID = :ACCOUNTID
  418. AND WL.CREATETIME >= :CREATETIMEBEGIN
  419. AND WL.CREATETIME < :CREATETIMEEND ";
  420. List<OracleParameter> paras = new List<OracleParameter>();
  421. paras.Add(new OracleParameter(":ACCOUNTID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  422. paras.Add(new OracleParameter(":CREATETIMEBEGIN", OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input));
  423. paras.Add(new OracleParameter(":CREATETIMEEND", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input));
  424. if (!string.IsNullOrEmpty(cre.Properties["LogType"] + ""))
  425. {
  426. sqlString += " AND WL.LOGTYPE = :LOGTYPE\n";
  427. paras.Add(new OracleParameter(":LOGTYPE", OracleDbType.NVarchar2, cre.Properties["LogType"], ParameterDirection.Input));
  428. }
  429. if (!string.IsNullOrEmpty(cre.Properties["ReturnDesc"] + ""))
  430. {
  431. sqlString += " AND WL.RETURNDESC LIKE :RETURNDESC\n";
  432. paras.Add(new OracleParameter(":RETURNDESC", OracleDbType.NVarchar2, "%" + cre.Properties["ReturnDesc"] + "%", ParameterDirection.Input));
  433. }
  434. sqlString += " order by WL.CREATETIME";
  435. sre.Data = oracleConn.GetSqlResultToDs(sqlString, paras.ToArray());
  436. return sre;
  437. }
  438. catch (Exception ex)
  439. {
  440. throw ex;
  441. }
  442. }
  443. }
  444. }