public void UpdateFormula(Entity.Formula formula, DataTable dtDosage, DataTable dtPacking, DataTable dtOperStandard, OperLog operLog) { using (SqlConnection conn = ConnectionPool.BorrowConnection()) { //conn.Open(); SqlTransaction trans = conn.BeginTransaction(); try { Entity.Formula fold = EntityMapping.Get(formula, trans) as Entity.Formula; if (fold == null) { throw new Exception("未找到配方"); } fold.SynchronizeModifyValue(formula); fold.IsUse = formula.IsUse; EntityMapping.Update(fold, trans); DataTable dtGoods = SqlHelper.ExecuteDataTable(trans, CommandType.Text, "select * from tbGoods where vcGoodsID='" + formula.cnvcProductCode + "'"); if (dtGoods.Rows.Count == 1 && formula.cnvcProductType == "FINALPRODUCT") { Goods goods = new Goods(dtGoods.Rows[0]); //goods.vcGoodsID = formula.cnvcProductCode; if (goods.vcGoodsName != formula.cnvcProductName) { goods.vcSpell = Helper.GetChineseSpell(formula.cnvcProductName); } goods.vcGoodsName = formula.cnvcProductName; goods.vcComments = formula.IsUse ? "1" : "0"; EntityMapping.Update(goods, trans); } DataTable dtHavedDosage = SqlHelper.ExecuteDataTable(trans, CommandType.Text, "select * from tbDosage where cnvcProductCode='" + formula.cnvcProductCode + "'"); DataTable dtHavedOperStandard = SqlHelper.ExecuteDataTable(trans, CommandType.Text, "select * from tbOperStandard where cnvcProductCode='" + formula.cnvcProductCode + "'"); //有的更新,没的添加 foreach (DataRow drDosage in dtDosage.Rows) { Dosage newdosage = new Dosage(drDosage); DataRow[] dr = dtHavedDosage.Select("cnvcCode='" + newdosage.cnvcCode + "'"); if (dr.Length > 0) { Dosage dosage = new Dosage(dr[0]); dosage.cnnCount = newdosage.cnnCount; dosage.cnnSum = newdosage.cnnSum; EntityMapping.Update(dosage, trans); } else { EntityMapping.Create(newdosage, trans); } } foreach (DataRow drPacking in dtPacking.Rows) { Dosage newdosage = new Dosage(drPacking); DataRow[] dr = dtHavedDosage.Select("cnvcCode='" + newdosage.cnvcCode + "'"); if (dr.Length > 0) { Dosage dosage = new Dosage(dr[0]); dosage.cnnCount = newdosage.cnnCount; dosage.cnnSum = newdosage.cnnSum; EntityMapping.Update(dosage, trans); } else { EntityMapping.Create(newdosage, trans); } } foreach (DataRow drDosage in dtHavedDosage.Rows) { Dosage dosage = new Dosage(drDosage); if (dosage.cnvcProductType == "Pack") { DataRow[] dr = dtPacking.Select("cnvcCode='" + dosage.cnvcCode + "'"); if (dr.Length == 0) { EntityMapping.Delete(dosage, trans); } } else { DataRow[] dr = dtDosage.Select("cnvcCode='" + dosage.cnvcCode + "'"); if (dr.Length == 0) { EntityMapping.Delete(dosage, trans); } } } foreach (DataRow drOperStandard in dtOperStandard.Rows) { OperStandard newoperStandard = new OperStandard(drOperStandard); DataRow[] dr = dtHavedOperStandard.Select("cnnSort=" + newoperStandard.cnnSort.ToString()); if (dr.Length > 0) { OperStandard operStandard = new OperStandard(dr[0]); operStandard.cnvcKey = newoperStandard.cnvcKey; operStandard.cnvcStandard = newoperStandard.cnvcStandard; EntityMapping.Update(operStandard, trans); } else { EntityMapping.Create(newoperStandard, trans); } } foreach (DataRow drOperStandard in dtHavedOperStandard.Rows) { OperStandard operStandard = new OperStandard(drOperStandard); DataRow[] dr = dtOperStandard.Select("cnnSort=" + operStandard.cnnSort.ToString()); if (dr.Length == 0) { EntityMapping.Delete(operStandard, trans); } } string strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString(); DateTime dtSysTime = DateTime.Parse(strSysTime); operLog.cndOperDate = dtSysTime; operLog.cnvcComments = "配方编码:" + formula.cnvcProductCode; EntityMapping.Create(operLog, trans); trans.Commit(); } catch (SqlException sex) { trans.Rollback(); LogAdapter.WriteDatabaseException(sex); throw sex; } catch (Exception ex) { trans.Rollback(); LogAdapter.WriteFeaturesException(ex); throw ex; } finally { ConnectionPool.ReturnConnection(conn); } } }
public void AddFormula(Entity.Formula formula, DataTable dtDosage, DataTable dtPacking, DataTable dtOperStandard, OperLog operLog) { using (SqlConnection conn = ConnectionPool.BorrowConnection()) { //conn.Open(); SqlTransaction trans = conn.BeginTransaction(); try { formula.cnvcPortionUnit = "份"; EntityMapping.Create(formula, trans); DataTable dtGoods = SqlHelper.ExecuteDataTable(trans, CommandType.Text, "select * from tbGoods where vcGoodsID='" + formula.cnvcProductCode + "'"); if (dtGoods.Rows.Count == 0 && formula.cnvcProductType == "FINALPRODUCT") { Goods goods = new Goods(); goods.vcGoodsID = formula.cnvcProductCode; goods.vcGoodsName = formula.cnvcProductName; goods.vcSpell = Helper.GetChineseSpell(formula.cnvcProductName); goods.iIgValue = -1; goods.vcComments = formula.IsUse ? "1" : "0"; EntityMapping.Create(goods, trans); } foreach (DataRow drDosage in dtDosage.Rows) { Dosage dosage = new Dosage(drDosage); EntityMapping.Create(dosage, trans); } foreach (DataRow drPacking in dtPacking.Rows) { Dosage dosage = new Dosage(drPacking); EntityMapping.Create(dosage, trans); } foreach (DataRow drOperStandard in dtOperStandard.Rows) { OperStandard operStandard = new OperStandard(drOperStandard); EntityMapping.Create(operStandard, trans); } string strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString(); DateTime dtSysTime = DateTime.Parse(strSysTime); operLog.cndOperDate = dtSysTime; operLog.cnvcComments = "配方编码:" + formula.cnvcProductCode; EntityMapping.Create(operLog, trans); trans.Commit(); } catch (SqlException sex) { trans.Rollback(); LogAdapter.WriteDatabaseException(sex); throw sex; } catch (Exception ex) { trans.Rollback(); LogAdapter.WriteFeaturesException(ex); throw ex; } finally { ConnectionPool.ReturnConnection(conn); } } }