/// <summary> /// 保存合并设置 /// </summary> /// <param name="busiNo">业务编号</param> /// <param name="si">Sys_Summary_Item对象</param> /// <returns>DataRowSaveResult</returns> public DataRowSaveResult SaveDB(string busiNo, Sys_Summary_Item si) { byte[] byt = StoreBase.GetBytes(si).Value; DataRow dr = this.FindRow("BusiNo", busiNo); if (dr == null) { dr = this.NewRow(); this.Rows.Add(dr); } dr["UserID"] = Sys_User.m_LoginUserID; dr["BusiNo"] = busiNo; dr["SummaryObject"] = byt; bf_Busi bb = bf_Busis.GetItem("Sys_Summary_Set"); DataRowSaveResult drsr = null; if (dr.RowState == DataRowState.Added) { drsr = bb.DataRowInsert(dr); } if (dr.RowState == DataRowState.Modified) { drsr = bb.DataRowUpdate(dr); } if (drsr.Success) { dr.AcceptChanges(); return(null); } dr.RejectChanges(); return(drsr); }
public static void ClearQueryCache(string busiNo) { try { string queryNo = null; string[] sps = new string[] { "_|_" }; foreach (var key in dicCache.Keys) { if (!key.ToString().StartsWith("GetQueryDataByPageCustFilter_")) { continue; } queryNo = key.ToString().Split(sps, StringSplitOptions.None)[1]; bf_Query query = bf_Querys.GetItem(queryNo); if (query == null) { continue; } bf_Busi busi = bf_Busis.GetItem(busiNo); var flg = false; foreach (bf_Query_Item qi in query.Items) { if (qi.Business.TableNameDB == busi.TableNameDB) { flg = true; break; } } if (flg) { break; } queryNo = null; } if (string.IsNullOrEmpty(queryNo)) { return; } List <object> lstKey = new List <object>(); foreach (var key in dicCache.Keys) { if (!key.ToString().StartsWith("GetQueryDataByPageCustFilter_")) { continue; } if (key.ToString().Split(sps, StringSplitOptions.None)[1] == queryNo) { lstKey.Add(key); } } foreach (var k in lstKey) { Remove(k); } } catch (Exception ex) { LogHelper.Error("ClearQueryCache", ex); } }
/// <summary> /// 检查本表数据是否违反唯一性策略 /// </summary> /// <param name="drsr"></param> /// <param name="bdo"></param> /// <returns></returns> private void DataSave_BeforeCheckBDOUnique(DataRowSaveResult drsr, BDO bdo) { drsr.DataRow = null; DataRow[] drschanged = bdo.Select(null, null, DataViewRowState.Added | DataViewRowState.ModifiedCurrent); if (drschanged.Length == 0) { return; } bf_Busi busi = bdo.Business; db_Object so = busi.db_Object; foreach (string gno in busi.UniqueGroupNos) { List <bf_Busi_Field> bbflist = busi.UniqueFields(gno); if (bbflist.Count == 0) { continue; } string ufText = "", ufText2 = ""; List <string> ufList = new List <string>(); foreach (bf_Busi_Field bbf in bbflist) { if (bbf.DbType == DbType.Binary) { continue; } ufList.Add(bbf.m_Name); ufText += string.Format("+[{0}]", bbf.Caption); if (bbf.VisibleType > 0) { ufText2 += string.Format("+[{0}]", bbf.Caption); } } if (string.IsNullOrEmpty(ufText2) == false) { ufText = ufText2; } ufText = ufText.Substring(1); foreach (DataRow dr in drschanged) { drsr.DataRow = dr; string filter = ""; foreach (bf_Busi_Field bbf in bbflist) { object cellValue = dr[bbf.m_Name]; string compareString = " is null"; if (cellValue != DBNull.Value) { compareString = string.Format("='{0}'", cellValue); } filter += string.Format("and {0}{1} ", bbf.m_Name, compareString); } filter = filter.Substring(4); int cnt = (int)bdo.Compute("Count(ID)", filter); if (cnt == 1) { continue; } string error = string.Format("表[{0}]中\r\n字段{1}违反数据唯一性策略。", busi.Caption, ufText); drsr.ErrorText = error; drsr.Fields = ufList; return; } } }
public static List <BDOs> ToBDOsModel(PostData postData) { //取真实表名 for (int i = 0; i < postData.BusiDatas.Length; i++) { bf_Busi busi = bf_Busis.GetItem(postData.BusiDatas[i].BusiNo); if (busi == null) { continue; } postData.BusiDatas[i].TableName = busi.TableName; busi = bf_Busis.GetItem(postData.BusiDatas[i].ParentBusiNo); if (busi == null) { continue; } postData.BusiDatas[i].ParentTableName = busi.TableName; } //按照表关系转换 List <BDOs> lstDs = new List <BDOs>(); List <string> lstTbInBdos = new List <string>(); for (int i = 0; i < postData.relations.Length; i++) { RelationDTO rel = postData.relations[i]; BDOs BDOS = lstDs.Find((b) => b.DataSetName == rel.parentBusiNo); if (BDOS == null) { BDOs bdos = null; BDO bdoParent = null; foreach (BDOs bds in lstDs) { bdoParent = bds[rel.parentBusiNo]; if (bdoParent != null) { bdos = bds; break; } } if (bdoParent == null) { bdos = new BDOs(rel.parentBusiNo); bdoParent = JsonToBDO(bdos, null, rel.parentBusiNo, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(rel.parentBusiNo)).JsonData); CheckNullValue(bdoParent); bdos.DataSetName = rel.parentBusiNo; } BDO bdoChild = JsonToBDO(bdos, null, rel.name, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.ToUpper().Equals(rel.name.ToUpper())).JsonData); if (bdoParent.Rows.Count == 0) { foreach (DataRow row in bdoChild.Rows) { if (bdoParent.AsEnumerable().FirstOrDefault(f => f[rel.parentCols[0]].Equals(row[rel.childCols[0]])) != null) { continue; } DataRow nr = bdoParent.NewRow(); nr[rel.parentCols[0]] = row.RowState == DataRowState.Deleted?row[rel.childCols[0], DataRowVersion.Original]: row[rel.childCols[0]]; bdoParent.Rows.Add(nr); } bdoParent.AcceptChanges(); } bdoParent.AddChildren(rel.name, bdoChild, rel.parentCols[0], rel.childCols[0]); //CopyRelation(bdos, rel); if (!lstDs.Contains(bdos)) { lstDs.Add(bdos); lstTbInBdos.Add(rel.parentBusiNo); } lstTbInBdos.Add(rel.name); } else { BDO bdo = JsonToBDO(BDOS, null, rel.name, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(rel.name)).JsonData); CheckNullValue(bdo); if (BDOS.MasterBDO.Rows.Count == 0) { foreach (DataRow row in bdo.Rows) { if (BDOS.MasterBDO.AsEnumerable().FirstOrDefault(f => f[rel.parentCols[0]].Equals(row[rel.childCols[0]])) != null) { continue; } DataRow nr = BDOS.MasterBDO.NewRow(); nr[rel.parentCols[0]] = row[rel.childCols[0]]; BDOS.MasterBDO.Rows.Add(nr); } BDOS.MasterBDO.AcceptChanges(); } BDOS.MasterBDO.AddChildren(rel.name, bdo, rel.parentCols[0], rel.childCols[0]); //CopyRelation(BDOS, rel); lstTbInBdos.Add(rel.name); } } //无表关系的单表 foreach (BusiData bd in postData.BusiDatas) { if (!lstTbInBdos.Exists((name) => name == bd.BusiNo)) { BDOs singleBDOs = new BDOs(bd.BusiNo); BDO bdo = JsonToBDO(singleBDOs, null, bd.BusiNo, postData.BusiDatas.AsEnumerable().FirstOrDefault(f => f.BusiNo.Equals(bd.BusiNo)).JsonData); CheckNullValue(bdo); singleBDOs.DataSetName = bd.BusiNo; lstDs.Add(singleBDOs); } } return(lstDs); }