Browse Source

更新 Excel 文件生成逻辑和数据处理

在 `GroupsController.cs` 中,修改了 Excel 文件路径和名称,优化了数据源设置逻辑,特别是针对 `tempId` 的不同值处理。同时,增强了对数据项的处理,确保数据的准确性。

在 `OrderPreInfoView.cs` 中,增加了对 `OriginVal` 的正则表达式验证,优化了 JSON 反序列化逻辑,并改进了对不同字段类型的处理,确保返回值的正确性。
LEIYI 1 month ago
parent
commit
31f0a9117f

+ 38 - 6
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -500,13 +500,13 @@ namespace OASystem.API.Controllers
 
             if (tempId == 1405)
             {
-                tempPath += $"无商邀版Temp.xlsx";
+                tempPath += $"前期需客户提供信息_无商邀版Temp.xlsx";
                 fileNamePrefix = $"{data.Name}_无商邀版";
 
             }
             else if (tempId == 1406)
             {
-                tempPath += $"有商邀版Temp.xlsx";
+                tempPath += $"前期需客户提供信息_有商邀版Temp.xlsx";
                 fileNamePrefix = $"{data.Name}_有商邀版";
             }
             else
@@ -519,10 +519,23 @@ namespace OASystem.API.Controllers
             foreach (var item in data.Items)
             {
                 var obj = item.NewValue;
-                if (obj is bool || obj is bool?)
+
+                if (obj == null) item.OriginVal = "";
+                else if (obj.Equals("有") || obj.Equals("无"))
+                {
+                    item.OriginVal = obj.ToString();
+                }
+                else if (obj is object[] objArray)
                 {
-                    if ((bool)obj == true) item.OriginVal = "是";
-                    else item.OriginVal = "否";
+                    string[] stringArray = Array.ConvertAll(objArray, item => item?.ToString() ?? string.Empty);
+                    item.OriginVal = string.Join("、", stringArray);
+                }
+                else if (obj is string[] stringArray)
+                {
+                    item.OriginVal = string.Join("、", stringArray);
+                } else if (obj.Equals("-"))
+                {
+                    item.OriginVal = "";
                 }
             }
 
@@ -533,7 +546,26 @@ namespace OASystem.API.Controllers
             //载入模板
             WorkbookDesigner designer = new WorkbookDesigner();
             designer.Workbook = new Workbook(tempPath);
-            designer.SetDataSource("View", data.Items);
+
+            if (tempId == 1406)
+            {
+                var view1 = data.Items.Where(x => x.Index < 11).ToArray();
+                var view2 = data.Items.Where(x => x.Index > 10).ToArray();
+
+                for (int i = 1; i <= view2.Length; i++)
+                {
+                    view2[i - 1].Index = i;
+                }
+
+                designer.SetDataSource("View1", view1);
+                designer.SetDataSource("View2", view2);
+            }
+            else
+            {
+                designer.SetDataSource("View", data.Items);
+            }
+
+                
             designer.Process();
 
             if (!Directory.Exists(savePath))

+ 20 - 5
OASystem/OASystem.Domain/ViewModels/Groups/OrderPreInfoView.cs

@@ -1,9 +1,12 @@
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using OASystem.Domain.Entities.Groups;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Text.Json;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels.Groups
@@ -51,15 +54,25 @@ namespace OASystem.Domain.ViewModels.Groups
                 else if (FieldTypeName.Equals("搜索框"))
                 {
 
+                    var val = Array.Empty<string>();
+
+                    string regexPattern = @"^\s*\{[\s\S]*\}\s*$";
+                    bool isValid = Regex.IsMatch(OriginVal, regexPattern);
+
                     try
                     {
-                        return JsonConvert.DeserializeObject<string[]>(OriginVal);
+                        if (isValid)
+                        {
+                            val = JsonConvert.DeserializeObject<string[]>(OriginVal);
+                        }
+
+                        return val;
 
                     }
                     catch (Exception)
                     {
 
-                        return Array.Empty<string>();
+                        return val;
                     }
 
 
@@ -67,13 +80,15 @@ namespace OASystem.Domain.ViewModels.Groups
                 else if (FieldTypeName.Equals("下拉选择框") || FieldTypeName.Equals("复选框") || FieldTypeName.Equals("数字"))
                 {
                     int.TryParse(OriginVal, out int val);
-
+                    OriginVal = val.ToString();
                     return val;
                 }
                 else if (FieldTypeName.Equals("单选按钮"))
                 {
-                    if (OriginVal.ToUpper().Equals("TRUE") || OriginVal.Equals("有")) return "有";
-                    return "无";
+                    var val = "无";
+                    if (OriginVal.ToUpper().Equals("TRUE") || OriginVal.Equals("有")) val = "有";
+                    OriginVal = val;
+                    return val;
                 }
                 return null;
             }