SpecialCarnumberBillingServiceImpl.java
14.6 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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
package com.zteits.pay.biz.impl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.constants.ExamineStateEnum;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.apibase.constants.AccountTypeEnum;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.clouds.param.BatchDeleteByPrimaryKeyRequest;
import com.zteits.clouds.api.dto.clouds.param.DeleteByPrimaryKeyRequest;
import com.zteits.clouds.api.dto.pay.TdCAcctNoSecretDTO;
import com.zteits.clouds.api.dto.pay.car.param.CustCarInfoQueryReq;
import com.zteits.clouds.api.dto.pay.dto.SpecialCarnumberBillingDTO;
import com.zteits.clouds.api.dto.pay.param.SaveCustPersonRequest;
import com.zteits.clouds.api.dto.pay.param.SpecialCarnumberBillingRequest;
import com.zteits.clouds.api.dto.pay.param.TdCAcctNoSecretRequest;
import com.zteits.clouds.api.service.pay.SpecialCarnumberBillingService;
import com.zteits.clouds.api.service.pay.TdCAcctNoSecretService;
import com.zteits.clouds.api.service.pay.TdCCustPersonService;
import com.zteits.pay.dao.SpecialCarnumberBillingDao;
import com.zteits.pay.dao.TdCAcctPersonDao;
import com.zteits.pay.dao.TdCCarDao;
import com.zteits.pay.dao.TdCCustPersonDao;
import com.zteits.pay.domain.SpecialCarnumberBilling;
import com.zteits.pay.domain.TdCCar;
import com.zteits.pay.domain.TdCCustPerson;
import com.zteits.pay.pagepager.PageBeanUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Component
public class SpecialCarnumberBillingServiceImpl implements SpecialCarnumberBillingService {
private static final Logger logger = LoggerFactory.getLogger(SpecialCarnumberBillingServiceImpl.class);
@Autowired
private SpecialCarnumberBillingDao specialCarnumberBillingDao;
@Autowired
private TdCCustPersonDao tdCCustPersonDao;
@Autowired
private TdCCustPersonService tdCCustPersonService;
@Autowired
private TdCAcctPersonDao tdCAcctPersonDao;
@Resource(name="tdCAcctNoSecretServiceImpl")
private TdCAcctNoSecretService tdCAcctNoSecretService;
@Autowired
private TdCCarDao tdCCarDao;
@Override
public BizResult<List<SpecialCarnumberBillingDTO>> querySpecialCarnumberBilling(SpecialCarnumberBillingRequest request) {
List<SpecialCarnumberBillingDTO> specialCarnumberBillingDTOS = new ArrayList<>();
List<SpecialCarnumberBilling> specialCarnumberBillings = specialCarnumberBillingDao.querySpecialCarnumberBilling(request);
if (CollectionUtils.isEmpty(specialCarnumberBillings)) {
return new BizResult<>(specialCarnumberBillingDTOS);
}
for (SpecialCarnumberBilling source : specialCarnumberBillings) {
SpecialCarnumberBillingDTO dto = new SpecialCarnumberBillingDTO();
BeanUtils.copyProperties(source, dto);
specialCarnumberBillingDTOS.add(dto);
}
return new BizResult<>(specialCarnumberBillingDTOS);
}
@Override
public BizResult<PageBean<SpecialCarnumberBillingDTO>> querySpecialCarnumberBillingForPage(SpecialCarnumberBillingRequest request) {
PageBean<SpecialCarnumberBillingDTO> pageBean = new PageBean<>();
PageInfo<SpecialCarnumberBilling> pageInfo = specialCarnumberBillingDao.querySpecialCarnumberBillingForPage(request);
if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) {
PageBeanUtil.copyProperties(pageInfo, pageBean, SpecialCarnumberBillingDTO.class);
}
return new BizResult<>(pageBean);
}
@Override
public BizResult<Boolean> batchDeleteSpecialCarnumberBillingByPrimaryKey(BatchDeleteByPrimaryKeyRequest request) {
int delenum = specialCarnumberBillingDao.batchDeleteSpecialCarnumberBillingByPrimaryKey(request.getIds(), request.getOpId(), request.getsOpName());
return new BizResult<>(delenum > 0);
}
@Transactional(rollbackFor = Exception.class)
@Override
public BizResult<Boolean> delSpecialCarnumberBillingByPrimaryKey(DeleteByPrimaryKeyRequest request) {
SpecialCarnumberBilling specialCarnumberBilling = specialCarnumberBillingDao.queryByPrimaryKey(request.getId());
int delenum = specialCarnumberBillingDao.delSpecialCarnumberBillingByPrimaryKey(request.getId(), request.getOpId(), request.getsOpName());
logger.info("西城特殊车-逻辑删除special_carnumber_billing, id:{}", request.getId());
if (StringUtils.isNotEmpty(specialCarnumberBilling.getCustId())) {
// 关闭该账户自动扣费
TdCAcctNoSecretRequest acctNoSecretRequest = new TdCAcctNoSecretRequest();
acctNoSecretRequest.setCustId(specialCarnumberBilling.getCustId());
acctNoSecretRequest.setIsOpen(0);
acctNoSecretRequest.setAcctType(5);
tdCAcctNoSecretService.switchPaymentState(acctNoSecretRequest);
logger.info("西城特殊车-关闭td_c_acct_no_secret, custid:{}", specialCarnumberBilling.getCustId());
}
return new BizResult<>(delenum > 0);
}
@Transactional(rollbackFor = Exception.class)
@Override
public BizResult<Boolean> saveSpecialCarnumberBilling(SpecialCarnumberBillingRequest request) {
logger.info("西城特殊车-添加, custidrequest:{}", JSONObject.toJSONString(request));
SpecialCarnumberBilling specialCarnumberBilling = new SpecialCarnumberBilling();
BeanUtils.copyProperties(request, specialCarnumberBilling);
specialCarnumberBilling.setOrgId(String.valueOf(request.getOrgId()));
specialCarnumberBilling.setCreateEmpid(request.getCreateEmpId());
specialCarnumberBilling.setCreateName(request.getCreateEmpName());
specialCarnumberBilling.setCreateDate(new Date());
if (StringUtils.isNotEmpty(request.getPhoneNum())) {
TdCCustPerson custPerson = tdCCustPersonDao.selectByUserPhone(request.getPhoneNum());
if (custPerson != null && StringUtils.isNotEmpty(custPerson.getCustId())) {
String custId = custPerson.getCustId();
// 添加td_c_acct_person
tdCAcctPersonDao.addFeeForCustPresentAcct(request.getOrgId(), 0L, AccountTypeEnum.ACCT_RECHARGE.value(), custId);
logger.info("西城特殊车-添加td_c_acct_person, custid:{}", custId);
// 添加td_c_acct_no_secret
addAcctNoSecret(custId);
// 添加车牌到td_c_car
addTdCCar(request, custId);
specialCarnumberBilling.setCustId(custId);
} else {
// 添加td_c_cust_person
SaveCustPersonRequest saveCustPersonRequest = new SaveCustPersonRequest();
saveCustPersonRequest.setCustName(request.getName());
saveCustPersonRequest.setUserPhone(request.getPhoneNum());
String custId = tdCCustPersonService.saveCustPerson(saveCustPersonRequest).getData();
logger.info("西城特殊车-添加td_c_cust_person成功, custid:{}", custId);
// 添加td_c_acct_person
tdCAcctPersonDao.addFeeForCustPresentAcct(request.getOrgId(), 0L, AccountTypeEnum.ACCT_RECHARGE.value(), custId);
logger.info("西城特殊车-添加td_c_acct_person, custid:{}", custId);
// 添加td_c_acct_no_secret
addAcctNoSecret(custId);
// 添加车牌到td_c_car
addTdCCar(request, custId);
specialCarnumberBilling.setCustId(custId);
}
}
int saveNum = specialCarnumberBillingDao.saveSpecialCarnumberBilling(specialCarnumberBilling);
logger.info("西城特殊车-添加special_carnumber_billing, custid:{}", specialCarnumberBilling.getCustId());
return new BizResult<>(saveNum > 0);
}
/**
* 判断有没有绑定该车
* 绑定了则datastate改为0
* 然后添加绑定车辆
* @param request
* @param custId
*/
private void addTdCCar(SpecialCarnumberBillingRequest request, String custId) {
// 查询车牌号之前有没有绑定过
TdCCar reqCar = new TdCCar();
reqCar.setCarNumber(request.getCarNumber());
List<TdCCar> cars = tdCCarDao.selectCustInfo(reqCar);
if (CollectionUtils.isNotEmpty(cars)) {
for (TdCCar car : cars) {
// 修改 datastate = 0
tdCCarDao.deleteCars(car);
}
}
// 添加车牌到td_c_car
TdCCar tdCCar = new TdCCar();
tdCCar.setCarNumber(request.getCarNumber());
tdCCar.setCustId(custId);
tdCCar.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
tdCCar.setCarNumberColor(Integer.valueOf(Optional.ofNullable(request.getCarNumberColor()).orElse("0")));
tdCCar.setPlateTypeId(1);
tdCCar.setExamineState(ExamineStateEnum.ReviewPass.getValue());
tdCCar.setCardCheckState(0);
tdCCar.setCreditScore(0);
tdCCar.setCreateDate(new Date());
tdCCar.setCreateEmpid(request.getCreateEmpId());
tdCCarDao.insertCars(tdCCar);
}
/**
* 添加td_c_acct_no_secret
* @param custId
*/
private void addAcctNoSecret(String custId) {
TdCAcctNoSecretRequest acctNoSecretRequest = new TdCAcctNoSecretRequest();
acctNoSecretRequest.setCustId(custId);
acctNoSecretRequest.setAcctType(5);
acctNoSecretRequest.setAcctOrder(1);
acctNoSecretRequest.setIsOpen(1);
boolean isOpen = false;
List<TdCAcctNoSecretDTO> tdCAcctNoSecrets = tdCAcctNoSecretService.queryInFoByCustIdAndType(acctNoSecretRequest).getData();
logger.info("西城特殊车-查询是否开通自动扣费,{}", JSONObject.toJSONString(tdCAcctNoSecrets));
for (TdCAcctNoSecretDTO tdCAcctNoSecret : tdCAcctNoSecrets) {
// 如果已经开通了并且优先扣费则返回
if (tdCAcctNoSecret.getIsOpen() == 1 && tdCAcctNoSecret.getAcctOrder() == 1) {
logger.info("西城特殊车-已经添加过td_c_acct_no_secrety, custid:{}", custId);
} else {
tdCAcctNoSecretService.switchPaymentState(acctNoSecretRequest);
logger.info("西城特殊车-修改并保存td_c_acct_no_secrety:custid:{}", custId);
}
isOpen = true;
}
if (!isOpen) {
tdCAcctNoSecretService.insertNonSensePayment(acctNoSecretRequest);
logger.info("西城特殊车-添加td_c_acct_no_secret, custid:{}", custId);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public BizResult<Boolean> updateByPrimaryKeySelective(SpecialCarnumberBillingRequest request) {
SpecialCarnumberBilling oriSpecialCarnumberBilling = specialCarnumberBillingDao.queryByPrimaryKey(request.getId());
if(!oriSpecialCarnumberBilling.getPhoneNum().equals(request.getPhoneNum())) {
TdCCustPerson custPerson = new TdCCustPerson();
custPerson.setCustId(oriSpecialCarnumberBilling.getCustId());
custPerson.setUserPhone(request.getPhoneNum());
tdCCustPersonDao.updateByCustId(custPerson);
logger.info("西城特殊车-更新td_c_cust_person, 手机号:{}", request.getPhoneNum());
}
if(!oriSpecialCarnumberBilling.getCarNumber().equals(request.getCarNumber())) {
CustCarInfoQueryReq custCarInfoQueryReq = new CustCarInfoQueryReq();
custCarInfoQueryReq.setCarNumber(oriSpecialCarnumberBilling.getCarNumber());
List<TdCCar> cars = tdCCarDao.selectCustInfoByCarNumber(custCarInfoQueryReq);
for ( TdCCar car: cars) {
car.setCarNumber(request.getCarNumber());
car.setModfiyDate(new Date());
car.setModfiyEmpid(request.getModifyEmpId());
tdCCarDao.updateCars(car);
logger.info("西城特殊车-更新td_c_car, 车牌号:{}", request.getCarNumber());
}
}
SpecialCarnumberBilling specialCarnumberBilling = new SpecialCarnumberBilling();
BeanUtils.copyProperties(request, specialCarnumberBilling);
int upNum = specialCarnumberBillingDao.updateByPrimaryKeySelective(specialCarnumberBilling);
logger.info("西城特殊车-更新special_carnumber_billing, id:{}", request.getId());
return new BizResult<>(upNum > 0);
}
/**
* 根据手机号动态查询
*
* @param request
* @return
*/
@Override
public BizResult<List<SpecialCarnumberBillingDTO>> querySpecialCarnumberBillingByPhone(SpecialCarnumberBillingRequest request) {
List<SpecialCarnumberBillingDTO> specialCarnumberBillingDTOS = new ArrayList<>();
List<SpecialCarnumberBilling> specialCarnumberBillings = specialCarnumberBillingDao.querySpecialCarnumberBillingByPhone(request);
if (CollectionUtils.isEmpty(specialCarnumberBillings)) {
return new BizResult<>(specialCarnumberBillingDTOS);
}
for (SpecialCarnumberBilling source : specialCarnumberBillings) {
SpecialCarnumberBillingDTO dto = new SpecialCarnumberBillingDTO();
BeanUtils.copyProperties(source, dto);
specialCarnumberBillingDTOS.add(dto);
}
return new BizResult<>(specialCarnumberBillingDTOS);
}
/**
* 根据车牌号动态查询
*
* @param request
* @return
*/
@Override
public BizResult<List<SpecialCarnumberBillingDTO>> querySpecialCarnumberBillingByCarNum(SpecialCarnumberBillingRequest request) {
List<SpecialCarnumberBillingDTO> specialCarnumberBillingDTOS = new ArrayList<>();
List<SpecialCarnumberBilling> specialCarnumberBillings = specialCarnumberBillingDao.querySpecialCarnumberBillingByCarNum(request);
if (CollectionUtils.isEmpty(specialCarnumberBillings)) {
return new BizResult<>(specialCarnumberBillingDTOS);
}
for (SpecialCarnumberBilling source : specialCarnumberBillings) {
SpecialCarnumberBillingDTO dto = new SpecialCarnumberBillingDTO();
BeanUtils.copyProperties(source, dto);
specialCarnumberBillingDTOS.add(dto);
}
return new BizResult<>(specialCarnumberBillingDTOS);
}
}