TailNumberLimitedJob.java 9.89 KB
package com.zteits.bill.job;


import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.utils.DateUtil;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zteits.bill.dao.tailNumberLimited.TailNumberLimitedDao;
import com.zteits.bill.domain.TbTailNumberLimitedCity;
import com.zteits.bill.domain.TbTailNumberLimitedRule;
import com.zteits.bill.util.HttpClientTutorial;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.service.order.carnumlimit.QueryTailNumberLimitedService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * 尾号限行规则查询
 *
 * Copyright: Copyright (c) 2017  ZTE-ITS
 *
 * @ClassName: TailNumberLimitedJob.java
 * @Description:
 * @version: v1.0.0
 * @author: xiejianpeng
 * @date: 2018年03月30日
 * Modification History:
 *    Date         Author          Version         Description
 *---------------------------------------------------------*
 * 2018年03月30日      xiejianpeng        v1.0.0          创建
 */
@Component
public class TailNumberLimitedJob{
	private static final Logger logger = LoggerFactory.getLogger(TailNumberLimitedJob.class);
	@Autowired
	private TailNumberLimitedDao tailNumberLimitedDao;

	@Autowired
	private QueryTailNumberLimitedService queryTailNumberLimitedService;

	/***
	 *
	 * 因为bill域不能访问外网,所以,访问外网地址放到了order域
	 */

	@XxlJob(value="TailNumberLimitedJob")
	public ReturnT<String> execute(String... arg0) throws Exception {
		int updateCount =0;
		this.logger("---begin查询所有的限号的城市");
		String queryTailNumURL = "http://apis.haoservice.com/carservice/xianxing?key=4e6eb12aad66403b9c11867db59ce717";
		String  rs = queryTailNumberLimitedService.queryTailNumberLimited(queryTailNumURL);
		logger.info("第三方返回:" + JSONObject.toJSONString(rs));
		if(StringUtils.isNotEmpty(rs)) {
			JSONObject obj = JSONObject.parseObject(rs);
			if (obj.getInteger("error_code") == 0) { //成功
				JSONArray jsonArray = obj.getJSONArray("result");
				for (Object object : jsonArray) {
					JSONObject objD = (JSONObject) object;
					String cityid = objD.getString("cityid");
					String cityname = objD.getString("cityname");
					//先判断数据库是否存在,如果没有则插入数据
					TbTailNumberLimitedCity tailNumberLimitedity = new TbTailNumberLimitedCity();
					tailNumberLimitedity.setCityCode(Long.valueOf(cityid));
					tailNumberLimitedity.setCityName(cityname);
					tailNumberLimitedity.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
					tailNumberLimitedity.setCreateDate(DateUtil.getSysDate());
					TbTailNumberLimitedCity tailNumberLimitedityQ = tailNumberLimitedDao.queryTbTailNumberLimitedCity(tailNumberLimitedity);
					if(tailNumberLimitedityQ == null || tailNumberLimitedityQ.getCityCode() == null){
						updateCount = tailNumberLimitedDao.saveTbTailNumberLimitedCity(tailNumberLimitedity);
					}
				}
			}
		}
		this.logger("---end查询所有的限号的城市");

//		String queryTime = DateUtil.getDateString(DateUtil.getDate(),DateUtil.DATE_FORMAT);
//		int updateCount =0;
//		this.logger("---begin查询所有的限号的城市-根据限号城市查询城市的限号规则");
//		updateCount = saveTailNumberLimitedRule(queryTime);
//		this.logger("---end查询所有的限号的城市-根据限号城市查询城市的限号规则");
		return updateCount > 0 ? ReturnT.SUCCESS :ReturnT.FAIL;
	}

	/**
	 * 查询和保存限号的城市
	 */
	private void saveTailNumberLimitedCity() {
		String  rs = HttpClientTutorial.httpGetRequest("http://apis.haoservice.com/carservice/xianxing?key=4e6eb12aad66403b9c11867db59ce717");
		logger.info("第三方返回:" + JSONObject.toJSONString(rs));
		if(StringUtils.isNotEmpty(rs)) {
			JSONObject obj = JSONObject.parseObject(rs);
			if (obj.getInteger("error_code") == 0) { //成功
				JSONArray jsonArray = obj.getJSONArray("data");
				for (Object object : jsonArray) {
					JSONObject objD = (JSONObject) object;
					String cityid = objD.getString("cityid");
					String cityname = objD.getString("cityname");
					TbTailNumberLimitedCity tailNumberLimitedity = new TbTailNumberLimitedCity();
					tailNumberLimitedity.setCityCode(Long.valueOf(cityid));
					tailNumberLimitedity.setCityName(cityname);
					tailNumberLimitedity.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
					tailNumberLimitedDao.saveTbTailNumberLimitedCity(tailNumberLimitedity);
				}
			}

		}
	}

