Skip to content

Commit 51366a2

Browse files
song-cc-rockfit2-zhao
authored andcommitted
feat: Calculate record tab amount
1 parent 199ae76 commit 51366a2

File tree

5 files changed

+50
-21
lines changed

5 files changed

+50
-21
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package cn.cordys.crm.contract.dto.response;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
import java.math.BigDecimal;
8+
9+
/**
10+
* @author song-cc-rock
11+
*/
12+
@Data
13+
public class CustomerPaymentRecordStatisticResponse {
14+
15+
@Schema(description = "应回款")
16+
private BigDecimal totalAmount;
17+
@Schema(description = "已回款")
18+
private BigDecimal receivedAmount;
19+
@Schema(description = "待回款")
20+
private BigDecimal pendingAmount;
21+
}

backend/crm/src/main/java/cn/cordys/crm/contract/mapper/ExtContractPaymentRecordMapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cn.cordys.crm.contract.dto.request.ContractPaymentRecordPageRequest;
55
import cn.cordys.crm.contract.dto.response.ContractPaymentRecordResponse;
66
import cn.cordys.crm.contract.dto.response.CustomerPaymentPlanStatisticResponse;
7+
import cn.cordys.crm.contract.dto.response.CustomerPaymentRecordStatisticResponse;
78
import org.apache.ibatis.annotations.Param;
89

910
import java.util.List;
@@ -43,5 +44,5 @@ List<ContractPaymentRecordResponse> getListByIds(@Param("ids") List<String> ids,
4344
* @param deptDataPermission 数据权限
4445
* @return 汇总结果
4546
*/
46-
CustomerPaymentPlanStatisticResponse sumCustomerRecordAmount(@Param("customerId") String customerId, @Param("userId") String userId, @Param("orgId") String orgId, @Param("dataPermission") DeptDataPermissionDTO deptDataPermission);
47+
CustomerPaymentRecordStatisticResponse sumCustomerRecordAmount(@Param("customerId") String customerId, @Param("userId") String userId, @Param("orgId") String orgId, @Param("dataPermission") DeptDataPermissionDTO deptDataPermission);
4748
}

backend/crm/src/main/java/cn/cordys/crm/contract/mapper/ExtContractPaymentRecordMapper.xml

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -99,27 +99,33 @@
9999
</if>
100100
</select>
101101

102-
<select id="sumCustomerRecordAmount" resultType="cn.cordys.crm.contract.dto.response.CustomerPaymentPlanStatisticResponse">
103-
select sum(cpr.record_amount) as totalPlanAmount
104-
from contract_payment_record cpr
105-
join contract c on c.id = cpr.contract_id
106-
107-
<if test="dataPermission != null and dataPermission.deptIds.size() > 0">
108-
join sys_organization_user sou on cpr.owner = sou.user_id
109-
and (
110-
sou.department_id in
111-
<foreach collection="dataPermission.deptIds" item="deptId" open="(" close=")" separator=",">
112-
#{deptId}
113-
</foreach>
114-
)
115-
</if>
102+
<select id="sumCustomerRecordAmount" resultType="cn.cordys.crm.contract.dto.response.CustomerPaymentRecordStatisticResponse">
103+
select
104+
sum(c.amount) as totalAmount,
105+
sum(cpr_sum.receivedAmount) as receivedAmount,
106+
sum(c.amount) - sum(cpr_sum.receivedAmount) as pendingAmount
107+
from contract c
108+
left join (
109+
select cpr.contract_id, sum(cpr.record_amount) as receivedAmount
110+
from contract_payment_record cpr
111+
<if test="dataPermission != null and dataPermission.deptIds.size() > 0">
112+
join sys_organization_user sou on cpr.owner = sou.user_id
113+
and (
114+
sou.department_id in
115+
<foreach collection="dataPermission.deptIds" item="deptId" open="(" close=")" separator=",">
116+
#{deptId}
117+
</foreach>
118+
)
119+
</if>
120+
where cpr.organization_id = #{orgId}
121+
<if test="dataPermission != null and dataPermission.self">
122+
and cpr.owner = #{userId}
123+
</if>
124+
group by contract_id
125+
) cpr_sum on c.id = cpr_sum.contract_id
116126

117127
where cpr.organization_id = #{orgId}
118128
and c.customer_id = #{customerId}
119-
120-
<if test="dataPermission != null and dataPermission.self">
121-
and cpr.owner = #{userId}
122-
</if>
123129
</select>
124130

125131
<sql id="sort">

backend/crm/src/main/java/cn/cordys/crm/contract/service/ContractPaymentRecordService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import cn.cordys.crm.contract.dto.response.ContractPaymentRecordGetResponse;
3030
import cn.cordys.crm.contract.dto.response.ContractPaymentRecordResponse;
3131
import cn.cordys.crm.contract.dto.response.CustomerPaymentPlanStatisticResponse;
32+
import cn.cordys.crm.contract.dto.response.CustomerPaymentRecordStatisticResponse;
3233
import cn.cordys.crm.contract.mapper.ExtContractPaymentRecordMapper;
3334
import cn.cordys.crm.system.constants.SheetKey;
3435
import cn.cordys.crm.system.dto.field.SerialNumberField;
@@ -315,7 +316,7 @@ public ImportResponse realImport(MultipartFile file, String currentOrg, String c
315316
* @param deptDataPermission 数据权限
316317
* @return 汇总结果
317318
*/
318-
public CustomerPaymentPlanStatisticResponse sumCustomerPaymentAmount(String customerId, String userId, String organizationId, DeptDataPermissionDTO deptDataPermission) {
319+
public CustomerPaymentRecordStatisticResponse sumCustomerPaymentAmount(String customerId, String userId, String organizationId, DeptDataPermissionDTO deptDataPermission) {
319320
return extContractPaymentRecordMapper.sumCustomerRecordAmount(customerId, userId, organizationId, deptDataPermission);
320321
}
321322

backend/crm/src/main/java/cn/cordys/crm/customer/controller/CustomerController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ public PagerWithOption<List<ContractPaymentRecordResponse>> recordList(@Validate
304304
@GetMapping("/contract/payment-record/statistic/{accountId}")
305305
@RequiresPermissions({PermissionConstants.CUSTOMER_MANAGEMENT_READ, PermissionConstants.CONTRACT_PAYMENT_RECORD_READ})
306306
@Operation(summary = "客户详情-合同回款记录列表统计")
307-
public CustomerPaymentPlanStatisticResponse calculateCustomerPaymentRecordStatistic(@PathVariable String accountId) {
307+
public CustomerPaymentRecordStatisticResponse calculateCustomerPaymentRecordStatistic(@PathVariable String accountId) {
308308
DeptDataPermissionDTO deptDataPermission = dataScopeService.getDeptDataPermission(SessionUtils.getUserId(),
309309
OrganizationContext.getOrganizationId(), PermissionConstants.CONTRACT_PAYMENT_RECORD_READ);
310310
return contractPaymentRecordService.sumCustomerPaymentAmount(accountId, SessionUtils.getUserId(), OrganizationContext.getOrganizationId(), deptDataPermission);

0 commit comments

Comments
 (0)