修改了费用bug
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
yuyongle 2025-07-18 20:57:02 +08:00
parent 6163532f39
commit aa5b0b9478
9 changed files with 90 additions and 9 deletions

View File

@ -4,6 +4,8 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import java.io.Serial;
@ -48,6 +50,11 @@ public class CostCarCharge extends TenantEntity {
*/
private String location;
/**
* 应收金额
*/
private BigDecimal amountReceivable;
/**
* 状态
*/

View File

@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -53,7 +55,7 @@ public class CostHouseChargeBo extends BaseEntity {
/**
* 应收金额
*/
private Long amountReceivable;
private BigDecimal amountReceivable;
/**
* 计费开始时间
@ -75,10 +77,6 @@ public class CostHouseChargeBo extends BaseEntity {
*/
private String remark;
/**
* 搜索值
*/
private String searchValue;
}

View File

@ -74,11 +74,13 @@ public class CostItemsBo extends BaseEntity {
/**
* 进位方式
*/
@NotBlank(message = "进位方式不能为空", groups = { AddGroup.class, EditGroup.class })
private String roundingMode;
/**
* 保留小数
*/
@NotBlank(message = "保留小数不能为空", groups = { AddGroup.class, EditGroup.class })
private String currencyDecimals;
/**
@ -89,11 +91,13 @@ public class CostItemsBo extends BaseEntity {
/**
* 计算公式
*/
@NotBlank(message = "计算公式不能", groups = { AddGroup.class, EditGroup.class })
private String formula;
/**
* 计费单价
*/
@NotBlank(message = "计费单价", groups = { AddGroup.class, EditGroup.class })
private BigDecimal unitPrice;
/**

View File

@ -1,5 +1,6 @@
package org.dromara.property.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.property.domain.CostCarCharge;
@ -60,6 +61,10 @@ public class CostCarChargeVo implements Serializable {
@ExcelProperty(value = "车位")
private String location;
/**
* 应收金额
*/
private BigDecimal amountReceivable;
/**
* 状态
*/

View File

@ -4,6 +4,8 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.property.domain.CostPayFeeAudit;
import java.io.Serial;
@ -31,6 +33,7 @@ public class CostPayFeeAuditVo implements Serializable {
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
@ -38,7 +41,12 @@ public class CostPayFeeAuditVo implements Serializable {
*/
@ExcelProperty(value = "房屋收费id")
private Long houseChargeId;
/**
* 费用类型
*/
@ExcelProperty(value = "费用类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "pro_expense_type")
private String costType;
/**
* 房间号(如101,202)
*/

View File

@ -76,7 +76,7 @@ public class TbRoomVo implements Serializable {
* 面积(平方米)
*/
@ExcelProperty(value = "面积(平方米)")
private Long area;
private Float area;
/**
* 套内面积(平方米)
*/

View File

@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.vo.CostItemsVo;
import org.dromara.property.mapper.CostItemsMapper;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CostCarChargeBo;
import org.dromara.property.domain.vo.CostCarChargeVo;
@ -16,6 +18,7 @@ import org.dromara.property.domain.CostCarCharge;
import org.dromara.property.mapper.CostCarChargeMapper;
import org.dromara.property.service.ICostCarChargeService;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -32,6 +35,8 @@ import java.util.Collection;
public class CostCarChargeServiceImpl implements ICostCarChargeService {
private final CostCarChargeMapper baseMapper;
private final CostItemsMapper costItemsMapper;
/**
* 查询费用-车辆收费
@ -95,6 +100,9 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
@Override
public Boolean insertByBo(CostCarChargeBo bo) {
CostCarCharge add = MapstructUtils.convert(bo, CostCarCharge.class);
CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId());
BigDecimal unitPrice = costItemsVo.getUnitPrice();
add.setAmountReceivable(unitPrice);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -22,6 +22,8 @@ import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.mapper.CostHouseChargeMapper;
import org.dromara.property.service.ICostHouseChargeService;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -109,6 +111,24 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
@Override
public Boolean insertByBo(CostHouseChargeBo bo) {
CostHouseCharge add = MapstructUtils.convert(bo, CostHouseCharge.class);
//查询房间面积
TbRoomVo tbRoomVo = tbRoomMapper.selectVoById(bo.getRoomId());
BigDecimal area = new BigDecimal(tbRoomVo.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).longValue());
}
//向下取整
if(costItemsVo.getRoundingMode().equals("2")){
add.setAmountReceivable( area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), BigDecimal.ROUND_DOWN).longValue());
}
//四舍五入
if(costItemsVo.getRoundingMode().equals("0")){
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale( Integer.valueOf(costItemsVo.getCurrencyDecimals()), RoundingMode.HALF_UP).longValue());
}
//area
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -1,5 +1,7 @@
package org.dromara.property.service.impl;
import cn.hutool.core.util.ObjectUtil;
import org.checkerframework.checker.units.qual.C;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,14 +13,18 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.CostPayFeeAudit;
import org.dromara.property.domain.bo.CostPayFeeAuditBo;
import org.dromara.property.domain.vo.CostPayFeeAuditVo;
import org.dromara.property.domain.vo.*;
import org.dromara.property.mapper.CostItemsMapper;
import org.dromara.property.mapper.CostPayFeeAuditMapper;
import org.dromara.property.mapper.TbRoomMapper;
import org.dromara.property.service.ICostPayFeeAuditService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 费用-缴费审核Service业务层处理
@ -32,6 +38,8 @@ import java.util.Collection;
public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
private final CostPayFeeAuditMapper baseMapper;
private final CostItemsMapper costItemsMapper;
private final TbRoomMapper roomMapper;
/**
* 查询费用-缴费审核
@ -55,7 +63,30 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
public TableDataInfo<CostPayFeeAuditVo> queryPageList(CostPayFeeAuditBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CostPayFeeAudit> lqw = buildQueryWrapper(bo);
Page<CostPayFeeAuditVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
List<Long> itemIdList = result.getRecords().stream()
.map(vo -> vo.getItemId())
.distinct()
.collect(Collectors.toList());
List<Long> roomIdList = result.getRecords().stream()
.map(vo -> vo.getHouseChargeId())
.distinct()
.collect(Collectors.toList());
List<CostItemsVo> costItemsVoList = costItemsMapper.selectVoByIds(itemIdList);
List<TbRoomVo> roomVoList = roomMapper.selectVoByIds(roomIdList);
List<CostPayFeeAuditVo> costPayFeeAuditVoList = new ArrayList<>();
result.getRecords().stream().forEach(s -> {
CostItemsVo costItemsVo = costItemsVoList.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getItemId())).findFirst().orElse(null);
s.setChargeItem(ObjectUtil.isNotEmpty(costItemsVo)?costItemsVo.getChargeItem():null);
s.setCostType(ObjectUtil.isNotEmpty(costItemsVo)?costItemsVo.getCostType():null);
s.setChargeCycle(ObjectUtil.isNotEmpty(costItemsVo)?costItemsVo.getChargeCycle():null);
TbRoomVo tbRoomVo = roomVoList.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getHouseChargeId())).findFirst().orElse(null);
s.setRoomNumber(ObjectUtil.isNotEmpty(tbRoomVo)?tbRoomVo.getRoomNumber():null);
costPayFeeAuditVoList.add(s);
});
return TableDataInfo.build(new Page<CostPayFeeAuditVo>().setRecords(costPayFeeAuditVoList));
}
/**