فهرست منبع

1.【web】完成定价管理-个人定价页面
2. 将操作日志统一放到_logDatabase

xuan.wang 8 ماه پیش
والد
کامیت
eb12a39d94

+ 14 - 0
AIPlatform.Protocol/Services/IAdminService.cs

@@ -1887,6 +1887,20 @@ namespace AIPlatform.Protocol.Services
         /// <returns></returns>
         Task<List<IndividualPrice>> GetIndividualPricesAsync(long sessionId, long organizationId, DataProcessingType type);
 
+        /// <summary>
+        /// 新增个体定价
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        Task CreateIndividualPriceAsync(long sessionId, IndividualPrice item);
+
+        /// <summary>
+        /// 更新个体定价
+        /// </summary>
+        /// <param name="price"></param>
+        /// <returns></returns>
+        Task UpdateIndividualPriceAsync(long sessionId, long id, double price);
+
         /// <summary>
         /// 获取个体系数
         /// </summary>

+ 19 - 19
aipadmin/AdminManager.cs

@@ -2384,25 +2384,25 @@ namespace aipadmin
             return await ServerProxy.AdminService.GetIndividualPricesAsync(_session.Id, organizationId, type);
         }
 
-        ///// <summary>
-        ///// 新增个体定价
-        ///// </summary>
-        ///// <param name="item"></param>
-        ///// <returns></returns>
-        //public async Task CreateIndividualPriceAsync(IndividualPrice item)
-        //{
-        //    await ServerProxy.AdminService.CreateIndividualPriceAsync(_session.Id, item);
-        //}
-
-        ///// <summary>
-        /////个体定价
-        ///// </summary>
-        ///// <param name="item"></param>
-        ///// <returns></returns>
-        //public async Task UpdateIndividualPriceAsync(long id)
-        //{
-        //    await ServerProxy.AdminService.UpdateIndividualPriceAsync(_session.Id, id);
-        //}
+        /// <summary>
+        /// 新增个体定价
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public async Task CreateIndividualPriceAsync(IndividualPrice item)
+        {
+            await ServerProxy.AdminService.CreateIndividualPriceAsync(_session.Id, item);
+        }
+
+        /// <summary>
+        /// 新个体定价
+        /// </summary>
+        /// <param name="price"></param>
+        /// <returns></returns>
+        public async Task UpdateIndividualPriceAsync(long id, double price)
+        {
+            await ServerProxy.AdminService.UpdateIndividualPriceAsync(_session.Id, id, price);
+        }
 
         /// <summary>
         /// 获取个体系数

+ 14 - 23
aipmgr/Pages/IndividualPrices.razor

@@ -15,37 +15,28 @@
             <th colspan="5"><div class="table-cell">难度等级</div></th>
         </tr>
         <tr>
-            <th><div class="table-cell">1级</div></th>
-            <th><div class="table-cell">2级</div></th>
-            <th><div class="table-cell">3级</div></th>
-            <th><div class="table-cell">4级</div></th>
-            <th><div class="table-cell">5级</div></th>
-         @*    @foreach (DifficultyLevel difficultyLevel in Enum.GetValues(typeof(DifficultyLevel)))
+            @foreach (DifficultyLevel difficultyLevel in Enum.GetValues(typeof(DifficultyLevel)))
             {
-               
-            } *@
+                <th><div class="table-cell">@difficultyLevel.ToDisplayName()</div></th>
+            }
         </tr>
     </MultiHeaderTemplate>
     <TableColumns>
         <TableColumn @bind-Field="@context.AccountLevel" Filterable="true" />
-        @if (context.PriceItems != null)
-        {
-            foreach (var priceItem in context.PriceItems)
-            @* foreach (DifficultyLevel difficultyLevel in Enum.GetValues(typeof(DifficultyLevel)))
+        @foreach (DifficultyLevel difficultyLevel in Enum.GetValues(typeof(DifficultyLevel)))
         {
-        var priceItem = context.PriceItems.FirstOrDefault(x => x.DifficultyLevel == difficultyLevel);
-        if (priceItem != null) *@
-            {
-                <TableColumn @bind-Field="priceItem.Price" Filterable="true">
-                    <Template Context="value">
-                        @if (value != null)
+            <TableColumn @bind-Field="@context.PriceItems" Filterable="true">
+                <Template Context="value">
+                    @if (value != null)
+                    {
+                        var subItem = value.Row.PriceItems.FirstOrDefault(x => x.DifficultyLevel == difficultyLevel);
+                        if (subItem != null)
                         {
-                            <BootstrapInputNumber @bind-Value="priceItem.Price" />
+                            <BootstrapInputNumber @bind-Value="@subItem.Price" />
                         }
-                    </Template>
-                </TableColumn>
-            }
-        @* } *@
+                    }
+                </Template>
+            </TableColumn>
         }
     </TableColumns>
 </Table>

