From 712de30133f921b5ac1f1ae2a1b77fff8b709c20 Mon Sep 17 00:00:00 2001
From: song.jun <lion0756@qq.com>
Date: 星期一, 13 四月 2026 12:49:16 +0800
Subject: [PATCH] 修正代码评审发现的 Critical 问题(a3f4e4f 后续修复)

---
 sbcLabSystem/Models/Backstage/QCDistributionInfoViewModel.cs |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/sbcLabSystem/Models/Backstage/QCDistributionInfoViewModel.cs b/sbcLabSystem/Models/Backstage/QCDistributionInfoViewModel.cs
index a53d138..f9adb82 100644
--- a/sbcLabSystem/Models/Backstage/QCDistributionInfoViewModel.cs
+++ b/sbcLabSystem/Models/Backstage/QCDistributionInfoViewModel.cs
@@ -135,6 +135,7 @@
 
             if (viewModel.LabList != null && viewModel.LabList.Count > 0)
             {
+                var qcService = PalGainEngine.Instance.Resolve<QCService>();
                 viewModel.LabList.ForEach(x =>
                 {
                     QCDistributionRegisterInfo registerInfo = QCDistributionRegisterInfoViewModel.ToEntity(x);
@@ -142,17 +143,31 @@
                     registerInfo.LabId = x.LabId;
                     registerInfo.ProjectId = x.ProjectId;
                     if (x.IsSelected)
-                    { 
+                    {
+                        if (registerInfo.Id == 0)
+                        {
+                            var existing = qcService.GetQcDistributionRegisters()
+                                .FirstOrDefault(p => p.QCDistributionId == viewModel.Id
+                                                  && p.LabId == x.LabId
+                                                  && p.ProjectId == x.ProjectId);
+                            if (existing != null)
+                            {
+                                existing.IsCharged = x.IsCharged;
+                                existing.ModifyTime = DateTime.Now;
+                                qcService.SaveQcDistributionRegister(existing);
+                                return;
+                            }
+                        }
                         registerInfo.IsCharged = x.IsCharged;
-                        PalGainEngine.Instance.Resolve<QCService>().SaveQcDistributionRegister(registerInfo);
+                        qcService.SaveQcDistributionRegister(registerInfo);
                     }
                     else
                     {
-                        var entity = PalGainEngine.Instance.Resolve<QCService>().GetQcDistributionRegisters()
+                        var entity = qcService.GetQcDistributionRegisters()
                                 .FirstOrDefault(p => p.Id == x.Id);
                         if (entity != null)
                         {
-                            PalGainEngine.Instance.Resolve<QCService>().DeleteQcDistributionRegister(entity);
+                            qcService.DeleteQcDistributionRegister(entity);
                         }
                     }
                 });

--
Gitblit v1.8.0