285 lines
24 KiB
SQL
285 lines
24 KiB
SQL
-- 购买证、运输证与用量核算模型(2026-10-26修订设计草案)
|
||
-- 仅供评审,不是上线迁移;本次不执行DDL,不更改既有业务表。
|
||
-- 取代本文件2026-10-25版:证面仅保留用户分别确认的9项;删除自动换算系数。
|
||
-- 设计:docs/superpowers/specs/2026-10-26-pl-contract-cert-design.md
|
||
-- 开发方案:docs/superpowers/plans/2026-10-26-pl-contract-cert.md
|
||
-- MySQL 5.7.8+ / InnoDB / utf8mb4 / UUID varchar(64) / 公共字段尾置。
|
||
-- JSON仅用于车牌列表与业务快照;证面不增加OCR、二维码、印章、核发机关字段。
|
||
-- 合同关联、附件、状态、余额、复核、修订号属于系统业务字段,不计入证面9项。
|
||
-- 本版8表:证件先绑定合同,再选择合同内多个适用产品;证件不绑定单一product_id。
|
||
-- 50%硫酸、98%硫酸可以共用证面品名为硫酸的证;需人工勾选适用合同产品行。
|
||
-- 同张证的本次需求=各适用产品本次证件使用量之和;实际量同样逐项确认后求和。
|
||
-- 不按浓度折纯,也不自动按品名包含关系归类;不同单位逐项人工填写后再相加。
|
||
-- total_qty、reserved_qty、used_qty全部使用本证quantity_unit;剩余量不单独存储。
|
||
-- 异单位只接受用户填写的证件数量;即便吨和千克不同也不自动乘除,不复用历史系数。
|
||
-- 合同产品与购买证多对多;同一产品可选择多张购买证并分配本次来源量,每张证仅扣其分配量。
|
||
-- 本次运输证仍每个业务产品项选择一张,按完整来源量计量;购买证分配不得使运输证重复扣量。
|
||
-- 同一实际运输的同一张证不能装送两侧重复扣;item指定计量来源,另一侧只追溯。
|
||
-- 相同证件/关联/usage的唯一键不含del_flag;停用后恢复原记录,不重建额度。
|
||
-- 首次启用必须写opening流水并核实历史已用量,不能默认为剩余全额。
|
||
-- MySQL5.7不依赖CHECK;逻辑外键、租户、数据权限、数量非负及状态转换由服务层强制。
|
||
-- 无自动级联物理删除;已有占用/使用/流水的证件与用量禁止删除,只能状态变更。
|
||
SET NAMES utf8mb4;
|
||
|
||
CREATE TABLE `pl_purchase_cert` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`cert_no` varchar(100) NOT NULL COMMENT '证件编号,租户内按证种唯一;删除后不得重建另一额度池',
|
||
`issue_date` date DEFAULT NULL COMMENT '核发日期',
|
||
`product_name_on_cert` varchar(200) NOT NULL COMMENT '证面物品名称原文,不随产品主数据更名',
|
||
`total_qty` decimal(18,6) NOT NULL COMMENT '证面核定总量,单位为quantity_unit',
|
||
`quantity_unit` varchar(32) NOT NULL COMMENT '数量单位代码;同证全部余额使用此单位,异单位不自动换算',
|
||
`valid_from` date DEFAULT NULL COMMENT '有效期起始日期',
|
||
`valid_to` date DEFAULT NULL COMMENT '有效期截止日期',
|
||
`valid_use_text` varchar(32) NOT NULL COMMENT '有效次数:一次有效或多次有效;不增加数值次数表单',
|
||
`attachment_urls` text NOT NULL COMMENT 'MinIO原件附件地址,多附件逗号分隔',
|
||
`status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT 'draft草稿/active可用/suspended停用/void作废;到期由日期判断',
|
||
`verified_by` varchar(64) DEFAULT NULL COMMENT '证件信息复核人',
|
||
`verified_time` datetime DEFAULT NULL COMMENT '证件信息复核时间',
|
||
`reserved_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '已安排未结转预占量;余额缓存,禁止手工直接编辑',
|
||
`used_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '已发生量;余额缓存,包含有凭据的期初及调整流水',
|
||
`revision` int NOT NULL DEFAULT 1 COMMENT '证面信息修订版本;使用时保留快照',
|
||
`buyer_name` varchar(255) NOT NULL COMMENT '购买单位或个人名称',
|
||
`buyer_address` varchar(1000) DEFAULT NULL COMMENT '购买方住所或地址',
|
||
`buyer_legal_representative` varchar(100) DEFAULT NULL COMMENT '购买方法定代表人',
|
||
`buyer_phone` varchar(100) DEFAULT NULL COMMENT '购买方电话',
|
||
`seller_name` varchar(255) NOT NULL COMMENT '销售单位名称',
|
||
`seller_address` varchar(1000) DEFAULT NULL COMMENT '销售单位住所',
|
||
`seller_legal_representative` varchar(100) DEFAULT NULL COMMENT '销售方法定代表人',
|
||
`seller_phone` varchar(100) DEFAULT NULL COMMENT '销售方电话',
|
||
`purchase_purpose` varchar(1000) DEFAULT NULL COMMENT '用途',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_purchase_cert_no` (`tenant_no`,`cert_no`),
|
||
KEY `idx_purchase_cert_select` (`tenant_no`,`status`,`del_flag`,`valid_to`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='购买证档案(SQL设计草案)';
|
||
|
||
CREATE TABLE `pl_transport_cert` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`cert_no` varchar(100) NOT NULL COMMENT '证件编号,租户内按证种唯一;删除后不得重建另一额度池',
|
||
`issue_date` date DEFAULT NULL COMMENT '核发日期',
|
||
`product_name_on_cert` varchar(200) NOT NULL COMMENT '证面物品名称原文,不随产品主数据更名',
|
||
`total_qty` decimal(18,6) NOT NULL COMMENT '证面核定总量,单位为quantity_unit',
|
||
`quantity_unit` varchar(32) NOT NULL COMMENT '数量单位代码;同证全部余额使用此单位,异单位不自动换算',
|
||
`valid_from` date DEFAULT NULL COMMENT '有效期起始日期',
|
||
`valid_to` date DEFAULT NULL COMMENT '有效期截止日期',
|
||
`valid_use_text` varchar(32) NOT NULL COMMENT '有效次数:一次有效或多次有效;不增加数值次数表单',
|
||
`attachment_urls` text NOT NULL COMMENT 'MinIO原件附件地址,多附件逗号分隔',
|
||
`status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT 'draft草稿/active可用/suspended停用/void作废;到期由日期判断',
|
||
`verified_by` varchar(64) DEFAULT NULL COMMENT '证件信息复核人',
|
||
`verified_time` datetime DEFAULT NULL COMMENT '证件信息复核时间',
|
||
`reserved_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '已安排未结转预占量;余额缓存,禁止手工直接编辑',
|
||
`used_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '已发生量;余额缓存,包含有凭据的期初及调整流水',
|
||
`revision` int NOT NULL DEFAULT 1 COMMENT '证面信息修订版本;使用时保留快照',
|
||
`shipper_name` varchar(255) NOT NULL COMMENT '货主名称或姓名',
|
||
`shipper_address` varchar(1000) DEFAULT NULL COMMENT '货主住所或地址',
|
||
`shipper_legal_representative` varchar(100) DEFAULT NULL COMMENT '货主法定代表人',
|
||
`shipper_phone` varchar(100) DEFAULT NULL COMMENT '货主电话',
|
||
`packaging_text` varchar(255) DEFAULT NULL COMMENT '包装,例如槽罐',
|
||
`carrier_name` varchar(255) DEFAULT NULL COMMENT '运输单位名称',
|
||
`carrier_address_phone` varchar(1200) DEFAULT NULL COMMENT '运输单位住所/电话,按用户指定证面合并栏保存',
|
||
`transport_mode` varchar(100) DEFAULT NULL COMMENT '运输方式,例如汽车',
|
||
`vehicle_numbers_json` json NOT NULL COMMENT '车号列表,例如[皖HA3190,皖H10291],所有车共用该证额度',
|
||
`route_text` text COMMENT '运输路线完整原文',
|
||
`consignee_name` varchar(255) DEFAULT NULL COMMENT '收货单位名称或姓名',
|
||
`applicant_name` varchar(255) DEFAULT NULL COMMENT '申请单位名称或姓名',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_transport_cert_no` (`tenant_no`,`cert_no`),
|
||
KEY `idx_transport_cert_select` (`tenant_no`,`status`,`del_flag`,`valid_to`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='运输证档案(SQL设计草案)';
|
||
|
||
CREATE TABLE `pl_transport_cert_purchase_ref` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`transport_cert_id` varchar(64) NOT NULL COMMENT '运输证ID',
|
||
`reference_type` varchar(24) NOT NULL COMMENT 'purchase_permit/purchase_filing/export_permit/unknown',
|
||
`reference_no` varchar(100) NOT NULL COMMENT '被引用的证号,保留未建档号码',
|
||
`purchase_cert_id` varchar(64) DEFAULT NULL COMMENT '如为山峡所管理购买证,关联其ID;外部未知证号可空',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_transport_ref` (`tenant_no`,`transport_cert_id`,`reference_no`),
|
||
KEY `idx_ref_purchase` (`tenant_no`,`purchase_cert_id`,`del_flag`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='运输证证面引用的许可备案证号,不建立客户下游交易台账';
|
||
|
||
CREATE TABLE `pl_contract_cert_link` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`contract_id` varchar(64) NOT NULL COMMENT '山峡自身CRM合同ID,不录入客户下游合同',
|
||
`contract_no_snapshot` varchar(100) NOT NULL COMMENT '系统关联合同编号快照,不等于证件编号',
|
||
`cert_type` varchar(16) NOT NULL COMMENT 'purchase或transport',
|
||
`cert_id` varchar(64) NOT NULL COMMENT '按cert_type指向对应证件表;服务层校验同租户',
|
||
`link_status` varchar(16) NOT NULL DEFAULT 'active' COMMENT 'active可选/inactive停止新增使用;历史使用不迁移',
|
||
`scope_revision` int NOT NULL DEFAULT 1 COMMENT '适用产品范围版本,增删或停用产品时递增,使未执行用证确认失效',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_contract_cert` (`tenant_no`,`contract_id`,`cert_type`,`cert_id`),
|
||
KEY `idx_contract_cert` (`tenant_no`,`contract_id`,`del_flag`),
|
||
KEY `idx_link_cert` (`tenant_no`,`cert_type`,`cert_id`,`del_flag`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='山峡合同绑定购买证或运输证,一个合同可绑定多张证';
|
||
|
||
CREATE TABLE `pl_contract_cert_product` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`contract_cert_link_id` varchar(64) NOT NULL COMMENT 'pl_contract_cert_link.id,继承合同、证种及证件身份',
|
||
`contract_product_id` varchar(64) NOT NULL COMMENT '该合同中的产品明细ID;多条产品行可属于同一合同证件绑定',
|
||
`scope_status` varchar(16) NOT NULL DEFAULT 'active' COMMENT 'active允许新增使用/inactive停止新增使用;保留历史',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_contract_cert_product` (`tenant_no`,`contract_cert_link_id`,`contract_product_id`),
|
||
KEY `idx_scope_product` (`tenant_no`,`contract_product_id`,`scope_status`,`del_flag`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='合同产品与证件多对多,同产品可属于多个证件范围;各证独立额度';
|
||
|
||
CREATE TABLE `pl_plan_cert_usage` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`plan_id` varchar(64) NOT NULL COMMENT '运输计划ID',
|
||
`plan_no_snapshot` varchar(100) NOT NULL COMMENT '计划编号快照',
|
||
`transport_id` varchar(64) DEFAULT NULL COMMENT '运输单ID',
|
||
`cert_type` varchar(16) NOT NULL COMMENT 'purchase或transport',
|
||
`cert_id` varchar(64) NOT NULL COMMENT '购买证或运输证ID',
|
||
`cert_no_snapshot` varchar(100) NOT NULL COMMENT '本次使用证号快照',
|
||
`cert_revision` int NOT NULL COMMENT '本次确认的证件版本',
|
||
`quantity_unit` varchar(32) NOT NULL COMMENT '数量单位代码;同证全部余额使用此单位,异单位不自动换算',
|
||
`reserved_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '本计划对该证当前未结转的占用',
|
||
`used_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '本计划对该证已发生量',
|
||
`usage_status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT 'draft/reserved/in_transit/settled/released/exception',
|
||
`confirmed_by` varchar(64) DEFAULT NULL COMMENT '最近一次用证确认人',
|
||
`confirmed_time` datetime DEFAULT NULL COMMENT '最近一次用证确认时间',
|
||
`settled_time` datetime DEFAULT NULL COMMENT '最近一次实际量结转时间',
|
||
`row_version` int NOT NULL DEFAULT 1 COMMENT '用量记录版本,防止使用旧版本重复修改',
|
||
`confirmation_snapshot` json DEFAULT NULL COMMENT '证面、计划量、车号、实际装送主体/地址及核验结果快照',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_plan_cert_usage` (`tenant_no`,`plan_id`,`cert_type`,`cert_id`),
|
||
KEY `idx_usage_cert` (`tenant_no`,`cert_type`,`cert_id`,`usage_status`,`del_flag`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='一趟计划对一张证的用量汇总,采购与运输证独立记账';
|
||
|
||
CREATE TABLE `pl_plan_cert_usage_item` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`usage_id` varchar(64) NOT NULL COMMENT 'pl_plan_cert_usage.id',
|
||
`contract_cert_link_id` varchar(64) NOT NULL COMMENT '合同与证件绑定ID,须与usage的证件相同',
|
||
`contract_cert_product_id` varchar(64) NOT NULL COMMENT '本产品的适用范围明细ID:pl_contract_cert_product.id',
|
||
`contract_scope_revision` int NOT NULL COMMENT '本次确认的合同证件适用范围版本',
|
||
`contract_id` varchar(64) NOT NULL COMMENT '本次履行的山峡合同ID',
|
||
`contract_product_id` varchar(64) NOT NULL COMMENT '对应合同产品行ID',
|
||
`plan_product_id` varchar(64) NOT NULL COMMENT '计划产品行ID',
|
||
`source_stop_type` varchar(16) NOT NULL COMMENT '唯一计量侧:load或delivery',
|
||
`source_stop_id` varchar(64) NOT NULL COMMENT '计量来源装货或送货段ID',
|
||
`source_stop_product_id` varchar(64) NOT NULL COMMENT '计量来源段次产品行ID',
|
||
`related_stop_products` json DEFAULT NULL COMMENT '关联另一侧段产品ID列表,仅用于追溯,不另行扣量',
|
||
`source_unit` varchar(32) NOT NULL COMMENT '来源段产品单位',
|
||
`planned_source_qty` decimal(18,6) NOT NULL COMMENT '安排时来源段产品完整计划数量快照,来源单位;跨证重复快照不得求和',
|
||
`allocated_source_qty` decimal(18,6) DEFAULT NULL COMMENT '本证分配的来源计划数量,来源单位;同产品各购买证合计须等于完整计划量',
|
||
`actual_source_qty` decimal(18,6) DEFAULT NULL COMMENT '归档时来源段产品完整实际数量快照,来源单位;未知为NULL',
|
||
`actual_allocated_source_qty` decimal(18,6) DEFAULT NULL COMMENT '归档时本证分配的来源实际数量;各购买证合计须等于完整实际量,重新确认',
|
||
`planned_cert_qty` decimal(18,6) DEFAULT NULL COMMENT '用户确认的安排用证量,证件单位;草稿可空,预占前必填',
|
||
`reserve_input_mode` varchar(16) DEFAULT NULL COMMENT 'same_unit同单位带入/manual异单位人工填写',
|
||
`reserve_conversion_note` varchar(1000) DEFAULT NULL COMMENT '异单位安排折算说明,manual时必填;不存自动换算系数',
|
||
`reserve_confirmed_by` varchar(64) DEFAULT NULL COMMENT '安排折算量确认人,服务端取当前用户',
|
||
`reserve_confirmed_time` datetime DEFAULT NULL COMMENT '安排折算量确认时间',
|
||
`actual_cert_qty` decimal(18,6) DEFAULT NULL COMMENT '用户确认的实际用证量,证件单位;不可用预占量替代',
|
||
`settle_input_mode` varchar(16) DEFAULT NULL COMMENT 'same_unit同单位带入/manual异单位重新人工填写',
|
||
`settle_conversion_note` varchar(1000) DEFAULT NULL COMMENT '异单位归档折算说明,manual时必填',
|
||
`settle_confirmed_by` varchar(64) DEFAULT NULL COMMENT '归档实际用证量确认人,服务端取当前用户',
|
||
`settle_confirmed_time` datetime DEFAULT NULL COMMENT '归档实际用证量确认时间',
|
||
`source_fingerprint` char(64) DEFAULT NULL COMMENT '源数据版本摘要;数量/单位/合同/产品/车辆/装送范围变化使确认失效',
|
||
`reserved_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '本分配当前预占量,证件单位',
|
||
`used_qty` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '本分配已发生量,证件单位',
|
||
`item_status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT 'draft/reserved/in_transit/settled/released/exception',
|
||
`source_snapshot` json DEFAULT NULL COMMENT '合同、产品、原始计划/归档量与分配依据快照',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_usage_source` (`tenant_no`,`usage_id`,`source_stop_type`,`source_stop_product_id`),
|
||
KEY `idx_usage_item_contract` (`tenant_no`,`contract_product_id`,`del_flag`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用量来源分配,指定一侧为计量来源,避免装送重复相加';
|
||
|
||
CREATE TABLE `pl_cert_qty_log` (
|
||
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
||
`operation_id` varchar(64) NOT NULL COMMENT '业务幂等操作号;同一次双证操作共用一个号',
|
||
`request_hash` char(64) NOT NULL COMMENT '规范化业务请求SHA256,同幂等号不同请求应拒绝',
|
||
`cert_type` varchar(16) NOT NULL COMMENT 'purchase或transport',
|
||
`cert_id` varchar(64) NOT NULL COMMENT '证件ID',
|
||
`usage_id` varchar(64) DEFAULT NULL COMMENT '计划用量ID;有凭据的期初导入可空',
|
||
`plan_id` varchar(64) DEFAULT NULL COMMENT '计划ID;期初导入可空',
|
||
`event_type` varchar(24) NOT NULL COMMENT 'opening/reserve/resize/release/settle/adjust/total_adjust',
|
||
`quantity_unit` varchar(32) NOT NULL COMMENT '数量单位代码;同证全部余额使用此单位,异单位不自动换算',
|
||
`total_delta` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '核定总量变动,须附修订依据',
|
||
`reserved_delta` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '预占增量,释放或结转为负数',
|
||
`used_delta` decimal(18,6) NOT NULL DEFAULT 0 COMMENT '实际使用增量,有依据的纠错可以为负数',
|
||
`before_total_qty` decimal(18,6) NOT NULL COMMENT '操作前核定总量',
|
||
`after_total_qty` decimal(18,6) NOT NULL COMMENT '操作后核定总量',
|
||
`before_reserved_qty` decimal(18,6) NOT NULL COMMENT '操作前预占',
|
||
`after_reserved_qty` decimal(18,6) NOT NULL COMMENT '操作后预占',
|
||
`before_used_qty` decimal(18,6) NOT NULL COMMENT '操作前已发生',
|
||
`after_used_qty` decimal(18,6) NOT NULL COMMENT '操作后已发生',
|
||
`reason` varchar(1000) NOT NULL COMMENT '操作原因或业务动作说明',
|
||
`evidence_urls` text COMMENT '期初、核定量修订或实际量调整凭据,多个URL逗号分隔',
|
||
`event_snapshot` json DEFAULT NULL COMMENT '来源分配、证面版本、校验及变更前后明细',
|
||
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号,由服务端当前用户上下文设置',
|
||
`order_num` int DEFAULT NULL COMMENT '公共排序号',
|
||
`remark` varchar(1000) DEFAULT NULL COMMENT '系统备注,与证面备注分开',
|
||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
|
||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`del_flag` smallint NOT NULL DEFAULT 0 COMMENT '软删除标记:0正常,1删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_cert_operation` (`tenant_no`,`operation_id`,`cert_type`,`cert_id`),
|
||
KEY `idx_qty_log_cert` (`tenant_no`,`cert_type`,`cert_id`,`create_time`),
|
||
KEY `idx_qty_log_usage` (`tenant_no`,`usage_id`,`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='证件额度及核销次数流水,追加留痕,不覆盖历史';
|
||
|