+ 12 - 3
aipmgr/Pages/IndividualPrices.razor.cs

@@ -66,6 +66,7 @@ namespace aipmgr.Pages
                     items.Add(new IndividualPriceModel
                     {
                         SelectedOrganizationId = SelectedOrganizationId,
+                        OrganizationIds = new List<long> { SelectedOrganizationId },
                         Type = Type,
                         AccountLevel = accountLevel,
                         PriceItems = priceItems,
@@ -96,7 +97,7 @@ namespace aipmgr.Pages
             try
             {
                 await LoadingManager.OpenAsync();
-                if (IndividualPriceTable != null)
+                if (IndividualPriceTable != null && IndividualPriceTable.Items != null)
                 {
                     foreach (var item in IndividualPriceTable.Items)
                     {
@@ -104,11 +105,19 @@ namespace aipmgr.Pages
                         {
                             if (subItem.Id == 0)
                             {
-                                //await AdminManager.Shared.CreateIndividualPriceAsync(item);
+                                var price = new IndividualPrice
+                                {
+                                    OrganizationIds = item.OrganizationIds,
+                                    Type = item.Type,
+                                    AccountLevel = item.AccountLevel,
+                                    DifficultyLevel = subItem.DifficultyLevel,
+                                    Price = subItem.Price,
+                                };
+                                await AdminManager.Shared.CreateIndividualPriceAsync(price);
                             }
                             else
                             {
-                                //await AdminManager.Shared.UpdateIndividualPriceAsync(item);
+                                await AdminManager.Shared.UpdateIndividualPriceAsync(subItem.Id, subItem.Price);
                             }
                         }
                     }

+ 78 - 8
aipsvr/Services/AdminService.cs

@@ -5364,7 +5364,7 @@ namespace aipsvr.Services
                                 GoldStandardAssignedCount = actualAddedGoldStandardCount,
                                 SelfCheckAssignedCount = actualAddedSelfCheckCount,
                             };
-                            if (totalDevelopConfirmInfo.Status!=DevelopConfirmStatus.WaitForConfirm)
+                            if (totalDevelopConfirmInfo.Status != DevelopConfirmStatus.WaitForConfirm)
                             {
                                 labelerGroup.LabelCaseQuantityItem.Remaining += requiredFrameTotal;
                                 labelerGroup.LabelCaseQuantityItem.Required += requiredFrameTotal;
@@ -12407,6 +12407,76 @@ namespace aipsvr.Services
             throw new InvalidOperationException("InvalidAdminSession");
         }
 
+        /// <summary>
+        /// 新增个体定价
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public async Task CreateIndividualPriceAsync(long sessionId, IndividualPrice item)
+        {
+            ActivateSession(sessionId);
+            var session = SessionManager.GetSession(sessionId);
+            if (session != null)
+            {
+                if (session.Type == SessionType.Admin)
+                {
+                    var databaseService = ServiceManager.GetService<IDatabaseService>();
+                    var pricingDataManager = databaseService.GetManager<IPricingDataManager>();
+
+                    await pricingDataManager.CreateIndividualPriceAsync(item);
+
+                    var log = new PricingOperateLog
+                    {
+                        IndividualPriceId = item.Id,
+                        Operation = $"{session.Name} - 创建",
+                        Message = $"{JsonConvert.SerializeObject(item)}",
+                    };
+                    await pricingDataManager.CreatePricingOperateLogAsync(log);
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Individual Price of id {item.Id}.");
+                    return;
+                }
+            }
+            throw new InvalidOperationException("InvalidAdminSession");
+        }
+
+        /// <summary>
+        /// 更新个体定价
+        /// </summary>
+        /// <param name="price"></param>
+        /// <returns></returns>
+        public async Task UpdateIndividualPriceAsync(long sessionId, long id, double price)
+        {
+            ActivateSession(sessionId);
+            var session = SessionManager.GetSession(sessionId);
+            if (session != null)
+            {
+                if (session.Type == SessionType.Admin)
+                {
+                    var databaseService = ServiceManager.GetService<IDatabaseService>();
+                    var pricingDataManager = databaseService.GetManager<IPricingDataManager>();
+
+                    var item = await pricingDataManager.GetIndividualPriceAsync(id);
+                    if (item == null)
+                    {
+                        throw new InvalidOperationException("IndividualPriceNotExist");
+                    }
+                    item.Price = price;
+                    await pricingDataManager.UpdateIndividualPriceAsync(item);
+
+                    var log = new PricingOperateLog
+                    {
+                        IndividualPriceId = item.Id,
+                        Operation = $"{session.Name} - 更新",
+                        Message = $"{JsonConvert.SerializeObject(item)}",
+                    };
+                    await pricingDataManager.CreatePricingOperateLogAsync(log);
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} update the Individual Price by id {id}.");
+                    return;
+                }
+            }
+            throw new InvalidOperationException("InvalidAdminSession");
+        }
+
         /// <summary>
         /// 获取个体系数
         /// </summary>
@@ -12482,7 +12552,7 @@ namespace aipsvr.Services
                         Message = $"{JsonConvert.SerializeObject(item)}",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Individual Coefficient of id {item.Id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Individual Coefficient of id {item.Id}.");
                     return;
                 }
             }
@@ -12523,7 +12593,7 @@ namespace aipsvr.Services
                         Message = $"{JsonConvert.SerializeObject(item)}",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} update the Individual Coefficient by id {id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} update the Individual Coefficient by id {id}.");
                     return;
                 }
             }
