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

This commit is contained in:
2025-07-20 14:52:38 +08:00
parent 426717e9cc
commit e6c3c7d88a
24 changed files with 423 additions and 75 deletions

View File

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -80,6 +81,15 @@ public class CostCarChargeController extends BaseController {
return toAjax(costCarChargeService.insertByBo(bo));
}
/**
* 车辆退费接口
* @param bo
* @return
*/
@PostMapping("/returnFee")
public R<Void> returnFree( @RequestBody CostChargeReturnFeeBo bo) {
return toAjax(costCarChargeService.returnFree(bo));
}
/**
* 修改费用-车辆收费
*/

View File

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.dromara.property.domain.vo.CostHouseChargeDetailVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
@@ -80,6 +81,10 @@ public class CostHouseChargeController extends BaseController {
public R<Void> add(@Validated(AddGroup.class) @RequestBody CostHouseChargeBo bo) {
return toAjax(costHouseChargeService.insertByBo(bo));
}
@PostMapping("/returnFee")
public R<Void> returnFree( @RequestBody CostChargeReturnFeeBo bo) {
return toAjax(costHouseChargeService.returnFree(bo));
}
/**
* 修改房屋收费

View File

@@ -59,7 +59,10 @@ public class CostCarCharge extends TenantEntity {
* 状态
*/
private String state;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 收费项目
*/

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 com.fasterxml.jackson.annotation.JsonFormat;
@@ -33,12 +35,18 @@ public class CostHouseCharge extends TenantEntity {
* 房屋
*/
private Long roomId;
/**
* 业主
*/
private Long personId;
/**
* 收费项目
*/
private Long costItemsId;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 支付方式
*/
@@ -52,7 +60,7 @@ public class CostHouseCharge extends TenantEntity {
/**
* 应收金额
*/
private Long amountReceivable;
private BigDecimal amountReceivable;
/**
* 计费开始时间

View File

@@ -1,5 +1,6 @@
package org.dromara.property.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@@ -17,6 +18,7 @@ import java.io.Serial;
* @date 2025-07-17
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("cost_pay_fee_audit")
public class CostPayFeeAudit extends TenantEntity {
@@ -31,9 +33,13 @@ public class CostPayFeeAudit extends TenantEntity {
private Long id;
/**
* 房屋收费id
* 收费id
*/
private Long houseChargeId;
private Long chargeId;
/**
* 收费类型
*/
private String chargeType;
/**
* 费用项目id
@@ -62,8 +68,6 @@ public class CostPayFeeAudit extends TenantEntity {
/**
* 缴费时间
*/
private Date payTime;

View File

@@ -1,9 +1,12 @@
package org.dromara.property.domain;
import lombok.experimental.Accessors;
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 com.fasterxml.jackson.annotation.JsonFormat;
@@ -16,6 +19,7 @@ import java.io.Serial;
* @date 2025-07-17
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("cost_return_pay_fee")
public class CostReturnPayFee extends TenantEntity {
@@ -28,7 +32,14 @@ public class CostReturnPayFee extends TenantEntity {
*/
@TableId(value = "id")
private Long id;
/**
* 收费id
*/
private Long chargeId;
/**
* 收费类型
*/
private String chargeType;
/**
* 退款单号
*/
@@ -57,7 +68,7 @@ public class CostReturnPayFee extends TenantEntity {
/**
* 支付金额
*/
private Long payAcount;
private BigDecimal payAcount;
/**
* 支付时间
@@ -74,10 +85,5 @@ public class CostReturnPayFee extends TenantEntity {
*/
private String remark;
/**
* 搜索值
*/
private String searchValue;
}

View File

@@ -37,6 +37,7 @@ public class CostCarChargeBo extends BaseEntity {
/**
* 业主
*/
@NotNull(message = "业主不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personId;
/**
@@ -49,7 +50,10 @@ public class CostCarChargeBo extends BaseEntity {
* 车位
*/
private String location;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 状态
*/

View File

@@ -0,0 +1,37 @@
package org.dromara.property.domain.bo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
/**
* @Author:yuyongle
* @Date:2025/7/19 13:50
* @Description:
**/
@Data
public class CostChargeReturnFeeBo {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 业主
*/
@NotNull(message = "业主不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personId;
/**
* 收费项目
*/
@NotNull(message = "收费项目不能为空", groups = { AddGroup.class, EditGroup.class })
private Long costItemsId;
/**
* 退款原因
*/
@NotNull(message = "退款原因不能为空", groups = { AddGroup.class, EditGroup.class })
private String reason;
}

View File

@@ -1,17 +1,16 @@
package org.dromara.property.domain.bo;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.property.domain.CostHouseCharge;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 房屋收费业务对象 cost_house_charge
@@ -35,13 +34,22 @@ public class CostHouseChargeBo extends BaseEntity {
*/
@NotNull(message = "房屋不能为空", groups = { AddGroup.class, EditGroup.class })
private Long roomId;
/**
* 业主
*/
@NotNull(message = "业主不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personId;
/**
* 收费项目
*/
@NotNull(message = "收费项目不能为空", groups = { AddGroup.class, EditGroup.class })
private Long costItemsId;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 支付方式
*/

View File

@@ -31,10 +31,13 @@ public class CostPayFeeAuditBo extends BaseEntity {
private Long id;
/**
* 房屋收费id
* 收费id
*/
@NotNull(message = "房屋收费id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long houseChargeId;
private Long chargeId;
/**
* 收费类型
*/
private String chargeType;
/**
* 费用项目id
@@ -65,12 +68,7 @@ public class CostPayFeeAuditBo extends BaseEntity {
@NotNull(message = "应收金额不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal receivableAmount;
/**
* 缴费时间
*/
@NotNull(message = "缴费时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date payTime;
/**

View File

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.property.domain.CostReturnPayFee;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -60,12 +61,11 @@ public class CostReturnPayFeeBo extends BaseEntity {
/**
* 支付金额
*/
private Long payAcount;
private BigDecimal payAcount;
/**
* 支付时间
*/
@NotNull(message = "支付时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date payTime;
/**

View File

@@ -0,0 +1,44 @@
package org.dromara.property.domain.enums;
import lombok.Data;
import lombok.Getter;
/**
* @Author:yuyongle
* @Date:2025/7/19 11:33
* @Description:
**/
@Getter
public enum ChargeStatusEnum {
/**
* 缴费待审核
*/
PAYMENT_IS_SUBJECT_TO_REVIEW("缴费待审核", "1"),
/**
* 月/天
*/
THE_PAYMENT_WAS_APPROVED("缴费审核通过", "2"),
THE_PAYMENT_REVIEW_FAILED("缴费审核不通过", "3"),
PAID_FEE("已缴费", "4"),
REFUND_PENDING_REVIEW("退费待审核", "5"),
THE_REFUND_HAS_BEEN_APPROVED("已退费审核通过", "6"),
THE_REFUND_REVIEW_IS_NOT_PASSED("退费审核不通过", "7");
private final String name;
private final String value;
ChargeStatusEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return this.name;
}
public String getValue() {
return this.value;
}
}

View File

@@ -71,6 +71,10 @@ public class CostCarChargeVo implements Serializable {
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "wy_cszt")
private String state;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 收费项目

View File

@@ -9,6 +9,7 @@ import org.dromara.property.domain.CostItems;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -34,13 +35,24 @@ public class CostHouseChargeDetailVo implements Serializable {
*/
@ExcelProperty(value = "房屋")
private Long roomId;
/**
* 业主
*/
private Long personId;
/**
* 业主姓名
*/
private String personName;
/**
* 收费项目
*/
@ExcelProperty(value = "收费项目")
private Long costItemsId;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 支付方式
*/
@@ -57,7 +69,7 @@ public class CostHouseChargeDetailVo implements Serializable {
* 应收金额
*/
@ExcelProperty(value = "应收金额")
private Long amountReceivable;
private BigDecimal amountReceivable;
/**
* 计费开始时间

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.CostHouseCharge;
@@ -41,7 +42,10 @@ public class CostHouseChargeVo implements Serializable {
*/
@ExcelProperty(value = "房屋")
private Long roomId;
/**
* 业主
*/
private Long personId;
/**
* 收费项目
*/
@@ -59,12 +63,15 @@ public class CostHouseChargeVo implements Serializable {
*/
@ExcelProperty(value = "支付周期")
private String chargeCycle;
/**
* 缴费状态
*/
private String chargeStatus;
/**
* 应收金额
*/
@ExcelProperty(value = "应收金额")
private Long amountReceivable;
private BigDecimal amountReceivable;
/**
* 计费开始时间

View File

@@ -37,10 +37,13 @@ public class CostPayFeeAuditVo implements Serializable {
private Long id;
/**
* 房屋收费id
* 收费id
*/
@ExcelProperty(value = "房屋收费id")
private Long houseChargeId;
private Long chargeId;
/**
* 收费类型
*/
private String chargeType;
/**
* 费用类型
*/

View File

@@ -8,6 +8,7 @@ import org.dromara.property.domain.CostReturnPayFee;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@@ -44,6 +45,7 @@ public class CostReturnPayFeeVo implements Serializable {
@ExcelProperty(value = "支付单号")
private String payNo;
/**
* 退款原因
*/
@@ -66,7 +68,7 @@ public class CostReturnPayFeeVo implements Serializable {
* 支付金额
*/
@ExcelProperty(value = "支付金额")
private Long payAcount;
private BigDecimal payAcount;
/**
* 支付时间

View File

@@ -1,6 +1,6 @@
package org.dromara.property.service;
import org.dromara.property.domain.CostCarCharge;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.dromara.property.domain.vo.CostCarChargeVo;
import org.dromara.property.domain.bo.CostCarChargeBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -50,6 +50,12 @@ public interface ICostCarChargeService {
*/
Boolean insertByBo(CostCarChargeBo bo);
/**
* 车辆退费
* @param bo
* @return
*/
Boolean returnFree(CostChargeReturnFeeBo bo);
/**
* 修改费用-车辆收费
*

View File

@@ -1,6 +1,6 @@
package org.dromara.property.service;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.dromara.property.domain.vo.CostHouseChargeDetailVo;
import org.dromara.property.domain.vo.CostHouseChargeVo;
import org.dromara.property.domain.bo.CostHouseChargeBo;
@@ -51,6 +51,14 @@ public interface ICostHouseChargeService {
*/
Boolean insertByBo(CostHouseChargeBo bo);
/**
* 房屋退费
*
* @param bo 房屋退费
* @return 是否修改成功
*/
Boolean returnFree(CostChargeReturnFeeBo bo);
/**
* 修改房屋收费
*

View File

@@ -1,5 +1,9 @@
package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,14 +13,23 @@ 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.CostHouseCharge;
import org.dromara.property.domain.CostPayFeeAudit;
import org.dromara.property.domain.CostReturnPayFee;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.dromara.property.domain.enums.ChargeStatusEnum;
import org.dromara.property.domain.vo.CostHouseChargeVo;
import org.dromara.property.domain.vo.CostItemsVo;
import org.dromara.property.mapper.CostItemsMapper;
import org.dromara.property.mapper.CostPayFeeAuditMapper;
import org.dromara.property.mapper.CostReturnPayFeeMapper;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CostCarChargeBo;
import org.dromara.property.domain.vo.CostCarChargeVo;
import org.dromara.property.domain.CostCarCharge;
import org.dromara.property.mapper.CostCarChargeMapper;
import org.dromara.property.service.ICostCarChargeService;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +49,8 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
private final CostCarChargeMapper baseMapper;
private final CostItemsMapper costItemsMapper;
private final CostPayFeeAuditMapper costPayFeeAuditMapper;
private final CostReturnPayFeeMapper costReturnPayFeeMapper;
/**
@@ -98,6 +113,7 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(CostCarChargeBo bo) {
CostCarCharge add = MapstructUtils.convert(bo, CostCarCharge.class);
CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId());
@@ -107,10 +123,46 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
//新增缴费记录
var CostPayFeeAudit = new CostPayFeeAudit()
.setChargeId(add.getId())
.setChargeType("2")
.setItemId(costItemsVo.getId())
.setStartTime(add.getStarTime())
.setEndTime(add.getEndTime())
.setReceivableAmount(add.getAmountReceivable())
.setState("0");
costPayFeeAuditMapper.insert(CostPayFeeAudit);
}
return flag;
}
/**
* 车辆退费
* @param bo
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean returnFree(CostChargeReturnFeeBo bo) {
CostCarCharge costCarCharge = baseMapper.selectById(bo.getId());
Assert.isTrue(ObjectUtil.isNotEmpty(costCarCharge),"该费用不存在");
var CostReturnPayFee = new CostReturnPayFee()
.setChargeId(costCarCharge.getId())
.setChargeType("2")
.setItemId(costCarCharge.getCostItemsId())
.setReturnNo(RandomUtil.randomNumbers(11))
.setReason(bo.getReason())
.setUserId(costCarCharge.getPersonId())
.setPayNo(costCarCharge.getId().toString())
.setPayAcount(costCarCharge.getAmountReceivable())
.setState("0")
;
costReturnPayFeeMapper.insert(CostReturnPayFee);
costCarCharge.setChargeStatus(ChargeStatusEnum.REFUND_PENDING_REVIEW.getValue());
return baseMapper.updateById(costCarCharge) > 0;
}
/**
* 修改费用-车辆收费
*

View File

@@ -1,6 +1,9 @@
package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -10,17 +13,17 @@ 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.CostHouseChargeDetailVo;
import org.dromara.property.domain.vo.CostItemsVo;
import org.dromara.property.domain.vo.TbRoomVo;
import org.dromara.property.mapper.CostItemsMapper;
import org.dromara.property.mapper.TbRoomMapper;
import org.dromara.property.domain.CostPayFeeAudit;
import org.dromara.property.domain.CostReturnPayFee;
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
import org.dromara.property.domain.enums.ChargeStatusEnum;
import org.dromara.property.domain.vo.*;
import org.dromara.property.mapper.*;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CostHouseChargeBo;
import org.dromara.property.domain.vo.CostHouseChargeVo;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.mapper.CostHouseChargeMapper;
import org.dromara.property.service.ICostHouseChargeService;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -42,7 +45,9 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
private final CostHouseChargeMapper baseMapper;
private final CostItemsMapper costItemsMapper;
private final TbRoomMapper tbRoomMapper;
private final CostPayFeeAuditMapper costPayFeeAuditMapper;
private final CostReturnPayFeeMapper costReturnPayFeeMapper;
private final ResidentPersonMapper residentPersonMapper;
/**
* 查询房屋收费
*
@@ -50,13 +55,15 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
* @return 房屋收费
*/
@Override
public CostHouseChargeDetailVo queryById(Long id){
public CostHouseChargeDetailVo queryById(Long id) {
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(id);
CostHouseChargeDetailVo costHouseChargeDetailVo = BeanUtil.copyProperties(costHouseChargeVo, CostHouseChargeDetailVo.class);
CostItemsVo costItemsVo = costItemsMapper.selectVoById(costHouseChargeDetailVo.getCostItemsId());
costHouseChargeDetailVo.setCostItemsVo( costItemsVo );
costHouseChargeDetailVo.setCostItemsVo(costItemsVo);
TbRoomVo tbRoomVo = tbRoomMapper.selectVoById(costHouseChargeDetailVo.getRoomId());
costHouseChargeDetailVo.setRoomVo(tbRoomVo);
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(costHouseChargeVo.getPersonId());
costHouseChargeDetailVo.setPersonName(residentPersonVo.getUserName());
return costHouseChargeDetailVo;
}
@@ -92,7 +99,6 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
lqw.orderByAsc(CostHouseCharge::getId);
lqw.eq(bo.getRoomId() != null, CostHouseCharge::getRoomId, bo.getRoomId());
lqw.eq(bo.getCostItemsId() != null, CostHouseCharge::getCostItemsId, bo.getCostItemsId());
lqw.eq(StringUtils.isNotBlank(bo.getPayType()), CostHouseCharge::getPayType, bo.getPayType());
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());
@@ -109,6 +115,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(CostHouseChargeBo bo) {
CostHouseCharge add = MapstructUtils.convert(bo, CostHouseCharge.class);
//查询房间面积
@@ -117,26 +124,63 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
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("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).longValue());
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).longValue());
if (costItemsVo.getRoundingMode().equals("0")) {
add.setAmountReceivable(area.multiply(unitPrice).add(costItemsVo.getSurcharge()).setScale(Integer.valueOf(costItemsVo.getCurrencyDecimals()), RoundingMode.HALF_UP));
}
add.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
//area
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
//新增缴费记录
var CostPayFeeAudit = new CostPayFeeAudit()
.setChargeId(add.getId())
.setChargeType("1")
.setItemId(costItemsVo.getId())
.setStartTime(add.getStartTime())
.setEndTime(add.getEndTime())
.setReceivableAmount(add.getAmountReceivable())
.setState("0");
costPayFeeAuditMapper.insert(CostPayFeeAudit);
}
return flag;
}
/**
* 房屋退费
*
* @param bo 房屋退费
* @return 是否退费成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean returnFree(CostChargeReturnFeeBo bo) {
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(bo.getId());
Assert.isTrue(ObjectUtil.isNotEmpty(costHouseChargeVo),"该费用不存在");
var CostReturnPayFee = new CostReturnPayFee().setItemId(costHouseChargeVo.getCostItemsId())
.setReturnNo(RandomUtil.randomNumbers(11))
.setReason(bo.getReason())
.setItemId(costHouseChargeVo.getCostItemsId())
.setUserId(costHouseChargeVo.getPersonId())
.setPayNo(costHouseChargeVo.getId().toString())
.setPayAcount(costHouseChargeVo.getAmountReceivable())
.setState("0")
;
boolean flag = costReturnPayFeeMapper.insert(CostReturnPayFee) > 0;
CostHouseCharge costHouseCharge = BeanUtil.copyProperties(costHouseChargeVo, CostHouseCharge.class);
costHouseCharge.setChargeStatus(ChargeStatusEnum.REFUND_PENDING_REVIEW.getValue());
return baseMapper.updateById(costHouseCharge) > 0;
}
/**
* 修改房屋收费
*
@@ -144,6 +188,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(CostHouseChargeBo bo) {
CostHouseCharge update = MapstructUtils.convert(bo, CostHouseCharge.class);
validEntityBeforeSave(update);
@@ -153,7 +198,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CostHouseCharge entity){
private void validEntityBeforeSave(CostHouseCharge entity) {
//TODO 做一些数据校验,如唯一约束
}
@@ -165,8 +210,10 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;

View File

@@ -1,5 +1,6 @@
package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import org.checkerframework.checker.units.qual.C;
import org.dromara.common.core.utils.MapstructUtils;
@@ -11,12 +12,13 @@ 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.CostCarCharge;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.domain.CostPayFeeAudit;
import org.dromara.property.domain.bo.CostPayFeeAuditBo;
import org.dromara.property.domain.enums.ChargeStatusEnum;
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.mapper.*;
import org.dromara.property.service.ICostPayFeeAuditService;
import org.springframework.stereotype.Service;
@@ -40,6 +42,8 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
private final CostPayFeeAuditMapper baseMapper;
private final CostItemsMapper costItemsMapper;
private final TbRoomMapper roomMapper;
private final CostHouseChargeMapper coinHouseChargeMapper;
private final CostCarChargeMapper costCarChargeMapper;
/**
* 查询费用-缴费审核
@@ -49,7 +53,13 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
*/
@Override
public CostPayFeeAuditVo queryById(Long id){
return baseMapper.selectVoById(id);
CostPayFeeAuditVo costPayFeeAuditVo = baseMapper.selectVoById(id);
CostItemsVo costItemsVo = costItemsMapper.selectVoById(costPayFeeAuditVo.getItemId());
costPayFeeAuditVo.setChargeItem(ObjectUtil.isNotEmpty(costItemsVo)? costItemsVo.getChargeItem() :null );
costPayFeeAuditVo.setChargeCycle(ObjectUtil.isNotEmpty(costItemsVo)? costItemsVo.getChargeCycle() :null );
//TbRoomVo roomVo = roomMapper.selectVoById(costPayFeeAuditVo.getChargeId());
//costPayFeeAuditVo.setRoomNumber(ObjectUtil.isNotEmpty(roomVo)? roomVo.getRoomNumber() :null );
return costPayFeeAuditVo;
}
/**
@@ -63,12 +73,15 @@ 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);
if(CollUtil.isEmpty(result.getRecords())){
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())
.map(vo -> vo.getChargeId())
.distinct()
.collect(Collectors.toList());
List<CostItemsVo> costItemsVoList = costItemsMapper.selectVoByIds(itemIdList);
@@ -81,7 +94,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
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);
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getChargeId())).findFirst().orElse(null);
s.setRoomNumber(ObjectUtil.isNotEmpty(tbRoomVo)?tbRoomVo.getRoomNumber():null);
costPayFeeAuditVoList.add(s);
@@ -105,7 +118,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CostPayFeeAudit> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(CostPayFeeAudit::getId);
lqw.eq(bo.getHouseChargeId() != null, CostPayFeeAudit::getHouseChargeId, bo.getHouseChargeId());
lqw.eq(bo.getChargeId() != null, CostPayFeeAudit::getChargeId, bo.getChargeId());
lqw.eq(bo.getItemId() != null, CostPayFeeAudit::getItemId, bo.getItemId());
lqw.eq(bo.getStartTime() != null, CostPayFeeAudit::getStartTime, bo.getStartTime());
lqw.eq(bo.getEndTime() != null, CostPayFeeAudit::getEndTime, bo.getEndTime());
@@ -134,7 +147,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
}
/**
* 修改费用-缴费审核
* 修改费用-缴费审核修改状态
*
* @param bo 费用-缴费审核
* @return 是否修改成功
@@ -142,7 +155,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
@Override
public Boolean updateByBo(CostPayFeeAuditBo bo) {
CostPayFeeAudit update = MapstructUtils.convert(bo, CostPayFeeAudit.class);
validEntityBeforeSave(update);
validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0;
}
@@ -152,6 +165,36 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
private void validEntityBeforeSave(CostPayFeeAudit entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 修改前的数据校验
*/
private void validEntityBeforeUpdate(CostPayFeeAudit entity){
//TODO 做一些数据校验,如唯一约束
if(entity.getState().equals("1")){
if(entity.getChargeType().equals("1")){
CostHouseCharge costHouseCharge = coinHouseChargeMapper.selectById(entity.getChargeId());
costHouseCharge.setChargeStatus(ChargeStatusEnum.THE_PAYMENT_WAS_APPROVED.getValue());
coinHouseChargeMapper.updateById(costHouseCharge);
}
if(entity.getChargeType().equals("2")){
CostCarCharge costCarCharge = costCarChargeMapper.selectById(entity.getChargeId());
costCarCharge.setChargeStatus(ChargeStatusEnum.THE_PAYMENT_WAS_APPROVED.getValue());
costCarChargeMapper.updateById(costCarCharge);
}
}
if(entity.getState().equals("2")){
if(entity.getChargeType().equals("1")){
CostHouseCharge costHouseCharge = coinHouseChargeMapper.selectById(entity.getChargeId());
costHouseCharge.setChargeStatus(ChargeStatusEnum.THE_PAYMENT_REVIEW_FAILED.getValue());
coinHouseChargeMapper.updateById(costHouseCharge);
}
if(entity.getChargeType().equals("2")){
CostCarCharge costCarCharge = costCarChargeMapper.selectById(entity.getChargeId());
costCarCharge.setChargeStatus(ChargeStatusEnum.THE_PAYMENT_REVIEW_FAILED.getValue());
costCarChargeMapper.updateById(costCarCharge);
}
}
}
/**
* 校验并批量删除费用-缴费审核信息

View File

@@ -9,9 +9,14 @@ 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.CostCarCharge;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.domain.CostReturnPayFee;
import org.dromara.property.domain.bo.CostReturnPayFeeBo;
import org.dromara.property.domain.enums.ChargeStatusEnum;
import org.dromara.property.domain.vo.CostReturnPayFeeVo;
import org.dromara.property.mapper.CostCarChargeMapper;
import org.dromara.property.mapper.CostHouseChargeMapper;
import org.dromara.property.mapper.CostReturnPayFeeMapper;
import org.dromara.property.service.ICostReturnPayFeeService;
import org.springframework.stereotype.Service;
@@ -32,6 +37,8 @@ import java.util.Collection;
public class CostReturnPayFeeServiceImpl implements ICostReturnPayFeeService {
private final CostReturnPayFeeMapper baseMapper;
private final CostHouseChargeMapper coinHouseChargeMapper;
private final CostCarChargeMapper costCarChargeMapper;
/**
* 查询费用-抄类型
@@ -112,7 +119,7 @@ public class CostReturnPayFeeServiceImpl implements ICostReturnPayFeeService {
@Override
public Boolean updateByBo(CostReturnPayFeeBo bo) {
CostReturnPayFee update = MapstructUtils.convert(bo, CostReturnPayFee.class);
validEntityBeforeSave(update);
validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0;
}
@@ -122,6 +129,36 @@ public class CostReturnPayFeeServiceImpl implements ICostReturnPayFeeService {
private void validEntityBeforeSave(CostReturnPayFee entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 修改前的数据校验
*/
private void validEntityBeforeUpdate(CostReturnPayFee entity){
//TODO 做一些数据校验,如唯一约束
if(entity.getState().equals("1")){
if(entity.getChargeType().equals("1")){
CostHouseCharge costHouseCharge = coinHouseChargeMapper.selectById(entity.getChargeId());
costHouseCharge.setChargeStatus(ChargeStatusEnum. THE_REFUND_HAS_BEEN_APPROVED.getValue());
coinHouseChargeMapper.updateById(costHouseCharge);
}
if(entity.getChargeType().equals("2")){
CostCarCharge costCarCharge = costCarChargeMapper.selectById(entity.getChargeId());
costCarCharge.setChargeStatus(ChargeStatusEnum.THE_REFUND_HAS_BEEN_APPROVED.getValue());
costCarChargeMapper.updateById(costCarCharge);
}
}
if(entity.getState().equals("2")){
if(entity.getChargeType().equals("1")){
CostHouseCharge costHouseCharge = coinHouseChargeMapper.selectById(entity.getChargeId());
costHouseCharge.setChargeStatus(ChargeStatusEnum.THE_REFUND_REVIEW_IS_NOT_PASSED.getValue());
coinHouseChargeMapper.updateById(costHouseCharge);
}
if(entity.getChargeType().equals("2")){
CostCarCharge costCarCharge = costCarChargeMapper.selectById(entity.getChargeId());
costCarCharge.setChargeStatus(ChargeStatusEnum.THE_REFUND_REVIEW_IS_NOT_PASSED.getValue());
costCarChargeMapper.updateById(costCarCharge);
}
}
}
/**
* 校验并批量删除费用-抄类型信息

View File

@@ -125,7 +125,6 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService {
lqw.eq(StringUtils.isNotBlank(bo.getSignType()), InspectionPlan::getSignType, bo.getSignType());
lqw.eq(StringUtils.isNotBlank(bo.getCanReexamine()), InspectionPlan::getCanReexamine, bo.getCanReexamine());
lqw.like(StringUtils.isNotBlank(bo.getState()), InspectionPlan::getState, bo.getState());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionPlan::getSearchValue, bo.getSearchValue());
return lqw;
}
@@ -147,8 +146,9 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService {
if (CollectionUtil.isNotEmpty(inspectionPlanStaffBoList)) {
for (InspectionPlanStaffBo staffBo : inspectionPlanStaffBoList) {
staffBo.setInspectionPlanId(add.getId());
InspectionPlanStaff convert = MapstructUtils.convert(staffBo, InspectionPlanStaff.class);
inspectionPlanStaffMapper.insert(convert);
}
inspectionPlanStaffMapper.insertBatch(BeanUtil.copyToList(inspectionPlanStaffBoList, InspectionPlanStaff.class));
}
}
return flag;