实现工厂自动排班功能
功能描述比如工厂现有3个班组(ABC),每个班组一天上班时间是12小时,分为早班和晚班,设置起始日期05-24的上班班组是B, 连续上班2天,那么手动排班的的顺序(BCABC....排列)如下:05-24 05-25 05-26 05-27 05-28 05-29 05-30 05-31 06-01 06-02
早 B B A A C C B B A A
晚 C C B B A A C C B B 。。。
这个通过云表怎么实现??
PS附加:
排班日期、工厂班组(A、B、C),上班班次(早、中、晚)、起始班组、连续上班天数都是不固定
本帖最后由 liu_lijian1 于 2021-6-23 14:32 编辑
按照你的描述,主要还是找规律,你按规律去设定,就是简单的加减法了。
你在排班时,肯定也是排未来指定日期内的班次,那么指定起止日期来排班。
开始日期:设定好开始日期的白班班组和晚班班组(假如设定:AB),就可以直接去自动累加计算了。
根据间隔天数,去自动更新班组:间隔天数除以6的余数0和余数为1, 白晚班就是AB
间隔天数除以6的余数2和余数为3, 白晚班就是BC
间隔天数除以6的余数4和余数为5, 白晚班就是CA
如果你是3天换班,设定开始日期白班夜班班组为:BC
根据间隔天数,去自动更新班组:间隔天数除以9的余数0和余数为1, 白晚班就是BC
间隔天数除以9的余数2和余数为3, 白晚班就是CA
间隔天数除以9的余数4和余数为5, 白晚班就是AB
如果搞不定,私信我!
这个步骤可以借鉴分摊法
规律是 前两天相等 那第三天就会变 那就在基本信息表里做三个辅助数据项: 1天前 和 2天前和 当前是第几天的 “标记”
因为日期可能没有规律 所以明细 别外做了了个 辅助数项 标记
那给明细赋值时 可用 IF 去判断 第一两天就等于基本数据里的早班值 ,
后面就做判断比如:第3天 就去判断 1天前 和2天前的值 如果不等情况 那就等于“1天前”的值 ,相等那就根据 “1天前“的值 去推出第3天用什么班
图2 和 图3
明细变了,首先给基本数据表里的 标记 (相当于第几天 )赋值 ,
其次是给 1天前 和 2天前 赋值
4. 给晚班赋值
5. 得出排班
本帖最后由 liu_lijian1 于 2021-6-24 19:44 编辑
思路都给你了,剩下的就是灵活去运用函数和公式去实现:
.
只设置了早晚班,早中晚的情况,自己去实现:
早班表达式:IF( 求余数((本表单.排班明细.间隔天数 + 本表单.换班周期*3) , 本表单.换班周期* 3)<本表单.换班周期 ,文本片段(本表单.上班班组,",",1) ,IF(求余数((本表单.排班明细.间隔天数 + 本表单.换班周期*3) , 本表单.换班周期* 3) >= 本表单.换班周期 *2,文本片段(本表单.上班班组,",",2) , 文本片段(本表单.上班班组,",",3)))
晚班表达式:IF( 求余数((本表单.排班明细.间隔天数 + 本表单.换班周期*3) , 本表单.换班周期* 3) <本表单.换班周期 ,文本片段(本表单.上班班组,",",2) ,IF(求余数((本表单.排班明细.间隔天数 + 本表单.换班周期*3) , 本表单.换班周期* 3)>= 本表单.换班周期 *2,文本片段(本表单.上班班组,",",3) , 文本片段(本表单.上班班组,",",1)))
求余数函数应用:求余数(被除数,除数)=余数 余数(6,9)=3
除数:就是一个轮班周期,等于换班天数*3 (找规律:2天一换班,周期就是6天;3天一换班,周期就是9天)
被除数:就是排班日期和开始日期的间隔天数,由于被除数为0(第一天和开始日期的间隔天是0)时,计算错误所以,我们可以把被除数加上一个周期天数就正常了。因此,被除数,等于 间隔天数+换班天数*3
以2天换班为例说明:
当余数<换班天数(1个周期中前面两天):
早班就取:班次中的第1班组(可以用:文本片段函数取值)
晚班就取:班次中的第2班组(可以用:文本片段函数取值)
当余数>=换班天数*2(1个周期中最后两天):
早班就取:班次中的第2班组(可以用:文本片段函数取值)
晚班就取:班次中的第3班组(可以用:文本片段函数取值)
剩下的就是(1个周期中中间两天):
早班就取:班次中的第3班组(可以用:文本片段函数取值)
晚班就取:班次中的第1班组(可以用:文本片段函数取值)
GIF动图当中还取错了,已经按上面思路调整后,是正确的了,没有再重新录GIF图片了
页:
[1]