//2.檢查資料內容 public static void CheckData(DBMoHeader moheader,DBMoItemDetail[] lstItemdetail) { string HPPlantCode = WebConfigurationManager.AppSettings["HPPlantCode"]; if (moheader.Plant != HPPlantCode) { string errMsg = "This Plant :[" + moheader.Plant + "] is not HP Plant Code"; throw new Exception(errMsg); } }
//3.執行DB insert public static void Process(DBMoHeader dbheader, DBMoItemDetail[] moitems, string connectionDB) { string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); try { using (TransactionScope txn = UTL.CreateDbTxn()) { dbheader.IsProduct = "Y"; //檢查 MO 的 Model是否存在於 DockMOMaterialPreFix 設定中。 string DockMoMtlPreFixList = WebConfigurationManager.AppSettings["DockMOMaterialPreFix"]; string[] DockMOMaterialPreFix = DockMoMtlPreFixList.Split(new char[] { ',', ';' }); int stringCnt = 0; for (int i = 0; i < DockMOMaterialPreFix.Length; i++) { if (DockMOMaterialPreFix[i].Trim() != "") { bool b = dbheader.BuildOutMtl.StartsWith(DockMOMaterialPreFix[i]); //not match if (!b) { stringCnt++; } } } if (stringCnt == DockMOMaterialPreFix.Length) { //Model不符合 Docking的Model,則將MO insert 到HP DB //insert MO to HP int dbIndex = 1; SQL.InsertMO(connectionDB, dbIndex, dbheader, "N", "", ""); } else { //Model有符合 Dock的Model,則將MO insert 到Docking DB //insert MO to Docking int dbIndex = 0; SQL.InsertMO(connectionDB, dbIndex, dbheader, "N", "", ""); } txn.Complete(); } } catch (Exception e) { BaseLog.LoggingError(logger, MethodBase.GetCurrentMethod(), e); //SQL.InsertTxnDataLog("Receive", "MoRelease", dbheader.MoNumber, dbheader.BuildOutMtl, dbheader.TxnId,"",e.Message, "Fail",""); throw e; } finally { BaseLog.LoggingEnd(logger, methodName); } }
//1.檢查必要的input parameter public static void ValidateParameter(DBMoHeader header, DBMoItemDetail[] itemList) { string methodName = MethodBase.GetCurrentMethod().Name; BaseLog.LoggingBegin(logger, methodName); try { logger.DebugFormat("Header: \r\n{0}", ObjectTool.ObjectTostring(header)); ObjectTool.CheckNullData(header.NotNullItemList, header); } catch (Exception e) { BaseLog.LoggingError(logger, MethodBase.GetCurrentMethod(), e); throw e; } finally { BaseLog.LoggingEnd(logger, methodName); } }
private static void SetBOMGroup(DBMoItemDetail[] moitems) { int groupNo = 1; for (int i = 0; i < moitems.Length; i++) { if (moitems[i].Group == 0) { moitems[i].Group = groupNo; } else { continue; } for (int k = i + 1; k < moitems.Length; k++) { if (moitems[i].AltGroup == moitems[k].AltGroup && moitems[i].ParentMaterial == moitems[k].ParentMaterial && !string.IsNullOrEmpty(moitems[i].AltGroup ) && !string.IsNullOrEmpty(moitems[k].AltGroup)) { moitems[i].Group = groupNo; moitems[k].Group = groupNo; } } groupNo++; } }
private static SqlParameter[] BuildBOMItemsSqlParams(DBMoItemDetail[] moitems, ref string strSQL,string strOneSQL) { SetBOMGroup(moitems); List<SqlParameter> sqlparams = new List<SqlParameter>(); int i = 0; //items count sqlparams.Add(SQLHelper.CreateSqlParameter("@MO", 20, moitems[0].MoNumber.Trim())); sqlparams.Add(SQLHelper.CreateSqlParameter("@ID", 0)); foreach (DBMoItemDetail item in moitems) { // SAP delete material flag don't insert MoBOM if (string.IsNullOrEmpty( item.Delete)) { string[] col = new string[16]; col[0] = "@MO" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[0], 20, item.MoNumber.Trim())); col[1] = "@PartNo" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[1], 20, item.Component.Trim())); col[2] = "@Qty" + i.ToString(); //double qty = Math.Ceiling(float.Parse(item.ReqQty)); double qty = Math.Ceiling(float.Parse(item.UnitReqQty)); sqlparams.Add(SQLHelper.CreateSqlParameter(col[2], (int)qty)); col[3] = "@Group" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[3], item.Group));//group col[4] = "@TxnId" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[4], 32, item.SerialNumber.Trim())); col[5] = "@MOItem" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[5], 8, item.MoItem.Trim())); col[6] = "@Reservation" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[6], 16, item.Reservation.Trim())); col[7] = "@ResvItem" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[7], 8, item.ResvItem.Trim())); col[8] = "@WithdrawQty" + i.ToString(); double wqty = Math.Ceiling(float.Parse(item.WithdrawQty)); sqlparams.Add(SQLHelper.CreateSqlParameter(col[8], (int)wqty)); col[9] = "@Unit" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[9], 8, item.Unit)); col[10] = "@AltGroup" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[10], 8, item.AltGroup == null ? "" : item.AltGroup.Trim())); col[11] = "@IsPhantom" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[11], 1, item.Pantom == null ? "" : item.Pantom.Trim())); col[12] = "@IsBulk" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[12], 1, item.Bulk == null ? "" : item.Bulk.Trim())); col[13] = "@SpecialStock" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[13], 1, item.SpecialStock == null ? "" : item.SpecialStock.Trim())); col[14] = "@MN" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[14], 16, item.MN == null ? "" : item.MN.Trim())); col[15] = "@ParentMaterial" + i.ToString(); sqlparams.Add(SQLHelper.CreateSqlParameter(col[15], 16, item.ParentMaterial == null ? "" : item.ParentMaterial.Trim())); strSQL = strSQL + string.Format (strOneSQL, col[0], col[1], col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], col[14], col[15]) + "\r\n"; i++; } } return sqlparams.ToArray(); }