using DataexchangeServer.Helper; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; using Kingdee.BOS.WebApi.Client; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using System.Windows.Documents; using System.Web.UI.MobileControls; namespace DataexchangeServer { //数据推送类 public class AE_MES_ERP { private OracleDb _sqlHelper; string conStr; public AE_MES_ERP() { conStr = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = jfprd; Password=jf_prd"; ; _sqlHelper = new OracleDb(conStr); } #region 0.同步金蝶系统数据bool ErpToMesData(string taskid, DataSet inputds, string operatype, DataRow drSource, ref string msg) /// /// 同步金蝶系统数据 /// /// 任务ID /// JSON数据表集合 /// INSERT,UPDATE,DELETE /// 原始数据行 /// 返回的执行错误信息 /// public bool ErpToMesData(string taskid, DataSet inputds, string operatype, DataRow drSource, ref string msg) { bool result = true; switch (taskid) { //1.ERPBMA部门信息表(同步推送) case "TB_ERPTOMES_BM": result = TB_ERPTOMES_BM(inputds, operatype, ref msg, drSource); break; //2.ERPRYA人员信息表(同步推送) case "TB_ERPTOMES_RY": result = TB_ERPTOMES_RY(inputds, operatype, ref msg, drSource); break; //3.ERPWFL物料分类表(同步推送) case "TB_ERPTOMES_WF": result = TB_ERPTOMES_WF(inputds, operatype, ref msg); break; //4.ERPWLA物料表(同步推送) case "TB_ERPTOMES_WL": result = TB_ERPTOMES_WL(inputds, operatype, ref msg, drSource); break; //4.ERPWLA物料表(同步推送) case "TB_ERPTOMES_JSKC": result = TB_ERPTOMES_JSKC(inputds, operatype, ref msg, drSource); break; //5.ERPDWA计量单位(同步推送) case "TB_ERPTOMES_DW": result = TB_ERPTOMES_DW(inputds, operatype, ref msg, drSource); break; //6.ERPKHA客户信息(同步推送) case "TB_ERPTOMES_KH": result = TB_ERPTOMES_KH(inputds, operatype, ref msg, drSource); break; //7.ERPGYS供应商信息(同步推送) case "TB_ERPTOMES_GYS": result = TB_ERPTOMES_GYS(inputds, operatype, ref msg, drSource); break; //8.ERPCKA仓库信息档(同步推送) case "TB_ERPTOMES_CK": result = TB_ERPTOMES_CK(inputds, operatype, ref msg, drSource); break; //即时库存 case "TB_ERPTOMES_JSKC1": result = TB_ERPTOMES_JSKC1(inputds, operatype, ref msg); break; //9.ERPBOMA(同步推送) //10.ERPCGA采购订单|委外订单(同步推送) case "TB_ERPTOMES_CG": result = TB_ERPTOMES_CG(inputds, operatype, ref msg); break; case "TB_ERPTOMES_WW": result = TB_ERPTOMES_CG(inputds, operatype, ref msg); break; //销售订单 case "TB_ERPTOMES_XSD": result = TB_ERPTOMES_XSD(inputds, operatype, ref msg); break; //销售退货 case "TB_ERPTOMES_XSRK": result = TB_ERPTOMES_XSRK(inputds, operatype, ref msg); break; //销售发货 case "TB_ERPTOMES_XSCK": result = TB_ERPTOMES_XSCK(inputds, operatype, ref msg); break; //ERP视图 case "TB_ERPTOMES_BAR": result = TB_ERPTOMES_BAR(inputds, operatype, ref msg); break; //11.ERPTLA生产投料单(同步推送) case "TB_ERPTOMES_TL": result = TB_ERPTOMES_TL(inputds, operatype, ref msg); break; //12.ERPTHCONFIRM供应商退货确认(同步推送) case "TB_ERPTOMES_TH_CONFIRM": result = TB_ERPTOMES_TH_CONFIRM(inputds, operatype, ref msg); break; //13.TB_ERPTOMES_RWHB任务汇报单(同步推送) case "TB_ERPTOMES_RWHB": result = TB_ERPTOMES_RWHB(inputds, operatype, ref msg); break; //14.MesToErp(同步推送) case "TB_MESTOERP_WGRK"://MESWGRK金蝶条码入库(外购入库)(同步推送) result = MesToErp(drSource, ref msg); break; case "STK_TransferDirect"://MES 调拨单 //result = MesToErp(drSource, ref msg); result = MesToErpFormal(drSource, ref msg); break; //case "WW_InStock"://MESWWRK金蝶条码入库(委外入库)(同步推送) case "TB_MESTOERP_QTRK"://MESQTRK金蝶条码入库(其他入库)(同步推送) case "TB_MESTOERP_CPRK"://MESCPRK金蝶条码入库(产品入库)(同步推送) case "TB_MESTOERP_DD"://MESDD金蝶条码入库(调拨)(同步推送) case "TB_MESTOERP_PYPK"://MESPYPK金蝶条码入库(盘盈盘亏)(同步推送) case "TB_MESTOERP_LL"://MESLL金蝶条码入库(领料单)(同步推送) case "TB_MESTOERP_WTRK"://MESWTRK金蝶条码入库(受托入库)(同步推送) case "TB_MESTOERP_QTCK"://其他出库 case "TB_MESTOERP_XCK"://销售出库(蓝-订单、红) //case "SUB_PickMtrl"://委外出库(蓝、红) case "TB_MESTOERP_WGTL"://外购退料 //case "SUB_RETURNMTRL"://委外退料 case "TB_MESTOERP_JYTL"://检验退料 // case "WW_ReturnMtrl"://委外退库 case "TB_MESTOERP_SLSH"://推送审核送货单 //case "PRD_FeedMtrl"://推送MES生产补料(超领料)单 result = MesToErp(drSource, ref msg); break; case "TB_MESTOERP_GDRK"://ERP工单库存查询 result = MesToErp(drSource, ref msg); break; //委外补料 case "SUB_FEEDMTRL": result = MesToErpFormal(drSource, ref msg); break; case "PUR_MRB"://采购退货推送 result = MesToErpFormal(drSource, ref msg); break; //case "PUR_MRB"://采购退货推送 // result = MesToErp(drSource, ref msg); // break; //销售发货 case "SAL_OUTSTOCK": result = MesToErpFormal(drSource, ref msg); break; //销售退货 case "SAL_RETURNSTOCK": result = MesToErpFormal(drSource, ref msg); break; case "SUB_PickMtrl": //委外领料 result = MesToErpFormal(drSource, ref msg); break; case "SUB_RETURNMTRL"://委外退料 result = MesToErpFormal(drSource, ref msg); break; case "WW_ReturnMtrl": //委外退库 result = MesToErpFormal(drSource, ref msg); break; case "WW_InStock": //委外入库 result = MesToErpFormal(drSource, ref msg); break; case "PRD_FeedMtrl"://推送MES生产补料单 result = MesToErpFormal(drSource, ref msg); break; //MES标识 case "STK_MESBS": result = MESTOERPBS(drSource, ref msg); break; case "WW_TransferDirect"://推送委外调拨单 result = MesToErp(drSource, ref msg); break; case "TB_MESTOERP_ICMO"://推送审核送货单 result = MesToErp(drSource, ref msg); break; case "STK_InStock"://推送审核送货单 result = MesToErpFormal(drSource, ref msg); break; //case "STK_InStock"://推送审核送货单 // result = MesToErp(drSource, ref msg); // break; case "PRD_PickMtrl"://推送MES领料单 //result = MesToErp(drSource, ref msg); result = MesToErpFormal(drSource, ref msg); break; case "PRD_INSTOCK"://推送MES生产入库单 //result = MesToErp(drSource, ref msg); result = MesToErpFormal(drSource, ref msg); break; case "PRD_ReturnMtrl"://推送MES生产退料单 result = MesToErpFormal(drSource, ref msg); //result = MesToErp(drSource, ref msg); break; case "STK_MISCELLANEOUS"://推送MES其他入库单 // result = MesToErp(drSource, ref msg); result = MesToErpFormal(drSource, ref msg); break; case "STK_MisDelivery"://推送MES其他出库单 result = MesToErpFormal(drSource, ref msg); //result = MesToErp(drSource, ref msg); break; //15.到货单(同步推送) case "TB_ERPTOMES_SLTZD": result = TB_ERPTOMES_SLTZD(inputds, operatype, ref msg); break; //结案标识 case "TB_ERPTOMES_JA": result = TB_ERPTOMES_JA(inputds, operatype, ref msg, drSource); break; } return result; } #region 16.TB_ERPTOMES_RWHB任务汇报单(同步推送) bool TB_ERPTOMES_RWHB(DataSet inputds, string operatype, ref string msg) private bool TB_ERPTOMES_RWHB(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string dtName = ""; if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } try { foreach (DataTable dt in ds.Tables) { dtName = dt.TableName; IDList.Clear(); //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据 if (operatype == "INSERT" || operatype == "UPDATE") { #region INSERT if (dt.TableName == "ERPSLTZA") { #region 任务汇报单主表的处理 // dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { ////插入前先删除重复键 string sqlT = ""; string sqlG = ""; string SQLF = ""; string SQLD = ""; sqlG = string.Format(@"SELECT count(*) cou FROM PURHBD WHERE HBD001='{0}' ", dr["FBillNo"]); sqlT = string.Format(@"SELECT count(*) cou FROM PURHBE WHERE HBE001='{0}'", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int g = Convert.ToInt32(_sqlHelper.GetSingle(sqlG)); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (g == 0) { if (c != 0) { try { //删除主表 SQLF = string.Format(@"DELETE PURHBD WHERE HBD001='{0}' ", dr["FBillNo"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); //删除从表 SQLD = string.Format(@"DELETE PURHBE WHERE HBE001='{0}'", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } } else { return false; } // IDList.Add(dr["ERPID"].ToString()); //dr["AUDITING"] = 1; //string f = DateTime.Now.ToString("yyyy-MM-dd"); //string t = DateTime.Now.ToShortTimeString().ToString(); //string TIME = (f + " " + t).ToString(); sql = string.Format(@" INSERT INTO PURHBD(ID,HBD001,HBD002,HBD003,HBD004,HBD005,HBD006,HBD007,ERPID,STATUS) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','1') ", dr["FBillNo"], dr["FworkshopNumber"], dr["Fworkshop"], dr["FSelTranType"], dr["FBillerID"], dr["FCheckerID"], dr["FCheckDate"], dr["ERPID"]); SQLStringList.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } if (dt.TableName == "ERPRWHB") { #region 汇报单明细的处理 //dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { // IDList.Add(dr["ERPID"].ToString()); // Double a = Convert.ToDouble(dr["CGB008"].ToString()) - Convert.ToDouble(dr["CGB013"].ToString()); //dr["AUDITING"] = 1; sql = string.Format(@" INSERT INTO PURHBE(ID,HBE001,HBE002,HBE003,HBE004,HBE005,HBE006,HBE007,HBE008,HBE009,HBE010,HBE011,HBE012,HBE013,HBE014,HBE015) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}') ", dr["ERPID"], dr["FEntryID"], dr["FItemID"] , dr["FName"], dr["FModel"], dr["FworkshopID"], dr["Fworkshop"], dr["FUnitID"], dr["FAuxQtyfinish"], dr["FAuxQtyloss"], dr["FAuxQtypass"], dr["FworkstartDate"], dr["FworkendDate"], dr["FNote"], dr["FsourceBillNo"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE if (dt.TableName == "ERPDHA") { foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from PURDHA where ERPID in ('{0}'); delete from PURDHB where ERPID in ('{0}'); ", string.Join("','", IDList)); } _sqlHelper.ExecuteNonQuery(sql); #endregion } } return true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; return false; } } #endregion #endregion #region 17.ERPBMA部门信息表(同步推送) bool TB_ERPTOMES_BM(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPBMA部门信息表(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_BM(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 //operatype = DataIsInDB("HRMMAA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT" || operatype == "UPDATE") { #region INSERT dt.Columns.Add("MAA001", typeof(string)); dt.Columns.Add("AUDITING", typeof(string)); // 构建删除SQL语句 string deleteSql = $"DELETE FROM SYS_DEPARTMENT WHERE ID IN ('{string.Join("','", IDList)}')"; _sqlHelper.ExecuteNonQuery(deleteSql); // 执行删除操作 foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO SYS_DEPARTMENT(ID,DEPARTMENTCODE,DEPARTMENTNAME,COMPANY,FACTORY,PART) VALUES ('{0}','{1}','{2}','1000','1000','{3}') ", dr["ERPID"], dr["BMA001"], dr["BMA002"], ddr["TARGET_TABLE"]); SQLStringList.Add(sql); } //插入前先删除重复键 // DeleteDataBeforeInsert("HRMMAA", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("HRMMAA", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "HRMMAA重复键删除失败!"; // return false; //} return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } /* else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update HRMMAA set MAA002='{1}', MAA003='{2}', MAA004='{3}', MAA005='{4}', MAA006='{5}', MAA007='{6}' where ERPID='{0}'; ", dr["ERPID"], dr["BMA001"], dr["BMA002"], dr["BMA003"], dr["BMA004"], dr["BMA005"], dr["BMA006"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion }*/ else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } // 构建删除SQL语句 string deleteSql = $"DELETE FROM SYS_DEPARTMENT WHERE ID IN ('{string.Join("','", IDList)}')"; return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 18.ERPRYA人员信息表(同步推送) bool TB_ERPTOMES_RY(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPRYA人员信息表(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_RY(DataSet ds, string operatype, ref string ErrorMsg, DataRow drr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("HRMMAC", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO MES_STAFF(ID,STAFF_NO,STAFF_NAME,DEPARTMENT_NO,MEMO,PART) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}') ", dr["ERPID"], dr["RYA001"], dr["RYA002"], dr["RYA003"], dr["RYA010"], drr["TARGET_TABLE"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); //插入前先删除重复键 // DeleteDataBeforeInsert("HRMMAC", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("HRMMAC", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "HRMMAC重复键删除失败!"; // return false; //} #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update HRMMAC set MAC002='{1}', MAC003='{2}', MAC001='{3}', MAC019='{4}', MAC004='{5}', MAC005='{6}', MAC007='{7}', MAC010='{8}', MAC011='{9}', MAC013='{10}' where ERPID='{0}'; ", dr["ERPID"] , dr["RYA001"], dr["RYA002"], dr["RYA003"], dr["RYA004"], dr["RYA005"] , dr["RYA006"], dr["RYA007"], dr["RYA008"], dr["RYA009"], dr["RYA010"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from HRMMAC where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 19.ERPWFL物料分类表(同步推送) bool TB_ERPTOMES_WF(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPWFL物料分类表(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_WF(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("BASBAB", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO MES_ITEM_TYPE(ID, TCODE, TNAME,COMPANY,FACTORY) VALUES ('{0}','{1}','{2}','1000','1000') ", dr["ERPID"], dr["WFL001"], dr["WFL002"]); SQLStringList.Add(sql); } //插入前先删除重复键 //DeleteDataBeforeInsert("BASBAB", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("BASBAB", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "BASBAB重复键删除失败!"; // return false; //} return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update BASBAB set BAB001='{1}', BAB003='{2}', BAB002='{3}', BAB004='{4}' where ERPID='{0}'; ", dr["ERPID"] , dr["WFL001"], dr["WFL002"], dr["WFL003"], dr["WFL004"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from BASBAB where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 20.ERPWLA物料表(同步推送) bool TB_ERPTOMES_WL(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPWLA物料表(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_WL(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; string sqlL = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("INVMBA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; int issc = 1; sqlT = string.Format(@"SELECT count(*) cou FROM MES_ITEMS WHERE ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { issc = 0; try { SQLF = string.Format(@"DELETE MES_ITEMS WHERE ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["ERPID"].ToString()); /* sql = string.Format(@" INSERT INTO MES_ITEMS(BE_CHANGED,ID,E_ITEM_ID,ITEM_NO,ITEM_NAME,ITEM_MODEL,ITEM_TYPE,LOWLIMIT,ITEM_UNIT,ERP_ITEM_NO,COMPANY,FACTORY,EXT_DATE,CUST_NO,DEPOT_CODE,PRD_PACK,HIGHLIMIT,PRD_CHECK,WLA024,PART,MOLD_NO) VALUES (1,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','1000','1000','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}') ", dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA014"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"],ddr["TARGET_TABLE"],dr["MOLD_NO"]); SQLStringList.Add(sql);*/ /*sql = string.Format(@"INSERT INTO MES_ITEMS(BE_CHANGED, ID, E_ITEM_ID, ITEM_NO, ITEM_NAME, ITEM_MODEL, ITEM_TYPE, LOWLIMIT, ITEM_UNIT, ERP_ITEM_NO, COMPANY, FACTORY, EXT_DATE, CUST_NO, DEPOT_CODE, PRD_PACK, HIGHLIMIT, PRD_CHECK, WLA024, PART, MOLD_NO, LASTUPDATE_DATE) VALUES (1, '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '1000', '1000', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', GETDATE())", dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA014"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"], ddr["TARGET_TABLE"], dr["MOLD_NO"]); SQLStringList.Add(sql);*/ sql = string.Format(@"INSERT INTO MES_ITEMS(BE_CHANGED, ID, E_ITEM_ID, ITEM_NO, ITEM_NAME, ITEM_MODEL, ITEM_TYPE, LOWLIMIT, ITEM_UNIT, ERP_ITEM_NO, COMPANY, FACTORY, EXT_DATE, CUST_NO, DEPOT_CODE, PRD_PACK, HIGHLIMIT, PRD_CHECK, WLA024, PART, MOLD_NO,LASTUPDATE_DATE,IS_SC) VALUES (1, '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '1000', '1000', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}',sysdate,'{18}')", dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA014"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"], ddr["TARGET_TABLE"], dr["MOLD_NO"],issc); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { /* sql = string.Format(@" update MES_ITEMS set BE_CHANGED=1, ID='{1}', E_ITEM_ID='{2}', ITEM_NO='{3}', ITEM_NAME='{4}', ITEM_MODEL='{5}', ITEM_TYPE='{6}', LOWLIMIT='{7}', ITEM_UNIT='{8}', ERP_ITEM_NO='{9}', COMPANY='1000', FACTORY='1000', EXT_DATE='{10}', DEPOT_CODE='{11}', PRD_PACK='{12}', HIGHLIMIT='{13}', PRD_CHECK='{14}', WLA024='{15}' , PART='{16}' where ID='{0}' ", dr["ERPID"], dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"],ddr["TARGET_TABLE"]); SQLStringListT.Add(sql);*/ sql = string.Format(@"UPDATE MES_ITEMS SET BE_CHANGED = 1, ID = '{1}', E_ITEM_ID = '{2}', ITEM_NO = '{3}', ITEM_NAME = '{4}', ITEM_MODEL = '{5}', ITEM_TYPE = '{6}', LOWLIMIT = '{7}', ITEM_UNIT = '{8}', ERP_ITEM_NO = '{9}', COMPANY = '1000', FACTORY = '1000', EXT_DATE = '{10}', DEPOT_CODE = '{11}', PRD_PACK = '{12}', HIGHLIMIT = '{13}', PRD_CHECK = '{14}', WLA024 = '{15}' , PART = '{16}', LASTUPDATE_DATE = GETDATE() WHERE ID = '{0}'", dr["ERPID"], dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"], ddr["TARGET_TABLE"]); SQLStringListT.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from MES_ITEMS where ID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } private bool TB_ERPTOMES_JSKC(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; string sqlL = ""; //用来拼ID集合 List IDList = new List(); List IDList2 = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["JSKC001"].ToString()); IDList2.Add(dr["JSKC002"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("INVMBA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT" || operatype == "UPDATE") { #region INSERT foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_JSKC WHERE ID='{0}' and depot_code='{1}' ", dr["JSKC001"], dr["JSKC002"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"delete FROM MES_JSKC WHERE ID='{0}' and depot_code='{1}' ", dr["JSKC001"], dr["JSKC001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["JSKC001"].ToString()); IDList2.Add(dr["JSKC002"].ToString()); /* sql = string.Format(@" INSERT INTO MES_ITEMS(BE_CHANGED,ID,E_ITEM_ID,ITEM_NO,ITEM_NAME,ITEM_MODEL,ITEM_TYPE,LOWLIMIT,ITEM_UNIT,ERP_ITEM_NO,COMPANY,FACTORY,EXT_DATE,CUST_NO,DEPOT_CODE,PRD_PACK,HIGHLIMIT,PRD_CHECK,WLA024,PART,MOLD_NO) VALUES (1,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','1000','1000','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}') ", dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA014"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"],ddr["TARGET_TABLE"],dr["MOLD_NO"]); SQLStringList.Add(sql);*/ /*sql = string.Format(@"INSERT INTO MES_ITEMS(BE_CHANGED, ID, E_ITEM_ID, ITEM_NO, ITEM_NAME, ITEM_MODEL, ITEM_TYPE, LOWLIMIT, ITEM_UNIT, ERP_ITEM_NO, COMPANY, FACTORY, EXT_DATE, CUST_NO, DEPOT_CODE, PRD_PACK, HIGHLIMIT, PRD_CHECK, WLA024, PART, MOLD_NO, LASTUPDATE_DATE) VALUES (1, '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '1000', '1000', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', GETDATE())", dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA014"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"], ddr["TARGET_TABLE"], dr["MOLD_NO"]); SQLStringList.Add(sql);*/ sql = string.Format(@"INSERT INTO MES_JSKC(id,depot_code,kc,item_name,depot_name,create_data) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', sysdate)", dr["JSKC001"], dr["JSKC002"], dr["JSKC003"], dr["JSKC004"], dr["JSKC005"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } /*else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql = string.Format(@"UPDATE MES_JSKC SET WHERE ID = '{0}'", dr["ERPID"], dr["ERPID"]); SQLStringListT.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion }*/ else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from MES_JSKC where JSKC001 in ('{0}') and JSKC002 in ('{1}'); ", string.Join("','", IDList), string.Join("','", IDList2)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } private bool TB_ERPTOMES_DW(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; string sqlL = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("INVMBA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_DW WHERE ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE MES_DW WHERE ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@"INSERT INTO MES_DW(ID, OLDNUM, OLDNAME, NEWNUM,OLDQTY, NEWQTY,CREATE_TIME) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}','{5}', sysdate)", dr["ERPID"], dr["DWA001"], dr["DWA002"], dr["DWA003"], dr["DWA004"], dr["DWA005"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { /* sql = string.Format(@" update MES_ITEMS set BE_CHANGED=1, ID='{1}', E_ITEM_ID='{2}', ITEM_NO='{3}', ITEM_NAME='{4}', ITEM_MODEL='{5}', ITEM_TYPE='{6}', LOWLIMIT='{7}', ITEM_UNIT='{8}', ERP_ITEM_NO='{9}', COMPANY='1000', FACTORY='1000', EXT_DATE='{10}', DEPOT_CODE='{11}', PRD_PACK='{12}', HIGHLIMIT='{13}', PRD_CHECK='{14}', WLA024='{15}' , PART='{16}' where ID='{0}' ", dr["ERPID"], dr["ERPID"], dr["ERPID"], dr["WLA001"], dr["WLA002"], dr["WLA003"], dr["WLA011"], dr["WLA006"], dr["WLA004"], dr["WLA001"], dr["WLA012"], dr["WLA010"], dr["WLA008"], dr["WLA007"], dr["WLA013"], dr["WLA005"],ddr["TARGET_TABLE"]); SQLStringListT.Add(sql);*/ } return _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from MES_ITEMS where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 21.ERPKHA客户信息(同步推送) bool TB_ERPTOMES_KH(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPKHA客户信息(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_KH(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("COMMAA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT //dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); //dr["AUDITING"] = "Y"; //dr["KHA002"] = dr["KHA003"]; sql = string.Format(@" INSERT INTO MES_CUSTOMER(ID,CUST_NO,CUST_NAME,CUST_SNAME,STRAS,ANRED,TELF1,REMARK,COMPANY,FACTORY,PART) VALUES ('{0}','{1}','{2}','{3}','{7}','{4}','{5}','{6}','1000','1000','{7}') ", dr["ERPID"], dr["KHA001"], dr["KHA003"], dr["KHA002"], dr["KHA005"], dr["KHA006"], dr["KHA007"], dr["KHA004"], ddr["TARGET_TABLE"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); //插入前先删除重复键 // DeleteDataBeforeInsert("COMMAA", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("COMMAA", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "COMMAA重复键删除失败!"; // return false; //} #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update COMMAA set MAA001='{1}', MAA002='{2}', MAA003='{3}', MAA004='{4}', MAA009='{5}', MAA010='{6}', MAA006='{7}' where ERPID='{0}'; ", dr["ERPID"] , dr["KHA001"], dr["KHA003"], dr["KHA003"], dr["KHA004"], dr["KHA005"], dr["KHA006"], dr["KHA007"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from COMMAA where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 22.ERPGYS供应商信息(同步推送) bool TB_ERPTOMES_GYS(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPGYS供应商信息(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_GYS(DataSet ds, string operatype, ref string ErrorMsg, DataRow drr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 //operatype = DataIsInDB("PURMAA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM mes_supplier WHERE ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE FROM mes_supplier WHERE ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["ERPID"].ToString()); dr["GYS002"] = dr["GYS003"]; sql = string.Format(@" INSERT INTO mes_supplier(SUPP_NO,SUPP_NAME,SUPP_SNAME,ID,STRAS,COMPANY,FACTORY,PART) VALUES ('{0}','{1}','{2}','{3}',0,'1000','1000','{4}') ", dr["GYS001"], dr["GYS003"], dr["GYS003"], dr["ERPID"], drr["TARGET_TABLE"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); //插入前先删除重复键 // DeleteDataBeforeInsert("PURMAA", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("PURMAA", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "PURMAA重复键删除失败!"; // return false; //} //OracleBulkCopyColumnMapping[] colMapping = new OracleBulkCopyColumnMapping[dt.Columns.Count]; //colMapping[0] = new OracleBulkCopyColumnMapping("GYS001", "SUPP_NO"); // 供应商编号 //colMapping[1] = new OracleBulkCopyColumnMapping("GYS002", "SUPP_NAME"); // 供应商简称 //colMapping[2] = new OracleBulkCopyColumnMapping("GYS003", "SUPP_NAME"); // 供应商名称 ////colMapping[3] = new OracleBulkCopyColumnMapping("GYS004", "MAA004"); // 供应商英文 ////colMapping[4] = new OracleBulkCopyColumnMapping("GYS005", "MAA009"); // 联系人 ////colMapping[5] = new OracleBulkCopyColumnMapping("GYS006", "MAA010"); // 电话 ////colMapping[6] = new OracleBulkCopyColumnMapping("GYS007", "MAA007"); // 备注 //colMapping[3] = new OracleBulkCopyColumnMapping("ERPID", "ID"); // ERPID ////colMapping[8] = new OracleBulkCopyColumnMapping("MAA005", "MAA005"); // 内/外销 ////colMapping[8] = new SqlBulkCopyColumnMapping("AUDITING", "AUDITING"); //SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count]; //colMapping[0] = new SqlBulkCopyColumnMapping("CKA001", "MDA001"); // 仓库编号 //colMapping[1] = new SqlBulkCopyColumnMapping("CKA002", "MDA002"); // 仓库名称 //colMapping[2] = new SqlBulkCopyColumnMapping("CKA003", "MDA005"); // 质量状态 //colMapping[3] = new SqlBulkCopyColumnMapping("ERPID", "ERPID"); // ERPID //colMapping[4] = new SqlBulkCopyColumnMapping("MDA003", "MDA003"); // ERP仓库编号 //colMapping[5] = new SqlBulkCopyColumnMapping("MDA004", "MDA004"); // 部材类型 A=原材料,B=半成品,C=成品 //colMapping[6] = new SqlBulkCopyColumnMapping("MDA006", "MDA006"); // 仓库性质 1=存货仓 0=非存货仓 //colMapping[7] = new SqlBulkCopyColumnMapping("MDA007", "MDA007"); // 纳入可用量计算 Y=纳入,N=不纳入 //colMapping[8] = new SqlBulkCopyColumnMapping("MDA008", "MDA008"); // 库存量不足准许出库 Y=可以,N=不可以 //colMapping[9] = new SqlBulkCopyColumnMapping("MDA009", "MDA009"); // 是否参与盘点 Y=参与,N=不参与 //colMapping[10] = new SqlBulkCopyColumnMapping("MDA011", "MDA011"); // 仓库状态 Y=生效,N=失效 //colMapping[11] = new SqlBulkCopyColumnMapping("MDA012", "MDA012");//仓库性质 1良品2不良品3待检品4报废品5途中品 // return DataTableToSQLServer(dt, conStr, "mes_supplier", colMapping, ref ErrorMsg); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update mes_supplier set SUPP_NO='{1}', SUPP_NAME='{2}', SUPP_SNAME='{3}' where ERPID='{0}'; ", dr["ERPID"] , dr["GYS001"], dr["GYS003"], dr["GYS003"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else if (operatype == "DELETE")//DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from mes_supplier where ID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else return false; } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 23.ERPCKA仓库信息档(同步推送) bool TB_ERPTOMES_CK(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPCKA仓库信息档(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_CK(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 //operatype = DataIsInDB("BASMDA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_DEPOTS WHERE DEPOT_ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE FROM MES_DEPOTS WHERE DEPOT_ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } if (dr["CKA003"].ToString() == "1") { dr["CKA003"] = "0"; } else { dr["CKA003"] = "1"; } IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO MES_DEPOTS(DEPOT_ID,DEPOT_CODE,DEPOT_NAME,IS_NG,COMPANY,FACTORY,ZUID,PART) VALUES ('{0}','{1}','{2}','{3}','1000','1000','{4}','{5}') ", dr["ERPID"], dr["CKA001"], dr["CKA002"], dr["CKA003"], dr["CKA007"], ddr["TARGET_TABLE"]); SQLStringList.Add(sql); } //插入前先删除重复键 // DeleteDataBeforeInsert("BASMDA", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("BASMDA", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "BASMDA重复键删除失败!"; // return false; //} return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update BASMDA set MDA001='{1}', MDA002='{2}', MDA005='{3}' where ERPID='{0}'; ", dr["ERPID"] , dr["CKA001"], dr["CKA002"], dr["CKA003"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from BASMDA where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 24.ERPTLA生产投料单(同步推送) bool TB_ERPTOMES_TL(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPTLA生产投料单(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_TL(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string dtName = ""; if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } try { foreach (DataTable dt in ds.Tables) { dtName = dt.TableName; IDList.Clear(); SQLStringList.Clear(); SQLStringListT.Clear(); //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据 if (operatype == "INSERT") { #region INSERT if (dt.TableName == "ERPTLA") { #region 投料单主表的处理 foreach (DataRow dr in dt.Rows) { // 检查下游单据 WOMDAA 是否存在影响同步的数据 /* string sqlCheck2 = string.Format(@"SELECT COUNT(*) FROM WOMDAA WHERE DAA014 = '{0}' AND FSTATUS = 1", dr["TLA001"]); int downstreamCount2 = Convert.ToInt32(_sqlHelper.GetSingle(sqlCheck2)); */ //任务数只能变大不能变小 string sqlCheck = string.Format(@"SELECT nvl(CAA012,0) FROM womcaa WHERE caa001 = '{0}' ", dr["TLA001"]); int downstreamCount = Convert.ToInt32(_sqlHelper.GetSingle(sqlCheck)); string sqlgds = string.Format(@"SELECT sum(daa008) FROM WOMDAA WHERE DAA014 = '{0}' AND FSTATUS = 1", dr["TLA001"]); int gds = Convert.ToInt32(_sqlHelper.GetSingle(sqlgds)); int newTaskCount = Convert.ToInt32(dr["TLA012"]); // 如果已排产工单数大于新工单数,则返回失败,且排除未同步过的 if (gds > newTaskCount && downstreamCount > 0 && gds != 0) { ErrorMsg = string.Format("存在已排工单数大于任务总数,无法同步数据: 主表记录 TLA001 = {0}", dr["TLA001"]); return false; } //2025-01-22 修改单据状态审核/反审核 // 获取 typeA 字段的值 string typeA = dr["TYPEA"].ToString(); // 如果 typeA 是 'C',执行插入操作 if (typeA == "C") { //插入前先检查是否存在相同数据,若存在则删除 /* string sqlT = ""; string SQLF = ""; string SQLD = ""; sqlT = string.Format(@"SELECT count(*) cou FROM WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' WWLL_TYPE is null", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } }*/ string SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' and WWLL_TYPE is null", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); sql = string.Format(@" INSERT INTO WOMCAA(ID,ERPID,CAA001,CAA002,CAA003,CAA004,CAA005,CAA006,CAA007,CAA008,CAA009,CAA010,CAA011,CAA012,CAA013,CAA014,CAA015,CAA016,CAA018,CAA019,CAA020,CAA021,FSTATUS,CAA022,TB_TIME,FSTATES,TYPEA) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}',1,'{21}',sysdate,'{22}','{23}') ", dr["ERPID"], dr["TLA001"], dr["TLA002"], dr["TLA003"], dr["TLA004"], dr["TLA005"], dr["TLA006"], dr["TLA007"], dr["TLA008"], dr["TLA009"], dr["TLA010"], dr["TLA011"], dr["TLA012"], dr["TLA013"], dr["TLA014"], dr["TLA015"], dr["TLA016"], dr["TLA017"], dr["TLA018"], dr["TLA019"], dr["TLA020"], dr["TLA012"], dr["FSTATUS"], dr["TYPEA"]); SQLStringList.Add(sql); _sqlHelper.ExecuteSqlTran(SQLStringList); } else { string SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' and WWLL_TYPE is null", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } } #endregion } if (dt.TableName == "ERPTLB") { #region 投料单明细的处理 foreach (DataRow dr in dt.Rows) { sql = string.Format(@" INSERT INTO WOMCAB(ID,ERPID,CAB001,CAB002,CAB003,CAB004,CAB005,CAB006,CAB007,CAB008,CAB009,CAB010,CAB011,CAB012,CAB013,CAB014,CAB015,CAB016,TB_TIME,TYPEB,BILLTYPE) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}',sysdate,'{17}','{18}') ", dr["ERPID"], dr["TLB001"], dr["TLB002"], dr["TLB003"], dr["TLB004"], dr["TLB005"], dr["TLB006"], dr["TLB007"], dr["TLB008"], dr["TLB009"], dr["TLB010"], dr["TLB011"], dr["TLB012"], dr["TLB013"], dr["TLB014"], dr["TLB015"], dr["TLB016"], dr["TYPEB"], dr["BILLTYPE"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } if (dt.TableName == "ERPWWTLA") { #region 投料单主表的处理 foreach (DataRow dr in dt.Rows) { // 获取 typeA 字段的值 string typeA = dr["TYPEA"].ToString(); // 如果 typeA 是 'C',执行插入操作 if (typeA == "C") { //插入前先检查是否存在相同数据,若存在则删除 /* string sqlT = ""; string SQLF = ""; string SQLD = ""; sqlT = string.Format(@"SELECT count(*) cou FROM WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' and WWLL_TYPE=1", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } }*/ string SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' and WWLL_TYPE is not null", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); sql = string.Format(@" INSERT INTO WOMCAA(ID,ERPID,CAA001,CAA002,CAA003,CAA004,CAA005,CAA006,CAA007,CAA008,CAA009,CAA010,CAA011,CAA012,CAA013,CAA014,CAA015,CAA016,CAA018,CAA019,CAA020,CAA021,FSTATUS,CAA022,GYS_NO,XS_NO,CG_NO,EBELN_LINE,tsbs,FSTATES,TYPEA) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}',1,'{21}','{22}','{23}','{24}','{25}',1,'{26}','{27}') ", dr["ERPID"], dr["WWTLA001"], dr["WWTLA002"], dr["WWTLA003"], dr["WWTLA004"], dr["WWTLA005"], dr["WWTLA006"], dr["WWTLA007"], dr["WWTLA008"], dr["WWTLA009"], dr["WWTLA010"], dr["WWTLA011"], dr["WWTLA012"], dr["WWTLA013"], dr["WWTLA014"], dr["WWTLA015"], dr["WWTLA016"], dr["WWTLA017"], dr["WWTLA018"], dr["WWTLA019"], dr["WWTLA020"], dr["WWTLA012"], dr["WWTLA021"], dr["WWTLA023"], dr["WWTLA024"], dr["WWTLA025"], dr["FSTATUS"], dr["TYPEA"]); SQLStringList.Add(sql); }else { string SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}' and WWLL_TYPE is not null", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } } _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } if (dt.TableName == "WWTLB") { #region 投料单明细的处理 foreach (DataRow dr in dt.Rows) { sql = string.Format(@" INSERT INTO WOMCAB(ID,ERPID,CAB001,CAB002,CAB003,CAB004,CAB005,CAB006,CAB007,CAB008,CAB009,CAB010,CAB011,CAB012,CAB013,CAB014,CAB015,CAB016,CAB019,CAB018,WWLL_TYPE,TB_TIME,TYPEB,BILLTYPE) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}',sysdate,'{20}','{21}') ", dr["ERPID"], dr["WWTLB001"], dr["WWTLB002"], dr["WWTLB003"], dr["WWTLB004"], dr["WWTLB005"], dr["WWTLB006"], dr["WWTLB007"], dr["WWTLB008"], dr["WWTLB009"], dr["WWTLB010"], dr["WWTLB011"], dr["WWTLB012"], dr["WWTLB013"], dr["WWTLB014"], dr["WWTLB015"], dr["WWTLB016"], dr["WWTLB017"], dr["WWTLB018"], dr["WWTLB019"], dr["TYPEB"], dr["BILLTYPE"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } #endregion } else if (operatype == "UPDATE") { #region INSERT if (dt.TableName == "ERPTLA") { #region 投料单主表的处理 foreach (DataRow dr in dt.Rows) { // 检查下游单据 WOMDAA 是否存在影响同步的数据 string sqlCheck = string.Format(@"SELECT COUNT(*) FROM WOMDAA WHERE DAA014 = '{0}' AND DAA011 > 0", dr["TLA001"]); int downstreamCount = Convert.ToInt32(_sqlHelper.GetSingle(sqlCheck)); // 如果存在下游单据且数量 > 0,则返回失败 if (downstreamCount > 0) { ErrorMsg = string.Format("存在下游单据,无法同步数据: 主表记录 TLA001 = {0}", dr["TLA001"]); return false; } //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; string SQLD = ""; sqlT = string.Format(@"SELECT count(*) cou FROM WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["TLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}'", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } sql = string.Format(@" INSERT INTO WOMCAA(ID,ERPID,CAA001,CAA002,CAA003,CAA004,CAA005,CAA006,CAA007,CAA008,CAA009,CAA010,CAA011,CAA012,CAA013,CAA014,CAA015,CAA016,CAA018,CAA019,CAA020,CAA021,FSTATUS,CAA022,BE_REFRESH) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}',1,'{21}',1) ", dr["ERPID"], dr["TLA001"], dr["TLA002"], dr["TLA003"], dr["TLA004"], dr["TLA005"], dr["TLA006"], dr["TLA007"], dr["TLA008"], dr["TLA009"], dr["TLA010"], dr["TLA011"], dr["TLA012"], dr["TLA013"], dr["TLA014"], dr["TLA015"], dr["TLA016"], dr["TLA017"], dr["TLA018"], dr["TLA019"], dr["TLA020"], dr["TLA012"]); SQLStringList.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } if (dt.TableName == "ERPTLB") { #region 投料单明细的处理 foreach (DataRow dr in dt.Rows) { sql = string.Format(@" INSERT INTO WOMCAB(ID,ERPID,CAB001,CAB002,CAB003,CAB004,CAB005,CAB006,CAB007,CAB008,CAB009,CAB010,CAB011,CAB012,CAB013,CAB014,CAB015,CAB016) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}') ", dr["ERPID"], dr["TLB001"], dr["TLB002"], dr["TLB003"], dr["TLB004"], dr["TLB005"], dr["TLB006"], dr["TLB007"], dr["TLB008"], dr["TLB009"], dr["TLB010"], dr["TLB011"], dr["TLB012"], dr["TLB013"], dr["TLB014"], dr["TLB015"], dr["TLB016"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } if (dt.TableName == "ERPWWTLA") { #region 投料单主表的处理 foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; string SQLD = ""; sqlT = string.Format(@"SELECT count(*) cou FROM WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE WOMCAA WHERE CAA001='{0}'", dr["WWTLA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); SQLD = string.Format(@"DELETE WOMCAB WHERE CAB001='{0}'", dr["ERPID"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } sql = string.Format(@" INSERT INTO WOMCAA(ID,ERPID,CAA001,CAA002,CAA003,CAA004,CAA005,CAA006,CAA007,CAA008,CAA009,CAA010,CAA011,CAA012,CAA013,CAA014,CAA015,CAA016,CAA018,CAA019,CAA020,CAA021,FSTATUS,CAA022,BE_REFRESH) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}',1,'{21}',1) ", dr["ERPID"], dr["WWTLA001"], dr["WWTLA002"], dr["WWTLA003"], dr["WWTLA004"], dr["WWTLA005"], dr["WWTLA006"], dr["WWTLA007"], dr["WWTLA008"], dr["WWTLA009"], dr["WWTLA010"], dr["WWTLA011"], dr["WWTLA012"], dr["WWTLA013"], dr["WWTLA014"], dr["WWTLA015"], dr["WWTLA016"], dr["WWTLA017"], dr["WWTLA018"], dr["WWTLA019"], dr["WWTLA020"], dr["WWTLA012"]); SQLStringList.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } if (dt.TableName == "WWTLB") { #region 投料单明细的处理 foreach (DataRow dr in dt.Rows) { sql = string.Format(@" INSERT INTO WOMCAB(ID,ERPID,CAB001,CAB002,CAB003,CAB004,CAB005,CAB006,CAB007,CAB008,CAB009,CAB010,CAB011,CAB012,CAB013,CAB014,CAB015,CAB016,CAB019,CAB018) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}') ", dr["ERPID"], dr["WWTLB001"], dr["WWTLB002"], dr["WWTLB003"], dr["WWTLB004"], dr["WWTLB005"], dr["WWTLB006"], dr["WWTLB007"], dr["WWTLB008"], dr["WWTLB009"], dr["WWTLB010"], dr["WWTLB011"], dr["WWTLB012"], dr["WWTLB013"], dr["WWTLB014"], dr["WWTLB015"], dr["WWTLB016"], dr["WWTLB017"], dr["WWTLB018"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE if (dt.TableName == "ERPTLA") { foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from WOMCAA where ERPID in ('{0}'); delete from WOMCAB where cab001 in ('{0}'); ", string.Join("','", IDList)); } if (dt.TableName == "ERPWWTLA") { foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from WOMCAA where ERPID in ('{0}'); delete from WOMCAB where cab001 in ('{0}'); ", string.Join("','", IDList)); } _sqlHelper.ExecuteNonQuery(sql); #endregion } } return true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; return false; } } #endregion #region 25.MesToErp(同步推送) bool MesToErp(DataRow dr, ref string ErrorMsg) /// /// MesToErp(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool MesToErp(DataRow dr, ref string ErrorMsg) { try { string task_name = dr["task_name"].ToString(); string descript = dr["descript"].ToString(); string create_time = dr["create_time"].ToString(); string creator = dr["creator"].ToString(); string operatype = dr["operatype"].ToString(); string source_table = dr["source_table"].ToString(); string target_table = dr["target_table"].ToString(); string data = dr["data"].ToString(); string data_inserted = dr["data_inserted"].ToString(); string data_deleted = dr["data_deleted"].ToString(); WebReference.WebService1 ws = new WebReference.WebService1(); string res = ws.mesToErpinfo(task_name, descript, create_time, creator, operatype, data, data_inserted, "NEW", ""); // string res = ws.GetJsonByMes(task_name, descript, create_time, creator, operatype, source_table, target_table, data, data_inserted, data_deleted); if (res.Contains("成功")) return true; else { ErrorMsg = res; return false; } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 26.MesToErpbs mes推ERP标识bool MesToErp(DataRow dr, ref string ErrorMsg) /// /// MesToErp(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool MESTOERPBS(DataRow dr, ref string ErrorMsg) { try { string task_name = dr["task_name"].ToString(); string descript = dr["descript"].ToString(); string create_time = dr["create_time"].ToString(); string creator = dr["creator"].ToString(); string operatype = dr["operatype"].ToString(); string source_table = dr["source_table"].ToString(); string target_table = dr["target_table"].ToString(); string data = dr["data"].ToString(); string data_inserted = dr["data_inserted"].ToString(); string data_deleted = dr["data_deleted"].ToString(); string data_insertedf = dr["data_insertedf"].ToString(); string type = "采购订单"; WebReference.WebService1 ws = new WebReference.WebService1(); string res = ws.updateMesTabFormal(source_table, data_inserted, type); // string res = ws.GetJsonByMes(task_name, descript, create_time, creator, operatype, source_table, target_table, data, data_inserted, data_deleted); if (res.Contains("\"IsSuccess\":true")) return true; else { ErrorMsg = res; return false; } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion #region 26.ERPDHA到货单(同步推送) bool TB_ERPTOMES_SLTZD(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPDHA到货单(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_SLTZD(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string dtName = ""; if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } try { foreach (DataTable dt in ds.Tables) { dtName = dt.TableName; IDList.Clear(); //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据 if (operatype == "INSERT" || operatype == "UPDATE") { #region INSERT if (dt.TableName == "ERPSLTZA") { #region 到货单主表的处理 dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { ////插入前先删除重复键 string sqlT = ""; string sqlG = ""; string SQLF = ""; string SQLD = ""; sqlG = string.Format(@"SELECT count(*) cou FROM PURDHB WHERE DHB001='{0}' AND DHB015>0", dr["CGA001"]); sqlT = string.Format(@"SELECT count(*) cou FROM PURDHA WHERE DHA001='{0}'", dr["CGA001"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int g = Convert.ToInt32(_sqlHelper.GetSingle(sqlG)); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (g == 0) { if (c != 0) { try { //删除主表 SQLF = string.Format(@"DELETE PURDHA WHERE DHA001='{0}'", dr["CGA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); //删除从表 SQLD = string.Format(@"DELETE PURDHB WHERE DHB001='{0}'", dr["CGA001"]); int D = _sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } } else { return false; } IDList.Add(dr["ERPID"].ToString()); dr["AUDITING"] = 1; string f = DateTime.Now.ToString("yyyy-MM-dd"); string t = DateTime.Now.ToShortTimeString().ToString(); string TIME = (f + " " + t).ToString(); sql = string.Format(@" INSERT INTO PURDHA(ID,DHA001,DHA002,DHA003,DHA004,DHA007,DHA008,DHA009,DHA010,DHA011,DHA012,DHA016,DHA019,ERPID,AUDITING,DHA014,DHA018,DHA017,DHA020,CREATEUSER) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}') ", dr["CGA001"], dr["CGA003"], dr["CGA004"] , dr["CGA003"], dr["CGA005"], "", "", "", "", dr["CGA012"], "", "否", dr["ERPID"], dr["AUDITING"], dr["CGA006"], TIME, dr["CGA010"], dr["CGA002"], dr["CGA009"]); SQLStringList.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } if (dt.TableName == "ERPSLTZD") { #region 到货单明细的处理 dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); Double a = Convert.ToDouble(dr["CGB008"].ToString()) - Convert.ToDouble(dr["CGB013"].ToString()); dr["AUDITING"] = 1; sql = string.Format(@" INSERT INTO PURDHB(ID,DHB001,DHB002,DHB003,DHB006,DHB007,DHB017,DHB018,DHB014,DHB032,DHB024,DHB037,AUDITING,DHB038,DHB039,DHB040,DHB041,DHB029,DHB013,DHB015,DHB016,DHB023,DHB042) VALUES (seq_down.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','0','0','0','未检验','{17}') ", dr["CGB001"], dr["CGB002"], dr["CGB003"] , dr["CGB008"], dr["CGB009"], dr["CGB010"], dr["CGB011"], dr["CGB012"], dr["CGB013"], dr["CGB014"], dr["ERPID"], dr["AUDITING"], dr["CGB004"], dr["CGB005"], dr["CGB006"], dr["CGB007"], a, dr["CGB015"]); SQLStringListT.Add(sql); } _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE if (dt.TableName == "ERPDHA") { foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from PURDHA where ERPID in ('{0}'); delete from PURDHB where ERPID in ('{0}'); ", string.Join("','", IDList)); } _sqlHelper.ExecuteNonQuery(sql); #endregion } } return true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; return false; } } #endregion private bool TB_ERPTOMES_JA(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["JA002"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("COMMAA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "UPDATE" || operatype == "INSERT") { #region INSERT //dt.Columns.Add("AUDITING", typeof(string)); foreach (DataRow dr in dt.Rows) { string sqlG = string.Format(@"SELECT count(*) cou FROM JABS WHERE PPBOM='{0}'", dr["JA001"]); int g = Convert.ToInt32(_sqlHelper.GetSingle(sqlG)); if (g != 0) { try { //删除主表 string SQLF = string.Format(@"DELETE JABS WHERE PPBOM='{0}'", dr["JA001"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["JA002"].ToString()); //dr["AUDITING"] = "Y"; //dr["KHA002"] = dr["KHA003"]; sql = string.Format(@" INSERT INTO JABS(ID,PPBOM,STATES,LINE_ID,TB_TIME) VALUES ('{0}','{1}','{2}','{3}', to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS')) ", dr["JA002"], dr["JA001"], dr["JA003"], dr["JA004"]); SQLStringList.Add(sql); if (dr["JA003"] != null && dr["JA003"].ToString().Equals("结案", StringComparison.OrdinalIgnoreCase)) { //修改工单为完工 string daa014 = dr["JA001"].ToString(); // string sqlja = string.Format(@"update womdaa set daa018='完工',WORK_BY='ERP结案',DAA017=sysdate where daa001 in (select a.daa001 from womdaa a left join JABS b on a.daa014=b.PPBOM where b.STATES='结案' and a.daa018 <>'完工')"); string sqlja = string.Format(@"update womdaa set daa018='完工',WORK_BY='ERP结案',DAA017=sysdate where daa018<>'完工' and daa014='" + daa014 + "'"); SQLStringList.Add(sqlja); //查询要插入工单信息 string SqlStr = string.Format(@"Select a.daa001,j.caa015,s.ITEM_NO,s.ITEM_NAME,a.daa029,s.ITEM_MODEL,nvl(max(lv.SQE_NUM),0),s.id from womdaa a left join GD_LVL lv on a.daa001=lv.DAA001 left join womcaa j on A.DAA021 = j.CAA020 and j.CAA001 = A.DAA014 left join v_mes_items s on a.daa002=s.id WHERE a.daa018 <>'完工' and a.daa014 = '" + daa014 + @"' group by a.daa001, j.caa015, s.ITEM_NO, s.ITEM_NAME, a.daa029, s.ITEM_MODEL, s.id "); DataTable tbQueue = _sqlHelper.ExecuteDataTable(SqlStr); //有数据 if (tbQueue.Rows.Count > 0) { foreach (DataRow item in tbQueue.Rows) { var daa001 = item[0]; /* var daa001 = item[1]; var daa001 = item[2]; var daa001 = item[3]; var daa001 = item[4]; var daa001 = item[5];*/ //insert string sqlcr = string.Format(@" insert into GD_LVL(id, caa015, daa001, item_no, item_id, item_name, item_model, xt, xg_state, sg_time, xg_user, sqe_num) values ( F_GETSEQNEXTVALUE('GD_LVL'), '{0}','{1}','{2}','{3}','{4}','{5}' ,'{6}','完工',sysdate,'ERP结案','{7}') ", item[1], item[0],item[2],item[7],item[3], item[5], item[4],item[6]); SQLStringList.Add(sqlcr); } } } if ( dr["JA003"].ToString().Equals("反结案 ", StringComparison.OrdinalIgnoreCase)) { string daa014 = dr["JA001"].ToString(); string sqlja = string.Format(@"update womdaa set daa018='反完工',WORK_BY='',DAA017='' where daa018='完工' and WORK_BY='ERP结案' and daa014='" + daa014 + "'"); SQLStringList.Add(sqlja); //查询要插入工单信息 string SqlStr = string.Format(@"Select a.daa001,j.caa015,s.ITEM_NO,s.ITEM_NAME,a.daa029,s.ITEM_MODEL,nvl(max(lv.SQE_NUM),0),s.id from womdaa a left join GD_LVL lv on a.daa001=lv.DAA001 left join womcaa j on A.DAA021 = j.CAA020 and j.CAA001 = A.DAA014 left join v_mes_items s on a.daa002=s.id WHERE a.daa018 ='完工' and WORK_BY='ERP结案' and a.daa014 = '" + daa014 + @"' group by a.daa001, j.caa015, s.ITEM_NO, s.ITEM_NAME, a.daa029, s.ITEM_MODEL, s.id "); DataTable tbQueue = _sqlHelper.ExecuteDataTable(SqlStr); //有数据 if (tbQueue.Rows.Count > 0) { foreach (DataRow item in tbQueue.Rows) { var daa001 = item[0]; /* var daa001 = item[1]; var daa001 = item[2]; var daa001 = item[3]; var daa001 = item[4]; var daa001 = item[5];*/ //insert string sqlcr = string.Format(@" insert into GD_LVL(id, caa015, daa001, item_no, item_id, item_name, item_model, xt, xg_state, sg_time, xg_user, sqe_num) values ( F_GETSEQNEXTVALUE('GD_LVL'), '{0}','{1}','{2}','{3}','{4}','{5}' ,'{6}','反完工',sysdate,'ERP反结案','{7}') ", item[1], item[0], item[2], item[7], item[3], item[5], item[4], item[6]); SQLStringList.Add(sqlcr); } } } } return _sqlHelper.ExecuteSqlTran(SQLStringList); //插入前先删除重复键 // DeleteDataBeforeInsert("COMMAA", "ERPID", string.Join("','", IDList), ""); //if (!DeleteDataBeforeInsert("COMMAA", "ERPID", string.Join("','", IDList), "")) //{ // ErrorMsg = "COMMAA重复键删除失败!"; // return false; //} #endregion } /* else if (operatype == "INSERT") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["JA002"].ToString()); //dr["AUDITING"] = "Y"; //dr["KHA002"] = dr["KHA003"]; sql = string.Format(@" INSERT INTO JABS(ID,PPBOM,STATES,LINE_ID) VALUES ('{0}','{1}','{2}','{3}') ", dr["JA002"], dr["JA001"], dr["JA003"], dr["JA004"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion }*/ else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["JA002"].ToString()); } sql = string.Format(@" delete from JABS where ID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #region 27.ERPTHCONFIRM供应商退货确认 bool TB_ERPTOMES_TH_CONFIRM(DataSet ds, string operatype, ref string ErrorMsg) private bool TB_ERPTOMES_TH_CONFIRM(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); string dtName = ""; if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } try { foreach (DataTable dt in ds.Tables) { dtName = dt.TableName; IDList.Clear(); //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据 if (operatype == "INSERT" || operatype == "UPDATE") { #region 更新至供应商退货单明细表 PURDKB if (dt.TableName == "ERPTHCONFIRM") { foreach (DataRow dr in dt.Rows) { sql += string.Format(@" UPDATE PURDKB SET DKB024 = '{0}', DKB025 = '{1}' WHERE DKB012 = '{2}' AND DKB013 = '{3}' AND DKB003 = '{4}' AND DKB007 = '{5}'; ", dr["THC007"] , dr["THC008"], dr["THC003"], dr["THC004"], dr["THC005"], dr["THC006"]); } #endregion } } else //DELETE { continue; } } _sqlHelper.ExecuteNonQuery(sql); return true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; return false; } } #endregion #region 17.ERPBMA信息视图表(同步推送) bool TB_ERPTOMES_BM(DataSet ds, string operatype, ref string ErrorMsg) /// /// ERPBMA部门信息表(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool TB_ERPTOMES_BAR(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } //if (operatype == "INSERT" || operatype == "UPDATE") //{ // foreach (DataRow dr in ds.Tables[0].Rows) // { // //IDList.Add(dr["ERPID"].ToString()); // } // //处理前判断是否存在 // //operatype = DataIsInDB("HRMMAA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; //} try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { //IDList.Add(dr["ERPID"].ToString()); string bar011Value = dr["BAR011"].ToString(); bar011Value = bar011Value.Replace(",", ","); //bar011Value = bar011Value.Replace("\\", string.Empty); int messageIndex = bar011Value.IndexOf("\"Message\":"); bar011Value = bar011Value.Replace("'", string.Empty); if (messageIndex >= 0) { // 从 "Message" 位置开始截取 // bar011Value = bar011Value.Substring(messageIndex); bar011Value = bar011Value.Substring(messageIndex + "\"Message\":".Length).Trim(); // 确保最多截取 3000 字符 if (bar011Value.Length > 2000) { bar011Value = bar011Value.Substring(0,2000); } } /* bar011Value = bar011Value.Replace("'","\""); if (bar011Value.Length > 3000) { bar011Value = bar011Value.Substring(0, 2000); }*/ sql = string.Format(@"INSERT INTO ERPBAR (BAR001, BAR002, BAR003, BAR004, BAR005, BAR006, BAR008, BAR009, BAR010, BAR011, BAR012,ID) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}',f_getseqnextvalue('ERPBAR'))", dr["BAR001"], dr["BAR002"], dr["BAR003"], dr["BAR004"], dr["BAR005"], dr["BAR006"], dr["BAR008"], dr["BAR009"], dr["BAR010"], bar011Value, dr["BAR012"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql += string.Format(@" update HRMMAA set MAA002='{1}', MAA003='{2}', MAA004='{3}', MAA005='{4}', MAA006='{5}', MAA007='{6}' where ERPID='{0}'; ", dr["ERPID"], dr["BMA001"], dr["BMA002"], dr["BMA003"], dr["BMA004"], dr["BMA005"], dr["BMA006"]); } return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from HRMMAA where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion private bool TB_ERPTOMES_CG(DataSet ds, string operatype, ref string ErrorMsg) { List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string dtName = ""; bool flag = ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0; bool result; if (flag) { ErrorMsg = "生成数据表失败"; result = false; } else { try { foreach (object obj in ds.Tables) { DataTable dt = (DataTable)obj; dtName = dt.TableName; IDList.Clear(); SQLStringList.Clear(); SQLStringListT.Clear(); bool flag2 = operatype == "INSERT" || operatype == "UPDATE"; if (flag2) { //2025-01-21 新增审核状态执行 bool flag3 = dt.TableName == "ERPCGA"; if (flag3) { foreach (object obj2 in dt.Rows) { DataRow dr = (DataRow)obj2; if (dr["FDOCUMENTSTATUS"].ToString() == "C") { string sqlT = string.Format("SELECT count(*) cou FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); bool flag4 = c != 0; if (flag4) { try { string SQLF = string.Format("DELETE FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } string sql = string.Format(" INSERT INTO MES_ROH_IN(ID,ERPID,EBELN,BEDAT,CHG_TIME,F_TYPE,SUPP_NO,FACTORY,MANDT,CGA011,CGA012,CGA013,CGA014,CHECK_BY,CHECK_DATE,MEMO,FDOCUMENTSTATUS,FCLOSESTATUS,FCANCELSTATUS) " + "VALUES (SEQ_BASEINFO_ID.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}') ", new object[] { dr["ERPID"], dr["CGA001"], dr["CGA003"], dr["CGA004"], dr["CGA005"], dr["CGA006"], "1000", dr["CGA009"], dr["CGA011"], dr["CGA012"], dr["CGA013"], dr["CGA014"], dr["CGA015"], dr["CGA016"], dr["CGA017"], dr["FDOCUMENTSTATUS"], dr["FCloseStatus"], dr["FCancelStatus"] }); SQLStringList.Add(sql); this._sqlHelper.ExecuteSqlTran(SQLStringList); } else { string sqlT = string.Format("SELECT count(*) cou FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); string SQLF = string.Format("DELETE FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM MES_ROH_IN_DATA WHERE EBELN='{0}'", dr["CGA001"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); bool flag4 = c != 0; return true; /* if (flag4) { try { string SQLF = string.Format("DELETE FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM MES_ROH_IN_DATA WHERE EBELN='{0}'", dr["CGA001"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } }*/ } } } bool flag5 = dt.TableName == "ERPCGB"; if (flag5) { foreach (object obj3 in dt.Rows) { DataRow dr2 = (DataRow)obj3; string erpid = dr2["ERPID"].ToString(); //普通料 string urgencyStr = this._sqlHelper.GetSingle(string.Format( "SELECT URGENCY FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString(); //采购要求供应商送货时间 string cgb024Str = this._sqlHelper.GetSingle(string.Format( "SELECT CGB024 FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString(); //供应商承诺交货时间 string gys_jhtimeStr = this._sqlHelper.GetSingle(string.Format( "SELECT GYS_JHTIME FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString(); //跟进备注 string gbbz = this._sqlHelper.GetSingle(string.Format( "SELECT GBBZ FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString() ?? ""; string cgb = this._sqlHelper.GetSingle(string.Format("SELECT CGB FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString() ?? ""; string cgb025Str = this._sqlHelper.GetSingle(string.Format("SELECT CGB025 FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString(); string cgb026 = this._sqlHelper.GetSingle(string.Format("SELECT CGB026 FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString() ?? ""; string cgb028Str = this._sqlHelper.GetSingle(string.Format("SELECT CGB028 FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid))?.ToString(); // 转换类型 string urgency = string.IsNullOrWhiteSpace(urgencyStr) ? "0" : urgencyStr; // number 不加引号 string cgb024 = string.IsNullOrWhiteSpace(cgb024Str) ? "NULL" : $"TO_DATE('{Convert.ToDateTime(cgb024Str):yyyy-MM-dd HH:mm:ss}', 'yyyy-MM-dd HH24:MI:SS')"; string gys_jhtime = string.IsNullOrWhiteSpace(gys_jhtimeStr) ? "NULL" : $"TO_DATE('{Convert.ToDateTime(gys_jhtimeStr):yyyy-MM-dd HH:mm:ss}', 'yyyy-MM-dd HH24:MI:SS')"; string cgb025 = string.IsNullOrWhiteSpace(cgb025Str) ? "0" : cgb025Str; string cgb028 = string.IsNullOrWhiteSpace(cgb028Str) ? "NULL" : $"TO_DATE('{Convert.ToDateTime(cgb028Str):yyyy-MM-dd HH:mm:ss}', 'yyyy-MM-dd HH24:MI:SS')"; string SQLD = string.Format("DELETE FROM MES_ROH_IN_DATA WHERE ERPID='{0}'", erpid); int D = this._sqlHelper.ExecuteNonQuery(SQLD); // 判断 CGB019 是否等于 MENGE,若是则 CGB025 为 1,否则为 0 int cgb025Value = (dr2["CGB008"].ToString() == dr2["CGB014"].ToString()) ? 1 : 0; // int cgb025Value2 = dr2["CGB008"] == dr2["CGB014"] ? 1 : 0; string sql2 = string.Format(" INSERT INTO MES_ROH_IN_DATA(ID,ERPID,EBELN,CGB002,MATNR,CGB004,CGB005,CGB006,CGB007,MENGE,CGB009,CGB010,CGB011,CGB012,CGB013,CGB014,CGB015,CGB016,CGB018,CGB020,CGB021,CGB022,CGB023,CGB027,CGB029,cgb024,TB_TIME,CGB019,FMRPCLOSESTATUS,FMRPTERMINATESTATUS,URGENCY, GYS_JHTIME, GBBZ, CGB, CGB025, CGB026, CGB028) " + "VALUES (SEQ_BASEINFO_ID.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','18','{19}','{20}','{21}','{22}','{23}',TIMESTAMP '{24}',sysdate,'{25}','{26}','{27}','{28}',{29},'{30}','{31}','{32}','{33}',{34}) ", new object[] { dr2["ERPID"], dr2["CGB001"], dr2["CGB002"], dr2["CGB003"], dr2["CGB004"], dr2["CGB005"], dr2["CGB006"], dr2["CGB007"], dr2["CGB008"], dr2["CGB009"], dr2["CGB010"], dr2["CGB011"], dr2["CGB012"], dr2["CGB013"], dr2["CGB014"], dr2["CGB015"], dr2["CGB016"], dr2["CGB017"], dr2["CGB018"], dr2["CGB019"], dr2["CGB020"], dr2["ERPID"], dr2["CGB021"], dr2["CGB022"], dr2["CGB012"], dr2["CGB014"], dr2["FMRPCloseStatus"], dr2["FMRPTerminateStatus"], urgency, gys_jhtime, gbbz.Replace("'", "''"), cgb.Replace("'", "''"), cgb025, cgb026.Replace("'", "''"), cgb028 }); SQLStringListT.Add(sql2); } this._sqlHelper.ExecuteSqlTran(SQLStringListT); } #region 2025-01-21注释掉 /* bool flag3 = dt.TableName == "ERPCGA"; if (flag3) { foreach (object obj2 in dt.Rows) { DataRow dr = (DataRow)obj2; string sqlT = string.Format("SELECT count(*) cou FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); bool flag4 = c != 0; if (flag4) { try { string SQLF = string.Format("DELETE FROM MES_ROH_IN WHERE EBELN='{0}'", dr["CGA001"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM MES_ROH_IN_DATA WHERE EBELN='{0}'", dr["CGA001"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } string sql = string.Format(" INSERT INTO MES_ROH_IN(ID,ERPID,EBELN,BEDAT,CHG_TIME,F_TYPE,SUPP_NO,FACTORY,MANDT,CGA011,CGA012,CGA013,CGA014,CHECK_BY,CHECK_DATE,MEMO) " + "VALUES (SEQ_BASEINFO_ID.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}') ", new object[] { dr["ERPID"], dr["CGA001"], dr["CGA003"], dr["CGA004"], dr["CGA005"], dr["CGA006"], "1000", dr["CGA009"], dr["CGA011"], dr["CGA012"], dr["CGA013"], dr["CGA014"], dr["CGA015"], dr["CGA016"], dr["CGA017"] }); SQLStringList.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringList); } bool flag5 = dt.TableName == "ERPCGB"; if (flag5) { foreach (object obj3 in dt.Rows) { DataRow dr2 = (DataRow)obj3; string sql = string.Format(" INSERT INTO MES_ROH_IN_DATA(ID,ERPID,EBELN,CGB002,MATNR,CGB004,CGB005,CGB006,CGB007,MENGE,CGB009,CGB010,CGB011,CGB012,CGB013,CGB014,CGB015,CGB016,CGB018,CGB020,CGB021,CGB022,CGB023,CGB027,CGB029,cgb024,TB_TIME,CGB019) " + "VALUES (SEQ_BASEINFO_ID.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','18','{19}','{20}','{21}','{22}','{23}',TIMESTAMP '{24}',sysdate,'{25}') ", new object[] { dr2["ERPID"], dr2["CGB001"], dr2["CGB002"], dr2["CGB003"], dr2["CGB004"], dr2["CGB005"], dr2["CGB006"], dr2["CGB007"], dr2["CGB008"], dr2["CGB009"], dr2["CGB010"], dr2["CGB011"], dr2["CGB012"], dr2["CGB013"], dr2["CGB014"], dr2["CGB015"], dr2["CGB016"], dr2["CGB017"], dr2["CGB018"], dr2["CGB019"], dr2["CGB020"], dr2["ERPID"], dr2["CGB021"], dr2["CGB022"], dr2["CGB012"], dr2["CGB014"], }); SQLStringListT.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringListT); }*/ #endregion } else { bool flag3 = dt.TableName == "ERPCGA"; if (flag3) { foreach (DataRow dr in dt.Rows) { // 获取采购订单号 string cga001 = dr["CGA001"].ToString(); // 执行删除操作 string SQLF = string.Format("DELETE FROM MES_ROH_IN WHERE EBELN='{0}'", cga001); int rowsAffectedF = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM MES_ROH_IN_DATA WHERE EBELN='{0}'", cga001); int rowsAffectedD = this._sqlHelper.ExecuteNonQuery(SQLD); // 在这里可以根据 rowsAffectedF 和 rowsAffectedD 判断删除操作是否成功 // rowsAffectedF 和 rowsAffectedD 分别表示 MES_ROH_IN 和 MES_ROH_IN_DATA 表中受影响的行数 } } } } result = true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; result = false; } } return result; } private bool TB_ERPTOMES_XSD(DataSet ds, string operatype, ref string ErrorMsg) { List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string mid = ""; string dtName = ""; bool flag = ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0; bool result; if (flag) { ErrorMsg = "生成数据表失败"; result = false; } else { try { foreach (object obj in ds.Tables) { DataTable dt = (DataTable)obj; dtName = dt.TableName; IDList.Clear(); SQLStringList.Clear(); SQLStringListT.Clear(); bool flag2 = operatype == "INSERT" || operatype == "UPDATE"; if (flag2) { bool flag3 = dt.TableName == "ERPXSA"; if (flag3) { foreach (object obj2 in dt.Rows) { DataRow dr = (DataRow)obj2; mid = dr["ERPID"].ToString(); string sqlT = string.Format("SELECT count(*) cou FROM MES_ERPXSA WHERE ERPID='{0}'", dr["ERPID"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); bool flag4 = c != 0; if (flag4) { try { string SQLF = string.Format("DELETE FROM MES_ERPXSA WHERE ERPID='{0}'", dr["ERPID"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM MES_ERPXSB WHERE PID='{0}'", dr["ERPID"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); } catch (Exception) { return false; } } string sql = string.Format(" INSERT INTO MES_ERPXSA(ERPID,XSA001,XSA002,XSA003,XSA004,XSA005,XSA006,XSA007,XSA008,XSA009,XSA010,XSA011,XSA012,XSA013,XSA014,XSA015) " + "VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}') ", new object[] { dr["ERPID"], dr["XSA001"], dr["XSA002"], dr["XSA003"], dr["XSA004"], dr["XSA005"], "1000", "1000", dr["XSA008"], dr["XSA009"], dr["XSA010"], dr["XSA011"], dr["XSA012"], dr["XSA013"], dr["XSA014"], dr["XSA015"] }); SQLStringList.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringList); } bool flag5 = dt.TableName == "ERPXSB"; if (flag5) { foreach (object obj3 in dt.Rows) { DataRow dr2 = (DataRow)obj3; string sql = string.Format(" INSERT INTO MES_ERPXSB(ID,ERPID,PID,XSB001,XSB002,XSB003,XSB004,XSB005,XSB006,XSB007,XSB008,XSB009,XSB010,XSB011,XSB012,XSB013,XSB014) " + "VALUES (SEQ_BASEINFO_ID.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}') ", new object[] { dr2["ERPID"], mid, dr2["XSB001"], dr2["XSB002"], dr2["XSB003"], dr2["XSB004"], dr2["XSB005"], dr2["XSB006"], dr2["XSB007"], dr2["XSB008"], dr2["XSB009"], dr2["XSB010"], dr2["XSB011"], dr2["XSB012"], dr2["XSB013"], dr2["XSB014"] }); SQLStringListT.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringListT); } } } result = true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; result = false; } } return result; } private bool TB_ERPTOMES_XSRK(DataSet ds, string operatype, ref string ErrorMsg) { List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string mid = ""; string dtName = ""; bool flag = ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0; bool result; if (flag) { ErrorMsg = "生成数据表失败"; result = false; } else { try { foreach (object obj in ds.Tables) { DataTable dt = (DataTable)obj; dtName = dt.TableName; IDList.Clear(); SQLStringList.Clear(); SQLStringListT.Clear(); bool flag2 = operatype == "INSERT" || operatype == "UPDATE"; if (flag2) { bool flag3 = dt.TableName == "ERPXSRKA"; if (flag3) { foreach (object obj2 in dt.Rows) { DataRow dr = (DataRow)obj2; //2025-01-22 修改审核字段 string FDOCUMENTSTATUS = dr["FDOCUMENTSTATUS"].ToString(); if (FDOCUMENTSTATUS == "C") { mid = dr["ERPID"].ToString(); string sqlT = string.Format("SELECT count(*) cou FROM XSRKA WHERE ERPID='{0}'", dr["ERPID"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); string SQLF = string.Format("DELETE FROM XSRKA WHERE ERPID='{0}'", dr["ERPID"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM XSRKB WHERE PID='{0}'", dr["ERPID"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); string sql = string.Format(" INSERT INTO XSRKA(ID,FBillerID,FBillNo,FCheckerID ,FCheckDate,FDeptNumber,FDeptName,FCustIDNumber,FCustIDName,FEMPNumber,FEMPName,ERPID,TB_TIME,FDOCUMENTSTATUS) " + "VALUES (SEQ_XS01.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}',sysdate,'{11}') ", new object[] { dr["FBillerID"], dr["FBillNo"], dr["FCheckerID"], dr["FCheckDate"], dr["FDeptNumber"], dr["FDeptName"], dr["FCustIDNumber"], dr["FCustIDName"], dr["FEMPNumber"], dr["FEMPName"], dr["ERPID"], dr["FDOCUMENTSTATUS"] }); SQLStringList.Add(sql); } else { string SQLF = string.Format("DELETE FROM XSRKA WHERE ERPID='{0}'", dr["ERPID"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM XSRKB WHERE PID='{0}'", dr["ERPID"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); } } this._sqlHelper.ExecuteSqlTran(SQLStringList); } bool flag5 = dt.TableName == "ERPXSRKB"; if (flag5) { foreach (object obj3 in dt.Rows) { DataRow dr2 = (DataRow)obj3; string sql = string.Format(" INSERT INTO XSRKB(ID,ERPID,FEntryID,FNumber,FName,FModel,FAmount,FAuxPrice,FAuxQty,FAuxStockQty,FBatchNo,FBCommitQty,FCommitQty,FNote,FOrderBillNo,FOrderEntryID,FOrderInterID,FPrice,FQty,FStockIDNumber,FStockIDName,FStockQty,FUnitID ,pid) " + "VALUES (SEQ_XS02.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}') ", new object[] { dr2["ERPID"], dr2["FEntryID"], dr2["FNumber"], dr2["FName"], dr2["FModel"], dr2["FAmount"], dr2["FAuxPrice"], dr2["FAuxQty"], dr2["FAuxStockQty"], dr2["FBatchNo"], dr2["FBCommitQty"], dr2["FCommitQty"], dr2["FNote"], dr2["FOrderBillNo"], dr2["FOrderEntryID"], dr2["FOrderInterID"], dr2["FPrice"], dr2["FQty"], dr2["FStockIDNumber"], dr2["FStockIDName"], dr2["FStockQty"], dr2["FUnitID"],mid }); SQLStringListT.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringListT); } } else { #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } // 构建删除SQL语句 string deleteSql = $"DELETE FROM XSRKA WHERE ERPID IN ('{string.Join("','", IDList)}')"; _sqlHelper.ExecuteNonQuery(deleteSql); string deleteSql2 = $"DELETE FROM XSRKB WHERE PID IN ('{string.Join("','", IDList)}')"; _sqlHelper.ExecuteNonQuery(deleteSql2); #endregion } } result = true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; result = false; } } return result; } private bool TB_ERPTOMES_XSCK(DataSet ds, string operatype, ref string ErrorMsg) { List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); string mid = ""; string dtName = ""; bool flag = ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0; bool result; if (flag) { ErrorMsg = "生成数据表失败"; result = false; } else { try { foreach (object obj in ds.Tables) { DataTable dt = (DataTable)obj; dtName = dt.TableName; IDList.Clear(); SQLStringList.Clear(); SQLStringListT.Clear(); bool flag2 = operatype == "INSERT" || operatype == "UPDATE"; if (flag2) { bool flag3 = dt.TableName == "ERPXSCKA"; if (flag3) { foreach (object obj2 in dt.Rows) { DataRow dr = (DataRow)obj2; //2025-01-22 修改审核字段 string FDOCUMENTSTATUS = dr["FDOCUMENTSTATUS"].ToString(); if (FDOCUMENTSTATUS == "C") { mid = dr["ERPID"].ToString(); string sqlT = string.Format("SELECT count(*) cou FROM XSCKA WHERE ERPID='{0}'", dr["ERPID"]); int c = Convert.ToInt32(this._sqlHelper.GetSingle(sqlT)); bool flag4 = c != 0; string SQLF = string.Format("DELETE FROM XSCKA WHERE ERPID='{0}'", dr["ERPID"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM XSCKB WHERE PID='{0}'", dr["ERPID"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); string sql = string.Format(" INSERT INTO XSCKA(ID,FBillerID,FBillNo,FCheckerID ,FCheckDate,FDeptNumber,FDeptName,FCustIDNumber,FCustIDName,FEMPNumber,FEMPName,ERPID,TB_TIME,FDOCUMENTSTATUS) " + "VALUES (SEQ_XS03.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}',sysdate,'{11}') ", new object[] { dr["FBillerID"], dr["FBillNo"], dr["FCheckerID"], dr["FCheckDate"], dr["FDeptNumber"], dr["FDeptName"], dr["FCustIDNumber"], dr["FCustIDName"], dr["FEMPNumber"], dr["FEMPName"], dr["ERPID"], dr["FDOCUMENTSTATUS"] }); SQLStringList.Add(sql); this._sqlHelper.ExecuteSqlTran(SQLStringList); } else { string SQLF = string.Format("DELETE FROM XSCKA WHERE ERPID='{0}'", dr["ERPID"]); int B = this._sqlHelper.ExecuteNonQuery(SQLF); string SQLD = string.Format("DELETE FROM XSCKB WHERE PID='{0}'", dr["ERPID"]); int D = this._sqlHelper.ExecuteNonQuery(SQLD); } } } bool flag5 = dt.TableName == "ERPXSCKB"; if (flag5) { foreach (object obj3 in dt.Rows) { DataRow dr2 = (DataRow)obj3; string sql = string.Format(" INSERT INTO XSCKB(ID,ERPID,FEntryID,FNumber,FName,FModel,FAmount,FAuxPrice,FAuxQty,FAuxStockQty,FBatchNo,FBCommitQty,FCommitQty,FNote,FOrderBillNo,FOrderEntryID,FOrderInterID,FPrice,FQty,FStockIDNumber,FStockIDName,FStockQty,FUnitID,pid,FH_TIME) " + "VALUES (SEQ_XS04.nextval,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}') ", new object[] { dr2["ERPID"], dr2["FEntryID"], dr2["FNumber"], dr2["FName"], dr2["FModel"], dr2["FAmount"], dr2["FAuxPrice"], dr2["FAuxQty"], dr2["FAuxStockQty"], dr2["FBatchNo"], dr2["FBCommitQty"], dr2["FCommitQty"], dr2["FNote"], dr2["FOrderBillNo"], dr2["FOrderEntryID"], dr2["FOrderInterID"], dr2["FPrice"], dr2["FQty"], dr2["FStockIDNumber"], dr2["FStockIDName"], dr2["FStockQty"], dr2["FUnitID"],mid,dr2["FDELIVERYDATE"] }); SQLStringListT.Add(sql); } this._sqlHelper.ExecuteSqlTran(SQLStringListT); } } else { #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } // 构建删除SQL语句 string deleteSql = $"DELETE FROM XSCKA WHERE ERPID IN ('{string.Join("','", IDList)}')"; _sqlHelper.ExecuteNonQuery(deleteSql); string deleteSql2 = $"DELETE FROM XSCKB WHERE PID IN ('{string.Join("','", IDList)}')"; _sqlHelper.ExecuteNonQuery(deleteSql2); #endregion } } result = true; } catch (Exception ex) { ErrorMsg = "[" + dtName + "]" + ex.Message; result = false; } } return result; } #region 28.MesToErpFormal(ERP正式账套同步推送) bool MesToErp(DataRow dr, ref string ErrorMsg) /// /// MesToErpFormal(同步推送) /// /// /// 执行类型 /// 错误说明 /// private bool MesToErpFormal(DataRow dr, ref string ErrorMsg) { try { string task_name = dr["task_name"].ToString(); string descript = dr["descript"].ToString(); string create_time = dr["create_time"].ToString(); string creator = dr["creator"].ToString(); string operatype = dr["operatype"].ToString(); string source_table = dr["source_table"].ToString(); string target_table = dr["target_table"].ToString(); string data = dr["data"].ToString(); string data_inserted = dr["data_inserted"].ToString(); string data_deleted = dr["data_deleted"].ToString(); WebReference.WebService1 ws = new WebReference.WebService1(); string res = ws.mesToErpInfoFormal(task_name, descript, create_time, creator, operatype, data, data_inserted, "NEW", ""); // string res = ws.GetJsonByMes(task_name, descript, create_time, creator, operatype, source_table, target_table, data, data_inserted, data_deleted); if (res.Contains("成功")) return true; else { ErrorMsg = res; return false; } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } #endregion private bool TB_ERPTOMES_UNITCHANGE(DataSet ds, string operatype, ref string ErrorMsg, DataRow ddr) { string sql = ""; string sqlL = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } //处理前判断是否存在 // operatype = DataIsInDB("INVMBA", "ERPID", string.Join("','", IDList), "") ? "UPDATE" : "INSERT"; } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_UNIT ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE MES_UNIT WHERE ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO MES_UNIT(ID,OLDUNIT,NEWUNIT,OLDQTY,NEWQTY,CREATE_DATE,CREATE_BY,LASTUPDATE_DATE,LASTUPDATE_BY,COMPANY,FACTORY,MEMO) VALUES ('{0}','{1}','{2}','{3}','{4}','{4}','{5}','{6}','{7}','{8}',1000,1000,'{9}') ", dr["ERPID"], dr["IUC001"], dr["IUC002"], dr["IUC003"], dr["IUC004"], dr["IUC006"], dr["IUC005"], dr["IUC006"], dr["IUC005"], dr["IUC007"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql = string.Format(@" update MES_UNIT set ID='{0}', OLDUNIT='{1}', NEWUNIT='{2}', OLDQTY='{3}', NEWQTY='{4}', CREATE_DATE='{5}', CREATE_BY='{6}', LASTUPDATE_DATE='{7}', LASTUPDATE_BY='{8}', COMPANY=1000, FACTORY=1000, MEMO='{9}' where ID='{0}' ", dr["ERPID"], dr["IUC001"], dr["IUC002"], dr["IUC003"], dr["IUC004"], dr["IUC006"], dr["IUC005"], dr["IUC006"], dr["IUC005"], dr["IUC007"]); SQLStringListT.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from MES_UNIT where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } public class kcjson { public string FormId { get; set; } public string FieldKeys { get; set; } //public ArrayList FilterString { get; set; } public String FilterString { get; set; } public string OrderString { get; set; } public int TopRowCount { get; set; } public int StartRow { get; set; } public int Limit { get; set; } public string SubSystemId { get; set; } } public class bjjson { public string Left { get; set; } public string FieldName { get; set; } public string Compare { get; set; } public string Value { get; set; } public string Right { get; set; } public string Logic { get; set; } } private bool TB_ERPTOMES_JSKC1(DataSet ds, string operatype, ref string errorMsg) { ArrayList SQLStringList = new ArrayList(); DataTable dt = ds.Tables[0]; string sql = ""; List> inventoryData; StringBuilder Info = new StringBuilder(); String SQL = ""; foreach (DataRow dr in dt.Rows) { try { // 使用 K3CloudApiClient 初始化 K3CloudApiClient client = new K3CloudApiClient("http://192.168.0.40/k3cloud/"); var loginResult = client.ValidateLogin("64c5000ed94a48", "沈子博", "Ss123123@", 2052); var resultType = JObject.Parse(loginResult)["LoginResultType"].Value(); // 登录成功才继续 if (resultType == 1) { string PD1 = (string)dr["ITEM_NO"]; string PD2 = (string)dr["CKBM"]; var bj_json1 = new bjjson() { Left = "(", FieldName = "fmaterialid", Compare = "=", Value = PD1, Right = ")", Logic = "0" }; var bj_json2 = new bjjson() { Left = "(", FieldName = "fstockid", Compare = "=", Value = PD2, Right = ")", Logic = "0" }; string bjString1 = "(FStockLocId.FF100001.FNumber='MES1' or FStockLocId.FF100002.FNumber='MES1' or FStockLocId.FF100003.FNumber='MES1' or FStockLocId.FF100004.FNumber='MES1' or FStockLocId.FF100006.FNumber='MES1' or FStockLocId.FF100008.FNumber='MES1' or FStockLocId.FF100009.FNumber='MES1' or FStockLocId.FF100010.FNumber='MES1' or FStockLocId.FF100012.FNumber='MES1' or FStockLocId.FF100013.FNumber='MES1') "; string bjString2 = ""; if (PD1 != "" && PD2 == "") { bjString1 = bjString1 + "and fmaterialid.Fnumber='" + PD1 + "'"; } if (PD2 != "" && PD1 == "") { bjString1 = bjString1 + "and fstockid='" + PD2 + "'"; } if (PD1 != "" && PD2 != "") { bjString1 = bjString1 + "and fmaterialid.Fnumber='" + PD1 + "'and fstockid='" + PD2 + "'"; } var bj1 = bjString1 + bjString2; //string BJSTRING3= ArrayList list = new ArrayList(); list.Add(bj1); var kc_json = new kcjson() { /* FormId = "STK_Inventory", FieldKeys = "fmaterialid, fbaseqty, fstockid, fbaseunitid, fstockunitid,fstocklocid", FilterString = list, OrderString = "", TopRowCount = 0, StartRow = 0, Limit = 100000, SubSystemId = ""*/ FormId = "STK_Inventory", FieldKeys = "fmaterialid, fbaseqty, fstockid, fbaseunitid, fstockunitid,fstocklocid,FStockOrgId,fmaterialid.Fnumber,FStockLocId.FF100001.FNumber,FStockLocId.FF100002.FNumber,FStockLocId.FF100003.FNumber,FStockLocId.FF100004.FNumber,FStockLocId.FF100006.FNumber,FStockLocId.FF100008.FNumber,FStockLocId.FF100009.FNumber,FStockLocId.FF100010.FNumber,FStockLocId.FF100012.FNumber,FStockLocId.FF100013.FNumber", FilterString = bjString1, OrderString = "", TopRowCount = 0, StartRow = 0, Limit = 100000, SubSystemId = "" }; /*var kc_json2 = new kcjson() { FormId = "STK_Inventory", FieldKeys = "fmaterialid, fbaseqty, fstockid, fbaseunitid, fstockunitid,fstocklocid", FilterString = list, OrderString = "", TopRowCount = 0, StartRow = 20000, Limit = 100000, SubSystemId = "" FormId= "STK_Inventory", FieldKeys= "fmaterialid, fbaseqty, fstockid, fbaseunitid, fstockunitid,fstocklocid,FStockLocId.FF100001.FNumber,FStockLocId.FF100002.FNumber", FilterString= "FStockLocId.FF100001.FNumber='MES1' or FStockLocId.FF100002.FNumber='MES1' ", OrderString = "", TopRowCount= 0, StartRow=0, Limit =100000, SubSystemId= "" }; */ string jsonString = JsonConvert.SerializeObject(kc_json); var BJ = jsonString.Replace("\\", string.Empty); var BJ1 = BJ.Replace("[\"", "["); var BJ2 = BJ1.Replace("\"]", "]"); // 调用金蝶WebAPI获取即时库存数据 inventoryData = client.ExecuteBillQuery(BJ2); if (inventoryData.Count != 0) { //对返回结果进行解析和校验,这里使用的是JsonPatch var resultJObject = JArray.Parse(JsonConvert.SerializeObject(inventoryData)); for (int i = 0; i < inventoryData.Count; i++) { //1/22 /* string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_ERP_KC where ID='{0}' ", inventoryData[i][3]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE MES_ERP_KC WHERE ID='{0}'", inventoryData[i][3]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } }//*/ sql = string.Format( @"INSERT INTO MES_ERP_KC(CPBM, SL, CKBM, DWBM, DW,ID,GXSJ,CW,ZZ,bm) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}',KC.NEXTVAL,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'{5}','{6}','{7}')", inventoryData[i][0], inventoryData[i][1], inventoryData[i][2], inventoryData[i][3], inventoryData[i][4], inventoryData[i][5], inventoryData[i][6], inventoryData[i][7]); SQLStringList.Add(sql); // 将生成的SQL语句添加到列表中 if (SQLStringList.Count > 500) { _sqlHelper.ExecuteSqlTran(SQLStringList); SQLStringList.Clear(); } } if (SQLStringList.Count > 0) { return _sqlHelper.ExecuteSqlTran(SQLStringList); } } // 控制批量插入大小 } else { errorMsg = "登录金蝶系统失败"; return false; } } catch (Exception e) { errorMsg = e.Message; return false; } } return true; } private bool TB_ERPTOMES_SYS(DataSet ds, string operatype, ref string ErrorMsg) { string sql = ""; string sqlL = ""; //用来拼ID集合 List IDList = new List(); ArrayList SQLStringList = new ArrayList(); ArrayList SQLStringListT = new ArrayList(); if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { ErrorMsg = "生成数据表失败"; return false; } if (operatype == "INSERT" || operatype == "UPDATE") { foreach (DataRow dr in ds.Tables[0].Rows) { IDList.Add(dr["ERPID"].ToString()); } } try { DataTable dt = ds.Tables[0]; if (operatype == "INSERT") { #region INSERT foreach (DataRow dr in dt.Rows) { //插入前先检查是否存在相同数据,若存在则删除 string sqlT = ""; string SQLF = ""; sqlT = string.Format(@"SELECT count(*) cou FROM MES_UNIT ID='{0}' ", dr["ERPID"]); //int a = _sqlHelper.ExecuteNonQuery(sqlT); int c = Convert.ToInt32(_sqlHelper.GetSingle(sqlT)); if (c != 0) { try { SQLF = string.Format(@"DELETE MES_UNIT WHERE ID='{0}'", dr["ERPID"]); int B = _sqlHelper.ExecuteNonQuery(SQLF); } catch (Exception) { return false; } } IDList.Add(dr["ERPID"].ToString()); sql = string.Format(@" INSERT INTO MES_UNIT(ID,OLDUNIT,NEWUNIT,OLDQTY,NEWQTY,CREATE_DATE,CREATE_BY,LASTUPDATE_DATE,LASTUPDATE_BY,COMPANY,FACTORY,MEMO) VALUES ('{0}','{1}','{2}','{3}','{4}','{4}','{5}','{6}','{7}','{8}',1000,1000,'{9}') ", dr["ERPID"], dr["IUC001"], dr["IUC002"], dr["IUC003"], dr["IUC004"], dr["IUC006"], dr["IUC005"], dr["IUC006"], dr["IUC005"], dr["IUC007"]); SQLStringList.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringList); #endregion } else if (operatype == "UPDATE") { //ErrorMsg = "执行修改数据表"; #region UPDATE foreach (DataRow dr in dt.Rows) { sql = string.Format(@" update MES_UNIT set ID='{0}', OLDUNIT='{1}', NEWUNIT='{2}', OLDQTY='{3}', NEWQTY='{4}', CREATE_DATE='{5}', CREATE_BY='{6}', LASTUPDATE_DATE='{7}', LASTUPDATE_BY='{8}', COMPANY=1000, FACTORY=1000, MEMO='{9}' where ID='{0}' ", dr["ERPID"], dr["IUC001"], dr["IUC002"], dr["IUC003"], dr["IUC004"], dr["IUC006"], dr["IUC005"], dr["IUC006"], dr["IUC005"], dr["IUC007"]); SQLStringListT.Add(sql); } return _sqlHelper.ExecuteSqlTran(SQLStringListT); #endregion } else //DELETE { //ErrorMsg = "执行删除数据表"; #region DELETE foreach (DataRow dr in dt.Rows) { IDList.Add(dr["ERPID"].ToString()); } sql = string.Format(@" delete from MES_UNIT where ERPID in ('{0}'); ", string.Join("','", IDList)); return _sqlHelper.ExecuteNonQuery(sql) > 0; #endregion } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } } } }