云
12 小时以前 1ed040591afdcbe3c5df42ad5e02e2cfa56edd87
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import { requestClient } from '#/api/request';
 
export interface SeedIndicatorRange {
  indicatorCode: string;
  minValue: number;
  maxValue: number;
  updateTime?: string;
}
 
export function getSeedIndicatorRanges() {
  return requestClient.get<SeedIndicatorRange[]>('/mes/qc/seed-quality/ranges');
}
 
export function saveSeedIndicatorRanges(ranges: SeedIndicatorRange[]) {
  return requestClient.put('/mes/qc/seed-quality/ranges', { ranges });
}
 
export interface SeedQualityPageParams {
  pageNo?: number;
  pageSize?: number;
  code?: string;
  batchCode?: string;
  result?: number;
  workflowStatus?: number;
}
 
export interface SeedQualityRecord {
  id: number;
  code: string;
  palletCode?: string;
  batchCode?: string;
  result: number;
  workflowStatus: number;
  retestResult?: number;
  reason?: string;
  inspectorId?: number;
  inspectedAt?: string;
  createTime?: string;
}
export interface SeedQualityIndicator {
  indicatorCode: string;
  value?: number;
  minValue: number;
  maxValue: number;
}
export function getSeedQualityIndicators(id: number) {
  return requestClient.get<SeedQualityIndicator[]>('/mes/qc/seed-quality/indicators', { params: { id } });
}
export interface SeedQualityAction {
  id: number;
  action: string;
  result?: number;
  opinion?: string;
  indicatorsJson?: string;
  operatorId?: number;
  operatorName?: string;
  createTime?: string;
}
export function getSeedQualityActions(id: number) {
  return requestClient.get<SeedQualityAction[]>('/mes/qc/seed-quality/actions', { params: { id } });
}
export function retestSeedQuality(id: number, data: Omit<MesQcSeedQualityApi.SubmitParams, 'qualifiedWarehouseId'>) {
  return requestClient.post('/mes/qc/seed-quality/retest', data, { params: { id } });
}
 
export function retestSeedQualityBatch(data: {
  ids: number[];
  reason?: string;
  indicators: MesQcSeedQualityApi.Indicator[];
}) {
  return requestClient.post('/mes/qc/seed-quality/retest-batch', data);
}
export interface SeedRetestScope {
  code: string;
  scanType: 'PALLET' | 'BATCH';
  batchCode?: string;
  totalCount: number;
  retestIds: number[];
  initialRecheckIds: number[];
  pendingProcessCount: number;
  pendingCompanyCount: number;
  pendingProcessIds?: number[];
  pendingInitialFailIds?: number[];
  pendingCompanyIds?: number[];
  pendingCompanyFailIds?: number[];
}
export function resolveSeedRetestScope(code: string, scanType: 'PALLET' | 'BATCH') {
  return requestClient.get<SeedRetestScope>('/mes/qc/seed-quality/retest-scope/resolve', { params: { code, scanType }, suppressErrorMessage: true });
}
export function submitSeedRetestScope(data: {
  code: string; scanType: 'PALLET' | 'BATCH'; workflowStatus: 10 | 50;
  qualityIds: number[]; indicators: MesQcSeedQualityApi.Indicator[]; reason?: string;
}) {
  return requestClient.post<{ processedCount: number }>('/mes/qc/seed-quality/retest-scope', data, { suppressErrorMessage: true });
}
export function approveSeedQuality(stage: 'process' | 'company', data: { id: number; approved: boolean; opinion: string }) {
  return requestClient.post(`/mes/qc/seed-quality/${stage}-approve`, data, { suppressErrorMessage: true });
}
export function approveSeedQualityBatch(stage: 'process' | 'company', data: { ids: number[]; approved: boolean; opinion: string }) {
  return requestClient.post(`/mes/qc/seed-quality/${stage}-approve-batch`, data, { suppressErrorMessage: true });
}
 
export namespace MesQcSeedQualityApi {
  export interface Indicator {
    code: string;
    value: number;
    minValue: number;
    maxValue: number;
  }
 
  export interface SubmitParams {
    code: string;
    batchCode?: string;
    indicators: Indicator[];
    reason?: string;
    qualifiedWarehouseId: number; // 目标合格库(质检合格后入该仓库,仓库类型为合格库20)
  }
}
 
export function getSeedQualityPage(params: SeedQualityPageParams) {
  return requestClient.get<{ list: SeedQualityRecord[]; total: number }>('/mes/qc/seed-quality/page', { params });
}
 
export function submitSeedQuality(data: MesQcSeedQualityApi.SubmitParams) {
  return requestClient.post<number>('/mes/qc/seed-quality/submit', data);
}
 
export interface SeedQualityScan {
  code: string; businessCode?: string; batchCode?: string;
  inbound: boolean; canceled: boolean; qualityId?: number; result?: number;
  scanType?: 'BAG' | 'PALLET' | 'BATCH'; totalCount?: number;
  pendingBagIds?: number[]; completedBagIds?: number[];
}
export function resolveSeedQuality(code: string, scanType: 'BAG' | 'PALLET' | 'BATCH' = 'BAG') {
  return requestClient.get<SeedQualityScan>('/mes/qc/seed-quality/resolve', { params: { code, scanType }, suppressErrorMessage: true });
}
export function submitSeedQualityGroup(data: MesQcSeedQualityApi.SubmitParams & { scanType: 'BAG' | 'PALLET' | 'BATCH'; bagIds: number[] }) {
  return requestClient.post<{ processedCount: number }>('/mes/qc/seed-quality/submit-group', data, { suppressErrorMessage: true });
}