Przeglądaj źródła

新增标注颜色逻辑及导出功能优化

- 在 FinancialController 中新增 isChangeColorRed 属性逻辑,用于标注红色状态。
- 增加对 totalCost 的分组统计和排序逻辑,生成模块费用详细信息。
- 新增 requestType == 3 的处理逻辑,支持生成标注橙色和红色团组的 Excel 文件。
- 优化 SQL 查询逻辑,移除冗余代码。
- 在 Fin_ForeignReceivablesView 中新增属性 isChangeColorRed 和 ChangeColorLabel。
- 新增 ChangeColorChild 和 SyntheticalReceivableFeeDetailsView 类,用于支持标注颜色和费用统计。
- 在 GroupsController 中预留页面加载弹窗信息的扩展区域。
- 修改 PostSyntheticalReceivableByDateRangeDto 中 requestType 的注释,新增类型说明。
Lyyyi 2 dni temu
rodzic
commit
f40f808b3e

+ 86 - 8
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -2265,6 +2265,7 @@ 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,
@@ -2290,14 +2291,34 @@ namespace OASystem.API.Controllers
                                           AND di.IsDel = 0 
                                           AND di.id = @GroupId";
 
-                       
-                            var datas = await _sqlSugar.SqlQueryable<SyntheticalReceivableFeeDetailsView>(sql)
-                                .AddParameters(new { GroupId = diId })
-                                .ToListAsync();
-                            decimal totalCost = datas.Sum(s => s.CNYMoeny);
+                        var datas = await _sqlSugar.SqlQueryable<SyntheticalReceivableFeeDetailsView>(sql)
+                            .AddParameters(new { GroupId = diId })
+                            .ToListAsync();
+                        decimal totalCost = datas.Sum(s => s.CNYMoeny);
                         if (totalCost > 0m)
                         {
+                            // 分组统计并排序
+                            var feeDatas1 = datas
+                                .GroupBy(g => new { g.CTable, g.ModouleName })
+                                .Select(s => new SyntheticalReceivableFeeDetailsView
+                                {
+                                    ModouleName = s.Key.ModouleName ?? "未知模块",
+                                    CTable = s.Key.CTable,
+                                    CNYMoeny = s.Sum(ss => ss.CNYMoeny)
+                                })
+                                .OrderBy(x => x.CTable)
+                                .ToList();
+
+                            // 构建结果字符串
+                            var feeLabel = new StringBuilder();
+                            foreach (var item in feeDatas1)
+                            {
+                                feeLabel.AppendLine(); // 空行
+                                feeLabel.AppendLine($"{item.ModouleName} :{item.CNYMoeny:#,##0.00} CNY");
+                            }
+
                             item_rst.isChangeColor = true;
+                            item_rst.ChangeColorLabel = feeLabel.ToString();
                         }
                     }
 
@@ -2353,10 +2374,8 @@ namespace OASystem.API.Controllers
                     if (feeDatas.Count < 1)
                     {
                         feeDatas.Add(new ClientFeeInfoView() { });
-
                     }
 
-
                     item_rst.feeItem = feeDatas;
                     #endregion
                 }
@@ -2371,7 +2390,7 @@ namespace OASystem.API.Controllers
                 {
                     return Ok(JsonView(true, "请求成功", result, list_rst.Count));
                 }
-                else
+                else if (dto.requestType == 2)
                 {
                     //----------------------------
                     var list_Ex = new List<Excel_SyntheticalReceivableByDateRange>();
@@ -2432,6 +2451,65 @@ namespace OASystem.API.Controllers
                         return Ok(JsonView(true, "成功", new { url = rst }));
                     }
                 }
