1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package com.by4cloud.platformx.business.controller;
 
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
import com.by4cloud.platformx.business.dto.PaymentConfirmQueryDTO;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.business.entity.PaymentConfirm;
import com.by4cloud.platformx.business.service.PaymentConfirmService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
import java.util.Objects;
 
/**
 * 收款确认
 *
 * @author syt
 * @date 2026-04-29 11:33:26
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/paymentConfirm" )
@Tag(description = "paymentConfirm" , name = "收款确认管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class PaymentConfirmController {
 
    private final  PaymentConfirmService paymentConfirmService;
 
    /**
     * 分页查询
     * @param page 分页对象
     * @param queryDTO 收款确认
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/page" )
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_view')" )
    public R getPaymentConfirmPage(@ParameterObject Page page, @ParameterObject PaymentConfirmQueryDTO queryDTO) {
        LambdaQueryWrapper<PaymentConfirm> wrapper = Wrappers.lambdaQuery();
        wrapper.like(StrUtil.isNotBlank(queryDTO.getBusGuestName()),PaymentConfirm::getBusGuestName,queryDTO.getBusGuestName());
        wrapper.like(StrUtil.isNotBlank(queryDTO.getContractName()),PaymentConfirm::getContractName,queryDTO.getContractName());
        wrapper.like(StrUtil.isNotBlank(queryDTO.getBusinessType()),PaymentConfirm::getBusinessType,queryDTO.getBusinessType());
        wrapper.ge(ObjUtil.isNotNull(queryDTO.getStartTime()),PaymentConfirm::getConfirmTime,queryDTO.getStartTime());
        wrapper.le(ObjUtil.isNotNull(queryDTO.getEndTime()),PaymentConfirm::getConfirmTime,queryDTO.getEndTime());
        wrapper.orderByDesc(PaymentConfirm::getCreateTime);
        return R.ok(paymentConfirmService.pageByScope(page, wrapper));
    }
 
 
    /**
     * 通过id查询收款确认
     * @param id id
     * @return R
     */
    @Operation(summary = "通过id查询" , description = "通过id查询" )
    @GetMapping("/{id}" )
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_view')" )
    public R getById(@PathVariable("id" ) Long id) {
        return R.ok(paymentConfirmService.getById(id));
    }
 
    /**
     * 新增收款确认
     * @param addDTO 收款确认
     * @return R
     */
    @Operation(summary = "新增收款确认" , description = "新增收款确认" )
    @SysLog("新增收款确认" )
    @PostMapping
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_add')" )
    public R save(@RequestBody PaymentConfirmAddDTO addDTO) {
        return paymentConfirmService.add(addDTO);
    }
 
    /**
     * 修改收款确认
     * @param paymentConfirm 收款确认
     * @return R
     */
    @Operation(summary = "修改收款确认" , description = "修改收款确认" )
    @SysLog("修改收款确认" )
    @PutMapping
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_edit')" )
    public R updateById(@RequestBody PaymentConfirm paymentConfirm) {
        return R.ok(paymentConfirmService.updateById(paymentConfirm));
    }
 
    /**
     * 通过id删除收款确认
     * @param ids id列表
     * @return R
     */
    @Operation(summary = "通过id删除收款确认" , description = "通过id删除收款确认" )
    @SysLog("通过id删除收款确认" )
    @DeleteMapping
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_del')" )
    public R removeById(@RequestBody Long[] ids) {
        return R.ok(paymentConfirmService.removeBatchByIds(CollUtil.toList(ids)));
    }
 
 
    /**
     * 导出excel 表格
     * @param paymentConfirm 查询条件
        * @param ids 导出指定ID
     * @return excel 文件流
     */
    @ResponseExcel
    @GetMapping("/export")
    @PreAuthorize("@pms.hasPermission('business_paymentConfirm_export')" )
    public List<PaymentConfirm> export(PaymentConfirm paymentConfirm,Long[] ids) {
        return paymentConfirmService.list(Wrappers.lambdaQuery(paymentConfirm).in(ArrayUtil.isNotEmpty(ids), PaymentConfirm::getId, ids));
    }
 
    /**
     * 定时查询收款单
     */
    @GetMapping("syncPaymentRecepit")
    public R syncPaymentRecepit(){
        return paymentConfirmService.syncPaymentRecepit();
    }
 
    /**
     * 业务类型
     */
    @GetMapping("queryAllBusinessType")
    public R queryAllBusinessType(){
        return paymentConfirmService.queryAllBusinessType();
    }
}