我在一家小型能源公司工作,我被要求创建一个方法,该方法将被调用,以确定我们的哪些技术人员将把公司下班时间的电话带回家。
我们有两张table我可以考虑
技师表
id name
--------------------
001 George
002 James
003 Wesley
004 Horace
005 Jason
006 Nice
离开table
id leaveDate
--------------------
005 2020/12/29
005 2020/12/30
002 2021/01/05
002 2021/01/13
003 2021/01/13
005 2021/01/22
历史记录表*尚不存在
id techPhoneDate
--------------------
001 2021/01/04
003 2021/01/05
我可以创建一个新的表与电话历史记录,以保持对谁历史上被分配到它的标签,我只想有一些东西,将确保轮换是公平的,并将跳过该人如果休假,并将分配给他们在下一个可能的天
如果是周末,我已经有了返回错误的代码,如果历史记录表已经有一个计算出的那天的技术人员,它只会返回那个技术人员。在计算时还应考虑是否将增加一名新技术人员。
我起初认为这是一个简单的方法,但我如何才能找到谁负责今天的电话呢?
private List<Technicians> techs;
private List<PhoneHistory> phoneHistory;
private List<Leaves> leaves;
public RotationResponse getTechOnDuty(String rotationDate) {
RotationResponse resp = new RotationResponse();
try {
resp.setRotationDate(rotationDate);
//check if its a weekend
resp = validateDate(resp);
if (resp.getErrorMessage() != null) {
return resp;
}
String techId = findTechIdForDate(rotationDate); // find in history if there is an existing tech already calculated
if (StringUtils.isNotBlank(techId)){
resp.setTechnician(findTechById(techId));
} else {
resp.setTechnician(findTechById(getTechPhoneRotationForToday(rotationDate)));
}
return resp;
} catch (Exception e) {
return resp.setErrorMessage(e.getMessage());
}
}
private String getTechPhoneRotationForToday(String rotationDate){
// TODO
}
1条答案
按热度按时间x759pob21#
也许 吧:
为每个技术人员保留一张表格,上面有团队加入和离开的日期(他们是什么时候开始为公司工作的)
定义一个时间段来分析决策,例如过去的一年
在该期间和每个工作日重复:
数一数那天队里有多少技术人员
按技术人员的1/#计算比例电话“义务”
为每位技术人员合计此项义务
如果技师有电话值班,则每天从“义务金额”中扣除1
然后在第二天指派没有休假且负有最高责任的技术人员
也可能避免连续的工作日:使用下一个最高责任的人
确定一天是否是一个工作日本身很有挑战性