InOutParkStatisticServiceImpl.java
7.26 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
package com.zteits.park.biz;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.utils.ResultUtils;
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.ErrorType;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.pay.TdACardCouponsOutDTO;
import com.zteits.clouds.api.dto.pay.param.TdACardCouponsOutRequest;
import com.zteits.clouds.api.dto.park.dto.InOutParkDTO;
import com.zteits.clouds.api.dto.park.param.InOutParkRequest;
import com.zteits.clouds.api.service.clouds.InOutParkStatisticService;
import com.zteits.clouds.api.service.pay.TdACardCouponsService;
import com.zteits.park.constant.ParkConstant;
import com.zteits.park.dao.InOutParkDao;
import com.zteits.park.domain.InOutParkDO;
import com.zteits.park.pagepager.PageBeanUtil;
/**
* 企业云平台->数据统计->进出场上报服务实现。
*
* <p>存量 `zteits-park` 的 `InOutParkStatisticServiceImpl` 在主干上整类被注释、Dubbo provider
* 也早已注释掉(`dubbo-park-provider.xml`),但 `InOutParkDao` + `InOutParkSMapper.xml` 一直活着。
* 本类按 `git show 550cba464e^:zteits-park/src/main/java/com/zteits/park/biz/InOutParkStatisticServiceImpl.java`
* 的原始实现逐行搬运,**唯一的替换**是:存量依赖的 `TdACardCouponsService` 已随那批注释代码
* 一起被删,本次按原实现补回(见 `parking-module-pay` 的 `TdACardCouponsServiceImpl`),
* 仍然走「本模块 DAO 只查本模块库」的分层,不在 park 里直连 pay 库。</p>
*
* <h2>固定车复判的存量怪癖(照搬,红线⑥)</h2>
* <ol>
* <li>`isFixedCar` 为空 → **每个车牌都复判**;非空 → **也每个都复判**,再把与入参不一致的行移除。
* 两条分支的复判调用是同一句,存量就是重复写了两遍,**照搬**。</li>
* <li>复判后只有「查到卡 → `FIXEDCAR("1")`」这一条赋值;查不到卡**不改**原值
* (而不是像 catch 分支那样置 `TMPCAR`)—— 存量如此,照搬。</li>
* <li>`catch (Exception)` 里把固定车标记置 `TMPCAR("0")` 并 `printStackTrace()`,**照搬**。</li>
* <li>入参 `sysCode` 固定写死 `"zteits-park"`(不是请求里的 sysCode),**照搬**。</li>
* </ol>
*/
@Service("com.zteits.park.biz.InOutParkStatisticServiceImpl")
public class InOutParkStatisticServiceImpl implements InOutParkStatisticService {
private static final Logger logger = LoggerFactory.getLogger(InOutParkStatisticServiceImpl.class);
@Autowired
private InOutParkDao inOutParkDao;
@Autowired
private TdACardCouponsService tdACardCouponsService;
@Override
public BizResult<PageBean<InOutParkDTO>> queryInOutParkForList(InOutParkRequest inOutParkRequest)
throws Exception {
PageBean<InOutParkDTO> pageBean = new PageBean<InOutParkDTO>();
if (inOutParkRequest == null) {
throw new BizException(ErrorType.PARAMM_NULL, "入参不能为空!");
}
PageInfo<InOutParkDO> pageInfo = inOutParkDao.queryInOutParkForList(
inOutParkRequest.getBaseRequest().getPageNum(), inOutParkRequest.getBaseRequest().getPageSize(),
inOutParkRequest.getInOutStatus(), inOutParkRequest.getBeginTime(), inOutParkRequest.getEndTime(),
inOutParkRequest.getPlNos(), inOutParkRequest.getIsFixedCar());
if (pageInfo != null && pageInfo.getList() != null && pageInfo.getList().size() > 0) {
PageBeanUtil.copyProperties(pageInfo, pageBean, InOutParkDTO.class);
List<InOutParkDTO> list = pageBean.getDataList();
List<InOutParkDTO> removeList = new ArrayList<>();
for (InOutParkDTO inOutParkDTO : list) {
if (StringUtils.isBlank(inOutParkRequest.getIsFixedCar())) {
//判断该车牌是否是固定车辆(包月,包年)
this.isFixedCar(inOutParkDTO);
} else {
//判断该车牌是否是固定车辆(包月,包年)
this.isFixedCar(inOutParkDTO);
if (!inOutParkRequest.getIsFixedCar().equals(inOutParkDTO.getIsFixedCar())) {
removeList.add(inOutParkDTO);
}
}
}
list.removeAll(removeList);
} else {
logger.info("没有查询到企业云平台数据统计进出场上报信息...");
}
logger.info("---end---企业云平台数据统计进出场上报分页查询,结果={}", JSONObject.toJSON(pageBean));
return new BizResult<PageBean<InOutParkDTO>>(pageBean);
}
/**
* 判断是否为固定车或临时车.
*
* @param inOutParkDTO 进出场上报行
*/
private void isFixedCar(InOutParkDTO inOutParkDTO) {
if (StringUtils.isBlank(inOutParkDTO.getIsFixedCar())
|| inOutParkDTO.getIsFixedCar().equals(ParkConstant.InterfaceLog.isFixedCar.ISFIX_ERROR)) {
//调用接口判断
String carNumber = inOutParkDTO.getCarNumber();
List<String> carNumbers = new ArrayList<>();
carNumbers.add(carNumber);
TdACardCouponsOutRequest request = new TdACardCouponsOutRequest();
request.setSysCode("zteits-park");
request.setCarNumbers(carNumbers);
//TODO 入参增加时间
BizResult<List<TdACardCouponsOutDTO>> bizResult = null;
logger.info("判断车牌号是否为包月或包年 请求入参为:" + JSONObject.toJSONString(request));
try {
bizResult = tdACardCouponsService.queryCardCouponsByCarNumbers(request);
if (ResultUtils.isError(bizResult)) {
logger.info("通过车牌号查询是否为包月或包年车失败:");
logger.info("响应信息为:" + JSONObject.toJSONString(bizResult));
throw new BizException(bizResult.getErrCode(), bizResult.getErrMsg());
}
List<TdACardCouponsOutDTO> couponsOutDTOs = ResultUtils.getBizResultData(bizResult);
if (!CollectionUtils.isEmpty(couponsOutDTOs)) {
//1 办理了包月,否则没有办理
String isFixedCar = couponsOutDTOs.get(0).getCoupons().equals("1")
? ParkConstant.InterfaceLog.isFixedCar.FIXEDCAR
: ParkConstant.InterfaceLog.isFixedCar.ISFIX_ERROR;
inOutParkDTO.setIsFixedCar(isFixedCar);
//TODO 更新该进出场上报的固定车辆值
}
} catch (Exception e) {
logger.info("通过车牌号查询是否为包月或包年车失败");
//默认临时车
inOutParkDTO.setIsFixedCar(ParkConstant.InterfaceLog.isFixedCar.TMPCAR);
e.printStackTrace();
}
}
}
}