Преглед на файлове

feat: 抽样数据模块

- 添加上游抽样数据
- 添加rabbit mq
许家凯 преди 2 години
родител
ревизия
e2dcecf29e
променени са 7 файла, в които са добавени 823 реда и са изтрити 1 реда
  1. 99 0
      handle/pull_sample_data.py
  2. 96 0
      sdk/RabbitMQ.py
  3. 6 0
      sdk/WinhcAllClient.py
  4. 1 1
      spider/Demo.py
  5. 559 0
      utils/category_utils.py
  6. 1 0
      utils/pca-code.json
  7. 61 0
      utils/pca_code_utils.py

+ 99 - 0
handle/pull_sample_data.py

@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+# @Time : 2022/12/5 9:28
+# @Author : XuJiakai
+# @File : pull_sample_data
+# @Software: PyCharm
+import json
+
+RABBITMQ_TOPIC = "xjk_test"
+
+from sdk.WinhcElasticSearchSDK import get_new_es
+from utils.base_utils import json_path
+from utils import map_2_json_str
+from utils.category_utils import get_value
+from utils.pca_code_utils import get_name
+from sdk.WinhcAllClient import get_all_client
+
+all_sdk = get_all_client()
+r_sdk = all_sdk.get_rabbit_mq_sdk()
+
+es_sdk = get_new_es()
+
+
+def _send_rabbit(li: list):
+    for i in li:
+        r_sdk.send_by_fanout(RABBITMQ_TOPIC, json.dumps(i, ensure_ascii=False).encode())
+        pass
+
+    pass
+
+
+def pull_by_es(size: int = 20):
+    assert isinstance(size, int) and 0 < size <= 10000, "数值错误"
+
+    dsl = {
+        "_source": ["cname.show", "company_org_type_new_std", "province_code", "city_code", "county_code", "org_number",
+                    "credit_code", "reg_number", "category_first_code", "category_second_code", "category_third_code"],
+        "size": 20,
+        "query": {
+            "bool": {
+                "must": [
+                    {
+                        "term": {
+                            "deleted": {
+                                "value": "0"
+                            }
+                        }
+                    }, {
+                        "terms": {
+                            "company_org_type_new_std": [
+                                "有限责任公司",
+                                "独资企业"
+                            ]
+                        }
+                    }
+                ]
+            }
+        }
+        , "sort": [
+            {
+                "company_score_weight": {
+                    "order": "desc"
+                }
+            }
+        ]
+    }
+    res = es_sdk.query(index='winhc_index_rt_company', doc_type='company', dsl=dsl)
+    li = []
+    for i in res:
+        c = get_value(
+            c1=json_path(i, '$.category_first_code'), c2=json_path(i, '$.category_second_code'),
+            c3=json_path(i, '$.category_third_code'))
+
+        a = get_name(province_code=json_path(i, '$.province_code'), city_code=json_path(i, '$.city_code'),
+                     county_code=json_path(i, '$.county_code'))
+        e = {
+            "company_id": i['_id'],
+            "company_name": json_path(i, "$.cname.show"),
+            "company_org_type": json_path(i, "$.company_org_type_new_std.[0]"),
+            "province": a[0],
+            "city": a[1],
+            "county": a[2],
+            "org_number": json_path(i, '$.org_number'),
+            "credit_code": json_path(i, '$.credit_code'),
+            "reg_number": json_path(i, '$.reg_number'),
+            "cate_first": c[0],
+            "cate_second": c[1],
+            "cate_third": c[2],
+
+        }
+        li.append(e)
+        pass
+
+    _send_rabbit(li)
+    pass
+
+
+if __name__ == '__main__':
+    pull_by_es()
+    pass

+ 96 - 0
sdk/RabbitMQ.py

@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+# @Time : 2022/12/2 15:03
+# @Author : XuJiakai
+# @File : RabbitMQ
+# @Software: PyCharm
+
+import pika
+import json
+import os
+
+from pika.exchange_type import ExchangeType
+from log import get_log
+
+log = get_log('RabbitMQ')
+
+
+def _default_callback(ch, method, properties, body):
+    print('callback body ', body.decode())  # 在这里对消息内容进行我们想做的处理
+    ch.basic_ack(delivery_tag=method.delivery_tag)  # 手动应答ack,确保消息真正消费后才应答
+    pass
+
+
+class RabbitMQ(object):
+    def __init__(self, username, password, host, port, virtual_host):
+        self.username = username
+        self.password = password
+        self.host = host
+        self.port = port
+        self.virtual_host = virtual_host
+        self.get_connect()  # 初始化RabbitMQ实例对象时完成连接rabbitmq服务器
+
+    def get_connect(self):
+        credentials = pika.PlainCredentials(username=self.username, password=self.password)  # 登录凭证
+        self.connect = pika.BlockingConnection(
+            pika.ConnectionParameters(host=self.host, port=self.port, virtual_host=self.virtual_host,
+                                      credentials=credentials))
+        self.channel = self.connect.channel()  # 客户端连接rabbitmq服务端后开辟管道,每个channel代表一个会话任务
+
+    def send_by_fanout(self, exchange, body):
+        """
+        多消费、重复订阅方式
+        :param exchange: 发送的topic
+        :return:
+        """
+        self.channel.exchange_declare(
+            exchange=exchange,
+            exchange_type=ExchangeType.fanout.value,
+        )
+        # 声明队列, 并且队列持久化
+        # self.channel.queue_declare(queue=queue, durable=False, auto_delete=True)
+        # 通过routing_key 绑定 消息交换机和队列
+        # self.channel.queue_bind(queue, exchange, routing_key)
+        # 发消息
+        self.channel.basic_publish(
+            exchange=exchange,
+            routing_key='',
+            body=body,  # 发送的数据
+        )
+        pass
+
+    def consumer_by_fanout(self, exchange, callback=_default_callback):
+        """
+        消费、扇出模式
+        :param callback:
+        :param exchange:
+        :return:
+        """
+        self.channel.exchange_declare(exchange=exchange, exchange_type=ExchangeType.fanout.value)
+        result = self.channel.queue_declare(queue='', auto_delete=True)
+        queue_name = result.method.queue
+        self.channel.queue_bind(queue_name, exchange, '')
+
+        log.info('消费任务启动,queue: ' + queue_name)
+
+        self.channel.basic_consume(
+            queue=queue_name,  # 队列名
+            on_message_callback=callback,  # 指定回调函数
+            auto_ack=False,  # 关闭自动ack采用手动应答
+        )
+        self.channel.start_consuming()
+
+    pass
+
+
+import threading
+
+if __name__ == '__main__':
+    mq = RabbitMQ(username='whc', password='whc', host='106.15.78.184', port=5672, virtual_host='/')
+
+    # p = threading.Thread(target=mq.consumer, args=('xjk_test', '', callback,))
+    # p.start()
+    mq.consumer_by_fanout(exchange='xjk_test')
+
+    # mq.send(exchange='xjk_test', body='xjk_test message')
+
+    pass

+ 6 - 0
sdk/WinhcAllClient.py

@@ -13,6 +13,7 @@ from pymongo import MongoClient
 
 from env.environment_switch import environment_switch
 from sdk.WinhcHbaseApi import WinhcHbaseApi
+from sdk.RabbitMQ import RabbitMQ
 
 
 class WinhcAllClient:
