BPMDataLogic.cs 67 KB

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