| New file |
| | |
| | | package com.java110.job.adapt.car; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.client.OutRestTemplate; |
| | | import com.java110.core.client.RestTemplate; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.dto.machine.CarInoutDetailDto; |
| | | import com.java110.dto.parking.ParkingAreaDto; |
| | | import com.java110.dto.system.Business; |
| | | import com.java110.intf.community.IParkingAreaV1InnerServiceSMO; |
| | | import com.java110.job.adapt.DatabusAdaptImpl; |
| | | import com.java110.po.car.CarInoutDetailPo; |
| | | import com.java110.utils.cache.CommonCache; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.constant.MappingConstant; |
| | | import com.java110.utils.factory.ApplicationContextFactory; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.ImageUtils; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.slf4j.Logger; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.client.HttpStatusCodeException; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 停车进出数据向 东莞市公安局社会停车场(道闸卡口)平台同步数据 |
| | | * <p> |
| | | * databus 配置 |
| | | * <p> |
| | | * 名称 车辆进出databus |
| | | * 业务类型 saveCarInoutDetail |
| | | * 适配器 sendInoutCarToDGGAJParkingAdapt |
| | | * 顺序 80 |
| | | * 状态 在用 |
| | | * |
| | | * |
| | | * mapping 中配置 DOGUAN_PAKRING_KEY 平台提供的key |
| | | */ |
| | | @Component(value = "sendInoutCarToDGGAJParkingAdapt") |
| | | public class SendInoutCarToDGGAJParkingAdapt extends DatabusAdaptImpl { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(SendInoutCarToDGGAJParkingAdapt.class); |
| | | |
| | | @Autowired |
| | | private IParkingAreaV1InnerServiceSMO parkingAreaV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private RestTemplate outRestTemplate; |
| | | |
| | | private static final String url = "http://59.39.179.74:9070/services/hole"; |
| | | |
| | | @Override |
| | | public void execute(Business business, List<Business> businesses) { |
| | | JSONObject data = business.getData(); |
| | | |
| | | //todo 获取到 参数信息 |
| | | CarInoutDetailPo carInoutDetailPo = BeanConvertUtil.covertBean(data, CarInoutDetailPo.class); |
| | | |
| | | //todo 获取到token |
| | | String token = initTrans(carInoutDetailPo); |
| | | |
| | | //todo 上传进出场车辆信息 |
| | | parkWriteInfoV2(carInoutDetailPo,token); |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 写停车场车辆信息 |
| | | * @param carInoutDetailPo |
| | | * @param token |
| | | */ |
| | | private void parkWriteInfoV2(CarInoutDetailPo carInoutDetailPo, String token) { |
| | | |
| | | ParkingAreaDto parkingAreaDto = new ParkingAreaDto(); |
| | | parkingAreaDto.setPaId(carInoutDetailPo.getPaId()); |
| | | parkingAreaDto.setCommunityId(carInoutDetailPo.getCommunityId()); |
| | | List<ParkingAreaDto> parkingAreaDtos = parkingAreaV1InnerServiceSMOImpl.queryParkingAreas(parkingAreaDto); |
| | | |
| | | if (parkingAreaDtos == null || parkingAreaDtos.size() < 1) { |
| | | throw new IllegalArgumentException("停车场未找到"); |
| | | } |
| | | |
| | | //进 |
| | | String directType = "1"; |
| | | |
| | | if (CarInoutDetailDto.CAR_INOUT_OUT.equals(carInoutDetailPo.getCarInout())) { |
| | | directType = "2"; // todo 出 |
| | | } |
| | | String photo = ImageUtils.getBase64ByImgUrl(carInoutDetailPo.getPhotoJpg()); |
| | | JSONObject picBase64 = JSONObject.parseObject("{\"SubImageInfo\": [{\"FileFormat\":\"Jpeg\",\"Data\":\"无图片\"}]}"); |
| | | |
| | | if(!StringUtil.isEmpty(photo)){ |
| | | picBase64.getJSONArray("SubImageInfo").getJSONObject(0).put("Data","data:image/jpeg;base64,"+photo); |
| | | } |
| | | |
| | | String reqParam = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ws=\"http://ws.conflux.sunshine.com\">\n" + |
| | | " <soapenv:Header/>\n" + |
| | | " <soapenv:Body>\n" + |
| | | " <ws:parkWriteInfoV2>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <gateId>"+parkingAreaDtos.get(0).getNum()+"</gateId>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <directType>"+directType+"</directType>\n" + |
| | | " <driverWayNo>"+carInoutDetailPo.getMachineId()+"</driverWayNo>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <driverWayType>00</driverWayType>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <licenseType>02</licenseType>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <passTime>"+ DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A) +"</passTime>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <licenseColor>9</licenseColor>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <carType>K33</carType>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <license>"+carInoutDetailPo.getCarNum()+"</license>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <backLicense></backLicense>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <backLicenseColor></backLicenseColor>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <identical>1</identical>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <carColor>99</carColor>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <carBrand>0</carBrand>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <carShape>8</carShape>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <picBase64>"+picBase64.toJSONString()+"</picBase64>\n" + |
| | | " <freeParkingNums>-1</freeParkingNums>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <sendFlag>0</sendFlag>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <inputTime>"+ DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A) +"</inputTime>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <token>"+token+"</token>\n" + |
| | | " </ws:parkWriteInfoV2>\n" + |
| | | " </soapenv:Body>\n" + |
| | | "</soapenv:Envelope>"; |
| | | logger.debug("请求报文:{}",reqParam); |
| | | HttpHeaders httpHeaders = new HttpHeaders(); |
| | | httpHeaders.add("Content-Type","text/xml;charset=UTF-8"); |
| | | HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(reqParam, httpHeaders); |
| | | try { |
| | | ResponseEntity<String> responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); |
| | | logger.debug("返回报文,{}",responseEntity); |
| | | }catch (HttpStatusCodeException e){ |
| | | logger.error("调用异常",e); |
| | | }catch (Exception e){ |
| | | logger.error("调用异常",e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化连接 |
| | | * @param carInoutDetailPo |
| | | * @return |
| | | */ |
| | | public String initTrans(CarInoutDetailPo carInoutDetailPo) { |
| | | |
| | | String token = CommonCache.getValue("DGGAJ_Parking_token"); |
| | | |
| | | if(!StringUtil.isEmpty(token)){ |
| | | return token; |
| | | } |
| | | |
| | | ParkingAreaDto parkingAreaDto = new ParkingAreaDto(); |
| | | parkingAreaDto.setPaId(carInoutDetailPo.getPaId()); |
| | | parkingAreaDto.setCommunityId(carInoutDetailPo.getCommunityId()); |
| | | List<ParkingAreaDto> parkingAreaDtos = parkingAreaV1InnerServiceSMOImpl.queryParkingAreas(parkingAreaDto); |
| | | |
| | | if (parkingAreaDtos == null || parkingAreaDtos.size() < 1) { |
| | | throw new IllegalArgumentException("停车场未找到"); |
| | | } |
| | | |
| | | String key = MappingCache.getValue("DOGUAN_PAKRING_KEY"); |
| | | |
| | | //进 |
| | | String directType = "1"; |
| | | |
| | | if (CarInoutDetailDto.CAR_INOUT_OUT.equals(carInoutDetailPo.getCarInout())) { |
| | | directType = "2"; // todo 出 |
| | | } |
| | | |
| | | String paramIn = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ws=\"http://ws.conflux.sunshine.com\">\n" + |
| | | " <soapenv:Header/>\n" + |
| | | " <soapenv:Body>\n" + |
| | | " <ws:initTrans>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <gateId>" + parkingAreaDtos.get(0).getNum() + "</gateId>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <directType>" + directType + "</directType>\n" + |
| | | " <driverWayNo>" + carInoutDetailPo.getMachineId() + "</driverWayNo>\n" + |
| | | " <!--Optional:-->\n" + |
| | | " <initKey>"+key+"</initKey>\n" + |
| | | " </ws:initTrans>\n" + |
| | | " </soapenv:Body>\n" + |
| | | "</soapenv:Envelope>"; |
| | | |
| | | logger.debug("请求报文:{}",paramIn); |
| | | HttpHeaders httpHeaders = new HttpHeaders(); |
| | | httpHeaders.add("Content-Type","text/xml;charset=UTF-8"); |
| | | HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(paramIn, httpHeaders); |
| | | try { |
| | | ResponseEntity<String> responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); |
| | | logger.debug("返回报文,{}",responseEntity); |
| | | String body = responseEntity.getBody(); |
| | | if(!body.contains("token")){ |
| | | return token; |
| | | } |
| | | token = body.substring(body.indexOf("<token>")+7,body.indexOf("</token>")); |
| | | CommonCache.setValue("DGGAJ_Parking_token",token,CommonCache.TOKEN_EXPIRE_TIME); |
| | | }catch (HttpStatusCodeException e){ |
| | | logger.error("调用异常",e); |
| | | }catch (Exception e){ |
| | | logger.error("调用异常",e); |
| | | } |
| | | |
| | | return token; |
| | | } |
| | | } |