UnDoneAppointmentPushJob.java
5.64 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
package com.zteits.pay.job.appointment;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.cache.park.ParkingLotCacheUtil;
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.bean.BizResult;
import com.zteits.clouds.api.apibase.constants.AppointmentPushStateEnum;
import com.zteits.clouds.api.apibase.constants.AppointmentStateEnum;
import com.zteits.clouds.api.apibase.constants.SourceTypeEnum;
import com.zteits.clouds.api.dto.order.dto.UnDoneOrderAppointmentDTO;
import com.zteits.clouds.api.dto.order.param.UnDoneOrderAppointmentRequest;
import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
import com.zteits.clouds.api.dto.park.param.UpdateFreeBerthEnclosedRequest;
import com.zteits.clouds.api.dto.park.param.ViewFreeBerthEnclosedRequest;
import com.zteits.clouds.api.service.order.orderappointment.OrderAppointmentService;
import com.zteits.clouds.api.service.park.ParkingListQueryService;
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.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* Copyright: Copyright (c) 2018
*
* @Description:
* @version: v1.0.0
* @author: jiawj
* @date: 2021/04/15 18:13
* Modification History:
* Date Author Version Description
* ---------------------------------------------------------*
* 2021/04/15 jiawj v1.0.0 创建
*/
@Component
public class UnDoneAppointmentPushJob {
private static final Logger logger = LoggerFactory.getLogger(UnDoneAppointmentPushJob.class);
@Autowired
private OrderAppointmentService orderAppointmentService;
@Resource
private ParkingListQueryService parkingListQueryService;
@XxlJob(value = "UnDoneAppointmentPushJob")
public ReturnT<String> execute(String... arg0) throws Exception {
//获取车场爽约车辆数据
UnDoneOrderAppointmentRequest request = new UnDoneOrderAppointmentRequest();
//查询爽约未推送的预约车数据
request.setAppointmentState(AppointmentStateEnum.undone_appointment.value());
// 0 未推送
request.setPushState(AppointmentPushStateEnum.PUSH_STATE_UN_PUSH.value());
request.setSysCode("1001");
BizResult<Boolean> bizResult = new BizResult<>();
bizResult.setData(false);
// 获取爽约未推送的数据
BizResult<List<UnDoneOrderAppointmentDTO>> rsList = orderAppointmentService.queryUnDoneAppointment(request);
if (rsList.getData() != null) {
this.logger("待处理数据条目数=" + Optional.ofNullable(rsList.getData()).map(List::size).orElse(0));
for (UnDoneOrderAppointmentDTO unDoneOrderAppointmentDTO : rsList.getData()) {
this.logger("待处理数据信息=" + JSONObject.toJSONString(unDoneOrderAppointmentDTO));
List<String> orderIdList = new ArrayList<>();
String orderIds = unDoneOrderAppointmentDTO.getOrderIds();
if (!StringUtils.isBlank(orderIds)) {
String[] orderIdArr = orderIds.split(",");
orderIdList = Arrays.asList(orderIdArr);
}
//获取该停车场信息
ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(unDoneOrderAppointmentDTO.getPlNo());
Integer sourceType = (parkingLotDTO == null) ? null : parkingLotDTO.getSourceType();
if (null != sourceType && sourceType.equals(SourceTypeEnum.CLOUD_BILL.getValue())) {
ViewFreeBerthEnclosedRequest viewFreeBerthEnclosedRequest = new ViewFreeBerthEnclosedRequest();
viewFreeBerthEnclosedRequest.setPlNo(parkingLotDTO.getPlNo());
viewFreeBerthEnclosedRequest.setSysCode("1001");
// 获取当前停车场剩余泊位数
BizResult<Integer> freeBerthResult = parkingListQueryService.viewFreeBerthEnclosed(viewFreeBerthEnclosedRequest);
int freeBerth = freeBerthResult.getData();
freeBerth = freeBerth + unDoneOrderAppointmentDTO.getNum();
UpdateFreeBerthEnclosedRequest updateFreeBerthEnclosedRequest = new UpdateFreeBerthEnclosedRequest();
updateFreeBerthEnclosedRequest.setFreeBerth(freeBerth);
updateFreeBerthEnclosedRequest.setPlNo(parkingLotDTO.getPlNo());
updateFreeBerthEnclosedRequest.setSysCode("1001");
parkingListQueryService.updateFreeBerthEnclosed(updateFreeBerthEnclosedRequest);
this.logger("停车场" + parkingLotDTO.getPlNo() + "剩余泊位数修改为" + freeBerth + "个");
}
// 所有停车场数据改成已推送
UnDoneOrderAppointmentRequest unDoneOrderAppointmentRequest = new UnDoneOrderAppointmentRequest();
unDoneOrderAppointmentRequest.setSysCode("1001");
unDoneOrderAppointmentRequest.setPushState(1);
unDoneOrderAppointmentRequest.setOrderIds(orderIdList);
orderAppointmentService.updateOrderAppointmentPushState(unDoneOrderAppointmentRequest);
}
}
return ReturnT.SUCCESS;
}
private void logger(String msg) {
XxlJobHelper.log(msg);
logger.info(msg);
}
}