分享一篇代码,感觉有纪录意义

 其实真实的逻辑比较绕

    //确定入住 判断整租还是分租  是否为负责人
    @RequestMapping(value = "checkIn", method = RequestMethod.GET)
	@ResponseBody
	public ApiResponseResult checkIn(Register register,int isBook) {

    	/*Register register=registerService.getRegister(registers.getId());*/
    	Hotel h = hotelService.getHotel(register.getHotelId());    
    	String now =  CommonUtil.now();
    	Room r=null;
    	ShareOpenDoor or=new ShareOpenDoor();
    	//判断房间号码是否存在
    	if(register.getRoomNo()!=null&&register.getRoomNo()!="") {
       	 r = this.roomService.getRoomByRoomNo(register.getRoomNo(), h.getId());    	
       	if(r==null){
       		return ApiResponseResult.failure().message("房间号不存在");
       	}    }
    	
    	Card card=null;
    	if(StringUtils.isNotEmpty(register.getCardno() )){
			card = cardService.getCardByHotelIdAndCardno(h.getId(), register.getCardno()); 
			List<ShareOpenDoor> shareOpen4=shareOpenDoorService.getHotelAndCardNo(h.getId(), register.getCardno());
        	if(card==null||shareOpen4.size()>0){
        		 return ApiResponseResult.failure("卡不属于这个公寓或者卡已经被分配");
        	}  }
    	if((register.getStartTime()==null||(register.getStartTime()).equals(""))||(register.getEndTime()==null||(register.getEndTime()).equals(""))) {
    		return ApiResponseResult.failure().message("开始时间和结束时间不能为空");
    	}
    	//判断号码是否已经存在租客表
      	ShareOpenDoor or1=shareOpenDoorService.getShareOpenDoorPhone(register.getHotelId(),register.getMobilePhone());
    	if(or1!=null) {
    		 return ApiResponseResult.failure("手机号码已经入住或者预订!!!");
    	}
    	List<ShareOpenDoor> list1=shareOpenDoorService.getBookAndHotelAndRoom(register.getHotelId(), register.getRoomNo());//已经入住
    	List<ShareOpenDoor> list2=shareOpenDoorService.getBookAndHotel(register.getHotelId(), register.getRoomNo());//预订
    	ShareOpenDoor shareOpen2=null;
    	if(list1.size()>0) {
    		shareOpen2=list1.get(0);
    	}
    	ShareOpenDoor shareOpen3=null;
    	if(list2.size()>0) {
    		shareOpen3=list2.get(0);
    	}
    	//分租
    	if(isBook==0) {
    		if(shareOpen3!=null) {
    		if(shareOpen3.getPersoncharge()!=null) {
    			 return ApiResponseResult.failure("不能进行分租!!!");
    		}
    		}	
    	}
    	//整租
    	if(isBook==1) {
    		if(shareOpen3!=null) {
    		if(shareOpen3.getPersoncharge()==null) {
   			 return ApiResponseResult.failure("不能进行整租!!!");
    		}
   		}
    	}
    	if(isBook==0) {//分租
    		if(shareOpen2!=null) {//前面分租有数据
        			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        			Date date1=null;
        			Date date2=null;
        			Long ts1=null;
                    Long ts2=null;
        			try {
        				date2= simpleDateFormat.parse(register.getStartTime());
        			} catch (ParseException e) {
        				// TODO Auto-generated catch block
        				e.printStackTrace();
        			}
        			for(ShareOpenDoor door:list1) {
        				 try {
        					date1 = simpleDateFormat.parse(door.getEndTime());
        				} catch (ParseException e) {
        					// TODO Auto-generated catch block
        					e.printStackTrace();
        				}
        				 ts1 = date1.getTime();
        				 ts2 = date2.getTime();
        				if(ts1>ts2) {
        					 return ApiResponseResult.failure("预订时间不能小于租期时间!!!");
        				}
            		
            	}
        			or.setOptime(now);
        	    	or.setRoomNo(register.getRoomNo());
        	    	or.setHotel(h);
        	    	or.setCardno(register.getCardno());
        	    	or.setSharetype(0);
        	    	or.setMobilePhone(register.getMobilePhone());
        	    	or.setIdNumber(register.getIdNumber());
        	    	or.setCustomerName(register.getCustomerName());
        	    	or.setStartTime(register.getStartTime());
        	    	or.setEndTime(register.getEndTime());
        	    	or.setSex(register.getSex());
        	    	or.setCardstatus(1);
        	    	or.setDostatus(1);
        	    	or.setSharetype(1);
        	    	shareOpenDoorService.addOrUpdate(or);
        	    	registerService.delete(register.getId());
        	    	return ApiResponseResult.success();
        			
        		}else {  //分租无数据
    		or.setOptime(now);
	    	or.setRoomNo(register.getRoomNo());
	    	or.setHotel(h);
	    	or.setCardno(register.getCardno());
	    	or.setSharetype(0);
	    	or.setIdNumber(register.getIdNumber());
	    	or.setCustomerName(register.getCustomerName());
	    	or.setStartTime(register.getStartTime());
	    	or.setEndTime(register.getEndTime());
	    	or.setSex(register.getSex());
	    	or.setCardstatus(1);
	    	or.setDostatus(1);
	    	or.setSharetype(1);
	    	shareOpenDoorService.addOrUpdate(or);
	    	registerService.delete(register.getId());
	    	return ApiResponseResult.success();
        		}
    	}
    	if(isBook==1) {  //整租
    		if(shareOpen3!=null) {   //整租前面有数据预订
    		or.setOptime(now);
        	or.setRoomNo(register.getRoomNo());
        	or.setHotel(h);
        	or.setCardno(register.getCardno());
        	or.setSharetype(0);
        	or.setIdNumber(register.getIdNumber());
        	or.setMobilePhone(register.getMobilePhone());
        	or.setCustomerName(register.getCustomerName());
        	or.setStartTime(shareOpen3.getStartTime());
        	or.setEndTime(shareOpen3.getEndTime());
        	or.setSex(register.getSex());
        	or.setPersoncharge(shareOpen3.getPersoncharge());
        	or.setCardstatus(1);
        	or.setSharetype(1);
        	or.setDostatus(1);
        	shareOpenDoorService.addOrUpdate(or);
        	registerService.delete(register.getId());
        	return ApiResponseResult.success();
        } else {  //整租前面无数据
        	if(shareOpen2!=null) {
        	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		Date date1=null;
    		Date date2=null;
    		Long ts1=null;
            Long ts2=null;
        	try {
    			date2= simpleDateFormat.parse(register.getStartTime());
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		for(ShareOpenDoor door:list1) {
    			 try {
    				date1 = simpleDateFormat.parse(door.getEndTime());
    			} catch (ParseException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			 ts1 = date1.getTime();
    			 ts2 = date2.getTime();
    			if(ts1>ts2) {
    				 return ApiResponseResult.failure("预订时间不能小于租期时间!!!");
    			}
    		
    	}
    		or.setOptime(now);
	    	or.setRoomNo(register.getRoomNo());
	    	or.setHotel(h);
	    	or.setCardno(register.getCardno());
	    	or.setSharetype(0);
	    	or.setMobilePhone(register.getMobilePhone());
	    	or.setIdNumber(register.getIdNumber());
	    	or.setCustomerName(register.getCustomerName());
	    	or.setStartTime(register.getStartTime());
	    	or.setEndTime(register.getEndTime());
	    	or.setSex(register.getSex());
	    	or.setPersoncharge(register.getMobilePhone());
	    	or.setCardstatus(1);
	    	or.setSharetype(1);
	    	or.setDostatus(1);
	    	shareOpenDoorService.addOrUpdate(or);
	    	registerService.delete(register.getId());
	    	return ApiResponseResult.success();
        }else {
        	or.setOptime(now);
	    	or.setRoomNo(register.getRoomNo());
	    	or.setCardno(register.getCardno());
	    	or.setHotel(h);
	    	or.setSharetype(0);
	    	or.setMobilePhone(register.getMobilePhone());
	    	or.setIdNumber(register.getIdNumber());
	    	or.setCustomerName(register.getCustomerName());
	    	or.setStartTime(register.getStartTime());
	    	or.setEndTime(register.getEndTime());
	    	or.setSex(register.getSex());
	    	or.setPersoncharge(register.getMobilePhone());
	    	or.setCardstatus(1);
	    	or.setSharetype(1);
	    	or.setDostatus(1);
	    	shareOpenDoorService.addOrUpdate(or);
	    	registerService.delete(register.getId());
	    	return ApiResponseResult.success();
        }
        	
        }}
    	return ApiResponseResult.success();
    }

 

posted @   码海兴辰  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示