日期:2014-05-20  浏览次数:20891 次

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伪代码为:
Java code

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;
                }
        }
}