| | |
| | | import com.java110.core.context.Environment; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.core.smo.IComputeFeeSMO; |
| | | import com.java110.dto.RoomAttrDto; |
| | | import com.java110.dto.RoomDto; |
| | | import com.java110.dto.room.RoomAttrDto; |
| | | import com.java110.dto.room.RoomDto; |
| | | import com.java110.dto.community.CommunityDto; |
| | | import com.java110.dto.contract.ContractDto; |
| | | import com.java110.dto.contract.ContractRoomDto; |
| | |
| | | import com.java110.intf.store.IContractRoomInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerCarInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerInnerServiceSMO; |
| | | import com.java110.po.feeReceiptDetail.FeeReceiptDetailPo; |
| | | import com.java110.po.fee.FeeReceiptDetailPo; |
| | | import com.java110.utils.constant.FeeConfigConstant; |
| | | import com.java110.utils.constant.ResponseConstant; |
| | | import com.java110.utils.exception.ListenerExecuteException; |
| | |
| | | if (Environment.isOwnerPhone(java110Properties)) { |
| | | return getOwnerPhoneFee(feeAmount); |
| | | } |
| | | |
| | | //todo 如果 cycle 为105 则 根据缴费时间段 改写下 |
| | | if ("105".equals(feeDto.getCycle())) { |
| | | double cycle = dayCompare(DateUtil.getDateFromStringB(feeDto.getCustomStartTime()), DateUtil.getDateFromStringB(feeDto.getCustomEndTime())); |
| | | feeDto.setCycle(cycle + ""); |
| | | } |
| | | // todo 按结束时间缴费 |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | double cycle = dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())); |
| | | feeDto.setCycle(cycle + ""); |
| | | } |
| | | |
| | | if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) { //房屋相关 |
| | | String computingFormula = feeDto.getComputingFormula(); |
| | | if (roomDto == null) { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | | } else { |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | BigDecimal cycle = null; |
| | | if (!StringUtil.isEmpty(feeDto.getCycle())) { |
| | | cycle = new BigDecimal(feeDto.getCycle()); |
| | | } |
| | | if (!StringUtil.isEmpty(feeDto.getCustEndTime())) { |
| | | cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()))); |
| | | } |
| | | if (cycle == null) { |
| | | feeTotalPrice = new BigDecimal(0); |
| | |
| | | ScriptEngineManager manager = new ScriptEngineManager(); |
| | | ScriptEngine engine = manager.getEngineByName("JavaScript"); |
| | | BigDecimal valueObj = null; |
| | | logger.debug("计算公式为:{}",value); |
| | | logger.debug("计算公式为:{}", value); |
| | | try { |
| | | value = engine.eval(value).toString(); |
| | | valueObj = new BigDecimal(Double.parseDouble(value)); |
| | | } catch (Exception e) { |
| | | //throw new IllegalArgumentException("公式计算异常,公式为【" + feeDto.getComputingFormulaText() + "】,计算 【" + value + "】异常"); |
| | | logger.error("公式计算异常,公式为【" + feeDto.getComputingFormulaText() + "】,计算 【" + value + "】异常",e); |
| | | logger.error("公式计算异常,公式为【" + feeDto.getComputingFormulaText() + "】,计算 【" + value + "】异常", e); |
| | | valueObj = new BigDecimal(0); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Date getDeadlineTime(FeeDto feeDto){ |
| | | public Date getDeadlineTime(FeeDto feeDto) { |
| | | Map info = getTargetEndDateAndOweMonth(feeDto); |
| | | return (Date)info.get("targetEndDate"); |
| | | return (Date) info.get("targetEndDate"); |
| | | } |
| | | |
| | | /** |
| | |
| | | oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP); |
| | | // todo 递增 |
| | | curOweMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime()); |
| | | }else{ |
| | | } else { |
| | | // todo 递增 |
| | | curOweMonth = dayCompare(feeDto.getEndTime(), feeDto.getDeadlineTime()); |
| | | } |