void Operation_Add(DepotManagementDataContext ctx, int goodsID, Dictionary <string, int> DicNumberOfProduct, decimal safeStockCount) { bool isInsert = false; var varCBOM = from a in ctx.CG_CBOM where a.GoodsID == goodsID select a; if (varCBOM.Count() != 0) { throw new Exception("此物品已存在无法添加"); } foreach (KeyValuePair <string, int> item in DicNumberOfProduct) { CG_CBOM lnqCBOM = new CG_CBOM(); lnqCBOM.Edition = item.Key; lnqCBOM.GoodsID = goodsID; lnqCBOM.Usage = Convert.ToDecimal(item.Value); if (lnqCBOM.Usage != 0) { isInsert = true; ctx.CG_CBOM.InsertOnSubmit(lnqCBOM); } } ctx.SubmitChanges(); if (!isInsert) { throw new Exception("此物品未设置任何【基数】"); } else { S_SafeStock lnqSafe = new S_SafeStock(); lnqSafe.GoodsID = goodsID; lnqSafe.SafeStockCount = safeStockCount; ctx.S_SafeStock.InsertOnSubmit(lnqSafe); } ctx.SubmitChanges(); }
/// <summary> /// 批量插入数据 /// </summary> /// <param name="dtSource">数据源列表</param> public void BatchInsertCGBom(DataTable dtSource) { if (dtSource == null || dtSource.Rows.Count == 0) { throw new Exception("数据集无效"); } DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { foreach (DataRow dr in dtSource.Rows) { bool isDelete = false; int goodsID = UniversalFunction.GetGoodsID(dr["图号型号"].ToString(), dr["物品名称"].ToString(), dr["规格"].ToString()); CG_CBOM bom = new CG_CBOM(); bom.Edition = dr["总成型号"].ToString(); if (goodsID != 0) { bom.GoodsID = goodsID; } else { throw new Exception("图号:" + dr["图号型号"].ToString() + " 名称:" + dr["物品名称"].ToString() + " 规格:" + dr["规格"].ToString() + " 不存在于系统中"); } if (dr["基数"] == null || Convert.ToInt32(dr["基数"]) == 0) { throw new Exception("图号:" + dr["图号型号"].ToString() + " 名称:" + dr["物品名称"].ToString() + " 规格:" + dr["规格"].ToString() + " 基数不符合要求,请重新检查"); } else { bom.Usage = Convert.ToDecimal(dr["基数"]); } //采购BOM var varData = from a in ctx.CG_CBOM where a.GoodsID == bom.GoodsID && a.Edition == bom.Edition select a; ctx.CG_CBOM.DeleteAllOnSubmit(varData); ctx.SubmitChanges(); if (bom.Usage == 0) { var varData1 = from a in ctx.CG_CBOM where a.GoodsID == bom.GoodsID select a; if (varData1.Count() == 0) { isDelete = true; } } else { ctx.CG_CBOM.InsertOnSubmit(bom); } ctx.SubmitChanges(); //安全库存 var varSaftStock = from a in ctx.S_SafeStock where a.GoodsID == goodsID select a; ctx.S_SafeStock.DeleteAllOnSubmit(varSaftStock); ctx.SubmitChanges(); if (!isDelete) { S_SafeStock saftStock = new S_SafeStock(); saftStock.GoodsID = goodsID; saftStock.SafeStockCount = Convert.ToDecimal(dr["安全库存"]); ctx.S_SafeStock.InsertOnSubmit(saftStock); } ctx.SubmitChanges(); //供应商配额 var varProviderPack = from a in ctx.B_GoodsLeastPackAndStock where a.GoodsID == goodsID select a; if (isDelete) { ctx.B_GoodsLeastPackAndStock.DeleteAllOnSubmit(varProviderPack); } ctx.SubmitChanges(); //采购公式 var varProcurement = from a in ctx.CG_ProcurementPlan where a.GoodsID == goodsID select a; if (isDelete) { ctx.CG_ProcurementPlan.DeleteAllOnSubmit(varProcurement); } ctx.SubmitChanges(); } ctx.Transaction.Commit(); } catch (Exception ex) { ctx.Transaction.Rollback(); throw new Exception(ex.Message); } }