
2026-10-27 10:27:00 -
电梯项目从招标到验收要走大半年,前期线索散在各处,收款靠财务月底翻台账。本文给出三类线索的自动接入与按地址分派规则、以统一社会信用代码为唯一键的查重与存量合并方案,以及设备款、安装款分开设置收款节点、到期自动生成催收任务的实现思路。
电梯项目从招标到验收要走大半年,前期线索散在各处,收款靠财务月底翻台账。本文给出三类线索的自动接入与按地址分派规则、以统一社会信用代码为唯一键的查重与存量合并方案,以及设备款、安装款分开设置收款节点、到期自动生成催收任务的实现思路。
电梯销售的周期长,一个项目从招标到验收要走大半年,中间要过排产、发运、安装几个环节。节点多带来两个错觉:一是以为系统在跑就是在管,二是以为销售报得勤就是过程透明。
实际情况是前期线索散在各处,谁跟到哪一步只有销售自己知道;合同签订以后,收款什么时候该催,靠财务月底翻合同台账。总部看的是签单额,看不到过程,也看不到哪些项目的钱还没回。
三类线索自动进来:招标网站、官网、服务中心。
招标网站上抓到的项目信息,按地址分给对应分公司,不用有人每天去翻一遍网页。官网和服务中心来的咨询直接落到线索池,按区域规则分派。分派规则写在平台上,改规则是改配置,不是一次开发。
第四类线索靠存量数据挖。用了 15 年以上的老梯,从系统数据里拉出来做线索。这一条是电梯行业特有的:装出去的设备本身就是改造和更新的客户名单,以前这些数据躺在设备台账里没人用。
流程走向:
客户数据质量差、重复项目多,很难分析。解法是从录入那一刻开始查重:客户按统一社会信用代码查重。
为什么用信用代码而不是名称。同一个地产集团在几家分公司名下可能被写成不同的名称,简称、项目名、总包名混着填,按名称查重拦不住。信用代码是企业唯一的,填的时候就要有这一栏,缺了这一栏不能提交。
CREATE TABLE customer (
customer_id BIGINT PRIMARY KEY,
uscc CHAR(18) UNIQUE NOT NULL, -- 统一社会信用代码,唯一键
customer_name VARCHAR(128) NOT NULL,
short_name VARCHAR(64),
prov_code VARCHAR(16) NOT NULL, -- 分派规则按行政区划匹配
city_code VARCHAR(16) NOT NULL
);
CREATE TABLE lead_info (
lead_no VARCHAR(32) PRIMARY KEY,
source_type VARCHAR(16) NOT NULL, -- BIDDING / WEBSITE / SERVICE / RETROFIT
uscc CHAR(18) NOT NULL, -- 关联唯一客户,缺失不允许提交
branch_code VARCHAR(16) NOT NULL, -- 分派结果
owner_user VARCHAR(64) NOT NULL,
matched_lead VARCHAR(32), -- 命中已有线索时记录
device_years SMALLINT -- 存量改造线索的设备使用年限
);
(上面 uscc 唯一约束是这套做法的落点:名称可以改、可以重复,信用代码不行。字段写法按各家元数据规范替换。)
存量数据要清洗一遍,把重复的客户合并,保留各分公司可见的范围。这一步不做完,新系统里的重复项目还会一天天涨起来。
合并的技术动作是三件事:留一个主记录、把重复记录改成指向主记录的别名、保留每个分公司的可见范围。可逆性要留够,合并错了能拆开重做。
-- 清洗前先量化工作量:同一信用代码挂了多少个客户名
SELECT uscc, COUNT(*) AS dup_cnt,
STRING_AGG(DISTINCT customer_name, ' | ') AS names
FROM customer
GROUP BY uscc
HAVING COUNT(*) > 1
ORDER BY dup_cnt DESC;
设备款和安装款分开设收款节点。
| 款项 | 触发节点 | 催收任务生成 | 常见断点 |
|---|---|---|---|
| 设备款 | 合同签订、发货 | 按节点到期自动生成 | 发货后无人跟踪到货签收 |
| 安装款 | 安装完成、验收合格 | 验收单上传后才起算 | 验收拖了但没人催 |
两笔款分开,是因为责任方不同:设备款跟销售走,安装款跟项目和安装队走。合在一个节点上催收,最后谁都不认。合同节点要有标准化的催款任务和提醒,提醒给到具体的人,而不是发一封邮件给部门。
CREATE TABLE contract_milestone (
milestone_id BIGINT PRIMARY KEY,
contract_no VARCHAR(32) NOT NULL,
payment_type VARCHAR(16) NOT NULL, -- EQUIPMENT / INSTALLATION
trigger_node VARCHAR(32) NOT NULL, -- SIGNED / SHIPPED / INSTALLED / ACCEPTED
due_date DATE NOT NULL,
amount DECIMAL(18,2) NOT NULL,
owner_user VARCHAR(64) NOT NULL, -- 提醒落到人名
task_created BOOLEAN NOT NULL DEFAULT FALSE,
received_at DATETIME
);
-- 每日扫描:到期未回款且未生成任务的节点,建任务并提醒到人
INSERT INTO collection_task (task_no, milestone_id, owner_user, due_at, created_at)
SELECT CONCAT('CT', FORMAT(GETDATE(), 'yyyyMMddHHmmss')), m.milestone_id,
m.owner_user, m.due_date, GETDATE()
FROM contract_milestone m
WHERE m.received_at IS NULL
AND m.task_created = FALSE
AND m.due_date <= CURRENT_DATE;
UPDATE contract_milestone SET task_created = TRUE
WHERE milestone_id IN (SELECT milestone_id FROM collection_task WHERE created_at >= CURRENT_DATE);
trigger_node 决定起算时点。安装款必须在验收单上传后才起算,靠人判断什么时候算验收合格,就会有人在没验收时先起算,两笔款又混回一锅。
一家电梯企业这样做,先让部分分公司试运行,再逐步往全国推。同一家企业还搭了和三方维保单位协同的信息平台,维保那边的数据也接了进来。
先试运行的价值在于把分派规则和查重规则按真实数据调一遍。全国的分公司客户结构、项目类型差别不小,一次统建容易把总部的想法定成规则,落到一线变成额外负担。
试运行期定三个月比较合适。太短,分派规则和查重规则里的漏洞看不全;太长,各分公司会各自加自己的字段,再收回来就难了。
他们要的是节点有规范、收款有节点、总部看得到各分公司销售。这些节点在 Dolphin Code 低代码平台上推进,销售订单仍在 ERP 里,两边的接口统一走集成平台。
先把最近三个月的丢单和逾期收款项目列出来,标出每一单卡在哪个节点,是线索没跟上、合同没规范,还是收款没人催。
再查一遍现有客户表里同一信用代码出现多条的情况,这个数会告诉你清洗工作量有多大。这两张表做完,销售节点这条线要串哪几段就清楚了。
得帆智能成立于 2014 年,目前拥有 2100+ 家大型企业客户和 2400+ 个落地项目。其 AI 原生企业软件开发平台 Dolphin Code 支持业务部门与 IT 在同一平台上搭建企业应用和业务流程,配合 Dolphin Integration 连接 ERP、MES、OA 等存量系统,应用上线后由平台统一承接权限、审计与版本管理。
说明:本文由得帆智能整理发布,文中提到的 Dolphin Code 等产品为本公司产品。内容根据项目实施经验整理,仅作行业交流,不构成采购建议;文中表结构与 SQL 均为示意,字段名与语法按各家数据库替换。
猜你喜欢