package com.java110.fee.tempCar; import com.java110.core.factory.TempCarFeeFactory; import com.java110.dto.fee.TempCarFeeResult; import com.java110.dto.machine.CarInoutDto; import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigAttrDto; import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto; import com.java110.intf.fee.IComputeTempCarFee; import com.java110.intf.fee.ITempCarFeeConfigAttrInnerServiceSMO; import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO; import com.java110.utils.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import java.text.ParseException; import java.util.Date; import java.util.List; public abstract class BaseComputeTempCarFee implements IComputeTempCarFee { @Autowired private ITempCarFeeConfigInnerServiceSMO tempCarFeeConfigInnerServiceSMOImpl; @Autowired private ITempCarFeeConfigAttrInnerServiceSMO tempCarFeeConfigAttrInnerServiceSMOImpl; @Override public TempCarFeeResult computeTempCarFee(CarInoutDto carInoutDto, TempCarFeeConfigDto tempCarFeeConfigDto) throws Exception { return computeTempCarFee(carInoutDto, tempCarFeeConfigDto, null); } @Override public TempCarFeeResult computeTempCarFee(CarInoutDto carInoutDto, TempCarFeeConfigDto tempCarFeeConfigDto, List tempCarFeeConfigAttrDtos) throws Exception { if (tempCarFeeConfigAttrDtos == null || tempCarFeeConfigAttrDtos.size() < 1) { TempCarFeeConfigAttrDto tempCarFeeConfigAttrDto = new TempCarFeeConfigAttrDto(); tempCarFeeConfigAttrDto.setConfigId(tempCarFeeConfigDto.getConfigId()); tempCarFeeConfigAttrDto.setCommunityId(tempCarFeeConfigDto.getCommunityId()); tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto); } TempCarFeeResult result = doCompute(carInoutDto, tempCarFeeConfigDto, tempCarFeeConfigAttrDtos); //获取停车时间 long min = TempCarFeeFactory.getTempCarMin(carInoutDto); long hours = min / 60; //因为两者都是整数,你得到一个int long minutes = min % 60; result.setMin(minutes); result.setHours(hours); return result; } /** * 计算 费用 * * @param carInoutDto * @param tempCarFeeConfigDto * @param tempCarFeeConfigAttrDtos * @return */ public abstract TempCarFeeResult doCompute(CarInoutDto carInoutDto, TempCarFeeConfigDto tempCarFeeConfigDto, List tempCarFeeConfigAttrDtos); /** * 判断 用户是支付完成 * * @param carInoutDto * @return */ public static long getTempCarMin(CarInoutDto carInoutDto) { //支付时间是否超过15分钟 Date payTime = null; try { //不是支付完成 状态 if (CarInoutDto.STATE_PAY.equals(carInoutDto.getState())) { payTime = carInoutDto.getCreateTime(); } else { payTime = DateUtil.getDateFromString(carInoutDto.getInTime(), DateUtil.DATE_FORMATE_STRING_A); } Date nowTime = DateUtil.getCurrentDate(); //支付完成超过15分钟 return (nowTime.getTime() - payTime.getTime()) / (60 * 1000); } catch (ParseException e) { e.printStackTrace(); } return 0; } }