| | |
| | | |
| | | |
| | | import com.java110.core.base.smo.BaseServiceSMO; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.dto.PageDto; |
| | | import com.java110.dto.fee.TempCarFeeResult; |
| | | import com.java110.dto.machine.CarInoutDetailDto; |
| | | import com.java110.dto.machine.CarInoutDto; |
| | | import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigAttrDto; |
| | | import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto; |
| | | import com.java110.dto.tempCarFeeConfig.TempCarFeeRuleDto; |
| | | import com.java110.dto.tempCarFeeConfig.TempCarFeeRuleSpecDto; |
| | | import com.java110.dto.fee.TempCarFeeConfigAttrDto; |
| | | import com.java110.dto.fee.TempCarFeeConfigDto; |
| | | import com.java110.dto.fee.TempCarFeeRuleDto; |
| | | import com.java110.dto.fee.TempCarFeeRuleSpecDto; |
| | | import com.java110.fee.dao.ITempCarFeeConfigServiceDao; |
| | | import com.java110.intf.fee.IComputeTempCarFee; |
| | | import com.java110.intf.fee.ITempCarFeeConfigAttrInnerServiceSMO; |
| | | import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO; |
| | | import com.java110.utils.factory.ApplicationContextFactory; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | |
| | | @Override |
| | | public List<CarInoutDto> computeTempCarFee(@RequestBody List<CarInoutDto> carInoutDtos) { |
| | | for (CarInoutDto carInoutDto : carInoutDtos) { |
| | | try { |
| | | TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto(); |
| | | tempCarFeeConfigDto.setPaId(carInoutDto.getPaId()); |
| | | tempCarFeeConfigDto.setCommunityId(carInoutDto.getCommunityId()); |
| | | List<TempCarFeeConfigDto> tempCarFeeConfigDtos = queryTempCarFeeConfigs(tempCarFeeConfigDto); |
| | | |
| | | if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { |
| | | continue; |
| | | } |
| | | TempCarFeeConfigAttrDto tempCarFeeConfigAttrDto = new TempCarFeeConfigAttrDto(); |
| | | tempCarFeeConfigAttrDto.setConfigId(tempCarFeeConfigDtos.get(0).getConfigId()); |
| | | tempCarFeeConfigAttrDto.setCommunityId(tempCarFeeConfigDto.getCommunityId()); |
| | | |
| | | List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto); |
| | | IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class); |
| | | |
| | | |
| | | TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDto, tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos); |
| | | carInoutDto.setMin(result.getMin()); |
| | | carInoutDto.setHours(result.getHours()); |
| | | if (CarInoutDto.CAR_TYPE_MONTH.equals(carInoutDto.getCarType())) { |
| | | carInoutDto.setPayCharge("0.00"); |
| | | } else { |
| | | carInoutDto.setPayCharge(result.getPayCharge() + ""); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("临时车算费失败", e); |
| | | } |
| | | } |
| | | |
| | | return carInoutDtos; |
| | | } |
| | | |
| | | @Override |
| | | public List<CarInoutDetailDto> computeTempCarInoutDetailFee(@RequestBody List<CarInoutDetailDto> carInoutDtos) { |
| | | TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto(); |
| | | tempCarFeeConfigDto.setPaId(carInoutDtos.get(0).getPaId()); |
| | | tempCarFeeConfigDto.setCommunityId(carInoutDtos.get(0).getCommunityId()); |
| | |
| | | |
| | | List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto); |
| | | IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class); |
| | | for (CarInoutDto carInoutDto : carInoutDtos) { |
| | | for (CarInoutDetailDto carInoutDto : carInoutDtos) { |
| | | try { |
| | | TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDto, tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos); |
| | | carInoutDto.setMin(result.getMin()); |
| | | carInoutDto.setHours(result.getHours()); |
| | | carInoutDto.setPayCharge(result.getPayCharge() + ""); |
| | | if (CarInoutDetailDto.CAR_INOUT_IN.equals(carInoutDto.getCarInout()) |
| | | && !CarInoutDetailDto.STATE_OUT.equals(carInoutDto.getInState()) |
| | | ) { |
| | | //进场失败 |
| | | if (CarInoutDetailDto.STATE_IN_FAIL.equals(carInoutDto.getInState())) { |
| | | carInoutDto.setMin(0); |
| | | carInoutDto.setHours(0); |
| | | carInoutDto.setPayCharge(0 + ""); |
| | | continue; |
| | | } |
| | | TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDto, tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos); |
| | | carInoutDto.setMin(result.getMin()); |
| | | carInoutDto.setHours(result.getHours()); |
| | | carInoutDto.setPayCharge(result.getPayCharge() + ""); |
| | | } else { |
| | | //获取停车时间 |
| | | Date stateDate = DateUtil.getDateFromString(carInoutDto.getInTime(), DateUtil.DATE_FORMATE_STRING_A); |
| | | Date endDate = null; |
| | | if(carInoutDto.getOutTime() == null){ |
| | | endDate = DateUtil.getCurrentDate(); |
| | | }else{ |
| | | endDate = DateUtil.getDateFromString(carInoutDto.getOutTime(), DateUtil.DATE_FORMATE_STRING_A); |
| | | } |
| | | |
| | | long min = (endDate.getTime() - stateDate.getTime()) / (60 * 1000); |
| | | long hours = min / 60; //因为两者都是整数,你得到一个int |
| | | long minutes = min % 60; |
| | | carInoutDto.setMin(minutes); |
| | | carInoutDto.setHours(hours); |
| | | carInoutDto.setPayCharge(carInoutDto.getRealCharge()); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("临时车算费失败", e); |
| | | } |