|
|
@@ -461,7 +461,7 @@ public class QueryOweFeeImpl implements IQueryOweFee {
|
|
|
|
|
|
private void dealFeePs(ParkingSpaceDto tmpParkingSpaceDto, FeeDto feeDto) {
|
|
|
// 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间
|
|
|
- Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto);
|
|
|
+ Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto);
|
|
|
Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate");
|
|
|
double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth");
|
|
|
if (!tmpParkingSpaceDto.getPsId().equals(feeDto.getPayerObjId())) {
|
|
|
@@ -579,7 +579,7 @@ public class QueryOweFeeImpl implements IQueryOweFee {
|
|
|
}
|
|
|
|
|
|
private void dealFeeRoom(RoomDto tmpRoomDto, FeeDto feeDto) {
|
|
|
- Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto);
|
|
|
+ Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto);
|
|
|
Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate");
|
|
|
double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth");
|
|
|
if (!tmpRoomDto.getRoomId().equals(feeDto.getPayerObjId())) {
|
|
|
@@ -658,95 +658,7 @@ public class QueryOweFeeImpl implements IQueryOweFee {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private Map getTargetEndDateAndOweMonth(FeeDto feeDto) {
|
|
|
- Date targetEndDate = null;
|
|
|
- double oweMonth = 0.0;
|
|
|
|
|
|
- Map<String, Object> targetEndDateAndOweMonth = new HashMap<>();
|
|
|
-
|
|
|
- if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
|
|
|
- targetEndDate = feeDto.getEndTime();
|
|
|
- targetEndDateAndOweMonth.put("oweMonth", oweMonth);
|
|
|
- targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
|
|
|
- return targetEndDateAndOweMonth;
|
|
|
- }
|
|
|
- if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
|
|
|
- if (feeDto.getDeadlineTime() != null) {
|
|
|
- targetEndDate = feeDto.getDeadlineTime();
|
|
|
- } else if (!StringUtil.isEmpty(feeDto.getCurDegrees())) {
|
|
|
- targetEndDate = feeDto.getCurReadingTime();
|
|
|
- } else if (feeDto.getImportFeeEndTime() == null) {
|
|
|
- targetEndDate = feeDto.getConfigEndTime();
|
|
|
- } else {
|
|
|
- targetEndDate = feeDto.getImportFeeEndTime();
|
|
|
- }
|
|
|
- //判断当前费用是不是导入费用
|
|
|
- oweMonth = 1.0;
|
|
|
-
|
|
|
- } else {
|
|
|
- //当前时间
|
|
|
- Date billEndTime = DateUtil.getCurrentDate();
|
|
|
- //开始时间
|
|
|
- Date startDate = feeDto.getStartTime();
|
|
|
- //到期时间
|
|
|
- Date endDate = feeDto.getEndTime();
|
|
|
- if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
|
|
|
- OwnerCarDto ownerCarDto = new OwnerCarDto();
|
|
|
- ownerCarDto.setCommunityId(feeDto.getCommunityId());
|
|
|
- ownerCarDto.setCarId(feeDto.getPayerObjId());
|
|
|
- List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
|
|
|
-
|
|
|
- if (ownerCarDtos == null || ownerCarDtos.size() != 1) {
|
|
|
- targetEndDateAndOweMonth.put("oweMonth", 0);
|
|
|
- targetEndDateAndOweMonth.put("targetEndDate", "");
|
|
|
- return targetEndDateAndOweMonth;
|
|
|
- }
|
|
|
-
|
|
|
- targetEndDate = ownerCarDtos.get(0).getEndTime();
|
|
|
- //说明没有欠费
|
|
|
- if (endDate.getTime() >= targetEndDate.getTime()) {
|
|
|
- // 目标到期时间 - 到期时间 = 欠费月份
|
|
|
- oweMonth = 0;
|
|
|
- targetEndDateAndOweMonth.put("oweMonth", oweMonth);
|
|
|
- targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
|
|
|
- return targetEndDateAndOweMonth;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //缴费周期
|
|
|
- long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
|
|
|
- // 当前时间 - 开始时间 = 月份
|
|
|
- double mulMonth = 0.0;
|
|
|
- mulMonth = DateUtil.dayCompare(startDate, billEndTime);
|
|
|
-
|
|
|
- // 月份/ 周期 = 轮数(向上取整)
|
|
|
- double round = 0.0;
|
|
|
- if ("1200".equals(feeDto.getPaymentCd())) { // 预付费
|
|
|
- round = Math.floor(mulMonth / paymentCycle) + 1;
|
|
|
- } else { //后付费
|
|
|
- round = Math.floor(mulMonth / paymentCycle);
|
|
|
- }
|
|
|
- // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间
|
|
|
- targetEndDate = getTargetEndTime(round * paymentCycle, startDate);
|
|
|
- //费用 快结束了
|
|
|
- if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) {
|
|
|
- targetEndDate = feeDto.getConfigEndTime();
|
|
|
- }
|
|
|
- //说明没有欠费
|
|
|
- if (endDate.getTime() < targetEndDate.getTime()) {
|
|
|
- // 目标到期时间 - 到期时间 = 欠费月份
|
|
|
- oweMonth = DateUtil.dayCompare(endDate, targetEndDate);
|
|
|
- }
|
|
|
-
|
|
|
- if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) {
|
|
|
- targetEndDate = feeDto.getEndTime();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- targetEndDateAndOweMonth.put("oweMonth", oweMonth);
|
|
|
- targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
|
|
|
- return targetEndDateAndOweMonth;
|
|
|
- }
|
|
|
|
|
|
private Date getTargetEndTime(double v, Date startDate) {
|
|
|
Calendar endDate = Calendar.getInstance();
|