package com.qtzl.alterSales.manager.service; import cn.com.taiji.common.manager.ManagerException; import cn.com.taiji.common.manager.net.http.ServiceHandleException; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.qtzl.alterSales.dao.entity.primary.AflBindVehicleInfo; import com.qtzl.alterSales.dao.entity.second.AflCenterObuInfo; import com.qtzl.alterSales.dao.entity.second.AflCenterVehicleInfo; import com.qtzl.alterSales.dao.entity.second.AflDeviceCallback; import com.qtzl.alterSales.dao.repo.jpa.primary.AflBindVehicleInfoRepo; import com.qtzl.alterSales.dao.repo.jpa.second.AflCenterCardInfoRepo; import com.qtzl.alterSales.dao.repo.jpa.second.AflCenterObuInfoRepo; import com.qtzl.alterSales.dao.repo.jpa.second.AflCenterVehicleInfoRepo; import com.qtzl.alterSales.dao.repo.jpa.second.AflDeviceCallbackRepo; import com.qtzl.alterSales.manager.model.protocol.UcServiceError; import com.qtzl.alterSales.manager.model.protocol.sales.VehicleInfoFindByVehicleRequest; import com.qtzl.alterSales.manager.vo.AflCenterBlackInfoImplVo; import com.qtzl.alterSales.manager.vo.FindByVehicleVo; import com.qtzl.alterSales.zt.enums.ZttxInterfaceCode; import com.qtzl.alterSales.zt.utils.ZtHttpResponse; import com.qtzl.alterSales.zt.utils.ZtHttpUtil; import com.qtzl.alterSales.zt.vo.FindByVehicleIdRequestVo; import com.qtzl.alterSales.zt.vo.FindByVehicleIdResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Map; @Service public class VehicleInfoServiceImpl implements VehicleInfoService { @Resource AflBindVehicleInfoRepo aflBindVehicleInfoRepo; @Resource AflCenterCardInfoRepo aflCenterCardInfoRepo; @Resource AflCenterObuInfoRepo aflCenterObuInfoRepo; @Resource AflDeviceCallbackRepo aflDeviceCallbackRepo; @Resource AflCenterVehicleInfoRepo aflCenterVehicleInfoRepo; @Autowired private ZtHttpUtil httpUtil; @Resource private AflCenterBlackInfoService aflCenterBlackInfoService; @Override public FindByVehicleVo findByVehicle(VehicleInfoFindByVehicleRequest request) throws ServiceHandleException { FindByVehicleVo findByVehicleVo = new FindByVehicleVo(); AflBindVehicleInfo aflBindVehicleInfo = aflBindVehicleInfoRepo.findByPlateNumAndPlateColor(request.getPlateNum(), request.getPlateColor()); if (aflBindVehicleInfo == null) { AflCenterVehicleInfo aflCenterVehicleInfo = aflCenterVehicleInfoRepo.findByPlateNumAndPlateColor(request.getPlateNum(), request.getPlateColor()); if (aflCenterVehicleInfo != null) { BeanUtil.copyProperties(aflCenterVehicleInfo, findByVehicleVo); findByVehicleVo.setDriverName(aflCenterVehicleInfo.getOwnerName()); } else { findByVehicleVo = null; } } else { BeanUtil.copyProperties(aflBindVehicleInfo, findByVehicleVo); } if (findByVehicleVo != null && findByVehicleVo.getVehicleId() != null) { AflDeviceCallback aflDeviceCallback = aflDeviceCallbackRepo.findByVehicleId(findByVehicleVo.getVehicleId()); if (aflDeviceCallback == null) { String cardId = aflCenterCardInfoRepo.findByVehicleId(findByVehicleVo.getVehicleId()); if (!StringUtils.isEmpty(cardId)) { findByVehicleVo.setCardId(cardId); } AflCenterObuInfo aflCenterObuInfo = aflCenterObuInfoRepo.findByVehicleId(findByVehicleVo.getVehicleId()); if (aflCenterObuInfo != null) { findByVehicleVo.setObuId(aflCenterObuInfo.getObuId()); // findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime()); if (aflCenterObuInfo.getEnableTime().indexOf('T') != -1) { findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime().substring(0, aflCenterObuInfo.getEnableTime().indexOf('T'))); } else { findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime()); } findByVehicleVo.setExpireTime(aflCenterObuInfo.getExpireTime()); } } else if (StringUtils.isEmpty(aflDeviceCallback.getCpuId())) { String cardId = aflCenterCardInfoRepo.findByVehicleId(findByVehicleVo.getVehicleId()); if (!StringUtils.isEmpty(cardId)) { findByVehicleVo.setCardId(cardId); } } else if (StringUtils.isEmpty(aflDeviceCallback.getObuId())) { AflCenterObuInfo aflCenterObuInfo = aflCenterObuInfoRepo.findByVehicleId(findByVehicleVo.getVehicleId()); if (aflCenterObuInfo != null) { findByVehicleVo.setObuId(aflCenterObuInfo.getObuId()); if (aflCenterObuInfo.getEnableTime().indexOf('T') != -1) { findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime().substring(0, aflCenterObuInfo.getEnableTime().indexOf('T'))); } else { findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime()); } // findByVehicleVo.setEnableTime(aflCenterObuInfo.getEnableTime()); findByVehicleVo.setExpireTime(aflCenterObuInfo.getExpireTime()); } } else { findByVehicleVo.setCardId(aflDeviceCallback.getCpuId()); findByVehicleVo.setObuId(aflDeviceCallback.getObuId()); if (!StringUtils.isEmpty(aflDeviceCallback.getEnableTime())) { if (aflDeviceCallback.getEnableTime().indexOf('T') != -1) { findByVehicleVo.setEnableTime(aflDeviceCallback.getEnableTime().substring(0, aflDeviceCallback.getEnableTime().indexOf('T'))); } else { findByVehicleVo.setEnableTime(aflDeviceCallback.getEnableTime()); } } findByVehicleVo.setExpireTime(aflDeviceCallback.getExpireTime()); } if (!StringUtils.isEmpty(findByVehicleVo.getCardId()) && !StringUtils.isEmpty(findByVehicleVo.getObuId())) { AflCenterBlackInfoImplVo aflCenterBlackInfoImplVo = null; try { aflCenterBlackInfoImplVo = aflCenterBlackInfoService.queryDeviceStatus(findByVehicleVo.getObuId(), findByVehicleVo.getCardId()); } catch (ServiceHandleException e) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException(e.getMessage()); } if (aflCenterBlackInfoImplVo != null) { findByVehicleVo.setBlack(aflCenterBlackInfoImplVo.getBlack()); } } if (findByVehicleVo != null && !StringUtils.isEmpty(findByVehicleVo.getVehicleId())) { if (StringUtils.isEmpty(findByVehicleVo.getCardId()) || StringUtils.isEmpty(findByVehicleVo.getObuId())) { FindByVehicleIdRequestVo findByVehicleRequestVo = new FindByVehicleIdRequestVo(); BeanUtil.copyProperties(findByVehicleVo, findByVehicleRequestVo); if (StringUtils.isEmpty(findByVehicleRequestVo.getVehicleId())){ throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("根据车辆编号查询卡签信息失败,请求参数车辆编号不能为空"); } Map requestParam = findByVehicleRequestVo.getRequestParam(); ZtHttpResponse response = null; try { response = httpUtil.doPost(ZttxInterfaceCode.XZ_FINDBYVEHICLEID_VEHICLE_INFO, requestParam); } catch (ManagerException e) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException(e.getMessage()); } if (response != null && response.getRcode() == 0) { try { FindByVehicleIdResponse res = JSONObject.parseObject(response.getData(), FindByVehicleIdResponse.class); findByVehicleVo.setObuId(res.getObuId()); findByVehicleVo.setEnableTime(res.getEnableTime()); findByVehicleVo.setExpireTime(res.getExpireTime()); findByVehicleVo.setCardId(res.getCpuId()); } catch (Exception e) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("返回数据解析异常"); } } } } } return findByVehicleVo; } }