	/**
	 * 查询第三方接口和保存限制车牌信息
	 * @param queryTime
	 * @return
     */
	private Integer saveTailNumberLimitedRule(String queryTime){
		int updateCount =0;
		List<TbTailNumberLimitedCity> tbTailNumberLimitedCities =  tailNumberLimitedDao.queryTbTailNumberLimitedCityList();
		if(CollectionUtils.isEmpty(tbTailNumberLimitedCities)){
			for(TbTailNumberLimitedCity tbTailNumberLimitedCity : tbTailNumberLimitedCities){
				Integer cityId = Integer.valueOf(tbTailNumberLimitedCity.getCityCode()+"");
				String  rs = HttpClientTutorial.httpGetRequest("http://apis.haoservice.com/carservice/xianxing/query?" +
						"cityId="+cityId+"&date="+queryTime+"&key=4e6eb12aad66403b9c11867db59ce717");
				logger.info("第三方返回:" + JSONObject.toJSONString(rs));
				if(StringUtils.isNotEmpty(rs)) {
					JSONObject obj = JSONObject.parseObject(rs);
					if (obj.getInteger("error_code") == 0) { //成功
						JSONObject objR = JSONObject.parseObject(obj.getString("result"));
						String penalty = objR.getString("penalty");
						JSONArray  jsonArray  = objR.getJSONArray("data");
						for (Object object : jsonArray) {
							JSONObject objD = (JSONObject) object;
							String region = objD.getString("region");
							String num = objD.getString("num");
							Integer isLimit = 0;
							if(!num.equals("--")){
								isLimit = 1;
							}
							String time = objD.getString("time");
							String remarks = objD.getString("remarks");
							TbTailNumberLimitedRule tailNumberLimitedRule = new TbTailNumberLimitedRule();
							tailNumberLimitedRule.setCityCode(tbTailNumberLimitedCity.getCityCode());
							tailNumberLimitedRule.setCityName(tbTailNumberLimitedCity.getCityName());
							tailNumberLimitedRule.setIsLimit(isLimit);
							tailNumberLimitedRule.setLimitDate(DateUtil.strDate(queryTime));
							tailNumberLimitedRule.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
							tailNumberLimitedRule.setNum(num);
							tailNumberLimitedRule.setPenalty(penalty);
							tailNumberLimitedRule.setRegion(region);
							tailNumberLimitedRule.setRemarks(remarks);
							updateCount = tailNumberLimitedDao.saveTbTailNumberLimitedRule(tailNumberLimitedRule);
						}
					}
				}
			}
		}
		return updateCount;
	}

	private void logger(String msg){
		logger.info(msg);
	}

//	public static void main(String[] args) {
//		String  rs = "{\"error_code\":0,\"reason\":\"成功\",\"result\":{\"penalty\":\"罚100块,不扣分\",\"data\":[{\"region\":\"五环路以内道路(不含五环路)(法定节假日除外)\",\"num\":\"--\",\"time\":\"早7时-晚20时(法定节假日除外)\",\"remarks\":\"警车、消防车、救护车、出租车、环卫车等非民用车辆不受上述限制, 外埠车辆工作日7时至9时、17时至20时禁止进五环(含),没有进京证禁止进六环(不含)\"}]}}";
//		//HttpClientTutorial.httpGetRequest("http://apis.haoservice.com/carservice/xianxing/query?" +
//				//"cityId=110100&date=2018-03-30&key=4e6eb12aad66403b9c11867db59ce717");
//		logger.info("第三方返回:" + JSONObject.toJSONString(rs));
//		if(StringUtils.isNotEmpty(rs)) {
//			JSONObject obj = JSONObject.parseObject(rs);
//			if (obj.getInteger("error_code") == 0) { //成功
//				JSONObject objq = JSONObject.parseObject(obj.getString("result"));
//				String penalty = objq.getString("penalty");
//				String data = objq.getString("data");
//				JSONArray  jsonArray  = objq.getJSONArray("data");
//				for (Object object : jsonArray) {
//					JSONObject objqq = (JSONObject) object;
//					String region = objqq.getString("region");
//					String num = objqq.getString("num");
//					String time = objqq.getString("time");
//					String remarks = objqq.getString("remarks");
//
//
//
//				}
//
//			}
//		}
//	}
//	public static void main(String[] args) {
//		String  rs = "{\"error_code\":0,\"reason\":\"成功\",\"result\":[{\"cityid\":110100,\"cityname\":\"北京\"},{\"cityid\":360100,\"cityname\":\"南昌\"},{\"cityid\":220100,\"cityname\":\"长春\"},{\"cityid\":620100,\"cityname\":\"兰州\"},{\"cityid\":520100,\"cityname\":\"贵阳\"},{\"cityid\":510100,\"cityname\":\"成都\"},{\"cityid\":330100,\"cityname\":\"杭州\"},{\"cityid\":120100,\"cityname\":\"天津\"},{\"cityid\":420100,\"cityname\":\"武汉\"},{\"cityid\":230100,\"cityname\":\"哈尔滨\"}]}";//HttpClientTutorial.httpGetRequest("http://apis.haoservice.com/carservice/xianxing?key=4e6eb12aad66403b9c11867db59ce717");
//		logger.info("第三方返回:" + JSONObject.toJSONString(rs));
//		if(StringUtils.isNotEmpty(rs)) {
//			JSONObject obj = JSONObject.parseObject(rs);
//			if (obj.getInteger("error_code") == 0) { //成功
//				JSONArray jsonArray = obj.getJSONArray("result");
//				for (Object object : jsonArray) {
//					JSONObject objD = (JSONObject) object;
//					String cityid = objD.getString("cityid");
//					String cityname = objD.getString("cityname");
//					TbTailNumberLimitedCity tailNumberLimitedity = new TbTailNumberLimitedCity();
//					tailNumberLimitedity.setCityCode(Long.valueOf(cityid));
//					tailNumberLimitedity.setCityName(cityname);
//					tailNumberLimitedity.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
//					//tailNumberLimitedDao.saveTbTailNumberLimitedCity(tailNumberLimitedity);
//				}
//			}
//
//		}
//	}

}