1、解决在线开发明细最后一条删除不了的bug

2、解决在线开发明细新增时报主键重复的bug
This commit is contained in:
alex
2023-07-20 14:42:31 +08:00
parent 46e280bf4c
commit bf76a84621

View File

@@ -753,15 +753,15 @@ public class RunService : IRunService, ITransient
dictionarySql.Clear();
tableField.Add("ReturnIdentity", mainId);
dictionarySql.Add("MainTableReturnIdentity", new List<Dictionary<string, object>>() { tableField });
}
}
//modify by zhoukeda 20230428 雪花id返回至传入参数中 开始
if (templateInfo.FormModel.primaryKeyPolicy.Equals(1))
{
dataInput.data.Add("ReturnIdentity", mainId);
}
//modify by zhoukeda 20230428 雪花id返回至传入参数中 结束
// 拼接副表 sql
if (templateInfo.AuxiliaryTableFieldsModelList.Any())
@@ -823,7 +823,11 @@ public class RunService : IRunService, ITransient
{
if (child.Key.Equals("id") && child.Value.IsNotEmptyOrNull())
{
tableField[childPrimary.field] = child.Value;
//modify by ly on 20230720 判断如果子表主键为空的把原主键值赋值给子表主键,直接复制会导致主键重复
if(tableField[childPrimary.field].IsNull() || tableField[childPrimary.field].ToString().IsNullOrEmpty())
{
tableField[childPrimary.field] = child.Value;
}
}
else if (child.Key.IsNotEmptyOrNull() && child.Value.IsNotEmptyOrNull() && child.Value.ToString() != "[]")
{
@@ -986,7 +990,7 @@ public class RunService : IRunService, ITransient
// 查找到该控件数据
List<Dictionary<string, object>>? model = allDataMap[item].ToObject<List<Dictionary<string, object>>>();
if (model != null && model.Count > 0)
if (model != null && model.Count >= 0) //modify by ly on 20230720 将Count>0改为>=0否则最后一条明细数据删除不掉
{
// 利用key去找模板
FieldsModel? fieldsModel = templateInfo.FieldsModelList.Find(f => f.__vModel__ == item);
@@ -1199,7 +1203,7 @@ public class RunService : IRunService, ITransient
var oldTInfo = new TemplateParsingBase(oldFEntity.PropertyJson, oldFEntity.TableJson, (int)oldFEntity.FormType); // 旧模板
var newTInfo = new TemplateParsingBase(newFEntity.PropertyJson, newFEntity.TableJson, (int)newFEntity.FormType); // 新模板
if(oldFEntity.FormType.Equals(1) || newFEntity.FormType.Equals(1))
if (oldFEntity.FormType.Equals(1) || newFEntity.FormType.Equals(1))
{
oldTInfo.AllFieldsModel.ForEach(it =>
{
@@ -1689,7 +1693,7 @@ public class RunService : IRunService, ITransient
Dictionary<string, object>? newChildData = new Dictionary<string, object>();
foreach (KeyValuePair<string, object> item in childmap)
{
if(item.Key.Equals("id")) newChildData[item.Key] = childmap[item.Key];
if (item.Key.Equals("id")) newChildData[item.Key] = childmap[item.Key];
FieldsModel? childFieldsModel = childFieldsModelList.Where(c => c.__vModel__ == item.Key).FirstOrDefault();
if (childFieldsModel != null && childFieldsModel.__vModel__.Equals(item.Key))
{
@@ -1999,7 +2003,7 @@ public class RunService : IRunService, ITransient
/// <returns></returns>
private string GetPrimary(DbLinkEntity link, string MainTableName)
{
// modified by PhilPan
// modified by PhilPan
var keys = _databaseService.GetPrimaries(link, MainTableName);
if (keys.Count < 1) throw Oops.Oh(ErrorCode.D1402); // 主表未设置主键
return keys.First();
@@ -2464,7 +2468,7 @@ public class RunService : IRunService, ITransient
}
// 子表字段为空 查询 处理.
if (templateInfo.ChildTableFields.Any(x => x.Value.Contains(tName + "."))&&(dicList.ToJsonString().Contains("\"ConditionalType\":11") || dicList.ToJsonString().Contains("\"ConditionalType\":14")))
if (templateInfo.ChildTableFields.Any(x => x.Value.Contains(tName + ".")) && (dicList.ToJsonString().Contains("\"ConditionalType\":11") || dicList.ToJsonString().Contains("\"ConditionalType\":14")))
queryOrSqlList.Add(string.Format(" OR ( [{0}] NOT IN ( SELECT {1} FROM {2} ) ) ", primaryKey, templateInfo.AllTable.Where(x => x.table.Equals(tName)).First().tableField, tName));
if (!tableWhere.ContainsKey(tName)) tableWhere.Add(tName, new List<IConditionalModel>() { conList });
@@ -2945,7 +2949,7 @@ public class RunService : IRunService, ITransient
// 多选时为模糊查询
if (model.multiple || model.searchMultiple)
{
var value = item.Value.ToString().Contains("[") ? item.Value.ToObject<List<object>>():new List<object>() { item.Value.ToString() };
var value = item.Value.ToString().Contains("[") ? item.Value.ToObject<List<object>>() : new List<object>() { item.Value.ToString() };
var addItems = new List<KeyValuePair<WhereType, ConditionalModel>>();
for (int i = 0; i < value.Count; i++)
{
@@ -2987,7 +2991,7 @@ public class RunService : IRunService, ITransient
var objIdList = new List<string>();
if (item.Value.ToString().Contains("[")) objIdList = item.Value.ToObject<List<string>>();
else objIdList.Add(item.Value.ToString());
var rIdList = _visualDevRepository.AsSugarClient().Queryable<UserRelationEntity>().Where(x => objIdList.Select(xx=>xx.Replace("--user", string.Empty)).Contains(x.UserId)).Select(x => new { x.ObjectId, x.ObjectType }).ToList();
var rIdList = _visualDevRepository.AsSugarClient().Queryable<UserRelationEntity>().Where(x => objIdList.Select(xx => xx.Replace("--user", string.Empty)).Contains(x.UserId)).Select(x => new { x.ObjectId, x.ObjectType }).ToList();
rIdList.ForEach(x =>
{
if (x.ObjectType.Equals("Organize"))
@@ -3193,7 +3197,7 @@ public class RunService : IRunService, ITransient
var add = new KeyValuePair<WhereType, ConditionalModel>(i == 0 ? WhereType.And : WhereType.Or, new ConditionalModel
{
FieldName = item.Key,
ConditionalType = model.multiple ? ConditionalType.Like: ConditionalType.Equal,
ConditionalType = model.multiple ? ConditionalType.Like : ConditionalType.Equal,
FieldValue = model.multiple ? value[i].ToJsonString() : value[i].ToString()
});
addItems.Add(add);
@@ -3317,7 +3321,7 @@ public class RunService : IRunService, ITransient
conModels.Add(new ConditionalModel { FieldName = item.Key, ConditionalType = ConditionalType.In, FieldValue = values });
}
else
else
{
conModels.Add(new ConditionalCollections()
{
@@ -3527,7 +3531,7 @@ public class RunService : IRunService, ITransient
dataRuleConditionalList = _visualDevRepository.AsSugarClient().Utilities.JsonToConditionalModels(pList.ToJsonString());
dataRuleConditionalList = GetIConditionalModelListByTableName(dataRuleConditionalList, item.Key);
var json = dataRuleConditionalList.ToJsonString().Replace(item.Key + ".", string.Empty);
dataRuleConditionalList= _visualDevRepository.AsSugarClient().Utilities.JsonToConditionalModels(json);
dataRuleConditionalList = _visualDevRepository.AsSugarClient().Utilities.JsonToConditionalModels(json);
}
}
@@ -3875,7 +3879,7 @@ public class RunService : IRunService, ITransient
{
Console.WriteLine(item.Value);
Console.WriteLine(item.Key.Replace("jnpf_searchType_equals_", ""));
if (item.Key.Contains("jnpf_searchType_equals_")) resList = resList.Where(x => x[item.Key.Replace("jnpf_searchType_equals_","")].ToString().Equals(item.Value)).ToList();
if (item.Key.Contains("jnpf_searchType_equals_")) resList = resList.Where(x => x[item.Key.Replace("jnpf_searchType_equals_", "")].ToString().Equals(item.Value)).ToList();
else resList = resList.Where(x => x[item.Key].ToString().Contains(item.Value)).ToList();
}
}