wuxw
2024-02-26 4356029f74f35f4df426f223e1c774f4912984a6
优化结束时间
6个文件已修改
73 ■■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/IComputeFeeSMO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/api/FeeApi.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/oweFeeCallable/SaveOweFeeCallableCmd.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java
@@ -176,6 +176,8 @@
    private String curYear;
    private String targetEndTime;
    public String getAmount() {
        return amount;
    }
@@ -866,4 +868,12 @@
    public void setCurYear(String curYear) {
        this.curYear = curYear;
    }
    public String getTargetEndTime() {
        return targetEndTime;
    }
    public void setTargetEndTime(String targetEndTime) {
        this.targetEndTime = targetEndTime;
    }
}
java110-core/src/main/java/com/java110/core/smo/IComputeFeeSMO.java
@@ -159,6 +159,9 @@
    void computeEveryOweFee(FeeDto tmpFeeDto, RoomDto roomDto);
    void computeEveryOweFeeByTargetEndTime(FeeDto tmpFeeDto, String targetEndTime);
    /**
     * 计算停车时间和费用
     *
@@ -196,4 +199,5 @@
    void dealRentRateCustEndTime(FeeDto feeDto, Date custEndTime);
    long computeOneIntegralQuantity(IntegralRuleConfigDto integralRuleConfigDto, JSONObject reqJson);
}
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
@@ -117,6 +117,46 @@
        computeFeePrice(tmpFeeDto, roomDto);
    }
    /**
     * 设定结束时间
     *
     * @param feeDto
     * @param targetEndTime
     */
    @Override
    public void computeEveryOweFeeByTargetEndTime(FeeDto feeDto, String targetEndTime) {
        Date targetEndDate = DateUtil.getDateFromStringB(targetEndTime);
        double oweMonth = 1.0;
        if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) {
            targetEndDate = feeDto.getEndTime();
        }
        if (feeDto.getEndTime().getTime() < targetEndDate.getTime()) {
            // 目标到期时间 - 到期时间 = 欠费月份
            oweMonth = DateUtil.dayCompare(feeDto.getEndTime(), targetEndDate);
        }
        String computingFormula = feeDto.getComputingFormula();
        Map feePriceAll = getFeePrice(feeDto, null);
        feeDto.setFeePrice(Double.parseDouble(feePriceAll.get("feePrice").toString()));
        BigDecimal price = new BigDecimal(feeDto.getFeePrice());
        price = price.multiply(new BigDecimal(oweMonth));
        feeDto.setFeeTotalPrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        feeDto.setDeadlineTime(targetEndDate);
        //动态费用
        if ("4004".equals(computingFormula)
                && FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
                && !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
            feeDto.setAmountOwed(feeDto.getFeeTotalPrice() + "");
            //feeDto.setDeadlineTime(DateUtil.getCurrentDate()); 欠费日期不对先注释
        }
        //todo 考虑租金递增
        dealRentRate(feeDto);
    }
    /**
     * 计算欠费金额
@@ -2144,7 +2184,6 @@
        // todo 最大周期
        double maxCycle = Math.ceil(rateMonth / rateCycle);
        // todo 增长前的欠费
service-fee/src/main/java/com/java110/fee/api/FeeApi.java
@@ -13,6 +13,7 @@
import com.java110.utils.exception.InitConfigDataException;
import com.java110.utils.exception.InitDataFlowContextException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -174,6 +175,7 @@
    public ResponseEntity<String> listOweFees(@RequestParam(value = "payObjId", required = false) String payObjId,
                                              @RequestParam(value = "payObjType", required = false) String payObjType,
                                              @RequestParam(value = "ownerId", required = false) String ownerId,
                                              @RequestParam(value = "targetEndTime", required = false) String targetEndTime,
                                              @RequestParam(value = "communityId") String communityId) {
        if (StringUtil.isEmpty(payObjId) && StringUtil.isEmpty(ownerId)) {
            throw new IllegalArgumentException("费用对象或者业主不能都为空");
@@ -186,6 +188,10 @@
                feeDto.setPayerObjId(payObjId);
            }
        }
        if(!StringUtil.isEmpty(targetEndTime)){
            targetEndTime = DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(targetEndTime),1);
            feeDto.setTargetEndTime(targetEndTime);
        }
        feeDto.setPayerObjType(payObjType);
        feeDto.setOwnerId(ownerId);
        feeDto.setCommunityId(communityId);
service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
@@ -81,7 +81,7 @@
        feeDto.setState(FeeDto.STATE_DOING);
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
        if (feeDtos == null || feeDtos.size() < 1) {
        if (ListUtil.isNull(feeDtos)) {
            feeDtos = new ArrayList<>();
            return ResultVo.createResponseEntity(feeDtos);
        }
@@ -92,7 +92,14 @@
        List<FeeDto> tmpFeeDtos = new ArrayList<>();
        for (FeeDto tmpFeeDto : feeDtos) {
            try {
                //todo 有目标结束时间,并且不是一次性费用
                if (!StringUtil.isEmpty(feeDto.getTargetEndTime())
                        && !FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
                ) {
                    computeFeeSMOImpl.computeEveryOweFeeByTargetEndTime(tmpFeeDto, feeDto.getTargetEndTime());//计算欠费金额
                } else {
                computeFeeSMOImpl.computeEveryOweFee(tmpFeeDto);//计算欠费金额
                }
                //如果金额为0 就排除
                tmpFeeDto.setFeeTotalPrice(
                        MoneyUtil.computePriceScale(
service-fee/src/main/java/com/java110/fee/cmd/oweFeeCallable/SaveOweFeeCallableCmd.java
@@ -33,6 +33,7 @@
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.ListUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
@@ -73,7 +74,7 @@
        JSONArray roomIds = reqJson.getJSONArray("roomIds");
        if (roomIds == null || roomIds.size() < 1) {
        if (ListUtil.isNull(roomIds)) {
            throw new CmdException("未包含房屋信息");
        }