+                else if (dto.requestType == 3)
+                {
+                    //----------------------------
+                    var list_Ex_Orange = new List<Excel_SyntheticalReceivableByDateRange>();
+                    var list_Ex_Red = new List<Excel_SyntheticalReceivableByDateRange>();
+                    var designer = new WorkbookDesigner()
+                    {
+                        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();
+                    int excNo1 = 1, excNo2 = 1;
+                    foreach (var item in list_rst_orange)
+                    {
+                        var exc = new Excel_SyntheticalReceivableByDateRange
+                        {
+                            No = excNo1.ToString(),
+                            TeamName = item.teamName,
+                            ClientUnit = item.clientUnit,
+                            VisitDate = item.visitDate,
+                            ChangeColorLabel = item.ChangeColorLabel,
+                        };
+                        excNo1++;
+                        list_Ex_Orange.Add(exc);
+                    }
+                    foreach (var item in list_rst_red)
+                    {
+                        var exc = new Excel_SyntheticalReceivableByDateRange
+                        {
+                            No = excNo2.ToString(),
+                            TeamName = item.teamName,
+                            ClientUnit = item.clientUnit,
+                            VisitDate = item.visitDate,
+                            ChangeColorLabel = item.ChangeColorLabel,
+                        };
+                        excNo2++;
+                        list_Ex_Red.Add(exc);
+                    }
+                    var dt_orange = CommonFun.GetDataTableFromIList(list_Ex_Orange);
+                    dt_orange.TableName = "DataSource1";
+                    var dt_red = CommonFun.GetDataTableFromIList(list_Ex_Red);
+                    dt_red.TableName = "DataSource2";
+                    if (dt_orange != null || dt_red != null)
+                    {
+                        //数据源
+                        designer.SetDataSource(dt_orange);
+                        designer.SetDataSource(dt_red);
+
+                        //根据数据源处理生成报表内容
+                        designer.Process();
+
+                        string fileName = $"Receivable/应收款项{dto.beginDt}~{dto.endDt})_标注团组{Guid.NewGuid():N}.xlsx";
+                        designer.Workbook.Save(AppSettingsHelper.Get("ExcelBasePath") + fileName);
+                        string rst = AppSettingsHelper.Get("ExcelBaseUrl") + AppSettingsHelper.Get("ExcelFtpPath") + fileName;
+                        return Ok(JsonView(true, "成功", new { url = rst }));
+                    }
+                }
             }
 
             return Ok(JsonView(true, "暂无数据", result, list_rst.Count));

+ 5 - 0
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -286,6 +286,11 @@ namespace OASystem.API.Controllers
             _processOverviewRep = processOverviewRep;
         }
 
+        #region 页面加载弹窗信息
+
+        #endregion
+
+
         #region 流程管控
 
         /// <summary>

+ 1 - 1
OASystem/OASystem.Domain/Dtos/Financial/PostSyntheticalReceivableByDateRangeDto.cs

@@ -19,7 +19,7 @@ namespace OASystem.Domain.Dtos.Financial
         public string groupName { get; set; }
 
         /// <summary>
-        /// 请求类型:1:查询数据,2:生成Excel
+        /// 请求类型:1:查询数据,2:生成Excel(条件生成)3:按照橙色团组生成Excel
         /// </summary>
         public int requestType { get; set; }
     }

+ 27 - 1
OASystem/OASystem.Domain/ViewModels/Financial/Fin_ForeignReceivablesView.cs

@@ -314,6 +314,8 @@ namespace OASystem.Domain.ViewModels.Financial
         public string Collection { get; set; }
 
         public string Sign { get; set; }
+
+        public string ChangeColorLabel { get; set; }
     }
 
     public class PostSyntheticalReceivableByDateRangeResultView
@@ -357,11 +359,18 @@ namespace OASystem.Domain.ViewModels.Financial
         //public bool isShowRed { get; set; } = false;
 
         /// <summary>
-        /// 是否改色
+        /// 是否是红色
+        /// 应收、已收、收款退还、余款 都为零
+        /// </summary>
+        public bool isChangeColorRed { get; set; }
+
+        /// <summary>
+        /// 是否是橙色
         /// 应收、已收、收款退还、余款 都为零 且 团组费用有值时 变色
         /// </summary>
         public bool isChangeColor { get; set; }
 
+        public string ChangeColorLabel { get; set; }
 
         /// <summary>
         /// 应收
@@ -414,6 +423,23 @@ namespace OASystem.Domain.ViewModels.Financial
         public List<ClientFeeInfoView>? feeItem { get; set; }
     }
 
+
+    public class ChangeColorChild
+    {
+        public int No { get; set; }
+
+        public string Client { get; set; }
+        public string GroupName { get; set; }
+        /// <summary>
+        /// 出访时间
+        /// </summary>
+        public string VisitDate { get; set; }
+
+        public string ModuleName { get; set; }
+
+        public decimal TotalCNY { get; set; }
+    }
+
     public class SyntheticalReceivableFeeDetailsView {
 
         public int Id { get; set; }