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
}
}