挑战用WPS灵犀开发APS排程系统(四):工作日历+节假日+工时开发

Lv.4 核心创作者
挑战用WPS灵犀开发APS排程系统(四):工作日历+节假日+工时
本文由 AI 辅助创作
工具:灵犀专业版
模型:DeepSeek V4 Flash
灵点消耗:多维表格消耗:47 写文章消耗:5
#多维表格 #工厂管理 #AI应用
大家好,我是古老师。
前三篇我们一步步搭起了 APS 的骨架:先是产品资料和代码规则,再是销售订单,然后是产能负荷。接单前先比负荷,那真到排产的时候呢?订单哪天开工、哪天完工,靠什么算?
答案就一个:工作日历。
排程系统里,日期就是地基。没有一张干净的工作日历,交期、排产、负荷全是空中楼阁。今天这篇,我把工作日历这块一次讲透——不止生成日期,还把节假日和工时一起解决掉。
一、为什么排程必须先有工作日历
工厂排产看的是"哪天能上线、哪天能出货",不是"第几天"。一张工作日历,就是给系统一把时间的尺子。
在 APS 里,工作日历要扛三件事:
排产的时间基准:交期倒排、工序衔接,都要落在具体日期上
产能的可用口径:哪天上班、上几个小时,决定这一天能吃多少量
节假日与放假的统一规则:法定假、工厂假,一张表说清
说白了,后面所有排程计算都要"查日历"。所以第一步,先把日历做扎实。
二、生成 366 天工作日历
多维表里没有现成的日历,我直接用 AirScript 脚本生成。逻辑不复杂,关键是定了一个全量模式:
以今天为起点,生成 T+365 天(含今天共 366 个自然日)
表里已有数据 → 先清空再重建
没数据 → 直接生成
重复跑不叠加,永远是一套完整的 366 天
这里踩了个坑:AirScript 读空表的时候,返回的 records 是 null 而不是空数组,直接拼进去会把 null 塞进数据,后面取记录 ID 就报"reading id"。处理办法就是读之前先判空。
还有个小坑:建表之后立刻再查表列表,可能查不到刚建的表(数据还没同步),要直接用建表接口的返回值拿表 ID,别二次查。
三、日期拆成"年、月、日、周、星期"
日历只有日期还不够。排产经常要按周、按星期算,所以我把每个日期拆成五个字段,全是公式,一行不用填:
年 =YEAR([@日期])
月 =MONTH([@日期])
日 =DAY([@日期])
周 =WEEKNUM([@日期],2)(周一为一周第一天)
星期 =WEEKDAY([@日期],2)(1-7,周一=1)
这样查"哪周""周几"就非常方便,366 条记录一次算完,全部有值。
四、节假日:先靠 AI,再建自己的数据库
光有星期还不够,工厂排产还得知道哪天放假。这里我走了两步。
第一步:用多维表 AI 自动识别节日
我用多维表的"自定义 AI 生成"字段,配一句规则:把日期转换成对应的中国或世界节日,没有就留空。AI 自动把 8/23 识别成世界体育记者日、9/3 中国人民抗日战争胜利纪念日……不用自己一条条录,省事。
第二步:建一本未来 10 年的节假日账
但 AI 是云端算的,有次数限制,而且农历节日它不一定准。放假这事,尤其是春节、端午、清明这些农历节日,得自己有一本"账"。
所以我建了一张「节假日数据库」,把未来 10 年(2026-2036)每一天都算好:日期、农历月日、节日、放假天数。
放假规则按工厂实际来定:
元旦 1 天
劳动节 2 天
端午节 1 天
清明节 1 天(按节气算)
国庆节 3 天
春节 12 天(腊月廿八到正月初八)
这一算就是 4000 多天,一次算好、分批写入,以后每年重跑一次就能续上。
第三步:跨表引用,数据只存一份
工作日历这边不用重录,直接建查找引用公式,从「节假日数据库」把放假天数和节日取过来:
放假天数 =IFNA(XLOOKUP([@日期],节假日数据库![日期],节假日数据库![放假天数]),0)
工厂节日 =IFNA(XLOOKUP([@日期],节假日数据库![日期],节假日数据库![节日]),"")
数据只存一份,两表联动,改一处全表生效。
五、工时:一张表把排产口径定死
有了放假天数,工时就好算了。我加了一个「工时」公式字段,规则就三条:
放假天数大于 0(节假日)→ 工时 0
周日 → 工时 0
周三、周六 → 工时 8
其余 → 工时 10
公式写出来就是嵌套判断。这里又踩了个坑:星期字段在公式里读出来是文本 "7",直接用 =7 匹配不上,得写成文本数字都兼容的判断。
算完一校验,366 行全对:国庆 3 天、春节、清明、端午、劳动、元旦全部归 0,周日 0、周三周六 8、其余 10。
| 📌 | 六、踩坑总结
|
最后说一句
以前做排程,日历都是手工排、放假靠人记,一到春节就乱套。现在一张工作日历 + 一本 10 年的节假日账 + 一个工时公式,把"时间"这个最基础的维度彻底打牢了。
接下来,排程引擎就能安心在日历上跑了。每一步都不难,但地基要打稳。想继续看的点个关注,我们下一篇见。
术语解释
文章里出现的技术名词,一句话说清楚:
AirScript:WPS 多维表格内置的脚本语言,能在表里直接跑批量操作,比如生成日历、批量写入。
全量模式:每次运行都先把旧数据清空再重建,保证结果是完整的一份,不会重复叠加。
XLOOKUP:跨表查找函数,按一个字段在另一张表里找对应的值。
农历/节气:春节、清明、端午这些按农历或节气定的节日,公历日期每年不固定,需要专门算。
公式字段:多维表里由公式自动计算的字段,源数据一变,结果自动刷新。
| 📌 | 古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者 深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。 |
@金山办公