BPMDataLogic.cs 76 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Net;
  7. using System.Runtime.Serialization.Json;
  8. using System.Text;
  9. using System.Web.Script.Serialization;
  10. using System.Xml;
  11. using System.Xml.Serialization;
  12. using Dongke.IBOSS.PRD.Basics.BaseResources;
  13. using Dongke.IBOSS.PRD.Basics.DataAccess;
  14. using Dongke.IBOSS.PRD.Basics.Library;
  15. using Dongke.IBOSS.PRD.Service.BPMDataService.BPMWebService;
  16. using Dongke.IBOSS.PRD.Service.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.DataModels;
  18. using Newtonsoft.Json;
  19. using Newtonsoft.Json.Linq;
  20. using Oracle.ManagedDataAccess.Client;
  21. namespace Dongke.IBOSS.PRD.Service.BPMDataService
  22. {
  23. public class BPMDataLogic
  24. {
  25. /// <summary>
  26. /// 查询报损数据
  27. /// </summary>
  28. /// <param name="cre"></param>
  29. /// <returns></returns>
  30. public static ServiceResultEntity GetDataBARCODEIDNRKSCRAP(ClientRequestEntity cre, SUserInfo userInfo)
  31. {
  32. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  33. ServiceResultEntity sre = new ServiceResultEntity();
  34. try
  35. {
  36. string sqlString = @"SELECT 0 as check1
  37. ,bis.scrapid
  38. ,bis.barcode
  39. ,bis.matnr
  40. ,bis.idnrk
  41. ,bis.meins
  42. ,bis.menge
  43. ,bis.idnrkname
  44. ,bis.idnrkonlycode
  45. ,bis.charg
  46. ,bis.lgort
  47. ,CASE
  48. WHEN bis.scraptype = 1 THEN
  49. '报损'
  50. ELSE
  51. '撤销报损'
  52. END scraptypename ,case WHEN bis.checkflag = 0 THEN '未确认' ELSE '已确认' END checkflagname
  53. ,bis.checktime
  54. ,CASE
  55. WHEN bis.syncflag = 0 THEN
  56. '未同步'
  57. WHEN bis.syncflag = 1 THEN
  58. '已同步'
  59. when bis.syncflag = 2 THEN
  60. 'BPM系统审批不通过'
  61. when bis.syncflag = 3 THEN
  62. 'BPM系统审批通过'
  63. END syncflagname
  64. ,mu.username createusername
  65. ,bis.createtime
  66. ,bis.costcenter
  67. ,bis.costcentername
  68. ,bis.incident
  69. ,bis.documentno
  70. ,bis.errormessage
  71. ,mdd.remarks meinsname
  72. ,bis.scrapreason
  73. FROM tp_pm_barcodeidnrkscrap bis
  74. LEFT JOIN tp_mst_user mu
  75. ON mu.userid = bis.createuserid
  76. LEFT JOIN tp_mst_datadictionary mdd
  77. on mdd.dictionaryvalue = bis.meins and mdd.dictionarytype = 'TPC012'
  78. WHERE bis.createtime >= :dateagin
  79. AND bis.createtime < :dateend
  80. AND bis.valueflag = 1
  81. AND bis.accountid =:accountid
  82. AND (:checkflag is null or :checkflag = '-1' OR instr(',' || :checkflag || ',', ',' || bis.checkflag || ',') > 0)
  83. AND (:syncflag is null or :syncflag = '-1' OR instr(',' || :syncflag || ',', ',' || bis.syncflag || ',') > 0)
  84. Order by bis.createtime desc";
  85. OracleParameter[] oracleParameter = new OracleParameter[]
  86. {
  87. new OracleParameter(":dateagin",OracleDbType.Date, cre.Properties["dateagin"], ParameterDirection.Input),
  88. new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  89. new OracleParameter(":checkflag",OracleDbType.Varchar2, cre.Properties["CheckFlag"], ParameterDirection.Input),
  90. new OracleParameter(":syncflag",OracleDbType.Varchar2, cre.Properties["SyncFlag"], ParameterDirection.Input),
  91. new OracleParameter(":accountid",OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
  92. };
  93. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  94. return sre;
  95. }
  96. catch (Exception ex)
  97. {
  98. throw ex;
  99. }
  100. }
  101. /// <summary>
  102. /// 确认组件报损
  103. /// </summary>
  104. /// <param name="cre"></param>
  105. /// <returns></returns>
  106. public static ServiceResultEntity SaveConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  107. {
  108. ServiceResultEntity sre = new ServiceResultEntity();
  109. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  110. int returnRows = 0;
  111. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  112. try
  113. {
  114. if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0)
  115. {
  116. foreach (DataRow item in IdnrkScrapDt.Rows)
  117. {
  118. string sqlString = @"select 1 from tp_pm_barcodeidnrkscrap bis
  119. where bis.scraptype=1
  120. and bis.checkflag = 0
  121. AND bis.valueflag = 1
  122. and bis.syncflag = 0
  123. and bis.scrapid = :scrapid";
  124. OracleParameter[] Paras = new OracleParameter[] {
  125. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  126. };
  127. DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, Paras);
  128. if (dt == null || dt.Rows.Count == 0)
  129. {
  130. sre.Message = "数据状态已改变!";
  131. sre.OtherStatus = -999;
  132. return sre;
  133. }
  134. sqlString = @"UPDATE tp_pm_barcodeidnrkscrap
  135. SET checkflag = 1
  136. ,updateuserid = :userid
  137. ,checktime = SYSDATE
  138. ,updatetime = SYSDATE
  139. WHERE scrapid = :scrapid
  140. AND scraptype = 1";
  141. Paras = new OracleParameter[] {
  142. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  143. new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input),
  144. };
  145. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  146. }
  147. }
  148. sre.OtherStatus = returnRows;
  149. oracleTrConn.Commit();
  150. }
  151. catch (Exception ex)
  152. {
  153. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  154. {
  155. oracleTrConn.Rollback();
  156. oracleTrConn.Disconnect();
  157. }
  158. throw ex;
  159. }
  160. finally
  161. {
  162. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  163. {
  164. oracleTrConn.Disconnect();
  165. }
  166. }
  167. return sre;
  168. }
  169. /// <summary>
  170. /// 撤销确认组件报损
  171. /// </summary>
  172. /// <param name="cre"></param>
  173. /// <returns></returns>
  174. public static ServiceResultEntity SaveUNConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  175. {
  176. ServiceResultEntity sre = new ServiceResultEntity();
  177. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  178. int returnRows = 0;
  179. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  180. try
  181. {
  182. if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0)
  183. {
  184. foreach (DataRow item in IdnrkScrapDt.Rows)
  185. {
  186. string sqlString = @"UPDATE tp_pm_barcodeidnrkscrap
  187. SET checkflag = 0
  188. ,updateuserid = :userid
  189. ,checktime = null
  190. ,updatetime = SYSDATE
  191. WHERE scrapid = :scrapid
  192. AND scraptype = 1";
  193. OracleParameter[] Paras = new OracleParameter[] {
  194. new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input),
  195. new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input),
  196. };
  197. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  198. }
  199. }
  200. sre.OtherStatus = returnRows;
  201. oracleTrConn.Commit();
  202. }
  203. catch (Exception ex)
  204. {
  205. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  206. {
  207. oracleTrConn.Rollback();
  208. oracleTrConn.Disconnect();
  209. }
  210. throw ex;
  211. }
  212. finally
  213. {
  214. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  215. {
  216. oracleTrConn.Disconnect();
  217. }
  218. }
  219. return sre;
  220. }
  221. /// <summary>
  222. /// 校验同一BPM流程实例报损是否全部勾选
  223. /// </summary>
  224. /// <param name="cre"></param>
  225. /// <param name="userInfo"></param>
  226. /// <returns></returns>
  227. public static ServiceResultEntity CheckScrap(ClientRequestEntity cre, SUserInfo userInfo)
  228. {
  229. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  230. ServiceResultEntity sre = new ServiceResultEntity();
  231. try
  232. {
  233. string sqlString = @"SELECT 1
  234. FROM tp_pm_barcodeidnrkscrap bis
  235. INNER JOIN (SELECT bs.incident
  236. FROM tp_pm_barcodeidnrkscrap bs
  237. WHERE instr( :scrapids , ',' || bs.scrapid || ',') > 0
  238. AND bs.valueflag = 1
  239. ) t
  240. ON bis.incident = t.incident
  241. WHERE bis.valueflag = 1
  242. AND bis.accountid = :accountid
  243. AND instr( :scrapids , ',' || bis.scrapid || ',') <= 0";
  244. OracleParameter[] oracleParameter = new OracleParameter[]
  245. {
  246. new OracleParameter(":scrapids",OracleDbType.Varchar2, cre.Properties["SCRAPIDs"], ParameterDirection.Input),
  247. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  248. };
  249. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  250. return sre;
  251. }
  252. catch (Exception ex)
  253. {
  254. throw ex;
  255. }
  256. }
  257. /// <summary>
  258. /// 同步bpm
  259. /// </summary>
  260. /// <param name="cre"></param>
  261. /// <param name="userInfo"></param>
  262. /// <returns></returns>
  263. public static ServiceResultEntity SynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  264. {
  265. ServiceResultEntity sre = new ServiceResultEntity();
  266. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  267. int returnRows = 0;
  268. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  269. try
  270. {
  271. #region 首次推送
  272. DataRow[] drs = IdnrkScrapDt.Select("INCIDENT is null");
  273. if (drs.Length > 0)
  274. {
  275. string scrapids = ",";
  276. foreach (DataRow item in IdnrkScrapDt.Rows)
  277. {
  278. scrapids += item["SCRAPID"].ToString() + ",";
  279. }
  280. //校验是否存在状态改变数据
  281. string sqlString = @"SELECT 1
  282. FROM tp_pm_barcodeidnrkscrap bis
  283. WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0
  284. AND bis.accountid = :accountid
  285. AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag =1 OR bis.scraptype = 2 OR
  286. bis.incident IS NOT NULL)";
  287. OracleParameter[] oracleParameter = new OracleParameter[]
  288. {
  289. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  290. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  291. };
  292. DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  293. if (NoneDt != null && NoneDt.Rows.Count > 0)
  294. {
  295. sre.Status = Constant.ServiceResultStatus.DataChanged;
  296. sre.Message = "数据状态已被修改!";
  297. return sre;
  298. }
  299. //生成推送数据
  300. sqlString = @"
  301. SELECT WMSYS.WM_CONCAT(BIS.SCRAPID) SCRAPIDS,
  302. BIS.IDNRK,
  303. BIS.IDNRKNAME,
  304. SUM(MENGE) MENGE,
  305. BIS.MEINS,
  306. MDD.REMARKS MEINSNAME,
  307. BIS.LGORT,
  308. BIS.CHARG,
  309. BIS.INCIDENT,
  310. BIS.COSTCENTER,
  311. BIS.COSTCENTERNAME
  312. FROM TP_PM_BARCODEIDNRKSCRAP BIS
  313. LEFT JOIN TP_MST_DATADICTIONARY MDD
  314. ON MDD.DICTIONARYVALUE = BIS.MEINS
  315. AND MDD.DICTIONARYTYPE = 'TPC012'
  316. WHERE INSTR(:SCRAPIDS, ',' || BIS.SCRAPID || ',') > 0
  317. AND BIS.VALUEFLAG = 1
  318. GROUP BY BIS.IDNRK,
  319. BIS.IDNRKNAME,
  320. MEINS,
  321. MDD.REMARKS,
  322. BIS.LGORT,
  323. BIS.INCIDENT,
  324. BIS.CHARG,
  325. BIS.COSTCENTER,
  326. BIS.COSTCENTERNAME ";
  327. oracleParameter = new OracleParameter[]
  328. {
  329. new OracleParameter(":SCRAPIDS",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  330. };
  331. DataTable dtNoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  332. if (dtNoneInfo != null && dtNoneInfo.Rows.Count > 0)
  333. {
  334. string strResult = PushBPM(dtNoneInfo);
  335. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  336. string isSeccess = "0";//bpm 同步失败
  337. if (data["Result"].ToString() == "1")
  338. {
  339. isSeccess = "1";
  340. //更新报损履历
  341. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  342. SET syncflag = :syncflag
  343. ,errormessage = :message
  344. ,documentno = :documentno
  345. ,incident = :incident
  346. WHERE instr(',' || :scrapids || ',',',' || scrapid || ',') > 0";
  347. foreach (DataRow item in dtNoneInfo.Rows)
  348. {
  349. oracleParameter = new OracleParameter[]
  350. {
  351. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  352. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  353. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  354. new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input),
  355. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  356. };
  357. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  358. }
  359. }
  360. else
  361. {
  362. // //更新报损履历
  363. // sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  364. //SET syncflag = :syncflag
  365. // ,errormessage = :message
  366. // ,incident = :incident
  367. // WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  368. // foreach (DataRow item in dtNoneInfo.Rows)
  369. // {
  370. // oracleParameter = new OracleParameter[]
  371. // {
  372. // new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  373. // new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  374. // new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  375. // new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  376. // };
  377. // returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  378. // }
  379. sre.OtherStatus = -1;
  380. sre.Message = data["ErrorMessage"].ToString();
  381. return sre;
  382. }
  383. }
  384. }
  385. #endregion
  386. #region 再次推送
  387. DataRow[] pushagin = IdnrkScrapDt.Select("INCIDENT is not null");
  388. if (pushagin.Length > 0)
  389. {
  390. string scrapids = ",";
  391. foreach (DataRow item in IdnrkScrapDt.Rows)
  392. {
  393. scrapids += item["SCRAPID"].ToString() + ",";
  394. }
  395. //校验是否存在状态改变数据
  396. string sqlString = @"SELECT 1
  397. FROM tp_pm_barcodeidnrkscrap bis
  398. WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0
  399. AND bis.accountid = :accountid
  400. AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag = 1 OR bis.scraptype = 2 OR
  401. bis.incident IS NULL)";
  402. OracleParameter[] oracleParameter = new OracleParameter[]
  403. {
  404. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  405. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  406. };
  407. DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  408. if (NoneDt != null && NoneDt.Rows.Count > 0)
  409. {
  410. sre.Status = Constant.ServiceResultStatus.DataChanged;
  411. sre.Message = "数据状态已被修改!";
  412. return sre;
  413. }
  414. //获取推送数据
  415. sqlString = @"
  416. SELECT WMSYS.WM_CONCAT(BIS.SCRAPID) SCRAPIDS,
  417. BIS.IDNRK,
  418. BIS.IDNRKNAME,
  419. SUM(MENGE) MENGE,
  420. BIS.MEINS,
  421. MDD.REMARKS MEINSNAME,
  422. BIS.LGORT,
  423. BIS.CHARG,
  424. BIS.INCIDENT,
  425. BIS.COSTCENTER,
  426. BIS.COSTCENTERNAME
  427. FROM TP_PM_BARCODEIDNRKSCRAP BIS
  428. LEFT JOIN TP_MST_DATADICTIONARY MDD
  429. ON MDD.DICTIONARYVALUE = BIS.MEINS
  430. AND MDD.DICTIONARYTYPE = 'TPC012'
  431. WHERE INSTR(:SCRAPIDS, ',' || BIS.SCRAPID || ',') > 0
  432. AND BIS.VALUEFLAG = 1
  433. GROUP BY BIS.IDNRK,
  434. BIS.IDNRKNAME,
  435. MEINS,
  436. MDD.REMARKS,
  437. BIS.LGORT,
  438. BIS.INCIDENT,
  439. BIS.CHARG,
  440. BIS.COSTCENTER,
  441. BIS.COSTCENTERNAME ";
  442. oracleParameter = new OracleParameter[]
  443. {
  444. new OracleParameter(":SCRAPIDS",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  445. };
  446. DataTable dtNoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  447. if (dtNoneInfo != null && dtNoneInfo.Rows.Count > 0)
  448. {
  449. string strResult = PushBPM(dtNoneInfo);
  450. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  451. string isSeccess = "0";//bpm 审批不通过
  452. if (data["Result"].ToString() == "1")
  453. {
  454. isSeccess = "1";
  455. //更新报损履历
  456. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  457. SET syncflag = :syncflag
  458. ,errormessage = :message
  459. ,documentno = :documentno
  460. ,incident = :incident
  461. WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  462. foreach (DataRow item in dtNoneInfo.Rows)
  463. {
  464. oracleParameter = new OracleParameter[]
  465. {
  466. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  467. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  468. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  469. new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input),
  470. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  471. };
  472. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  473. }
  474. }
  475. else
  476. {
  477. // //更新报损履历
  478. // sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  479. //SET syncflag = :syncflag
  480. // ,errormessage = :message
  481. // ,incident = :incident
  482. // WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0";
  483. // oracleParameter = new OracleParameter[]
  484. // {
  485. // new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  486. // new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  487. // new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  488. // new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  489. // };
  490. sre.OtherStatus = -1;
  491. sre.Message = data["ErrorMessage"].ToString();
  492. return sre;
  493. }
  494. }
  495. }
  496. #endregion
  497. sre.OtherStatus = returnRows;
  498. oracleTrConn.Commit();
  499. }
  500. catch (Exception ex)
  501. {
  502. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  503. {
  504. oracleTrConn.Rollback();
  505. oracleTrConn.Disconnect();
  506. }
  507. throw ex;
  508. }
  509. finally
  510. {
  511. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  512. {
  513. oracleTrConn.Disconnect();
  514. }
  515. }
  516. return sre;
  517. }
  518. /// <summary>
  519. /// 撤销bpm同步数据
  520. /// </summary>
  521. /// <param name="cre"></param>
  522. /// <param name="userInfo"></param>
  523. /// <returns></returns>
  524. public static ServiceResultEntity CancelSynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo)
  525. {
  526. ServiceResultEntity sre = new ServiceResultEntity();
  527. DataTable IdnrkScrapDt = cre.Data.Tables[0];
  528. int returnRows = 0;
  529. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  530. try
  531. {
  532. string scrapids = ",";
  533. foreach (DataRow item in IdnrkScrapDt.Rows)
  534. {
  535. scrapids += item["SCRAPID"].ToString() + ",";
  536. }
  537. //获取待撤销bpm 实例号
  538. string sqlString = @"SELECT wmsys.wm_concat(bis.scrapid) scrapids
  539. ,bis.incident
  540. FROM tp_pm_barcodeidnrkscrap bis
  541. WHERE instr( :scrapids ,',' || bis.scrapid || ',') > 0
  542. AND bis.valueflag = 1
  543. AND bis.syncflag = 1
  544. group by incident";
  545. OracleParameter[] oracleParameter = new OracleParameter[]
  546. {
  547. new OracleParameter(":scrapids",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input),
  548. };
  549. DataTable Info = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  550. if (Info != null && Info.Rows.Count > 0)
  551. {
  552. foreach (DataRow item in Info.Rows)
  553. {
  554. string strResult = CancelPushBPM(Convert.ToInt32(item["incident"]));
  555. Dictionary<string, object> data = JsonConvert.DeserializeObject<Dictionary<string, object>>(strResult);
  556. string isSeccess = "0";//bpm 审批不通过
  557. if (data["Result"].ToString() == "1")
  558. {
  559. isSeccess = "0";
  560. //更新报损履历
  561. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  562. SET syncflag = :syncflag
  563. ,errormessage = :message
  564. ,incident = :incident
  565. WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0";
  566. oracleParameter = new OracleParameter[]
  567. {
  568. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  569. new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input),
  570. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  571. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  572. };
  573. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  574. }
  575. else
  576. {
  577. //更新报损履历
  578. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  579. SET
  580. errormessage = :message
  581. ,incident = :incident
  582. WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0";
  583. oracleParameter = new OracleParameter[]
  584. {
  585. new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input),
  586. new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input),
  587. new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input),
  588. };
  589. oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  590. sre.Message = data["ErrorMessage"].ToString();
  591. sre.OtherStatus = -999;
  592. }
  593. }
  594. }
  595. sre.OtherStatus = returnRows;
  596. oracleTrConn.Commit();
  597. }
  598. catch (Exception ex)
  599. {
  600. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  601. {
  602. oracleTrConn.Rollback();
  603. oracleTrConn.Disconnect();
  604. }
  605. throw ex;
  606. }
  607. finally
  608. {
  609. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  610. {
  611. oracleTrConn.Disconnect();
  612. }
  613. }
  614. return sre;
  615. }
  616. /// <summary>
  617. /// 查询成本中心(BPM)
  618. /// </summary>
  619. /// <param name="cre"></param>
  620. /// <param name="userInfo"></param>
  621. /// <returns></returns>
  622. public static ServiceResultEntity GetCostCenter(ClientRequestEntity cre, SUserInfo userInfo)
  623. {
  624. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  625. ServiceResultEntity sre = new ServiceResultEntity();
  626. try
  627. {
  628. string sqlString = @"SELECT 0 check1
  629. ,t.dictionaryvalue COSTCENTER
  630. ,t.remarks COSTCENTERNAME
  631. FROM tp_mst_datadictionary t
  632. WHERE t.valueflag = 1
  633. AND t.dictionarytype = 'TPC013'
  634. AND t.accountid = :accountid
  635. AND (:dictionaryvalue IS NULL OR :dictionaryvalue = '' OR
  636. instr(t.dictionaryvalue, :dictionaryvalue) > 0)
  637. AND (:remark IS NULL OR :remark = '' OR instr(t.remarks, :remark) > 0)";
  638. OracleParameter[] oracleParameter = new OracleParameter[]
  639. {
  640. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  641. new OracleParameter(":dictionaryvalue",OracleDbType.Varchar2, cre.Properties["CostCenter"], ParameterDirection.Input),
  642. new OracleParameter(":remark",OracleDbType.Varchar2, cre.Properties["CostcenterName"], ParameterDirection.Input),
  643. };
  644. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  645. return sre;
  646. }
  647. catch (Exception ex)
  648. {
  649. throw ex;
  650. }
  651. }
  652. /// <summary>
  653. /// 保存报损履历成本中心
  654. /// </summary>
  655. /// <param name="cre"></param>
  656. /// <param name="userInfo"></param>
  657. /// <returns></returns>
  658. public static ServiceResultEntity SaveCostCenter(ClientRequestEntity cre, SUserInfo userInfo)
  659. {
  660. ServiceResultEntity sre = new ServiceResultEntity();
  661. int returnRows = 0;
  662. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  663. string sqlString = string.Empty;
  664. try
  665. {
  666. string CostCenter = cre.Properties["CostCenter"].ToString();
  667. string CostCenterName = cre.Properties["CostCenterName"].ToString();
  668. DataTable data = cre.Data.Tables[0];
  669. DataRow[] rows = data.Select("INCIDENT is null");
  670. if (rows.Length > 0)
  671. {
  672. foreach (DataRow item in rows)
  673. {
  674. sqlString = @"update TP_PM_BARCODEIDNRKSCRAP
  675. set COSTCENTERNAME =:COSTCENTERNAME
  676. ,costcenter = :costcenter
  677. where SCRAPID = :SCRAPID";
  678. OracleParameter[] oracleParameter = new OracleParameter[]
  679. {
  680. new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input),
  681. new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input),
  682. new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input),
  683. };
  684. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  685. }
  686. }
  687. //BPM流程实例,相同实例数据同时更新
  688. DataRow[] drs = data.Select("INCIDENT is not null");
  689. if (drs.Length > 0)
  690. {
  691. string SCRAPIDs = ",";
  692. //传入拼接报损履历主键id
  693. foreach (DataRow item in drs)
  694. {
  695. SCRAPIDs += item["SCRAPID"].ToString() + ",";
  696. }
  697. //查询报损履历数据
  698. sqlString = @"SELECT bs.scrapid
  699. ,bs.idnrk
  700. ,bs.incident
  701. FROM tp_pm_barcodeidnrkscrap bs
  702. INNER JOIN (SELECT bis.idnrk
  703. ,bis.incident
  704. FROM tp_pm_barcodeidnrkscrap bis
  705. WHERE instr( ',' || :scrapids || ',', ',' || bis.scrapid || ',') > 0
  706. GROUP BY bis.idnrk
  707. ,bis.incident) t
  708. ON bs.idnrk = t.idnrk
  709. AND bs.incident = t.incident";
  710. OracleParameter[] oracleParameter = new OracleParameter[]
  711. {
  712. new OracleParameter(":scrapids",OracleDbType.Int32, SCRAPIDs, ParameterDirection.Input),
  713. };
  714. DataTable bsdt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  715. if (bsdt != null && bsdt.Rows.Count > 0)
  716. {
  717. foreach (DataRow item in bsdt.Rows)
  718. {
  719. sqlString = @"update TP_PM_BARCODEIDNRKSCRAP
  720. set COSTCENTERNAME =:COSTCENTERNAME
  721. ,costcenter = :costcenter
  722. where SCRAPID = :SCRAPID";
  723. oracleParameter = new OracleParameter[]
  724. {
  725. new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input),
  726. new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input),
  727. new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input),
  728. };
  729. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  730. }
  731. }
  732. }
  733. sre.OtherStatus = returnRows;
  734. oracleTrConn.Commit();
  735. }
  736. catch (Exception ex)
  737. {
  738. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  739. {
  740. oracleTrConn.Rollback();
  741. oracleTrConn.Disconnect();
  742. }
  743. throw ex;
  744. }
  745. finally
  746. {
  747. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  748. {
  749. oracleTrConn.Disconnect();
  750. }
  751. }
  752. return sre;
  753. }
  754. /// <summary>
  755. /// 新建报损履历
  756. /// </summary>
  757. /// <param name="cre"></param>
  758. /// <param name="userInfo"></param>
  759. /// <returns></returns>
  760. public static ServiceResultEntity AddIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo)
  761. {
  762. ServiceResultEntity sre = new ServiceResultEntity();
  763. int returnRows = 0;
  764. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  765. string sqlString = string.Empty;
  766. try
  767. {
  768. string IDNRK = cre.Properties["IDNRK"].ToString();//组件编码
  769. string MEINS = cre.Properties["MEINS"].ToString();//组件单位
  770. decimal MENGE = Convert.ToDecimal(cre.Properties["MENGE"]);//报损数量
  771. string IDNRKNAME = cre.Properties["IDNRKNAME"].ToString();//组件名称
  772. string LGORT = cre.Properties["LGORT"].ToString();//库存点
  773. string BARCODE = cre.Properties["BARCODE"].ToString();//产品条码
  774. string MATNR = cre.Properties["MATNR"].ToString();//物料编码
  775. string IDNRKONLYCODE = cre.Properties["IDNRKONLYCODE"].ToString();//唯一编码
  776. string CHARG = cre.Properties["CHARG"].ToString();//批次
  777. sqlString = @"
  778. INSERT INTO tp_pm_barcodeidnrkscrap
  779. (
  780. barcode
  781. ,matnr
  782. ,idnrk
  783. ,meins
  784. ,menge
  785. ,idnrkname
  786. ,idnrkonlycode
  787. ,charg
  788. ,lgort
  789. ,accountid
  790. ,procedureid
  791. ,createuserid
  792. ,updateuserid)
  793. VALUES
  794. (
  795. :barcode
  796. ,:matnr
  797. ,:idnrk
  798. ,:meins
  799. ,:menge
  800. ,:idnrkname
  801. ,:idnrkonlycode
  802. ,:charg
  803. ,:lgort
  804. ,:accountid
  805. ,-1
  806. ,:createuserid
  807. ,:updateuserid)";
  808. OracleParameter[] oracleParameter = new OracleParameter[]
  809. {
  810. new OracleParameter(":barcode",OracleDbType.NVarchar2, BARCODE, ParameterDirection.Input),
  811. new OracleParameter(":matnr",OracleDbType.NVarchar2, MATNR, ParameterDirection.Input),
  812. new OracleParameter(":idnrk",OracleDbType.NVarchar2, IDNRK, ParameterDirection.Input),
  813. new OracleParameter(":meins",OracleDbType.NVarchar2, MEINS, ParameterDirection.Input),
  814. new OracleParameter(":menge",OracleDbType.Decimal, MENGE, ParameterDirection.Input),
  815. new OracleParameter(":idnrkname",OracleDbType.NVarchar2, IDNRKNAME, ParameterDirection.Input),
  816. new OracleParameter(":idnrkonlycode",OracleDbType.NVarchar2, IDNRKONLYCODE, ParameterDirection.Input),
  817. new OracleParameter(":charg",OracleDbType.NVarchar2, CHARG, ParameterDirection.Input),
  818. new OracleParameter(":lgort",OracleDbType.NVarchar2, LGORT, ParameterDirection.Input),
  819. new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  820. new OracleParameter(":createuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  821. new OracleParameter(":updateuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  822. };
  823. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  824. sre.OtherStatus = returnRows;
  825. oracleTrConn.Commit();
  826. }
  827. catch (Exception ex)
  828. {
  829. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  830. {
  831. oracleTrConn.Rollback();
  832. oracleTrConn.Disconnect();
  833. }
  834. throw ex;
  835. }
  836. finally
  837. {
  838. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  839. {
  840. oracleTrConn.Disconnect();
  841. }
  842. }
  843. return sre;
  844. }
  845. /// <summary>
  846. /// 查询编辑报损数据信息
  847. /// </summary>
  848. /// <param name="cre"></param>
  849. /// <param name="userInfo"></param>
  850. /// <returns></returns>
  851. public static ServiceResultEntity GetIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo)
  852. {
  853. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  854. ServiceResultEntity sre = new ServiceResultEntity();
  855. try
  856. {
  857. int scrapid = Convert.ToInt32(cre.Properties["scrapid"]);
  858. string sqlString = @" SELECT bis.scrapid
  859. ,bis.barcode
  860. ,bis.matnr
  861. ,bis.idnrk
  862. ,bis.meins
  863. ,bis.menge
  864. ,bis.idnrkname
  865. ,bis.idnrkonlycode
  866. ,bis.charg
  867. ,bis.lgort
  868. FROM tp_pm_barcodeidnrkscrap bis
  869. where bis.scrapid =:scrapid";
  870. OracleParameter[] oracleParameter = new OracleParameter[]
  871. {
  872. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input),
  873. };
  874. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  875. }
  876. catch (Exception ex)
  877. {
  878. throw ex;
  879. }
  880. return sre;
  881. }
  882. /// <summary>
  883. /// 查询组件编码信息
  884. /// </summary>
  885. /// <param name="cre"></param>
  886. /// <param name="userInfo"></param>
  887. /// <returns></returns>
  888. public static ServiceResultEntity GetIdnrkCode(ClientRequestEntity cre, SUserInfo userInfo)
  889. {
  890. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  891. ServiceResultEntity sre = new ServiceResultEntity();
  892. try
  893. {
  894. string sqlString = @"SELECT pb.IDNRK
  895. ,pb.MEINS
  896. ,pb.name IDNRKNAME
  897. FROM tp_mst_packingbomdetail pb
  898. WHERE pb.valueflag = 1
  899. AND pb.accountid = :accountid
  900. AND (:idnrk is null or :idnrk='' or instr(pb.idnrk,:idnrk)>0)
  901. AND (:idnrkname is null or :idnrkname='' or instr(pb.name,:idnrkname)>0)
  902. GROUP BY pb.idnrk
  903. ,pb.meins
  904. ,pb.name";
  905. OracleParameter[] oracleParameter = new OracleParameter[]
  906. {
  907. new OracleParameter(":accountid",OracleDbType.NVarchar2, userInfo.AccountID, ParameterDirection.Input),
  908. new OracleParameter(":idnrk",OracleDbType.NVarchar2, cre.Properties["IDNRK"], ParameterDirection.Input),
  909. new OracleParameter(":idnrkname",OracleDbType.NVarchar2, cre.Properties["IDNRKNAME"], ParameterDirection.Input),
  910. };
  911. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  912. }
  913. catch (Exception ex)
  914. {
  915. throw ex;
  916. }
  917. return sre;
  918. }
  919. /// <summary>
  920. /// 编辑报损履历
  921. /// </summary>
  922. /// <param name="cre"></param>
  923. /// <param name="userInfo"></param>
  924. /// <returns></returns>
  925. public static ServiceResultEntity UpdateIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo)
  926. {
  927. ServiceResultEntity sre = new ServiceResultEntity();
  928. int returnRows = 0;
  929. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  930. string sqlString = string.Empty;
  931. try
  932. {
  933. int scrapid = Convert.ToInt32(cre.Properties["scrapid"]);
  934. string IDNRK = cre.Properties["IDNRK"].ToString();//组件编码
  935. string MEINS = cre.Properties["MEINS"].ToString();//单位
  936. decimal MENGE = Convert.ToDecimal(cre.Properties["MENGE"]);//数量
  937. string IDNRKNAME = cre.Properties["IDNRKNAME"].ToString();//组件名称
  938. string IDNRKONLYCODE = cre.Properties["IDNRKONLYCODE"].ToString();//组件唯一编码
  939. string CHARG = cre.Properties["CHARG"].ToString();//批次
  940. string LGORT = cre.Properties["LGORT"].ToString();//库存地点
  941. string BARCODE = cre.Properties["BARCODE"].ToString();//产品条码
  942. string MATNR = cre.Properties["MATNR"].ToString();//物料编码
  943. //校验数据状态是否改变
  944. sqlString = @"SELECT bis.checkflag
  945. FROM tp_pm_barcodeidnrkscrap bis
  946. WHERE bis.scrapid = :scrapid
  947. AND bis.valueflag = 1";
  948. OracleParameter[] oracleParameter = new OracleParameter[]
  949. {
  950. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input),
  951. };
  952. DataTable checkDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  953. if (checkDt != null && checkDt.Rows.Count > 0)
  954. {
  955. if (checkDt.Rows[0]["checkflag"].ToString() == "1")
  956. {
  957. sre.Message = "报损数据状态已改变!";
  958. sre.OtherStatus = -999;
  959. return sre;
  960. }
  961. }
  962. else
  963. {
  964. sre.Message = "报损数据状态已改变!";
  965. sre.OtherStatus = -999;
  966. return sre;
  967. }
  968. //编辑
  969. sqlString = @" UPDATE tp_pm_barcodeidnrkscrap
  970. SET barcode = :barcode
  971. ,matnr = :matnr
  972. ,idnrk = :idnrk
  973. ,meins = :meins
  974. ,menge = :menge
  975. ,idnrkname = :idnrkname
  976. ,idnrkonlycode = :idnrkonlycode
  977. ,charg = :charg
  978. ,lgort = :lgort
  979. ,updateuserid = :updateuserid
  980. ,updatetime = SYSDATE
  981. WHERE scrapid = :scrapid";
  982. oracleParameter = new OracleParameter[]
  983. {
  984. new OracleParameter(":barcode",OracleDbType.NVarchar2, BARCODE, ParameterDirection.Input),
  985. new OracleParameter(":matnr",OracleDbType.NVarchar2, MATNR, ParameterDirection.Input),
  986. new OracleParameter(":scrapid",OracleDbType.Int32, scrapid, ParameterDirection.Input),
  987. new OracleParameter(":idnrk",OracleDbType.NVarchar2, IDNRK, ParameterDirection.Input),
  988. new OracleParameter(":meins",OracleDbType.NVarchar2, MEINS, ParameterDirection.Input),
  989. new OracleParameter(":menge",OracleDbType.Decimal, MENGE, ParameterDirection.Input),
  990. new OracleParameter(":idnrkname",OracleDbType.NVarchar2, IDNRKNAME, ParameterDirection.Input),
  991. new OracleParameter(":idnrkonlycode",OracleDbType.NVarchar2, IDNRKONLYCODE, ParameterDirection.Input),
  992. new OracleParameter(":charg",OracleDbType.NVarchar2, CHARG, ParameterDirection.Input),
  993. new OracleParameter(":lgort",OracleDbType.NVarchar2, LGORT, ParameterDirection.Input),
  994. new OracleParameter(":updateuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  995. };
  996. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  997. sre.OtherStatus = returnRows;
  998. oracleTrConn.Commit();
  999. }
  1000. catch (Exception ex)
  1001. {
  1002. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1003. {
  1004. oracleTrConn.Rollback();
  1005. oracleTrConn.Disconnect();
  1006. }
  1007. throw ex;
  1008. }
  1009. finally
  1010. {
  1011. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1012. {
  1013. oracleTrConn.Disconnect();
  1014. }
  1015. }
  1016. return sre;
  1017. }
  1018. /// <summary>
  1019. /// 删除报损履历
  1020. /// </summary>
  1021. /// <param name="cre"></param>
  1022. /// <param name="userInfo"></param>
  1023. /// <returns></returns>
  1024. public static ServiceResultEntity DeleteIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo)
  1025. {
  1026. ServiceResultEntity sre = new ServiceResultEntity();
  1027. int returnRows = 0;
  1028. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1029. string sqlString = string.Empty;
  1030. try
  1031. {
  1032. DataTable dt = cre.Data.Tables[0];
  1033. foreach (DataRow item in dt.Rows)
  1034. {
  1035. int scrapid = Convert.ToInt32(item["scrapid"]);
  1036. //校验数据状态是否改变
  1037. sqlString = @"SELECT bis.checkflag
  1038. FROM tp_pm_barcodeidnrkscrap bis
  1039. WHERE bis.scrapid = :scrapid
  1040. AND bis.valueflag = 1";
  1041. OracleParameter[] oracleParameter = new OracleParameter[]
  1042. {
  1043. new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input),
  1044. };
  1045. DataTable checkDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  1046. if (checkDt != null && checkDt.Rows.Count > 0)
  1047. {
  1048. if (checkDt.Rows[0]["checkflag"].ToString() == "1")
  1049. {
  1050. sre.Message = "报损数据状态已改变!";
  1051. sre.OtherStatus = -999;
  1052. return sre;
  1053. }
  1054. }
  1055. else
  1056. {
  1057. sre.Message = "报损数据状态已改变!";
  1058. sre.OtherStatus = -999;
  1059. return sre;
  1060. }
  1061. //删除
  1062. sqlString = @"UPDATE tp_pm_barcodeidnrkscrap
  1063. SET valueflag = 0
  1064. WHERE scrapid = :scrapid";
  1065. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  1066. }
  1067. sre.OtherStatus = returnRows;
  1068. oracleTrConn.Commit();
  1069. }
  1070. catch (Exception ex)
  1071. {
  1072. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1073. {
  1074. oracleTrConn.Rollback();
  1075. oracleTrConn.Disconnect();
  1076. }
  1077. throw ex;
  1078. }
  1079. finally
  1080. {
  1081. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1082. {
  1083. oracleTrConn.Disconnect();
  1084. }
  1085. }
  1086. return sre;
  1087. }
  1088. /// <summary>
  1089. /// 查询中台日志
  1090. /// </summary>
  1091. /// <param name="cre"></param>
  1092. /// <returns></returns>
  1093. public static ServiceResultEntity GetZhongTaiDataLog(ClientRequestEntity cre, SUserInfo userInfo)
  1094. {
  1095. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1096. ServiceResultEntity sre = new ServiceResultEntity();
  1097. List<OracleParameter> paras = new List<OracleParameter>();
  1098. try
  1099. {
  1100. string sqlString = @"
  1101. SELECT FP.BARCODE,
  1102. GDD.MATERIALCODE,
  1103. GDD.OUTLABELCODE,
  1104. GDD.FIRSTFHDATE,
  1105. GDD.FIRSTFHNO,
  1106. FP.FHTIME,
  1107. FP.TOZHONGTAIFLAG,
  1108. FP.TOZHONGTAITIME,
  1109. FP.ZHONGTAIMSG
  1110. FROM TP_PM_FINISHEDPRODUCT FP
  1111. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1112. ON GDD.GROUTINGDAILYDETAILID = FP.GROUTINGDAILYDETAILID
  1113. WHERE FP.accountid = :ACCOUNTID
  1114. AND FP.FHTIME >= :FHTIMEBEGIN
  1115. AND FP.FHTIME < :FHTIMEEND ";
  1116. paras.Add(new OracleParameter(":ACCOUNTID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  1117. paras.Add(new OracleParameter(":FHTIMEBEGIN", OracleDbType.Date, cre.Properties["FhtimeBegin"], ParameterDirection.Input));
  1118. paras.Add(new OracleParameter(":FHTIMEEND", OracleDbType.Date, cre.Properties["FhtimeEnd"], ParameterDirection.Input));
  1119. if (!string.IsNullOrEmpty(cre.Properties["ToZhongTaiFlag"] + ""))
  1120. {
  1121. sqlString += " AND FP.TOZHONGTAIFLAG = :TOZHONGTAIFLAG ";
  1122. paras.Add(new OracleParameter(":TOZHONGTAIFLAG", OracleDbType.Varchar2, cre.Properties["ToZhongTaiFlag"], ParameterDirection.Input));
  1123. }
  1124. if (!string.IsNullOrEmpty(cre.Properties["ZhongTaiMsg"] + ""))
  1125. {
  1126. sqlString += " AND FP.ZHONGTAIMSG LIKE :ZHONGTAIMSG ";
  1127. paras.Add(new OracleParameter(":ZHONGTAIMSG", OracleDbType.NVarchar2, "%" + cre.Properties["ZhongTaiMsg"] + "%", ParameterDirection.Input));
  1128. }
  1129. sqlString += " ORDER BY FP.FHTIME, FP.BARCODE ";
  1130. sre.Data = oracleConn.GetSqlResultToDs(sqlString, paras.ToArray());
  1131. return sre;
  1132. }
  1133. catch (Exception ex)
  1134. {
  1135. sre.OtherStatus = -1;
  1136. sre.Message = ex.Message;
  1137. return sre;
  1138. }
  1139. }
  1140. /// <summary>
  1141. /// 同步中台日志
  1142. /// </summary>
  1143. /// <param name="cre"></param>
  1144. /// <returns></returns>
  1145. public static ServiceResultEntity SyncZhongTaiData(ClientRequestEntity cre)
  1146. {
  1147. ServiceResultEntity sre = new ServiceResultEntity();
  1148. try
  1149. {
  1150. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  1151. string urlZhongTai = ini.ReadIniData("ZhongTai", "urlZhongTai");
  1152. //string urlZhongTai = "http://localhost:62172/api/ZhongTai/ashxSyncZhongTai.ashx";
  1153. string syncDate = cre.Properties["SyncDate"].ToString();
  1154. string result = PostData(urlZhongTai, "{\"SyncDate\": \""+ syncDate + "\"}", "POST");
  1155. JObject obj = JObject.Parse(result);
  1156. sre.OtherStatus = 1;
  1157. sre.Message = "同步结果," + obj["message"].ToString();
  1158. return sre;
  1159. }
  1160. catch (Exception ex)
  1161. {
  1162. sre.Result = -2;
  1163. sre.Message = "同步失败," + ex.Message;
  1164. return sre;
  1165. }
  1166. }
  1167. /// <summary>
  1168. /// 查询昆船WMS日志
  1169. /// </summary>
  1170. /// <param name="cre"></param>
  1171. /// <returns></returns>
  1172. public static ServiceResultEntity GetKunChuanDataLog(ClientRequestEntity cre, SUserInfo userInfo)
  1173. {
  1174. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1175. ServiceResultEntity sre = new ServiceResultEntity();
  1176. List<OracleParameter> paras = new List<OracleParameter>();
  1177. try
  1178. {
  1179. string sqlString = @"
  1180. SELECT FP.YYYYMMDD,
  1181. FP.BARCODE,
  1182. FP.SAPCODE,
  1183. FP.OUTCODE,
  1184. FP.CREATETIME,
  1185. NVL(FP.BANMA, FP.SAPFLBATCHNO) AS BANMA,
  1186. FP.ORDERCODE,
  1187. FP.ORDERITEM,
  1188. FP.SECURITYCODE,
  1189. FP.TOKUNCHUANFLAG,
  1190. FP.KUNCHUANMSG,
  1191. FP.TOKUNCHUANTIME
  1192. FROM TSAP_HEGII_FINISHEDPRODUCT FP
  1193. WHERE FP.ZTYPE = 'S'
  1194. AND FP.CREATETIME >= :FHTIMEBEGIN
  1195. AND FP.CREATETIME < :FHTIMEEND ";
  1196. paras.Add(new OracleParameter(":FHTIMEBEGIN", OracleDbType.Date, cre.Properties["FhtimeBegin"], ParameterDirection.Input));
  1197. paras.Add(new OracleParameter(":FHTIMEEND", OracleDbType.Date, cre.Properties["FhtimeEnd"], ParameterDirection.Input));
  1198. if (!string.IsNullOrEmpty(cre.Properties["ToKunChuanFlag"] + ""))
  1199. {
  1200. sqlString += " AND FP.TOKUNCHUANFLAG = :TOKUNCHUANFLAG ";
  1201. paras.Add(new OracleParameter(":TOKUNCHUANFLAG", OracleDbType.Varchar2, cre.Properties["ToKunChuanFlag"], ParameterDirection.Input));
  1202. }
  1203. if (!string.IsNullOrEmpty(cre.Properties["KunChuanMsg"] + ""))
  1204. {
  1205. sqlString += " AND FP.KUNCHUANMSG LIKE :KUNCHUANMSG ";
  1206. paras.Add(new OracleParameter(":KUNCHUANMSG", OracleDbType.NVarchar2, "%" + cre.Properties["KunChuanMsg"] + "%", ParameterDirection.Input));
  1207. }
  1208. sqlString += " ORDER BY FP.SAPFLBATCHNO, FP.OUTCODE ";
  1209. sre.Data = oracleConn.GetSqlResultToDs(sqlString, paras.ToArray());
  1210. return sre;
  1211. }
  1212. catch (Exception ex)
  1213. {
  1214. sre.OtherStatus = -1;
  1215. sre.Message = ex.Message;
  1216. return sre;
  1217. }
  1218. }
  1219. /// <summary>
  1220. /// 同步昆船WMS日志
  1221. /// </summary>
  1222. /// <param name="cre"></param>
  1223. /// <returns></returns>
  1224. public static ServiceResultEntity SyncKunChuanData(ClientRequestEntity cre)
  1225. {
  1226. ServiceResultEntity sre = new ServiceResultEntity();
  1227. try
  1228. {
  1229. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  1230. string urlKunChuan = ini.ReadIniData("KunChuan", "urlKunChuan");
  1231. //string urlKunChuan = "http://localhost:62172/api/KunChuan/ashxSyncKunChuan.ashx";
  1232. string syncDate = cre.Properties["SyncDate"].ToString();
  1233. string result = PostData(urlKunChuan, "{\"SyncDate\": \"" + syncDate + "\"}", "POST");
  1234. JObject obj = JObject.Parse(result);
  1235. sre.OtherStatus = 1;
  1236. sre.Message = "同步结果," + obj["message"].ToString();
  1237. return sre;
  1238. }
  1239. catch (Exception ex)
  1240. {
  1241. sre.Result = -2;
  1242. sre.Message = "同步失败," + ex.Message;
  1243. return sre;
  1244. }
  1245. }
  1246. #region 私有方法
  1247. /// <summary>
  1248. /// 同步BPM系统条码
  1249. /// </summary>
  1250. /// <returns></returns>
  1251. private static string PushBPM(DataTable dtNoneInfo)
  1252. {
  1253. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  1254. //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName");
  1255. try
  1256. {
  1257. using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap"))
  1258. {
  1259. string token = "HEGIITOKEN";
  1260. string userAccount = "MES001";
  1261. string Processname = "Inventory Material Scrap And Adjustment Process";
  1262. int Incident = 0;
  1263. if (!string.IsNullOrEmpty(dtNoneInfo.Rows[0]["Incident"] + ""))
  1264. {
  1265. Incident = Convert.ToInt32(dtNoneInfo.Rows[0]["Incident"]);
  1266. }
  1267. BPMDetailOneEntity pars1 = new BPMDetailOneEntity();
  1268. pars1.REQUESTDATE = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
  1269. pars1.DOCUMENTTYPE = "报废及回收";
  1270. pars1.COMPANYNUMBER = "5000";
  1271. pars1.REMARK = "";
  1272. pars1.APPLICATEMPNO = "MES001";
  1273. pars1.APPLICANTEMPNAME = "MES001";
  1274. pars1.EFFECTIVEDATE = DateTime.Now.Date.ToString("yyyy/MM/dd");
  1275. //pars1.Add("REQUESTDATE", DateTime.Now);
  1276. //pars1.Add("DOCUMENTTYPE", "报废及回收");
  1277. //pars1.Add("COMPANYNUMBER", "5000");
  1278. //pars1.Add("REMARK", "");
  1279. //pars1.Add("APPLICATEMPNO", "MES001");
  1280. //pars1.Add("APPLICANTEMPNAME", "MES001");
  1281. //pars1.Add("EFFECTIVEDATE", DateTime.Now.Date);
  1282. List<PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT> listPars2 = new List<PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT>();
  1283. PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT pars2 = null;
  1284. for (int i = 0; i < dtNoneInfo.Rows.Count; i++)
  1285. {
  1286. pars2 = new PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT();
  1287. pars2.ROWID = i + 1;
  1288. pars2.PROCESSINGTYPE = "551";
  1289. pars2.STDMODE = dtNoneInfo.Rows[i]["IDNRK"].ToString();
  1290. pars2.PRODUCTNAME = dtNoneInfo.Rows[i]["IDNRKNAME"].ToString();
  1291. pars2.QUANTITY = Convert.ToDecimal(dtNoneInfo.Rows[i]["MENGE"]);
  1292. pars2.UNIT = dtNoneInfo.Rows[i]["MEINS"].ToString();
  1293. pars2.UNITNAME = dtNoneInfo.Rows[i]["meinsname"].ToString();
  1294. pars2.FACTORY = "5000";
  1295. pars2.STORAGELOCATION = dtNoneInfo.Rows[i]["LGORT"].ToString();
  1296. pars2.SALENUMBER = "";
  1297. pars2.ITEMNUMBER = "";
  1298. pars2.BATCHNUMBER = dtNoneInfo.Rows[i]["CHARG"].ToString();
  1299. pars2.COSTCENTERNAME = dtNoneInfo.Rows[i]["COSTCENTERNAME"].ToString();
  1300. pars2.COSTCENTER = dtNoneInfo.Rows[i]["COSTCENTER"].ToString();
  1301. pars2.REMARK = "";
  1302. //pars2.Add("ROWID", i + 1);
  1303. //pars2.Add("PROCESSINGTYPE", "551"); //处理类型
  1304. //pars2.Add("STDMODE", dtNoneInfo.Rows[i]["IDNRK"].ToString()); //物料编码(组件编码)
  1305. //pars2.Add("PRODUCTNAME", dtNoneInfo.Rows[i]["IDNRKNAME"].ToString()); //物料描述(组件名称)
  1306. //pars2.Add("QUANTITY", Convert.ToDecimal(dtNoneInfo.Rows[i]["MENGE"])); //数量
  1307. //pars2.Add("UNIT", dtNoneInfo.Rows[i]["MEINS"].ToString()); //单位
  1308. //pars2.Add("UNITNAME", dtNoneInfo.Rows[i]["meinsname"].ToString()); //单位名称
  1309. //pars2.Add("FACTORY", "5000");
  1310. //pars2.Add("STORAGELOCATION", dtNoneInfo.Rows[i]["LGORT"].ToString()); //存放库位(线边仓位号)
  1311. //pars2.Add("SALENUMBER", "");
  1312. //pars2.Add("ITEMNUMBER", "");
  1313. //pars2.Add("BATCHNUMBER", dtNoneInfo.Rows[i]["CHARG"].ToString()); //批次号
  1314. //pars2.Add("COSTCENTERNAME", "");
  1315. //pars2.Add("COSTCENTER", "");
  1316. //pars2.Add("REMARK", "");
  1317. listPars2.Add(pars2);
  1318. }
  1319. BPMDetailThreeEntity pars3 = new BPMDetailThreeEntity();
  1320. pars3.ROWID = "";
  1321. pars3.FILEURL = "";
  1322. pars3.FILENAME = "";
  1323. //pars3.Add("ROWID", "");
  1324. //pars3.Add("FILEURL", "");
  1325. //pars3.Add("FILENAME", "");
  1326. BPMEntity body = new BPMEntity();
  1327. body.PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT = pars1;
  1328. body.XXXXXXXXX = listPars2;
  1329. body.PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_ATTACT_DT = pars3;
  1330. //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT", pars1);
  1331. //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT", listPars2.ToArray());
  1332. //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_ATTACT_DT", pars3);
  1333. //Hashtable ds = new Hashtable();
  1334. //ds.Add("NewDataSet", body);
  1335. string mm = JsonHelper.ToJson(body);
  1336. //string XmlData = Json2Xml(mm).OuterXml;
  1337. string XmlData = ObjectToXml(body).Replace("<XXXXXXXXX>", "").Replace("</XXXXXXXXX>", "");
  1338. // 参数
  1339. string result = bpmClient.SubmitProcess(token, userAccount, XmlData, Processname, Incident);
  1340. return result;
  1341. }
  1342. }
  1343. catch (Exception ex)
  1344. {
  1345. return "同步失败:" + ex.Message;
  1346. }
  1347. }
  1348. /// <summary>
  1349. /// 撤销BPM系统同步数据
  1350. /// </summary>
  1351. /// <param name="Incident"></param>
  1352. /// <returns></returns>
  1353. private static string CancelPushBPM(int Incident)
  1354. {
  1355. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  1356. //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName");
  1357. try
  1358. {
  1359. using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap"))
  1360. {
  1361. string token = "HEGIITOKEN";
  1362. string userAccount = "MES001";
  1363. string Processname = "Inventory Material Scrap And Adjustment Process";
  1364. // 参数
  1365. string result = bpmClient.ReturnProcess(token, userAccount, Processname, Incident);
  1366. return result;
  1367. }
  1368. }
  1369. catch (Exception ex)
  1370. {
  1371. return "同步失败:" + ex.Message;
  1372. }
  1373. }
  1374. ///// <summary>
  1375. ///// json字符串转换为Xml对象
  1376. ///// </summary>
  1377. ///// <param name="sJson"></param>
  1378. ///// <returns></returns>
  1379. //private static XmlDocument Json2Xml(string sJson)
  1380. //{
  1381. // //XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), XmlDictionaryReaderQuotas.Max);
  1382. // //XmlDocument doc = new XmlDocument();
  1383. // //doc.Load(reader);
  1384. // try
  1385. // {
  1386. // JavaScriptSerializer oSerializer = new JavaScriptSerializer();
  1387. // Dictionary<string, object> Dic = (Dictionary<string, object>)oSerializer.DeserializeObject(sJson);
  1388. // XmlDocument doc = new XmlDocument();
  1389. // XmlDeclaration xmlDec;
  1390. // xmlDec = doc.CreateXmlDeclaration("1.0", "gb2312", "yes");
  1391. // doc.InsertBefore(xmlDec, doc.DocumentElement);
  1392. // XmlElement nRoot = doc.CreateElement("NewDataSet");
  1393. // doc.AppendChild(nRoot);
  1394. // foreach (KeyValuePair<string, object> item in Dic)
  1395. // {
  1396. // XmlElement element = doc.CreateElement(item.Key);
  1397. // KeyValue2Xml(element, item);
  1398. // nRoot.AppendChild(element);
  1399. // }
  1400. // return doc;
  1401. // }
  1402. // catch (Exception ex)
  1403. // {
  1404. // throw ex;
  1405. // }
  1406. //}
  1407. //private static void KeyValue2Xml(XmlElement node, KeyValuePair<string, object> Source)
  1408. //{
  1409. // try
  1410. // {
  1411. // object kValue = Source.Value;
  1412. // if (kValue.GetType() == typeof(Dictionary<string, object>))
  1413. // {
  1414. // foreach (KeyValuePair<string, object> item in kValue as Dictionary<string, object>)
  1415. // {
  1416. // XmlElement element = node.OwnerDocument.CreateElement(item.Key);
  1417. // KeyValue2Xml(element, item);
  1418. // node.AppendChild(element);
  1419. // }
  1420. // }
  1421. // else if (kValue.GetType() == typeof(object[]))
  1422. // {
  1423. // object[] o = kValue as object[];
  1424. // for (int i = 0; i < o.Length; i++)
  1425. // {
  1426. // XmlElement xitem = node.OwnerDocument.CreateElement("Item");
  1427. // KeyValuePair<string, object> item = new KeyValuePair<string, object>("Item", o);
  1428. // KeyValue2Xml(xitem, item);
  1429. // node.AppendChild(xitem);
  1430. // }
  1431. // }
  1432. // else
  1433. // {
  1434. // XmlText text = node.OwnerDocument.CreateTextNode(kValue.ToString());
  1435. // node.AppendChild(text);
  1436. // }
  1437. // }
  1438. // catch (Exception ex)
  1439. // {
  1440. // throw ex;
  1441. // }
  1442. //}
  1443. /// <summary>
  1444. /// 泛型对象转换成xml
  1445. /// </summary>
  1446. /// <param name="obj">对象</param>
  1447. /// <returns></returns>
  1448. private static string ObjectToXml<T>(T obj)
  1449. {
  1450. if (obj == null)
  1451. {
  1452. return "";
  1453. }
  1454. using (MemoryStream stream = new MemoryStream())
  1455. {
  1456. XmlSerializer xml = new XmlSerializer(obj.GetType());
  1457. xml.Serialize(stream, obj);
  1458. stream.Position = 0;
  1459. StreamReader sr = new StreamReader(stream);
  1460. string str = sr.ReadToEnd();
  1461. return str;
  1462. }
  1463. }
  1464. ///// <summary>
  1465. ///// Json转Xml格式
  1466. ///// </summary>
  1467. ///// <param name="strJson"></param>
  1468. ///// <returns></returns>
  1469. //private static string JsonToXml(string json)
  1470. //{
  1471. // string xml = string.Empty;
  1472. // XmlDocument xmlDoc = new XmlDocument();
  1473. // try
  1474. // {
  1475. // XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), XmlDictionaryReaderQuotas.Max);
  1476. // xmlDoc.Load(xmlReader);
  1477. // //json转xml
  1478. // XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "no");
  1479. // //创建xml声明
  1480. // xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); //插入xml声明
  1481. // //xmlDoc.AppendChild(xmlDec);
  1482. // //添加xml声明
  1483. // }
  1484. // catch (Exception ex)
  1485. // {
  1486. // //
  1487. // }
  1488. // return xmlDoc.OuterXml; //xml转string
  1489. //}
  1490. /// <summary>
  1491. /// POST数据
  1492. /// </summary>
  1493. /// <param name="url"></param>
  1494. /// <param name="data"></param>
  1495. /// <param name="method"></param>
  1496. /// <returns></returns>
  1497. private static string PostData(string url, string data, string method)
  1498. {
  1499. //将单引号转义成双引号
  1500. data = data.Replace("'", "\"");
  1501. //创建Web访问对象
  1502. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  1503. //把用户传过来的数据转成“UTF-8”的字节流
  1504. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  1505. myRequest.Method = method;
  1506. myRequest.ContentLength = buf.Length;
  1507. myRequest.ContentType = "application/json;charset=UTF-8";
  1508. myRequest.AllowAutoRedirect = true;
  1509. //发送请求
  1510. Stream stream = myRequest.GetRequestStream();
  1511. stream.Write(buf, 0, buf.Length);
  1512. stream.Close();
  1513. //获取接口返回值
  1514. //通过Web访问对象获取响应内容
  1515. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  1516. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  1517. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  1518. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  1519. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  1520. reader.Close();
  1521. myResponse.Close();
  1522. return returnXml;
  1523. }
  1524. #endregion
  1525. }
  1526. }