Selaa lähdekoodia

优化财务控制器查询与标注逻辑

- 新增命名空间 `OASystem.Domain.Entities` 和 `IOpenAiModels`。
- 新增 SQL 查询逻辑,支持按多个 GroupIds 查询团组费用。
- 优化数据筛选逻辑,避免重复查询数据库。
- 调整颜色标注逻辑,区分橙色和红色标注,避免冲突。
- 修改 Excel 数据处理逻辑,分别处理橙色和红色标注数据。
- 移除冗余代码,提升代码可读性和维护性。
- 增加代码注释,优化变量命名。
Lyyyi 1 päivä sitten
vanhempi
commit
981445a850
1 muutettua tiedostoa jossa 47 lisäystä ja 32 poistoa
  1. 47 32
      OASystem/OASystem.Api/Controllers/FinancialController.cs

+ 47 - 32
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -12,6 +12,7 @@ using OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice;
 using OASystem.Domain.AesEncryption;
 using OASystem.Domain.Dtos.Financial;
 using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Financial;
 using OASystem.Domain.Entities.Groups;
@@ -29,6 +30,7 @@ using System.Globalization;
 using System.IO.Compression;
 using System.Text.RegularExpressions;
 using static OASystem.API.OAMethodLib.JWTHelper;
+using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 namespace OASystem.API.Controllers
 {
@@ -2193,6 +2195,38 @@ namespace OASystem.API.Controllers
             var result = new PostSyntheticalReceivableByDateRangeResultView();
             if (list_rst.Any())
             {
+                //查询团组各模块费用信息
+
+                string sql = @"
+                    SELECT 
+                        di.Id,
+                        di.TeamName,
+                        sd.Name AS ModouleName,
+                        ccp.CTable,
+                        CASE 
+                            WHEN ccp.CTable = 76 THEN (SELECT hotelname FROM Grp_HotelReservations hr WHERE hr.Id = ccp.CId)
+                            WHEN ccp.CTable = 79 THEN (SELECT PriceName FROM Grp_CarTouristGuideGroundReservations ctgr WHERE ctgr.Id = ccp.CId)
+                            WHEN ccp.CTable = 80 THEN (SELECT Area FROM Grp_VisaInfo vi WHERE vi.Id = ccp.CId)
+                            WHEN ccp.CTable = 81 THEN (SELECT InviterArea FROM Grp_InvitationOfficialActivities ioa WHERE ioa.Id = ccp.CId)
+                            WHEN ccp.CTable = 82 THEN (SELECT (SELECT GName FROM Grp_InsuranceCost ic WHERE ic.Id = c.Iid) FROM Grp_Customers c WHERE c.Id = ccp.CId)
+                            WHEN ccp.CTable = 85 THEN (SELECT FlightsCode FROM Grp_AirTicketReservations atr WHERE atr.Id = ccp.CId)
+                            WHEN ccp.CTable = 98 THEN (SELECT PriceName FROM Grp_DecreasePayments dp WHERE dp.Id = ccp.CId)
+                            WHEN ccp.CTable = 1015 THEN (SELECT PriceName FROM Fin_GroupExtraCost gec WHERE gec.Id = ccp.CId)
+                            ELSE '-'
+                        END AS PriceName,
+                        (ccp.PayMoney * ccp.DayRate) AS CNYMoeny
+                    FROM Grp_CreditCardPayment ccp
+                    INNER JOIN Grp_DelegationInfo di ON ccp.DIId = di.Id
+                    LEFT JOIN sys_setdata sd ON ccp.CTable = sd.Id
+                    WHERE ccp.IsDel = 0 
+                        AND di.IsDel = 0 
+                        AND di.Id IN (@GroupIds)";
+
+                var groupIds = list_rst.Select(x => x.diid).ToList();
+                var datas = _sqlSugar.SqlQueryable<SyntheticalReceivableFeeDetailsView>(sql)
+                    .AddParameters(new { GroupIds = groupIds })
+                    .ToList();
+
                 int rowNumber = 1;
                 foreach (var item_rst in list_rst)
                 {
@@ -2266,35 +2300,10 @@ namespace OASystem.API.Controllers
                     if (sum_fr <= 0m && (sum_fr + sum_extra) <= 0m && sum_refund <= 0m && ((sum_fr + sum_extra) - (sum_pr - sum_refund)) <= 0m)
                     {
                         item_rst.isChangeColorRed = true;
-                        string sql = @"
-                                        SELECT 
-                                            di.id,
-                                            di.TeamName,
-                                            sd.Name AS ModouleName,
-                                            ccp.CTable,
-                                            CASE 
-                                                WHEN ccp.CTable = 76 THEN (SELECT hotelname FROM Grp_HotelReservations hr WHERE hr.Id = ccp.CId)
-                                                WHEN ccp.CTable = 79 THEN (SELECT PriceName FROM Grp_CarTouristGuideGroundReservations ctgr WHERE ctgr.Id = ccp.CId)
-                                                WHEN ccp.CTable = 80 THEN (SELECT Area FROM Grp_VisaInfo vi WHERE vi.Id = ccp.CId)
-                                                WHEN ccp.CTable = 81 THEN (SELECT InviterArea FROM Grp_InvitationOfficialActivities ioa WHERE ioa.Id = ccp.CId)
-                                                WHEN ccp.CTable = 82 THEN (SELECT (SELECT GName FROM Grp_InsuranceCost ic WHERE ic.Id = c.Iid) FROM Grp_Customers c WHERE c.Id = ccp.CId)
-                                                WHEN ccp.CTable = 85 THEN (SELECT FlightsCode FROM Grp_AirTicketReservations atr WHERE atr.Id = ccp.CId)
-                                                WHEN ccp.CTable = 98 THEN (SELECT PriceName FROM Grp_DecreasePayments dp WHERE dp.Id = ccp.CId)
-                                                WHEN ccp.CTable = 1015 THEN (SELECT PriceName FROM Fin_GroupExtraCost gec WHERE gec.Id = ccp.CId)
-                                                ELSE '-'
-                                            END AS PriceName,
-                                            (ccp.PayMoney * ccp.DayRate) AS CNYMoeny
-                                        FROM Grp_CreditCardPayment ccp
-                                        INNER JOIN Grp_DelegationInfo di ON ccp.DIId = di.Id
-                                        LEFT JOIN sys_setdata sd ON ccp.CTable = sd.Id
-                                        WHERE ccp.IsDel = 0 
-                                          AND di.IsDel = 0 
-                                          AND di.id = @GroupId";
-
-                        var datas = _sqlSugar.SqlQueryable<SyntheticalReceivableFeeDetailsView>(sql)
-                            .AddParameters(new { GroupId = diId })
-                            .ToList();
-                        decimal totalCost = datas.Sum(s => s.CNYMoeny);
+                       
+                        var currDatas = datas.Where(w => w.Id == diId).ToList();
+
+                        decimal totalCost = currDatas.Sum(s => s.CNYMoeny);
                         if (totalCost > 0m)
                         {
                             // 分组统计并排序
@@ -2316,7 +2325,8 @@ namespace OASystem.API.Controllers
                                 feeLabel.AppendLine(); // 空行
                                 feeLabel.AppendLine($"{item.ModouleName} :{item.CNYMoeny:#,##0.00} CNY");
                             }
-                            item_rst.isChangeColorRed = false; //红色/橙色只显示一个
+
+                            //item_rst.isChangeColorRed = false; //红色/橙色只显示一个
                             item_rst.isChangeColor = true;
                             item_rst.ChangeColorLabel = feeLabel.ToString();
                         }
@@ -2460,9 +2470,14 @@ namespace OASystem.API.Controllers
                         Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/应收款项模板1.xls")
                     };
 
-                    //只查询标注橙色的数据
+                    //只查询标注颜色的数据
+
                     var list_rst_orange = list_rst.Where(x => x.isChangeColor).ToList();
-                    var list_rst_red = list_rst.Where(x => x.isChangeColorRed).ToList();
+
+                    var orangeGroupIds = list_rst.Where(x => x.isChangeColor).Select(x => x.diid).ToList();
+
+                    var list_rst_red = list_rst.Where(x => x.isChangeColorRed && !orangeGroupIds.Contains(x.diid)).ToList();
+
                     int excNo1 = 1, excNo2 = 1;
                     foreach (var item in list_rst_orange)
                     {