补充注释
This commit is contained in:
+8
-2
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职合同文件生成业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingContractDocumentService : IOnboardingContractDocumentService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -11,6 +14,9 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
_fileService = fileService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据已锁定的模板版本和变量快照生成任务合同 DOCX 文件。
|
||||
/// </summary>
|
||||
public async Task<long> Generate(OnboardingGenerateContractInput input)
|
||||
{
|
||||
var contract = await _db.Queryable<ObTaskContract>().InSingleAsync(input.TaskContractId)
|
||||
@@ -38,6 +44,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
using var sourceBytes = new MemoryStream();
|
||||
await sourceStream.CopyToAsync(sourceBytes);
|
||||
|
||||
// 合同只读取任务变量快照,确保模板或员工档案后续修改不会影响已生成文件。
|
||||
var rendered = ReplaceDocxText(
|
||||
sourceBytes.ToArray(),
|
||||
variables.ToDictionary(x => x.VariableCode, x => x.VariableValue ?? string.Empty));
|
||||
@@ -63,6 +70,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
global::System.IO.Compression.ZipArchiveMode.Create,
|
||||
true);
|
||||
|
||||
// DOCX 本质是 ZIP 包,仅替换正文、页眉和页脚 XML 中的文本节点,其他资源原样复制。
|
||||
foreach (var entry in archive.Entries)
|
||||
{
|
||||
var next = target.CreateEntry(entry.FullName, global::System.IO.Compression.CompressionLevel.Optimal);
|
||||
@@ -95,5 +103,3 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
return output.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user