wzh 1 anno fa
parent
commit
d59ebab04a
2 ha cambiato i file con 241 aggiunte e 0 eliminazioni
  1. 236 0
      src/main/java/com/qlm/job/SyncJob.java
  2. 5 0
      src/main/resources/job.properties

+ 236 - 0
src/main/java/com/qlm/job/SyncJob.java

@@ -0,0 +1,236 @@
+package com.qlm.job;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.jfinal.kit.HttpKit;
+import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.Record;
+import com.jfinal.plugin.druid.DruidPlugin;
+import com.qlm.tools.WxUtil;
+
+public class SyncJob implements Job {
+	
+	private static void con(){
+	    DruidPlugin dp = new DruidPlugin("jdbc:mysql://58.20.133.135:6177/jinzai?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai", "jinzai", "rTdBsjA636XkarRa");
+        ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
+        // ��web����Ψһ�IJ�ͬ��Ҫ�ֶ�����һ����ز����start()����
+        dp.start();
+        arp.start();
+	}
+	static Map<String,String> codeNameMap = new HashMap<String, String>();
+
+	private static final Logger logger = LoggerFactory.getLogger(MyJob.class);
+	
+	public static void main(String[] args) {
+		con();
+		doSync();
+	}
+
+	private static void doSync() {
+		codeNameMap.clear();
+		String aiChuangToken = getAiChuangToken();
+		List<Record> find = Db.find("select code,name,parent_code,type from tb_map_area_copy241023 where type<=4");
+		Map<String,Record> codeMap = new HashMap<String, Record>();
+		for (Record record : find) {
+			String str = record.getStr("code");
+			String name = record.getStr("name");
+			codeMap.put(name, record);
+			codeNameMap.put(str, name);
+		}
+		for (int i = 0; i < 10000; i++) {
+			boolean data = getData(aiChuangToken,i+1,codeMap);
+			if(!data){
+				break;
+			}
+		}
+	}
+
+	public static boolean getData(String toekn,int page,Map<String,Record> codeMap){
+
+		
+		Map<String,String> header = new HashMap<String,String>();
+		header.put("Content-type", "application/json");
+		header.put("Authorization", "Bearer "+toekn);
+		JSONObject obj = new JSONObject();
+		obj.put("modifiedTime", "1990-01-01 00:00:00");
+		
+		obj.put("corpType", "2");
+		
+		
+		
+		obj.put("currentPage", page);
+		
+		obj.put("itemsPerPage", 1000);
+		
+		String post = HttpKit.post("http://183.215.13.140:324/openapi/basedata/corp/all/listPage", obj.toJSONString(),header);
+		JSONObject parseObject = JSONObject.parseObject(post);
+		
+		JSONObject jsonObject = parseObject.getJSONObject("data");
+		JSONArray jsonArray = jsonObject.getJSONArray("items");
+		if(jsonArray.isEmpty()){
+			return false;
+		}else{
+			Integer currentPage = jsonObject.getInteger("currentPage");
+			if(page>currentPage){
+				return false;
+			}
+			System.out.println("当前页数:"+page);
+			List<Record> list = new ArrayList<Record>();
+			for (int i = 0; i < jsonArray.size(); i++) {
+				JSONObject jsonObject2 = jsonArray.getJSONObject(i);
+				String name = jsonObject2.getString("name");
+				String code = jsonObject2.getString("code");
+				String city = null;
+				if(WxUtil.isNull(name)){
+					continue;
+				}
+				if(name.length()<6){
+					continue;
+				}
+				Record info = new Record();
+				String temp = name.substring(0,3);
+				
+				String lastStr = "";
+			
+				String province  = null;
+				int index = 2;
+				if(temp.endsWith("省") || "黑龙江".equals(temp) || "内蒙古".equals(temp)){
+					province = name.substring(0,3);
+					lastStr = name.substring(3);
+					index = 3;
+				}else{
+					lastStr = name.substring(2);
+					province = name.substring(0,2);
+				}
+				int length = lastStr.length();
+				String userName = lastStr.substring(length-2,length);
+				String cityName  = null;
+				try{
+					 cityName = lastStr.substring(0,length-2);
+				}catch(Exception e){
+					continue;
+				}
+				
+				if(isBigCity(province)){
+					province = city = province+"市";
+				}else{
+					String containName = containName(codeMap,cityName);
+					if(containName != null){
+						String[] find = find(codeMap, containName);
+						province = find[0];
+						city = find[1];
+					}else{
+						 userName = lastStr.substring(length-3);
+						 cityName = lastStr.substring(0,length-3);
+						 containName = containName(codeMap,cityName);
+						 if(containName != null){
+								String[] find = find(codeMap, containName);
+								province = find[0];
+								city = find[1];
+						 }else{
+							 if(cityName.length() >=3){
+								 cityName = cityName.substring(0,2);
+							 }
+							 containName = containName(codeMap,cityName);
+							if(containName != null){
+								String[] find = find(codeMap, containName);
+								province = find[0];
+								city = find[1];
+							}else{
+								System.out.println("无法获取,"+name);
+							}
+						 }
+					}
+				}
+				info.set("jxs", name).set("code", code).set("city", city).set("province", province);
+				
+				list.add(info);
+				
+			}
+			WxUtil.batchSaveIgnore("jinzai_jxs_area", list, "");
+		}
+		return true;
+	}
+
+	private static String[] find(Map<String, Record> codeMap,
+			String containName) {
+		String city = null;
+		String province = null;
+		String [] cis = {"",""};
+		Record record = codeMap.get(containName);
+		int type = WxUtil.getInt("type", record);
+		String parent_code = record.getStr("parent_code");
+		if(type == 3){
+			 city = codeNameMap.get(parent_code);
+			 Record cityInfo = codeMap.get(city);
+			 parent_code = cityInfo.getStr("parent_code");
+			 province = codeNameMap.get(parent_code);
+		}else if(type == 2){
+			city = containName;
+		    province = codeNameMap.get(parent_code);
+		}else if(type == 4){
+			String string = codeNameMap.get(parent_code);
+			return find(codeMap,string);
+		}
+		cis[0] = province;
+		cis[1] = city;
+		return cis;
+	}
+	
+	public static boolean isBigCity(String province){
+		String citys [] = {"北京","重庆","天津","上海"};
+		for (String string : citys) {
+			
+			if(string.equals(province)){
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	public static String containName(Map<String,Record> codeMap,String name){
+		Set<Entry<String,Record>> entrySet = codeMap.entrySet();
+		for (Entry<String, Record> entry : entrySet) {
+			String key = entry.getKey();
+			if(key.contains(name)){
+				return key;
+			}
+			
+		}
+		return null;
+	}
+	
+	
+	@Override
+	public void execute(JobExecutionContext arg0) throws JobExecutionException {
+		doSync();
+	}
+
+	private static String getAiChuangToken() {
+		
+		Map<String,String> header = new HashMap<String,String>();
+		header.put("Content-type", "application/json");
+		JSONObject obj = new JSONObject();
+		obj.put("loginName", "xw");
+		
+		obj.put("password", "1qaz@WSX");
+		String post = HttpKit.post("http://183.215.13.140:324/openapi/token", obj.toJSONString(),header);
+		JSONObject parseObject = JSONObject.parseObject(post);
+		String token = parseObject.getJSONObject("data").getString("token");
+		return token;
+	}
+}

+ 5 - 0
src/main/resources/job.properties

@@ -7,3 +7,8 @@ b.job=com.qlm.job.UploadJob
 b.cron=0 */5 * * * ?
 b.enable=true
 
+
+c.job=com.qlm.job.SyncJob
+c.cron=0 0 1 * * ?
+c.enable=true
+