TdCBusinessAcctServiceImpl.java
8.91 KB
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
package com.zteits.business.biz.impl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.clouds.common.cache.sys.SysCodeValueCacheUtil;
import com.clouds.common.constants.CodeValKindEnum;
import com.clouds.common.utils.AmountUtils;
import com.clouds.common.utils.DateUtil;
import com.github.pagehelper.PageInfo;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.business.dao.TdCBusinessAcctDao;
import com.zteits.business.domain.TdCBusinessAcct;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.dto.business.dto.BusinessAccountDetailCountDTO;
import com.zteits.clouds.api.dto.business.dto.BusinessAccountDetailSummaryDTO;
import com.zteits.clouds.api.dto.business.dto.BusinessAccountInOutDetailForPageDTO;
import com.zteits.clouds.api.dto.business.dto.TdCBusinessAcctDTO;
import com.zteits.clouds.api.dto.business.param.BusinessAccountInOutDetailRequest;
import com.zteits.clouds.api.dto.business.param.TdCBusinessAcctRequest;
import com.zteits.clouds.api.dto.clouds.param.BatchDeleteByPrimaryKeyRequest;
import com.zteits.clouds.api.service.business.TdCBusinessAcctService;
import com.zteits.sys.pagepaper.PageBeanUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class TdCBusinessAcctServiceImpl implements TdCBusinessAcctService {
@Autowired
private TdCBusinessAcctDao tdCBusinessAcctDao;
@Override
public BizResult<List<TdCBusinessAcctDTO>> queryTdCBusinessAcct(TdCBusinessAcctRequest request) {
List<TdCBusinessAcctDTO> tdCBusinessAcctDTOS = new ArrayList<>();
List<TdCBusinessAcct> tdCBusinessAccts = tdCBusinessAcctDao.queryTdCBusinessAcct(request);
if (CollectionUtils.isEmpty(tdCBusinessAccts)) {
return new BizResult<>(tdCBusinessAcctDTOS);
}
for (TdCBusinessAcct source : tdCBusinessAccts) {
TdCBusinessAcctDTO dto = new TdCBusinessAcctDTO();
BeanUtils.copyProperties(source, dto);
tdCBusinessAcctDTOS.add(dto);
}
return new BizResult<>(tdCBusinessAcctDTOS);
}
@Override
public BizResult<PageBean<TdCBusinessAcctDTO>> queryTdCBusinessAcctForPage(TdCBusinessAcctRequest request) {
PageBean<TdCBusinessAcctDTO> pageBean = new PageBean<>();
PageInfo<TdCBusinessAcct> pageInfo = tdCBusinessAcctDao.queryTdCBusinessAcctForPage(request);
if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) {
PageBeanUtil.copyProperties(pageInfo, pageBean, TdCBusinessAcctDTO.class);
}
return new BizResult<>(pageBean);
}
@Override
public BizResult<Boolean> batchDeleteTdCBusinessAcctByPrimaryKey(BatchDeleteByPrimaryKeyRequest request) {
int delenum = tdCBusinessAcctDao.batchDeleteTdCBusinessAcctByPrimaryKey(request.getIds(), request.getOpId(), request.getsOpName());
return new BizResult<>(delenum > 0);
}
@Override
public BizResult<Boolean> saveTdCBusinessAcct(TdCBusinessAcctRequest request) {
TdCBusinessAcct tdCBusinessAcct = new TdCBusinessAcct();
BeanUtils.copyProperties(request, tdCBusinessAcct);
int saveNum = tdCBusinessAcctDao.saveTdCBusinessAcct(tdCBusinessAcct);
return new BizResult<>(saveNum > 0);
}
@Override
public BizResult<Boolean> updateByPrimaryKeySelective(TdCBusinessAcctRequest request) {
TdCBusinessAcct tdCBusinessAcct = new TdCBusinessAcct();
BeanUtils.copyProperties(request, tdCBusinessAcct);
int upNum = tdCBusinessAcctDao.updateByPrimaryKeySelective(tdCBusinessAcct);
return new BizResult<>(upNum > 0);
}
/**
* 分页查询商户账户余额充值与支出明细
*/
@Override
public BizResult<PageBean<BusinessAccountInOutDetailForPageDTO>> queryAccountInOutDetailsForPage(BusinessAccountInOutDetailRequest requestQ) {
PageInfo<BusinessAccountInOutDetailForPageDTO> pageInfo = tdCBusinessAcctDao.queryAccountInOutDetailsForPage(requestQ);
PageBean<BusinessAccountInOutDetailForPageDTO> pageBean = new PageBean<>();
PageBeanUtil.copyProperties(pageInfo, pageBean, BusinessAccountInOutDetailForPageDTO.class);
if (CollectionUtil.isNotEmpty(pageBean.getDataList())) {
Map<String, String> rechargeKindMap = SysCodeValueCacheUtil.queryCodeValueAndNames(CodeValKindEnum.BUS_ACCOUNT_RECHARGE_KIND);
Map<String, String> payTypeMap = SysCodeValueCacheUtil.queryCodeValueAndNames(CodeValKindEnum.BUS_ACCOUNT_PAY_TYPE);
for (BusinessAccountInOutDetailForPageDTO dto : pageBean.getDataList()) {
if ("1".equals(dto.getKind())) {
dto.setKindName("充值");
// 充值
String typeName = rechargeKindMap.get(dto.getType());
dto.setTypeName(typeName + "充值");
// 0:待审核 2:通过 3 :驳回
String payState = dto.getPayState();
dto.setPayStateDesc("0".equals(payState) ? "待审核" : "2".equals(payState) ? "充值成功" : "驳回");
dto.setChangeFeeDetail("+" + AmountUtils.changeF2Y(dto.getChangeFee() + ""));
dto.setOpTime(DateUtil.getDateString(dto.getCreateDate(), DateUtil.DATETIME_FORMAT) + "");
} else {
// 2支出
dto.setKindName("支出");
// 充值
String typeName = payTypeMap.get(dto.getType());
dto.setTypeName(typeName);
dto.setPayStateDesc("支付成功");
dto.setChangeFeeDetail("-" + AmountUtils.changeF2Y(dto.getChangeFee() + ""));
dto.setOpTime(DateUtil.getDateString(dto.getCreateDate(), DateUtil.DATETIME_FORMAT) + "");
}
}
}
return new BizResult<>(pageBean);
}
/**
* 余额明细总览
*
*/
@Override
public BizResult<BusinessAccountDetailSummaryDTO> detailSummary(BusinessAccountInOutDetailRequest requestQ) {
BusinessAccountDetailSummaryDTO summaryDTO = new BusinessAccountDetailSummaryDTO();
if (StringUtils.isBlank(requestQ.getKind())) {
// 查询全部的时候,分开查询两次
requestQ.setKind("1");
summaryDTO.setRechargeSummary(getDetailSummaryStr(requestQ));
requestQ.setKind("2");
summaryDTO.setPaySummary(getDetailSummaryStr(requestQ));
} else {
String resStr = getDetailSummaryStr(requestQ);
// 1 充值, 2 支出
if ("1".equals(requestQ.getKind())) {
summaryDTO.setRechargeSummary(resStr);
} else {
summaryDTO.setPaySummary(resStr);
}
}
return new BizResult<>(summaryDTO);
}
private String getDetailSummaryStr(BusinessAccountInOutDetailRequest requestQ) {
List<BusinessAccountDetailCountDTO> detailCountDTOList = tdCBusinessAcctDao.detailSummary(requestQ);
if ("1".equals(requestQ.getKind())) {
long totalFee = 0L;
long totalCount = 0L;
for (BusinessAccountDetailCountDTO dto : detailCountDTOList) {
totalCount += dto.getChangeCount();
totalFee += dto.getTotalFee();
}
// 共18笔充值,充值总金额100.00元
return "共" + totalCount + "笔充值,充值总金额" + AmountUtils.changeF2Y(totalFee) + "元";
} else {
long totalFee = 0L;
long totalCount = 0L;
long parkPayFee = 0L;
long couponBuyFee = 0L;
for (BusinessAccountDetailCountDTO dto : detailCountDTOList) {
totalCount += dto.getChangeCount();
totalFee += dto.getTotalFee();
if ("1".equals(dto.getType())) {
// 购买卡券
couponBuyFee = dto.getTotalFee();
} else {
parkPayFee = dto.getTotalFee();
}
}
// 共18笔支出,支出总金额100.00元,停车费50.00元,卡券50.00元
String summaryStr = "共" + totalCount + "笔支出,支出总金额" + AmountUtils.changeF2Y(totalFee) + "元,";
String parkFeeStr = "停车费" + AmountUtils.changeF2Y(parkPayFee) + "元,";
String couponBuyFeeStr = "卡券" + AmountUtils.changeF2Y(couponBuyFee) + "元,";
if(parkPayFee > 0){
summaryStr += parkFeeStr;
}
if(couponBuyFee > 0){
summaryStr += couponBuyFeeStr;
}
return summaryStr.substring(0, summaryStr.length() -1);
}
}
}