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 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 bizResult = new BizResult<>(); bizResult.setData(false); // 获取爽约未推送的数据 BizResult> 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 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 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); } }