@@ -84,6 +85,11 @@ class WinhcAllClient:
         return psycopg2.connect(host=host, port=int(port), dbname=db, user=user, password=pwd)
         pass
 
+    def get_rabbit_mq_sdk(self, name='base'):
+        host = self.env.get_val('rabbit_mq.' + name + '.host')
+        return RabbitMQ(username='whc', password='whc', host=host, port=5672, virtual_host='/')
+        pass
+
 
 def get_all_client():
     return WinhcAllClient()

+ 1 - 1
spider/Demo.py

@@ -19,7 +19,7 @@ input_args = {
 }
 
 output_args = {
-    "_id": "",  # concat_ws('_',company_id,competitor_product_name,spider_date)
+    "_id": "",  # concat_ws('_',spider_date,company_id,competitor_product_name)
     "base_info": input_args,
     "competitor_product_name": "qcc",
     "summary": {

+ 559 - 0
utils/category_utils.py

@@ -0,0 +1,559 @@
+# -*- coding: utf-8 -*-
+# @Time : 2020/12/12 16:41
+# @Author : XuJiakai
+# @File : category_utils
+# @Software: PyCharm
+
+import re
+
+
+class category:
+    def __init__(self, cate_first_code, cate_first, cate_second_code, cate_second, cate_third_code, cate_third):
+        self.cate_first_code = cate_first_code
+        self.cate_first = cate_first
+        self.cate_second_code = cate_second_code
+        self.cate_second = cate_second
+        self.cate_third_code = cate_third_code
+        self.cate_third = cate_third
+        pass
+
+    def get_cate_first_code(self):
+        return self.cate_first_code
+
+    def get_cate_first(self):
+        return self.cate_first
+
+    def get_cate_second_code(self):
+        return self.cate_second_code
+
+    def get_cate_second(self):
+        return self.cate_second
+
+    def get_cate_third_code(self):
+        return self.cate_third_code
+
+    def get_cate_third(self):
+        return self.cate_third
+
+
+__category_map = {
+    "515": category("20", "批发和零售业", "81", "批发业", "177", "医药及医疗器材批发"),
+    "619": category("21", "住宿和餐饮业", "93", "住宿业", "372", "其他住宿业"),
+    "563": category("16", "交通运输、仓储和邮政业", "16", "航空运输业", "192", "航空运输辅助活动"),
+    "381": category("11", "制造业", "82", "电气机械和器材制造业", "456", "电机制造"),
+    "874": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "116", "文物及非物质文化遗产保护"),
+    "169": category("11", "制造业", "96", "烟草制品业", "500", "其他烟草制品制造"),
+    "120": category("14", "采矿业", "72", "其他采矿业", "283", "其他采矿业"),
+    "193": category("11", "制造业", "11", "皮革、毛皮、羽毛及其制品和制鞋业", "457", "毛皮鞣制及制品加工"),
+    "302": category("11", "制造业", "73", "非金属矿物制品业", "315", "石膏、水泥制品及类似制品制造"),
+    "153": category("11", "制造业", "47", "酒、饮料和精制茶制造业", "168", "精制茶加工"),
+    "335": category("11", "制造业", "64", "金属制品业", "241", "建筑、安全用金属制品制造"),
+    "735": category("27", "科学研究和技术服务业", "61", "研究和试验发展", "509", "社会人文科学研究"),
+    "664": category("24", "金融业", "45", "货币金融服务", "488", "银行监管服务"),
+    "93": category("14", "采矿业", "36", "有色金属矿采选业", "105", "稀有稀土金属矿采选"),
+    "142": category("11", "制造业", "40", "食品制造业", "518", "糖果、巧克力及蜜饯制造"),
+    "182": category("11", "制造业", "38", "纺织服装、服饰业", "186", "针织或钩针编织服装制造"),
+    "686": category("24", "金融业", "34", "保险业", "272", "保险监管服务"),
+    "544": category("16", "交通运输、仓储和邮政业", "50", "道路运输业", "411", "道路运输辅助活动"),
+    "436": category("11", "制造业", "15", "金属制品、机械和设备修理业", "414", "仪器仪表修理"),
+    "862": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "520", "电视"),
+    "836": category("23", "卫生和社会工作", "32", "卫生", "107", "专科疾病防治院(所、站)"),
+    "12": category("29", "农、林、牧、渔业", "62", "农业", "370", "豆类、油料和薯类种植"),
+    "223": category("11", "制造业", "39", "造纸和纸制品业", "519", "纸制品制造"),
+    "541": category("16", "交通运输、仓储和邮政业", "50", "道路运输业", "314", "城市公共交通运输"),
+    "822": category("25", "教育", "19", "教育", "508", "初等教育"),
+    "89": category("14", "采矿业", "28", "黑色金属矿采选业", "181", "其他黑色金属矿采选"),
+    "51": category("29", "农、林、牧、渔业", "44", "农、林、牧、渔服务业", "268", "农业服务业"),
+    "833": category("23", "卫生和社会工作", "32", "卫生", "199", "门诊部(所)"),
+    "689": category("24", "金融业", "34", "保险业", "479", "其他保险活动"),
+    "941": category("19", "公共管理、社会保障和社会组织", "92", "群众团体、社会团体和其他成员组织", "369", "群众团体"),
+    "411": category("11", "制造业", "67", "其他制造业", "527", "日用杂品制造"),
+    "307": category("11", "制造业", "73", "非金属矿物制品业", "289", "陶瓷制品制造"),
+    "501": category("12", "建筑业", "20", "建筑装饰和其他建筑业", "288", "建筑装饰业"),
+    "519": category("20", "批发和零售业", "81", "批发业", "466", "其他批发业"),
+    "276": category("11", "制造业", "53", "医药制造业", "516", "生物药品制造"),
+    "881": category("18", "文化、体育和娱乐业", "13", "体育", "202", "体育组织"),
+    "526": category("20", "批发和零售业", "60", "零售业", "430", "汽车、摩托车、燃料及零配件专门零售"),
+    "794": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "345", "理发及美容服务"),
+    "649": category("10", "信息传输、软件和信息技术服务业", "94", "互联网和相关服务", "497", "其他互联网服务"),
+    "952": category("19", "公共管理、社会保障和社会组织", "21", "基层群众自治组织", "442", "村民自治组织"),
+    "461": category("22", "电力、热力、燃气及水生产和供应业", "83", "水的生产和供应业", "408", "自来水生产和供应"),
+    "324": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "384", "有色金属合金制造"),
+    "332": category("11", "制造业", "64", "金属制品业", "515", "金属工具制造"),
+    "175": category("11", "制造业", "12", "纺织业", "309", "化纤织造及印染精加工"),
+    "19": category("29", "农、林、牧、渔业", "62", "农业", "410", "其他农业"),
+    "313": category("11", "制造业", "10", "黑色金属冶炼和压延加工业", "319", "黑色金属铸造"),
+    "724": category("28", "租赁和商务服务业", "63", "商务服务业", "189", "广告业"),
+    "362": category("11", "制造业", "101", "汽车制造业", "149", "改装汽车制造"),
+    "265": category("11", "制造业", "22", "化学原料和化学制品制造业", "386", "合成材料制造"),
+    "732": category("27", "科学研究和技术服务业", "61", "研究和试验发展", "438", "工程和技术研究和试验发展"),
+    "23": category("29", "农、林、牧、渔业", "102", "林业", "318", "森林经营和管护"),
+    "433": category("11", "制造业", "15", "金属制品、机械和设备修理业", "251", "专用设备修理"),
+    "62": category("14", "采矿业", "98", "煤炭开采和洗选业", "209", "褐煤开采洗选"),
+    "552": category("16", "交通运输、仓储和邮政业", "77", "水上运输业", "195", "水上货物运输"),
+    "321": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "226", "常用有色金属冶炼"),
+    "135": category("11", "制造业", "51", "农副食品加工业", "257", "屠宰及肉类加工"),
+    "343": category("11", "制造业", "31", "通用设备制造业", "299", "物料搬运设备制造"),
+    "404": category("11", "制造业", "52", "仪器仪表制造业", "214", "光学仪器及眼镜制造"),
+    "523": category("20", "批发和零售业", "60", "零售业", "101", "纺织、服装及日用品专门零售"),
+    "829": category("25", "教育", "19", "教育", "376", "技能培训、教育辅助及其他教育"),
+    "421": category("11", "制造业", "71", "废弃资源综合利用业", "504", "金属废料和碎屑加工处理"),
+    "702": category("26", "房地产业", "43", "房地产业", "127", "物业管理"),
+    "450": category("22", "电力、热力、燃气及水生产和供应业", "80", "燃气生产和供应业", "407", "燃气生产和供应业"),
+    "674": category("24", "金融业", "86", "资本市场服务", "301", "资本投资服务"),
+    "798": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "380", "殡葬服务"),
+    "373": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "220", "船舶及相关装置制造"),
+    "762": category("15", "水利、环境和公共设施管理业", "89", "水利管理业", "434", "水资源管理"),
+    "469": category("22", "电力、热力、燃气及水生产和供应业", "83", "水的生产和供应业", "247", "其他水的处理、利用与分配"),
+    "721": category("28", "租赁和商务服务业", "63", "商务服务业", "250", "企业管理服务"),
+    "783": category("15", "水利、环境和公共设施管理业", "91", "公共设施管理业", "492", "城乡市容管理"),
+    "944": category("19", "公共管理、社会保障和社会组织", "92", "群众团体、社会团体和其他成员组织", "379", "宗教组织"),
+    "743": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "468", "海洋服务"),
+    "681": category("24", "金融业", "34", "保险业", "129", "人身保险"),
+    "481": category("12", "建筑业", "104", "土木工程建筑业", "222", "铁路、道路、隧道和桥梁工程建筑"),
+    "15": category("29", "农、林、牧、渔业", "62", "农业", "225", "水果种植"),
+    "11": category("29", "农、林、牧、渔业", "62", "农业", "278", "谷物种植"),
+    "892": category("18", "文化、体育和娱乐业", "37", "娱乐业", "152", "游乐园"),
+    "851": category("18", "文化、体育和娱乐业", "54", "新闻和出版业", "321", "新闻业"),
+    "396": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "530", "电子器件制造"),
+    "141": category("11", "制造业", "40", "食品制造业", "166", "焙烤食品制造"),
+    "139": category("11", "制造业", "51", "农副食品加工业", "293", "其他农副食品加工"),
+    "181": category("11", "制造业", "38", "纺织服装、服饰业", "474", "机织服装制造"),
+    "802": category("17", "居民服务、修理和其他服务业", "29", "机动车、电子产品和日用产品修理业", "523", "计算机和办公设备维修"),
+    "132": category("11", "制造业", "51", "农副食品加工业", "190", "饲料加工"),
+    "746": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "323", "环境与生态监测"),
+    "751": category("27", "科学研究和技术服务业", "97", "科技推广和应用服务业", "131", "技术推广服务"),
+    "201": category("11", "制造业", "35", "木材加工和木、竹、藤、棕、草制品业", "342", "木材加工"),
+    "825": category("25", "教育", "19", "教育", "367", "特殊教育"),
+    "385": category("11", "制造业", "82", "电气机械和器材制造业", "478", "家用电力器具制造"),
+    "33": category("29", "农、林、牧、渔业", "95", "畜牧业", "491", "狩猎和捕捉动物"),
+    "273": category("11", "制造业", "53", "医药制造业", "320", "中药饮片加工"),
+    "492": category("12", "建筑业", "59", "建筑安装业", "514", "管道和设备安装"),
+    "346": category("11", "制造业", "31", "通用设备制造业", "267", "烘炉、风机、衡器、包装等设备制造"),
+    "919": category("19", "公共管理、社会保障和社会组织", "68", "国家机构", "230", "其他国家机构"),
+    "351": category("11", "制造业", "55", "专用设备制造业", "154", "采矿、冶金、建筑专用设备制造"),
+    "692": category("24", "金融业", "90", "其他金融业", "406", "控股公司服务"),
+    "291": category("11", "制造业", "103", "橡胶和塑料制品业", "305", "橡胶制品业"),
+    "866": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "121", "录音制作"),
+    "262": category("11", "制造业", "22", "化学原料和化学制品制造业", "265", "肥料制造"),
+    "470": category("12", "建筑业", "18", "房屋建筑业", "330", "房屋建筑业"),
+    "769": category("15", "水利、环境和公共设施管理业", "89", "水利管理业", "354", "其他水利管理业"),
+    "399": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "415", "其他电子设备制造"),
+    "392": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "307", "通信设备制造"),
+    "22": category("29", "农、林、牧、渔业", "102", "林业", "327", "造林和更新"),
+    "727": category("28", "租赁和商务服务业", "63", "商务服务业", "413", "旅行社及相关服务"),
+    "212": category("11", "制造业", "66", "家具制造业", "173", "竹、藤家具制造"),
+    "512": category("20", "批发和零售业", "81", "批发业", "366", "食品、饮料及烟草制品批发"),
+    "602": category("16", "交通运输、仓储和邮政业", "65", "邮政业", "196", "快递服务"),
+    "393": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "180", "广播电视设备制造"),
+    "821": category("25", "教育", "19", "教育", "227", "学前教育"),
+    "303": category("11", "制造业", "73", "非金属矿物制品业", "312", "砖瓦、石材等建筑材料制造"),
+    "134": category("11", "制造业", "51", "农副食品加工业", "182", "制糖业"),
+    "244": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "206", "体育用品制造"),
+    "679": category("24", "金融业", "86", "资本市场服务", "351", "其他资本市场服务"),
+    "174": category("11", "制造业", "12", "纺织业", "512", "丝绢纺织及印染精加工"),
+    "361": category("11", "制造业", "101", "汽车制造业", "405", "汽车整车制造"),
+    "382": category("11", "制造业", "82", "电气机械和器材制造业", "363", "输配电及控制设备制造"),
+    "242": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "390", "乐器制造"),
+    "623": category("21", "住宿和餐饮业", "100", "餐饮业", "364", "饮料及冷饮服务"),
+    "61": category("14", "采矿业", "98", "煤炭开采和洗选业", "218", "烟煤和无烟煤开采洗选"),
+    "491": category("12", "建筑业", "59", "建筑安装业", "464", "电气安装"),
+    "356": category("11", "制造业", "55", "专用设备制造业", "341", "电子和电工机械专用设备制造"),
+    "336": category("11", "制造业", "64", "金属制品业", "239", "金属表面处理及热处理加工"),
+    "13": category("29", "农、林、牧、渔业", "62", "农业", "426", "棉、麻、糖、烟草种植"),
+    "509": category("12", "建筑业", "20", "建筑装饰和其他建筑业", "276", "其他未列明建筑业"),
+    "728": category("28", "租赁和商务服务业", "63", "商务服务业", "409", "安全保护服务"),
+    "325": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "353", "有色金属铸造"),
+    "877": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "147", "群众文化活动"),
+    "516": category("20", "批发和零售业", "81", "批发业", "282", "矿产品、建材及化工产品批发"),
+    "865": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "215", "电影放映"),
+    "177": category("11", "制造业", "12", "纺织业", "259", "家用纺织制成品制造"),
+    "837": category("23", "卫生和社会工作", "32", "卫生", "421", "疾病预防控制中心"),
+    "441": category("22", "电力、热力、燃气及水生产和供应业", "74", "电力、热力生产和供应业", "440", "电力生产"),
+    "24": category("29", "农、林、牧、渔业", "102", "林业", "286", "木材和竹材采运"),
+    "253": category("11", "制造业", "70", "石油加工、炼焦和核燃料加工业", "208", "核燃料加工"),
+    "527": category("20", "批发和零售业", "60", "零售业", "274", "家用电器及电子产品专门零售"),
+    "661": category("24", "金融业", "45", "货币金融服务", "104", "中央银行服务"),
+    "899": category("18", "文化、体育和娱乐业", "37", "娱乐业", "184", "其他娱乐业"),
+    "314": category("11", "制造业", "10", "黑色金属冶炼和压延加工业", "529", "钢压延加工"),
+    "233": category("11", "制造业", "87", "印刷和记录媒介复制业", "280", "记录媒介复制"),
+    "306": category("11", "制造业", "73", "非金属矿物制品业", "313", "玻璃纤维和玻璃纤维增强塑料制品制造"),
+    "16": category("29", "农、林、牧、渔业", "62", "农业", "170", "坚果、含油果、香料和饮料作物种植"),
+    "725": category("28", "租赁和商务服务业", "63", "商务服务业", "273", "知识产权服务"),
+    "772": category("15", "水利、环境和公共设施管理业", "42", "生态保护和环境治理业", "143", "环境治理业"),
+    "379": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "334", "潜水救捞及其他未列明运输设备制造"),
+    "731": category("27", "科学研究和技术服务业", "61", "研究和试验发展", "266", "自然科学研究和试验发展"),
+    "192": category("11", "制造业", "11", "皮革、毛皮、羽毛及其制品和制鞋业", "355", "皮革制品制造"),
+    "553": category("16", "交通运输、仓储和邮政业", "77", "水上运输业", "114", "水上运输辅助活动"),
+    "761": category("15", "水利、环境和公共设施管理业", "89", "水利管理业", "138", "防洪除涝设施管理"),
+    "784": category("15", "水利、环境和公共设施管理业", "91", "公共设施管理业", "240", "绿化管理"),
+    "341": category("11", "制造业", "31", "通用设备制造业", "328", "锅炉及原动设备制造"),
+    "152": category("11", "制造业", "47", "酒、饮料和精制茶制造业", "490", "饮料制造"),
+    "781": category("15", "水利、环境和公共设施管理业", "91", "公共设施管理业", "164", "市政设施管理"),
+    "832": category("23", "卫生和社会工作", "32", "卫生", "449", "社区医疗与卫生院"),
+    "951": category("19", "公共管理、社会保障和社会组织", "21", "基层群众自治组织", "417", "社区自治组织"),
+    "231": category("11", "制造业", "87", "印刷和记录媒介复制业", "506", "印刷"),
+    "599": category("16", "交通运输、仓储和邮政业", "79", "仓储业", "362", "其他仓储业"),
+    "873": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "432", "图书馆与档案馆"),
+    "861": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "469", "广播"),
+    "103": category("14", "采矿业", "99", "非金属矿采选业", "391", "采盐"),
+    "112": category("14", "采矿业", "69", "开采辅助活动", "382", "石油和天然气开采辅助活动"),
+    "72": category("14", "采矿业", "75", "石油和天然气开采业", "242", "天然气开采"),
+    "268": category("11", "制造业", "22", "化学原料和化学制品制造业", "443", "日用化学产品制造"),
+    "387": category("11", "制造业", "82", "电气机械和器材制造业", "269", "照明器具制造"),
+    "801": category("17", "居民服务、修理和其他服务业", "29", "机动车、电子产品和日用产品修理业", "117", "汽车、摩托车修理与维护"),
+    "274": category("11", "制造业", "53", "医药制造业", "333", "中成药生产"),
+    "900": category("19", "公共管理、社会保障和社会组织", "30", "中国共产党机关", "344", "中国共产党机关"),
+    "631": category("10", "信息传输、软件和信息技术服务业", "85", "电信、广播电视和卫星传输服务", "444", "电信"),
+    "353": category("11", "制造业", "55", "专用设备制造业", "453", "食品、饮料、烟草及饲料生产专用设备制造   "),
+    "522": category("20", "批发和零售业", "60", "零售业", "350", "食品、饮料及烟草制品专门零售"),
+    "144": category("11", "制造业", "40", "食品制造业", "252", "乳制品制造"),
+    "913": category("19", "公共管理、社会保障和社会组织", "68", "国家机构", "295", "人民法院和人民检察院"),
+    "703": category("26", "房地产业", "43", "房地产业", "264", "房地产中介服务"),
+    "742": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "150", "地震服务"),
+    "263": category("11", "制造业", "22", "化学原料和化学制品制造业", "483", "农药制造"),
+    "375": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "505", "摩托车制造"),
+    "281": category("11", "制造业", "33", "化学纤维制造业", "302", "纤维素纤维原料及纤维制造"),
+    "601": category("16", "交通运输、仓储和邮政业", "65", "邮政业", "400", "邮政基本服务"),
+    "403": category("11", "制造业", "52", "仪器仪表制造业", "392", "钟表与计时仪器制造"),
+    "422": category("11", "制造业", "71", "废弃资源综合利用业", "437", "非金属废料和碎屑加工处理"),
+    "21": category("29", "农、林、牧、渔业", "102", "林业", "399", "林木育种和育苗"),
+    "484": category("12", "建筑业", "104", "土木工程建筑业", "513", "工矿工程建筑"),
+    "533": category("16", "交通运输、仓储和邮政业", "48", "铁路运输业", "385", "铁路运输辅助活动"),
+    "419": category("11", "制造业", "67", "其他制造业", "254", "其他未列明制造业"),
+    "372": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "109", "城市轨道交通设备制造"),
+    "347": category("11", "制造业", "31", "通用设备制造业", "459", "文化、办公用机械制造"),
+    "54": category("29", "农、林、牧、渔业", "44", "农、林、牧、渔服务业", "112", "渔业服务业"),
+    "511": category("20", "批发和零售业", "81", "批发业", "174", "农、林、牧产品批发"),
+    "747": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "332", "地质勘查"),
+    "339": category("11", "制造业", "64", "金属制品业", "151", "其他金属制品制造"),
+    "889": category("18", "文化、体育和娱乐业", "13", "体育", "324", "其他体育"),
+    "561": category("16", "交通运输、仓储和邮政业", "16", "航空运输业", "373", "航空客货运输"),
+    "729": category("28", "租赁和商务服务业", "63", "商务服务业", "171", "其他商务服务业"),
+    "653": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "416", "信息技术咨询服务"),
+    "792": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "428", "托儿所服务"),
+    "612": category("21", "住宿和餐饮业", "93", "住宿业", "450", "一般旅馆"),
+    "71": category("14", "采矿业", "75", "石油和天然气开采业", "176", "石油开采"),
+    "642": category("10", "信息传输、软件和信息技术服务业", "94", "互联网和相关服务", "461", "互联网信息服务"),
+    "213": category("11", "制造业", "66", "家具制造业", "463", "金属家具制造"),
+    "292": category("11", "制造业", "103", "橡胶和塑料制品业", "193", "塑料制品业"),
+    "202": category("11", "制造业", "35", "木材加工和木、竹、藤、棕、草制品业", "167", "人造板制造"),
+    "691": category("24", "金融业", "90", "其他金融业", "256", "金融信托与管理服务"),
+    "921": category("19", "公共管理、社会保障和社会组织", "27", "人民政协、民主党派", "205", "人民政协"),
+    "364": category("11", "制造业", "101", "汽车制造业", "503", "电车制造"),
+    "32": category("29", "农、林、牧、渔业", "95", "畜牧业", "130", "家禽饲养"),
+    "434": category("11", "制造业", "15", "金属制品、机械和设备修理业", "141", "铁路、船舶、航空航天等运输设备修理"),
+    "219": category("11", "制造业", "66", "家具制造业", "102", "其他家具制造"),
+    "834": category("23", "卫生和社会工作", "32", "卫生", "172", "计划生育技术服务活动"),
+    "252": category("11", "制造业", "70", "石油加工、炼焦和核燃料加工业", "445", "炼焦"),
+    "137": category("11", "制造业", "51", "农副食品加工业", "126", "蔬菜、水果和坚果加工"),
+    "431": category("11", "制造业", "15", "金属制品、机械和设备修理业", "462", "金属制品修理"),
+    "82": category("14", "采矿业", "28", "黑色金属矿采选业", "528", "锰矿、铬矿采选"),
+    "876": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "348", "烈士陵园、纪念馆"),
+    "413": category("11", "制造业", "67", "其他制造业", "477", "核辐射加工"),
+    "383": category("11", "制造业", "82", "电气机械和器材制造业", "336", "电线、电缆、光缆及电工器材制造"),
+    "532": category("16", "交通运输、仓储和邮政业", "48", "铁路运输业", "200", "铁路货物运输"),
+    "241": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "284", "文教办公用品制造"),
+    "386": category("11", "制造业", "82", "电气机械和器材制造业", "136", "非电力家用器具制造"),
+    "348": category("11", "制造业", "31", "通用设备制造业", "169", "通用零部件制造"),
+    "883": category("18", "文化、体育和娱乐业", "13", "体育", "524", "休闲健身活动"),
+    "337": category("11", "制造业", "64", "金属制品业", "398", "搪瓷制品制造"),
+    "39": category("29", "农、林、牧、渔业", "95", "畜牧业", "489", "其他畜牧业"),
+    "785": category("15", "水利、环境和公共设施管理业", "91", "公共设施管理业", "310", "公园和游览景区管理"),
+    "582": category("16", "交通运输、仓储和邮政业", "25", "装卸搬运和运输代理业", "482", "运输代理业"),
+    "409": category("11", "制造业", "52", "仪器仪表制造业", "473", "其他仪器仪表制造业"),
+    "759": category("27", "科学研究和技术服务业", "97", "科技推广和应用服务业", "393", "其他科技推广和应用服务业"),
+    "912": category("19", "公共管理、社会保障和社会组织", "68", "国家机构", "298", "国家行政机构"),
+    "864": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "118", "电影和影视节目发行"),
+    "173": category("11", "制造业", "12", "纺织业", "431", "麻纺织及染整精加工"),
+    "17": category("29", "农、林、牧、渔业", "62", "农业", "365", "中药材种植"),
+    "745": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "140", "质检技术服务"),
+    "799": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "455", "其他居民服务业"),
+    "267": category("11", "制造业", "22", "化学原料和化学制品制造业", "507", "炸药、火工及焰火产品制造"),
+    "771": category("15", "水利、环境和公共设施管理业", "42", "生态保护和环境治理业", "187", "生态保护"),
+    "394": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "258", "雷达及配套设备制造"),
+    "221": category("11", "制造业", "39", "造纸和纸制品业", "236", "纸浆制造"),
+    "25": category("29", "农、林、牧、渔业", "102", "林业", "275", "林产品采集"),
+    "943": category("19", "公共管理、社会保障和社会组织", "92", "群众团体、社会团体和其他成员组织", "378", "基金会"),
+    "397": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "203", "电子元件制造"),
+    "14": category("29", "农、林、牧、渔业", "62", "农业", "433", "蔬菜、食用菌及园艺作物种植"),
+    "133": category("11", "制造业", "51", "农副食品加工业", "161", "植物油加工"),
+    "823": category("25", "教育", "19", "教育", "531", "中等教育"),
+    "521": category("20", "批发和零售业", "60", "零售业", "525", "综合零售"),
+    "391": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "223", "计算机制造"),
+    "872": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "458", "艺术表演场馆"),
+    "704": category("26", "房地产业", "43", "房地产业", "316", "自有房地产经营活动"),
+    "309": category("11", "制造业", "73", "非金属矿物制品业", "255", "石墨及其他非金属矿物制品制造"),
+    "111": category("14", "采矿业", "69", "开采辅助活动", "165", "煤炭开采和洗选辅助活动"),
+    "102": category("14", "采矿业", "99", "非金属矿采选业", "467", "化学矿开采"),
+    "31": category("29", "农、林、牧、渔业", "95", "畜牧业", "111", "牲畜饲养"),
+    "69": category("14", "采矿业", "98", "煤炭开采和洗选业", "377", "其他煤炭采选"),
+    "622": category("21", "住宿和餐饮业", "100", "餐饮业", "253", "快餐服务"),
+    "503": category("12", "建筑业", "20", "建筑装饰和其他建筑业", "224", "提供施工设备服务"),
+    "162": category("11", "制造业", "96", "烟草制品业", "360", "卷烟制造"),
+    "442": category("22", "电力、热力、燃气及水生产和供应业", "74", "电力、热力生产和供应业", "160", "电力供应"),
+    "344": category("11", "制造业", "31", "通用设备制造业", "221", "泵、阀门、压缩机及类似机械制造"),
+    "764": category("15", "水利、环境和公共设施管理业", "89", "水利管理业", "135", "水文服务"),
+    "191": category("11", "制造业", "11", "皮革、毛皮、羽毛及其制品和制鞋业", "142", "皮革鞣制加工"),
+    "701": category("26", "房地产业", "43", "房地产业", "465", "房地产开发经营"),
+    "151": category("11", "制造业", "47", "酒、饮料和精制茶制造业", "153", "酒的制造"),
+    "819": category("17", "居民服务、修理和其他服务业", "14", "其他服务业", "517", "其他未列明服务业"),
+    "245": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "261", "玩具制造"),
+    "842": category("23", "卫生和社会工作", "57", "社会工作", "412", "不提供住宿社会工作"),
+    "662": category("24", "金融业", "45", "货币金融服务", "270", "货币银行服务"),
+    "322": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "452", "贵金属冶炼"),
+    "145": category("11", "制造业", "40", "食品制造业", "249", "罐头食品制造"),
+    "315": category("11", "制造业", "10", "黑色金属冶炼和压延加工业", "470", "铁合金冶炼"),
+    "741": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "211", "气象服务"),
+    "483": category("12", "建筑业", "104", "土木工程建筑业", "219", "海洋工程建筑"),
+    "264": category("11", "制造业", "22", "化学原料和化学制品制造业", "235", "涂料、油墨、颜料及类似产品制造"),
+    "795": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "122", "洗浴服务"),
+    "439": category("11", "制造业", "15", "金属制品、机械和设备修理业", "248", "其他机械和设备修理业"),
+    "879": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "163", "其他文化艺术业"),
+    "214": category("11", "制造业", "66", "家具制造业", "175", "塑料家具制造"),
+    "53": category("29", "农、林、牧、渔业", "44", "农、林、牧、渔服务业", "480", "畜牧服务业"),
+    "389": category("11", "制造业", "82", "电气机械和器材制造业", "339", "其他电气机械及器材制造"),
+    "694": category("24", "金融业", "90", "其他金融业", "232", "金融信息服务"),
+    "203": category("11", "制造业", "35", "木材加工和木、竹、藤、棕、草制品业", "521", "木制品制造"),
+    "525": category("20", "批发和零售业", "60", "零售业", "217", "医药及医疗器材专门零售"),
+    "42": category("29", "农、林、牧、渔业", "26", "渔业", "191", "水产捕捞"),
+    "528": category("20", "批发和零售业", "60", "零售业", "381", "五金、家具及室内装饰材料专门零售"),
+    "683": category("24", "金融业", "34", "保险业", "326", "再保险"),
+    "499": category("12", "建筑业", "59", "建筑安装业", "157", "其他建筑安装业"),
+    "246": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "103", "游艺器材及娱乐用品制造"),
+    "517": category("20", "批发和零售业", "81", "批发业", "108", "机械设备、五金产品及电子产品批发"),
+    "195": category("11", "制造业", "11", "皮革、毛皮、羽毛及其制品和制鞋业", "436", "制鞋业"),
+    "275": category("11", "制造业", "53", "医药制造业", "387", "兽用药品制造"),
+    "376": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "185", "自行车制造"),
+    "723": category("28", "租赁和商务服务业", "63", "商务服务业", "317", "咨询与调查"),
+    "308": category("11", "制造业", "73", "非金属矿物制品业", "383", "耐火材料制品制造"),
+    "109": category("14", "采矿业", "99", "非金属矿采选业", "188", "石棉及其他非金属矿采选"),
+    "149": category("11", "制造业", "40", "食品制造业", "216", "其他食品制造"),
+    "354": category("11", "制造业", "55", "专用设备制造业", "435", "印刷、制药、日化及日用品生产专用设备制造"),
+    "809": category("17", "居民服务、修理和其他服务业", "29", "机动车、电子产品和日用产品修理业", "238", "其他日用产品修理业"),
+    "326": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "198", "有色金属压延加工"),
+    "178": category("11", "制造业", "12", "纺织业", "110", "非家用纺织制成品制造"),
+    "357": category("11", "制造业", "55", "专用设备制造业", "245", "农、林、牧、渔专用机械制造"),
+    "891": category("18", "文化、体育和娱乐业", "37", "娱乐业", "237", "室内娱乐活动"),
+    "365": category("11", "制造业", "101", "汽车制造业", "325", "汽车车身、挂车制造"),
+    "311": category("11", "制造业", "10", "黑色金属冶炼和压延加工业", "234", "炼铁"),
+    "734": category("27", "科学研究和技术服务业", "61", "研究和试验发展", "460", "医学研究和试验发展"),
+    "542": category("16", "交通运输、仓储和邮政业", "50", "道路运输业", "481", "公路旅客运输"),
+    "641": category("10", "信息传输、软件和信息技术服务业", "94", "互联网和相关服务", "260", "互联网接入及相关服务"),
+    "894": category("18", "文化、体育和娱乐业", "37", "娱乐业", "404", "文化、娱乐、体育经纪代理"),
+    "514": category("20", "批发和零售业", "81", "批发业", "133", "文化、体育用品及器材批发"),
+    "266": category("11", "制造业", "22", "化学原料和化学制品制造业", "294", "专用化学产品制造"),
+    "831": category("23", "卫生和社会工作", "32", "卫生", "100", "医院"),
+    "591": category("16", "交通运输、仓储和邮政业", "79", "仓储业", "197", "谷物、棉花等农产品仓储"),
+    "402": category("11", "制造业", "52", "仪器仪表制造业", "472", "专用仪器仪表制造"),
+    "712": category("28", "租赁和商务服务业", "78", "租赁业", "213", "文化及日用品出租"),
+    "672": category("24", "金融业", "86", "资本市场服务", "395", "期货市场服务"),
+    "371": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "494", "铁路运输设备制造"),
+    "81": category("14", "采矿业", "28", "黑色金属矿采选业", "347", "铁矿采选"),
+    "652": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "422", "信息系统集成服务"),
+    "611": category("21", "住宿和餐饮业", "93", "住宿业", "155", "旅游饭店"),
+    "791": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "271", "家庭服务"),
+    "271": category("11", "制造业", "53", "医药制造业", "441", "化学药品原料药制造"),
+    "304": category("11", "制造业", "73", "非金属矿物制品业", "420", "玻璃制造"),
+    "333": category("11", "制造业", "64", "金属制品业", "511", "集装箱及金属包装容器制造"),
+    "633": category("10", "信息传输、软件和信息技术服务业", "85", "电信、广播电视和卫星传输服务", "499", "卫星传输服务"),
+    "282": category("11", "制造业", "33", "化学纤维制造业", "132", "合成纤维制造"),
+    "277": category("11", "制造业", "53", "医药制造业", "403", "卫生材料及医药用品制造"),
+    "659": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "120", "其他信息技术服务业"),
+    "338": category("11", "制造业", "64", "金属制品业", "178", "金属制日用品制造"),
+    "922": category("19", "公共管理、社会保障和社会组织", "27", "人民政协、民主党派", "502", "民主党派"),
+    "699": category("24", "金融业", "90", "其他金融业", "212", "其他未列明金融业"),
+    "871": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "510", "文艺创作与表演"),
+    "685": category("24", "金融业", "34", "保险业", "229", "保险经纪与代理服务"),
+    "482": category("12", "建筑业", "104", "土木工程建筑业", "375", "水利和内河港口工程建筑"),
+    "562": category("16", "交通运输、仓储和邮政业", "16", "航空运输业", "106", "通用航空服务"),
+    "531": category("16", "交通运输、仓储和邮政业", "48", "铁路运输业", "471", "铁路旅客运输"),
+    "395": category("11", "制造业", "46", "计算机、通信和其他电子设备制造业", "304", "视听设备制造"),
+    "748": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "262", "工程技术"),
+    "171": category("11", "制造业", "12", "纺织业", "329", "棉纺织及印染精加工"),
+    "345": category("11", "制造业", "31", "通用设备制造业", "394", "轴承、齿轮和传动部件制造"),
+    "443": category("22", "电力、热力、燃气及水生产和供应业", "74", "电力、热力生产和供应业", "134", "热力生产和供应"),
+    "835": category("23", "卫生和社会工作", "32", "卫生", "401", "妇幼保健院(所、站)"),
+    "374": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "368", "航空、航天器及设备制造"),
+    "663": category("24", "金融业", "45", "货币金融服务", "322", "非货币银行服务"),
+    "92": category("14", "采矿业", "36", "有色金属矿采选业", "233", "贵金属矿采选"),
+    "462": category("22", "电力、热力、燃气及水生产和供应业", "83", "水的生产和供应业", "475", "污水处理及其再生利用"),
+    "412": category("11", "制造业", "67", "其他制造业", "388", "煤制品制造"),
+    "489": category("12", "建筑业", "104", "土木工程建筑业", "486", "其他土木工程建筑"),
+    "621": category("21", "住宿和餐饮业", "100", "餐饮业", "128", "正餐服务"),
+    "363": category("11", "制造业", "101", "汽车制造业", "292", "低速载货汽车制造"),
+    "261": category("11", "制造业", "22", "化学原料和化学制品制造业", "296", "基础化学原料制造"),
+    "655": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "308", "集成电路设计"),
+    "101": category("14", "采矿业", "99", "非金属矿采选业", "277", "土砂石开采"),
+    "942": category("19", "公共管理、社会保障和社会组织", "92", "群众团体、社会团体和其他成员组织", "331", "社会团体"),
+    "551": category("16", "交通运输、仓储和邮政业", "77", "水上运输业", "356", "水上旅客运输"),
+    "194": category("11", "制造业", "11", "皮革、毛皮、羽毛及其制品和制鞋业", "156", "羽毛(绒)加工及制品制造"),
+    "570": category("16", "交通运输、仓储和邮政业", "105", "管道运输业", "201", "管道运输业"),
+    "581": category("16", "交通运输、仓储和邮政业", "25", "装卸搬运和运输代理业", "123", "装卸搬运"),
+    "183": category("11", "制造业", "38", "纺织服装、服饰业", "231", "服饰制造"),
+    "824": category("25", "教育", "19", "教育", "359", "高等教育"),
+    "352": category("11", "制造业", "55", "专用设备制造业", "228", "化工、木材、非金属加工专用设备制造"),
+    "143": category("11", "制造业", "40", "食品制造业", "402", "方便食品制造"),
+    "863": category("18", "文化、体育和娱乐业", "49", "广播、电视、电影和影视录音制作业", "291", "电影和影视节目制作"),
+    "331": category("11", "制造业", "64", "金属制品业", "115", "结构性金属制品制造"),
+    "435": category("11", "制造业", "15", "金属制品、机械和设备修理业", "210", "电气设备修理"),
+    "875": category("18", "文化、体育和娱乐业", "88", "文化艺术业", "183", "博物馆"),
+    "502": category("12", "建筑业", "20", "建筑装饰和其他建筑业", "501", "工程准备活动"),
+    "222": category("11", "制造业", "39", "造纸和纸制品业", "335", "造纸"),
+    "432": category("11", "制造业", "15", "金属制品、机械和设备修理业", "162", "通用设备修理"),
+    "272": category("11", "制造业", "53", "医药制造业", "447", "化学药品制剂制造"),
+    "251": category("11", "制造业", "70", "石油加工、炼焦和核燃料加工业", "371", "精炼石油产品制造"),
+    "882": category("18", "文化、体育和娱乐业", "13", "体育", "451", "体育场馆"),
+    "359": category("11", "制造业", "55", "专用设备制造业", "425", "环保、社会公共服务及其他专用设备制造"),
+    "793": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "290", "洗染服务"),
+    "524": category("20", "批发和零售业", "60", "零售业", "448", "文化、体育用品及器材专门零售"),
+    "41": category("29", "农、林、牧、渔业", "26", "渔业", "137", "水产养殖"),
+    "911": category("19", "公共管理、社会保障和社会组织", "68", "国家机构", "423", "国家权力机构"),
+    "485": category("12", "建筑业", "104", "土木工程建筑业", "522", "架线和管道工程建筑"),
+    "744": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "495", "测绘服务"),
+    "384": category("11", "制造业", "82", "电气机械和器材制造业", "207", "电池制造"),
+    "651": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "146", "软件开发"),
+    "733": category("27", "科学研究和技术服务业", "61", "研究和试验发展", "389", "农业科学研究和试验发展"),
+    "763": category("15", "水利、环境和公共设施管理业", "89", "水利管理业", "338", "天然水收集与分配"),
+    "684": category("24", "金融业", "34", "保险业", "418", "养老金"),
+    "211": category("11", "制造业", "66", "家具制造业", "119", "木质家具制造"),
+    "782": category("15", "水利、环境和公共设施管理业", "91", "公共设施管理业", "243", "环境卫生管理"),
+    "232": category("11", "制造业", "87", "印刷和记录媒介复制业", "144", "装订及印刷相关服务"),
+    "722": category("28", "租赁和商务服务业", "63", "商务服务业", "300", "法律服务"),
+    "654": category("10", "信息传输、软件和信息技术服务业", "17", "软件和信息技术服务业", "343", "数据处理和存储服务"),
+    "204": category("11", "制造业", "35", "木材加工和木、竹、藤、棕、草制品业", "352", "竹、藤、棕、草等制品制造"),
+    "342": category("11", "制造业", "31", "通用设备制造业", "244", "金属加工机械制造"),
+    "323": category("11", "制造业", "76", "有色金属冶炼和压延加工业", "397", "稀有稀土金属冶炼"),
+    "839": category("23", "卫生和社会工作", "32", "卫生", "496", "其他卫生活动"),
+    "518": category("20", "批发和零售业", "81", "批发业", "148", "贸易经纪与代理"),
+    "243": category("11", "制造业", "84", "文教、工美、体育和娱乐用品制造业", "159", "工艺美术品制造"),
+    "797": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "361", "婚姻服务"),
+    "366": category("11", "制造业", "101", "汽车制造业", "194", "汽车零部件及配件制造"),
+    "893": category("18", "文化、体育和娱乐业", "37", "娱乐业", "526", "彩票活动"),
+    "305": category("11", "制造业", "73", "非金属矿物制品业", "349", "玻璃制品制造"),
+    "852": category("18", "文化、体育和娱乐业", "54", "新闻和出版业", "281", "出版业"),
+    "91": category("14", "采矿业", "36", "有色金属矿采选业", "427", "常用有色金属矿采选"),
+    "841": category("23", "卫生和社会工作", "57", "社会工作", "485", "提供住宿社会工作"),
+    "52": category("29", "农、林、牧、渔业", "44", "农、林、牧、渔服务业", "311", "林业服务业"),
+    "960": category("13", "国际组织", "41", "国际组织", "357", "国际组织"),
+    "172": category("11", "制造业", "12", "纺织业", "439", "毛纺织及染整精加工"),
+    "930": category("19", "公共管理、社会保障和社会组织", "23", "社会保障", "337", "社会保障"),
+    "355": category("11", "制造业", "55", "专用设备制造业", "139", "纺织、服装和皮革加工专用设备制造"),
+    "796": category("17", "居民服务、修理和其他服务业", "56", "居民服务业", "374", "保健服务"),
+    "377": category("11", "制造业", "58", "铁路、船舶、航空航天和其他运输设备制造业", "487", "非公路休闲车及零配件制造"),
+    "334": category("11", "制造业", "64", "金属制品业", "419", "金属丝绳及其制品制造"),
+    "131": category("11", "制造业", "51", "农副食品加工业", "124", "谷物磨制"),
+    "401": category("11", "制造业", "52", "仪器仪表制造业", "204", "通用仪器仪表制造"),
+    "726": category("28", "租赁和商务服务业", "63", "商务服务业", "454", "人力资源服务"),
+    "693": category("24", "金融业", "90", "其他金融业", "446", "非金融机构支付服务"),
+    "543": category("16", "交通运输、仓储和邮政业", "50", "道路运输业", "113", "道路货物运输"),
+    "629": category("21", "住宿和餐饮业", "100", "餐饮业", "287", "其他餐饮业"),
+    "349": category("11", "制造业", "31", "通用设备制造业", "498", "其他通用设备制造业"),
+    "671": category("24", "金融业", "86", "资本市场服务", "340", "证券市场服务"),
+    "803": category("17", "居民服务、修理和其他服务业", "29", "机动车、电子产品和日用产品修理业", "285", "家用电器修理"),
+    "301": category("11", "制造业", "73", "非金属矿物制品业", "158", "水泥、石灰和石膏制造"),
+    "119": category("14", "采矿业", "69", "开采辅助活动", "145", "其他开采辅助活动"),
+    "161": category("11", "制造业", "96", "烟草制品业", "476", "烟叶复烤"),
+    "632": category("10", "信息传输、软件和信息技术服务业", "85", "电信、广播电视和卫星传输服务", "306", "广播电视传输服务"),
+    "513": category("20", "批发和零售业", "81", "批发业", "263", "纺织、服装及家庭用品批发"),
+    "136": category("11", "制造业", "51", "农副食品加工业", "297", "水产品加工"),
+    "749": category("27", "科学研究和技术服务业", "24", "专业技术服务业", "493", "其他专业技术服务业"),
+    "752": category("27", "科学研究和技术服务业", "97", "科技推广和应用服务业", "429", "科技中介服务"),
+    "709": category("26", "房地产业", "43", "房地产业", "303", "其他房地产业"),
+    "811": category("17", "居民服务、修理和其他服务业", "14", "其他服务业", "396", "清洁服务"),
+    "711": category("28", "租赁和商务服务业", "78", "租赁业", "346", "机械设备租赁"),
+    "529": category("20", "批发和零售业", "60", "零售业", "358", "货摊、无店铺及其他零售业"),
+    "146": category("11", "制造业", "40", "食品制造业", "424", "调味品、发酵制品制造"),
+    "176": category("11", "制造业", "12", "纺织业", "179", "针织或钩针编织物及其制品制造"),
+    "358": category("11", "制造业", "55", "专用设备制造业", "246", "医疗仪器设备及器械制造"),
+    "682": category("24", "金融业", "34", "保险业", "484", "财产保险"),
+    "673": category("24", "金融业", "86", "资本市场服务", "125", "证券期货监管服务"),
+    "312": category("11", "制造业", "10", "黑色金属冶炼和压延加工业", "279", "炼钢"),
+}
+
+_cate_code_2_name = {}
+
+for i in __category_map:
+    c = __category_map[i]
+    _cate_code_2_name[c.get_cate_first_code()] = (c.get_cate_first(), None, None)
+    _cate_code_2_name[c.get_cate_first_code() + c.get_cate_second_code()] = (
+        c.get_cate_first(), c.get_cate_second(), None)
+    _cate_code_2_name[c.get_cate_first_code() + c.get_cate_second_code() + c.get_cate_third_code()] = (
+        c.get_cate_first(), c.get_cate_second(), c.get_cate_third())
+    pass
+
+
+def __get_code(code, index):
+    if code is None or len(code) != 6:
+        return None
+    if index == 1:
+        return code[0:2]
+    elif index == 2:
+        return code[2:4]
+    elif index == 3:
+        return code[4:6]
+    else:
+        raise Exception("index违法")
+
+
+def get_category(cate_code):
+    return __category_map[cate_code + '']
+
+
+# def get_value(cate_code):
+#     if not cate_code:
+#         return (None, None, None)
+#     return _cate_code_2_name[cate_code]
+#     pass
+
+
+def get_value(c1=None, c2=None, c3=None):
+    str = ""
+    if c1:
+        str += c1
+    if c2:
+        str += c2
+    if c3:
+        str += c3
+    if  str == '':
+        return (None, None, None)
+    return _cate_code_2_name[str]
+    pass
+
+
+__LONGITUDE = re.compile("^[\\-\\+]?(0?\\d{1,2}\\.\\d{1,15}|1[0-7]?\\d{1}\\.\\d{1,15}|180\\.0{1,15})$")
+__LATITUDE = re.compile("^[\\-\\+]?([0-8]?\\d{1}\\.\\d{1,15}|90\\.0{1,15})$")
+
+
+def get_geo(lat, lng):
+    """
+    :param lat:公司纬度
+    :param lng:公司经度
+    :return: (公司纬度,公司经度)
+    """
+    if lat is None or lng is None:
+        return None, None
+    if __LONGITUDE.search(lng) and __LATITUDE.search(lat):
+        return lat, lng
+    if __LATITUDE.search(lng) and __LONGITUDE.search(lat):
+        return lng, lat
+
+
+def get_province_code(area_code):
+    return __get_code(area_code, 1)
+    pass
+
+
+def get_city_code(area_code):
+    return __get_code(area_code, 2)
+    pass
+
+
+def get_county_code(area_code):
+    return __get_code(area_code, 3)
+    pass
+
+
+if __name__ == '__main__':
+    print(get_value('20','60','358'))
+    pass

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
utils/pca-code.json


