java 判断的问题
目前有下列一组规则,需要判断是否可用。
有4个参数:
canReserve=true;//是否可用
startday;//入住日期
endday;//离店日期
days;//入住天数
predays//提前入住天数
有一组list数据,对象内容为startdate、enddate、CloseToArrival、CloseToArrival、status、MinLOS、MAXLOS、LeadingTime
比对规则为:
1、状态(Status):“O” 或为空表明可用;“C”关闭或者满房。入住期间,如果该供应商、酒店、房型、价格计划下,有一天出现关房状态C,则该产品不可预订。
2、是否对当天入住关闭(CloseToArrival),“O”生效,“C”或为空不再做该检查。即如果入住日期落在了[STARTDATE,ENDDATE]期间,且该字段为”O”,则该供应商、酒店、房型、价格计划不可预订。
3、是否对当天离店关闭(CloseToArrival),“O”生效,“C” 或为空不做该检查。即如果离店日期落在了[STARTDATE,ENDDATE]期间,且该字段为“O”,则该供应商、酒店、房型、价格计划不可预订。
4、最小入住天数(MinLOS)。当大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果入住天数大于等于该值,才能预订。
5、最大入住天数(MAXLOS)。当大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果入住天数小于等于该值,才能预订。
6、提前预订天数(LeadingTime)。当该字段大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果提前预订天数大于等于该值,才能预订。
我写的java伪代码为:
for(每一个价格计划){ for(everyday){ if(everyday>=startdate and everyday<=enddate){ canReserve=true; if(Status=="O"){ canReserve=false;//不能预定 break; canReserve=false;//不能预定 Break; }else{ //是否对当天入住关闭(CloseToArrival if(everyday==startday){ if(CloseToArrival=='O' and everyday>=startdate and everday<=enddate){ canReserve=false; break; } //最小入住天数 if(MinLOS>0){ if(everyday>=startdate and everday<=enddate){ if(days>MinLOS) canReserve=true; else{ canReserve=false; break; } }else{ canReserve=false; break; } } //最大入住天数 if(MAXLOS>0){ if(everyday>=startdate and everday<=enddate){ if(days<MAXLOS) canReserve=true; else{ canReserve=false; break; } }else{ canReserve=false; break; } } //提前预定天数 if(LeadingTime>0){ if(everyday>=startdate and everday<=enddate){ if(predays>LeadingTime) canReserve=true; else{ canReserve=false; break; } }else{ canReserve=false; break; } } } //是否对当天离店关闭(CloseToDeparture if(everyday==endday){ if(CloseToDeparture=='O' and everyday>=startdate and everday<=enddate){ canReserve=false; break; } } }else{ canReserve=false;//不能预定 Continue; } }}