单位收费业务逻辑修改

This commit is contained in:
dy
2025-09-14 16:36:53 +08:00
parent cdbe1a8a96
commit cd2be61255
6 changed files with 56 additions and 27 deletions

View File

@@ -102,6 +102,8 @@ public class Clean extends TenantEntity {
*/
private String searchValue;
private Double area;
@TableField(exist = false)
private CleanRelation cleanRelation;

View File

@@ -29,7 +29,7 @@ public class CostItems extends TenantEntity {
private Long id;
/**
* 费用类型
* 费用类型(0物业费1押金2停车费3维修费4.服务费5水费6电费7租金8其他)
*/
private String costType;
/**

View File

@@ -75,13 +75,13 @@ public class CostItemsBo extends BaseEntity {
/**
* 进位方式
*/
@NotBlank(message = "进位方式不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "进位方式不能为空", groups = { AddGroup.class, EditGroup.class })
private String roundingMode;
/**
* 保留小数
*/
@NotBlank(message = "保留小数不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "保留小数不能为空", groups = { AddGroup.class, EditGroup.class })
private String currencyDecimals;
/**
@@ -92,13 +92,13 @@ public class CostItemsBo extends BaseEntity {
/**
* 计算公式
*/
@NotBlank(message = "计算公式不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "计算公式不能为空", groups = { AddGroup.class, EditGroup.class })
private String formula;
/**
* 计费单价
*/
@NotNull(message = "计费单价不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotNull(message = "计费单价不能为空", groups = { AddGroup.class, EditGroup.class })
@DecimalMin(value = "0.00", inclusive = false, message = "计费单价必须大于0")
@ExcelProperty("计费单价")
private BigDecimal unitPrice;

View File

@@ -151,5 +151,4 @@ public class CleanOrderBo extends BaseEntity {
private CleanOrderRecordBo cleanOrderRecord;
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.DictUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -24,7 +25,9 @@ import org.dromara.property.domain.vo.*;
import org.dromara.property.domain.vo.residentVo.ResidentPersonVo;
import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
import org.dromara.property.mapper.*;
import org.dromara.system.api.RemoteDictService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteDictDataVo;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CostHouseChargeBo;
import org.dromara.property.service.ICostHouseChargeService;
@@ -32,10 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -59,6 +59,9 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
@DubboReference
private RemoteUserService remoteUserService;
@DubboReference
private RemoteDictService remoteDictService;
/**
* 查询房屋收费
*
@@ -147,7 +150,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
lqw.orderByDesc(CostHouseCharge::getCreateTime)
.orderByDesc(CostHouseCharge::getUpdateTime);
List<Long> itemIdList = new ArrayList<>();
if(ObjectUtil.isNotEmpty(bo.getCostType())){
if (ObjectUtil.isNotEmpty(bo.getCostType())) {
List<CostItemsVo> costItemsVos = costItemsMapper.selectVoList(
new LambdaQueryWrapper<CostItems>()
.eq(CostItems::getCostType, bo.getCostType())
@@ -155,10 +158,10 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
//收集项目id
itemIdList = costItemsVos.stream().map(vo -> vo.getId()).distinct().collect(Collectors.toList());
}
lqw.in(CollUtil.isNotEmpty(itemIdList), CostHouseCharge::getCostItemsId, itemIdList );
lqw.in(CollUtil.isNotEmpty(itemIdList), CostHouseCharge::getCostItemsId, itemIdList);
lqw.eq(bo.getResidentUnitId() != null, CostHouseCharge::getResidentUnitId, bo.getResidentUnitId());
lqw.eq(bo.getCostItemsId() != null, CostHouseCharge::getCostItemsId, bo.getCostItemsId());
lqw.eq(bo.getType()!= null, CostHouseCharge::getType, bo.getType());
lqw.eq(bo.getType() != null, CostHouseCharge::getType, bo.getType());
lqw.eq(StringUtils.isNotBlank(bo.getChargeCycle()), CostHouseCharge::getChargeCycle, bo.getChargeCycle());
lqw.eq(bo.getAmountReceivable() != null, CostHouseCharge::getAmountReceivable, bo.getAmountReceivable());
lqw.eq(bo.getStartTime() != null, CostHouseCharge::getStartTime, bo.getStartTime());
@@ -185,18 +188,43 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
BigDecimal area = new BigDecimal(add.getArea());
CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId());
BigDecimal unitPrice = costItemsVo.getUnitPrice();
//向上取整
if (costItemsVo.getRoundingMode().equals("1")) {
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_UP));
// //向上取整
// if (costItemsVo.getRoundingMode().equals("1")) {
// add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_UP));
// }
// //向下取整
// if (costItemsVo.getRoundingMode().equals("2")) {
// add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_DOWN));
// }
// //四舍五入
// if (costItemsVo.getRoundingMode().equals("0")) {
// add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), RoundingMode.HALF_UP));
// }
List<RemoteDictDataVo> proExpenseType = remoteDictService.selectDictDataByType("pro_expense_type");
//循环proExpenseType
for (RemoteDictDataVo remoteDictDataVo : proExpenseType) {
//类型为0则为物业管理费用设置收费为建筑面积*单价+附加费
if (Objects.equals(remoteDictDataVo.getDictValue(), "0")) {
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge().setScale(Integer.parseInt(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_HALF_UP)));
}
//向下取整
if (costItemsVo.getRoundingMode().equals("2")) {
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_DOWN));
//类型为2、7、9则为停车费用、租金、押金设置收费为固定收费
if (Objects.equals(remoteDictDataVo.getDictValue(), "2") || Objects.equals(remoteDictDataVo.getDictValue(), "7") || Objects.equals(remoteDictDataVo.getDictValue(), "9")) {
add.setAmountReceivable(costItemsVo.getSurcharge());
}
//四舍五入
if (costItemsVo.getRoundingMode().equals("0")) {
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), RoundingMode.HALF_UP));
//类型为5则为水费
if (Objects.equals(remoteDictDataVo.getDictValue(), "5")) {
}
//类型为6则为电费
if (Objects.equals(remoteDictDataVo.getDictValue(), "6")) {
}
//类型为8则为气费
if (Objects.equals(remoteDictDataVo.getDictValue(), "8")) {
}
}
add.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
//area
validEntityBeforeSave(add);
@@ -297,7 +325,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
.setEndTime(bo.getEndTime())
.setReceivableAmount(bo.getAmountReceivable())
.setState("0");
return costPayFeeAuditMapper.insert(CostPayFeeAudit)>0;
return costPayFeeAuditMapper.insert(CostPayFeeAudit) > 0;
}
return flag;
}

View File

@@ -228,7 +228,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
cleanRelation.setCleanserverOrderId(cleanserverOrderIds.get(i));
cleanRelation.setCleanId(clean.getId());
// cleanRelation.setAreas(clean.getArea());
cleanRelation.setSumPrice(bo.getSumPeices());
cleanRelation.setSumPrice(bo.getCleanList().get(i).getArea() * bo.getCleanList().get(i).getPeices());
cleanRelationMapper.insert(cleanRelation);
i++;
}