刘光辉
4 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { defHttp } from '#/api/request';
 
export interface RecordDocument {
  fileExtension?: string;
  fileId: string;
  fileSize?: number | string;
  name: string;
}
 
export interface RecordCreated {
  document: RecordDocument;
  existing: boolean;
  recordId: string;
  revisionId: string;
}
 
export type RecordBatchItemStatus = 'CREATED' | 'EXISTING' | 'FAILED';
 
export interface RecordBatchItem {
  created?: RecordCreated;
  errorCode?: string;
  errorMessage?: string;
  status: RecordBatchItemStatus;
  testWorkItemId: string;
}
 
export interface RecordBatchCreated {
  items: RecordBatchItem[];
}
 
export interface SharedFillField {
  conflictingValues: boolean;
  dataType: string;
  defaultExcludedTestWorkItemIds: string[];
  fieldCode: string;
  fieldName: string;
  fieldVersionId: string;
  targetTestWorkItemIds: string[];
  unit?: string;
}
 
export interface SharedFillTarget {
  currentValues: Record<string, string | undefined>;
  eligible: boolean;
  errorCode?: string;
  errorMessage?: string;
  recordId?: string;
  recordVersion?: number;
  revisionId?: string;
  testWorkItemId: string;
  testWorkItemName?: string;
}
 
export interface SharedFillPreview {
  fields: SharedFillField[];
  previewToken: string;
  targets: SharedFillTarget[];
  testDefinitionCode: string;
  testDefinitionId: string;
  testDefinitionName?: string;
}
 
export interface SharedFillValueCommand {
  fieldVersionId: string;
  value: string;
}
 
export interface SharedFillTargetCommand {
  expectedRecordVersion: number;
  overwrite: boolean;
  overwriteReason?: string;
  recordId: string;
  testWorkItemId: string;
}
 
export interface SharedFillExecuteCommand {
  operationCode: string;
  previewToken: string;
  targets: SharedFillTargetCommand[];
  testWorkItemIds: string[];
  values: SharedFillValueCommand[];
}
 
export interface SharedFillTargetResult {
  errorCode?: string;
  errorMessage?: string;
  recalculatedCount: number;
  recordId: string;
  recordVersion: number;
  status: 'COMMITTED' | 'REJECTED' | 'UNCHANGED';
  testWorkItemId: string;
}
 
export interface SharedFilled {
  fieldVersionIds: string[];
  operationCode: string;
  targets: SharedFillTargetResult[];
}
 
interface ApiResult<T> {
  code: number;
  data: T;
  msg?: string;
}
 
const RECORD_PREFIX = '/api/eln/records';
 
export function getRecordByTestWorkItem(testWorkItemId: string) {
  return defHttp.get<ApiResult<RecordCreated>>({
    url: `${RECORD_PREFIX}/byTestWorkItem/${encodeURIComponent(testWorkItemId)}`,
  });
}
 
export function createRecordsBatch(data: { operationCode: string; testWorkItemIds: string[] }) {
  return defHttp.post<ApiResult<RecordBatchCreated>>({ data, url: `${RECORD_PREFIX}/batch` });
}
 
export function previewSharedFill(data: { testWorkItemIds: string[] }) {
  return defHttp.post<ApiResult<SharedFillPreview>>({ data, url: `${RECORD_PREFIX}/sharedFill/preview` });
}
 
export function executeSharedFill(data: SharedFillExecuteCommand) {
  return defHttp.post<ApiResult<SharedFilled>>({ data, url: `${RECORD_PREFIX}/sharedFill/execute` });
}