|
|
@@ -1792,11 +1792,11 @@ namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
|
|
|
// 登录
|
|
|
UserNamePasswordClientCredential credential =
|
|
|
sapClient.ClientCredentials.UserName;
|
|
|
- //credential.UserName = "hgsapdk";
|
|
|
- //credential.Password = "Sapdk#240";
|
|
|
- INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
|
|
|
- credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
|
|
|
- credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
|
|
|
+ credential.UserName = "hgsapdk";
|
|
|
+ credential.Password = "Prddk209";
|
|
|
+ //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
|
|
|
+ // credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
|
|
|
+ // credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
|
|
|
// 参数
|
|
|
sapParameter.ZSUMSpecified = true;
|
|
|
sapParameter.TABLE_OUT = new ZSPP100[0];
|
|
|
@@ -2682,233 +2682,513 @@ namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 同步SAP数据(自动)补数据用
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="date">当前时间</param>
|
|
|
+ /// <param name="funCode">工序码</param>
|
|
|
+ /// <param name="ndate">本次要执行到的时间</param>
|
|
|
+ public static void AutoWorkDataToSAP_Test(DateTime date, DateTime ndate)
|
|
|
+ {
|
|
|
+ ServiceResultEntity sre = null;
|
|
|
+ // 20 湿坯
|
|
|
+ try
|
|
|
+ {
|
|
|
+ sre = SetWorkData20_Test("20", 0, ndate);
|
|
|
+ if (sre.Status != Constant.ServiceResultStatus.Success ||
|
|
|
+ "S" != sre.Result + "")
|
|
|
+ {
|
|
|
+ OutputLog.TraceLog(LogPriority.Warning,
|
|
|
+ "AutoWorkDataToSAP_Test",
|
|
|
+ "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
+ JsonHelper.ToJson(sre),
|
|
|
+ LocalPath.LogExePath + "SAP_HEGII\\Warn_");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ OutputLog.TraceLog(LogPriority.Error,
|
|
|
+ "AutoWorkDataToSAP_Test",
|
|
|
+ "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
+ ex.ToString(),
|
|
|
+ LocalPath.LogExePath + "SAP_HEGII\\Error_");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- /*
|
|
|
- public static ServiceResultEntity AutoWorkData(DateTime date)
|
|
|
- {
|
|
|
- IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ /// <summary>
|
|
|
+ /// 同步产量报工(手动)重载_补数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="date"></param>
|
|
|
+ /// <param name="datacode"></param>
|
|
|
+ /// <param name="userid"></param>
|
|
|
+ /// <param name="ndate"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static ServiceResultEntity SetWorkData20_Test(string datacode, int userid, DateTime ndate)
|
|
|
+ {
|
|
|
+ ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
+ IDBTransaction oracleConn = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ #region 事务1,执行存储过程
|
|
|
+ OracleParameter[] paras = null;
|
|
|
+ int logid = 0;
|
|
|
+ string message = string.Empty;
|
|
|
+ // 20 湿坯
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
|
|
|
+ new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
|
|
|
+ new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
|
|
|
+ };
|
|
|
|
|
|
- ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
- try
|
|
|
- {
|
|
|
- string yyyymmdd = date.ToString("yyyyMMdd");
|
|
|
- string sqlString =
|
|
|
- "select t.logid, t.datacode\n" +
|
|
|
- " from tsap_hegii_datalog t\n" +
|
|
|
- " where t.logtype = '1'\n" +
|
|
|
- " and t.datastuts = 'S'\n" +
|
|
|
- " and t.yyyymmdd = :yyyymmdd\n" +
|
|
|
- " and t.createuserid is null for update";
|
|
|
- OracleParameter[] oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
- };
|
|
|
- DataTable datalog = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
|
|
|
- if (datalog == null || datalog.Rows.Count == 0)
|
|
|
- {
|
|
|
- sre.Result = 0;
|
|
|
- return sre;
|
|
|
- }
|
|
|
+ oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+ DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_hgcz1_ADD7172", paras);
|
|
|
+ int.TryParse(paras[1].Value + "", out logid);
|
|
|
+ message = paras[2].Value + "";
|
|
|
+ oracleConn.Commit();
|
|
|
|
|
|
- sqlString = "select workcode from tp_mst_account where rownum = 1";
|
|
|
- string workcode = oracleConn.GetSqlResultToStr(sqlString);
|
|
|
-
|
|
|
- Zppfm008 sapParameter = new Zppfm008();
|
|
|
- List<Zspp100> info = new List<Zspp100>();
|
|
|
- foreach (DataRow item in datalog.Rows)
|
|
|
- {
|
|
|
- string datacode = item["datacode"].ToString();
|
|
|
-
|
|
|
- logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
|
|
|
- string msg = null;
|
|
|
- //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHm") + "~" +
|
|
|
- // dateend.ToString("yyyyMMdd-HHmm");
|
|
|
- sqlString = "insert into tsap_hegii_datalog\n" +
|
|
|
- " (LogID\n" +
|
|
|
- " ,LogType\n" +
|
|
|
- " ,BeginTime\n" +
|
|
|
- " ,YYYYMMDD\n" +
|
|
|
- " ,WorkCode\n" +
|
|
|
- " ,DataCode\n" +
|
|
|
- " ,DataStuts\n" +
|
|
|
- " ,DataMSG\n" +
|
|
|
- " ,CreateUserID\n" +
|
|
|
- " ,DataLogID)\n" +
|
|
|
- "values\n" +
|
|
|
- " (:LogID\n" +
|
|
|
- " ,'2'\n" +
|
|
|
- " ,sysdate\n" +
|
|
|
- " ,:YYYYMMDD\n" +
|
|
|
- " ,:WorkCode\n" +
|
|
|
- " ,:DataCode\n" +
|
|
|
- " ,:DataStuts\n" +
|
|
|
- " ,:DataMSG\n" +
|
|
|
- " ,:CreateUserID\n" +
|
|
|
- " ,:DataLogID)";
|
|
|
- int r = 0;
|
|
|
- if (string.IsNullOrEmpty(datalogid))
|
|
|
- {
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
- new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
- new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
- new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + " DKMES-ERROR:NO DATA", ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
- };
|
|
|
- r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
- sre.Status = Constant.ServiceResultStatus.Other;
|
|
|
- sre.Message = "没有同步数据";
|
|
|
- sre.Result = "E";
|
|
|
- return sre;
|
|
|
- }
|
|
|
+ // 如果logid为0,则数据没有生成
|
|
|
+ if (logid == 0)
|
|
|
+ {
|
|
|
+ sre.Status = Constant.ServiceResultStatus.Other;
|
|
|
+ sre.Message = message;
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
- new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
- new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
- new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
- };
|
|
|
- r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
-
|
|
|
- sqlString =
|
|
|
- "select fp.yyyymmdd\n" +
|
|
|
- " ,fp.workcode\n" +
|
|
|
- " ,fp.DataCode\n" +
|
|
|
- " ,fp.GoodsCode\n" +
|
|
|
- " ,fp.SAPCode\n" +
|
|
|
- " ,fp.UserCode\n" +
|
|
|
- " ,fp.ORDERCODE\n" +
|
|
|
- " ,fp.ORDERITEM\n" +
|
|
|
- " ,fp.OutputNum\n" +
|
|
|
- " ,fp.ScrapNum\n" +
|
|
|
- " ,fp.CleanupNum\n" +
|
|
|
- " ,fp.RecoveryNum\n" +
|
|
|
- " ,fp.RepairNum\n" +
|
|
|
- " from tsap_hegii_workdata wd where wd.logid = :datalogid";
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
- };
|
|
|
- DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
|
|
|
-
|
|
|
- if (workData != null && workData.Rows.Count > 0)
|
|
|
- {
|
|
|
- sapParameter.Zsum = workData.Rows.Count;
|
|
|
- sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
|
|
|
- int index = 0;
|
|
|
- foreach (DataRow item in workData.Rows)
|
|
|
- {
|
|
|
- Zspp100 info100 = new Zspp100();
|
|
|
- // 工厂
|
|
|
- info100.Werks = workcode;
|
|
|
- // 型号
|
|
|
- info100.Groes = item["GoodsCode"].ToString();
|
|
|
- // 物料编号
|
|
|
- info100.Matnr = item["SAPCode"].ToString();
|
|
|
- // 生产工号
|
|
|
- info100.Zghnu = item["UserCode"].ToString();
|
|
|
- // 数据节点
|
|
|
- info100.Zjdnu = item["DataCode"].ToString();
|
|
|
- // 时间戳
|
|
|
- info100.Zscnu = yyyymmdd;
|
|
|
- // 销售凭证
|
|
|
- info100.Vbeln = item["ORDERCODE"].ToString();
|
|
|
- // 销售凭证项目
|
|
|
- info100.Posnr = item["ORDERITEM"].ToString();
|
|
|
- // 产量
|
|
|
- info100.Zclng = item["OutputNum"].ToString();
|
|
|
- // 损坯
|
|
|
- info100.Zspng = item["SCRAPNUM"].ToString();
|
|
|
- // 清除
|
|
|
- info100.Zqcng = item["CLEANUPNUM"].ToString();
|
|
|
- // 回收
|
|
|
- info100.Zhsng = item["RECOVERYNUM"].ToString();
|
|
|
- // 干补
|
|
|
- info100.Zgbng = item["REPAIRNUM"].ToString();
|
|
|
- sapParameter.TableIn[index++] = info100;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- sapParameter.Zsum = 0;
|
|
|
- sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
|
|
|
- }
|
|
|
+ // 事物2,同步SAP接口
|
|
|
+ sre = SyncSap_Test(ndate, datacode, userid, logid);
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ if (oracleConn != null &&
|
|
|
+ oracleConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleConn.Disconnect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- Zppfm008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
|
|
|
-
|
|
|
- //if (result.Ztype == "E")
|
|
|
- //{
|
|
|
- // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
|
|
|
- // oracleParameter = new OracleParameter[]
|
|
|
- // {
|
|
|
- // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
|
|
|
- // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
- // };
|
|
|
- // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
- //}
|
|
|
- //else
|
|
|
- {
|
|
|
- sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG = DataMSG||:msg where logid = :logid";
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.Ztype, ParameterDirection.Input),
|
|
|
- new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
|
|
|
- new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
- };
|
|
|
- r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
- if (result.Ztype == "S")
|
|
|
- {
|
|
|
- sqlString = "update tsap_hegii_datalog t set t.createtime = :userid where logid = :datalogid";
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
- new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
- };
|
|
|
- r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
- }
|
|
|
- if (result.TableOut != null && result.TableOut.Length > 0)
|
|
|
- {
|
|
|
- sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
|
|
|
- " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
|
|
|
- "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
|
|
|
- "and OrderCode=:OrderCode and OrderItem=:OrderItem";
|
|
|
- foreach (Zspp100 item in result.TableOut)
|
|
|
- {
|
|
|
- oracleParameter = new OracleParameter[]
|
|
|
- {
|
|
|
- new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.Ztype, ParameterDirection.Input),
|
|
|
- new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.Zmsg, ParameterDirection.Input),
|
|
|
- new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
- new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.Groes, ParameterDirection.Input),
|
|
|
- new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.Matnr, ParameterDirection.Input),
|
|
|
- new OracleParameter(":UserCode",OracleDbType.Varchar2, item.Zghnu, ParameterDirection.Input),
|
|
|
- new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Vbeln)? " " : item.Vbeln), ParameterDirection.Input),
|
|
|
- new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Posnr)? " " : item.Posnr), ParameterDirection.Input),
|
|
|
- };
|
|
|
- r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ /// <summary>
|
|
|
+ /// 同步SAP接口_补数据用
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="date"></param>
|
|
|
+ /// <param name="datacode"></param>
|
|
|
+ /// <param name="userid"></param>
|
|
|
+ /// <param name="logid"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static ServiceResultEntity SyncSap_Test(DateTime date, string datacode, int userid, int logid)
|
|
|
+ {
|
|
|
+ ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
+ IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
|
|
|
- oracleConn.Commit();
|
|
|
- sre.Message = result.Zmsg;
|
|
|
- sre.Result = result.Ztype;
|
|
|
- return sre;
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- throw ex;
|
|
|
- }
|
|
|
- }
|
|
|
- */
|
|
|
+ try
|
|
|
+ {
|
|
|
+ OracleParameter[] paras = null;
|
|
|
+ string sqlString = string.Empty;
|
|
|
+
|
|
|
+ sqlString = "select workcode from tp_mst_account where rownum = 1";
|
|
|
+ string workcode = oracleConn.GetSqlResultToStr(sqlString);
|
|
|
+ string yyyymmdd = date.ToString("yyyyMMdd");
|
|
|
+ int r = 0;
|
|
|
+
|
|
|
+ // 查询出当前日志外,最新的一次日志
|
|
|
+ sqlString = "SELECT t.executedateend\n" +
|
|
|
+ " FROM (SELECT dl.executedateend\n" +
|
|
|
+ " FROM tsap_hegii_datalog dl\n" +
|
|
|
+ " WHERE dl.logtype = '3'\n" +
|
|
|
+ " AND dl.datastuts = 'S'\n" +
|
|
|
+ " AND dl.datacode = :datacode\n" +
|
|
|
+ " AND dl.logid <> :logid\n" +
|
|
|
+ " ORDER BY dl.executedateend DESC) t\n" +
|
|
|
+ " WHERE rownum = 1";
|
|
|
+
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":datacode", datacode),
|
|
|
+ new OracleParameter(":logid", logid)
|
|
|
+ };
|
|
|
+
|
|
|
+ object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras);
|
|
|
+
|
|
|
+ if (executedateend == null || Convert.ToDateTime(executedateend) > date)
|
|
|
+ {
|
|
|
+ sre.Result = "W";
|
|
|
+ sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步";
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sqlString = "SELECT wd.yyyymmdd\n" +
|
|
|
+ " ,wd.workcode\n" +
|
|
|
+ " ,wd.datacode\n" +
|
|
|
+ " ,wd.goodscode\n" +
|
|
|
+ " ,wd.sapcode\n" +
|
|
|
+ " ,wd.usercode\n" +
|
|
|
+ " ,wd.ordercode\n" +
|
|
|
+ " ,wd.orderitem\n" +
|
|
|
+ " ,wd.outputnum\n" +
|
|
|
+ " ,wd.scrapnum\n" +
|
|
|
+ " ,wd.cleanupnum\n" +
|
|
|
+ " ,wd.recoverynum\n" +
|
|
|
+ " ,wd.repairnum\n" +
|
|
|
+ " ,wd.zscs\n" +
|
|
|
+ " FROM tsap_hegii_workdata wd\n" +
|
|
|
+ " WHERE wd.logid = :logid";
|
|
|
+
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+
|
|
|
+ DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
|
|
|
+
|
|
|
+ Zppfm008 sapParameter = new Zppfm008();
|
|
|
+ if (workData != null && workData.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ sapParameter.ZSUM = workData.Rows.Count;
|
|
|
+ sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
|
|
|
+ int index = 0;
|
|
|
+ foreach (DataRow item in workData.Rows)
|
|
|
+ {
|
|
|
+ ZSPP100 info100 = new ZSPP100();
|
|
|
+ // 工厂
|
|
|
+ info100.WERKS = workcode;
|
|
|
+ // 型号
|
|
|
+ info100.GROES = item["GoodsCode"].ToString();
|
|
|
+ // 物料编号
|
|
|
+ info100.MATNR = item["SAPCode"].ToString();
|
|
|
+ // 生产工号
|
|
|
+ info100.ZGHNU = item["UserCode"].ToString();
|
|
|
+ // 数据节点
|
|
|
+ info100.ZJDNU = item["DataCode"].ToString();
|
|
|
+ // 时间戳
|
|
|
+ info100.ZSCNU = yyyymmdd;
|
|
|
+ // 销售凭证
|
|
|
+ info100.VBELN = item["ORDERCODE"].ToString().Trim();
|
|
|
+ // 销售凭证项目
|
|
|
+ info100.POSNR = item["ORDERITEM"].ToString();
|
|
|
+ // 产量
|
|
|
+ info100.ZCLNG = item["OutputNum"].ToString();
|
|
|
+ // 损坯
|
|
|
+ info100.ZSPNG = item["SCRAPNUM"].ToString();
|
|
|
+ // 清除
|
|
|
+ info100.ZQCNG = item["CLEANUPNUM"].ToString();
|
|
|
+ // 回收
|
|
|
+ info100.ZHSNG = item["RECOVERYNUM"].ToString();
|
|
|
+ // 注浆类型 G高压 L普通
|
|
|
+ info100.ZSCS = item["ZSCS"].ToString();
|
|
|
+ // 干补
|
|
|
+ info100.ZGBNG = item["REPAIRNUM"].ToString();
|
|
|
+ info100.ZKSSJ = Convert.ToDateTime(executedateend).ToString("HHmmss");
|
|
|
+ info100.ZJSRQ = Convert.ToDecimal(date.ToString("yyyyMMddHHmmss"));
|
|
|
+
|
|
|
+ sapParameter.TABLE_IN[index++] = info100;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sapParameter.ZSUM = 0;
|
|
|
+ sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用SAP接口
|
|
|
+ ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
|
|
|
+ if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
|
|
|
+ {
|
|
|
+ sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
|
|
|
+ " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
|
|
|
+ "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
|
|
|
+ "and OrderCode=:OrderCode and OrderItem=:OrderItem";
|
|
|
+
|
|
|
+ foreach (ZSPP100 item in result.TABLE_OUT)
|
|
|
+ {
|
|
|
+ string posnr = item.POSNR.TrimStart('0');
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
|
|
|
+ new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, paras);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
|
|
|
+ sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, paras);
|
|
|
+ if (result.ZTYPE == "S")
|
|
|
+ {
|
|
|
+ sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid";
|
|
|
+ paras = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, paras);
|
|
|
+ }
|
|
|
+
|
|
|
+ oracleConn.Commit();
|
|
|
+
|
|
|
+ sre.Message = result.ZMSG;
|
|
|
+ sre.Result = result.ZTYPE;
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ if (oracleConn != null &&
|
|
|
+ oracleConn.ConnState == ConnectionState.Open)
|
|
|
+ {
|
|
|
+ oracleConn.Disconnect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*
|
|
|
+ public static ServiceResultEntity AutoWorkData(DateTime date)
|
|
|
+ {
|
|
|
+ IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
+
|
|
|
+ ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string yyyymmdd = date.ToString("yyyyMMdd");
|
|
|
+ string sqlString =
|
|
|
+ "select t.logid, t.datacode\n" +
|
|
|
+ " from tsap_hegii_datalog t\n" +
|
|
|
+ " where t.logtype = '1'\n" +
|
|
|
+ " and t.datastuts = 'S'\n" +
|
|
|
+ " and t.yyyymmdd = :yyyymmdd\n" +
|
|
|
+ " and t.createuserid is null for update";
|
|
|
+ OracleParameter[] oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ DataTable datalog = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
|
|
|
+ if (datalog == null || datalog.Rows.Count == 0)
|
|
|
+ {
|
|
|
+ sre.Result = 0;
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+
|
|
|
+ sqlString = "select workcode from tp_mst_account where rownum = 1";
|
|
|
+ string workcode = oracleConn.GetSqlResultToStr(sqlString);
|
|
|
+
|
|
|
+ Zppfm008 sapParameter = new Zppfm008();
|
|
|
+ List<Zspp100> info = new List<Zspp100>();
|
|
|
+ foreach (DataRow item in datalog.Rows)
|
|
|
+ {
|
|
|
+ string datacode = item["datacode"].ToString();
|
|
|
+
|
|
|
+ logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
|
|
|
+ string msg = null;
|
|
|
+ //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHm") + "~" +
|
|
|
+ // dateend.ToString("yyyyMMdd-HHmm");
|
|
|
+ sqlString = "insert into tsap_hegii_datalog\n" +
|
|
|
+ " (LogID\n" +
|
|
|
+ " ,LogType\n" +
|
|
|
+ " ,BeginTime\n" +
|
|
|
+ " ,YYYYMMDD\n" +
|
|
|
+ " ,WorkCode\n" +
|
|
|
+ " ,DataCode\n" +
|
|
|
+ " ,DataStuts\n" +
|
|
|
+ " ,DataMSG\n" +
|
|
|
+ " ,CreateUserID\n" +
|
|
|
+ " ,DataLogID)\n" +
|
|
|
+ "values\n" +
|
|
|
+ " (:LogID\n" +
|
|
|
+ " ,'2'\n" +
|
|
|
+ " ,sysdate\n" +
|
|
|
+ " ,:YYYYMMDD\n" +
|
|
|
+ " ,:WorkCode\n" +
|
|
|
+ " ,:DataCode\n" +
|
|
|
+ " ,:DataStuts\n" +
|
|
|
+ " ,:DataMSG\n" +
|
|
|
+ " ,:CreateUserID\n" +
|
|
|
+ " ,:DataLogID)";
|
|
|
+ int r = 0;
|
|
|
+ if (string.IsNullOrEmpty(datalogid))
|
|
|
+ {
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + " DKMES-ERROR:NO DATA", ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+ sre.Status = Constant.ServiceResultStatus.Other;
|
|
|
+ sre.Message = "没有同步数据";
|
|
|
+ sre.Result = "E";
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+
|
|
|
+ sqlString =
|
|
|
+ "select fp.yyyymmdd\n" +
|
|
|
+ " ,fp.workcode\n" +
|
|
|
+ " ,fp.DataCode\n" +
|
|
|
+ " ,fp.GoodsCode\n" +
|
|
|
+ " ,fp.SAPCode\n" +
|
|
|
+ " ,fp.UserCode\n" +
|
|
|
+ " ,fp.ORDERCODE\n" +
|
|
|
+ " ,fp.ORDERITEM\n" +
|
|
|
+ " ,fp.OutputNum\n" +
|
|
|
+ " ,fp.ScrapNum\n" +
|
|
|
+ " ,fp.CleanupNum\n" +
|
|
|
+ " ,fp.RecoveryNum\n" +
|
|
|
+ " ,fp.RepairNum\n" +
|
|
|
+ " from tsap_hegii_workdata wd where wd.logid = :datalogid";
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
|
|
|
+
|
|
|
+ if (workData != null && workData.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ sapParameter.Zsum = workData.Rows.Count;
|
|
|
+ sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
|
|
|
+ int index = 0;
|
|
|
+ foreach (DataRow item in workData.Rows)
|
|
|
+ {
|
|
|
+ Zspp100 info100 = new Zspp100();
|
|
|
+ // 工厂
|
|
|
+ info100.Werks = workcode;
|
|
|
+ // 型号
|
|
|
+ info100.Groes = item["GoodsCode"].ToString();
|
|
|
+ // 物料编号
|
|
|
+ info100.Matnr = item["SAPCode"].ToString();
|
|
|
+ // 生产工号
|
|
|
+ info100.Zghnu = item["UserCode"].ToString();
|
|
|
+ // 数据节点
|
|
|
+ info100.Zjdnu = item["DataCode"].ToString();
|
|
|
+ // 时间戳
|
|
|
+ info100.Zscnu = yyyymmdd;
|
|
|
+ // 销售凭证
|
|
|
+ info100.Vbeln = item["ORDERCODE"].ToString();
|
|
|
+ // 销售凭证项目
|
|
|
+ info100.Posnr = item["ORDERITEM"].ToString();
|
|
|
+ // 产量
|
|
|
+ info100.Zclng = item["OutputNum"].ToString();
|
|
|
+ // 损坯
|
|
|
+ info100.Zspng = item["SCRAPNUM"].ToString();
|
|
|
+ // 清除
|
|
|
+ info100.Zqcng = item["CLEANUPNUM"].ToString();
|
|
|
+ // 回收
|
|
|
+ info100.Zhsng = item["RECOVERYNUM"].ToString();
|
|
|
+ // 干补
|
|
|
+ info100.Zgbng = item["REPAIRNUM"].ToString();
|
|
|
+ sapParameter.TableIn[index++] = info100;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sapParameter.Zsum = 0;
|
|
|
+ sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
|
|
|
+ }
|
|
|
+
|
|
|
+ Zppfm008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
|
|
|
+
|
|
|
+ //if (result.Ztype == "E")
|
|
|
+ //{
|
|
|
+ // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
|
|
|
+ // oracleParameter = new OracleParameter[]
|
|
|
+ // {
|
|
|
+ // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
|
|
|
+ // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ // };
|
|
|
+ // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+ //}
|
|
|
+ //else
|
|
|
+ {
|
|
|
+ sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG = DataMSG||:msg where logid = :logid";
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.Ztype, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+ if (result.Ztype == "S")
|
|
|
+ {
|
|
|
+ sqlString = "update tsap_hegii_datalog t set t.createtime = :userid where logid = :datalogid";
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+ }
|
|
|
+ if (result.TableOut != null && result.TableOut.Length > 0)
|
|
|
+ {
|
|
|
+ sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
|
|
|
+ " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
|
|
|
+ "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
|
|
|
+ "and OrderCode=:OrderCode and OrderItem=:OrderItem";
|
|
|
+ foreach (Zspp100 item in result.TableOut)
|
|
|
+ {
|
|
|
+ oracleParameter = new OracleParameter[]
|
|
|
+ {
|
|
|
+ new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.Ztype, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.Zmsg, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.Groes, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.Matnr, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":UserCode",OracleDbType.Varchar2, item.Zghnu, ParameterDirection.Input),
|
|
|
+ new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Vbeln)? " " : item.Vbeln), ParameterDirection.Input),
|
|
|
+ new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Posnr)? " " : item.Posnr), ParameterDirection.Input),
|
|
|
+ };
|
|
|
+ r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ oracleConn.Commit();
|
|
|
+ sre.Message = result.Zmsg;
|
|
|
+ sre.Result = result.Ztype;
|
|
|
+ return sre;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ throw ex;
|
|
|
+ }
|
|
|
}
|
|
|
+*/
|
|
|
}
|