Blame view

项目文档相关/sql/清洗流水表添加送出送回时间字段.sql 2.62 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
  -- ============================================
  -- 为清洗流水表(lq_laundry_flow)添加送出/送回时间字段
  -- ============================================
  -- 说明:此脚本为清洗流水表添加送出时间和送回时间字段,用于记录实际的送出/送回时间
  -- 
  -- 字段说明:
  -- F_SendTime:送出时间,用于记录实际的送出时间(流水类型为0时使用)
  -- F_ReturnTime:送回时间,用于记录实际的送回时间(流水类型为1时使用)
  -- 
  -- 业务含义:
  -- - 送出时间:记录实际送出清洗的时间,便于后续统计
  -- - 送回时间:记录实际送回清洗的时间,便于后续统计
  -- - F_CreateTime:保持为记录创建时间(系统时间),用于记录数据录入时间
  -- 
  -- 注意事项:
  -- - 字段类型为DATETIME,允许为NULL(历史数据可能没有这些时间)
  -- - 字段位置:放在 F_CreateTime 字段之后
  -- - 创建后需要更新历史数据,将 F_CreateTime 的值复制到对应的时间字段
  
  -- ============================================
  -- 1. 添加送出时间字段
  -- ============================================
  ALTER TABLE `lq_laundry_flow` 
  ADD COLUMN `F_SendTime` DATETIME NULL COMMENT '送出时间(流水类型为0时使用)' AFTER `F_CreateTime`;
  
  -- ============================================
  -- 2. 添加送回时间字段
  -- ============================================
  ALTER TABLE `lq_laundry_flow` 
  ADD COLUMN `F_ReturnTime` DATETIME NULL COMMENT '送回时间(流水类型为1时使用)' AFTER `F_SendTime`;
  
  -- ============================================
  -- 3. 更新历史数据:将创建时间复制到对应的时间字段
  -- ============================================
  -- 更新送出记录:将创建时间复制到送出时间
  UPDATE `lq_laundry_flow`
  SET `F_SendTime` = `F_CreateTime`
  WHERE `F_FlowType` = 0 
    AND `F_SendTime` IS NULL 
    AND `F_CreateTime` IS NOT NULL;
  
  -- 更新送回记录:将创建时间复制到送回时间
  UPDATE `lq_laundry_flow`
  SET `F_ReturnTime` = `F_CreateTime`
  WHERE `F_FlowType` = 1 
    AND `F_ReturnTime` IS NULL 
    AND `F_CreateTime` IS NOT NULL;
  
  -- ============================================
  -- 4. 验证更新结果
  -- ============================================
  -- 查看更新后的统计信息
  SELECT 
      F_FlowType,
      CASE WHEN F_FlowType = 0 THEN '送出' ELSE '送回' END as FlowTypeName,
      COUNT(*) as TotalCount,
      COUNT(CASE WHEN F_FlowType = 0 THEN F_SendTime END) as HasSendTimeCount,
      COUNT(CASE WHEN F_FlowType = 1 THEN F_ReturnTime END) as HasReturnTimeCount
  FROM lq_laundry_flow
  WHERE F_IsEffective = 1
  GROUP BY F_FlowType;