java110
2023-05-16 d516e38fd44e186f393bbb05c4e7ca34b323b609
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
package com.java110.job.task.parkingSpace;
 
import com.alibaba.fastjson.JSONObject;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.community.CommunityDto;
import com.java110.dto.machine.CarBlackWhiteDto;
import com.java110.dto.parking.ParkingSpaceDto;
import com.java110.dto.task.TaskDto;
import com.java110.dto.visit.VisitDto;
import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
import com.java110.intf.community.IVisitInnerServiceSMO;
import com.java110.intf.user.ICarBlackWhiteV1InnerServiceSMO;
import com.java110.job.adapt.hcIot.asyn.IIotSendAsyn;
import com.java110.job.quartz.TaskSystemQuartz;
import com.java110.po.car.CarBlackWhitePo;
import com.java110.po.parking.ParkingSpacePo;
import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
 
/**
 * @author fqz
 * @Description 释放预约车车位(依据停车免费结束时间)
 * @date 2022-04-18 17:08
 */
@Component
public class ReleaseParkingSpaceTemplate extends TaskSystemQuartz {
 
    @Autowired
    private IVisitInnerServiceSMO visitInnerServiceSMOImpl;
 
    @Autowired
    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
 
    @Autowired
    private ICarBlackWhiteV1InnerServiceSMO carBlackWhiteV1InnerServiceSMOImpl;
 
    @Autowired
    private IIotSendAsyn hcCarBlackWhiteAsynImpl;
 
    private static Logger logger = LoggerFactory.getLogger(ReleaseParkingSpaceTemplate.class);
 
    @Override
    protected void process(TaskDto taskDto) throws Exception {
        logger.debug("开始执行微信模板信息推送" + taskDto.toString());
        // 获取小区
        List<CommunityDto> communityDtos = getAllCommunity();
        for (CommunityDto communityDto : communityDtos) {
            doReleaseParkingSpace(taskDto, communityDto);
        }
    }
 
    /**
     * 根据小区释放预约车辆车位
     *
     * @param taskDto
     * @param communityDto
     */
    private void doReleaseParkingSpace(TaskDto taskDto, CommunityDto communityDto) throws ParseException {
        //查询小区下的访客信息
        VisitDto visitDto = new VisitDto();
        visitDto.setCommunityId(communityDto.getCommunityId());
        visitDto.setCarNumNoEmpty("1"); //车辆不为空
        visitDto.setFlag("1"); //车位不为空
        List<VisitDto> visitDtos = visitInnerServiceSMOImpl.queryVisits(visitDto);
        if (visitDtos == null || visitDtos.size() < 1) {
            return;
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (VisitDto visit : visitDtos) {
            //查看是否有车位
            ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
            parkingSpaceDto.setPsId(visit.getPsId());
            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
            if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
                continue;
            }
            if (StringUtil.isEmpty(parkingSpaceDtos.get(0).getState()) || !parkingSpaceDtos.get(0).getState().equals("H")) { //出售 S,出租 H ,空闲 F
                continue;
            }
            if (StringUtil.isEmpty(visit.getFreeTime())) {
                continue;
            }
            //查看车辆是否在黑白名单里
            CarBlackWhiteDto carBlackWhiteDto = new CarBlackWhiteDto();
            carBlackWhiteDto.setCarNum(visit.getCarNum());
            carBlackWhiteDto.setCommunityId(visit.getCommunityId());
            carBlackWhiteDto.setBlackWhite("2222"); //1111 黑名单 2222 白名单
            carBlackWhiteDto.setStartTime(visit.getVisitTime());
            carBlackWhiteDto.setEndTime(visit.getFreeTime());
            List<CarBlackWhiteDto> carBlackWhiteDtos = carBlackWhiteV1InnerServiceSMOImpl.queryCarBlackWhites(carBlackWhiteDto);
            if (carBlackWhiteDtos == null || carBlackWhiteDtos.size() != 1) {
                continue;
            }
            //获取预约车免费时间
            Date freeTime = df.parse(visit.getFreeTime());
            //当前时间
            Date date = new Date();
            if (freeTime.getTime() <= date.getTime()) { //如果预约车免费时间小于等于当前时间,说明到期了,需要释放掉
                ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
                parkingSpacePo.setPsId(visit.getPsId());
                parkingSpacePo.setState("F");//车位状态 出售 S,出租 H ,空闲 F
                //车位状态改为空闲状态
                parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
                //删除白名单
                CarBlackWhitePo carBlackWhitePo = new CarBlackWhitePo();
                carBlackWhitePo.setBwId(carBlackWhiteDtos.get(0).getBwId());
                carBlackWhitePo.setStatusCd("1");
                carBlackWhiteV1InnerServiceSMOImpl.deleteCarBlackWhite(carBlackWhitePo);
                //向第三方物联网推送删除白名单信息
                JSONObject postParameters = new JSONObject();
                postParameters.put("extBwId", carBlackWhiteDtos.get(0).getBwId());
                postParameters.put("carNum", carBlackWhiteDtos.get(0).getCarNum());
                postParameters.put("extPaId", carBlackWhiteDtos.get(0).getPaId());
                postParameters.put("extCommunityId", carBlackWhiteDtos.get(0).getCommunityId());
                postParameters.put("startTime", carBlackWhiteDtos.get(0).getStartTime());
                postParameters.put("endTime", carBlackWhiteDtos.get(0).getEndTime());
                postParameters.put("blackWhite", carBlackWhiteDtos.get(0).getBlackWhite());
                hcCarBlackWhiteAsynImpl.deleteCarBlackWhite(postParameters);
            }
        }
    }
 
}