java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
@@ -738,6 +738,10 @@ endCalender.add(Calendar.HOUR, hours); if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) { return FeeDto.STATE_FINISH; } else if(FeeDto.FEE_FLAG_CYCLE_ONCE.equals(feeDto.getFeeFlag())){ if ((endCalender.getTime()).after(feeDto.getDeadlineTime())) { return FeeDto.STATE_FINISH; } } else { if ((endCalender.getTime()).after(feeDto.getConfigEndTime())) { return FeeDto.STATE_FINISH; @@ -768,6 +772,10 @@ endCalender.setTime(feeDto.getConfigEndTime()); } else { endCalender.setTime(feeDto.getImportFeeEndTime()); } } else if(FeeDto.FEE_FLAG_CYCLE_ONCE.equals(feeDto.getFeeFlag())){ if ((endCalender.getTime()).after(feeDto.getDeadlineTime())) { endCalender.setTime(feeDto.getDeadlineTime()); } } else { if ((endCalender.getTime()).after(feeDto.getConfigEndTime())) { @@ -1404,6 +1412,7 @@ return targetEndDateAndOweMonth; } //当前费用为一次性费用 Date maxEndTime = feeDto.getConfigEndTime(); if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) { //先取 deadlineTime if (feeDto.getDeadlineTime() != null) { @@ -1411,12 +1420,47 @@ } else if (!StringUtil.isEmpty(feeDto.getCurDegrees())) { targetEndDate = feeDto.getCurReadingTime(); } else if (feeDto.getImportFeeEndTime() == null) { targetEndDate = feeDto.getConfigEndTime(); targetEndDate = maxEndTime; } else { targetEndDate = feeDto.getImportFeeEndTime(); } //判断当前费用是不是导入费用 oweMonth = 1.0; }else if(FeeDto.FEE_FLAG_CYCLE_ONCE.equals(feeDto.getFeeFlag())){ maxEndTime = feeDto.getDeadlineTime(); Date billEndTime = DateUtil.getCurrentDate(); //建账时间 Date startDate = feeDto.getStartTime(); //计费起始时间 Date endDate = feeDto.getEndTime(); //缴费周期 long paymentCycle = Long.parseLong(feeDto.getPaymentCycle()); // 当前时间 - 开始时间 = 月份 double mulMonth = 0.0; mulMonth = dayCompare(startDate, billEndTime); // 月份/ 周期 = 轮数(向上取整) double round = 0.0; if ("1200".equals(feeDto.getPaymentCd())) { // 1200预付费 round = Math.floor(mulMonth / paymentCycle) + 1; } else { //2100后付费 round = Math.floor(mulMonth / paymentCycle); } // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间 targetEndDate = getTargetEndTime(round * paymentCycle, startDate);//目标结束时间 //费用项的结束时间<缴费的结束时间 费用快结束了 取费用项的结束时间 if (maxEndTime.getTime() < targetEndDate.getTime()) { targetEndDate = maxEndTime; } //说明欠费 if (endDate.getTime() < targetEndDate.getTime()) { // 目标到期时间 - 到期时间 = 欠费月份 oweMonth = dayCompare(endDate, targetEndDate); } if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) { targetEndDate = feeDto.getEndTime(); } } else { //周期性费用 //当前时间 Date billEndTime = DateUtil.getCurrentDate(); @@ -1440,8 +1484,8 @@ // 轮数 * 周期 * 30 + 开始时间 = 目标 到期时间 targetEndDate = getTargetEndTime(round * paymentCycle, startDate);//目标结束时间 //费用项的结束时间<缴费的结束时间 费用快结束了 取费用项的结束时间 if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) { targetEndDate = feeDto.getConfigEndTime(); if (maxEndTime.getTime() < targetEndDate.getTime()) { targetEndDate = maxEndTime; } //说明欠费 if (endDate.getTime() < targetEndDate.getTime()) { service-api/src/main/java/com/java110/api/bmo/fee/impl/FeeBMOImpl.java
@@ -337,10 +337,13 @@ if (FeeDto.FEE_FLAG_ONCE.equals(feeInfo.getFeeFlag())) { //缴费结束 feeMap.put("state", FeeDto.STATE_FINISH); } Date maxEndTime = feeInfo.getConfigEndTime(); if(!FeeDto.FEE_FLAG_CYCLE.equals(feeInfo.getFeeFlag())){ maxEndTime = feeInfo.getDeadlineTime(); } try { Date endTime = DateUtil.getDateFromString(paramInJson.getString("endTime"), DateUtil.DATE_FORMATE_STRING_A); Date configEndTime = feeInfo.getConfigEndTime(); if (endTime.getTime() >= configEndTime.getTime()) { if (endTime.getTime() >= maxEndTime.getTime()) { feeMap.put("state", FeeDto.STATE_FINISH); } } catch (ParseException e) { service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java
@@ -245,7 +245,7 @@ feeAttrPo3.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); //联系方式 feeAttrPo3.setValue(reqJson.getString("personTel")); feeAttrOwnerLinkPos.add(feeAttrPo3); if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag())) {//一次性费用 if (!FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag())) {//一次性费用 FeeAttrPo feeAttrPo4 = new FeeAttrPo(); feeAttrPo4.setFeeId(payFeePo.getFeeId()); feeAttrPo4.setCommunityId(reqJson.getString("communityId")); service-fee/src/main/java/com/java110/fee/bmo/fee/impl/FeeBMOImpl.java
@@ -344,10 +344,13 @@ if (FeeDto.FEE_FLAG_ONCE.equals(feeInfo.getFeeFlag())) { //缴费结束 feeMap.put("state", FeeDto.STATE_FINISH); } Date maxEndTime = feeInfo.getConfigEndTime(); if(!FeeDto.FEE_FLAG_CYCLE.equals(feeInfo.getFeeFlag())){ maxEndTime = feeInfo.getDeadlineTime(); } try { Date endTime = DateUtil.getDateFromString(paramInJson.getString("endTime"), DateUtil.DATE_FORMATE_STRING_A); Date configEndTime = feeInfo.getConfigEndTime(); if (endTime.getTime() >= configEndTime.getTime()) { if (endTime.getTime() >= maxEndTime.getTime()) { feeMap.put("state", FeeDto.STATE_FINISH); } } catch (ParseException e) { service-fee/src/main/java/com/java110/fee/cmd/fee/CreateFeeByComboCmd.java
@@ -130,7 +130,7 @@ List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); Assert.listOnlyOne(feeConfigDtos, "当前费用项ID不存在或存在多条" + reqJson.getString("configId")); if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag()) && config.containsKey("endTime")) { if (!FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag()) && config.containsKey("endTime")) { Date endTime = null; Date configEndTime = null; try { @@ -149,7 +149,7 @@ feePos.add(BeanConvertUtil.covertBean(addRoomFee(config, reqJson,feeConfigDtos), PayFeePo.class)); if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag())) { if (!FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag())) { feeAttrsPos.add(addFeeAttr(reqJson, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, config.containsKey("endTime") ? config.getString("endTime") : reqJson.getString("configEndTime"))); } service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java
@@ -132,17 +132,21 @@ feeConfigDto.setConfigId(feeDto.getConfigId()); feeConfigDto.setCommunityId(paramInObj.getString("communityId")); List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); if (feeConfigDtos != null && feeConfigDtos.size() == 1) { if (feeConfigDtos == null || feeConfigDtos.size() != 1) { throw new IllegalArgumentException("费用项不存在"); } Date maxEndTime = feeDtos.get(0).getDeadlineTime(); if (FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag())) { try { Date configEndTime = DateUtil.getDateFromString(feeConfigDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A); Date newDate = DateUtil.stepMonth(endTime, paramInObj.getInteger("cycles") - 1); if (newDate.getTime() > configEndTime.getTime()) { throw new IllegalArgumentException("缴费周期超过 缴费结束时间"); } } catch (Exception e) { maxEndTime = DateUtil.getDateFromString(feeConfigDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A); } catch (ParseException e) { logger.error("比较费用日期失败", e); } } Date newDate = DateUtil.stepMonth(endTime, paramInObj.getInteger("cycles") - 1); if (newDate.getTime() > maxEndTime.getTime()) { throw new IllegalArgumentException("缴费周期超过 缴费结束时间"); } } } service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
@@ -55,6 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; import java.text.ParseException; import java.util.*; @Java110Cmd(serviceCode = "fee.payFee") @@ -161,20 +162,22 @@ feeConfigDto.setCommunityId(reqJson.getString("communityId")); List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); if (feeConfigDtos != null && feeConfigDtos.size() == 1) { if (feeConfigDtos == null || feeConfigDtos.size() != 1) { throw new IllegalArgumentException("费用项不存在"); } Date maxEndTime = feeDtos.get(0).getDeadlineTime(); if (FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag())) { try { Date configEndTime = DateUtil.getDateFromString(feeConfigDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A); configEndTime = DateUtil.stepDay(configEndTime,5); Date newDate = DateUtil.stepMonth(endTime, reqJson.getDouble("cycles").intValue()); if (newDate.getTime() > configEndTime.getTime()) { throw new IllegalArgumentException("缴费周期超过 缴费结束时间"); } } catch (Exception e) { maxEndTime = DateUtil.getDateFromString(feeConfigDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A); } catch (ParseException e) { logger.error("比较费用日期失败", e); } } Date newDate = DateUtil.stepMonth(endTime, reqJson.getDouble("cycles").intValue()); if (newDate.getTime() > maxEndTime.getTime()) { throw new IllegalArgumentException("缴费周期超过 缴费结束时间"); } String selectUserAccount = reqJson.getString("selectUserAccount"); JSONArray params = JSONArray.parseArray(selectUserAccount); for (int paramIndex = 0; paramIndex < params.size(); paramIndex++) { service-fee/src/main/java/com/java110/fee/cmd/fee/SaveContractCreateFeeCmd.java
@@ -97,7 +97,7 @@ reqJson.put("feeFlag", feeConfigDtos.get(0).getFeeFlag()); reqJson.put("configEndTime", feeConfigDtos.get(0).getEndTime()); if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag()) && reqJson.containsKey("endTime")) { if (!FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag()) && reqJson.containsKey("endTime")) { Date endTime = null; Date configEndTime = null; try { @@ -176,7 +176,7 @@ curFailRoomCount++; feePos.add(BeanConvertUtil.covertBean(feeBMOImpl.addContractFee(contractDtos.get(roomIndex), reqJson, context), PayFeePo.class)); if (!StringUtil.isEmpty(contractDtos.get(roomIndex).getObjId())) { if (FeeDto.FEE_FLAG_ONCE.equals(reqJson.getString("feeFlag"))) { if (!FeeDto.FEE_FLAG_CYCLE.equals(reqJson.getString("feeFlag"))) { feeAttrsPos.add(feeBMOImpl.addFeeAttr(reqJson, context, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, reqJson.containsKey("endTime") ? reqJson.getString("endTime") : reqJson.getString("configEndTime"))); } service-fee/src/main/java/com/java110/fee/cmd/fee/SaveParkingSpaceCreateFeeCmd.java
@@ -91,7 +91,7 @@ reqJson.put("feeFlag", feeConfigDtos.get(0).getFeeFlag()); reqJson.put("configEndTime", feeConfigDtos.get(0).getEndTime()); if (FeeDto.FEE_FLAG_ONCE.equals(feeConfigDtos.get(0).getFeeFlag()) && reqJson.containsKey("endTime")) { if (!FeeDto.FEE_FLAG_CYCLE.equals(feeConfigDtos.get(0).getFeeFlag()) && reqJson.containsKey("endTime")) { Date endTime = null; Date configEndTime = null; try { @@ -227,7 +227,7 @@ curFailRoomCount++; feePos.add(BeanConvertUtil.covertBean(feeBMOImpl.addFee(ownerCarDtos.get(ownerCarIndex), reqJson, context), PayFeePo.class)); if (!StringUtil.isEmpty(ownerCarDtos.get(ownerCarIndex).getOwnerId())) { if (FeeDto.FEE_FLAG_ONCE.equals(reqJson.getString("feeFlag"))) { if (!FeeDto.FEE_FLAG_CYCLE.equals(reqJson.getString("feeFlag"))) { feeAttrsPos.add(feeBMOImpl.addFeeAttr(reqJson, context, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, reqJson.containsKey("endTime") ? reqJson.getString("endTime") : reqJson.getString("configEndTime"))); } service-user/src/main/java/com/java110/user/cmd/owner/SaveHandoverCmd.java
@@ -235,7 +235,7 @@ throw new CmdException("保存费用失败"); } if (FeeDto.FEE_FLAG_ONCE.equals(businessUnit.getString("feeFlag"))) { if (!FeeDto.FEE_FLAG_CYCLE.equals(businessUnit.getString("feeFlag"))) { feeAttrPo = addFeeAttr(businessUnit, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, paramInJson.containsKey("endTime") ? paramInJson.getString("endTime") : feeConfigDtos.get(0).getEndTime()); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);