diff --git a/Framework/YLErp.Resources/Dictionary/db_dictionaries.xml b/Framework/YLErp.Resources/Dictionary/db_dictionaries.xml
index a0f9091e..97770296 100644
--- a/Framework/YLErp.Resources/Dictionary/db_dictionaries.xml
+++ b/Framework/YLErp.Resources/Dictionary/db_dictionaries.xml
@@ -30,6 +30,7 @@
+
diff --git a/YLErpDAL/Modules/AppModule/AppUpgrader.cs b/YLErpDAL/Modules/AppModule/AppUpgrader.cs
index edf14f79..ead11cb0 100644
--- a/YLErpDAL/Modules/AppModule/AppUpgrader.cs
+++ b/YLErpDAL/Modules/AppModule/AppUpgrader.cs
@@ -306,17 +306,13 @@ namespace YLErp.Modules.AppModule
//-----------------------------------------------
configService.AddDataIfNotExists("ProjectConfig", "Erp.IsAutoSealAfterGeneratedBook", "false", "bool", "确认书生成时是否自动用印(IsAutoSealAndUploadFiles勾选时生效)");
configService.AddDataIfNotExists("ProjectConfig", "Erp.ReportFileBeginNumber", "0", "int", "报送文件开始编号");
- //-----------------------------------------------
- // 删除不再使用的
- //-----------------------------------------------
- configService.AddDataIfNotExists("ProjectConfig", YLErp.Modules.SwapModule.SwapMarginTemplateConfigService.ConfigName,
- YLErp.Modules.SwapModule.SwapMarginTemplateConfigService.DefaultConfigJson, "text", "互换保证金模板(JSON)");
-
RemoveUnUsed(configService);
}
private static void RemoveUnUsed(InnerAppConfigService configService)
{
+ configService.RemoveData("ProjectConfig", "Trade.SwapMarginTemplateConfig");
+
if (AppManager.Version.Major < 3)
{
configService.RemoveData("ProjectConfig", "Erp.TradeConfirmBookEmailTPL");
@@ -456,6 +452,38 @@ namespace YLErp.Modules.AppModule
}
adminDb.SaveChanges();
+
+ var marginTemplateDictionary = adminDb.Dictionaries.FirstOrDefault(item => item.Name == YLErp.Modules.SwapModule.SwapMarginTemplateConfigService.DictionaryName);
+ if (marginTemplateDictionary == null)
+ {
+ return;
+ }
+
+ var existingNames = adminDb.DictionaryItems
+ .Where(item => item.DictId == marginTemplateDictionary.Id)
+ .Select(item => item.Name)
+ .ToHashSet();
+ var nextIndex = adminDb.DictionaryItems
+ .Where(item => item.DictId == marginTemplateDictionary.Id)
+ .Select(item => item.IndexNum)
+ .DefaultIfEmpty(-1)
+ .Max();
+ foreach (var templateName in YLErp.Modules.SwapModule.SwapMarginTemplateConfigService.InitialTemplateNames)
+ {
+ if (existingNames.Contains(templateName))
+ {
+ continue;
+ }
+
+ adminDb.DictionaryItems.Add(new BaseOUDAL.DictionaryItem
+ {
+ DictId = marginTemplateDictionary.Id,
+ Name = templateName,
+ ShortName = templateName,
+ IndexNum = ++nextIndex
+ });
+ }
+ adminDb.SaveChanges();
}
catch (Exception ex)
{
diff --git a/YLErpDAL/Modules/SwapModule/SwapMarginTemplateConfigService.cs b/YLErpDAL/Modules/SwapModule/SwapMarginTemplateConfigService.cs
index b873dbd1..667670dd 100644
--- a/YLErpDAL/Modules/SwapModule/SwapMarginTemplateConfigService.cs
+++ b/YLErpDAL/Modules/SwapModule/SwapMarginTemplateConfigService.cs
@@ -1,73 +1,32 @@
-using YLErp.Modules.AppModule;
+using BaseOUDAL;
using YLErp.Models;
namespace YLErp.Modules.SwapModule
{
public static class SwapMarginTemplateConfigService
{
- public const string ConfigName = "Trade.SwapMarginTemplateConfig";
+ public const string DictionaryName = "保证金模板名称";
- public const string DefaultConfigJson = @"{
- ""options"": [
- { ""text"": ""授信保证金"", ""value"": ""授信保证金"" },
- { ""text"": ""现金保证金"", ""value"": ""现金保证金"" }
- ],
- ""defaultValue"": ""现金保证金""
-}";
+ public static readonly string[] InitialTemplateNames = { "现金保证金", "授信保证金" };
public static SwapMarginTemplateConfig GetConfig()
{
- var json = AppManager.GetAppConfigValue("ProjectConfig", ConfigName);
- return TryParse(json, out var config, out _) ? config : GetDefaultConfig();
- }
-
- public static bool TryValidate(string json, out string error)
- {
- return TryParse(json, out _, out error);
- }
-
- private static SwapMarginTemplateConfig GetDefaultConfig()
- {
- return JsonHelper.Deserialize(DefaultConfigJson);
- }
-
- private static bool TryParse(string json, out SwapMarginTemplateConfig config, out string error)
- {
- config = null;
- error = null;
-
- try
- {
- config = JsonHelper.Deserialize(json);
- }
- catch (Exception)
- {
- error = "保证金模板配置不是有效的 JSON";
- return false;
- }
-
- var items = config?.options?
- .Where(item => item != null && !string.IsNullOrWhiteSpace(item.Value))
+ using var db = new ErpBaseContext();
+ var dictionaryId = db.Dictionaries
+ .Where(item => item.Name == DictionaryName)
+ .Select(item => item.Id)
+ .FirstOrDefault();
+ var items = db.DictionaryItems
+ .Where(item => item.DictId == dictionaryId && !string.IsNullOrWhiteSpace(item.Name))
+ .OrderBy(item => item.IndexNum)
+ .Select(item => new SelectItem { Text = item.Name, Value = item.Name })
.ToArray();
- if (items == null || items.Length == 0)
- {
- error = "保证金模板配置至少需要一个有效选项";
- return false;
- }
- if (items.Select(item => item.Value).Distinct(StringComparer.OrdinalIgnoreCase).Count() != items.Length)
- {
- error = "保证金模板配置的选项值不能重复";
- return false;
- }
- var defaultValue = config.defaultValue;
- if (!items.Any(item => item.Value == defaultValue))
- {
- error = "保证金模板默认值必须在选项中";
- return false;
- }
- config.options = items;
- return true;
+ return new SwapMarginTemplateConfig
+ {
+ options = items,
+ defaultValue = items.FirstOrDefault()?.Value
+ };
}
}
diff --git a/YLErpWeb/Areas/Admin/Controllers/OtcConfigController.cs b/YLErpWeb/Areas/Admin/Controllers/OtcConfigController.cs
index cc4f6321..dd95f9a2 100644
--- a/YLErpWeb/Areas/Admin/Controllers/OtcConfigController.cs
+++ b/YLErpWeb/Areas/Admin/Controllers/OtcConfigController.cs
@@ -3,7 +3,6 @@ using Org.BouncyCastle.Asn1.Ocsp;
using YLErp.Commons;
using YLErp.Modules.AppModule;
using YLErp.Modules.EodModule.SettlementModule;
-using YLErp.Modules.SwapModule;
using YLErp.Web.App_Start.AppConfig;
using YLErp.Web.Areas.Admin.Models;
@@ -54,11 +53,6 @@ namespace YLErp.Web.Areas.Admin.Controllers
{
value = Uri.UnescapeDataString(value);
}
- if (name == SwapMarginTemplateConfigService.ConfigName
- && !SwapMarginTemplateConfigService.TryValidate(value, out var configError))
- {
- return JsonError(configError);
- }
using (var db = DbContextFactory.GetYLDbContext())
{
var data = db.AppConfig.FirstOrDefault(n => n.PGroup == "ProjectConfig" && n.PName == name);