+ 61 - 0
utils/pca_code_utils.py

@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+# @Time : 2022/12/5 10:45
+# @Author : XuJiakai
+# @File : pca_code_utils
+# @Software: PyCharm
+import json
+import os
+
+_module_path = os.path.dirname(__file__)
+
+f = open(os.path.join(_module_path, 'pca-code.json'), encoding='utf-8')
+
+_code_list = json.loads(f.read())
+
+_code_map = {}
+
+for i in _code_list:
+    pro_code = i['code']
+    pro_name = i['name']
+    _code_map[pro_code] = (pro_name, None, None)
+    if 'children' in i:
+        for j in i['children']:
+            city_code = j['code']
+            city_name = j['name']
+            _code_map[city_code] = (pro_name, city_name, None)
+            if 'children' in j:
+                for k in j['children']:
+                    con_code = k['code']
+                    con_name = k['name']
+                    _code_map[con_code] = (pro_name, city_name, con_name)
+
+                    pass
+            pass
+
+    pass
+
+
+def get_name(province_code, city_code=None, county_code=None):
+    if province_code is None:
+        return (None, None, None)
+
+    if province_code not in _code_map:
+        return (None, None, None)
+
+    province, city, county = _code_map[province_code]
+
+    if city_code and province_code + city_code in _code_map:
+        city = _code_map[province_code + city_code][1]
+
+    if county_code and province_code + city_code + county_code in _code_map:
+        county = _code_map[province_code + city_code + county_code][2]
+
+    return province, city, county
+    pass
+
+
+if __name__ == '__main__':
+    print(get_name('11'))
+    print(get_name('11', '01'))
+    print(get_name('11', '01', '01'))
+    pass