@@ -12553,7 +12623,7 @@ namespace aipsvr.Services
                         Operation = $"{session.Name} - 删除",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} delete the Individual Coefficient by id {id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} delete the Individual Coefficient by id {id}.");
                     return;
                 }
             }
@@ -12633,7 +12703,7 @@ namespace aipsvr.Services
                         Message = $"{JsonConvert.SerializeObject(item)}",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Institutional Price of id {item.Id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Institutional Price of id {item.Id}.");
                     return;
                 }
             }
@@ -12678,7 +12748,7 @@ namespace aipsvr.Services
                         Message = $"{JsonConvert.SerializeObject(item)}",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} update the Institutional Price by id {id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} update the Institutional Price by id {id}.");
                     return;
                 }
             }
@@ -12708,7 +12778,7 @@ namespace aipsvr.Services
                         Operation = $"{session.Name} - 删除",
                     };
                     await pricingDataManager.CreatePricingOperateLogAsync(log);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} delete the Institutional Price by id {id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} delete the Institutional Price by id {id}.");
                     return;
                 }
             }
@@ -12732,7 +12802,7 @@ namespace aipsvr.Services
                     var pricingDataManager = databaseService.GetManager<IPricingDataManager>();
 
                     await pricingDataManager.CreatePricingOperateLogAsync(item);
-                    await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Pricing Operate Log of id {item.Id}.");
+                    //await SystemLogger.WriteLogAsync($"Admin - {session.Name} create the Pricing Operate Log of id {item.Id}.");
                     return;
                 }
             }

+ 7 - 0
aipsvr/Services/DatabaseManagers/IPricingDataManager.cs

@@ -22,6 +22,13 @@ namespace aipsvr.Services.DatabaseManagers
         /// <returns>void</returns>
         Task UpdateIndividualPriceAsync(IndividualPrice item);
 
+        /// <summary>
+        /// 获取个体定价
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<IndividualPrice> GetIndividualPriceAsync(long id);
+
         /// <summary>
         /// 获取个体定价
         /// </summary>

+ 1 - 1
aipsvr/Services/DatabaseManagers/MongoDb/MongoDbClient.cs

@@ -537,12 +537,12 @@ namespace aipsvr.Services.DatabaseManagers.MongoDb
             IndividualPrices = Register<IndividualPrice>(nameof(IndividualPrices), _database);
             IndividualCoefficients = Register<IndividualCoefficient>(nameof(IndividualCoefficients), _database);
             InstitutionalPrices = Register<InstitutionalPrice>(nameof(InstitutionalPrices), _database);
-            PricingOperateLogs = Register<PricingOperateLog>(nameof(PricingOperateLog), _database);
         }
 
         private void RegisterLogEntities()
         {
             LogItems = Register<LogItem>(nameof(LogItems), _logDatabase);
+            PricingOperateLogs = Register<PricingOperateLog>(nameof(PricingOperateLogs), _logDatabase);
         }
 
         /// <summary>

+ 11 - 0
aipsvr/Services/DatabaseManagers/MongoDb/MongoDbPricingDataManager.cs

@@ -33,6 +33,17 @@ namespace aipsvr.Services.DatabaseManagers.MongoDb
             await MongoDbClient.Instance.IndividualPrices.FindOneAndUpdateAsync(x => x.Id == item.Id, update);
         }
 
+        /// <summary>
+        /// 获取个体定价
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<IndividualPrice> GetIndividualPriceAsync(long id)
+        {
+            var filters = Builders<IndividualPrice>.Filter.Where(x => x.Id == id);
+            return await MongoDbClient.Instance.IndividualPrices.Find(filters).FirstOrDefaultAsync();
+        }
+
         /// <summary>
         /// 获取个体定价
         /// </summary>