BlobServerFunctions.cs
3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.SmartProcessing.Blob;
namespace Sungero.SmartProcessing.Server
{
partial class BlobFunctions
{
/// <summary>
/// Создать блоб с телом документа и дополнительной информацией.
/// </summary>
/// <returns>Блоб.</returns>
[Remote, Public]
public static IBlob CreateBlob()
{
return Blobs.Create();
}
/// <summary>
/// Создать бинарный образ документа из бинарного образа документа DCS.
/// </summary>
/// <param name="dcsBlob">Бинарный образ документа DCS (используется для обработки на клиенте).</param>
/// <returns>Бинарный образ документа.</returns>
[Public]
public static IBlob CreateBlob(Structures.Module.IDcsBlob dcsBlob)
{
var blob = CreateBlob();
blob.FilePath = dcsBlob.FilePath;
blob.OriginalFileName = dcsBlob.OriginalFileName;
blob.ArioResultJson = dcsBlob.ArioResultJson;
blob.ArioTaskStatus = SmartProcessing.Blob.ArioTaskStatus.InProcess;
if (dcsBlob.Body != null)
{
using (var dcsBlobBody = new MemoryStream(dcsBlob.Body))
blob.Body.Write(dcsBlobBody);
}
blob.PageCount = dcsBlob.PageCount;
blob.Created = dcsBlob.Created.FromUtcTime();
blob.Modified = dcsBlob.Modified.FromUtcTime();
// Для хранения в справочнике long свойства оно преобразовывается в строку и обратно.
blob.FileSize = dcsBlob.FileSize.ToString();
blob.Save();
return blob;
}
/// <summary>
/// Создать бинарный образ документа DCS на основе бинарного образа документа.
/// </summary>
/// <returns>Бинарный образ документа DCS (используется для обработки на клиенте).</returns>
[Public]
public virtual Structures.Module.IDcsBlob CreateDcsBlob()
{
var dcsBlob = Structures.Module.DcsBlob.Create();
dcsBlob.FilePath = _obj.FilePath;
dcsBlob.OriginalFileName = _obj.OriginalFileName;
dcsBlob.ArioResultJson = _obj.ArioResultJson;
dcsBlob.PageCount = _obj.PageCount;
dcsBlob.Created = _obj.Created;
dcsBlob.Modified = _obj.Modified;
// Для хранения в справочнике long свойства оно преобразовывается в строку и обратно.
long fileSize = 0;
long.TryParse(_obj.FileSize, out fileSize);
dcsBlob.FileSize = fileSize;
if (_obj.Body != null)
{
using (var blobBody = _obj.Body.Read())
{
var bufferLen = (int)blobBody.Length;
var buffer = new byte[bufferLen];
blobBody.Read(buffer, 0, bufferLen);
dcsBlob.Body = buffer;
}
}
return dcsBlob;
}
}
}