FreeBerthsPushJob.java
4.11 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
package com.zteits.park.job.datahub;
import com.jtjt.upload.client.vo.ParkFreeVO;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.park.dao.ParkFreeBerthDao;
import com.zteits.park.domain.HubEnterpriseInfo;
import com.zteits.park.domain.HubEnterpriseInfoExample;
import com.zteits.park.domain.HubParkingInfoBO;
import com.zteits.park.domain.ParkFreeBerth;
import com.zteits.park.mapper.HubEnterpriseInfoMapper;
import com.zteits.park.mapper.smapper.HubParkingInfoSMapper;
import com.zteits.park.util.ParkInfoUtil;
import org.apache.commons.lang3.tuple.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 空闲车位空闲车位数据推送JOB
* @since 2025-08-17
*/
@Component
public class FreeBerthsPushJob {
private static final Logger logger = LoggerFactory.getLogger(FreeBerthsPushJob.class);
@Autowired
private HubParkingInfoSMapper hubParkingInfoSMapper;
@Autowired
private HubConfig hubConfig;
@Autowired
private ParkFreeBerthDao parkFreeBerthDao;
@Autowired
private TokenService tokenService;
@XxlJob("FreeBerthsPushJob")
public ReturnT<String> execute()
{
log("开始推送空闲车位信息JOB");
try{
this.pushData();
} catch (Exception e){
logger.error("推送空闲车位信息JOB异常:"+e.getMessage(),e);
log("推送空闲车位信息JOB异常:"+e.getMessage());
}
return ReturnT.SUCCESS;
}
private void pushData() {
List<HubParkingInfoBO> hubParkingInfoList = hubParkingInfoSMapper.selectList(null);
if (CollectionUtils.isEmpty(hubParkingInfoList)) {
log("没有需要推送的空闲车位信息");
}
// 获取到停车场编码集合
List<String> parkCodeList = hubParkingInfoList.stream().map(HubParkingInfoBO::getParkCode).collect(Collectors.toList());
// 查询空闲车位
List<ParkFreeBerth> parkFreeBerths = parkFreeBerthDao.queryFreeBerthByPlno(parkCodeList);
// 转换为map,key为停车场编码,value为停车场空闲车位数
Map<String, Integer> freeBerthMap = parkFreeBerths.stream().collect(Collectors.toMap(ParkFreeBerth::getPlNo, ParkFreeBerth::getFreeBerth));
for (HubParkingInfoBO hubParkingInfo : hubParkingInfoList) {
// 发送空闲车位信息
ParkFreeVO parkFree = new ParkFreeVO();
parkFree.setParkCode(hubParkingInfo.getParkCode());
parkFree.setParkName(hubParkingInfo.getParkName());
parkFree.setBerths(hubParkingInfo.getBerths());
Integer freeBerthNum = freeBerthMap.get(hubParkingInfo.getParkCode());
freeBerthNum = freeBerthNum == null ? 0 : (freeBerthNum < 0 ? 0 : freeBerthNum);
parkFree.setFreeBerths(Math.min(parkFree.getBerths(), freeBerthNum));
parkFree.setSentDateTime(LocalDateTime.now());
Pair<Integer, String> sendParkFree = ParkInfoUtil.getSingleInstance().sendParkFree(hubConfig.getUrlPrefix(), tokenService.getToken(false), parkFree);
int code = sendParkFree.getLeft();
if (code == 401) {
// 重新刷新token,再次尝试发送
sendParkFree = ParkInfoUtil.getSingleInstance().sendParkFree(hubConfig.getUrlPrefix(), tokenService.getToken(true), parkFree);
}
if (sendParkFree.getLeft() != 200) {
log("ParkingChargingPilePushJob.pushParkFreeData error:" + sendParkFree.getRight());
} else {
log("ParkingChargingPilePushJob.pushParkFreeData success:" + sendParkFree.getRight());
}
}
}
private void log(String msg){
XxlJobHelper.log(msg);
logger.info(msg);
}
}