using System; using System.Collections.Generic; using System.Data; using System.ServiceModel.Security; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.DataAccess; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM008; using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM010; using Dongke.IBOSS.PRD.WCF.DataModels; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Oracle.ManagedDataAccess.Client; namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService { public partial class SAPDataLogic { /// /// 获取同步最后一次同步成功的日期 /// /// public static ServiceResultEntity GetLastDateByCode(string dataCode) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = "select max(t.yyyymmdd) yyyymmdd\n" + " from tsap_hegii_datalog t\n" + " where t.logtype = '2'\n" + " and t.datastuts = 'S'\n" + " and t.datacode = :dataCode"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":dataCode",OracleDbType.Varchar2, dataCode, ParameterDirection.Input), }; string lastDate = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); sre.Result = lastDate; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 获取成品交接同步数据 /// /// public static ServiceResultEntity GetWorkData60(DateTime date) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string yyyymmdd = date.ToString("yyyyMMdd"); //string sqlString = // "select t.logid\n" + // " from tsap_hegii_datalog t\n" + // " where t.logtype = '2'\n" + // " and t.datastuts = 'S'\n" + // " and t.yyyymmdd = :yyyymmdd\n" + // " and t.datacode = '60'"; //OracleParameter[] oracleParameter = new OracleParameter[] //{ // new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), //}; //string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); //if (!string.IsNullOrEmpty(logid)) //{ // sqlString = "select t.yyyymmdd\n" + // " ,t.goodscode\n" + // " ,t.sapcode\n" + // " ,t.usercode\n" + // " ,t.ordercode\n" + // " ,t.orderitem\n" + // " ,t.outputnum\n" + // " ,t.recoverynum\n" + // " ,t.createtime\n" + // " ,t.ztype\n" + // " ,t.zmsg\n" + // " ,t.ZTIME\n" + // " from tsap_hegii_workdata t\n" + // //" where t.yyyymmdd = :yyyymmdd\n" + // //" and t.datacode = '60'\n" + // " where t.logid = :logid\n" + // " order by t.goodscode,t.sapcode,t.usercode,t.ordercode,t.orderitem"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); // sre.Result = 1; // return sre; //} string sqlString = "select :yyyymmdd yyyymmdd, sysdate createtime\n" + " ,tt.GoodsCode\n" + " ,tt.SAPCode\n" + " ,tt.usercode\n" + " ,tt.ordercode\n" + " ,tt.orderitem\n" + " ,to_char(tt.OutputNum) OutputNum\n" + " ,to_char(tt.RecoveryNum) RecoveryNum\n" + " from (\n" + "select t.GoodsCode\n" + " ,t.SAPCode\n" + " ,t.usercode\n" + " ,t.ordercode\n" + " ,t.orderitem\n" + " ,sum(decode(t.RecyclingFlag\n" + " ,'1'\n" + " ,0\n" + " ,decode(t.DataType, 51, 1, -1))) OutputNum\n" + " ,sum(decode(t.RecyclingFlag\n" + " ,'0'\n" + " ,0\n" + " ,decode(t.DataType, 51, 1, -1))) RecoveryNum\n" + " from ( select gh.GoodsCode,gh.SAPCode,u.usercode,o.orderno,gdd.RecyclingFlag,gh.DataType \n" + " ,case\n" + " when o.orderid is null or o.orderno like 'HEGII%' then\n" + " ' '\n" + " when instr(o.orderno, '/') = 0 then\n" + " to_char(o.orderno)\n" + " else\n" + " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" + " end ordercode -- 销售凭证\n" + " ,case\n" + " when o.orderid is null or o.orderno like 'HEGII%' or\n" + " instr(o.orderno, '/') = 0 then\n" + " '0'\n" + " when instr(o.orderno, '#') = 0 then\n" + " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" + " else\n" + " to_char(substr(o.orderno, instr(o.orderno, '/') + 1, instr(o.orderno, '#')-instr(o.orderno, '/')-1))\n" + " end orderitem -- 销售凭证项目\n" + " from (\n" + " select gch.GoodsCode,gch.SAPCode,decode(gch.DataType,53,51,gch.DataType) DataType,gch.userid,gch.groutingdailydetailid,gch.OTHERID from tp_pm_goodschangehistory gch\n" + " where gch.createtime >= :datebegin\n" + " and gch.createtime < :dateend\n" + " and gch.DataType in (51, 52, 53)\n" + " union all\n" + " select gch.GoodsCode,gch.SAPCode,52 DataType,gch.userid,gch.groutingdailydetailid,gch.GoodsIDAfter from tp_pm_goodschangehistory gch\n" + " where gch.createtime >= :datebegin\n" + " and gch.createtime < :dateend\n" + " and gch.DataType =53\n" + " ) gh\n" + " inner join tp_mst_user u\n" + " on u.userid = gh.userid\n" + " inner join tp_pm_groutingdailydetail gdd\n" + " on gdd.groutingdailydetailid = gh.groutingdailydetailid\n" + " and gdd.issync is null\n" + //" inner join tp_pm_finishedproduct fp\n" + //" on fp.barcode = gdd.barcode\n" + " left join tp_pm_order o\n" + //" on o.orderid = fp.fhorderid\n" + " on o.orderid = gh.OTHERID\n" + //" where gh.createtime >= :datebegin\n" + //" and gh.createtime < :dateend\n" + //" and gh.DataType in (51, 52)\n" + " ) t \n" + //" group by gh.GoodsCode, gh.SAPCode, u.usercode, o.orderno"; " group by t.GoodsCode, t.SAPCode, t.usercode, t.ordercode, t.orderitem\n" + " ) tt where tt.OutputNum <> 0 or tt.RecoveryNum <> 0 \n" + " order by tt.GoodsCode, tt.SAPCode, tt.usercode, tt.ordercode, tt.orderitem\n"; // TODO 订单变更 DateTime datebegin = date.Date; DateTime dateend = date.Date.AddDays(1); OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":datebegin",OracleDbType.Date, datebegin, ParameterDirection.Input), new OracleParameter(":dateend",OracleDbType.Date, dateend, ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); sre.Result = 0; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 同步成品交接数据(手动) /// /// public static ServiceResultEntity SetWorkData60(DateTime date, DataTable workData, int userid) { IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string yyyymmdd = date.ToString("yyyyMMdd"); string sqlString = "select t.logid\n" + " from tsap_hegii_datalog t\n" + " where t.logtype = '2'\n" + " and t.datastuts = 'S'\n" + " and t.yyyymmdd = :yyyymmdd\n" + " and t.datacode = '60'"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), }; string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); if (!string.IsNullOrEmpty(logid)) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。"; return sre; } sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); DateTime datebegin = date.Date; DateTime dateend = date.Date.AddDays(1); logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual"); string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" + dateend.ToString("yyyyMMdd-HHmm"); sqlString = "insert into tsap_hegii_datalog\n" + " (LogID\n" + " ,LogType\n" + " ,BeginTime\n" + " ,YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,DataStuts\n" + " ,DataMSG\n" + " ,CreateUserID\n" + " ,DataLogID)\n" + "values\n" + " (:LogID\n" + " ,'2'\n" + " ,sysdate\n" + " ,:YYYYMMDD\n" + " ,:WorkCode\n" + " ,'60'\n" + " ,'S'\n" + " ,:DataMSG\n" + " ,:CreateUserID\n" + " ,:LogID)"; oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input), }; int r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); //r = oracleConn.ExecuteNonQuery("savepoint datalog"); //oracleConn.SavePoint("datalog"); Zppfm008 sapParameter = new Zppfm008(); if (workData != null && workData.Rows.Count > 0) { sapParameter.ZSUM = workData.Rows.Count; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; sqlString = "insert into TSAP_HEGII_WorkData\n" + " (YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,GoodsCode\n" + " ,SAPCode\n" + " ,UserCode\n" + " ,OutputNum\n" + " ,RECOVERYNUM\n" + " ,ORDERCODE\n" + " ,ORDERITEM\n" + " ,LogID,createtime)\n" + "values\n" + " ('" + yyyymmdd + "'\n" + " ,'" + workcode + "'\n" + " ,'60'\n" + " ,:GoodsCode\n" + " ,:SAPCode\n" + " ,:UserCode\n" + " ,:OutputNum\n" + " ,:RECOVERYNUM\n" + " ,:ORDERCODE\n" + " ,:ORDERITEM\n" + " ," + logid + ",:createtime)"; int index = 0; foreach (DataRow item in workData.Rows) { ZSPP100 info100 = new ZSPP100(); // 工厂 info100.WERKS = workcode; // 型号 info100.GROES = item["GoodsCode"].ToString(); // 物料编号 info100.MATNR = item["SAPCode"].ToString(); // 生产工号 info100.ZGHNU = item["UserCode"].ToString(); // 数据节点 info100.ZJDNU = "60"; // 时间戳 info100.ZSCNU = yyyymmdd; // 销售凭证 info100.VBELN = item["ORDERCODE"].ToString().Trim(); // 销售凭证项目 info100.POSNR = item["ORDERITEM"].ToString(); // 产量 info100.ZCLNG = item["OutputNum"].ToString(); // 损坯 info100.ZSPNG = "0"; // 清除 info100.ZQCNG = "0"; // 回收 info100.ZHSNG = item["RECOVERYNUM"].ToString(); // 干补 info100.ZGBNG = "0"; info100.ZKSSJ = "000000"; info100.ZJSRQ = Convert.ToDecimal(yyyymmdd) + 1; oracleParameter = new OracleParameter[] { new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input), new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input), new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input), new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input), new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input), new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); sapParameter.TABLE_IN[index++] = info100; } } else { sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; } ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60"); //if (result.Ztype == "E") //{ // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input), // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); //} //else { if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (ZSPP100 item in result.TABLE_OUT) { string posnr = item.POSNR.TrimStart('0'); oracleParameter = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } } //:msg||chr(13)||DataMSG result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})"; sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid"; oracleParameter = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } oracleConn.Commit(); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 查询同步日志 /// /// /// /// public static ServiceResultEntity GetDataLog(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 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), }; string datastuts = cre.Properties["datastuts"] + ""; if (!string.IsNullOrEmpty(datastuts)) { sqlString += " and dl.datastuts in (" + datastuts + ")\n"; } string datacode = cre.Properties["datacode"] + ""; if (!string.IsNullOrEmpty(datacode)) { sqlString += " and dl.datacode = '" + datacode + "'\n"; //sqlString += " and dl.datacode in (" + datacode + ")\n"; } sqlString += " order by dl.datacode, dl.endtime desc"; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 查询产量同步明细 /// /// /// /// public static ServiceResultEntity GetWorkDataByDataLog(int logid) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { 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 wd\n" + " inner join tsap_hegii_datacode dc\n" + " on dc.datacode = wd.datacode\n" + " where wd.logid = :logid \n" + " 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), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); //sqlString = "\n" + //"select wd.logid\n" + //" ,wd.goodscode\n" + //" ,wd.sapcode\n" + //" ,wd.procedureName\n" + //" ,wd.scrapnum\n" + //" ,wd.unscrapnum\n" + //" ,wd.scrapnum-wd.unscrapnum num\n" + //" from TSAP_HEGII_WORKDATA_SNum wd\n" + ////" inner join tsap_hegii_datacode dc\n" + ////" on dc.datacode = wd.datacode\n" + //" where wd.logid = :logid \n" + //" order by wd.goodscode,wd.sapcode,wd.procedureName \n"; sqlString = "select decode(gid\n" + " ,3\n" + " ,'合计'\n" + " ,1\n" + " ,'小计[' || procedureName || ']'\n" + " ,procedureName) procedureName\n" + " ,decode(gid, 0, goodscode, '--') goodscode\n" + " ,decode(gid, 0, sapcode, '--') sapcode\n" + " ,decode(gid, 0, usercode, '--') usercode\n" + " ,scrapnum\n" + " ,unscrapnum\n" + " ,scrapnum - unscrapnum scrapsum\n" + " ,cleanupnum\n" + " ,uncleanupnum\n" + " ,cleanupnum - uncleanupnum cleanupsum\n" + " ,repairnum\n" + " ,recoverynum\n" + " from (select grouping_id(wd.procedureName, wd.goodscode) gid\n" + " ,wd.procedureName\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,sum(wd.scrapnum) scrapnum\n" + " ,sum(wd.unscrapnum) unscrapnum\n" + " ,sum(wd.cleanupnum) cleanupnum\n" + " ,sum(wd.uncleanupnum) uncleanupnum\n" + " ,sum(wd.repairnum) repairnum\n" + " ,sum(wd.recoverynum) recoverynum\n" + " from TSAP_HEGII_WORKDATA_SNum wd\n" + " where wd.logid = :logid \n" + " group by grouping sets((wd.procedureName, wd.goodscode, wd.sapcode,wd.usercode),(wd.procedureName),())\n" + " order by wd.procedureName, wd.goodscode, wd.sapcode)"; sre.Data.Tables.Add(oracleConn.GetSqlResultToDt(sqlString, oracleParameter)); return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 查询SAP同步工序损坯明细 /// /// /// /// public static ServiceResultEntity GetWorkDataSPSumByDate(ClientRequestEntity cre) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = "select decode(gid\n" + " ,3\n" + " ,'合计'\n" + " ,1\n" + " ,'小计[' || procedureName || ']'\n" + " ,procedureName) procedureName\n" + " ,decode(gid, 0, goodscode, '--') goodscode\n" + " ,decode(gid, 0, sapcode, '--') sapcode\n" + " ,decode(gid, 0, usercode, '--') usercode\n" + " ,scrapnum\n" + " ,unscrapnum\n" + " ,scrapnum - unscrapnum scrapsum\n" + " ,cleanupnum\n" + " ,uncleanupnum\n" + " ,cleanupnum - uncleanupnum cleanupsum\n" + " ,repairnum\n" + " ,recoverynum\n" + " from (select grouping_id(wd.procedureName, wd.goodscode) gid\n" + " ,wd.procedureName\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,sum(wd.scrapnum) scrapnum\n" + " ,sum(wd.unscrapnum) unscrapnum\n" + " ,sum(wd.cleanupnum) cleanupnum\n" + " ,sum(wd.uncleanupnum) uncleanupnum\n" + " ,sum(wd.repairnum) repairnum\n" + " ,sum(wd.recoverynum) recoverynum\n" + " from TSAP_HEGII_DATALOG dl\n" + " inner join TSAP_HEGII_WORKDATA_SNum wd\n" + " on wd.logid = dl.logid \n" + " where dl.logtype = '1' \n" + " and dl.yyyymmdd >= :datebegin\n" + " and dl.yyyymmdd <= :dateend\n" + " group by grouping sets((wd.procedureName, wd.goodscode, wd.sapcode,wd.usercode),(wd.procedureName),())\n" + " order by wd.procedureName, wd.goodscode, wd.sapcode)"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input), new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input), }; sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 查询成品条码同步明细 /// /// /// /// public static ServiceResultEntity GetFinishedProductByDataLog(int logid) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = "select fp.yyyymmdd\n" + " ,fp.workcode\n" + " ,fp.barcode\n" + " ,fp.outcode\n" + " ,fp.goodscode\n" + " ,fp.sapcode\n" + " ,fp.sapflbatchno\n" + " ,fp.sapfhundoflag\n" + " ,fp.createtime\n" + " ,fp.ztype\n" + " ,fp.zmsg\n" + " ,fp.ztime\n" + " ,fp.logid\n" + " ,fp.ordercode\n" + " ,fp.orderitem\n" + " ,fp.securitycode\n" + //2021年12月9日10:31:42 by fy modify 增加防伪码 " from tsap_hegii_finishedproduct fp\n" + " where fp.logid = :logid\n" + " order by fp.ztime, fp.barcode\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; } finally { if (oracleConn != null) { oracleConn.Close(); } } } /// /// 同步产量报工(手动) /// /// /// /// /// public static ServiceResultEntity SetWorkData10_50(DateTime date, string datacode, int userid) { IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string yyyymmdd = date.ToString("yyyyMMdd"); string sqlString = "select t.logid\n" + " from tsap_hegii_datalog t\n" + " where t.logtype = '2'\n" + " and t.datastuts = 'S'\n" + " and t.yyyymmdd = :yyyymmdd\n" + " and t.datacode = :datacode"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":datacode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), }; string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); if (!string.IsNullOrEmpty(logid)) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。"; return sre; } sqlString = "select t.logid\n" + " from tsap_hegii_datalog t\n" + " where t.logtype = '1'\n" + " and t.datastuts = 'S'\n" + " and t.yyyymmdd = :yyyymmdd\n" + " and t.datacode = :datacode" + " and t.createuserid is null for update"; string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); //DateTime datebegin = date.Date; //DateTime dateend = date.Date.AddDays(1); logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual"); string msg = null; //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" + // dateend.ToString("yyyyMMdd-HHmm"); sqlString = "insert into tsap_hegii_datalog\n" + " (LogID\n" + " ,LogType\n" + " ,BeginTime\n" + " ,YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,DataStuts\n" + " ,DataMSG\n" + " ,CreateUserID\n" + " ,DataLogID)\n" + "values\n" + " (:LogID\n" + " ,'2'\n" + " ,sysdate\n" + " ,:YYYYMMDD\n" + " ,:WorkCode\n" + " ,:DataCode\n" + " ,:DataStuts\n" + " ,:DataMSG\n" + " ,:CreateUserID\n" + " ,:DataLogID)"; int r = 0; if (string.IsNullOrEmpty(datalogid)) { oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, "DKMES-ERROR:NO DATA " + msg, ParameterDirection.Input), new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input), new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); oracleConn.Commit(); sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "没有同步数据"; sre.Result = "E"; return sre; } oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input), new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input), new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "select wd.yyyymmdd\n" + " ,wd.workcode\n" + " ,wd.DataCode\n" + " ,wd.GoodsCode\n" + " ,wd.SAPCode\n" + " ,wd.UserCode\n" + " ,wd.ORDERCODE\n" + " ,wd.ORDERITEM\n" + " ,wd.OutputNum\n" + " ,wd.ScrapNum\n" + " ,wd.CleanupNum\n" + " ,wd.RecoveryNum\n" + " ,wd.RepairNum\n" + " from tsap_hegii_workdata wd where wd.logid = :datalogid"; oracleParameter = new OracleParameter[] { new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); Zppfm008 sapParameter = new Zppfm008(); if (workData != null && workData.Rows.Count > 0) { sapParameter.ZSUM = workData.Rows.Count; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; int index = 0; foreach (DataRow item in workData.Rows) { ZSPP100 info100 = new ZSPP100(); // 工厂 info100.WERKS = workcode; // 型号 info100.GROES = item["GoodsCode"].ToString(); // 物料编号 info100.MATNR = item["SAPCode"].ToString(); // 生产工号 info100.ZGHNU = item["UserCode"].ToString(); // 数据节点 info100.ZJDNU = item["DataCode"].ToString(); // 时间戳 info100.ZSCNU = yyyymmdd; // 销售凭证 info100.VBELN = item["ORDERCODE"].ToString().Trim(); // 销售凭证项目 info100.POSNR = item["ORDERITEM"].ToString(); // 产量 info100.ZCLNG = item["OutputNum"].ToString(); // 损坯 info100.ZSPNG = item["SCRAPNUM"].ToString(); // 清除 info100.ZQCNG = item["CLEANUPNUM"].ToString(); // 回收 info100.ZHSNG = item["RECOVERYNUM"].ToString(); // 干补 info100.ZGBNG = item["REPAIRNUM"].ToString(); info100.ZKSSJ = "000000"; info100.ZJSRQ = Convert.ToDecimal(yyyymmdd) + 1; sapParameter.TABLE_IN[index++] = info100; } } else { sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; } ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode); //if (result.Ztype == "E") //{ // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = :msg||chr(13)||DataMSG where logid = :logid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input), // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); //} //else { if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + datalogid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (ZSPP100 item in result.TABLE_OUT) { string posnr = item.POSNR.TrimStart('0'); oracleParameter = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } } //:msg||chr(13)||DataMSG nvl2(:msg,:msg||chr(13)||DataMS,DataMS) result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})"; sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; oracleParameter = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); if (result.ZTYPE == "S") { sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid"; oracleParameter = new OracleParameter[] { new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } } oracleConn.Commit(); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 同步产量报工(手动)重载 /// /// /// /// /// /// public static ServiceResultEntity SetWorkData10_50(string datacode, int userid, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = null; try { #region 事务1,执行存储过程 OracleParameter[] paras = null; int logid = 0; string message = string.Empty; // 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_10_1", 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_20_1", 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_30_1", 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接口 sre = SyncSap(ndate, datacode, userid, logid); return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } public static ServiceResultEntity SyncSap5000_60_BSJ(DateTime date) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { string yyyymmdd = date.ToString("yyyyMMdd"); string sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" + " ,TO_CHAR(5000) WERKS\n" + " ,TO_CHAR(wd.goodscode) GROES\n" + " ,TO_CHAR(wd.sapcode) MATNR\n" + " ,TO_CHAR(wd.usercode) ZGHNU\n" + " ,TO_CHAR(wd.datacode) ZJDNU\n" + " ,to_char(DL.EXECUTEDATEBEGIN, 'YYYYMMDD' ) ZSCNU\n" + " ,to_char(DL.EXECUTEDATEBEGIN, 'HH24MISS' ) ZKSSJ\n" + " ,to_char(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" + " ,TO_CHAR(wd.ordercode) VBELN\n" + " ,TO_CHAR(wd.orderitem) POSNR\n" + " ,TO_CHAR(wd.outputnum) ZCLNG\n" + " ,TO_CHAR(wd.scrapnum) ZSPNG\n" + " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" + " ,TO_CHAR(wd.recoverynum) ZHSNG\n" + " ,TO_CHAR(wd.repairnum) ZGBNG\n" + " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" + " ,'T' AS zscs\n" + " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" + " ,TO_CHAR( :yyyymmdd) CHARG\n" + " ,'60' datacode\n" + " FROM tsap_hegii_workdata_bg wd\n" + " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" + " ON wd.LOGID = DL.LOGID \n" + " WHERE DL.DataStuts = 'F' AND wd.datacode = '60' and DL.EXECUTEDATEEND < :ndate"; OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":yyyymmdd",yyyymmdd), new OracleParameter(":ndate",date), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); OutputLog.TraceLog(LogPriority.Information, "BGToSAP60", "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"), workData.Rows.Count + "", LocalPath.LogExePath + "SAP_HEGII\\Error_"); int num = workData.Rows.Count; // 调用SAP接口 if (workData != null && workData.Rows.Count > 0) { string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData)) + "}}"; OutputLog.TraceLog(LogPriority.Information, "BGToSAP60", "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"), postString, LocalPath.LogExePath + "SAP_HEGII\\Error_"); //测试 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"); OutputLog.TraceLog(LogPriority.Information, "BGToSAP60", "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"), result, LocalPath.LogExePath + "SAP_HEGII\\Error_"); 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 SyncSap5000_test(DateTime date, string datacode, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; string workcode = "5000"; string yyyymmdd = ndate.ToString("yyyyMMdd"); string yyyymmddhh24miss = ndate.ToString("yyyyMMddHH24miss"); string sqlString = ""; if ("10".Equals(datacode)) { sqlString = @"SELECT to_char(:IN_DATEEND, 'yyyymmdd') yyyymmdd, TO_CHAR(5000) WERKS,to_char(g.goodscode) GROES,to_char(g.mouldmaterialcode) MATNR,to_char(m.usercode) ZGHNU, to_char(:IN_DATACODE) ZJDNU, to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU, to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ, to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ, '' VBELN, '' POSNR, to_char(SUM(decode(mhh.operationtype, 1, m.standardgroutingsum, 0))) ZCLNG, to_char(SUM(CASE WHEN mhh.operationtype IN (2, 9, 11, -1) THEN greatest(m.standardgroutingsum - mhh.groutingnum, 0) WHEN mhh.operationtype IN (3, 0) THEN least(mhh.groutingnum - m.standardgroutingsum, 0) ELSE 0 END)) ZSPNG, '0' ZQCNG, '0' ZHSNG, '0' ZGBNG, to_char(m.testmouldflag) ZSCMS, DECODE( :IN_DATACODE,20,TO_CHAR(g.goods_line_code),'T') AS zscs, to_char(0) ZSCCJ, TO_CHAR( :yyyymmdd) CHARG, TO_CHAR( :IN_DATACODE) datacode 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 >= :V_DATEBEGIN AND mh.createtime < :IN_DATEEND UNION ALL SELECT mh.goodsidafter, mh.mouldid, 0, mh.groutingnum FROM tp_pc_mouldchangehistory mh WHERE mh.operationtype = -1 AND mh.createtime >= :V_DATEBEGIN AND mh.createtime < :IN_DATEEND) mhh INNER JOIN tp_mst_goods g ON mhh.goodsid = g.goodsid INNER JOIN tp_pc_mould m ON m.mouldid = mhh.mouldid GROUP BY g.goodscode, g.mouldmaterialcode, m.usercode,m.testmouldflag,g.goods_line_code"; } // 20 湿坯 else if ("20".Equals(datacode)) { sqlString = @" SELECT to_char(:IN_DATEEND, 'yyyymmdd') yyyymmdd, TO_CHAR(5000) WERKS,TO_CHAR(SPP.GOODSCODE) GROES,TO_CHAR(SPP.SAPCODE) MATNR,TO_CHAR(SPP.usercode) ZGHNU, TO_CHAR(:IN_DATACODE) ZJDNU, to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU, to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ, to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ, '' VBELN, '' POSNR, TO_CHAR(SUM(SPP.OUTPUTNUM)) ZCLNG, TO_CHAR(SUM(SPP.SCRAPNUM)) ZSPNG, TO_CHAR(SUM(SPP.CLEANUPNUM)) ZQCNG,'0' ZHSNG, TO_CHAR(SUM(SPP.REPAIRNUM)) ZGBNG, DECODE( SPP.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS ZSCMS, DECODE( :IN_DATACODE,20,TO_CHAR(SPP.goods_line_code),'T') AS zscs, TO_CHAR(SPP.WORKSHOP) ZSCCJ, TO_CHAR( :yyyymmdd) CHARG, TO_CHAR( :IN_DATACODE) datacode FROM ( -- 成型产量 SELECT GH.GOODSCODE, GH.SAPCODE, U.USERCODE, SUM(DECODE(GH.DATATYPE, 1, 1, -1)) OUTPUTNUM, 0 SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_GOODSCHANGEHISTORY GH INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID /*INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = GDD.GROUTINGLINEID*/ INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID /*INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 3 AND HGDI.ITEMID = GL.GMOULDTYPEID*/ WHERE GH.CREATETIME >= :V_DATEBEGIN AND GH.CREATETIME < :IN_DATEEND AND GH.DATATYPE IN (1, 2) AND G.SCRAPSUMFLAG = '1' GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE /*UNION ALL -- 成型产量 高压 SELECT GH.GOODSCODE ,GH.SAPCODE ,U.USERCODE ,SUM(DECODE(GH.DATATYPE, 1, 1, -1)) OUTPUTNUM ,0 SCRAPNUM ,0 CLEANUPNUM ,0 REPAIRNUM FROM TP_PM_GOODSCHANGEHISTORY GH INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID = GDD.GROUTINGLINEID INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 3 AND HGDI.ITEMID <> GL.GMOULDTYPEID WHERE GH.CREATETIME >= :V_DATEBEGIN AND GH.CREATETIME < :IN_DATEEND AND GH.DATATYPE IN (1, 2) GROUP BY GH.SAPCODE ,GH.GOODSCODE ,U.USERCODE*/ UNION ALL -- 成型报损 SELECT GH.GOODSCODE, GH.SAPCODE, U.USERCODE, 0 OUTPUTNUM, SUM(DECODE(GH.DATATYPE, 3, 1, -1)) SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_GOODSCHANGEHISTORY GH INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE GH.CREATETIME >= :V_DATEBEGIN AND GH.CREATETIME < :IN_DATEEND AND GH.DATATYPE IN (3, 4) AND G.SCRAPSUMFLAG = '1' GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE UNION ALL -- 盘点清除 SELECT GH.GOODSCODE, GH.SAPCODE, U.USERCODE, 0 OUTPUTNUM, 0 SCRAPNUM, SUM(DECODE(GH.DATATYPE, 11, 1, -1)) CLEANUPNUM, 0 REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_GOODSCHANGEHISTORY GH INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = GH.OTHERID INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GH.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE GH.CREATETIME >= :V_DATEBEGIN AND GH.CREATETIME < :IN_DATEEND AND GH.DATATYPE IN (11, 12) GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE UNION ALL -- 工序报损 SELECT SP.GOODSCODE --,G.GROUTMATERIALCODE , GDD.MATERIALCODE SAPCODE, PD.USERCODE, 0 OUTPUTNUM, COUNT(*) SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID --INNER JOIN TP_MST_GOODS G -- ON G.GOODSID = SP.GOODSID INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.AUDITDATE >= :V_DATEBEGIN AND SP.AUDITDATE < :IN_DATEEND AND SP.SCRAPTYPE IN (0, 2, 3) GROUP BY SP.GOODSCODE, GDD.MATERIALCODE, PD.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE UNION ALL -- 工序报损撤销 SELECT SP.GOODSCODE --,G.GROUTMATERIALCODE , GDD.MATERIALCODE SAPCODE, PD.USERCODE, 0 OUTPUTNUM, 0 - COUNT(*) SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID --INNER JOIN TP_MST_GOODS G -- ON G.GOODSID = SP.GOODSID INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.VALUEFLAG = '0' AND SP.BACKOUTTIME >= :V_DATEBEGIN AND SP.BACKOUTTIME < :IN_DATEEND AND SP.SCRAPTYPE IN (0, 2, 3) GROUP BY SP.GOODSCODE, GDD.MATERIALCODE, PD.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE UNION ALL -- 干补 SELECT SP.GOODSCODE --,G.GROUTMATERIALCODE , GDD.MATERIALCODE SAPCODE, SP.SPECIALREPAIRUSERCODE USERCODE, 0 OUTPUTNUM, 0 SCRAPNUM, 0 CLEANUPNUM, COUNT(*) REPAIRNUM, CASE WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP, GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID --INNER JOIN TP_MST_GOODS G -- ON G.GOODSID = SP.GOODSID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.VALUEFLAG = '1' AND SP.GOODSLEVELTYPEID = 9 AND SP.SPECIALREPAIRTIME >= :V_DATEBEGIN AND SP.SPECIALREPAIRTIME < :IN_DATEEND GROUP BY SP.GOODSCODE --,G.GROUTMATERIALCODE , GDD.MATERIALCODE, SP.SPECIALREPAIRUSERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG, G.GOODS_LINE_CODE ) SPP GROUP BY SPP.GOODSCODE, SPP.SAPCODE, SPP.USERCODE,SPP.WORKSHOP,SPP.GOODS_LINE_CODE,SPP.TESTMOULDFLAG "; } // 30 精坯、40 釉坯、50 烧成 else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode)) { sqlString = @"SELECT TO_CHAR(:IN_DATEEND, 'YYYYMMDD') yyyymmdd , TO_CHAR(5000) WERKS,SPP.GOODSCODE GROES, SPP.SAPCODE MATNR,SPP.USERCODE ZGHNU,TO_CHAR(:IN_DATACODE) ZJDNU, to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU, to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ, to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ, '' VBELN, '' POSNR, TO_CHAR(SUM(SPP.OUTPUTNUM)) ZCLNG, TO_CHAR(SUM(SPP.SCRAPNUM)) ZSPNG, TO_CHAR(SUM(SPP.CLEANUPNUM)) ZQCNG, TO_CHAR(0) ZHSNG, TO_CHAR(SUM(SPP.REPAIRNUM)) ZGBNG, SPP.TESTMOULDFLAG ZSCMS, DECODE( :IN_DATACODE,20,TO_CHAR(SPP.GOODS_LINE_CODE),'T') AS zscs, TO_CHAR(SPP.WORKSHOP) ZSCCJ, TO_CHAR( :yyyymmdd) CHARG, TO_CHAR(:IN_DATACODE) datacode FROM ( -- 产量 ------------------------------------------ SELECT GOODSCODE, SAPCODE, USERCODE, COUNT( * ) OUTPUTNUM, 0 SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, WORKSHOP, -- GROUTINGSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT PD.GOODSCODE, GDD.MATERIALCODE SAPCODE, PD.USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 0 END AS WORKSHOP, -- CASE -- -- WHEN INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN -- 1 -- WHEN INSTR( GT.GOODSTYPECODE, '001001' ) = 1 -- AND ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) THEN -- 2 -- WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1 -- AND INSTR( GDD.GROUTINGLINECODE, 'A' ) = 4 -- OR INSTR( GDD.GROUTINGLINECODE, 'C06B' ) = 1 THEN -- 3 ELSE 4 -- END AS GROUTINGSHOP, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_PRODUCTIONDATA PD INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 1 AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判) AND ( HGDI.ITEMID <> 104 OR ( PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) ) INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE PD.CREATETIME >= :V_DATEBEGIN AND PD.CREATETIME < :IN_DATEEND ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, -- GROUTINGSHOP, TESTMOULDFLAG, GOODS_LINE_CODE UNION ALL -- 产量 撤销 SELECT GOODSCODE, SAPCODE, USERCODE, 0 - COUNT( * ) OUTPUTNUM, 0 SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT PD.GOODSCODE, GDD.MATERIALCODE SAPCODE, PD.USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 4 END AS WORKSHOP, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_PRODUCTIONDATA PD INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 1 AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判) AND ( HGDI.ITEMID <> 104 OR ( PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) ) INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE PD.VALUEFLAG = '0' AND PD.BACKOUTTIME >= :V_DATEBEGIN AND PD.BACKOUTTIME < :IN_DATEEND ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE UNION ALL -- 盘点清除 SELECT GOODSCODE, SAPCODE, USERCODE, 0 OUTPUTNUM, 0 SCRAPNUM, SUM(DECODE(DATATYPE, 11, 1, -1)) CLEANUPNUM, 0 REPAIRNUM, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT GH.GOODSCODE, GH.SAPCODE, U.USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 4 END AS WORKSHOP, GH.DATATYPE, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_GOODSCHANGEHISTORY GH INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = GH.OTHERID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID INNER JOIN TP_MST_USER U ON U.USERID = GH.USERID WHERE GH.CREATETIME >= :V_DATEBEGIN AND GH.CREATETIME < :IN_DATEEND AND GH.DATATYPE IN (11, 12) ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE UNION ALL -- 工序报损 SELECT GOODSCODE, SAPCODE, USERCODE, 0 OUTPUTNUM, COUNT(*) SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT SP.GOODSCODE --,G.GROUTMATERIALCODE SAPCODE , GDD.MATERIALCODE SAPCODE, PD.USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 4 END AS WORKSHOP, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.AUDITDATE >= :V_DATEBEGIN AND SP.AUDITDATE < :IN_DATEEND --AND SP.SCRAPTYPE IN (0, 2, 3) ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE UNION ALL -- 工序报损撤销 SELECT GOODSCODE, SAPCODE, USERCODE, 0 OUTPUTNUM, 0 - COUNT(*) SCRAPNUM, 0 CLEANUPNUM, 0 REPAIRNUM, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT SP.GOODSCODE --,G.GROUTMATERIALCODE SAPCODE , GDD.MATERIALCODE SAPCODE, PD.USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 4 END AS WORKSHOP, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID INNER JOIN TP_PM_PRODUCTIONDATA PD ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.BACKOUTTIME >= :V_DATEBEGIN AND SP.BACKOUTTIME < :IN_DATEEND AND SP.VALUEFLAG = '0' --AND SP.SCRAPTYPE IN (0, 2, 3) ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE UNION ALL SELECT GOODSCODE, SAPCODE, USERCODE, 0 OUTPUTNUM, 0 SCRAPNUM, 0 CLEANUPNUM, COUNT(*) REPAIRNUM, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE FROM ( SELECT SP.GOODSCODE, GDD.MATERIALCODE SAPCODE, SP.SPECIALREPAIRUSERCODE USERCODE, CASE WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN HGDI.WORKSHOP = 2 AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN HGDI.WORKSHOP = 3 THEN 3 ELSE 4 END AS WORKSHOP, DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG, G.GOODS_LINE_CODE FROM TP_PM_SCRAPPRODUCT SP INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE AND HGDI.ITEMTYPE = 2 AND HGDI.ITEMID = SP.PROCEDUREID INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID WHERE SP.AUDITSTATUS = 1 AND SP.VALUEFLAG = '1' AND SP.GOODSLEVELTYPEID = 9 AND SP.SPECIALREPAIRTIME >= :V_DATEBEGIN AND SP.SPECIALREPAIRTIME < :IN_DATEEND ) GROUP BY GOODSCODE, SAPCODE, USERCODE, WORKSHOP, TESTMOULDFLAG, GOODS_LINE_CODE ) SPP WHERE SPP.OUTPUTNUM > '0' AND SPP.SCRAPNUM > '0' AND SPP.CLEANUPNUM > '0' AND SPP.REPAIRNUM > '0' GROUP BY SPP.GOODSCODE, SPP.SAPCODE, SPP.USERCODE,SPP.WORKSHOP,SPP.GOODS_LINE_CODE,SPP.TESTMOULDFLAG"; } else if ("60".Equals(datacode)) { sqlString = @"SELECT :yyyymmdd AS yyyymmdd ,TO_CHAR(5000) WERKS , tt.goodscode GROES , tt.sapcode MATNR , tt.usercode ZGHNU , tt.ordercode VBELN , tt.orderitem POSNR , decode(tt.testmouldflag,0,'C',1,'Y','') ZSCMS -- ,tt.zscs ,'T' AS zscs , to_char(tt.outputnum) AS ZCLNG , to_char(tt.recoverynum) AS ZHSNG , '60' ZJDNU ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU ,to_char(SYSDATE, 'HH24MISS') ZKSSJ ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ ,'0' ZSPNG ,'0' ZQCNG ,'0' ZGBNG ,tt.WORKSHOP ZSCCJ ,TO_CHAR( :yyyymmdd) CHARG ,'60' datacode FROM(SELECT t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem , t.testmouldflag , t.zscs , SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum , SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum , t.WORKSHOP FROM(SELECT bar.goodscode , bar.materialcode sapcode , gh.fhusercode usercode , o.orderno , bar.recyclingflag , bar.testmouldflag , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' THEN ' ' WHEN instr(o.orderno, '/') = 0 THEN to_char(o.orderno) ELSE to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1)) END ordercode-- 销售凭证 , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' OR instr(o.orderno, '/') = 0 THEN '0' WHEN instr(o.orderno, '#') = 0 THEN to_char(substr(o.orderno, instr(o.orderno, '/') + 1)) ELSE to_char(substr(o.orderno , instr(o.orderno, '/') + 1 , instr(o.orderno, '#') - instr(o.orderno, '/') - 1)) END orderitem-- 销售凭证项目 ,CASE WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1 AND (INSTR(bar.GROUTINGLINECODE, 'B') = 1 OR INSTR(bar.GROUTINGLINECODE, 'D') = 1) THEN 2 WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1 AND (INSTR(bar.GROUTINGLINECODE, 'A') = 1 OR INSTR(bar.GROUTINGLINECODE, 'D') = 1) THEN 1 WHEN INSTR(bar.GROUTINGLINECODE, 'C') = 1 THEN 3 ELSE 0 END WORKSHOP FROM tp_pm_groutingdailydetail bar INNER JOIN tp_pm_finishedproduct gh ON bar.groutingdailydetailid = gh.groutingdailydetailid INNER JOIN tp_mst_goods g ON g.goodsid = bar.goodsid INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID LEFT JOIN tp_pm_order o ON o.orderid = gh.fhorderid where 1 = 1 AND gh.fhtime >= :V_DATEBEGIN and gh.fhtime < :IN_DATEEND ) t GROUP BY t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem, t.testmouldflag, t.zscs,t.WORKSHOP) tt WHERE tt.outputnum <> 0 OR tt.recoverynum <> 0 ORDER BY tt.goodscode ,tt.sapcode ,tt.usercode ,tt.ordercode ,tt.orderitem,tt.zscs,tt.WORKSHOP"; } paras = new OracleParameter[] { new OracleParameter(":IN_DATACODE",datacode), new OracleParameter(":yyyymmdd",yyyymmdd), new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input), new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, 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://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030"; //测试 string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030"; string result = PostData(url030, postString, "POST"); 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 SyncSap5000_test_cx(DateTime date, string datacode, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); //string fifter = "AND (bar.barcode = '10015967073')"; string fifter = "AND (gh.createtime >= :begindate or gh.createtime < :enddate)"; string yyyymmdd = date.ToString("yyyyMMdd"); string workcode = "5000"; string sqlString = @"SELECT :yyyymmdd AS yyyymmdd ,SYSDATE AS createtime ,tt.goodscode GROES , tt.sapcode MATNR , tt.usercode ZGHNU , tt.ordercode VBELN , tt.orderitem POSNR , decode(tt.testmouldflag, 0, 'C', 1, 'Y', '') ZSCMS -- ,tt.zscs ,'T' AS zscs , to_char(tt.outputnum) AS ZCLNG , to_char(tt.recoverynum) AS ZHSNG , TO_CHAR(5000) WERKS , '60' ZJDNU ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU ,to_char(SYSDATE, 'HH24MISS') ZKSSJ ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ ,'0' ZSPNG ,'0' ZQCNG ,'0' ZGBNG ,to_char(tt.WORKSHOP) ZSCCJ ,TO_CHAR( :yyyymmdd) CHARG ,'0' datacode FROM(SELECT t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem , t.testmouldflag , t.zscs , t.WORKSHOP , 0 - SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum , 0 - SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum FROM(SELECT bar.goodscode , bar.materialcode sapcode , gh.fhusercode usercode , o.orderno , bar.recyclingflag , bar.testmouldflag , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' THEN ' ' WHEN instr(o.orderno, '/') = 0 THEN to_char(o.orderno) ELSE to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1)) END ordercode-- 销售凭证 , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' OR instr(o.orderno, '/') = 0 THEN '0' WHEN instr(o.orderno, '#') = 0 THEN to_char(substr(o.orderno, instr(o.orderno, '/') + 1)) ELSE to_char(substr(o.orderno , instr(o.orderno, '/') + 1 , instr(o.orderno, '#') - instr(o.orderno, '/') - 1)) END orderitem , CASE WHEN (INSTR(bar.GROUTINGLINECODE,'A') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(bar.GROUTINGLINECODE,'B') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(bar.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP FROM tp_pm_groutingdailydetail bar INNER JOIN tp_pm_finishedproduct gh ON bar.groutingdailydetailid = gh.groutingdailydetailid INNER JOIN tp_mst_goods g ON g.goodsid = bar.goodsid INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID LEFT JOIN tp_pm_order o ON o.orderid = gh.fhorderid where 1 = 1 " + fifter + @") t GROUP BY t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem, t.testmouldflag, t.zscs,t.WORKSHOP) tt WHERE tt.outputnum <> 0 OR tt.recoverynum <> 0 ORDER BY tt.goodscode ,tt.sapcode ,tt.usercode ,tt.ordercode ,tt.orderitem,tt.zscs,tt.WORKSHOP"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd", yyyymmdd), new OracleParameter(":begindate", date), new OracleParameter(":enddate", ndate) }; DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual"); sqlString = "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" + "values\n" + " (:LogID\n" + " ,'2'\n" + " ,sysdate\n" + " ,:YYYYMMDD\n" + " ,'5000'\n" + " ,'60'\n" + " ,'S'\n" + " ,:DataMSG\n" + " ,:LogID\n" + " ,sysdate\n" + " ,sysdate)"; oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input), }; int r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" + " (YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,GoodsCode\n" + " ,SAPCode\n" + " ,UserCode\n" + " ,WORKSHOP\n" + " ,OutputNum\n" + " ,RECOVERYNUM\n" + " ,ORDERCODE\n" + " ,ORDERITEM\n" + " ,testmouldflag\n" + " ,zscs\n" + " ,LogID,createtime)\n" + "values\n" + " ('" + yyyymmdd + "'\n" + " ,'5000'\n" + " ,'60'\n" + " ,:GoodsCode\n" + " ,:SAPCode\n" + " ,:UserCode\n" + " ,'0'\n" + " ,:OutputNum\n" + " ,:RECOVERYNUM\n" + " ,:ORDERCODE\n" + " ,:ORDERITEM\n" + " ,:testmouldflag\n" + " ,:zscs\n" + " ," + logid_bg + ",:createtime)"; DateTime now = DateTime.Now; foreach (DataRow item in workData5000.Rows) { oracleParameter = new OracleParameter[] { new OracleParameter(":GoodsCode", item["GROES"].ToString()), new OracleParameter(":SAPCode", item["MATNR"].ToString()), new OracleParameter(":UserCode", item["ZGHNU"].ToString()), new OracleParameter(":OutputNum", item["ZCLNG"].ToString()), new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()), new OracleParameter(":ORDERCODE", item["VBELN"].ToString()), new OracleParameter(":ORDERITEM", item["POSNR"].ToString()), new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()), new OracleParameter(":zscs", item["ZSCS"].ToString()), new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" + " ,TO_CHAR(5000) WERKS\n" + " ,TO_CHAR(wd.goodscode) GROES\n" + " ,TO_CHAR(wd.sapcode) MATNR\n" + " ,TO_CHAR(wd.usercode) ZGHNU\n" + " ,TO_CHAR(wd.datacode) ZJDNU\n" + " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" + " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" + " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" + " ,TO_CHAR(wd.ordercode) VBELN\n" + " ,TO_CHAR(wd.orderitem) POSNR\n" + " ,TO_CHAR(wd.outputnum) ZCLNG\n" + " ,TO_CHAR(wd.scrapnum) ZSPNG\n" + " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" + " ,TO_CHAR(wd.recoverynum) ZHSNG\n" + " ,TO_CHAR(wd.repairnum) ZGBNG\n" + " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" + " -- ,TO_CHAR(wd.zscs) zscs\n" + " ,'T' AS zscs\n" + " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" + " ,TO_CHAR( :yyyymmdd) CHARG\n" + " ,TO_CHAR(60) datacode\n" + " FROM tsap_hegii_workdata_bg wd\n" + " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" + " ON wd.LOGID = DL.LOGID \n" + " WHERE wd.logid = :logid"; OracleParameter[] par = null; par = new OracleParameter[] { new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input), new OracleParameter(":yyyymmdd",yyyymmdd), }; DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par); int num = workData5000.Rows.Count; string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq); if (SAP_ING_NEW == "1") { // 调用SAP接口 string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData5000)) + "}}"; //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 result = PostData(url030, postString, "POST"); if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0) { sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; Dictionary obj = JsonConvert.DeserializeObject>(result); object TABLE_OUT; obj.TryGetValue("TABLE_OUT", out TABLE_OUT); obj = JsonConvert.DeserializeObject>(TABLE_OUT + ""); object item1; obj.TryGetValue("item", out item1); JArray arr = JArray.FromObject(item1); foreach (JObject item60 in arr) { string posnr = item60["POSNR"].ToString().TrimStart('0'); oracleParameter = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input), new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } //:msg||chr(13)||DataMSG JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}({num})"; sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid"; oracleParameter = 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(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } if (JObject.Parse(result)["ZTYPE"].ToString() != "S") { sre.Result = -2; sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString(); return sre; } //sqlString = //"UPDATE tp_pm_groutingdailydetail bar\n" + //" SET bar.issync = '1'\n" + //" WHERE 1 = 1" + fifter; //r = oracleTrConn.ExecuteNonQuery(sqlString); } } oracleTrConn.Close(); return sre; } public static ServiceResultEntity SyncSap5000_test_jj(DateTime date, string datacode, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); //string fifter = "AND (bar.barcode = '10015967073')"; string fifter = "AND (gh.FHTime is not null and gh.FHTime >= :begindate and gh.FHTime < :enddate)"; string yyyymmdd = date.ToString("yyyyMMdd"); #region string workcode = "5000"; string sqlString = @" SELECT :yyyymmdd AS yyyymmdd ,SYSDATE AS createtime ,tt.goodscode GROES , tt.sapcode MATNR , tt.usercode ZGHNU , tt.ordercode VBELN , tt.orderitem POSNR , decode(tt.testmouldflag,0,'C',1,'Y','') ZSCMS -- ,tt.zscs ,'T' AS zscs , to_char(tt.outputnum) AS ZCLNG , to_char(tt.recoverynum) AS ZHSNG , TO_CHAR(5000) WERKS , '60' ZJDNU ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU ,to_char(SYSDATE, 'HH24MISS') ZKSSJ ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ ,'0' ZSPNG ,'0' ZQCNG ,'0' ZGBNG ,to_char(tt.WORKSHOP) ZSCCJ ,TO_CHAR( :yyyymmdd) CHARG ,'60' datacode FROM(SELECT t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem , t.testmouldflag , t.zscs , t.WORKSHOP , SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum , SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum FROM(SELECT bar.goodscode , bar.materialcode sapcode , gh.fhusercode usercode , o.orderno , bar.recyclingflag , bar.testmouldflag , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' THEN ' ' WHEN instr(o.orderno, '/') = 0 THEN to_char(o.orderno) ELSE to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1)) END ordercode-- 销售凭证 , CASE WHEN o.orderid IS NULL OR o.orderno LIKE 'HEGII%' OR instr(o.orderno, '/') = 0 THEN '0' WHEN instr(o.orderno, '#') = 0 THEN to_char(substr(o.orderno, instr(o.orderno, '/') + 1)) ELSE to_char(substr(o.orderno , instr(o.orderno, '/') + 1 , instr(o.orderno, '#') - instr(o.orderno, '/') - 1)) END orderitem, CASE WHEN (INSTR(bar.GROUTINGLINECODE,'A') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1 WHEN (INSTR(bar.GROUTINGLINECODE,'B') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1) AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2 WHEN INSTR(bar.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0 END AS WORKSHOP FROM tp_pm_groutingdailydetail bar INNER JOIN tp_pm_finishedproduct gh ON bar.groutingdailydetailid = gh.groutingdailydetailid INNER JOIN tp_mst_goods g ON g.goodsid = bar.goodsid INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID LEFT JOIN tp_pm_order o ON o.orderid = gh.fhorderid where 1 = 1 " + fifter + @" and (o.orderid IS NULL OR o.orderno LIKE 'HEGII%')) t GROUP BY t.goodscode , t.sapcode , t.usercode , t.ordercode , t.orderitem, t.testmouldflag, t.zscs, t.WORKSHOP) tt WHERE tt.outputnum <> 0 OR tt.recoverynum <> 0 ORDER BY tt.goodscode ,tt.sapcode ,tt.usercode ,tt.ordercode ,tt.orderitem,tt.zscs, tt.WORKSHOP"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd", yyyymmdd), new OracleParameter(":begindate", date), new OracleParameter(":enddate", ndate) }; DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter); string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual"); sqlString = "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" + "values\n" + " (:LogID\n" + " ,'2'\n" + " ,sysdate\n" + " ,:YYYYMMDD\n" + " ,'5000'\n" + " ,'60'\n" + " ,'S'\n" + " ,:DataMSG\n" + " ,:LogID\n" + " ,sysdate\n" + " ,sysdate)"; oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input), }; int r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" + " (YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,GoodsCode\n" + " ,SAPCode\n" + " ,UserCode\n" + " ,WORKSHOP\n" + " ,OutputNum\n" + " ,RECOVERYNUM\n" + " ,ORDERCODE\n" + " ,ORDERITEM\n" + " ,testmouldflag\n" + " ,zscs\n" + " ,LogID,createtime)\n" + "values\n" + " ('" + yyyymmdd + "'\n" + " ,'5000'\n" + " ,'60'\n" + " ,:GoodsCode\n" + " ,:SAPCode\n" + " ,:UserCode\n" + " ,'0'\n" + " ,:OutputNum\n" + " ,:RECOVERYNUM\n" + " ,:ORDERCODE\n" + " ,:ORDERITEM\n" + " ,:testmouldflag\n" + " ,:zscs\n" + " ," + logid_bg + ",:createtime)"; DateTime now = DateTime.Now; foreach (DataRow item in workData5000.Rows) { oracleParameter = new OracleParameter[] { new OracleParameter(":GoodsCode", item["GROES"].ToString()), new OracleParameter(":SAPCode", item["MATNR"].ToString()), new OracleParameter(":UserCode", item["ZGHNU"].ToString()), new OracleParameter(":OutputNum", item["ZCLNG"].ToString()), new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()), new OracleParameter(":ORDERCODE", item["VBELN"].ToString()), new OracleParameter(":ORDERITEM", item["POSNR"].ToString()), new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()), new OracleParameter(":zscs", item["ZSCS"].ToString()), new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" + " ,TO_CHAR(5000) WERKS\n" + " ,TO_CHAR(wd.goodscode) GROES\n" + " ,TO_CHAR(wd.sapcode) MATNR\n" + " ,TO_CHAR(wd.usercode) ZGHNU\n" + " ,TO_CHAR(wd.datacode) ZJDNU\n" + " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" + " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" + " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" + " ,TO_CHAR(wd.ordercode) VBELN\n" + " ,TO_CHAR(wd.orderitem) POSNR\n" + " ,TO_CHAR(wd.outputnum) ZCLNG\n" + " ,TO_CHAR(wd.scrapnum) ZSPNG\n" + " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" + " ,TO_CHAR(wd.recoverynum) ZHSNG\n" + " ,TO_CHAR(wd.repairnum) ZGBNG\n" + " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" + " -- ,TO_CHAR(wd.zscs) zscs\n" + " ,'T' AS zscs\n" + " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" + " ,TO_CHAR( :yyyymmdd) CHARG\n" + " ,TO_CHAR(60) datacode\n" + " FROM tsap_hegii_workdata_bg wd\n" + " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" + " ON wd.LOGID = DL.LOGID \n" + " WHERE wd.logid = :logid"; OracleParameter[] par = null; par = new OracleParameter[] { new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input), new OracleParameter(":yyyymmdd",yyyymmdd), }; DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par); int num = workData5000.Rows.Count; string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG"; string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq); if (SAP_ING_NEW == "1") { // 调用SAP接口 string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper.ConvertToModel(workData5000)) + "}}"; //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 result = PostData(url030, postString, "POST"); if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0) { sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; Dictionary obj = JsonConvert.DeserializeObject>(result); object TABLE_OUT; obj.TryGetValue("TABLE_OUT", out TABLE_OUT); obj = JsonConvert.DeserializeObject>(TABLE_OUT + ""); object item1; obj.TryGetValue("item", out item1); JArray arr = JArray.FromObject(item1); foreach (JObject item60 in arr) { string posnr = item60["POSNR"].ToString().TrimStart('0'); oracleParameter = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input), new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } //:msg||chr(13)||DataMSG JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}(" + num + ")"; sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid"; oracleParameter = 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(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input), }; r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter); } if (JObject.Parse(result)["ZTYPE"].ToString() != "S") { sre.Result = -2; sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString(); return sre; } //sqlString = //"UPDATE tp_pm_groutingdailydetail bar\n" + //" SET bar.issync = '1'\n" + //" WHERE 1 = 1" + fifter; //r = oracleTrConn.ExecuteNonQuery(sqlString); } } #endregion oracleTrConn.Close(); return sre; } /// /// 同步SAP接口 /// /// /// /// /// /// public static ServiceResultEntity SyncSap(DateTime date, string datacode, int userid, int logid) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; string sqlString = string.Empty; sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); string yyyymmdd = date.ToString("yyyyMMdd"); int r = 0; // 查询出当前日志外,最新的一次日志 sqlString = "SELECT t.executedateend\n" + " FROM (SELECT dl.executedateend\n" + " FROM tsap_hegii_datalog dl\n" + " WHERE dl.logtype = '3'\n" + " AND dl.datastuts = 'S'\n" + " AND dl.datacode = :datacode\n" + " AND dl.logid <> :logid\n" + " ORDER BY dl.executedateend DESC) t\n" + " WHERE rownum = 1"; paras = new OracleParameter[] { new OracleParameter(":datacode", datacode), new OracleParameter(":logid", logid) }; object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras); if (executedateend == null || Convert.ToDateTime(executedateend) >= date) { sre.Result = "W"; sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步"; return sre; } sqlString = "SELECT wd.yyyymmdd\n" + " ,wd.workcode\n" + " ,wd.datacode\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,wd.ordercode\n" + " ,wd.orderitem\n" + " ,wd.outputnum\n" + " ,wd.scrapnum\n" + " ,wd.cleanupnum\n" + " ,wd.recoverynum\n" + " ,wd.repairnum\n" + " ,wd.testmouldflag\n" + " ,wd.zscs\n" + " FROM tsap_hegii_workdata wd\n" + " WHERE wd.logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); Zppfm008 sapParameter = new Zppfm008(); if (workData != null && workData.Rows.Count > 0) { sapParameter.ZSUM = workData.Rows.Count; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; int index = 0; foreach (DataRow item in workData.Rows) { ZSPP100 info100 = new ZSPP100(); // 工厂 info100.WERKS = workcode; // 型号 info100.GROES = item["GoodsCode"].ToString(); // 物料编号 info100.MATNR = item["SAPCode"].ToString(); // 生产工号 info100.ZGHNU = item["UserCode"].ToString(); // 数据节点 info100.ZJDNU = item["DataCode"].ToString(); // 时间戳 info100.ZSCNU = yyyymmdd; // 销售凭证 info100.VBELN = item["ORDERCODE"].ToString().Trim(); // 销售凭证项目 info100.POSNR = item["ORDERITEM"].ToString(); // 产量 info100.ZCLNG = item["OutputNum"].ToString(); // 损坯 info100.ZSPNG = item["SCRAPNUM"].ToString(); // 清除 info100.ZQCNG = item["CLEANUPNUM"].ToString(); // 回收 info100.ZHSNG = item["RECOVERYNUM"].ToString(); // 干补 info100.ZGBNG = item["REPAIRNUM"].ToString(); // 注浆类型 G高压 L普通 info100.ZSCS = item["ZSCS"].ToString(); info100.ZKSSJ = Convert.ToDateTime(executedateend).ToString("HHmmss"); info100.ZJSRQ = Convert.ToDecimal(date.ToString("yyyyMMddHHmmss")); sapParameter.TABLE_IN[index++] = info100; } } else { sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; } // 调用SAP接口 ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode); if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (ZSPP100 item in result.TABLE_OUT) { string posnr = item.POSNR.TrimStart('0'); paras = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } } result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})"; sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); if (result.ZTYPE == "S") { sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } oracleConn.Commit(); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 同步成品条码(手动) /// /// /// /// //public static ServiceResultEntity SetFP6001(DateTime date, int userid) //{ // IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string yyyymmdd = date.ToString("yyyyMMdd"); // string sqlString = // "select t.logid\n" + // " from tsap_hegii_datalog t\n" + // " where t.logtype = '2'\n" + // " and t.datastuts = 'S'\n" + // " and t.yyyymmdd = :yyyymmdd\n" + // " and t.datacode = :datacode"; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":datacode",OracleDbType.Varchar2, "6001", ParameterDirection.Input), // }; // string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); // if (!string.IsNullOrEmpty(logid)) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。"; // return sre; // } // sqlString = // "select t.logid\n" + // " from tsap_hegii_datalog t\n" + // " where t.logtype = '1'\n" + // " and t.datastuts = 'S'\n" + // " and t.yyyymmdd = :yyyymmdd\n" + // " and t.datacode = :datacode" + // " and t.createuserid is null for update"; // string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); // sqlString = "select workcode from tp_mst_account where rownum = 1"; // string workcode = oracleConn.GetSqlResultToStr(sqlString); // //DateTime datebegin = date.Date; // //DateTime dateend = date.Date.AddDays(1); // logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual"); // string msg = null; // //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" + // // dateend.ToString("yyyyMMdd-HHmm"); // sqlString = "insert into tsap_hegii_datalog\n" + // " (LogID\n" + // " ,LogType\n" + // " ,BeginTime\n" + // " ,YYYYMMDD\n" + // " ,WorkCode\n" + // " ,DataCode\n" + // " ,DataStuts\n" + // " ,DataMSG\n" + // " ,CreateUserID\n" + // " ,DataLogID)\n" + // "values\n" + // " (:LogID\n" + // " ,'2'\n" + // " ,sysdate\n" + // " ,:YYYYMMDD\n" + // " ,:WorkCode\n" + // " ,:DataCode\n" + // " ,:DataStuts\n" + // " ,:DataMSG\n" + // " ,:CreateUserID\n" + // " ,:DataLogID)"; // int r = 0; // if (string.IsNullOrEmpty(datalogid)) // { // oracleParameter = new OracleParameter[] // { // new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), // new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), // new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), // new OracleParameter(":DataCode",OracleDbType.Varchar2, "6001", ParameterDirection.Input), // new OracleParameter(":DataMSG",OracleDbType.Varchar2, "DKMES-ERROR:NO DATA " + msg, ParameterDirection.Input), // new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input), // new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // oracleConn.Commit(); // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "没有同步数据"; // sre.Result = "E"; // return sre; // } // oracleParameter = new OracleParameter[] // { // new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), // new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), // new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), // new OracleParameter(":DataCode",OracleDbType.Varchar2, "6001", ParameterDirection.Input), // new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input), // new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input), // new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // sqlString = // "select fp.yyyymmdd\n" + // " ,fp.workcode\n" + // " ,fp.barcode\n" + // " ,fp.outcode\n" + // " ,fp.goodscode\n" + // " ,fp.sapcode\n" + // " ,fp.sapflbatchno\n" + // " ,fp.sapfhundoflag\n" + // " ,fp.ordercode\n" + // " ,fp.orderitem\n" + // " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid\n" + // " order by fp.sapflbatchno, fp.barcode"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), // }; // DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // // 单次传输最大条数 // int maxCount = 100000; // List sapParameterList = new List(); // if (fpData != null && fpData.Rows.Count > 0) // { // int index = 0; // //Zppfm010 sapParameter = new Zppfm010(); // //sapParameter.Zsum = maxCount; // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum]; // List tableInList = new List(); // foreach (DataRow item in fpData.Rows) // { // if (index >= maxCount) // { // Zppfm010 sapItem = new Zppfm010(); // sapItem.ZSUM = tableInList.Count; // sapItem.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapItem); // index = 0; // tableInList.Clear(); // } // ZSPP110 info110 = new ZSPP110(); // // 时间戳 // info110.ZSCNU = yyyymmdd; // // 工厂 // info110.WERKS = workcode; // // 生产条码 // info110.ZSCTM = item["barcode"].ToString(); // // 包装条码 // info110.ZBZTM = item["outcode"].ToString(); // // 产品编码 // info110.ZCPBM = item["goodscode"].ToString(); // // 物料编号 // info110.MATNR = item["sapcode"].ToString(); // // 包装整板标识 // info110.ZBZBS = item["sapflbatchno"].ToString(); // // 重新绑定标识 // info110.ZCXBD = item["sapfhundoflag"].ToString(); // // 销售凭证 // info110.KDAUF = item["ordercode"].ToString(); // // 销售凭证项目 // info110.KDPOS = item["orderitem"].ToString(); // info110.ZCODEN = ""; // info110.ZCODEYZM = ""; // if (info110.WERKS == "5011" && info110.ZCPBM == "K047L") // { // continue; // } // tableInList.Add(info110); // index++; // } // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = tableInList.Count; // sapParameter.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapParameter); // index = 0; // tableInList.Clear(); // } // else // { // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = 0; // sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM]; // sapParameterList.Add(sapParameter); // } // foreach (Zppfm010 sapParameter in sapParameterList) // { // ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd); // //sre.Message = result.ZMSG; // sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})"; // sre.Result = result.ZTYPE; // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), // //new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), // new OracleParameter(":msg",OracleDbType.Varchar2, sre.Message, ParameterDirection.Input), // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) // { // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + datalogid + // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and barcode=:barcode"; // foreach (ZSPP110 item in result.TABLE_OUT) // { // oracleParameter = new OracleParameter[] // { // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // } // } // if (result.ZTYPE != "S") // { // oracleConn.Commit(); // //sre.Message = result.Zmsg; // //sre.Result = result.Ztype; // return sre; // } // } // //if (result.Ztype == "S") // { // sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), // new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // } // oracleConn.Commit(); // //sre.Message = result.Zmsg; // //sre.Result = result.Ztype; // return sre; // } // catch (Exception ex) // { // throw ex; // } // finally // { // if (oracleConn != null && // oracleConn.ConnState == ConnectionState.Open) // { // oracleConn.Disconnect(); // } // } //} // /// // /// 同步成品条码(手动) // /// // /// // /// // /// // public static ServiceResultEntity SetFP60_T(DateTime date, int userid) // { // IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string yyyymmdd = date.ToString("yyyyMMdd"); // string sqlString = null; // sqlString = // "select fp.yyyymmdd\n" + // " ,fp.workcode\n" + // " ,fp.barcode\n" + // " ,fp.outcode\n" + // " ,fp.goodscode\n" + // " ,fp.sapcode\n" + // " ,fp.sapflbatchno\n" + // " ,fp.sapfhundoflag\n" + // " ,fp.ordercode\n" + // " ,fp.orderitem\n" + // " from tsap_hegii_finishedproduct fp where fp.logid=10339 and fp.sapflbatchno <> '575bd97d-5e3a-496f-8703-9e63be8016f0'\n" + // @" and fp.sapflbatchno <> '191204091310-46e7be7a-ea51-43a0-bd46-cb0866cef296' // and fp.sapflbatchno <> '191203234110-093d2c42-1842-4532-b7d6-39fe768ff35a' // and fp.sapflbatchno <> '191203234607-b242c5ef-2a42-4e4b-b02f-9a03798ee662' // and fp.sapflbatchno <> '191203234854-6218b6d8-4f14-4ab8-9be8-b86ce35f9a62' // and fp.sapflbatchno <> '191203234912-bfa6843d-767d-4ca7-8477-7b7242b7f900' // and fp.sapflbatchno <> '191204000111-18741887-f47b-4da7-9f0a-a970a30f79cc' //" + // " order by fp.sapflbatchno, fp.barcode"; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, "191204091310-46e7be7a-ea51-43a0-bd46-cb0866cef296", ParameterDirection.Input), // }; // DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // // 单次传输最大条数 // int maxCount = 100000; // List sapParameterList = new List(); // if (fpData != null && fpData.Rows.Count > 0) // { // int index = 0; // //Zppfm010 sapParameter = new Zppfm010(); // //sapParameter.Zsum = maxCount; // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum]; // List tableInList = new List(); // foreach (DataRow item in fpData.Rows) // { // if (index >= maxCount) // { // Zppfm010 sapItem = new Zppfm010(); // sapItem.ZSUM = tableInList.Count; // sapItem.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapItem); // index = 0; // tableInList.Clear(); // } // ZSPP110 info110 = new ZSPP110(); // // 时间戳 // info110.ZSCNU = yyyymmdd; // // 工厂 // info110.WERKS = "5020"; // // 生产条码 // info110.ZSCTM = item["barcode"].ToString(); // // 包装条码 // info110.ZBZTM = item["outcode"].ToString(); // // 产品编码 // info110.ZCPBM = item["goodscode"].ToString(); // // 物料编号 // info110.MATNR = item["sapcode"].ToString(); // // 包装整板标识 // info110.ZBZBS = item["sapflbatchno"].ToString(); // // 重新绑定标识 // info110.ZCXBD = item["sapfhundoflag"].ToString(); // // 销售凭证 // info110.KDAUF = item["ordercode"].ToString(); // // 销售凭证项目 // info110.KDPOS = item["orderitem"].ToString(); // info110.ZCODEN = ""; // info110.ZCODEYZM = ""; // tableInList.Add(info110); // index++; // } // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = tableInList.Count; // sapParameter.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapParameter); // index = 0; // tableInList.Clear(); // } // else // { // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = 0; // sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM]; // sapParameterList.Add(sapParameter); // } // foreach (Zppfm010 sapParameter in sapParameterList) // { // ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd); // //sre.Message = result.ZMSG; // sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})"; // sre.Result = result.ZTYPE; // } // return sre; // } // catch (Exception ex) // { // throw ex; // } // finally // { // if (oracleConn != null && // oracleConn.ConnState == ConnectionState.Open) // { // oracleConn.Disconnect(); // } // } // } ///// ///// 同步成品条码(手动) ///// ///// ///// ///// //public static ServiceResultEntity SetFP6002(DateTime date, int userid) //{ // IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // ServiceResultEntity sre = new ServiceResultEntity(); // try // { // string yyyymmdd = date.ToString("yyyyMMdd"); // string sqlString = // "select t.logid\n" + // " from tsap_hegii_datalog t\n" + // " where t.logtype = '2'\n" + // " and t.datastuts = 'S'\n" + // " and t.yyyymmdd = :yyyymmdd\n" + // " and t.datacode = :datacode"; // OracleParameter[] oracleParameter = new OracleParameter[] // { // new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":datacode",OracleDbType.Varchar2, "6002", ParameterDirection.Input), // }; // string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); // if (!string.IsNullOrEmpty(logid)) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。"; // return sre; // } // sqlString = // "select t.logid, t.begintime, t.endtime\n" + // " from tsap_hegii_datalog t\n" + // " where t.logtype = '1'\n" + // " and t.datastuts = 'S'\n" + // " and t.yyyymmdd = :yyyymmdd\n" + // " and t.datacode = :datacode" + // " and t.createuserid is null for update"; // //string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter); // DataTable dt = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // string datalogid = null; // string msg = null; // if (dt.Rows.Count > 0) // { // datalogid = dt.Rows[0]["logid"] + ""; // msg = Convert.ToDateTime(dt.Rows[0]["endtime"]).ToString("HH:mm "); // } // sqlString = "select workcode from tp_mst_account where rownum = 1"; // string workcode = oracleConn.GetSqlResultToStr(sqlString); // //DateTime datebegin = date.Date; // //DateTime dateend = date.Date.AddDays(1); // logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual"); // //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" + // // dateend.ToString("yyyyMMdd-HHmm"); // sqlString = "insert into tsap_hegii_datalog\n" + // " (LogID\n" + // " ,LogType\n" + // " ,BeginTime\n" + // " ,YYYYMMDD\n" + // " ,WorkCode\n" + // " ,DataCode\n" + // " ,DataStuts\n" + // " ,DataMSG\n" + // " ,CreateUserID\n" + // " ,DataLogID)\n" + // "values\n" + // " (:LogID\n" + // " ,'2'\n" + // " ,sysdate\n" + // " ,:YYYYMMDD\n" + // " ,:WorkCode\n" + // " ,:DataCode\n" + // " ,:DataStuts\n" + // " ,:DataMSG\n" + // " ,:CreateUserID\n" + // " ,:DataLogID)"; // int r = 0; // if (string.IsNullOrEmpty(datalogid)) // { // oracleParameter = new OracleParameter[] // { // new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), // new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), // new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), // new OracleParameter(":DataCode",OracleDbType.Varchar2, "6002", ParameterDirection.Input), // new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + "DKMES-ERROR:NO DATA " , ParameterDirection.Input), // new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input), // new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // oracleConn.Commit(); // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "没有同步数据"; // sre.Result = "E"; // return sre; // } // oracleParameter = new OracleParameter[] // { // new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), // new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), // new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), // new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), // new OracleParameter(":DataCode",OracleDbType.Varchar2, "6002", ParameterDirection.Input), // new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input), // new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input), // new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // sqlString = // "select fp.yyyymmdd\n" + // " ,fp.workcode\n" + // " ,fp.barcode\n" + // " ,fp.outcode\n" + // " ,fp.goodscode\n" + // " ,fp.sapcode\n" + // " ,fp.sapflbatchno\n" + // " ,fp.sapfhundoflag\n" + // " ,fp.ordercode\n" + // " ,fp.orderitem\n" + // //" from tsap_hegii_finishedproduct fp where fp.logid = :datalogid and (ZTYPE is null or ZTYPE <> 'S')\n" + // " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid and (ZTYPE is null)\n" + // " order by fp.sapflbatchno, fp.barcode"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), // }; // DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // // 单次传输最大条数 // int maxCount = 100000; // List sapParameterList = new List(); // if (fpData != null && fpData.Rows.Count > 0) // { // int index = 0; // //Zppfm010 sapParameter = new Zppfm010(); // //sapParameter.Zsum = maxCount; // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum]; // List tableInList = new List(); // foreach (DataRow item in fpData.Rows) // { // if (index >= maxCount) // { // Zppfm010 sapItem = new Zppfm010(); // sapItem.ZSUM = tableInList.Count; // sapItem.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapItem); // index = 0; // tableInList.Clear(); // } // ZSPP110 info110 = new ZSPP110(); // // 时间戳 // info110.ZSCNU = yyyymmdd; // // 工厂 // info110.WERKS = workcode; // // 生产条码 // info110.ZSCTM = item["barcode"].ToString(); // // 包装条码 // info110.ZBZTM = item["outcode"].ToString(); // // 产品编码 // info110.ZCPBM = item["goodscode"].ToString(); // // 物料编号 // info110.MATNR = item["sapcode"].ToString(); // // 包装整板标识 // info110.ZBZBS = item["sapflbatchno"].ToString(); // // 重新绑定标识 // info110.ZCXBD = item["sapfhundoflag"].ToString(); // // 销售凭证 // info110.KDAUF = item["ordercode"].ToString(); // // 销售凭证项目 // info110.KDPOS = item["orderitem"].ToString(); // info110.ZCODEN = ""; // info110.ZCODEYZM = ""; // tableInList.Add(info110); // index++; // } // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = tableInList.Count; // sapParameter.TABLE_IN = tableInList.ToArray(); // sapParameterList.Add(sapParameter); // index = 0; // tableInList.Clear(); // } // else // { // Zppfm010 sapParameter = new Zppfm010(); // sapParameter.ZSUM = 0; // sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM]; // sapParameterList.Add(sapParameter); // } // foreach (Zppfm010 sapParameter in sapParameterList) // { // ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd); // //sre.Message = result.ZMSG; // sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})"; // sre.Result = result.ZTYPE; // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =DataMSG||:msg where logid = :logid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), // //new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), // new OracleParameter(":msg",OracleDbType.Varchar2, sre.Message, ParameterDirection.Input), // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) // { // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where logid = " + datalogid + // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and barcode=:barcode and sapflbatchno=:sapflbatchno"; // foreach (ZSPP110 item in result.TABLE_OUT) // { // oracleParameter = new OracleParameter[] // { // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input), // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // } // } // if (result.ZTYPE != "S") // { // oracleConn.Commit(); // //sre.Message = result.Zmsg; // //sre.Result = result.Ztype; // return sre; // } // } // //if (result.Ztype == "S") // { // sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), // new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); // } // oracleConn.Commit(); // //sre.Message = result.Zmsg; // //sre.Result = result.Ztype; // return sre; // } // catch (Exception ex) // { // throw ex; // } // finally // { // if (oracleConn != null && // oracleConn.ConnState == ConnectionState.Open) // { // oracleConn.Disconnect(); // } // } //} /// /// 产量接口 /// /// /// public static ZPPFM008Response HGSAPDK_ZPPFM008(Zppfm008 sapParameter, string yyyymmdd, string datacode, string SPANAME = "") { ZPPFM008Response sapResult = null; try { using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND" + SPANAME)) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; //credential.UserName = "hgsapdk"; //credential.Password = "Sapdk#240"; INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName"); credential.Password = ini.ReadIniData("SAP_HEGII", "Password"); // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP100[0]; // 接口 sapResult = sapClient.ZPPFM008(sapParameter); if (sapResult.ZTYPE == "S") { // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM, " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } else { foreach (ZSPP100 item in sapResult.TABLE_OUT) { if (!string.IsNullOrWhiteSpace(item.ZMSG)) { sapResult.ZMSG += $"[{item.ZMSG}]"; break; } } // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, JsonHelper.ToJson(sapResult), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } } catch (Exception ex) { sapResult = new ZPPFM008Response(); sapResult.ZTYPE = "E"; sapResult.ZMSG = ex.Message; //if (ex is System.ServiceModel.FaultException) //{ // sapResult.ZMSG = ex.Message; //} //else //{ // sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); //} OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM008", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } ///// ///// 成品明细(条码接口) ///// ///// //public static ZPPFM010Response HGSAPDK_ZPPFM010(Zppfm010 sapParameter, string yyyymmdd, string SPANAME = "") //{ // ZPPFM010Response sapResult = null; // try // { // using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND" + SPANAME)) // { // // 登录 // UserNamePasswordClientCredential credential = // sapClient.ClientCredentials.UserName; // //credential.UserName = "hgsapdk"; // //credential.Password = "Sapdk#240"; // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); // credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName"); // credential.Password = ini.ReadIniData("SAP_HEGII", "Password"); // // 参数 // sapParameter.ZSUMSpecified = true; // sapParameter.TABLE_OUT = new ZSPP110[0]; // // 接口 // sapResult = sapClient.ZPPFM010(sapParameter); // if (sapResult.ZTYPE == "S") // { // // 结果 // OutputLog.TraceLog(LogPriority.Information, // "HGSAPDK_ZPPFM010", // "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM, // " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, // LocalPath.LogExePath + "SAP_HEGII\\Info_"); // } // else // { // foreach (ZSPP110 item in sapResult.TABLE_OUT) // { // if (!string.IsNullOrWhiteSpace(item.ZMSG)) // { // sapResult.ZMSG += $"[{item.ZMSG}]"; // break; // } // } // // 结果 // OutputLog.TraceLog(LogPriority.Information, // "HGSAPDK_ZPPFM010", // "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, // JsonHelper.ToJson(sapResult), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } // } // } // catch (Exception ex) // { // sapResult = new ZPPFM010Response(); // sapResult.ZTYPE = "E"; // sapResult.ZMSG = ex.Message; // //if (ex is System.ServiceModel.FaultException) // //{ // // sapResult.ZMSG = ex.Message; // //} // //else // //{ // // sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); // //} // OutputLog.TraceLog(LogPriority.Error, // "HGSAPDK_ZPPFM010", // sapResult.ZMSG, // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } // return sapResult; //} #region 测试240 /// /// 同步成品条码(手动)-测试 /// /// /// /// public static ServiceResultEntity SetFP60_240(DateTime date, int userid) { /* Zppfm008 sapParameter1 = new Zppfm008(); sapParameter1.Zsum = 0; sapParameter1.TableIn = new Zspp100[0]; Zppfm010 sapParameter2 = new Zppfm010(); sapParameter2.ZSUM = 30; sapParameter2.TABLE_IN = new ZSPP110[30]; for (int i = 0; i < 10; i++) { ZSPP110 info110 = new ZSPP110(); // 时间戳 info110.ZSCNU = "20170101"; // 工厂 info110.WERKS = "5020"; // 生产条码 info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0'); // 包装条码 info110.ZBZTM = "CT127PD2110B0150" + info110.ZSCTM + "1"; // 产品编码 info110.ZCPBM = "H0112L"; // 物料编号 info110.MATNR = "CT127PD2110B01"; // 包装整板标识 info110.ZBZBS = "1-1-1"; // 重新绑定标识 info110.ZCXBD = "X"; // 销售凭证 info110.KDAUF = "1200032630"; // 销售凭证项目 info110.KDPOS = "10"; sapParameter2.TABLE_IN[i] = info110; } for (int i = 10; i < 20; i++) { ZSPP110 info110 = new ZSPP110(); // 时间戳 info110.ZSCNU = "20170101"; // 工厂 info110.WERKS = "5020"; // 生产条码 info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0'); // 包装条码 info110.ZBZTM = "CT127PD2110B0150" + info110.ZSCTM + "1"; // 产品编码 info110.ZCPBM = "H0112L"; // 物料编号 info110.MATNR = "CT127PD2110B01"; // 包装整板标识 info110.ZBZBS = "1-1-1"; // 重新绑定标识 info110.ZCXBD = ""; // 销售凭证 info110.KDAUF = "1200030151"; // 销售凭证项目 info110.KDPOS = "10"; sapParameter2.TABLE_IN[i] = info110; } for (int i = 20; i < 30; i++) { ZSPP110 info110 = new ZSPP110(); // 时间戳 info110.ZSCNU = "20170101"; // 工厂 info110.WERKS = "5020"; // 生产条码 info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0'); // 包装条码 info110.ZBZTM = "CT967ES2210N0150" + info110.ZSCTM + "1"; // 产品编码 info110.ZCPBM = "H0112L"; // 物料编号 info110.MATNR = "CT967ES2210N01"; // 包装整板标识 info110.ZBZBS = "1-1-1"; // 重新绑定标识 info110.ZCXBD = ""; // 销售凭证 info110.KDAUF = "1200032678"; // 销售凭证项目 info110.KDPOS = "10"; sapParameter2.TABLE_IN[i] = info110; } */ //HGSAPDK_ZPPFM008(sapParameter1, date.ToString("yyyyMMdd"), "800"); //HGSAPDK_ZPPFM008_240(sapParameter1, date.ToString("yyyyMMdd"), "240"); //HGSAPDK_ZPPFM010(sapParameter2, date.ToString("yyyyMMdd")); //ZPPFM010Response result1 = HGSAPDK_ZPPFM010_240(sapParameter2, date.ToString("yyyyMMdd")); //foreach (ZSPP110 item in result1.TABLE_OUT) //{ // if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG)) // { // OutputLog.TraceLog(LogPriority.Information, // "HGSAPDK_ZPPFM010_240", JsonHelper.ToJson(item), // "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG, // LocalPath.LogExePath + "SAP_HEGII\\Info_"); // } //} //return new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); date = new DateTime(2021, 12, 8); DateTime dateend = date; INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); string EndDate6001 = ini.ReadIniData("SAP_HEGII", "EndDate6001"); DateTime end = DateTime.Now.Date.AddDays(-1); if (!string.IsNullOrWhiteSpace(EndDate6001)) { end = DateTime.ParseExact(EndDate6001, "yyyy-MM-dd", null); } try { //string sqlString = // "select fp.yyyymmdd\n" + // " ,fp.workcode\n" + // " ,fp.barcode\n" + // " ,fp.outcode\n" + // " ,fp.goodscode\n" + // " ,fp.sapcode\n" + // " ,fp.sapflbatchno\n" + // " ,fp.sapfhundoflag\n" + // " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid"; string sqlString = "select to_char(fp.fhtime, 'yyyymmdd') yyyymmdd\n" + " ,aa.workcode workcode\n" + " ,fp.barcode\n" + " ,case when length(gdd.onlycode) = 7 then gdd.materialcode || 'FF' || gdd.onlycode else nvl(gdd.outlabelcode\n" + " ,(gdd.materialcode || aa.workcode || gdd.onlycode)) end outcode\n" + " ,gdd.goodscode\n" + " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode)) sapcode\n" + " ,nvl(fp.finishedloadbatchno, fp.fhbatchno) sapflbatchno\n" + " ,' ' sapfhundoflag\n" + " ,gdd.securitycode\n" + " from tp_pm_finishedproduct fp\n" + " inner join tp_pm_groutingdailydetail gdd\n" + " on gdd.barcode = fp.barcode\n" + " inner join tp_mst_goods g\n" + " on g.goodsid = gdd.goodsid\n" + " inner join tp_mst_account aa\n" + " on aa.accountid = gdd.accountid\n" + " where fp.fhtime >= :v_datebegin\n" + " and fp.fhtime < :v_dateend\n" + " and gdd.securitycode is not null\n" + " and rownum < 101\n" + " order by fp.fhtime,fp.barcode"; while (date <= end) { dateend = date.AddDays(1); OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":v_datebegin",OracleDbType.Date, date, ParameterDirection.Input), new OracleParameter(":v_dateend",OracleDbType.Date, dateend, ParameterDirection.Input), }; DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // 单次传输最大条数 int maxCount = 10000; List sapParameterList = new List(); if (fpData != null && fpData.Rows.Count > 0) { int index = 0; List tableInList = new List(); foreach (DataRow item in fpData.Rows) { if (index >= maxCount) { Zppfm010 sapItem = new Zppfm010(); sapItem.ZSUM = tableInList.Count; sapItem.TABLE_IN = tableInList.ToArray(); sapParameterList.Add(sapItem); index = 0; tableInList.Clear(); } ZSPP110 info110 = new ZSPP110(); // 时间戳 info110.ZSCNU = item["yyyymmdd"].ToString(); // 工厂 info110.WERKS = item["workcode"].ToString(); // 生产条码 info110.ZSCTM = item["barcode"].ToString(); // 包装条码 info110.ZBZTM = item["outcode"].ToString(); //生产防伪码 xuwei add 2021-12-09 info110.SECURITYCODE = item["securitycode"].ToString(); // 产品编码 info110.ZCPBM = item["goodscode"].ToString(); // 物料编号 info110.MATNR = item["sapcode"].ToString(); // 包装整板标识 info110.ZBZBS = item["sapflbatchno"].ToString(); // 重新绑定标识 info110.ZCXBD = item["sapfhundoflag"].ToString(); if (info110.WERKS == "5011" && info110.ZCPBM == "K047L") { continue; } tableInList.Add(info110); index++; } Zppfm010 sapParameter = new Zppfm010(); sapParameter.ZSUM = tableInList.Count; sapParameter.TABLE_IN = tableInList.ToArray(); sapParameterList.Add(sapParameter); index = 0; tableInList.Clear(); } else { Zppfm010 sapParameter = new Zppfm010(); sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM]; sapParameterList.Add(sapParameter); } int indexP = 0; int ccc = sapParameterList.Count; foreach (Zppfm010 sapParameter in sapParameterList) //for (int i = 80; i < ccc; i++) { //Zppfm010 sapParameter = sapParameterList[i]; ZPPFM010Response result = HGSAPDK_ZPPFM010_240(sapParameter, date.ToString("yyyyMMdd") + " " + (++indexP) + "/" + ccc); //Zppfm010Response result = HGSAPDK_ZPPFM010(sapParameter, "2018 " + (i) + "/" + ccc); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; if (result.ZTYPE != "S") { foreach (ZSPP110 item in result.TABLE_OUT) { if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG)) { OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM010", JsonHelper.ToJson(item), "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } } return sre; } } date = dateend; } oracleConn.Commit(); //sre.Message = result.Zmsg; //sre.Result = result.Ztype; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 产量接口-测试 /// /// /// public static ZPPFM008Response HGSAPDK_ZPPFM008_240(Zppfm008 sapParameter, string yyyymmdd, string datacode, string SPANAME = "") { ZPPFM008Response sapResult = null; try { using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND_240" + SPANAME)) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; credential.UserName = "hgsapdk"; credential.Password = "Sapdk#240"; // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP100[0]; // 接口 sapResult = sapClient.ZPPFM008(sapParameter); // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008_240", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM, "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } } catch (Exception ex) { sapResult = new ZPPFM008Response(); sapResult.ZTYPE = "E"; if (ex is System.ServiceModel.FaultException) { sapResult.ZMSG = ex.Message; } else { sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); } OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM008_240", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } /// /// 成品明细(条码接口)-测试 /// /// public static ZPPFM010Response HGSAPDK_ZPPFM010_240(Zppfm010 sapParameter, string yyyymmdd, string SPANAME = "") { ZPPFM010Response sapResult = null; try { using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND_240" + SPANAME)) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; credential.UserName = "hgsapdk"; credential.Password = "Sapdk#240"; // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP110[0]; // 接口 sapResult = sapClient.ZPPFM010(sapParameter); // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM010_240", "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM, "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } } catch (Exception ex) { sapResult = new ZPPFM010Response(); sapResult.ZTYPE = "E"; if (ex is System.ServiceModel.FaultException) { sapResult.ZMSG = ex.Message; } else { sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); } OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM010_240", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } #endregion #region 测试800 /// /// 同步成品条码(手动)-测试 /// /// /// /// public static ServiceResultEntity SetFP60_800(DateTime date, int userid) { IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); date = new DateTime(2018, 7, 1); DateTime dateend = date; //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config); //string EndDate6001 = ini.ReadIniData("SAP_HEGII", "EndDate6001"); DateTime end = new DateTime(2018, 12, 10); //if (!string.IsNullOrWhiteSpace(EndDate6001)) //{ // end = DateTime.ParseExact(EndDate6001, "yyyy-MM-dd", null); //} try { string sqlString = //"INSERT INTO tsap_hegii_finishedproduct\n" + //" (yyyymmdd\n" + //" ,workcode\n" + //" ,barcode\n" + //" ,outcode\n" + //" ,goodscode\n" + //" ,sapcode\n" + //" ,sapflbatchno\n" + //" ,sapfhundoflag\n" + //" ,ordercode\n" + //" ,orderitem, LOGID)\n" + " SELECT :yyyymmdd yyyymmdd\n" + " ,:workcode workcode\n" + " ,bar.barcode\n" + " ,case when length(gdd.onlycode) = 7 then gdd.materialcode || 'FF' || gdd.onlycode else nvl(gdd.outlabelcode\n" + " ,(gdd.materialcode || :workcode || gdd.onlycode)) end outcode\n" + //" ,nvl(gdd.outlabelcode, (g.materialcode || :workcode || gdd.onlycode)) outcode\n" + " ,gdd.goodscode\n" + " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode)) sapcode\n" + " ,nvl(bar.finishedloadbatchno, bar.fhbatchno) sapflbatchno\n" + " ,' ' sapfhundoflag\n" + " ,CASE\n" + " WHEN o.orderid IS NULL\n" + " OR o.orderno LIKE 'HEGII%' THEN\n" + " NULL\n" + " WHEN instr(o.orderno, '/') = 0 THEN\n" + " to_char(o.orderno)\n" + " ELSE\n" + " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" + " END ordercode -- 销售凭证\n" + " ,CASE\n" + " WHEN o.orderid IS NULL\n" + " OR o.orderno LIKE 'HEGII%'\n" + " OR instr(o.orderno, '/') = 0 THEN\n" + " '0'\n" + " WHEN instr(o.orderno, '#') = 0 THEN\n" + " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" + " ELSE\n" + " to_char(substr(o.orderno\n" + " ,instr(o.orderno, '/') + 1\n" + " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" + " END orderitem -- 销售凭证项目\n" + " ,:LOGID\n" + " FROM tp_pm_finishedproduct bar\n" + " INNER JOIN tp_pm_groutingdailydetail gdd\n" + " ON gdd.barcode = bar.barcode\n" + " INNER JOIN tp_mst_goods g\n" + " ON g.goodsid = gdd.goodsid\n" + " LEFT JOIN tp_pm_order o\n" + " ON o.orderid = bar.fhorderid\n" + " where bar.fhtime >= :v_datebegin\n" + " and bar.fhtime < :v_dateend\n" + " and nvl(gdd.materialcode, g.materialcode) in ( 'CT968EN4100B01','CT968EN2100B01')" + " order by bar.fhtime,bar.finishedloadbatchno, bar.fhbatchno,bar.barcode"; //OracleParameter [] oracleParameter = new OracleParameter[] //{ // new OracleParameter(":yyyymmdd", date.ToString("yyyyMMdd")), // new OracleParameter(":workcode", "5020"), // new OracleParameter(":v_datebegin", date), // new OracleParameter(":v_dateend", end), // new OracleParameter(":LOGID", 0) //}; //DataTable fhData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); while (date < end) { dateend = date.AddMonths(1); if (dateend > end) { dateend = end; } OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, date.ToString("yyyyMMdd"), ParameterDirection.Input), new OracleParameter(":workcode",OracleDbType.Varchar2, "5000", ParameterDirection.Input), new OracleParameter(":LOGID",OracleDbType.Int32, 0, ParameterDirection.Input), new OracleParameter(":v_datebegin",OracleDbType.Date, date, ParameterDirection.Input), new OracleParameter(":v_dateend",OracleDbType.Date, dateend, ParameterDirection.Input), }; DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); // 单次传输最大条数 int maxCount = 10000; List sapParameterList = new List(); if (fpData != null && fpData.Rows.Count > 0) { int index = 0; List tableInList = new List(); foreach (DataRow item in fpData.Rows) { if (index >= maxCount) { Zppfm010 sapItem = new Zppfm010(); sapItem.ZSUM = tableInList.Count; sapItem.TABLE_IN = tableInList.ToArray(); sapParameterList.Add(sapItem); index = 0; tableInList.Clear(); } ZSPP110 info110 = new ZSPP110(); // 时间戳 info110.ZSCNU = item["yyyymmdd"].ToString(); // 工厂 info110.WERKS = item["workcode"].ToString(); // 生产条码 info110.ZSCTM = item["barcode"].ToString(); // 包装条码 info110.ZBZTM = item["outcode"].ToString(); // 产品编码 info110.ZCPBM = item["goodscode"].ToString(); // 物料编号 info110.MATNR = item["sapcode"].ToString(); // 包装整板标识 info110.ZBZBS = item["sapflbatchno"].ToString(); // 重新绑定标识 info110.ZCXBD = item["sapfhundoflag"].ToString(); // 销售凭证 //info110.KDAUF = item["ordercode"].ToString(); // 销售凭证项目 info110.KDPOS = "0";//item["orderitem"].ToString(); info110.UZEIT = "00:00:00";//date.ToString("HH:mm:ss"); //info110.ZCODEN = ""; //info110.ZCODEYZM = ""; tableInList.Add(info110); index++; } Zppfm010 sapParameter = new Zppfm010(); sapParameter.ZSUM = tableInList.Count; sapParameter.TABLE_IN = tableInList.ToArray(); sapParameterList.Add(sapParameter); index = 0; tableInList.Clear(); } else { Zppfm010 sapParameter = new Zppfm010(); sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM]; sapParameterList.Add(sapParameter); } int indexP = 0; int ccc = sapParameterList.Count; foreach (Zppfm010 sapParameter in sapParameterList) //for (int i = 80; i < ccc; i++) { //Zppfm010 sapParameter = sapParameterList[i]; ZPPFM010Response result = HGSAPDK_ZPPFM010_800(sapParameter, date.ToString("yyyyMMdd") + " " + (++indexP) + "/" + ccc); //Zppfm010Response result = HGSAPDK_ZPPFM010(sapParameter, "2018 " + (i) + "/" + ccc); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; if (result.ZTYPE != "S") { //foreach (ZSPP110 item in result.TABLE_OUT) //{ // if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG)) // { // OutputLog.TraceLog(LogPriority.Information, // "HGSAPDK_ZPPFM010", JsonHelper.ToJson(item), // "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG, // LocalPath.LogExePath + "SAP_HEGII\\Info_"); // } //} return sre; } } date = dateend; } oracleConn.Commit(); //sre.Message = result.Zmsg; //sre.Result = result.Ztype; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /// /// 产量接口-测试 /// /// /// private static ZPPFM008Response HGSAPDK_ZPPFM008_800(Zppfm008 sapParameter, string yyyymmdd, string datacode) { ZPPFM008Response sapResult = null; try { using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND_800")) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; credential.UserName = "hgsapdk"; credential.Password = "Prddk209"; // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP100[0]; // 接口 sapResult = sapClient.ZPPFM008(sapParameter); // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008_800", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM, "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } } catch (Exception ex) { sapResult = new ZPPFM008Response(); sapResult.ZTYPE = "E"; if (ex is System.ServiceModel.FaultException) { sapResult.ZMSG = ex.Message; } else { sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); } OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM008_800", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } /// /// 成品明细(条码接口)-测试 /// /// private static ZPPFM010Response HGSAPDK_ZPPFM010_800(Zppfm010 sapParameter, string yyyymmdd) { ZPPFM010Response sapResult = null; try { using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND_800")) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; credential.UserName = "hgsapdk"; credential.Password = "Prddk209"; // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP110[0]; // 接口 sapResult = sapClient.ZPPFM010(sapParameter); // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM010_800", "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM, "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); if (sapResult.ZTYPE == "S") { // 结果 //OutputLog.TraceLog(LogPriority.Information, // "HGSAPDK_ZPPFM010_800", // "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM, // " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, // LocalPath.LogExePath + "SAP_HEGII\\Info_"); } else { // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM010_800", "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, JsonHelper.ToJson(sapResult), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } } catch (Exception ex) { sapResult = new ZPPFM010Response(); sapResult.ZTYPE = "E"; if (ex is System.ServiceModel.FaultException) { sapResult.ZMSG = ex.Message; } else { sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); } OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM010_800", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } /// /// 产量接口 /// /// /// public static ZPPFM008Response HGSAPDK_HGSAPDK_ZPPFM008(Zppfm008 sapParameter, string yyyymmdd, string datacode) { ZPPFM008Response sapResult = null; try { using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND")) { // 登录 UserNamePasswordClientCredential credential = sapClient.ClientCredentials.UserName; credential.UserName = "hgsapdk"; credential.Password = "Prddk209"; // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); //credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName"); //credential.Password = ini.ReadIniData("SAP_HEGII", "Password"); // 参数 sapParameter.ZSUMSpecified = true; sapParameter.TABLE_OUT = new ZSPP100[0]; // 接口 sapResult = sapClient.ZPPFM008(sapParameter); if (sapResult.ZTYPE == "S") { // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM, " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, LocalPath.LogExePath + "SAP_HEGII\\Info_"); } else { foreach (ZSPP100 item in sapResult.TABLE_OUT) { if (!string.IsNullOrWhiteSpace(item.ZMSG)) { sapResult.ZMSG += $"[{item.ZMSG}]"; break; } } // 结果 OutputLog.TraceLog(LogPriority.Information, "HGSAPDK_ZPPFM008", "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG, JsonHelper.ToJson(sapResult), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } } catch (Exception ex) { sapResult = new ZPPFM008Response(); sapResult.ZTYPE = "E"; if (ex is System.ServiceModel.FaultException) { sapResult.ZMSG = ex.Message; } else { sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid(); } OutputLog.TraceLog(LogPriority.Error, "HGSAPDK_ZPPFM008", sapResult.ZMSG, ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } return sapResult; } /// /// 同步SAP接口 /// /// /// /// /// /// public static ServiceResultEntity HGSAPDK_SyncSap(DateTime date, string datacode, int userid, int logid) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; string sqlString = string.Empty; sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); string yyyymmdd = "20211130";//date.ToString("yyyyMMdd"); int r = 0; //// 查询出当前日志外,最新的一次日志 //sqlString = "SELECT t.executedateend\n" + // " FROM (SELECT dl.executedateend\n" + // " FROM tsap_hegii_datalog dl\n" + // " WHERE dl.logtype = '3'\n" + // " AND dl.datastuts = 'S'\n" + // " AND dl.datacode = :datacode\n" + // " AND dl.logid <> :logid\n" + // " ORDER BY dl.executedateend DESC) t\n" + // " WHERE rownum = 1"; //paras = new OracleParameter[] //{ // new OracleParameter(":datacode", datacode), // new OracleParameter(":logid", logid) //}; //object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras); //if (executedateend == null || Convert.ToDateTime(executedateend) >= date) //{ // sre.Result = "W"; // sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步"; // return sre; //} sqlString = "SELECT wd.yyyymmdd\n" + " ,wd.workcode\n" + " ,wd.datacode\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,wd.ordercode\n" + " ,wd.orderitem\n" + " ,wd.outputnum\n" + " ,wd.scrapnum\n" + " ,wd.cleanupnum\n" + " ,wd.recoverynum\n" + " ,wd.repairnum\n" + " ,wd.testmouldflag\n" + " ,wd.zscs\n" + " FROM tsap_hegii_workdata wd\n" + " WHERE wd.logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); Zppfm008 sapParameter = new Zppfm008(); if (workData != null && workData.Rows.Count > 0) { sapParameter.ZSUM = workData.Rows.Count; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; int index = 0; foreach (DataRow item in workData.Rows) { ZSPP100 info100 = new ZSPP100(); // 工厂 info100.WERKS = workcode; // 型号 info100.GROES = item["GoodsCode"].ToString(); // 物料编号 info100.MATNR = item["SAPCode"].ToString(); // 生产工号 info100.ZGHNU = item["UserCode"].ToString(); // 数据节点 info100.ZJDNU = item["DataCode"].ToString(); // 时间戳 info100.ZSCNU = yyyymmdd; // 销售凭证 info100.VBELN = item["ORDERCODE"].ToString().Trim(); // 销售凭证项目 info100.POSNR = item["ORDERITEM"].ToString(); // 产量 info100.ZCLNG = item["OutputNum"].ToString(); // 损坯 info100.ZSPNG = item["SCRAPNUM"].ToString(); // 清除 info100.ZQCNG = item["CLEANUPNUM"].ToString(); // 回收 info100.ZHSNG = item["RECOVERYNUM"].ToString(); // 干补 info100.ZGBNG = item["REPAIRNUM"].ToString(); // 注浆类型 G高压 L普通 info100.ZSCS = item["ZSCS"].ToString(); info100.ZKSSJ = Convert.ToDateTime("2021-12-01 08:00:00").ToString("HHmmss"); info100.ZJSRQ = Convert.ToDecimal("20211201080000"); sapParameter.TABLE_IN[index++] = info100; } } else { sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; } // 调用SAP接口(调试用) ZPPFM008Response result = HGSAPDK_HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode); if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (ZSPP100 item in result.TABLE_OUT) { string posnr = item.POSNR.TrimStart('0'); paras = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } } result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})"; sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); if (result.ZTYPE == "S") { sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } oracleConn.Commit(); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } #endregion /// /// 同步SAP数据(自动) /// /// public static void AutoWorkDataToSAP(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 AutoWorkDataToSAP(DateTime date, 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("10", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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("20", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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("30", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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("40", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "40 釉坯 " + ndate.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("50", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "50 烧成 " + ndate.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_"); // } //} } public static void AutoWorkDataToSAP_Test(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_test("10", 0, ndate); // if (sre.Status != Constant.ServiceResultStatus.Success || // "S" != sre.Result + "") // { // OutputLog.TraceLog(LogPriority.Warning, // "AutoWorkDataToSAP", // "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), // JsonHelper.ToJson(sre), // LocalPath.LogExePath + "SAP_HEGII\\Warn_"); // } // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "AutoWorkDataToSAP", // "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_test("20", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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_test("30", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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_test("40", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "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_test("50", 0, ndate); if (sre.Status != Constant.ServiceResultStatus.Success || "S" != sre.Result + "") { OutputLog.TraceLog(LogPriority.Warning, "AutoWorkDataToSAP", "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson(sre), LocalPath.LogExePath + "SAP_HEGII\\Warn_"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, "AutoWorkDataToSAP", "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), ex.ToString(), LocalPath.LogExePath + "SAP_HEGII\\Error_"); } } // 6001 成品明细 //if (funCode == ",ALL," || funCode.Contains(",6001,")) //{ // try // { // sre = SetFP6001(ndate, 0); // if (sre.Status != Constant.ServiceResultStatus.Success || // "S" != sre.Result + "") // { // OutputLog.TraceLog(LogPriority.Warning, // "AutoWorkDataToSAP", // "6001 成品明细 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), // JsonHelper.ToJson(sre), // LocalPath.LogExePath + "SAP_HEGII\\Warn_"); // } // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "AutoWorkDataToSAP", // "6001 成品明细 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } //} // 6001 成品明细(小时)-20分钟 //if (funCode == ",6002,") //{ // try // { // sre = SetFP6002(ndate, 0); // if (sre.Status != Constant.ServiceResultStatus.Success || // "S" != sre.Result + "") // { // OutputLog.TraceLog(LogPriority.Warning, // "AutoWorkDataToSAP", // "6002 成品明细(小时) " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), // JsonHelper.ToJson(sre), // LocalPath.LogExePath + "SAP_HEGII\\Warn_"); // } // } // catch (Exception ex) // { // OutputLog.TraceLog(LogPriority.Error, // "AutoWorkDataToSAP", // "6002 成品明细(小时) " + ndate.ToString("yyyy-MM-dd HH:mm:ss"), // ex.ToString(), // LocalPath.LogExePath + "SAP_HEGII\\Error_"); // } //} } public static ServiceResultEntity SetWorkData10_50_test(string datacode, int userid, DateTime ndate) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = null; try { #region 事务1,执行存储过程 OracleParameter[] paras = null; int logid = 0; string message = string.Empty; // 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_10_1", paras); // int.TryParse(paras[1].Value + "", out logid); // message = paras[2].Value + ""; // oracleConn.Commit(); //} // 20 湿坯 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_20_1_test", 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_30_1_test", 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接口 sre = SyncSap_test(ndate, datacode, userid, logid); return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } public static ServiceResultEntity SyncSap_test(DateTime date, string datacode, int userid, int logid) { ServiceResultEntity sre = new ServiceResultEntity(); IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); try { OracleParameter[] paras = null; string sqlString = string.Empty; sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); string yyyymmdd = date.ToString("yyyyMMdd"); int r = 0; // 查询出当前日志外,最新的一次日志 sqlString = "SELECT t.executedateend\n" + " FROM (SELECT dl.executedateend\n" + " FROM tsap_hegii_datalog dl\n" + " WHERE dl.logtype = '3'\n" + " AND dl.datastuts = 'S'\n" + " AND dl.datacode = :datacode\n" + " AND dl.logid <> :logid\n" + " ORDER BY dl.executedateend DESC) t\n" + " WHERE rownum = 1"; paras = new OracleParameter[] { new OracleParameter(":datacode", datacode), new OracleParameter(":logid", logid) }; object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras); //if (executedateend == null || Convert.ToDateTime(executedateend) >= date) //{ // sre.Result = "W"; // sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步"; // return sre; //} sqlString = "SELECT wd.yyyymmdd\n" + " ,wd.workcode\n" + " ,wd.datacode\n" + " ,wd.goodscode\n" + " ,wd.sapcode\n" + " ,wd.usercode\n" + " ,wd.ordercode\n" + " ,wd.orderitem\n" + " ,wd.outputnum\n" + " ,wd.scrapnum\n" + " ,wd.cleanupnum\n" + " ,wd.recoverynum\n" + " ,wd.repairnum\n" + " ,wd.testmouldflag\n" + " ,wd.zscs\n" + " FROM tsap_hegii_workdata wd\n" + " WHERE wd.logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras); Zppfm008 sapParameter = new Zppfm008(); if (workData != null && workData.Rows.Count > 0) { sapParameter.ZSUM = workData.Rows.Count; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; int index = 0; foreach (DataRow item in workData.Rows) { ZSPP100 info100 = new ZSPP100(); // 工厂 info100.WERKS = workcode; // 型号 info100.GROES = item["GoodsCode"].ToString(); // 物料编号 info100.MATNR = item["SAPCode"].ToString(); // 生产工号 info100.ZGHNU = item["UserCode"].ToString(); // 数据节点 info100.ZJDNU = item["DataCode"].ToString(); // 时间戳 info100.ZSCNU = yyyymmdd; // 销售凭证 info100.VBELN = item["ORDERCODE"].ToString().Trim(); // 销售凭证项目 info100.POSNR = item["ORDERITEM"].ToString(); // 产量 info100.ZCLNG = item["OutputNum"].ToString(); // 损坯 info100.ZSPNG = item["SCRAPNUM"].ToString(); // 清除 info100.ZQCNG = item["CLEANUPNUM"].ToString(); // 回收 info100.ZHSNG = item["RECOVERYNUM"].ToString(); // 干补 info100.ZGBNG = item["REPAIRNUM"].ToString(); // 注浆类型 G高压 L普通 info100.ZSCS = item["ZSCS"].ToString(); //info100.ZKSSJ = Convert.ToDateTime(executedateend).ToString("HHmmss"); info100.ZKSSJ = Convert.ToDateTime("2022-06-24 12:00:00").ToString("HHmmss"); info100.ZJSRQ = Convert.ToDecimal(date.ToString("yyyyMMddHHmmss")); sapParameter.TABLE_IN[index++] = info100; } } else { sapParameter.ZSUM = 0; sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM]; } // 调用SAP接口 ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode); if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (ZSPP100 item in result.TABLE_OUT) { string posnr = item.POSNR.TrimStart('0'); paras = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } } result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})"; sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); if (result.ZTYPE == "S") { sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid"; paras = new OracleParameter[] { new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, paras); } oracleConn.Commit(); sre.Message = result.ZMSG; sre.Result = result.ZTYPE; return sre; } catch (Exception ex) { throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Disconnect(); } } } /* public static ServiceResultEntity AutoWorkData(DateTime date) { IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string yyyymmdd = date.ToString("yyyyMMdd"); string sqlString = "select t.logid, t.datacode\n" + " from tsap_hegii_datalog t\n" + " where t.logtype = '1'\n" + " and t.datastuts = 'S'\n" + " and t.yyyymmdd = :yyyymmdd\n" + " and t.createuserid is null for update"; OracleParameter[] oracleParameter = new OracleParameter[] { new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), }; DataTable datalog = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); if (datalog == null || datalog.Rows.Count == 0) { sre.Result = 0; return sre; } sqlString = "select workcode from tp_mst_account where rownum = 1"; string workcode = oracleConn.GetSqlResultToStr(sqlString); Zppfm008 sapParameter = new Zppfm008(); List info = new List(); foreach (DataRow item in datalog.Rows) { string datacode = item["datacode"].ToString(); logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual"); string msg = null; //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHm") + "~" + // dateend.ToString("yyyyMMdd-HHmm"); sqlString = "insert into tsap_hegii_datalog\n" + " (LogID\n" + " ,LogType\n" + " ,BeginTime\n" + " ,YYYYMMDD\n" + " ,WorkCode\n" + " ,DataCode\n" + " ,DataStuts\n" + " ,DataMSG\n" + " ,CreateUserID\n" + " ,DataLogID)\n" + "values\n" + " (:LogID\n" + " ,'2'\n" + " ,sysdate\n" + " ,:YYYYMMDD\n" + " ,:WorkCode\n" + " ,:DataCode\n" + " ,:DataStuts\n" + " ,:DataMSG\n" + " ,:CreateUserID\n" + " ,:DataLogID)"; int r = 0; if (string.IsNullOrEmpty(datalogid)) { oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + " DKMES-ERROR:NO DATA", ParameterDirection.Input), new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input), new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "没有同步数据"; sre.Result = "E"; return sre; } oracleParameter = new OracleParameter[] { new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input), new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input), new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input), new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input), new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); sqlString = "select fp.yyyymmdd\n" + " ,fp.workcode\n" + " ,fp.DataCode\n" + " ,fp.GoodsCode\n" + " ,fp.SAPCode\n" + " ,fp.UserCode\n" + " ,fp.ORDERCODE\n" + " ,fp.ORDERITEM\n" + " ,fp.OutputNum\n" + " ,fp.ScrapNum\n" + " ,fp.CleanupNum\n" + " ,fp.RecoveryNum\n" + " ,fp.RepairNum\n" + " from tsap_hegii_workdata wd where wd.logid = :datalogid"; oracleParameter = new OracleParameter[] { new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), }; DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter); if (workData != null && workData.Rows.Count > 0) { sapParameter.Zsum = workData.Rows.Count; sapParameter.TableIn = new Zspp100[sapParameter.Zsum]; int index = 0; foreach (DataRow item in workData.Rows) { Zspp100 info100 = new Zspp100(); // 工厂 info100.Werks = workcode; // 型号 info100.Groes = item["GoodsCode"].ToString(); // 物料编号 info100.Matnr = item["SAPCode"].ToString(); // 生产工号 info100.Zghnu = item["UserCode"].ToString(); // 数据节点 info100.Zjdnu = item["DataCode"].ToString(); // 时间戳 info100.Zscnu = yyyymmdd; // 销售凭证 info100.Vbeln = item["ORDERCODE"].ToString(); // 销售凭证项目 info100.Posnr = item["ORDERITEM"].ToString(); // 产量 info100.Zclng = item["OutputNum"].ToString(); // 损坯 info100.Zspng = item["SCRAPNUM"].ToString(); // 清除 info100.Zqcng = item["CLEANUPNUM"].ToString(); // 回收 info100.Zhsng = item["RECOVERYNUM"].ToString(); // 干补 info100.Zgbng = item["REPAIRNUM"].ToString(); sapParameter.TableIn[index++] = info100; } } else { sapParameter.Zsum = 0; sapParameter.TableIn = new Zspp100[sapParameter.Zsum]; } Zppfm008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode); //if (result.Ztype == "E") //{ // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid"; // oracleParameter = new OracleParameter[] // { // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input), // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), // }; // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); //} //else { sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG = DataMSG||:msg where logid = :logid"; oracleParameter = new OracleParameter[] { new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.Ztype, ParameterDirection.Input), new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input), new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); if (result.Ztype == "S") { sqlString = "update tsap_hegii_datalog t set t.createtime = :userid where logid = :datalogid"; oracleParameter = new OracleParameter[] { new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input), new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } if (result.TableOut != null && result.TableOut.Length > 0) { sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid + " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" + "and OrderCode=:OrderCode and OrderItem=:OrderItem"; foreach (Zspp100 item in result.TableOut) { oracleParameter = new OracleParameter[] { new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.Ztype, ParameterDirection.Input), new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.Zmsg, ParameterDirection.Input), new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.Groes, ParameterDirection.Input), new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.Matnr, ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2, item.Zghnu, ParameterDirection.Input), new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Vbeln)? " " : item.Vbeln), ParameterDirection.Input), new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Posnr)? " " : item.Posnr), ParameterDirection.Input), }; r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter); } } } oracleConn.Commit(); sre.Message = result.Zmsg; sre.Result = result.Ztype; return sre; } catch (Exception ex) { throw ex; } } */ } }