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 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 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); // } // } // // } // } }