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;
using static System.Net.WebRequestMethods;
namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
{
public partial class SAPDataLogic
{
#region 跨车间作业
///
/// 同步SAP数据(自动)
///
///
public static void CrossWorkshopToSAP(DateTime date, DateTime ndate)
{
IDBTransaction oracleConn = null;
ServiceResultEntity sre = new ServiceResultEntity();
OracleParameter[] paras = null;
int logid = 0;
string message = string.Empty;
string sqlString = string.Empty;
try
{
#region 生成日志
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
// 手动推
//logid = 28;
oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
sqlString = @"
SELECT TO_CHAR(B.EXECUTEDATEBEGIN, 'yyyymmddhh24miss') AS ZYWKS,
TO_CHAR(B.EXECUTEDATEEND - 1 / 24 / 60 / 60, 'yyyymmddhh24miss') AS ZYWJS,
TO_CHAR(SYSDATE, 'yyyymmddhh24miss') AS ZMONT,
A.WORKCODE AS WERKS,
A.SAPCODE AS MATNR,
A.GOODSCODE AS GROES,
A.WORKSHOP AS ZSCCJ,
A.WORKSHOP AS ZSSCJ,
A.DATACODE AS ZJDNU,
A.ITEM AS ZZYLX,
A.NUM AS MENGE,
'T' AS ZSCS,
CASE WHEN A.TESTMOULDFLAG = 1 THEN 'Y' ELSE 'C' END AS ZSCMS,
'' AS ZTYPE1,
'' AS ZMSG1
FROM TSAP_HEGII_WORKDATA_KCJZY A
INNER JOIN TSAP_HEGII_DATALOG_KCJZY 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);
//sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
//string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
if (workData != null && workData.Rows.Count > 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 url033 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM033";
string ztype, msg = string.Empty;
try
{
string result = PostData(url033, postString, "POST");
ztype = JObject.Parse(result)["ZTYPE"].ToString();
msg = JObject.Parse(result)["ZMSG"].ToString();
}
catch (Exception ex)
{
ztype = "E";
msg = ex.Message;
}
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_");
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
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_");
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 查询跨车间作业同步日志
///
///
///
///
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.EXECUTEDATEBEGIN >= :datebegin \n" +
" AND dl.EXECUTEDATEEND <= :dateend \n";
OracleParameter[] oracleParameter = new OracleParameter[]
{
new OracleParameter(":datebegin",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
new OracleParameter(":dateend",OracleDbType.Date, 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;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 查询同步明细
///
///
///
///
public static ServiceResultEntity GetWorkData_kczzy(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.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";
if (logid > 0)
{
sqlString += " where wd.logid = :logid \n";
}
else
{
sqlString += " inner join tsap_hegii_datalog_kcjzy dl\n" +
" on wd.logid=dl.logid \n" +
" where dl.EXECUTEDATEBEGIN>= :datebegin \n" +
" and dl.EXECUTEDATEEND<= :dateend \n";
}
sqlString += " order by wd.datacode,wd.item,wd.workshop \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),
};
sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
#endregion
#region 报工
/////
///// 同步SAP数据(自动)
/////
/////
//public static void AutoWorkDataToSAP5000(DateTime date, string funCode)
//{
// if (string.IsNullOrWhiteSpace(funCode))
// {
// //return;
// funCode = "ALL";
// }
// funCode = "," + funCode + ",";
// ServiceResultEntity sre = null;
// // 10 模具
// if (funCode == ",ALL," || funCode.Contains(",10,"))
// {
// try
// {
// sre = SetWorkData10_50(date, "10", 0);
// if (sre.Status != Constant.ServiceResultStatus.Success ||
// "S" != sre.Result + "")
// {
// OutputLog.TraceLog(LogPriority.Warning,
// "AutoWorkDataToSAP",
// "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// JsonHelper.ToJson(sre),
// LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// }
// }
// catch (Exception ex)
// {
// OutputLog.TraceLog(LogPriority.Error,
// "AutoWorkDataToSAP",
// "10 模具 " + date.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(date, "20", 0);
// if (sre.Status != Constant.ServiceResultStatus.Success ||
// "S" != sre.Result + "")
// {
// OutputLog.TraceLog(LogPriority.Warning,
// "AutoWorkDataToSAP",
// "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// JsonHelper.ToJson(sre),
// LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// }
// }
// catch (Exception ex)
// {
// OutputLog.TraceLog(LogPriority.Error,
// "AutoWorkDataToSAP",
// "20 湿坯 " + date.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(date, "30", 0);
// if (sre.Status != Constant.ServiceResultStatus.Success ||
// "S" != sre.Result + "")
// {
// OutputLog.TraceLog(LogPriority.Warning,
// "AutoWorkDataToSAP",
// "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// JsonHelper.ToJson(sre),
// LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// }
// }
// catch (Exception ex)
// {
// OutputLog.TraceLog(LogPriority.Error,
// "AutoWorkDataToSAP",
// "30 精坯 " + date.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(date, "40", 0);
// if (sre.Status != Constant.ServiceResultStatus.Success ||
// "S" != sre.Result + "")
// {
// OutputLog.TraceLog(LogPriority.Warning,
// "AutoWorkDataToSAP",
// "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// JsonHelper.ToJson(sre),
// LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// }
// }
// catch (Exception ex)
// {
// OutputLog.TraceLog(LogPriority.Error,
// "AutoWorkDataToSAP",
// "40 釉坯 " + date.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(date, "50", 0);
// if (sre.Status != Constant.ServiceResultStatus.Success ||
// "S" != sre.Result + "")
// {
// OutputLog.TraceLog(LogPriority.Warning,
// "AutoWorkDataToSAP",
// "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// JsonHelper.ToJson(sre),
// LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// }
// }
// catch (Exception ex)
// {
// OutputLog.TraceLog(LogPriority.Error,
// "AutoWorkDataToSAP",
// "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// ex.ToString(),
// LocalPath.LogExePath + "SAP_HEGII\\Error_");
// }
// }
// //// 6001 成品明细
// //if (funCode == ",ALL," || funCode.Contains(",6001,"))
// //{
// // try
// // {
// // sre = SetFP6001(date, 0);
// // if (sre.Status != Constant.ServiceResultStatus.Success ||
// // "S" != sre.Result + "")
// // {
// // OutputLog.TraceLog(LogPriority.Warning,
// // "AutoWorkDataToSAP",
// // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// // JsonHelper.ToJson(sre),
// // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// // }
// // }
// // catch (Exception ex)
// // {
// // OutputLog.TraceLog(LogPriority.Error,
// // "AutoWorkDataToSAP",
// // "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// // ex.ToString(),
// // LocalPath.LogExePath + "SAP_HEGII\\Error_");
// // }
// //}
// //// 6001 成品明细(小时)-20分钟
// //if (funCode == ",6002,")
// //{
// // try
// // {
// // sre = SetFP6002(date, 0);
// // if (sre.Status != Constant.ServiceResultStatus.Success ||
// // "S" != sre.Result + "")
// // {
// // OutputLog.TraceLog(LogPriority.Warning,
// // "AutoWorkDataToSAP",
// // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// // JsonHelper.ToJson(sre),
// // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
// // }
// // }
// // catch (Exception ex)
// // {
// // OutputLog.TraceLog(LogPriority.Error,
// // "AutoWorkDataToSAP",
// // "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
// // ex.ToString(),
// // LocalPath.LogExePath + "SAP_HEGII\\Error_");
// // }
// //}
//}
///
/// 同步SAP数据(自动)(重载)
///
/// 当前时间
/// 工序码
/// 本次要执行到的时间
public static void AutoWorkDataToSAP5000(string funCode, DateTime ndate)
{
if (string.IsNullOrWhiteSpace(funCode))
{
//return;
funCode = "ALL";
}
funCode = "," + funCode + ",";
ServiceResultEntity sre = null;
// 1001 模具生产
if (funCode == ",ALL," || funCode.Contains(",1001,"))
{
try
{
sre = SetWorkData1001_5000("1001", ndate);
if (sre.Status != Constant.ServiceResultStatus.Success ||
"S" != sre.Result + "")
{
OutputLog.TraceLog(LogPriority.Warning,
"AutoWorkDataToSAP5000",
"1001 模具生产 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
JsonHelper.ToJson(sre),
LocalPath.LogExePath + "SAP_HEGII\\Warn_");
}
}
catch (Exception ex)
{
OutputLog.TraceLog(LogPriority.Error,
"AutoWorkDataToSAP5000",
"1001 模具生产 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
ex.ToString(),
LocalPath.LogExePath + "SAP_HEGII\\Error_");
}
}
// 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_");
}
}
// 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 void AutoWorkDataToSAP5000SBBG(DateTime ndate )
{
IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
try
{
// 查询该时间段内的所有商标变更 的条码
string sqlString = "SELECT T.*\n" +
" FROM (SELECT lh.barcode\n" +
" ,lh.oldlogoid\n" +
" ,nvl(gls.materialcode, g.materialcode) materialcode\n" +
" ,nvl(gls1.materialcode, g.materialcode) newmaterialcode\n" +
" ,lh.newlogoid\n" +
" ,gdd.goodsid\n" +
" ,lh.createtime\n" +
" ,lh.SAPFLAG\n" +
" FROM tp_pm_logochangedrecord lh\n" +
" LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
" ON gdd.barcode = lh.barcode\n" +
" INNER JOIN tp_mst_goods g\n" +
" ON g.goodsid = gdd.goodsid\n" +
" LEFT JOIN tp_mst_goodslogosap gls\n" +
" ON gdd.goodsid = gls.goodsid\n" +
" AND gls.logoid = lh.oldlogoid\n" +
" LEFT JOIN tp_mst_goodslogosap gls1\n" +
" ON gdd.goodsid = gls1.goodsid\n" +
" AND gls1.logoid = lh.newlogoid\n" +
" WHERE lh.createtime >= DATE '2024-03-01'\n" +
" AND lh.SAPFLAG = 0 " +
" AND lh.oldlogoid <> lh.newlogoid " +
" AND nvl(gls.materialcode, g.materialcode) <> nvl(gls1.materialcode, g.materialcode) " +
" order by lh.createtime) T\n" +
" WHERE rownum < 15";
DataTable barcodeTable = oracleTrConn.GetSqlResultToDt(sqlString, null);
int returnRows = 0;
if (barcodeTable != null && barcodeTable.Rows.Count > 0)
{
for (int i = 0; i < barcodeTable.Rows.Count; i++)
{
string barcode = barcodeTable.Rows[i]["barcode"].ToString();
string oldMatnr = barcodeTable.Rows[i]["materialcode"].ToString();
string newMatnr = barcodeTable.Rows[i]["newmaterialcode"].ToString();
string cretetime = barcodeTable.Rows[i]["createtime"].ToString();
int logoid = Convert.ToInt32(barcodeTable.Rows[i]["newlogoid"]);
if (oldMatnr != newMatnr)
{
#region 先查询sap数据
DataSet sapDataSet = new DataSet();
//查询变更的型号信息
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter("IN_BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
new OracleParameter("IN_GOODSID", OracleDbType.Int32, 0, ParameterDirection.Input),
new OracleParameter("IN_LOGOID", OracleDbType.Int32, logoid, ParameterDirection.Input),
new OracleParameter("OUT_RESULT", OracleDbType.RefCursor, null, ParameterDirection.Output),
};
sapDataSet = oracleTrConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG_BIANGENG", paras);
#endregion
#region sap报工
if (sapDataSet != null && sapDataSet.Tables.Count > 0 && sapDataSet.Tables[0].Rows.Count > 0 && !string.IsNullOrEmpty(oldMatnr))
{
DataTable sapresultTable = sapDataSet.Tables[0];
//记录所有logid,先设置状态为Q,加完明细改为F
List logids = new List();
DataTable dTable = new DataTable();
//获取总单datacode
DataView dv = new DataView(sapresultTable);
dTable = dv.ToTable(true, "DATACODE");
for (int j = 0; j < dTable.Rows.Count; j++)
{
//sap日志总单(不同节点)
string sqlText = "SELECT SEQ_TSAP_DATALOG_BG.nextval FROM dual";
//判断有几个节点 20,30,40,50
#region 20节点
if (dTable.Rows[j]["DATACODE"].ToString() == "20")
{
int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
//记录logid
logids.Add(logid);
#region log总单
sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
" (LOGID,\n" +
" LOGTYPE,\n" +
" BEGINTIME,\n" +
" YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" DATASTUTS,\n" +
" DATAMSG,\n" +
" DATALOGID,\n" +
" EXECUTEDATEBEGIN,\n" +
" EXECUTEDATEEND,\n" +
" REMARKS,\n" +
" SAPGUID)\n" +
" VALUES\n" +
" (:LOGID,\n" +
" '4',\n" +
" SYSDATE,\n" +
" TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '20',\n" +
" 'Q',\n" +
" '',\n" +
" :LOGID,\n" +
" SYSDATE,\n" +
" SYSDATE,\n" +
" :REMARKS,\n" +
" SYS_GUID())";
paras = new OracleParameter[]
{
new OracleParameter(":LOGID",logid),
new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
};
returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
#endregion
#region 明细
DataTable table20 = sapresultTable.Copy();
DataRow[] drRow20 = table20.Select("DATACODE = 20");
foreach (DataRow row in drRow20)
{
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '20',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '20',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",oldMatnr),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
}
#endregion
}
#endregion
#region 30节点
else if (dTable.Rows[j]["DATACODE"].ToString() == "30")
{
int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
//记录logid
logids.Add(logid);
sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
" (LOGID,\n" +
" LOGTYPE,\n" +
" BEGINTIME,\n" +
" YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" DATASTUTS,\n" +
" DATAMSG,\n" +
" DATALOGID,\n" +
" EXECUTEDATEBEGIN,\n" +
" EXECUTEDATEEND,\n" +
" REMARKS,\n" +
" SAPGUID)\n" +
" VALUES\n" +
" (:LOGID,\n" +
" '4',\n" +
" SYSDATE,\n" +
" TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" 5000,\n" +
" :DATACODE,\n" +
" 'Q',\n" +
" '',\n" +
" :LOGID,\n" +
" SYSDATE,\n" +
" SYSDATE,\n" +
" :REMARKS,\n" +
" SYS_GUID())";
paras = new OracleParameter[]
{
new OracleParameter(":LOGID",logid),
new OracleParameter(":DATACODE","30"),
new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
};
returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
#region 明细
DataTable table30 = sapresultTable.Copy();
DataRow[] drRow30 = table30.Select("DATACODE = 30");
foreach (DataRow row in drRow30)
{
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '30',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '30',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",oldMatnr),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
}
#endregion
}
#endregion
#region 40节点
else if (dTable.Rows[j]["DATACODE"].ToString() == "40")
{
int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
//记录logid
logids.Add(logid);
sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
" (LOGID,\n" +
" LOGTYPE,\n" +
" BEGINTIME,\n" +
" YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" DATASTUTS,\n" +
" DATAMSG,\n" +
" DATALOGID,\n" +
" EXECUTEDATEBEGIN,\n" +
" EXECUTEDATEEND,\n" +
" REMARKS,\n" +
" SAPGUID)\n" +
" VALUES\n" +
" (:LOGID,\n" +
" '4',\n" +
" SYSDATE,\n" +
" TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" 5000,\n" +
" :DATACODE,\n" +
" 'Q',\n" +
" '',\n" +
" :LOGID,\n" +
" SYSDATE,\n" +
" SYSDATE,\n" +
" :REMARKS,\n" +
" SYS_GUID())";
paras = new OracleParameter[]
{
new OracleParameter(":LOGID",logid),
new OracleParameter(":DATACODE","40"),
new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
};
returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
#region 明细
DataTable table40 = sapresultTable.Copy();
DataRow[] drRow40 = table40.Select("DATACODE = 40");
foreach (DataRow row in drRow40)
{
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '40',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '40',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",oldMatnr),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
}
#endregion
}
#endregion
#region 50节点
else if (dTable.Rows[j]["DATACODE"].ToString() == "50")
{
int logid = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
//记录logid
logids.Add(logid);
sqlText = "INSERT INTO TSAP_HEGII_DATALOG_BG\n" +
" (LOGID,\n" +
" LOGTYPE,\n" +
" BEGINTIME,\n" +
" YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" DATASTUTS,\n" +
" DATAMSG,\n" +
" DATALOGID,\n" +
" EXECUTEDATEBEGIN,\n" +
" EXECUTEDATEEND,\n" +
" REMARKS,\n" +
" SAPGUID)\n" +
" VALUES\n" +
" (:LOGID,\n" +
" '4',\n" +
" SYSDATE,\n" +
" TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" 5000,\n" +
" :DATACODE,\n" +
" 'Q',\n" +
" '',\n" +
" :LOGID,\n" +
" SYSDATE,\n" +
" SYSDATE,\n" +
" :REMARKS,\n" +
" SYS_GUID())";
paras = new OracleParameter[]
{
new OracleParameter(":LOGID",logid),
new OracleParameter(":DATACODE","50"),
new OracleParameter(":REMARKS","注浆变更:新商标ID:"+logoid),
};
returnRows = oracleTrConn.ExecuteNonQuery(sqlText, paras);
#region 明细
DataTable table50 = sapresultTable.Copy();
DataRow[] drRow50 = table50.Select("DATACODE = 50");
foreach (DataRow row in drRow50)
{
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '50',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",row["SAPCODE"].ToString()),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",row["OUTPUTNUM"].ToString()),
new OracleParameter(":SCRAPNUM",row["SCRAPNUM"].ToString()),
new OracleParameter(":CLEANUPNUM",row["CLEANUPNUM"].ToString()),
new OracleParameter(":REPAIRNUM",row["REPAIRNUM"].ToString()),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
sqlText = "INSERT INTO TSAP_HEGII_WORKDATA_BG\n" +
" (YYYYMMDD,\n" +
" WORKCODE,\n" +
" DATACODE,\n" +
" GOODSCODE,\n" +
" SAPCODE,\n" +
" USERCODE,\n" +
" OUTPUTNUM,\n" +
" SCRAPNUM,\n" +
" CLEANUPNUM,\n" +
" REPAIRNUM,\n" +
" WORKSHOP,\n" +
" LOGID,\n" +
" TESTMOULDFLAG,\n" +
" ZSCS,\n" +
" CHARG)\n" +
" VALUES\n" +
" (TO_CHAR(SYSDATE, 'YYYYMMDD'),\n" +
" '5000',\n" +
" '50',\n" +
" :GOODSCODE,\n" +
" :SAPCODE,\n" +
" :USERCODE,\n" +
" :OUTPUTNUM,\n" +
" :SCRAPNUM,\n" +
" :CLEANUPNUM,\n" +
" :REPAIRNUM,\n" +
" :WORKSHOP,\n" +
" :LOGID,\n" +
" :TESTMOULDFLAG,\n" +
" :ZSCS,\n" +
" :CHARG)";
paras = new OracleParameter[]
{
new OracleParameter(":GOODSCODE",row["GOODSCODE"].ToString()),
new OracleParameter(":SAPCODE",oldMatnr),
new OracleParameter(":USERCODE",row["USERCODE"].ToString()),
new OracleParameter(":OUTPUTNUM",Convert.ToInt32(row["OUTPUTNUM"])*(-1)),
new OracleParameter(":SCRAPNUM",Convert.ToInt32(row["SCRAPNUM"])*(-1)),
new OracleParameter(":CLEANUPNUM",Convert.ToInt32(row["CLEANUPNUM"])*(-1)),
new OracleParameter(":REPAIRNUM",Convert.ToInt32(row["REPAIRNUM"])*(-1)),
new OracleParameter(":WORKSHOP",row["WORKSHOP"].ToString()),
new OracleParameter(":LOGID",logid),
new OracleParameter(":TESTMOULDFLAG",row["TESTMOULDFLAG"].ToString()),
new OracleParameter(":ZSCS",row["ZSCS"].ToString()),
new OracleParameter(":CHARG",row["CHARG"].ToString()),
};
returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
}
#endregion
}
#endregion
}
#region 更新总单状态为F
string ids = string.Join(",", logids);
if (!string.IsNullOrWhiteSpace(ids))
{
string sql1 = "update TSAP_HEGII_DATALOG_BG set DATASTUTS='F' where DATASTUTS = 'Q' AND LOGID IN (" + ids + ") ";
returnRows += oracleTrConn.ExecuteNonQuery(sql1);
//更新商标变更明细表
sql1 = " update tp_pm_logochangedrecord set SAPFLAG='1',SAPLOGID = '" + ids + "' where barcode =" + barcode + " and createtime = to_date('" + cretetime + "','yyyy-mm-dd hh24:mi:ss')";
returnRows += oracleTrConn.ExecuteNonQuery(sql1);
}
#endregion
}
#endregion
}
}
}
oracleTrConn.Commit();
oracleTrConn.Disconnect();
}
catch (Exception ex)
{
if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
{
oracleTrConn.Rollback();
oracleTrConn.Disconnect();
}
throw ex;
}
finally
{
if (oracleTrConn != null)
{
oracleTrConn.Close();
}
}
}
///
/// 执行与推送
///
///
///
///
public static ServiceResultEntity SetWorkData1001_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;
// 1001 模具生产
if ("1001".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_BG1001", 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 = SyncSap1001_5000(ndate, datacode);
}
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn != null &&
oracleConn.ConnState == ConnectionState.Open)
{
oracleConn.Disconnect();
}
}
}
///
/// 同步SAP接口5000端口新
///
///
///
///
///
///
public static ServiceResultEntity SyncSap1001_5000(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 DL.DATASTUTS = 'F'
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.ORDERCODE) AS ZID,
TO_CHAR(WD.WORKCODE) AS WERKS,
TO_CHAR(WD.SAPCODE) MATNR,
TO_CHAR(WD.YYYYMMDD) BUDAT,
TO_CHAR(WD.OUTPUTNUM) ZDKCL,
TO_CHAR(WD.ORDERITEM) IDNRK
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;
if (num > 0)
{
// 调用SAP接口
//string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}";
string postString = "{\"IT_TAB\":{\"item\":" + JsonHelper.ToJson(workData) + "}}";
INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
// 配置文件
string url_BG1001_049 = ini.ReadIniData("SAP_NEW_INFO", "Url_BG1001_049");
//string url_BG1001_049 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM049";
string result = PostData(url_BG1001_049, 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);
sre.Message = JObject.Parse(result)["ZMSG"].ToString();
sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
}
else
{
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, "S", ParameterDirection.Input),
new OracleParameter(":MSG",OracleDbType.Varchar2, "num:0", ParameterDirection.Input),
new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
};
r = oracleConn.ExecuteNonQuery(sqlString, paras);
sre.Message = "num:0";
sre.Result = "S";
}
oracleConn.Commit();
return sre;
}
catch (Exception ex)
{
OutputLog.TraceLog(LogPriority.Error,
"BG1001ToSAP",
"报工" + 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 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 釉坯
else if ("30".Equals(datacode) || "40".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();
}
// 50 烧成
else if ("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_BG50", paras);
int.TryParse(paras[2].Value + "", out logid);
message = paras[3].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" +
" ,DECODE(dl.logtype, '4', '变更数据','') AS Remarks\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','4')\n" +
" and dl.executedatebegin >= :DATEBEGIN\n" +
" and dl.executedateend < :DATEEND\n" +
" and (-1= :DATACODE or dl.datacode=:DATACODE )";//add xiacm 2022-10-12
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),
};
sqlString += "ORDER BY dl.logid DESC\n";
sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 查询同步明细
///
///
///
///
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_DATALOG_BG dl\n" +
" on dl.logid = wd.logid\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;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 报工汇总 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 = @"
SELECT T1.DATACODE,
T1.ACTUALOUTPUT,
T2.OUTPUT,
T2.SCRAPNUM,
T2.CLEANNUPNUM,
T2.RECOVERYNUM,
T2.REPAIRNUM,
T3.DRCXFDRJJDCCP,
T4.DRJJBQTRCXDCCP,
T1.ACTUALOUTPUT + NVL(T4.DRJJBQTRCXDCCP, 0) - NVL(T3.DRCXFDRJJDCCP, 0) -
(T2.OUTPUT + T2.RECOVERYNUM) AS DIFFER
FROM (
-- 业务数据汇总
-- 10
SELECT '10' AS DATACODE,
SUM(DECODE(MHH.OPERATIONTYPE, 1, M.STANDARDGROUTINGSUM, 0)) AS ACTUALOUTPUT
FROM (SELECT MH.GOODSID,
MH.MOULDID,
MH.OPERATIONTYPE,
MH.GROUTINGNUM
FROM TP_PC_MOULDCHANGEHISTORY MH
WHERE MH.OPERATIONTYPE IN (1, 2, 3, 9, 11, -1)
AND MH.CREATETIME >= :DATEBEGIN
AND MH.CREATETIME < :DATEEND
UNION ALL
SELECT MH.GOODSIDAFTER,
MH.MOULDID,
0,
MH.GROUTINGNUM
FROM TP_PC_MOULDCHANGEHISTORY MH
WHERE MH.OPERATIONTYPE = -1
AND MH.CREATETIME >= :DATEBEGIN
AND MH.CREATETIME < :DATEEND) MHH
INNER JOIN TP_PC_MOULD M
ON M.MOULDID = MHH.MOULDID
UNION ALL
-- 20
SELECT '20' AS DATACODE,
SUM(DECODE(GH.DATATYPE, 1, 1, -1)) BUSINESSOUTPUT
FROM TP_PM_GOODSCHANGEHISTORY GH
INNER JOIN TP_MST_GOODS G
ON G.GOODSID = GH.GOODSID
WHERE GH.CREATETIME >= :DATEBEGIN
AND GH.CREATETIME < :DATEEND
AND GH.DATATYPE IN (1, 2)
AND G.SCRAPSUMFLAG = '1'
UNION ALL
-- 30
SELECT '30' AS DATACODE,
SUM(T1.CC) AS BUSINESSOUTPUT
FROM (SELECT 1 AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN (53, 97)
AND P.CREATETIME >= :DATEBEGIN
AND P.CREATETIME < :DATEEND
UNION ALL
SELECT -1 AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN (53, 97)
AND P.VALUEFLAG = '0'
AND P.BACKOUTTIME >= :DATEBEGIN
AND P.BACKOUTTIME < :DATEEND) T1
UNION ALL
-- 40
SELECT '40' AS DATACODE,
SUM(T1.CC) AS BUSINESSOUTPUT
FROM (SELECT 1 AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN (65, 99)
AND P.CREATETIME >= :DATEBEGIN
AND P.CREATETIME < :DATEEND
UNION ALL
SELECT -1 AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN (65, 99)
AND P.VALUEFLAG = '0'
AND P.BACKOUTTIME >= :DATEBEGIN
AND P.BACKOUTTIME < :DATEEND) T1
UNION ALL
-- 50
SELECT '50' AS DATACODE,
SUM(T1.CC) AS BUSINESSOUTPUT
FROM (SELECT COUNT(DISTINCT P.BARCODE) AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID IN (11, 104)
AND P.ISREFIRE = '0'
AND P.ISLENGBU = '0'
AND ((P.PROCEDUREID = 11 AND (P.CHECKFLAG = '1' OR P.CHECKFLAG IS NULL))
OR (P.PROCEDUREID = 104 AND P.CHECKFLAG = '1'))
AND P.CREATETIME >= :DATEBEGIN
AND P.CREATETIME < :DATEEND
UNION ALL
SELECT -1 AS CC
FROM TP_PM_PRODUCTIONDATA P
WHERE P.PROCEDUREID = 11
AND P.VALUEFLAG = '0'
AND P.ISREFIRE = '0'
AND P.ISLENGBU = '0'
AND P.BACKOUTTIME >= :DATEBEGIN
AND P.BACKOUTTIME < :DATEEND) T1
UNION ALL
-- 60
SELECT '60' AS DATACODE,
COUNT(1) AS BUSINESSOUTPUT
FROM TP_PM_FINISHEDPRODUCT GH
WHERE GH.FHTIME >= :DATEBEGIN
AND GH.FHTIME < :DATEEND) T1
LEFT JOIN (
-- 当日推送日志数据汇总
SELECT DATACODE AS DATACODETD,
SUM(TO_NUMBER(OUTPUTNUM)) AS OUTPUT,
SUM(TO_NUMBER(SCRAPNUM)) AS SCRAPNUM,
SUM(TO_NUMBER(CLEANUPNUM)) AS CLEANNUPNUM,
SUM(TO_NUMBER(RECOVERYNUM)) AS RECOVERYNUM,
SUM(TO_NUMBER(REPAIRNUM)) AS REPAIRNUM
FROM TSAP_HEGII_WORKDATA_BG
WHERE LOGID IN (SELECT LOGID
FROM TSAP_HEGII_DATALOG_BG T
WHERE DATASTUTS = 'S'
AND EXECUTEDATEBEGIN >= :DATEBEGIN
AND EXECUTEDATEEND <= :DATEEND)
GROUP BY DATACODE
ORDER BY DATACODE) T2
ON T2.DATACODETD = T1.DATACODE
LEFT JOIN (
-- 当日撤销非当日交接的产成品
SELECT '60' AS DATACODE,
COUNT(WL.CODEI) AS DRCXFDRJJDCCP
FROM TP_WMS_LOG WL
WHERE LOGTYPE = 2
AND EXISTS (SELECT 1
FROM TP_WMS_LOG WL1
WHERE WL1.CODEI = WL.CODEI
AND WL1.LOGTYPE = 1
AND TRUNC(WL1.CREATETIME) < TRUNC(WL.CREATETIME))
AND WL.CREATETIME >= :DATEBEGIN
AND WL.CREATETIME < :DATEEND) T3
ON T3.DATACODE = T1.DATACODE
LEFT JOIN (
-- 当日交接被其他日撤销的产成品
SELECT '60' AS DATACODE,
COUNT(WL.CODEI) AS DRJJBQTRCXDCCP
FROM TP_WMS_LOG WL
WHERE LOGTYPE = 1
AND EXISTS (SELECT 1
FROM TP_WMS_LOG WL1
WHERE WL1.CODEI = WL.CODEI
AND WL1.LOGTYPE = 2
AND TRUNC(WL1.CREATETIME) > TRUNC(WL.CREATETIME))
AND WL.CREATETIME >= :DATEBEGIN
AND WL.CREATETIME < :DATEEND) T4
ON T4.DATACODE = T1.DATACODE
WHERE (-1 = :DATACODE OR T1.DATACODE = :DATACODE)
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;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 半成品库存 add xiacm 2022-11-09
///
///
///
public static ServiceResultEntity GetDataIVITotal_BC(ClientRequestEntity cre)
{
IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
try
{
string sqlString = @"SELECT semi.DATACODE ,
semi.WORKSHOP ,
semi.MATERIALCODE ,
semi.GOODSCODE ,
semi.GOODSNAME ,
COUNT(1) AS INVENTORYQUANTITY,
SYSDATE AS CREATETIME
FROM (
--配置表里的所有工序
SELECT DI.DATACODE,
CASE
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK1' THEN
1
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK2' THEN
2
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK3' THEN
3
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'TK1' THEN
1
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'TK2' THEN
2
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 2
AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
2
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 2
AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
1
WHEN DI.WORKSHOP = 3 THEN
3
ELSE
0
END WORKSHOP,
GDD.MATERIALCODE,
G.GOODSCODE,
G.GOODSNAME
FROM TP_PM_INPRODUCTION IP
INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
ON IP.PROCEDUREID = DI.ITEMID
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
ON IP.BARCODE = GDD.BARCODE
INNER JOIN TP_MST_GOODS G
ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = G.GOODSTYPEID
UNION ALL
--10-0干补
SELECT DI.DATACODE,
CASE
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK1' THEN
1
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK2' THEN
2
WHEN DI.WORKSHOP = 0
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'SK3' THEN
3
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'TK1' THEN
1
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 1
AND IP.KILNCODE = 'TK2' THEN
2
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 2
AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
2
WHEN DI.WORKSHOP = 2
AND DI.ITEMTYPE = 2
AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
1
WHEN DI.WORKSHOP = 3 THEN
3
ELSE
0
END WORKSHOP,
GDD.MATERIALCODE,
G.GOODSCODE,
G.GOODSNAME
FROM TP_PM_INPRODUCTION IP
INNER JOIN TSAP_HEGII_DATAITEM_SSKC DI
ON IP.FLOWPROCEDUREID = DI.ITEMID
INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
ON IP.BARCODE = GDD.BARCODE
INNER JOIN TP_MST_GOODS G
ON G.GOODSID = GDD.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = G.GOODSTYPEID
WHERE PROCEDUREID = 18
UNION ALL
--未交坯
SELECT '20' DATACODE,
CASE
WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1
AND
(INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
2
WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1
AND
(INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1) THEN
1
WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN
3
ELSE
0
END WORKSHOP,
GDD.MATERIALCODE,
G.GOODSCODE,
G.GOODSNAME
FROM TP_PM_GROUTINGDAILYDETAIL GDD
INNER JOIN TP_MST_GOODS G
ON GDD.GOODSID = G.GOODSID
INNER JOIN TP_MST_GOODSTYPE GT
ON GT.GOODSTYPEID = G.GOODSTYPEID
WHERE GDD.VALUEFLAG = 1
AND GDD.BARCODE IS NOT NULL
AND GDD.BEGINNINGFLAG = 0
AND GDD.DELIVERFLAG = 0
AND GDD.SCRAPFLAG = 0) semi
where (:DATACODE is null or :DATACODE ='' or :DATACODE ='-1' or instr(','||:DATACODE||',',','||semi.DATACODE||',')>0)
and (:WORKSHOP is null or :WORKSHOP = '' or instr(','||:WORKSHOP||',',','||semi.WORKSHOP||',')>0)
and (:MATERIALCODE is null or :MATERIALCODE = '' or instr(','||:MATERIALCODE||',',','||semi.MATERIALCODE||',')>0)
GROUP BY DATACODE,
WORKSHOP,
MATERIALCODE,
GOODSCODE,
GOODSNAME
ORDER BY DATACODE,
WORKSHOP,
MATERIALCODE,
GOODSCODE,
GOODSNAME";
OracleParameter[] oracleParameter = new OracleParameter[]
{
new OracleParameter(":WORKSHOP",OracleDbType.Varchar2, cre.Properties["WORKSHOP"], ParameterDirection.Input),
new OracleParameter(":MATERIALCODE",OracleDbType.Varchar2, cre.Properties["MATERIALCODE"], 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;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 同步SAP接口5000端口_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,
TO_CHAR(5000) 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' DATACODE,
'5000' || 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 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_");
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
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_");
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 查询同步日志
///
///
///
///
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.EXECUTEDATEBEGIN >= :DATEBEGIN
AND DL.EXECUTEDATEEND <= :DATEEND ";
OracleParameter[] oracleParameter = new OracleParameter[]
{
new OracleParameter(":DATEBEGIN",OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
new OracleParameter(":DATEEND",OracleDbType.Date, 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;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
///
/// 查询同步明细
///
///
///
///
public static ServiceResultEntity GetWorkData_BGYK(ClientRequestEntity cre)
{
IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
ServiceResultEntity sre = new ServiceResultEntity();
try
{
//add xiacm 2022-10-21
int logid = Convert.ToInt32(cre.Request);
string sqlString = @"
SELECT WERKS,
MATNR,
ZJDNU,
ZSCS,
ZSCCJ,
ZSCMS,
CHARG,
MENGE,
ZMLID
FROM TSAP_HEGII_WORKDATA_BGYK WD ";
if (logid > 0)
{
sqlString += "WHERE WD.LOGID = :LOGID ";
}
else
{
sqlString += @" INNER JOIN TSAP_HEGII_DATALOG_BGYK DL
ON WD.LOGID = DL.LOGID
WHERE DL.EXECUTEDATEBEGIN >= :DATEBEGIN
AND DL.EXECUTEDATEEND <= :DATEEND ";
}
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),
};
sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
return sre;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (oracleConn != null)
{
oracleConn.Close();
}
}
}
#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");
// 测试
//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
}
}