using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; using System.Net; using System.Runtime.Serialization.Json; using System.Text; using System.Web.Script.Serialization; using System.Xml; using System.Xml.Serialization; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.DataAccess; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Service.BPMDataService.BPMWebService; using Dongke.IBOSS.PRD.Service.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Oracle.ManagedDataAccess.Client; namespace Dongke.IBOSS.PRD.Service.BPMDataService { public class BPMDataLogic { /// /// 查询报损数据 /// /// /// public static ServiceResultEntity GetDataBARCODEIDNRKSCRAP(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = @"SELECT 0 as check1 ,bis.scrapid ,bis.barcode ,bis.matnr ,bis.idnrk ,bis.meins ,bis.menge ,bis.idnrkname ,bis.idnrkonlycode ,bis.charg ,bis.lgort ,CASE WHEN bis.scraptype = 1 THEN '报损' ELSE '撤销报损' END scraptypename ,case WHEN bis.checkflag = 0 THEN '未确认' ELSE '已确认' END checkflagname ,bis.checktime ,CASE WHEN bis.syncflag = 0 THEN '未同步' WHEN bis.syncflag = 1 THEN '已同步' when bis.syncflag = 2 THEN 'BPM系统审批不通过' when bis.syncflag = 3 THEN 'BPM系统审批通过' END syncflagname ,mu.username createusername ,bis.createtime ,bis.costcenter ,bis.costcentername ,bis.incident ,bis.documentno ,bis.errormessage ,mdd.remarks meinsname ,bis.scrapreason FROM tp_pm_barcodeidnrkscrap bis LEFT JOIN tp_mst_user mu ON mu.userid = bis.createuserid LEFT JOIN tp_mst_datadictionary mdd on mdd.dictionaryvalue = bis.meins and mdd.dictionarytype = 'TPC012' WHERE bis.createtime >= :dateagin AND bis.createtime < :dateend AND bis.valueflag = 1 AND bis.accountid =:accountid AND (:checkflag is null or :checkflag = '-1' OR instr(',' || :checkflag || ',', ',' || bis.checkflag || ',') > 0) AND (:syncflag is null or :syncflag = '-1' OR instr(',' || :syncflag || ',', ',' || bis.syncflag || ',') > 0) Order by bis.createtime desc"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":dateagin",OracleDbType.Date, cre.Properties["dateagin"], ParameterDirection.Input), new OracleParameter(":dateend",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input), new OracleParameter(":checkflag",OracleDbType.Varchar2, cre.Properties["CheckFlag"], ParameterDirection.Input), new OracleParameter(":syncflag",OracleDbType.Varchar2, cre.Properties["SyncFlag"], ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 确认组件报损 /// /// /// public static ServiceResultEntity SaveConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); DataTable IdnrkScrapDt = cre.Data.Tables[0]; int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0) { foreach (DataRow item in IdnrkScrapDt.Rows) { string sqlString = @"select 1 from tp_pm_barcodeidnrkscrap bis where bis.scraptype=1 and bis.checkflag = 0 AND bis.valueflag = 1 and bis.syncflag = 0 and bis.scrapid = :scrapid"; OracleParameter[] Paras = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input), }; DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, Paras); if (dt == null || dt.Rows.Count == 0) { sre.Message = "数据状态已改变!"; sre.OtherStatus = -999; return sre; } sqlString = @"UPDATE tp_pm_barcodeidnrkscrap SET checkflag = 1 ,updateuserid = :userid ,checktime = SYSDATE ,updatetime = SYSDATE WHERE scrapid = :scrapid AND scraptype = 1"; Paras = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras); } } sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 撤销确认组件报损 /// /// /// public static ServiceResultEntity SaveUNConfirmIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); DataTable IdnrkScrapDt = cre.Data.Tables[0]; int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { if (IdnrkScrapDt != null && IdnrkScrapDt.Rows.Count > 0) { foreach (DataRow item in IdnrkScrapDt.Rows) { string sqlString = @"UPDATE tp_pm_barcodeidnrkscrap SET checkflag = 0 ,updateuserid = :userid ,checktime = null ,updatetime = SYSDATE WHERE scrapid = :scrapid AND scraptype = 1"; OracleParameter[] Paras = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.Int32,Convert.ToInt32( item["SCRAPID"]),ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32,userInfo.UserID,ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, Paras); } } sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 校验同一BPM流程实例报损是否全部勾选 /// /// /// /// public static ServiceResultEntity CheckScrap(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = @"SELECT 1 FROM tp_pm_barcodeidnrkscrap bis INNER JOIN (SELECT bs.incident FROM tp_pm_barcodeidnrkscrap bs WHERE instr( :scrapids , ',' || bs.scrapid || ',') > 0 AND bs.valueflag = 1 ) t ON bis.incident = t.incident WHERE bis.valueflag = 1 AND bis.accountid = :accountid AND instr( :scrapids , ',' || bis.scrapid || ',') <= 0"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.Varchar2, cre.Properties["SCRAPIDs"], ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 同步bpm /// /// /// /// public static ServiceResultEntity SynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); DataTable IdnrkScrapDt = cre.Data.Tables[0]; int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { #region 首次推送 DataRow[] drs = IdnrkScrapDt.Select("INCIDENT is null"); if (drs.Length > 0) { string scrapids = ","; foreach (DataRow item in IdnrkScrapDt.Rows) { scrapids += item["SCRAPID"].ToString() + ","; } //校验是否存在状态改变数据 string sqlString = @"SELECT 1 FROM tp_pm_barcodeidnrkscrap bis WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0 AND bis.accountid = :accountid AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag =1 OR bis.scraptype = 2 OR bis.incident IS NOT NULL)"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input), new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input), }; DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (NoneDt != null && NoneDt.Rows.Count > 0) { sre.Status = Constant.ServiceResultStatus.DataChanged; sre.Message = "数据状态已被修改!"; return sre; } //生成推送数据 sqlString = @" SELECT WMSYS.WM_CONCAT(BIS.SCRAPID) SCRAPIDS, BIS.IDNRK, BIS.IDNRKNAME, SUM(MENGE) MENGE, BIS.MEINS, MDD.REMARKS MEINSNAME, BIS.LGORT, BIS.CHARG, BIS.INCIDENT, BIS.COSTCENTER, BIS.COSTCENTERNAME FROM TP_PM_BARCODEIDNRKSCRAP BIS LEFT JOIN TP_MST_DATADICTIONARY MDD ON MDD.DICTIONARYVALUE = BIS.MEINS AND MDD.DICTIONARYTYPE = 'TPC012' WHERE INSTR(:SCRAPIDS, ',' || BIS.SCRAPID || ',') > 0 AND BIS.VALUEFLAG = 1 GROUP BY BIS.IDNRK, BIS.IDNRKNAME, MEINS, MDD.REMARKS, BIS.LGORT, BIS.INCIDENT, BIS.CHARG, BIS.COSTCENTER, BIS.COSTCENTERNAME "; oracleParameter = new OracleParameter[] { new OracleParameter(":SCRAPIDS",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input), }; DataTable dtNoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (dtNoneInfo != null && dtNoneInfo.Rows.Count > 0) { string strResult = PushBPM(dtNoneInfo); Dictionary data = JsonConvert.DeserializeObject>(strResult); string isSeccess = "0";//bpm 同步失败 if (data["Result"].ToString() == "1") { isSeccess = "1"; //更新报损履历 sqlString = @" UPDATE tp_pm_barcodeidnrkscrap SET syncflag = :syncflag ,errormessage = :message ,documentno = :documentno ,incident = :incident WHERE instr(',' || :scrapids || ',',',' || scrapid || ',') > 0"; foreach (DataRow item in dtNoneInfo.Rows) { oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input), new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input), new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } } else { // //更新报损履历 // sqlString = @" UPDATE tp_pm_barcodeidnrkscrap //SET syncflag = :syncflag // ,errormessage = :message // ,incident = :incident // WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0"; // foreach (DataRow item in dtNoneInfo.Rows) // { // oracleParameter = new OracleParameter[] // { // new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), // new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input), // new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), // new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), // }; // returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); // } sre.OtherStatus = -1; sre.Message = data["ErrorMessage"].ToString(); return sre; } } } #endregion #region 再次推送 DataRow[] pushagin = IdnrkScrapDt.Select("INCIDENT is not null"); if (pushagin.Length > 0) { string scrapids = ","; foreach (DataRow item in IdnrkScrapDt.Rows) { scrapids += item["SCRAPID"].ToString() + ","; } //校验是否存在状态改变数据 string sqlString = @"SELECT 1 FROM tp_pm_barcodeidnrkscrap bis WHERE instr(:scrapid,',' || bis.scrapid || ',') > 0 AND bis.accountid = :accountid AND (valueflag = 0 OR checkflag = 0 OR bis.syncflag = 1 OR bis.scraptype = 2 OR bis.incident IS NULL)"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input), new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input), }; DataTable NoneDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (NoneDt != null && NoneDt.Rows.Count > 0) { sre.Status = Constant.ServiceResultStatus.DataChanged; sre.Message = "数据状态已被修改!"; return sre; } //获取推送数据 sqlString = @" SELECT WMSYS.WM_CONCAT(BIS.SCRAPID) SCRAPIDS, BIS.IDNRK, BIS.IDNRKNAME, SUM(MENGE) MENGE, BIS.MEINS, MDD.REMARKS MEINSNAME, BIS.LGORT, BIS.CHARG, BIS.INCIDENT, BIS.COSTCENTER, BIS.COSTCENTERNAME FROM TP_PM_BARCODEIDNRKSCRAP BIS LEFT JOIN TP_MST_DATADICTIONARY MDD ON MDD.DICTIONARYVALUE = BIS.MEINS AND MDD.DICTIONARYTYPE = 'TPC012' WHERE INSTR(:SCRAPIDS, ',' || BIS.SCRAPID || ',') > 0 AND BIS.VALUEFLAG = 1 GROUP BY BIS.IDNRK, BIS.IDNRKNAME, MEINS, MDD.REMARKS, BIS.LGORT, BIS.INCIDENT, BIS.CHARG, BIS.COSTCENTER, BIS.COSTCENTERNAME "; oracleParameter = new OracleParameter[] { new OracleParameter(":SCRAPIDS",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input), }; DataTable dtNoneInfo = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (dtNoneInfo != null && dtNoneInfo.Rows.Count > 0) { string strResult = PushBPM(dtNoneInfo); Dictionary data = JsonConvert.DeserializeObject>(strResult); string isSeccess = "0";//bpm 审批不通过 if (data["Result"].ToString() == "1") { isSeccess = "1"; //更新报损履历 sqlString = @" UPDATE tp_pm_barcodeidnrkscrap SET syncflag = :syncflag ,errormessage = :message ,documentno = :documentno ,incident = :incident WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0"; foreach (DataRow item in dtNoneInfo.Rows) { oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input), new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), new OracleParameter(":documentno",OracleDbType.NVarchar2, data["DOCUMENTNO"].ToString(),ParameterDirection.Input), new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } } else { // //更新报损履历 // sqlString = @" UPDATE tp_pm_barcodeidnrkscrap //SET syncflag = :syncflag // ,errormessage = :message // ,incident = :incident // WHERE instr( ',' || :scrapids || ',',',' || scrapid || ',') > 0"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), // new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input), // new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), // new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), // }; sre.OtherStatus = -1; sre.Message = data["ErrorMessage"].ToString(); return sre; } } } #endregion sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 撤销bpm同步数据 /// /// /// /// public static ServiceResultEntity CancelSynIdnrkScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); DataTable IdnrkScrapDt = cre.Data.Tables[0]; int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { string scrapids = ","; foreach (DataRow item in IdnrkScrapDt.Rows) { scrapids += item["SCRAPID"].ToString() + ","; } //获取待撤销bpm 实例号 string sqlString = @"SELECT wmsys.wm_concat(bis.scrapid) scrapids ,bis.incident FROM tp_pm_barcodeidnrkscrap bis WHERE instr( :scrapids ,',' || bis.scrapid || ',') > 0 AND bis.valueflag = 1 AND bis.syncflag = 1 group by incident"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.NVarchar2, scrapids, ParameterDirection.Input), }; DataTable Info = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (Info != null && Info.Rows.Count > 0) { foreach (DataRow item in Info.Rows) { string strResult = CancelPushBPM(Convert.ToInt32(item["incident"])); Dictionary data = JsonConvert.DeserializeObject>(strResult); string isSeccess = "0";//bpm 审批不通过 if (data["Result"].ToString() == "1") { isSeccess = "0"; //更新报损履历 sqlString = @" UPDATE tp_pm_barcodeidnrkscrap SET syncflag = :syncflag ,errormessage = :message ,incident = :incident WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0"; oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), new OracleParameter(":syncflag",OracleDbType.NVarchar2, isSeccess,ParameterDirection.Input), new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } else { //更新报损履历 sqlString = @" UPDATE tp_pm_barcodeidnrkscrap SET errormessage = :message ,incident = :incident WHERE instr( ',' || :scrapids || ',', ',' || scrapid || ',' ) > 0"; oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.NVarchar2, item["scrapids"].ToString(), ParameterDirection.Input), new OracleParameter(":message",OracleDbType.NVarchar2, data["ErrorMessage"].ToString(),ParameterDirection.Input), new OracleParameter(":incident",OracleDbType.NVarchar2, data["Incident"].ToString(),ParameterDirection.Input), }; oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sre.Message = data["ErrorMessage"].ToString(); sre.OtherStatus = -999; } } } sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 查询成本中心(BPM) /// /// /// /// public static ServiceResultEntity GetCostCenter(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = @"SELECT 0 check1 ,t.dictionaryvalue COSTCENTER ,t.remarks COSTCENTERNAME FROM tp_mst_datadictionary t WHERE t.valueflag = 1 AND t.dictionarytype = 'TPC013' AND t.accountid = :accountid AND (:dictionaryvalue IS NULL OR :dictionaryvalue = '' OR instr(t.dictionaryvalue, :dictionaryvalue) > 0) AND (:remark IS NULL OR :remark = '' OR instr(t.remarks, :remark) > 0)"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input), new OracleParameter(":dictionaryvalue",OracleDbType.Varchar2, cre.Properties["CostCenter"], ParameterDirection.Input), new OracleParameter(":remark",OracleDbType.Varchar2, cre.Properties["CostcenterName"], ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 保存报损履历成本中心 /// /// /// /// public static ServiceResultEntity SaveCostCenter(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); string sqlString = string.Empty; try { string CostCenter = cre.Properties["CostCenter"].ToString(); string CostCenterName = cre.Properties["CostCenterName"].ToString(); DataTable data = cre.Data.Tables[0]; DataRow[] rows = data.Select("INCIDENT is null"); if (rows.Length > 0) { foreach (DataRow item in rows) { sqlString = @"update TP_PM_BARCODEIDNRKSCRAP set COSTCENTERNAME =:COSTCENTERNAME ,costcenter = :costcenter where SCRAPID = :SCRAPID"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input), new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input), new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } } //BPM流程实例,相同实例数据同时更新 DataRow[] drs = data.Select("INCIDENT is not null"); if (drs.Length > 0) { string SCRAPIDs = ","; //传入拼接报损履历主键id foreach (DataRow item in drs) { SCRAPIDs += item["SCRAPID"].ToString() + ","; } //查询报损履历数据 sqlString = @"SELECT bs.scrapid ,bs.idnrk ,bs.incident FROM tp_pm_barcodeidnrkscrap bs INNER JOIN (SELECT bis.idnrk ,bis.incident FROM tp_pm_barcodeidnrkscrap bis WHERE instr( ',' || :scrapids || ',', ',' || bis.scrapid || ',') > 0 GROUP BY bis.idnrk ,bis.incident) t ON bs.idnrk = t.idnrk AND bs.incident = t.incident"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapids",OracleDbType.Int32, SCRAPIDs, ParameterDirection.Input), }; DataTable bsdt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (bsdt != null && bsdt.Rows.Count > 0) { foreach (DataRow item in bsdt.Rows) { sqlString = @"update TP_PM_BARCODEIDNRKSCRAP set COSTCENTERNAME =:COSTCENTERNAME ,costcenter = :costcenter where SCRAPID = :SCRAPID"; oracleParameter = new OracleParameter[] { new OracleParameter(":SCRAPID",OracleDbType.Int32, item["SCRAPID"], ParameterDirection.Input), new OracleParameter(":COSTCENTERNAME",OracleDbType.Varchar2, CostCenterName, ParameterDirection.Input), new OracleParameter(":costcenter",OracleDbType.Varchar2, CostCenter, ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } } } sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 新建报损履历 /// /// /// /// public static ServiceResultEntity AddIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); string sqlString = string.Empty; try { string IDNRK = cre.Properties["IDNRK"].ToString();//组件编码 string MEINS = cre.Properties["MEINS"].ToString();//组件单位 decimal MENGE = Convert.ToDecimal(cre.Properties["MENGE"]);//报损数量 string IDNRKNAME = cre.Properties["IDNRKNAME"].ToString();//组件名称 string LGORT = cre.Properties["LGORT"].ToString();//库存点 string BARCODE = cre.Properties["BARCODE"].ToString();//产品条码 string MATNR = cre.Properties["MATNR"].ToString();//物料编码 string IDNRKONLYCODE = cre.Properties["IDNRKONLYCODE"].ToString();//唯一编码 string CHARG = cre.Properties["CHARG"].ToString();//批次 sqlString = @" INSERT INTO tp_pm_barcodeidnrkscrap ( barcode ,matnr ,idnrk ,meins ,menge ,idnrkname ,idnrkonlycode ,charg ,lgort ,accountid ,procedureid ,createuserid ,updateuserid) VALUES ( :barcode ,:matnr ,:idnrk ,:meins ,:menge ,:idnrkname ,:idnrkonlycode ,:charg ,:lgort ,:accountid ,-1 ,:createuserid ,:updateuserid)"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":barcode",OracleDbType.NVarchar2, BARCODE, ParameterDirection.Input), new OracleParameter(":matnr",OracleDbType.NVarchar2, MATNR, ParameterDirection.Input), new OracleParameter(":idnrk",OracleDbType.NVarchar2, IDNRK, ParameterDirection.Input), new OracleParameter(":meins",OracleDbType.NVarchar2, MEINS, ParameterDirection.Input), new OracleParameter(":menge",OracleDbType.Decimal, MENGE, ParameterDirection.Input), new OracleParameter(":idnrkname",OracleDbType.NVarchar2, IDNRKNAME, ParameterDirection.Input), new OracleParameter(":idnrkonlycode",OracleDbType.NVarchar2, IDNRKONLYCODE, ParameterDirection.Input), new OracleParameter(":charg",OracleDbType.NVarchar2, CHARG, ParameterDirection.Input), new OracleParameter(":lgort",OracleDbType.NVarchar2, LGORT, ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input), new OracleParameter(":createuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input), new OracleParameter(":updateuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 查询编辑报损数据信息 /// /// /// /// public static ServiceResultEntity GetIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { int scrapid = Convert.ToInt32(cre.Properties["scrapid"]); string sqlString = @" SELECT bis.scrapid ,bis.barcode ,bis.matnr ,bis.idnrk ,bis.meins ,bis.menge ,bis.idnrkname ,bis.idnrkonlycode ,bis.charg ,bis.lgort FROM tp_pm_barcodeidnrkscrap bis where bis.scrapid =:scrapid"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); } catch (Exception ex) { throw ex; } return sre; } /// /// 查询组件编码信息 /// /// /// /// public static ServiceResultEntity GetIdnrkCode(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = @"SELECT pb.IDNRK ,pb.MEINS ,pb.name IDNRKNAME FROM tp_mst_packingbomdetail pb WHERE pb.valueflag = 1 AND pb.accountid = :accountid AND (:idnrk is null or :idnrk='' or instr(pb.idnrk,:idnrk)>0) AND (:idnrkname is null or :idnrkname='' or instr(pb.name,:idnrkname)>0) GROUP BY pb.idnrk ,pb.meins ,pb.name"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":accountid",OracleDbType.NVarchar2, userInfo.AccountID, ParameterDirection.Input), new OracleParameter(":idnrk",OracleDbType.NVarchar2, cre.Properties["IDNRK"], ParameterDirection.Input), new OracleParameter(":idnrkname",OracleDbType.NVarchar2, cre.Properties["IDNRKNAME"], ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); } catch (Exception ex) { throw ex; } return sre; } /// /// 编辑报损履历 /// /// /// /// public static ServiceResultEntity UpdateIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); string sqlString = string.Empty; try { int scrapid = Convert.ToInt32(cre.Properties["scrapid"]); string IDNRK = cre.Properties["IDNRK"].ToString();//组件编码 string MEINS = cre.Properties["MEINS"].ToString();//单位 decimal MENGE = Convert.ToDecimal(cre.Properties["MENGE"]);//数量 string IDNRKNAME = cre.Properties["IDNRKNAME"].ToString();//组件名称 string IDNRKONLYCODE = cre.Properties["IDNRKONLYCODE"].ToString();//组件唯一编码 string CHARG = cre.Properties["CHARG"].ToString();//批次 string LGORT = cre.Properties["LGORT"].ToString();//库存地点 string BARCODE = cre.Properties["BARCODE"].ToString();//产品条码 string MATNR = cre.Properties["MATNR"].ToString();//物料编码 //校验数据状态是否改变 sqlString = @"SELECT bis.checkflag FROM tp_pm_barcodeidnrkscrap bis WHERE bis.scrapid = :scrapid AND bis.valueflag = 1"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input), }; DataTable checkDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (checkDt != null && checkDt.Rows.Count > 0) { if (checkDt.Rows[0]["checkflag"].ToString() == "1") { sre.Message = "报损数据状态已改变!"; sre.OtherStatus = -999; return sre; } } else { sre.Message = "报损数据状态已改变!"; sre.OtherStatus = -999; return sre; } //编辑 sqlString = @" UPDATE tp_pm_barcodeidnrkscrap SET barcode = :barcode ,matnr = :matnr ,idnrk = :idnrk ,meins = :meins ,menge = :menge ,idnrkname = :idnrkname ,idnrkonlycode = :idnrkonlycode ,charg = :charg ,lgort = :lgort ,updateuserid = :updateuserid ,updatetime = SYSDATE WHERE scrapid = :scrapid"; oracleParameter = new OracleParameter[] { new OracleParameter(":barcode",OracleDbType.NVarchar2, BARCODE, ParameterDirection.Input), new OracleParameter(":matnr",OracleDbType.NVarchar2, MATNR, ParameterDirection.Input), new OracleParameter(":scrapid",OracleDbType.Int32, scrapid, ParameterDirection.Input), new OracleParameter(":idnrk",OracleDbType.NVarchar2, IDNRK, ParameterDirection.Input), new OracleParameter(":meins",OracleDbType.NVarchar2, MEINS, ParameterDirection.Input), new OracleParameter(":menge",OracleDbType.Decimal, MENGE, ParameterDirection.Input), new OracleParameter(":idnrkname",OracleDbType.NVarchar2, IDNRKNAME, ParameterDirection.Input), new OracleParameter(":idnrkonlycode",OracleDbType.NVarchar2, IDNRKONLYCODE, ParameterDirection.Input), new OracleParameter(":charg",OracleDbType.NVarchar2, CHARG, ParameterDirection.Input), new OracleParameter(":lgort",OracleDbType.NVarchar2, LGORT, ParameterDirection.Input), new OracleParameter(":updateuserid",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input), }; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 删除报损履历 /// /// /// /// public static ServiceResultEntity DeleteIDNRKScrap(ClientRequestEntity cre, SUserInfo userInfo) { ServiceResultEntity sre = new ServiceResultEntity(); int returnRows = 0; IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); string sqlString = string.Empty; try { DataTable dt = cre.Data.Tables[0]; foreach (DataRow item in dt.Rows) { int scrapid = Convert.ToInt32(item["scrapid"]); //校验数据状态是否改变 sqlString = @"SELECT bis.checkflag FROM tp_pm_barcodeidnrkscrap bis WHERE bis.scrapid = :scrapid AND bis.valueflag = 1"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":scrapid",OracleDbType.NVarchar2, scrapid, ParameterDirection.Input), }; DataTable checkDt = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); if (checkDt != null && checkDt.Rows.Count > 0) { if (checkDt.Rows[0]["checkflag"].ToString() == "1") { sre.Message = "报损数据状态已改变!"; sre.OtherStatus = -999; return sre; } } else { sre.Message = "报损数据状态已改变!"; sre.OtherStatus = -999; return sre; } //删除 sqlString = @"UPDATE tp_pm_barcodeidnrkscrap SET valueflag = 0 WHERE scrapid = :scrapid"; returnRows += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } sre.OtherStatus = returnRows; oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Rollback(); oracleTrConn.Disconnect(); } throw ex; } finally { if (oracleTrConn.ConnState == System.Data.ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } /// /// 查询中台日志 /// /// /// public static ServiceResultEntity GetZhongTaiDataLog(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); List paras = new List(); try { string sqlString = @" SELECT FP.BARCODE, GDD.MATERIALCODE, GDD.OUTLABELCODE, GDD.FIRSTFHDATE, GDD.FIRSTFHNO, FP.FHTIME, FP.TOZHONGTAIFLAG, FP.TOZHONGTAITIME, FP.ZHONGTAIMSG FROM TP_PM_FINISHEDPRODUCT FP INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = FP.GROUTINGDAILYDETAILID WHERE FP.accountid = :ACCOUNTID AND FP.FHTIME >= :FHTIMEBEGIN AND FP.FHTIME < :FHTIMEEND "; paras.Add(new OracleParameter(":ACCOUNTID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input)); paras.Add(new OracleParameter(":FHTIMEBEGIN", OracleDbType.Date, cre.Properties["FhtimeBegin"], ParameterDirection.Input)); paras.Add(new OracleParameter(":FHTIMEEND", OracleDbType.Date, cre.Properties["FhtimeEnd"], ParameterDirection.Input)); if (!string.IsNullOrEmpty(cre.Properties["ToZhongTaiFlag"] + "")) { sqlString += " AND FP.TOZHONGTAIFLAG = :TOZHONGTAIFLAG "; paras.Add(new OracleParameter(":TOZHONGTAIFLAG", OracleDbType.Varchar2, cre.Properties["ToZhongTaiFlag"], ParameterDirection.Input)); } if (!string.IsNullOrEmpty(cre.Properties["ZhongTaiMsg"] + "")) { sqlString += " AND FP.ZHONGTAIMSG LIKE :ZHONGTAIMSG "; paras.Add(new OracleParameter(":ZHONGTAIMSG", OracleDbType.NVarchar2, "%" + cre.Properties["ZhongTaiMsg"] + "%", ParameterDirection.Input)); } sqlString += " ORDER BY FP.FHTIME, FP.BARCODE "; sre.Data = oracleConn.GetSqlResultToDs(sqlString, paras.ToArray()); return sre; } catch (Exception ex) { sre.OtherStatus = -1; sre.Message = ex.Message; return sre; } } /// /// 同步中台日志 /// /// /// public static ServiceResultEntity SyncZhongTaiData(ClientRequestEntity cre) { ServiceResultEntity sre = new ServiceResultEntity(); try { INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); string urlZhongTai = ini.ReadIniData("ZhongTai", "urlZhongTai"); //string urlZhongTai = "http://localhost:62172/api/ZhongTai/ashxSyncZhongTai.ashx"; string syncDate = cre.Properties["SyncDate"].ToString(); string result = PostData(urlZhongTai, "{\"SyncDate\": \""+ syncDate + "\"}", "POST"); JObject obj = JObject.Parse(result); sre.OtherStatus = 1; sre.Message = "同步结果," + obj["message"].ToString(); return sre; } catch (Exception ex) { sre.Result = -2; sre.Message = "同步失败," + ex.Message; return sre; } } /// /// 查询昆船WMS日志 /// /// /// public static ServiceResultEntity GetKunChuanDataLog(ClientRequestEntity cre, SUserInfo userInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); List paras = new List(); try { string sqlString = @" SELECT FP.YYYYMMDD, FP.BARCODE, FP.SAPCODE, FP.OUTCODE, FP.CREATETIME, NVL(FP.BANMA, FP.SAPFLBATCHNO) AS BANMA, FP.ORDERCODE, FP.ORDERITEM, FP.SECURITYCODE, FP.TOKUNCHUANFLAG, FP.KUNCHUANMSG, FP.TOKUNCHUANTIME FROM TSAP_HEGII_FINISHEDPRODUCT FP WHERE FP.ZTYPE = 'S' AND FP.CREATETIME >= :FHTIMEBEGIN AND FP.CREATETIME < :FHTIMEEND "; paras.Add(new OracleParameter(":FHTIMEBEGIN", OracleDbType.Date, cre.Properties["FhtimeBegin"], ParameterDirection.Input)); paras.Add(new OracleParameter(":FHTIMEEND", OracleDbType.Date, cre.Properties["FhtimeEnd"], ParameterDirection.Input)); if (!string.IsNullOrEmpty(cre.Properties["ToKunChuanFlag"] + "")) { sqlString += " AND FP.TOKUNCHUANFLAG = :TOKUNCHUANFLAG "; paras.Add(new OracleParameter(":TOKUNCHUANFLAG", OracleDbType.Varchar2, cre.Properties["ToKunChuanFlag"], ParameterDirection.Input)); } if (!string.IsNullOrEmpty(cre.Properties["KunChuanMsg"] + "")) { sqlString += " AND FP.KUNCHUANMSG LIKE :KUNCHUANMSG "; paras.Add(new OracleParameter(":KUNCHUANMSG", OracleDbType.NVarchar2, "%" + cre.Properties["KunChuanMsg"] + "%", ParameterDirection.Input)); } sqlString += " ORDER BY FP.SAPFLBATCHNO, FP.OUTCODE "; sre.Data = oracleConn.GetSqlResultToDs(sqlString, paras.ToArray()); return sre; } catch (Exception ex) { sre.OtherStatus = -1; sre.Message = ex.Message; return sre; } } /// /// 同步昆船WMS日志 /// /// /// public static ServiceResultEntity SyncKunChuanData(ClientRequestEntity cre) { ServiceResultEntity sre = new ServiceResultEntity(); try { INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); string urlKunChuan = ini.ReadIniData("KunChuan", "urlKunChuan"); //string urlKunChuan = "http://localhost:62172/api/KunChuan/ashxSyncKunChuan.ashx"; string syncDate = cre.Properties["SyncDate"].ToString(); string result = PostData(urlKunChuan, "{\"SyncDate\": \"" + syncDate + "\"}", "POST"); JObject obj = JObject.Parse(result); sre.OtherStatus = 1; sre.Message = "同步结果," + obj["message"].ToString(); return sre; } catch (Exception ex) { sre.Result = -2; sre.Message = "同步失败," + ex.Message; return sre; } } #region 私有方法 /// /// 同步BPM系统条码 /// /// private static string PushBPM(DataTable dtNoneInfo) { //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName"); try { using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap")) { string token = "HEGIITOKEN"; string userAccount = "MES001"; string Processname = "Inventory Material Scrap And Adjustment Process"; int Incident = 0; if (!string.IsNullOrEmpty(dtNoneInfo.Rows[0]["Incident"] + "")) { Incident = Convert.ToInt32(dtNoneInfo.Rows[0]["Incident"]); } BPMDetailOneEntity pars1 = new BPMDetailOneEntity(); pars1.REQUESTDATE = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); pars1.DOCUMENTTYPE = "报废及回收"; pars1.COMPANYNUMBER = "5000"; pars1.REMARK = ""; pars1.APPLICATEMPNO = "MES001"; pars1.APPLICANTEMPNAME = "MES001"; pars1.EFFECTIVEDATE = DateTime.Now.Date.ToString("yyyy/MM/dd"); //pars1.Add("REQUESTDATE", DateTime.Now); //pars1.Add("DOCUMENTTYPE", "报废及回收"); //pars1.Add("COMPANYNUMBER", "5000"); //pars1.Add("REMARK", ""); //pars1.Add("APPLICATEMPNO", "MES001"); //pars1.Add("APPLICANTEMPNAME", "MES001"); //pars1.Add("EFFECTIVEDATE", DateTime.Now.Date); List listPars2 = new List(); PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT pars2 = null; for (int i = 0; i < dtNoneInfo.Rows.Count; i++) { pars2 = new PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT(); pars2.ROWID = i + 1; pars2.PROCESSINGTYPE = "551"; pars2.STDMODE = dtNoneInfo.Rows[i]["IDNRK"].ToString(); pars2.PRODUCTNAME = dtNoneInfo.Rows[i]["IDNRKNAME"].ToString(); pars2.QUANTITY = Convert.ToDecimal(dtNoneInfo.Rows[i]["MENGE"]); pars2.UNIT = dtNoneInfo.Rows[i]["MEINS"].ToString(); pars2.UNITNAME = dtNoneInfo.Rows[i]["meinsname"].ToString(); pars2.FACTORY = "5000"; pars2.STORAGELOCATION = dtNoneInfo.Rows[i]["LGORT"].ToString(); pars2.SALENUMBER = ""; pars2.ITEMNUMBER = ""; pars2.BATCHNUMBER = dtNoneInfo.Rows[i]["CHARG"].ToString(); pars2.COSTCENTERNAME = dtNoneInfo.Rows[i]["COSTCENTERNAME"].ToString(); pars2.COSTCENTER = dtNoneInfo.Rows[i]["COSTCENTER"].ToString(); pars2.REMARK = ""; //pars2.Add("ROWID", i + 1); //pars2.Add("PROCESSINGTYPE", "551"); //处理类型 //pars2.Add("STDMODE", dtNoneInfo.Rows[i]["IDNRK"].ToString()); //物料编码(组件编码) //pars2.Add("PRODUCTNAME", dtNoneInfo.Rows[i]["IDNRKNAME"].ToString()); //物料描述(组件名称) //pars2.Add("QUANTITY", Convert.ToDecimal(dtNoneInfo.Rows[i]["MENGE"])); //数量 //pars2.Add("UNIT", dtNoneInfo.Rows[i]["MEINS"].ToString()); //单位 //pars2.Add("UNITNAME", dtNoneInfo.Rows[i]["meinsname"].ToString()); //单位名称 //pars2.Add("FACTORY", "5000"); //pars2.Add("STORAGELOCATION", dtNoneInfo.Rows[i]["LGORT"].ToString()); //存放库位(线边仓位号) //pars2.Add("SALENUMBER", ""); //pars2.Add("ITEMNUMBER", ""); //pars2.Add("BATCHNUMBER", dtNoneInfo.Rows[i]["CHARG"].ToString()); //批次号 //pars2.Add("COSTCENTERNAME", ""); //pars2.Add("COSTCENTER", ""); //pars2.Add("REMARK", ""); listPars2.Add(pars2); } BPMDetailThreeEntity pars3 = new BPMDetailThreeEntity(); pars3.ROWID = ""; pars3.FILEURL = ""; pars3.FILENAME = ""; //pars3.Add("ROWID", ""); //pars3.Add("FILEURL", ""); //pars3.Add("FILENAME", ""); BPMEntity body = new BPMEntity(); body.PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT = pars1; body.XXXXXXXXX = listPars2; body.PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_ATTACT_DT = pars3; //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT", pars1); //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT", listPars2.ToArray()); //body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_ATTACT_DT", pars3); //Hashtable ds = new Hashtable(); //ds.Add("NewDataSet", body); string mm = JsonHelper.ToJson(body); //string XmlData = Json2Xml(mm).OuterXml; string XmlData = ObjectToXml(body).Replace("", "").Replace("", ""); // 参数 string result = bpmClient.SubmitProcess(token, userAccount, XmlData, Processname, Incident); return result; } } catch (Exception ex) { return "同步失败:" + ex.Message; } } /// /// 撤销BPM系统同步数据 /// /// /// private static string CancelPushBPM(int Incident) { //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName"); try { using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap")) { string token = "HEGIITOKEN"; string userAccount = "MES001"; string Processname = "Inventory Material Scrap And Adjustment Process"; // 参数 string result = bpmClient.ReturnProcess(token, userAccount, Processname, Incident); return result; } } catch (Exception ex) { return "同步失败:" + ex.Message; } } ///// ///// json字符串转换为Xml对象 ///// ///// ///// //private static XmlDocument Json2Xml(string sJson) //{ // //XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), XmlDictionaryReaderQuotas.Max); // //XmlDocument doc = new XmlDocument(); // //doc.Load(reader); // try // { // JavaScriptSerializer oSerializer = new JavaScriptSerializer(); // Dictionary Dic = (Dictionary)oSerializer.DeserializeObject(sJson); // XmlDocument doc = new XmlDocument(); // XmlDeclaration xmlDec; // xmlDec = doc.CreateXmlDeclaration("1.0", "gb2312", "yes"); // doc.InsertBefore(xmlDec, doc.DocumentElement); // XmlElement nRoot = doc.CreateElement("NewDataSet"); // doc.AppendChild(nRoot); // foreach (KeyValuePair item in Dic) // { // XmlElement element = doc.CreateElement(item.Key); // KeyValue2Xml(element, item); // nRoot.AppendChild(element); // } // return doc; // } // catch (Exception ex) // { // throw ex; // } //} //private static void KeyValue2Xml(XmlElement node, KeyValuePair Source) //{ // try // { // object kValue = Source.Value; // if (kValue.GetType() == typeof(Dictionary)) // { // foreach (KeyValuePair item in kValue as Dictionary) // { // XmlElement element = node.OwnerDocument.CreateElement(item.Key); // KeyValue2Xml(element, item); // node.AppendChild(element); // } // } // else if (kValue.GetType() == typeof(object[])) // { // object[] o = kValue as object[]; // for (int i = 0; i < o.Length; i++) // { // XmlElement xitem = node.OwnerDocument.CreateElement("Item"); // KeyValuePair item = new KeyValuePair("Item", o); // KeyValue2Xml(xitem, item); // node.AppendChild(xitem); // } // } // else // { // XmlText text = node.OwnerDocument.CreateTextNode(kValue.ToString()); // node.AppendChild(text); // } // } // catch (Exception ex) // { // throw ex; // } //} /// /// 泛型对象转换成xml /// /// 对象 /// private static string ObjectToXml(T obj) { if (obj == null) { return ""; } using (MemoryStream stream = new MemoryStream()) { XmlSerializer xml = new XmlSerializer(obj.GetType()); xml.Serialize(stream, obj); stream.Position = 0; StreamReader sr = new StreamReader(stream); string str = sr.ReadToEnd(); return str; } } ///// ///// Json转Xml格式 ///// ///// ///// //private static string JsonToXml(string json) //{ // string xml = string.Empty; // XmlDocument xmlDoc = new XmlDocument(); // try // { // XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), XmlDictionaryReaderQuotas.Max); // xmlDoc.Load(xmlReader); // //json转xml // XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "no"); // //创建xml声明 // xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); //插入xml声明 // //xmlDoc.AppendChild(xmlDec); // //添加xml声明 // } // catch (Exception ex) // { // // // } // return xmlDoc.OuterXml; //xml转string //} /// /// POST数据 /// /// /// /// /// private static string PostData(string url, string data, string method) { //将单引号转义成双引号 data = data.Replace("'", "\""); //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); //把用户传过来的数据转成“UTF-8”的字节流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = method; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json;charset=UTF-8"; myRequest.AllowAutoRedirect = true; //发送请求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //获取接口返回值 //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法 string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion } }