using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text; using System.Threading; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.DataAccess; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Service.WMSDataService; using Dongke.IBOSS.PRD.WCF.DataModels; using Newtonsoft.Json.Linq; using Oracle.ManagedDataAccess.Client; namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService { public partial class SAPDataLogic { #region 报工 /// /// 同步SAP数据(自动)(重载) /// /// 当前时间 /// 工序码 /// 本次要执行到的时间 public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate) { if (string.IsNullOrWhiteSpace(funCode)) { //return; funCode = "ALL"; } funCode = "," + funCode + ","; ServiceResultEntity sre = null; // 10 模具 if (funCode == ",ALL," || funCode.Contains(",10,")) { try { sre = SetWorkData10_50_5000("10", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 20 湿坯 if (funCode == ",ALL," || funCode.Contains(",20,")) { try { sre = SetWorkData10_50_5000("20", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 30 精坯 if (funCode == ",ALL," || funCode.Contains(",30,")) { try { sre = SetWorkData10_50_5000("30", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 40 釉坯 if (funCode == ",ALL," || funCode.Contains(",40,")) { try { sre = SetWorkData10_50_5000("40", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 50 烧成 if (funCode == ",ALL," || funCode.Contains(",50,")) { try { sre = SetWorkData10_50_5000("50", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 55 裸辞包装 if (funCode == ",ALL," || funCode.Contains(",55,")) { try { sre = SetWorkData10_50_5000("55", ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "55 裸辞包装 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "55 裸辞包装" + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 60 产成品 if (funCode == ",ALL," || funCode.Contains(",60,")) { try { sre = SyncSap5000_60(ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP5000", "60 产成品 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP5000", "60 产成品 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } } /// /// 执行与推送 /// /// /// /// public static ServiceResultEntity SetWorkData10_50_5000(string datacode, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = null; try { #region 事务1,执行存储过程 OracleParameter[] paras = null; int logid = 0; string message = string.Empty; // 10 模具 if ("10".Equals(datacode)) { 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) }; oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras); int.TryParse(paras[1].Value + "", out logid); message = paras[2].Value + ""; oracleConn.Commit(); } // 20 湿坯 else if ("20".Equals(datacode)) { 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) }; oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras); int.TryParse(paras[1].Value + "", out logid); message = paras[2].Value + ""; oracleConn.Commit(); } // 30 精坯、40 釉坯、50 烧成 else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode)) { paras = new OracleParameter[] { new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input), new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output), new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output) }; oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras); int.TryParse(paras[2].Value + "", out logid); message = paras[3].Value + ""; oracleConn.Commit(); } // 55 裸瓷包装 else if ("55".Equals(datacode)) { 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) }; oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG55", paras); int.TryParse(paras[1].Value + "", out logid); message = paras[2].Value + ""; oracleConn.Commit(); } // 如果logid为0,则数据没有生成 if (logid == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = message; return sre; } #endregion // 事物2,同步SAP接口 string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString); if (SAP_ING_NEW == "1") { sre = SyncSap5000(ndate, datacode); } return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 同步SAP接口5000端口新 /// /// /// /// /// /// public static ServiceResultEntity SyncSap5000(DateTime date, string datacode) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; int r = 0; // 查询当前节点所有不为S的日志 string sqlString = @" SELECT DL.LOGID FROM TSAP_HEGII_DATALOG_BG DL WHERE 1 = 1 AND DL.DATASTUTS = 'F' AND DL.LOGID > 6 AND DL.DATACODE = :DATACODE "; paras = new OracleParameter[] { new OracleParameter(":DATACODE", datacode), }; DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras); string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field("LOGID")).ToArray()) + ","; sqlString = @" SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD, WD.WORKCODE AS WERKS, TO_CHAR(WD.GOODSCODE) GROES, TO_CHAR(WD.SAPCODE) MATNR, TO_CHAR(WD.USERCODE) ZGHNU, TO_CHAR(WD.DATACODE) ZJDNU, TO_CHAR(WD.YYYYMMDD) ZSCNU, TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ, TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ, TO_CHAR(WD.ORDERCODE) VBELN, TO_CHAR(WD.ORDERITEM) POSNR, TO_CHAR(WD.OUTPUTNUM) ZCLNG, TO_CHAR(WD.SCRAPNUM) ZSPNG, TO_CHAR(WD.CLEANUPNUM) ZQCNG, TO_CHAR(WD.RECOVERYNUM) ZHSNG, TO_CHAR(WD.REPAIRNUM) ZGBNG, TO_CHAR(WD.TESTMOULDFLAG) ZSCMS, DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS, TO_CHAR(WD.WORKSHOP) ZSCCJ, WD.CHARG, TO_CHAR(:DATACODE) DATACODE, WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID FROM TSAP_HEGII_WORKDATA_BG WD INNER JOIN TSAP_HEGII_DATALOG_BG DL ON WD.LOGID = DL.LOGID WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 "; paras = new OracleParameter[] { new OracleParameter(":DATACODE", datacode), new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); int num = workData.Rows.Count; // 调用SAP接口 string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // 配置文件 string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030"); // 测试 // string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030"; // 正式 //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030"; string result = PostData(url030, postString, "POST"); sqlString = @" UPDATE TSAP_HEGII_DATALOG_BG T SET T.ENDTIME = SYSDATE, DATASTUTS = :DATASTUTS, DATAMSG = :MSG WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 "; paras = new OracleParameter[] { new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input), new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input), new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); oracleConn.Commit(); sre.Message = JObject.Parse(result)["ZMSG"].ToString(); sre.Result = JObject.Parse(result)["ZTYPE"].ToString(); return sre; } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "BGToSAP", "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 查询同步日志 /// /// /// /// public static ServiceResultEntity GetDataLog_BG(ClientRequestEntity cre) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = "select dl.logid\n" + " ,dl.logtype\n" + " ,dl.begintime\n" + " ,dl.endtime\n" + " ,dl.yyyymmdd\n" + " ,dl.workcode\n" + " ,dl.datacode\n" + " ,dc.datacodename\n" + " ,dl.datastuts\n" + " ,dl.datamsg\n" + " ,dl.datalogid\n" + " ,dl.executedatebegin\n" + " ,dl.executedateend\n" + " ,u.usercode synusercode\n" + " from TSAP_HEGII_DATALOG_BG dl\n" + " inner join tsap_hegii_datacode dc\n" + " on dc.datacode = dl.datacode\n" + " left join tp_mst_user u\n" + " on u.userid = dl.createuserid\n" + " where dl.logtype IN('2','3')\n" + " and dl.yyyymmdd >= :DATEBEGIN\n" + " and dl.yyyymmdd <= :DATEEND\n"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input), new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input), }; sqlString += "ORDER BY dl.logid DESC\n"; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 查询同步明细 /// /// /// /// public static ServiceResultEntity GetWorkData_BG(ClientRequestEntity cre) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { int logid = Convert.ToInt32(cre.Request); string sqlString = "\n" + "select wd.yyyymmdd\n" + " ,wd.workcode\n" + " ,wd.datacode\n" + " ,dc.datacodename\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,wd.ordercode\n" + " ,wd.orderitem\n" + " ,to_number(wd.outputnum) outputnum\n" + " ,to_number(wd.scrapnum) scrapnum\n" + " ,to_number(wd.cleanupnum) cleanupnum\n" + " ,to_number(wd.recoverynum) recoverynum\n" + " ,to_number(wd.repairnum) repairnum\n" + " ,wd.createtime\n" + " ,wd.ztype\n" + " ,wd.zmsg\n" + " ,wd.ztime\n" + " ,wd.testmouldflag\n" + " ,wd.zscs\n" + " ,wd.logid\n" + " from tsap_hegii_workdata_BG wd\n" + " inner join tsap_hegii_datacode dc\n" + " on dc.datacode = wd.datacode\n"; //update xiacm 2022-10-12 if (logid > 0) { sqlString += " where wd.logid = :logid \n"; } else { sqlString += " where dl.executedatebegin >= :DATEBEGIN and dl.executedateend < :DATEEND"; sqlString += " and (-1= :DATACODE OR wd.datacode = :DATACODE)"; } sqlString += " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input), new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input), new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 报工汇总 add xiacm 2022-10-12 /// /// /// public static ServiceResultEntity GetDataLogTotal_BG(ClientRequestEntity cre) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = "\n" + "SELECT T1.DATACODE,\n" + " T1.Actualoutput,\n" + " T2.*\n" + " FROM (\n" + " -- 业务数据汇总\n" + " -- 10\n" + " SELECT '10' AS DATACODE,\n" + " SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS Actualoutput\n" + " FROM (SELECT MH.GOODSID,\n" + " MH.MOULDID,\n" + " MH.OPERATIONTYPE,\n" + " MH.GROUTINGNUM\n" + " FROM TP_PC_MOULDCHANGEHISTORY MH\n" + " WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)\n" + " AND MH.CREATETIME >= DATE '2022-10-14'\n" + " AND MH.CREATETIME < DATE '2022-10-15'\n" + " UNION ALL\n" + " SELECT MH.GOODSIDAFTER,\n" + " MH.MOULDID,\n" + " 0,\n" + " MH.GROUTINGNUM\n" + " FROM TP_PC_MOULDCHANGEHISTORY MH\n" + " WHERE MH.OPERATIONTYPE = -1\n" + " AND MH.CREATETIME >= DATE '2022-10-14'\n" + " AND MH.CREATETIME < DATE '2022-10-15') MHH\n" + " INNER JOIN TP_PC_MOULD M\n" + " ON M.MOULDID = MHH.MOULDID\n" + " UNION ALL\n" + " -- 20\n" + " SELECT '20' AS DATACODE,\n" + " COUNT(1) AS Businessoutput\n" + " FROM TP_PM_GROUTINGDAILYDETAIL GDD\n" + " LEFT JOIN TP_MST_GOODS G\n" + " ON GDD.GOODSID = G.GOODSID\n" + " WHERE GDD.CREATETIME >= DATE '2022-10-14'\n" + " AND GDD.CREATETIME < DATE '2022-10-15'\n" + " AND GDD.GROUTINGFLAG = '1'\n" + " AND G.SCRAPSUMFLAG = '1'\n" + " UNION ALL\n" + " -- 30\n" + " SELECT '30' AS DATACODE,\n" + " SUM(T1.CC) AS Businessoutput\n" + " FROM (SELECT 1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (4, 35)\n" + " AND P.CREATETIME >= DATE '2022-10-14'\n" + " AND P.CREATETIME < DATE '2022-10-15'\n" + " UNION ALL\n" + " SELECT -1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (4, 35)\n" + " AND P.VALUEFLAG = '0'\n" + " AND P.BACKOUTTIME >= DATE '2022-10-14'\n" + " AND P.BACKOUTTIME < DATE '2022-10-15') T1\n" + " UNION ALL\n" + " -- 40\n" + " SELECT '40' AS DATACODE,\n" + " SUM(T1.CC) AS Businessoutput\n" + " FROM (SELECT 1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (5, 39)\n" + " AND P.CREATETIME >= DATE '2022-10-14'\n" + " AND P.CREATETIME < DATE '2022-10-15'\n" + " UNION ALL\n" + " SELECT -1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (5, 39)\n" + " AND P.VALUEFLAG = '0'\n" + " AND P.BACKOUTTIME >= DATE '2022-10-14'\n" + " AND P.BACKOUTTIME < DATE '2022-10-15') T1\n" + " UNION ALL\n" + " -- 50\n" + " SELECT '50' AS DATACODE,\n" + " SUM(T1.CC) AS Businessoutput\n" + " FROM (SELECT 1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (9, 48)\n" + " AND P.CREATETIME >= DATE '2022-10-14'\n" + " AND P.CREATETIME < DATE '2022-10-15'\n" + " UNION ALL\n" + " SELECT -1 AS CC\n" + " FROM TP_PM_PRODUCTIONDATA P\n" + " WHERE P.PROCEDUREID IN (9, 48)\n" + " AND P.VALUEFLAG = '0'\n" + " AND P.BACKOUTTIME >= DATE '2022-10-14'\n" + " AND P.BACKOUTTIME < DATE '2022-10-15') T1\n" + " UNION ALL\n" + " -- 60\n" + " SELECT '60' AS DATACODE,\n" + " COUNT(1) AS Businessoutput\n" + " FROM TP_PM_FINISHEDPRODUCT GH\n" + " WHERE GH.FHTIME >= DATE '2022-10-14'\n" + " AND GH.FHTIME < DATE '2022-10-15') T1\n" + " LEFT JOIN (\n" + " -- 当日推送日志数据汇总\n" + " SELECT DATACODE AS DATACODETD,\n" + " SUM(TO_NUMBER(OUTPUTNUM)) AS output,\n" + " SUM(TO_NUMBER(SCRAPNUM)) AS scrapnum,\n" + " SUM(TO_NUMBER(CLEANUPNUM)) AS cleannupnum,\n" + " SUM(TO_NUMBER(RECOVERYNUM)) AS recoverynum,\n" + " SUM(TO_NUMBER(REPAIRNUM)) AS repairnum\n" + " FROM TSAP_HEGII_WORKDATA_BG\n" + " WHERE LOGID IN (SELECT LOGID\n" + " FROM TSAP_HEGII_DATALOG_BG T\n" + " WHERE DATASTUTS = 'F'\n" + " AND EXECUTEDATEBEGIN >= DATE '2022-10-14'\n" + " AND EXECUTEDATEEND <= DATE '2022-10-15')\n" + " GROUP BY DATACODE\n" + " ORDER BY DATACODE) T2\n" + " ON T2.DATACODETD = T1.DATACODE\n" + " where (-1=:DATACODE OR T1.DATACODE= :DATACODE)\n" + " ORDER BY T1.DATACODE"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input), new OracleParameter(":DATEEND",OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input), new OracleParameter(":DATACODE",OracleDbType.Varchar2, cre.Properties["datacode"], ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } } /// /// 同步SAP接口_60节点 /// /// /// /// /// /// public static ServiceResultEntity SyncSap5000_60(DateTime date) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; int r = 0; // 查询当前节点所有不为S的日志 string sqlString = @" SELECT DL.LOGID FROM TSAP_HEGII_DATALOG_BG DL WHERE 1 = 1 AND DL.DATASTUTS = 'F' AND DL.LOGID > 6 AND DL.DATACODE = '60' ORDER BY DL.LOGID "; DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString); if (dtLogID.Rows.Count == 0) { sre.Result = "S"; sre.Message = "没有要同步的数据"; return sre; } string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field("LOGID")).ToArray()) + ","; sqlString = @" SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD, WD.WORKCODE AS WERKS, TO_CHAR(WD.GOODSCODE) GROES, TO_CHAR(WD.SAPCODE) MATNR, TO_CHAR(WD.USERCODE) ZGHNU, TO_CHAR(WD.DATACODE) ZJDNU, TO_CHAR(WD.CREATETIME, 'YYYYMMDD') ZSCNU, TO_CHAR(WD.CREATETIME, 'HH24MISS') ZKSSJ, TO_CHAR(WD.CREATETIME, 'YYYYMMDDHH24MISS') ZJSRQ, TO_CHAR(WD.ORDERCODE) VBELN, TO_CHAR(WD.ORDERITEM) POSNR, TO_CHAR(WD.OUTPUTNUM) ZCLNG, TO_CHAR(WD.SCRAPNUM) ZSPNG, TO_CHAR(WD.CLEANUPNUM) ZQCNG, TO_CHAR(WD.RECOVERYNUM) ZHSNG, TO_CHAR(WD.REPAIRNUM) ZGBNG, TO_CHAR(WD.TESTMOULDFLAG) ZSCMS, 'T' AS ZSCS, TO_CHAR(WD.WORKSHOP) ZSCCJ, WD.CHARG, '60' AS DATACODE, WD.WORKCODE || WD.CHARG || LPAD(DL.LOGID, 10, '0') AS ZID FROM TSAP_HEGII_WORKDATA_BG WD INNER JOIN TSAP_HEGII_DATALOG_BG DL ON WD.LOGID = DL.LOGID WHERE INSTR(:LOGIDS, ',' || WD.LOGID || ',') > 0 ORDER BY WD.LOGID "; paras = new OracleParameter[] { new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); int num = workData.Rows.Count; //sqlString = @" //SELECT ZID, // WERKS, // MATNR, // ZJDNU, // ZSCS, // ZSCCJ, // ZSCMS, // ZSCNU, // ZKSSJ, // ZGHNU, // GROES, // POSNR, // IDNRK, // MENGE, // MEINS, // CHARG, // LGORT // FROM TSAP_HEGII_WORKDATA_BG_ZB // WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 // ORDER BY LOGID "; //paras = new OracleParameter[] //{ // new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input), //}; //DataTable dtDetail = oracleConn.GetSqlResultToDt(sqlString, paras); // 调用SAP接口 //string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}" // + ",\"TABLE_IN1\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(dtDetail)) + "}}"; string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; // 配置文件 INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030"); // 测试 //url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030"; // 正式 //url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030"; string result = string.Empty; try { result = PostData(url030, postString, "POST"); } catch (Exception ex) { sre.Result = -2; sre.Message = "sap030接口同步失败," + ex.Message; return sre; } sqlString = @" UPDATE TSAP_HEGII_DATALOG_BG T SET T.ENDTIME = SYSDATE, DATASTUTS = :DATASTUTS, DATAMSG = :MSG WHERE INSTR(:LOGIDS, ',' || LOGID || ',') > 0 "; paras = new OracleParameter[] { new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input), new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input), new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); #region 同步WMS系统 DateTime now = DateTime.Now; string message = string.Empty; string sqlFpData = @" SELECT WL.SKU, WL.SERIALNO, WL.ADDDAY, WL.ADDTIME, WL.CODEI, WL.UDF1, WL.UDF2, WL.LPN, WL.CREATETIME, GDD.SECURITYCODE, WL.LOGTYPE FROM TP_WMS_LOG WL INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = WL.CODEI WHERE WL.VALUEFLAG = '1' AND WL.BGLOGID = :BGLOGID "; string sqlUpdate = @" UPDATE TP_WMS_LOG SET RETURNDESC = :RETURNDESC, UPDATETIME = :UPDATETIME WHERE BGLOGID = :BGLOGID "; foreach (DataRow row in dtLogID.Rows) { // 歇2s,调太快会给接口累着。 Thread.Sleep(2000); paras = new OracleParameter[] { new OracleParameter(":BGLOGID", OracleDbType.Int32, row["LOGID"], ParameterDirection.Input), }; DataTable fpData = oracleConn.GetSqlResultToDt(sqlFpData, paras); if (fpData.Rows.Count > 0) { if ("1".Equals(fpData.Rows[0]["LOGTYPE"] + "")) { message = WMSDataLogic.PushWMS2(fpData, now); } else { message = WMSDataLogic.BackPushWMS2(fpData, now); } } paras = new OracleParameter[] { new OracleParameter(":RETURNDESC", OracleDbType.NVarchar2, message, ParameterDirection.Input), new OracleParameter(":UPDATETIME", OracleDbType.Date, now, ParameterDirection.Input), new OracleParameter(":BGLOGID", OracleDbType.Int32, row["LOGID"], ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlUpdate, paras); } #endregion oracleConn.Commit(); sre.Message = JObject.Parse(result)["ZMSG"].ToString(); sre.Result = JObject.Parse(result)["ZTYPE"].ToString(); return sre; } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "BGToSAP", "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } #endregion #region 跨车间作业(注销) // /// // /// 同步SAP数据(自动) // /// // /// // public static void CrossWorkshopToSAP(DateTime date, DateTime ndate) // { // IDBTransaction oracleConn = null; // ServiceResultEntity sre = new ServiceResultEntity(); // int logid = 0; // string message = string.Empty; // string sqlString = string.Empty; // try // { // #region 生成日志 // OracleParameter[] 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) // }; // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_kcjzy", paras); // int.TryParse(paras[1].Value + "", out logid); // message = paras[2].Value + ""; // oracleConn.Commit(); // #endregion // #region 同步SAP // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // //sqlString = "select workcode from tp_mst_account where rownum = 1"; // //string workcode = oracleConn.GetSqlResultToStr(sqlString); // //workcode = "5000"; // sqlString = "SELECT\n" + // " to_char(B.EXECUTEDATEBEGIN,'yyyymmddhh24miss') AS ZYWKS,\n" + // " to_char(B.EXECUTEDATEEND,'yyyymmddhh24miss') AS ZYWJS,\n" + // " to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT,\n" + // " A.WORKCODE AS WERKS,\n" + // " A.SAPCODE AS MATNR,\n" + // " A.GOODSCODE AS GROES,\n" + // " A.WORKSHOP AS ZSCCJ,\n" + // " A.WORKSHOP AS ZSSCJ,\n" + // " A.DATACODE AS ZJDNU,\n" + // " A.ITEM AS ZZYLX,\n" + // " A.NUM AS MENGE,\n" + // //" A.ZSCS,\n" + // " 'T' AS ZSCS,\n" + // " CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS, \n" + // " '' AS ZTYPE1, \n" + // " '' AS ZMSG1 \n" + // "FROM\n" + // " TSAP_HEGII_WORKDATA_KCJZY A\n" + // " INNER JOIN TSAP_HEGII_DATALOG_KCJZY B ON B.LOGID = A.LOGID\n" + // "WHERE\n" + // " A.LOGID = :logid"; // paras = new OracleParameter[] // { // new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input), // }; // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString); // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1") // { // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033"); // //url033 = "Url033=http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033" // string result = PostData(url033, postString, "POST"); // string ztype = JObject.Parse(result)["ZTYPE"].ToString(); // string msg = JObject.Parse(result)["ZMSG"].ToString(); // sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; // paras = new OracleParameter[] // { // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input), // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input), // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input), // }; // oracleConn.ExecuteNonQuery(sqlString, paras); // oracleConn.Commit(); // } // #endregion // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "CrossWorkshopToSAP", // "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } // } // public static void CrossWorkshopToSAP_test(DateTime date, DateTime ndate) // { // IDBTransaction oracleConn = null; // ServiceResultEntity sre = new ServiceResultEntity(); // int logid = 0; // string message = string.Empty; // string sqlString = string.Empty; // try // { // #region 同步SAP // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // //sqlString = "select workcode from tp_mst_account where rownum = 1"; // //string workcode = oracleConn.GetSqlResultToStr(sqlString); // //workcode = "5000"; // sqlString = @"SELECT // to_char(:v_datebegin, 'yyyymmddhh24miss') AS ZYWKS, // to_char(:in_dateend, 'yyyymmddhh24miss') AS ZYWJS, // to_char(SYSDATE,'yyyymmddhh24miss') AS ZMONT, //'5000' AS WERKS, // MATERIALCODE AS MATNR, //GOODSCODE AS GROES, //to_char(WORKSHOP) AS ZSCCJ, //to_char(DATACODE) AS ZJDNU, // to_char(ITEM) AS ZZYLX, // to_char(count( * )) AS MENGE, // 'T' AS ZSCS, // CASE WHEN TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS, // '' AS ZTYPE1, // '' AS ZMSG1 // FROM // (--产量 // SELECT // GDD.MATERIALCODE, // gdd.goodscode, // HGDI.WORKSHOP, // HGDI.DATACODE, // 1 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_PRODUCTIONDATA PD // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 1 // AND HGDI.ITEMID = PD.PROCEDUREID // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1')) // WHERE // PD.VALUEFLAG = 1 // AND PD.CREATETIME >= :v_datebegin // AND PD.CREATETIME < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1 // UNION ALL // --产量撤销 // SELECT // GDD.MATERIALCODE, // GDD.goodscode, // HGDI.WORKSHOP, // HGDI.DATACODE AS DATACODE, // 2 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_PRODUCTIONDATA PD // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMID = PD.PROCEDUREID // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1')) // WHERE // PD.VALUEFLAG = 0 // AND PD.BACKOUTTIME >= :v_datebegin // AND PD.BACKOUTTIME < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损 // UNION ALL // SELECT // GDD.MATERIALCODE, // GDD.goodscode, // HGDI.WORKSHOP, // HGDI.DATACODE AS DATACODE, // 3 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_SCRAPPRODUCT SP // INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 2 // AND HGDI.ITEMID = PD.PROCEDUREID // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1')) // WHERE // SP.AUDITSTATUS = 1 // AND SP.AUDITDATE >= :v_datebegin // AND SP.AUDITDATE < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 工序报损撤销 // UNION ALL // SELECT // GDD.MATERIALCODE, // GDD.goodscode, // HGDI.WORKSHOP, // HGDI.DATACODE AS DATACODE, // 4 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_SCRAPPRODUCT SP // INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 2 // AND HGDI.ITEMID = PD.PROCEDUREID // AND(HGDI.ITEMID <> 104 OR(PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1')) // WHERE // SP.AUDITSTATUS = 1 // AND SP.VALUEFLAG = '0' // AND SP.BACKOUTTIME >= :v_datebegin // AND SP.BACKOUTTIME < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 盘点清除 // UNION ALL // SELECT // GDD.MATERIALCODE, // GDD.GOODSCODE, // HGDI.WORKSHOP, // HGDI.DATACODE, // 5 AS ITEM, // GDD.TESTMOULDFLAG , // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_GOODSCHANGEHISTORY GH // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 2 // AND HGDI.ITEMID = GH.OTHERID // WHERE // GH.CREATETIME >= :v_datebegin // AND GH.CREATETIME < :in_dateend // AND GH.DATATYPE IN( 11, 12 ) // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 干补 // UNION ALL // SELECT // GDD.MATERIALCODE, // GDD.GOODSCODE, // HGDI.WORKSHOP, // HGDI.DATACODE, // 6 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_SCRAPPRODUCT SP // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 2 // AND HGDI.ITEMID = SP.PROCEDUREID // WHERE // SP.AUDITSTATUS = 1 // AND SP.VALUEFLAG = '1' // AND SP.GOODSLEVELTYPEID = 9 // AND SP.SPECIALREPAIRTIME >= :v_datebegin // AND SP.SPECIALREPAIRTIME < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1-- 回收 // UNION ALL // SELECT // GDD.MATERIALCODE, // GDD.GOODSCODE, // HGDI.WORKSHOP, // HGDI.DATACODE, // 7 AS ITEM, // GDD.TESTMOULDFLAG, // G.GOODS_LINE_CODE AS ZSCS // FROM // TP_PM_SCRAPPRODUCT SP // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID // INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID // INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID // INNER JOIN TSAP_HEGII_DATAITEM HGDI ON(HGDI.DATACODE = '30' OR HGDI.DATACODE = '40' OR HGDI.DATACODE = '50') // AND HGDI.ITEMTYPE = 2 // AND HGDI.ITEMID = SP.PROCEDUREID // WHERE // SP.AUDITSTATUS = 1 // AND SP.VALUEFLAG = '1' // AND SP.RECYCLINGFLAG = '1' // AND SP.RECYCLINGTIME >= :v_datebegin // AND SP.RECYCLINGTIME < :in_dateend // AND( // (HGDI.WORKSHOP = 2 AND INSTR(GDD.GROUTINGLINECODE, 'C') = 1) // OR( // HGDI.WORKSHOP = 3 // AND(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) // ) // ) // AND INSTR(GT.GOODSTYPECODE, '001001' ) = 1 // ) // GROUP BY // MATERIALCODE, // GOODSCODE, // WORKSHOP, // DATACODE, // ITEM, // TESTMOULDFLAG, // ZSCS // ORDER BY // DATACODE, // ITEM, // WORKSHOP"; // OracleParameter[] paras = new OracleParameter[] // { // new OracleParameter(":v_datebegin", OracleDbType.Date, date, ParameterDirection.Input), // new OracleParameter(":in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input), // }; // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString); // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0") // { // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; // //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // //string url033 = ini.ReadIniData("SAP_NEW_INFO", "Url033"); // string url033 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM033"; // string result = PostData(url033, postString, "POST"); // string ztype = JObject.Parse(result)["ZTYPE"].ToString(); // string msg = JObject.Parse(result)["ZMSG"].ToString(); // //sqlString = "update TSAP_HEGII_DATALOG_KCJZY t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; // //paras = new OracleParameter[] // //{ // // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input), // // new OracleParameter(":DataStuts", OracleDbType.Varchar2, ztype, ParameterDirection.Input), // // new OracleParameter(":msg", OracleDbType.Varchar2, msg, ParameterDirection.Input), // //}; // //oracleConn.ExecuteNonQuery(sqlString, paras); // oracleConn.Commit(); // } // #endregion // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "CrossWorkshopToSAP", // "跨车间作业量" + date.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } // } // /// // /// 查询跨车间作业同步日志 // /// // /// // /// // /// // public static ServiceResultEntity GetDataLog_kczzy(ClientRequestEntity cre) // { // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string sqlString = "SELECT\n" + // " dl.logid,\n" + // " dl.begintime,\n" + // " dl.endtime,\n" + // " dl.yyyymmdd,\n" + // " dl.workcode,\n" + // " dl.datastuts,\n" + // " dl.datamsg,\n" + // " dl.executedatebegin,\n" + // " dl.executedateend,\n" + // " u.usercode synusercode\n" + // "FROM\n" + // " tsap_hegii_datalog_kcjzy dl\n" + // " LEFT JOIN tp_mst_user u ON u.userid = dl.createuserid \n" + // "WHERE\n" + // " dl.yyyymmdd >= :datebegin \n" + // " AND dl.yyyymmdd <= :dateend \n"; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input), // new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input), // }; // string datastuts = cre.Properties["datastuts"] + ""; // if (!string.IsNullOrEmpty(datastuts)) // { // sqlString += " and dl.datastuts in (" + datastuts + ")\n"; // } // sqlString += "ORDER BY dl.logid DESC\n"; // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); // return sre; // } // catch (Exception ex) // { // throw ex; // } // } // /// // /// 查询同步明细 // /// // /// // /// // /// // public static ServiceResultEntity GetWorkData_kczzy(int logid) // { // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string sqlString = "\n" + // "select wd.workshop\n" + // " ,case when wd.workshop = 2 then '二车间' when wd.workshop = 3 then '三车间' else '-' end workshopname\n " + // " ,case when wd.item = 1 then '产量' when wd.item = 2 then '产量撤销' when wd.item = 3 then '工序报损' when wd.item = 4 then '工序报损撤销' \n" + // " when wd.item = 5 then '盘点清除' when wd.item = 6 then '干补' when wd.item = 7 then '回收' else '-' end as itemname\n" + // " ,item\n" + // " ,wd.datacode\n" + // " ,dc.datacodename\n" + // " ,wd.goodscode\n" + // " ,wd.sapcode\n" + // " ,wd.num\n" + // " ,wd.createtime\n" + // " ,wd.testmouldflag\n" + // " ,wd.zscs\n" + // " ,case when wd.zscs = 'L' then '立浇【L】' when wd.zscs = 'G' then '高压【G】' when wd.zscs = 'M' then '粘接高压(三水厂)【M】' when wd.zscs = 'Q' then '吊装线【Q】' else '-' end as zscsname\n" + // " ,wd.logid\n" + // " from tsap_hegii_workdata_kcjzy wd\n" + // " inner join tsap_hegii_datacode dc\n" + // " on dc.datacode = wd.datacode\n" + // " where wd.logid = :logid \n" + // " order by wd.datacode,wd.item,wd.workshop \n"; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); // return sre; // } // catch (Exception ex) // { // throw ex; // } // } #endregion #region 报工移库(注销) ///// ///// 报工移库_同步SAP数据(自动) ///// ///// //public static void BGYKToSAP(DateTime date, DateTime ndate) //{ // IDBTransaction oracleConn = null; // ServiceResultEntity sre = new ServiceResultEntity(); // int logid = 0; // string message = string.Empty; // string sqlString = string.Empty; // try // { // #region 生成日志 // OracleParameter[] 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) // }; // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BGYK", paras); // int.TryParse(paras[1].Value + "", out logid); // message = paras[2].Value + ""; // oracleConn.Commit(); // #endregion // #region 同步SAP // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // //2022年9月8日11:38:51 更改 by fy // //sqlString = @" // //SELECT WERKS, // // MATNR, // // ZJDNU, // // ZSCS, // // ZSCCJ, // // ZSCMS, // // CHARG, // // MENGE, // // ZMLID // // FROM TSAP_HEGII_WORKDATA_BGYK // // WHERE LOGID = :LOGID "; // sqlString = @"SELECT // A.WERKS, // A.MATNR, // A.ZJDNU, // -- A.ZSCS, // 'T' AS ZSCS, // A.ZSCCJ, // A.ZSCMS, // A.CHARG, // A.MENGE, // A.ZMLID, // to_char(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS, // to_char(B.EXECUTEDATEEND, 'yyyymmddhh24miss' ) AS ZYWJS, // to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT, // to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT, // '' AS ZTYPE1, // '' AS ZMSG1 // FROM // TSAP_HEGII_WORKDATA_BGYK A // INNER JOIN TSAP_HEGII_DATALOG_BGYK B ON B.LOGID = A.LOGID // WHERE // A.LOGID = :LOGID"; // paras = new OracleParameter[] // { // new OracleParameter(":LOGID", OracleDbType.Int32, logid, ParameterDirection.Input), // }; // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); // //获取报工SAP接口是否开启 // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString); // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "1") // { // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034"); // //url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034"; // string result = PostData(url034, postString, "POST"); // string ztype = JObject.Parse(result)["ZTYPE"].ToString(); // string zmsg = JObject.Parse(result)["ZMSG"].ToString(); // sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid"; // paras = new OracleParameter[] // { // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input), // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input), // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input), // }; // oracleConn.ExecuteNonQuery(sqlString, paras); // oracleConn.Commit(); // } // #endregion // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "BGYKToSAP", // "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } //} //public static void BGYKToSAP_TEST(DateTime date, DateTime ndate) //{ // IDBTransaction oracleConn = null; // ServiceResultEntity sre = new ServiceResultEntity(); // int logid = 0; // string message = string.Empty; // string sqlString = string.Empty; // try // { // #region 同步SAP // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // //2022年9月8日11:38:51 更改 by fy // //sqlString = @" // //SELECT WERKS, // // MATNR, // // ZJDNU, // // ZSCS, // // ZSCCJ, // // ZSCMS, // // CHARG, // // MENGE, // // ZMLID // // FROM TSAP_HEGII_WORKDATA_BGYK // // WHERE LOGID = :LOGID "; // sqlString = @"SELECT '5000' WERKS,MATNR,to_char(ZJDNU) ZJDNU,'T' AS ZSCS,to_char(ZSCCJ) ZSCCJ,to_char(ZSCMS) ZSCMS,to_char(CHARG)CHARG, // to_char(MENGE) MENGE,to_char(ZMLID) ZMLID, // to_char(:V_DATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS, // to_char(:IN_DATEEND, 'yyyymmddhh24miss' ) AS ZYWJS, // to_char(SYSDATE, 'yyyymmdd' ) AS ZBUDAT, // to_char(SYSDATE, 'yyyymmddhh24miss' ) AS ZMONT FROM ( // SELECT // T.MATNR, // '30' AS ZJDNU, // G.GOODS_LINE_CODE AS ZSCS, // '2' AS ZSCCJ, // T.ZSCMS, // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG, // SUM( T.MENGE ) AS MENGE, // '3' AS ZMLID // FROM // (-- 3-3线上施釉(3)到3#刮登(99) // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.CREATETIME >= :V_DATEBEGIN // AND PD1.CREATETIME < :IN_DATEEND // AND PD1.PROCEDUREID = 99 // AND PD1.VALUEFLAG = '1' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的 // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // - COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.BACKOUTTIME >= :V_DATEBEGIN // AND PD1.BACKOUTTIME < :IN_DATEEND // AND PD1.PROCEDUREID = 99 // AND PD1.VALUEFLAG = '0' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 3 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG // ) T // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID // GROUP BY // T.MATNR, // T.ZSCMS, // G.GOODS_LINE_CODE UNION ALL // SELECT // T.MATNR, // '40' AS ZJDNU, // G.GOODS_LINE_CODE AS ZSCS, // '2' AS ZSCCJ, // T.ZSCMS, // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG, // SUM( T.MENGE ) AS MENGE, // '3' AS ZMLID // FROM // (-- 3#卸窑(103)到7-1成检出窑交接(11) // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.CREATETIME >= :V_DATEBEGIN // AND PD1.CREATETIME < :IN_DATEEND // AND PD1.PROCEDUREID = 11 // AND PD1.VALUEFLAG = '1' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG UNION ALL-- 3-3线上施釉(3)到3#刮登(99)撤销了的 // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // - COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.BACKOUTTIME >= :V_DATEBEGIN // AND PD1.BACKOUTTIME < :IN_DATEEND // AND PD1.PROCEDUREID = 11 // AND PD1.VALUEFLAG = '0' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 103 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG // ) T // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID // GROUP BY // T.MATNR, // T.ZSCMS, // G.GOODS_LINE_CODE UNION ALL // SELECT // T.MATNR, // '40' AS ZJDNU, // G.GOODS_LINE_CODE AS ZSCS, // '3' AS ZSCCJ, // T.ZSCMS, // TO_CHAR( SYSDATE, 'yyyymm' ) AS CHARG, // SUM( T.MENGE ) AS MENGE, // '2' AS ZMLID // FROM // (-- 6-1卸窑(10)到3#成检交接(104) // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.CREATETIME >= :V_DATEBEGIN // AND PD1.CREATETIME < :IN_DATEEND // AND PD1.PROCEDUREID = 104 // AND PD1.VALUEFLAG = '1' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG UNION ALL-- 6-1卸窑(10)到3#成检交接(104)撤销了的 // SELECT // GDD.GOODSID, // GDD.MATERIALCODE AS MATNR, // DECODE( GDD.TESTMOULDFLAG, '1', 'Y', 'C' ) AS ZSCMS, // - COUNT( 1 ) AS MENGE // FROM // TP_PM_PRODUCTIONDATA PD1 // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID // WHERE // PD1.BACKOUTTIME >= :V_DATEBEGIN // AND PD1.BACKOUTTIME < :IN_DATEEND // AND PD1.PROCEDUREID = 104 // AND PD1.VALUEFLAG = '0' // AND EXISTS ( SELECT 1 FROM TP_PM_PRODUCTIONDATA PD2 WHERE PD2.BARCODE = PD1.BARCODE AND PD2.PROCEDUREID = 10 ) // GROUP BY // GDD.GOODSID, // GDD.MATERIALCODE, // GDD.TESTMOULDFLAG // ) T // LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID // GROUP BY // T.MATNR, // T.ZSCMS, // G.GOODS_LINE_CODE // ) WHERE MENGE > 0"; // OracleParameter[] paras = new OracleParameter[] // { // new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input), // new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input), // }; // DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); // //获取报工SAP接口是否开启 // sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; // string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString); // if (workData != null && workData.Rows.Count > 0 && SAP_ING_NEW == "0") // { // string postString = "{\"IT_INPUT\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; // //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // //string url034 = ini.ReadIniData("SAP_NEW_INFO", "Url034"); // string url034 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM034"; // string result = PostData(url034, postString, "POST"); // string ztype = JObject.Parse(result)["ZTYPE"].ToString(); // string zmsg = JObject.Parse(result)["ZMSG"].ToString(); // //sqlString = "update TSAP_HEGII_DATALOG_BGYK t set t.EndTime = sysdate, ZTYPE = :ZTYPE, ZMSG =:ZMSG where logid = :logid"; // //paras = new OracleParameter[] // //{ // // new OracleParameter(":logid", OracleDbType.Varchar2, logid, ParameterDirection.Input), // // new OracleParameter(":ZTYPE", OracleDbType.Varchar2, ztype, ParameterDirection.Input), // // new OracleParameter(":ZMSG", OracleDbType.Varchar2, zmsg, ParameterDirection.Input), // //}; // //oracleConn.ExecuteNonQuery(sqlString, paras); // oracleConn.Commit(); // } // #endregion // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "BGYKToSAP", // "报工移库" + date.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } //} ///// ///// 查询同步日志 ///// ///// ///// ///// //public static ServiceResultEntity GetDataLog_BGYK(ClientRequestEntity cre) //{ // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string sqlString = @" // SELECT DL.LOGID, // DL.BEGINTIME, // DL.ENDTIME, // DL.YYYYMMDD, // DL.ZTYPE, // DL.ZMSG, // U.USERCODE SYNUSERCODE // FROM TSAP_HEGII_DATALOG_BGYK DL // LEFT JOIN TP_MST_USER U // ON U.USERID = DL.CREATEUSERID // WHERE DL.YYYYMMDD >= :DATEBEGIN // AND DL.YYYYMMDD <= :DATEEND "; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":DATEBEGIN",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input), // new OracleParameter(":DATEEND",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input), // }; // sqlString += "ORDER BY dl.logid DESC\n"; // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); // return sre; // } // catch (Exception ex) // { // throw ex; // } //} ///// ///// 查询同步明细 ///// ///// ///// ///// //public static ServiceResultEntity GetWorkData_BGYK(int logid) //{ // IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string sqlString = @" // SELECT WERKS, // MATNR, // ZJDNU, // ZSCS, // ZSCCJ, // ZSCMS, // CHARG, // MENGE, // ZMLID // FROM TSAP_HEGII_WORKDATA_BGYK // WHERE LOGID = :LOGID "; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":LOGID",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); // return sre; // } // catch (Exception ex) // { // throw ex; // } //} #endregion #region PostData 请求 public 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.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //UTF8标准转码加密 INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // 配置文件 string userName = ini.ReadIniData("SAP_NEW_INFO", "userName"); // 测试 //string userName = "hgsapdk:Sapdk#240"; // 正式 //string userName = "PODKMES:Sapdk#800"; string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(userName)); myRequest.Headers.Add("Authorization", "Basic " + base64Header); //发送请求 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(); // 结果 OutputLog.TraceLog(LogPriority.Information, "报工030", method, data, LocalPath.LogExePath + "SAP_HEGII\\Info_030"); return returnXml; } #endregion #region 转换 public class ModelConvertHelper where T : new() { public static List ConvertToModel(DataTable dt) { // 定义集合 List ts = new List(); // 获得此模型的类型 Type type = typeof(T); string tempName = ""; foreach (DataRow dr in dt.Rows) { T t = new T(); // 获得此模型的公共属性 PropertyInfo[] propertys = t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { tempName = pi.Name; // 检查DataTable是否包含此列 if (dt.Columns.Contains(tempName)) { // 判断此属性是否有Setter if (!pi.CanWrite) continue; object value = dr[tempName]; if (value != DBNull.Value) pi.SetValue(t, value, null); } } ts.Add(t); } return ts; } } #endregion } }