From 187017615b16e0521778a4db0871e579d319725b Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 12 二月 2025 09:24:30 +0800 Subject: [PATCH] Merge branch 'xizang-changyun' of https://gitee.com/xiaochen991015/xizang --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java | 11 +++ ruoyi-system/src/main/java/com/ruoyi/system/dto/TbillSaveDto.java | 17 +++++ ruoyi-system/src/main/java/com/ruoyi/system/model/TBill.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 31 +++++++++- ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml | 7 +- ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PayController.java | 38 ++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java | 6 + ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayDto.java | 36 ++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/dto/TBillDto.java | 1 9 files changed, 141 insertions(+), 8 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java index a922d24..5322e03 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java @@ -3,11 +3,14 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.dto.TBillDto; +import com.ruoyi.system.dto.TbillSaveDto; import com.ruoyi.system.model.TBill; import com.ruoyi.system.query.TBillQuery; import com.ruoyi.system.service.TBillService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -34,6 +37,14 @@ return R.ok(pageInfo); } + @PostMapping("add") + public R<PageInfo<TBillDto>> add(@Validated @RequestBody TbillSaveDto bill){ + tBillService.saveBill(bill); + return R.ok(); + } + + + } diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PayController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PayController.java index 4e4afa8..ee86e60 100644 --- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PayController.java +++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PayController.java @@ -1,18 +1,31 @@ package com.ruoyi.web.controller.api; +import cn.hutool.core.collection.CollectionUtil; +import com.ruoyi.common.constant.AmountConstant; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.dto.MakeOrderDto; import com.ruoyi.system.dto.MakeOrderResp; +import com.ruoyi.system.dto.OfflinePayDto; +import com.ruoyi.system.model.TBill; +import com.ruoyi.system.model.TBillConfirm; +import com.ruoyi.system.service.TBillConfirmService; +import com.ruoyi.system.service.TBillService; import com.ruoyi.system.service.TPayOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Collections; +import java.util.List; @Api(value = "支付订单") @RestController @@ -24,6 +37,12 @@ @Autowired TPayOrderService tPayOrderService; + @Autowired + TBillService tBillService; + + @Autowired + TBillConfirmService tBillConfirmService; + @ApiOperation(value = "创建支付订单") @PostMapping("makeOrder") public R<MakeOrderResp> makeOrder(@Validated @RequestBody MakeOrderDto dto){ @@ -32,6 +51,23 @@ } - + @PostMapping("offlinePay") + public R offlinePay(@Validated @RequestBody OfflinePayDto dto){ + List<TBill> tBills = tBillService.listByIds(dto.getBillIds()); + for (TBill tBill : tBills) { + TBill save = new TBill(); + save.setId(tBill.getId()); + save.setPayFeesType(2); + save.setVoucher(dto.getVoucher()); + save.setPayFeesStatus("2"); + tBillService.lockAndUpdateInfo(save); + } + TBillConfirm confirm = new TBillConfirm(); + confirm.setBillId(CollectionUtil.join(dto.getBillIds(),",")); + confirm.setVoucher(dto.getVoucher()); + confirm.setPayFeesMoney(new BigDecimal(dto.getAmount()).divide(AmountConstant.b100).setScale(2, RoundingMode.HALF_DOWN).doubleValue()); + tBillConfirmService.save(confirm); + return R.ok(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayDto.java new file mode 100644 index 0000000..d4f5661 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayDto.java @@ -0,0 +1,36 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +@Data +public class OfflinePayDto implements Serializable { + /** + * 用户ID + */ + @ApiModelProperty(value = "用户ID") + private String userId; + + @ApiModelProperty(value = "支付金额,单位:分") + @NotNull(message = "金额不能为空") + private Long amount; + /** + * 账单列表 + */ + @ApiModelProperty(value = "账单列表") + @NotEmpty(message = "账单ID不能为空") + private List<String> billIds; + /** + * 凭证文件ID + */ + @ApiModelProperty(value = "凭证文件ID") + @NotEmpty(message = "凭证文件不能为空") + private String voucher; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TBillDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TBillDto.java index ba94ba9..6a76c57 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TBillDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TBillDto.java @@ -16,4 +16,5 @@ private String houseName; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TbillSaveDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TbillSaveDto.java new file mode 100644 index 0000000..f40a77b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TbillSaveDto.java @@ -0,0 +1,17 @@ +package com.ruoyi.system.dto; + +import com.ruoyi.system.model.TBill; +import com.ruoyi.system.model.TBillDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class TbillSaveDto extends TBill implements Serializable { + + @ApiModelProperty(value = "水单费列表") + private List<TBillDetail> details; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TBill.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TBill.java index 68ea69f..bb355e1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TBill.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TBill.java @@ -8,6 +8,7 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseModel; @@ -16,6 +17,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.data.annotation.Transient; /** * <p> diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java index 38e213e..ecdb250 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.dto.TBillDto; +import com.ruoyi.system.dto.TbillSaveDto; import com.ruoyi.system.model.TBill; import com.ruoyi.system.query.TBillQuery; @@ -20,6 +21,10 @@ PageInfo<TBillDto> queryPage(TBillQuery query); + Boolean lockAndUpdateInfo(TBill save); + + void saveBill(TbillSaveDto bill); + /** * 查询账单id列表 * @param query @@ -33,5 +38,4 @@ * @return */ PageInfo<TBillDto> invoiceList(TBillQuery query); - } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java index 2dff882..37445bf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java @@ -5,17 +5,23 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.dto.TBillDto; +import com.ruoyi.system.dto.TbillSaveDto; import com.ruoyi.system.mapper.TBillMapper; import com.ruoyi.system.model.TBill; +import com.ruoyi.system.model.TBillDetail; import com.ruoyi.system.model.TContract; import com.ruoyi.system.model.THouse; import com.ruoyi.system.query.TBillQuery; +import com.ruoyi.system.service.TBillDetailService; import com.ruoyi.system.service.TBillService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.jsonwebtoken.lang.Assert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; @@ -38,6 +44,10 @@ @Autowired TBillMapper tBillMapper; + @Autowired + TBillDetailService tBillDetailService; + + public PageInfo<TBillDto> queryPage(TBillQuery query){ PageInfo<TBill> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); PageInfo<TBillDto> info = tBillMapper.page(pageInfo, query); @@ -58,17 +68,32 @@ return pageInfo; } - /** * 传的金额 * @param tBill * @return */ - public Boolean checkAndUpdateBill(TBill tBill){ + public Boolean lockAndUpdateInfo(TBill tBill){ + if (StringUtils.isEmpty(tBill.getId())){ + throw new ServiceException("账单主键ID不能为空"); + } return true; } - + @Override + @Transactional(rollbackFor = Exception.class) + public void saveBill(TbillSaveDto bill) { + save(bill); + if (bill.getBillType().equals("3")){ + if (bill.getDetails()==null || bill.getDetails().size()==0){ + throw new ServiceException("生活费用列表不能为空"); + } + for (TBillDetail detail : bill.getDetails()) { + detail.setBillId(bill.getId()); + tBillDetailService.save(detail); + } + } + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml index da8b419..8ac1c4a 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml @@ -42,10 +42,11 @@ h.house_name as houseName FROM t_bill b - LEFT JOIN t_contract c ON c.contract_number = b.contract_number - LEFT JOIN t_house h ON h.id = c.house_id - LEFT JOIN t_tenant t ON t.id = c.tenant_id + LEFT JOIN t_contract c ON c.contract_number = b.contract_number and c.disabled=0 + LEFT JOIN t_house h ON h.id = c.house_id and h.disabled=0 + LEFT JOIN t_tenant t ON t.id = c.tenant_id and t.disabled=0 <where> + b.disabled=0 <if test="query.payFeesStatus != null"> and b.pay_fees_status = #{query.payFeesStatus} </if> -- Gitblit v1.7.1