Explorar el Código

已收账单 上传文件新增逻辑 累计上传

Lyyyi hace 14 horas
padre
commit
158ab0b9b2
Se han modificado 1 ficheros con 29 adiciones y 17 borrados
  1. 29 17
      OASystem/OASystem.Api/Controllers/FinancialController.cs

+ 29 - 17
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -1706,7 +1706,6 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(true, "操作成功", view));
         }
 
-
         /// <summary>
         /// 已收账单上传文件
         /// </summary>
@@ -1733,7 +1732,8 @@ namespace OASystem.API.Controllers
                 }
 
                 // 3. 检查团组信息
-                var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>().FirstAsync(x => x.IsDel == 0 && x.Id == groupId);
+                var groupInfo = await _sqlSugar.Queryable<Grp_DelegationInfo>()
+                    .FirstAsync(x => x.IsDel == 0 && x.Id == groupId);
                 if (groupInfo == null)
                 {
                     return Ok(JsonView(false, $"团组信息不存在!"));
@@ -1741,11 +1741,14 @@ namespace OASystem.API.Controllers
 
                 // 4. 创建文件存储目录
                 var groupDir = @$"{groupInfo.TeamName}_{groupInfo.Id}";
-                var fileServerPath = AppSettingsHelper.Get("ReceivablesUploadFileBasePath") + @"/" + groupDir;
+                var fileServerPath = Path.Combine(AppSettingsHelper.Get("ReceivablesUploadFileBasePath"), groupDir);
                 if (!Directory.Exists(fileServerPath)) Directory.CreateDirectory(fileServerPath);
 
-                // 5. 为文件生成安全文件名
-                var uploadResults = new List<string>();
+                // 5. 获取已存在的文件路径列表(FrFilePaths 直接就是 List<string>)
+                var existingFilePaths = groupInfo.FrFilePaths ?? new List<string>();
+
+                // 6. 为文件生成安全文件名并上传
+                var newUploadResults = new List<string>();
                 foreach (var file in fileValidationResult.ValidFiles)
                 {
                     var safeFileName = GenerateSafeFileName(file.FileName, groupInfo);
@@ -1758,41 +1761,50 @@ namespace OASystem.API.Controllers
                     // 确保资源释放
                     using (var fileStream = new FileStream(finalSavePath, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true))
                     {
-
                         await file.CopyToAsync(fileStream);
-
-                        // 刷新缓冲区
                         await fileStream.FlushAsync();
                     }
 
-                    uploadResults.Add($"{groupDir}/{uniqueFileName}");
-
+                    // 保存相对路径
+                    var relativePath = $"{groupDir}/{uniqueFileName}";
+                    newUploadResults.Add(relativePath);
                 }
 
-                if (!uploadResults.Any())
+                if (!newUploadResults.Any())
                 {
                     return Ok(JsonView(false, "文件存储失败!"));
                 }
 
-                // 5. 数据库存储路径
+                // 7. 合并新旧文件路径(累计上传)
+                var allFilePaths = new List<string>();
+                allFilePaths.AddRange(existingFilePaths);    // 已存在的文件
+                allFilePaths.AddRange(newUploadResults);     // 新上传的文件
+
+                // 去重(防止重复添加)
+                allFilePaths = allFilePaths.Distinct().ToList();
+
+                // 8. 数据库存储路径(更新为合并后的路径)
                 var upd = await _sqlSugar.Updateable<Grp_DelegationInfo>()
-                    .SetColumns(x => x.FrFilePaths == uploadResults)
+                    .SetColumns(x => x.FrFilePaths == allFilePaths)
                     .Where(x => x.Id == groupId)
                     .ExecuteCommandAsync();
+
                 if (upd < 1)
                 {
                     return Ok(JsonView(false, "文件路径存储失败!"));
                 }
 
-                // 返回上传结果
+                // 9. 返回上传结果(只返回本次上传的文件)
                 var url = AppSettingsHelper.Get("OfficeBaseUrl");
                 var pathPrefix = AppSettingsHelper.Get("ReceivablesUploadFileFtpPath");
-                for (int i = 0; i < uploadResults.Count; i++)
+                var returnResults = new List<string>();
+
+                foreach (var relativePath in newUploadResults)
                 {
-                    uploadResults[i] = @$"{url}/{pathPrefix}/{uploadResults[i]}";
+                    returnResults.Add($"{url}/{pathPrefix}/{relativePath}");
                 }
 
-                return Ok(JsonView(true, "操作成功!", uploadResults));
+                return Ok(JsonView(true, $"操作成功!累计文件数: {allFilePaths.Count}"));
             }
             catch (Exception ex)
             {