fix(pl): 证件额度切点改为按首次安排时间并冻结版本。
切点前已安排的计划归档跳过购买证/运输证校验;创建较早但安排在生效后的计划走客户+品类新规则。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
f865d8ed99
commit
be0ba622a0
12 files changed
+257
-21
No files matched your search
@@ -0,0 +1,28 @@
|
||||
-- 证件额度切点改为首次安排时间:补 arranged_at 列,并按运输单创建时间回填已安排计划。
|
||||
-- MySQL 5.7。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
SET @schema_name = DATABASE();
|
||||
|
||||
SET @col = (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA=@schema_name AND TABLE_NAME='pl_plan' AND COLUMN_NAME='cert_quota_arranged_at');
|
||||
SET @sql = IF(@col=0,
|
||||
'ALTER TABLE pl_plan ADD COLUMN cert_quota_arranged_at datetime DEFAULT NULL COMMENT ''首次安排时间(证件额度切点用);再次安排不改'' AFTER cert_quota_rule_version',
|
||||
'SELECT 1');
|
||||
PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
|
||||
|
||||
-- 已安排:回填首次安排时刻,并按「安排时刻 vs 生效时间」校正规则版本(修正历史按创建打标)。
|
||||
UPDATE pl_plan p
|
||||
INNER JOIN pl_transport t
|
||||
ON t.id = p.transport_id AND t.tenant_no = p.tenant_no AND t.del_flag = 0
|
||||
LEFT JOIN pl_cert_quota_rule_config cfg
|
||||
ON cfg.tenant_no = p.tenant_no AND cfg.del_flag = 0
|
||||
SET
|
||||
p.cert_quota_arranged_at = COALESCE(p.cert_quota_arranged_at, t.create_time),
|
||||
p.cert_quota_rule_version = CASE
|
||||
WHEN cfg.effective_at IS NOT NULL
|
||||
AND COALESCE(p.cert_quota_arranged_at, t.create_time) >= cfg.effective_at
|
||||
THEN 'customer_category'
|
||||
ELSE 'legacy'
|
||||
END
|
||||
WHERE p.del_flag = 0
|
||||
AND p.transport_status = 'arranged';
|
||||
@@ -0,0 +1,28 @@
|
||||
-- 证件额度切点改为首次安排时间:补 arranged_at 列,并按运输单创建时间回填已安排计划。
|
||||
-- MySQL 5.7。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
SET @schema_name = DATABASE();
|
||||
|
||||
SET @col = (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA=@schema_name AND TABLE_NAME='pl_plan' AND COLUMN_NAME='cert_quota_arranged_at');
|
||||
SET @sql = IF(@col=0,
|
||||
'ALTER TABLE pl_plan ADD COLUMN cert_quota_arranged_at datetime DEFAULT NULL COMMENT ''首次安排时间(证件额度切点用);再次安排不改'' AFTER cert_quota_rule_version',
|
||||
'SELECT 1');
|
||||
PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
|
||||
|
||||
-- 已安排:回填首次安排时刻,并按「安排时刻 vs 生效时间」校正规则版本(修正历史按创建打标)。
|
||||
UPDATE pl_plan p
|
||||
INNER JOIN pl_transport t
|
||||
ON t.id = p.transport_id AND t.tenant_no = p.tenant_no AND t.del_flag = 0
|
||||
LEFT JOIN pl_cert_quota_rule_config cfg
|
||||
ON cfg.tenant_no = p.tenant_no AND cfg.del_flag = 0
|
||||
SET
|
||||
p.cert_quota_arranged_at = COALESCE(p.cert_quota_arranged_at, t.create_time),
|
||||
p.cert_quota_rule_version = CASE
|
||||
WHEN cfg.effective_at IS NOT NULL
|
||||
AND COALESCE(p.cert_quota_arranged_at, t.create_time) >= cfg.effective_at
|
||||
THEN 'customer_category'
|
||||
ELSE 'legacy'
|
||||
END
|
||||
WHERE p.del_flag = 0
|
||||
AND p.transport_status = 'arranged';
|
||||
Reference in new issue
Block a user