4 天以前 10dd6590cea8f20eff21025ee71c8a614a48cdb7
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 type { PageParam, PageResult } from '@vben/request';
 
import { requestClient } from '#/api/request';
 
export namespace MesTraceCrossRegionApi {
  /** 窜货预警 */
  export interface Warning {
    id?: number; // 编号
    warningNo?: string; // 预警编号
    bagCodeId?: number; // 袋码编号
    bagCode?: string; // 袋码
    palletCodeId?: number; // 托盘码编号
    palletCode?: string; // 托盘码
    batchId?: number; // 生产批次编号
    batchCode?: string; // 批次号
    itemId?: number; // 物料编号
    itemCode?: string; // 物料编码
    itemName?: string; // 物料名称
    salesId?: number; // 销售出库单编号
    salesCode?: string; // 出库单号
    clientId?: number; // 经销商编号
    clientName?: string; // 经销商名称
    dealerProvince?: string; // 经销商省份
    dealerCity?: string; // 经销商城市
    scanProvince?: string; // 扫码省份
    scanCity?: string; // 扫码城市
    warningType?: string; // 预警类型:CROSS_PROVINCE / CROSS_CITY
    warningTypeName?: string; // 预警类型名称
    scanEventId?: number; // 关联消费者扫码事件编号
    status?: number; // 状态:10 待处理 / 20 已处理 / 30 误报
    statusName?: string; // 状态名称
    handleUserId?: number; // 处理人编号
    handleUserName?: string; // 处理人姓名
    handleTime?: string; // 处理时间
    handleRemark?: string; // 处理备注
    eventTime?: string; // 预警产生时间
  }
 
  /** 窜货预警分页查询参数 */
  export interface PageParams extends PageParam {
    status?: number;
    warningType?: string;
    batchCode?: string;
    bagCode?: string;
    clientName?: string;
    eventTime?: string[];
  }
 
  /** 窜货预警汇总 */
  export interface Summary {
    [key: string]: number | undefined; // 汇总指标(按字段名取值)
    total?: number; // 预警总数
    pending?: number; // 待处理数量
    handled?: number; // 已处理数量
    falseAlarm?: number; // 误报数量
    crossProvince?: number; // 跨省窜货数量
    crossCity?: number; // 跨市窜货数量
  }
 
  /** 窜货预警分布统计项 */
  export interface StatisticsItem {
    name?: string; // 分组名称
    count?: number; // 预警数量
  }
 
  /** 防窜货规则配置 */
  export interface AntiConfig {
    warningLevel?: string; // 判定粒度:PROVINCE 跨省 / CITY 跨市
    remark?: string; // 配置说明
  }
}
 
/** 获得窜货预警分页 */
export function getTraceCrossRegionPage(
  params: MesTraceCrossRegionApi.PageParams,
) {
  return requestClient.get<PageResult<MesTraceCrossRegionApi.Warning>>(
    '/mes/trace-cross-region/page',
    { params },
  );
}
 
/** 处理窜货预警 */
export function handleTraceCrossRegion(data: {
  id: number;
  status: number;
  handleRemark?: string;
}) {
  return requestClient.put('/mes/trace-cross-region/handle', data);
}
 
/** 获得窜货预警汇总 */
export function getTraceCrossRegionSummary(startTime?: string, endTime?: string) {
  return requestClient.get<MesTraceCrossRegionApi.Summary>(
    '/mes/trace-cross-region/summary',
    { params: { startTime, endTime } },
  );
}
 
/** 获得窜货预警分布统计 */
export function getTraceCrossRegionStatistics(
  groupBy: string,
  startTime?: string,
  endTime?: string,
) {
  return requestClient.get<MesTraceCrossRegionApi.StatisticsItem[]>(
    '/mes/trace-cross-region/statistics',
    { params: { groupBy, startTime, endTime } },
  );
}
 
/** 获得防窜货规则配置 */
export function getTraceCrossRegionConfig() {
  return requestClient.get<MesTraceCrossRegionApi.AntiConfig>(
    '/mes/trace-cross-region/config',
  );
}
 
/** 更新防窜货规则配置 */
export function updateTraceCrossRegionConfig(warningLevel: string) {
  return requestClient.put(
    `/mes/trace-cross-region/config?warningLevel=${warningLevel}`,
  );
}