Blame view

项目文档相关/sql/修复送洗记录金额为0的问题.sql 3.29 KB
d8035736   “wangming”   Refactor project ...
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
  -- ============================================
  -- 修复送洗记录金额为0的问题
  -- ============================================
  -- 说明:修复送出记录(F_FlowType = 0)中,单价和数量都不为0,但总价为0的异常记录
  -- 修复逻辑:重新计算总价 = 数量 × 单价
  -- 
  -- 注意事项:
  -- 1. 执行前请先备份数据库
  -- 2. 执行前请先执行检查SQL,确认会修复的记录
  -- 3. 执行后请执行验证SQL,确认修复结果
  -- 4. 修复后需要重新计算相关的工资和股份数据
  -- ============================================
  
  -- ============================================
  -- 第一步:检查需要修复的记录(执行修复前先执行此SQL查看会修复哪些记录)
  -- ============================================
  SELECT 
      F_Id as 记录ID,
      F_BatchNumber as 批次号,
      F_StoreId as 门店ID,
      F_ProductType as 产品类型,
      F_Quantity as 数量,
      F_LaundryPrice as 单价,
      F_TotalPrice as 当前总价,
      (F_Quantity * F_LaundryPrice) as 应修复为总价,
      F_CreateTime as 创建时间
  FROM lq_laundry_flow
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice = 0
      AND F_Quantity > 0
      AND F_LaundryPrice > 0
  ORDER BY F_CreateTime;
  
  -- ============================================
  -- 第二步:统计需要修复的记录数量
  -- ============================================
  SELECT 
      COUNT(*) as 需要修复的记录数量,
      SUM(F_Quantity * F_LaundryPrice) as 应修复的总金额
  FROM lq_laundry_flow
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice = 0
      AND F_Quantity > 0
      AND F_LaundryPrice > 0;
  
  -- ============================================
  -- 第三步:执行修复(确认无误后执行此SQL
  -- ============================================
  UPDATE lq_laundry_flow
  SET F_TotalPrice = F_Quantity * F_LaundryPrice
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice = 0
      AND F_Quantity > 0
      AND F_LaundryPrice > 0;
  
  -- ============================================
  -- 第四步:验证修复结果(执行修复后执行此SQL确认修复结果)
  -- ============================================
  -- 4.1 检查是否还有异常记录
  SELECT 
      COUNT(*) as 剩余异常记录数量
  FROM lq_laundry_flow
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice = 0
      AND F_Quantity > 0
      AND F_LaundryPrice > 0;
  
  -- 4.2 查看修复后的记录(随机查看几条)
  SELECT 
      F_Id as 记录ID,
      F_BatchNumber as 批次号,
      F_ProductType as 产品类型,
      F_Quantity as 数量,
      F_LaundryPrice as 单价,
      F_TotalPrice as 修复后总价,
      (F_Quantity * F_LaundryPrice) as 验证计算值,
      CASE 
          WHEN F_TotalPrice = (F_Quantity * F_LaundryPrice) THEN '正确'
          ELSE '异常'
      END as 验证结果
  FROM lq_laundry_flow
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice > 0
      AND F_CreateTime >= '2025-12-01'
      AND F_CreateTime < '2026-01-01'
  ORDER BY F_CreateTime DESC
  LIMIT 20;
  
  -- 4.3 统计修复后的总金额
  SELECT 
      COUNT(*) as 修复后的记录数量,
      SUM(F_TotalPrice) as 修复后的总金额
  FROM lq_laundry_flow
  WHERE F_FlowType = 0
      AND F_IsEffective = 1
      AND F_TotalPrice > 0
      AND F_CreateTime >= '2025-12-01'
      AND F_CreateTime < '2026-01-01';