Commit 330c1ab3 by lixinming

no message

parent b1579bb9
.idea
/out
/node_modules
/test
/public
/logs
/video
*.logs
*.zip
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* 初始化数据
* 初始化数据 老的,可以不考虑
*/
import { ACTIVITYTYPECLIENT, APPEALTYPE, ENTERPRISESIZE, INDUSTRY, NASHUIRENZIZHI, POLICYTYPE, RAS, RESEARCHTYPE, SOLUTIONTYPE, SOLVESTATE, SUBSIDYTYPE, USERTYPE } from "../config/enum";
......
......@@ -20,7 +20,19 @@ function checkInmatch(match:string, check:string) {
return match.indexOf(check) > -1;
}
/**
* 用于判断企业时什么类型
* @param 名称
* @param 企业类型
* @param 国标大类
* @param 国标一类
* @param 国标二类
* @param 企查查大类
* @param 企查查一类
* @param 企查查二类
* @param 主营业务
* @returns
*/
function getEnterpriseIndustry(名称, 企业类型, 国标大类, 国标一类, 国标二类, 企查查大类, 企查查一类, 企查查二类, 主营业务) {
//去除个体户
if (checkInmatch(企业类型, "个体")) {
......@@ -206,7 +218,10 @@ function getEnterpriseIndustry(名称, 企业类型, 国标大类, 国标一类,
return {industry:INDUSTRY.综合, subIndustry:COMPREHENSIVE.综合其他};
}
/**
* 导出方法
* 这个方法时1031日的时候按要求匹配了表里面的企业类型
*/
export async function out20251031() {
let 企业名单 = onceSheetBecomeOfblockData('企业户管库_开发区镇查看202508.xlsx', "企业户管库");
let dataList = 企业名单[0].blockData;
......
/**
* 初始化数据
* 初始化数据 老的
*/
import { ENTERPRISELABEL, ENTERPRISESIZE, ENTERPRISETYPE, INDUSTRY, NASHUIRENZIZHI, POLICYTYPE, RAS, RESEARCHTYPE, SOLUTIONTYPE, SOLVESTATE, SUBSIDYTYPE, USERTYPE } from "../../config/enum";
......
import * as request from 'request';
import { BizError } from '../../util/bizError';
/**
* 企查查 请求地址
* @param url
* @param query
* @param headers
* @returns
*/
export function getQcc(url:string, query?, headers?) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
return new Promise((resolve, reject)=>{
......
/**
* 这个文件放的是比较新的数据初始化方法
*/
import { COMPREHENSIVE, ENTERPRISELABEL, ENTERPRISESIZE, ENTERPRISETYPE, INDUSTRY, MANUFACTURING, MEDICALSUB, NASHUIRENZIZHI, OTHERINDUSTRY, RAS } from "../../config/enum";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
const md5 = require("md5");
......@@ -14,8 +16,14 @@ const fs = require('fs');
import * as request from 'request';
import { areaList } from "../../config/area";
/**=========================================================工具 */
/**=========================================================工具 */
/**
* 判断match中是否含有check
* @param match
* @param check
* @returns
*/
function checkInmatch(match:string, check:string) {
return match.indexOf(check) > -1;
}
......@@ -36,7 +44,7 @@ function paramInCheckStr(checkStr, ...param) {
}
/**
* 转换企业类型
* 获取企业类型
* @param enterpriseType
* @returns
*/
......@@ -69,6 +77,13 @@ function getEnterpriseType(enterpriseType) {
return ENTERPRISETYPE.民营企业
}
/**
* 解析企查查导出的二维数组中的subList,可以理解吗?导出的是[subList, subList]这样的,这个方法是用来解析subList的,把导出的企业按顺序解析成object
* 所以导出的时候要注意顺序
* @param subList
* @returns
*/
function analysisSubListData(subList) {
let 名称 = subList[0];
let 系统匹配企业名称 = subList[1];
......@@ -200,7 +215,8 @@ function analysisSubListData(subList) {
}
/**
* 获取企业领域
* 获取企业领域 返回值是两个枚举里面的值 INDUSTRY(领域) 和 OTHERINDUSTRY(其他领域)
* 一般只用判断 INDUSTRY(领域)就好了,即返回的industry字段
* @param 名称
* @param 企业类型
* @param 国标大类
......@@ -392,7 +408,7 @@ function getEnterpriseIndustry(名称, 企业类型, 国标大类, 国标一类,
}
/**------------------------------------------------------------ */
/**------------------------------------------------------------ 工具类分割线结束 */
......@@ -407,7 +423,7 @@ export async function initEnterpriseData() {
}
/**
* 初始化账号
* 初始化管理员账号
*/
async function initUser() {
let tczxAdd2List = [
......@@ -445,7 +461,13 @@ async function initUser() {
//初始化户管企业
/**
* 初始化企业
* 如果你要重新导入企业库,你可以把名单放到企查查里面查询之后导出成excel表格,放入res目录下,注意文件名称要匹配好
* 然后注意参考 analysisSubListData 里面的第二维数组的顺序
* 这里有一个需要注意的地方,百度地图一天只能查5000家企业的经纬度,切记,导入之前要稍微初步筛选看看上海市的有多家,超过5000家,就要好好的看下面的注释
*
*/
async function initHuGuanData() {
let 企业名单 = onceSheetBecomeOfblockData('全部企业2.xlsx', "已匹配户管企业");
let dataList = 企业名单[0].blockData;
......@@ -457,22 +479,28 @@ async function initHuGuanData() {
if (addInfo.isFalse) continue;
addInfo.labelList.push(ENTERPRISELABEL.户管企业);
/**
* 这个是用来判断企业是否是张江区域内的,逻辑可以参考
* 这里有一个需要注意的地方,百度地图一天只能查5000家企业的经纬度,切记,导入之前要稍微初步筛选看看上海市的有多家,超过5000家,这里就要注释一下(if里面的注释)
*/
let inZJ = false;
if (addInfo. addInfo.logonAddress && addInfo.logonAddress.indexOf("上海") > -1) {
//是上海
// console.log("in sh", addInfo.logonAddress);
// inZJ = await addInZJ(addInfo.logonAddress, , addInfo.uscc);
if (addInfo.city && addInfo.logonAddress && addInfo.city == "上海") {//只判断市是上海的,因为不属于上海市必然不在张江内
inZJ = await addInZJ(addInfo.logonAddress, addInfo.city, addInfo.uscc);
}
addInfo.inZJ = inZJ;
enterpriseList.push(addInfo);
console.log(i);
console.log("进度",i);
};
await enterpriseData.initEnterpriseBase(enterpriseList);
console.log("企业数据导入成功");
}
/**
* 这个是临时写的导入方法,用来做匹配的,忽略不管
*
*/
async function initHuGuanData2() {
let 企业名单 = onceSheetBecomeOfblockData('2025年新版“彩色服务包”重点企业名单(张江镇)企查查.xlsx', "Sheet1");
let dataList = 企业名单[0].blockData;
......@@ -520,6 +548,11 @@ async function initHuGuanData2() {
// await enterpriseData.initEnterpriseBase(enterpriseList);
console.log("企业数据导入成功");
}
/**
* 这个是临时写的导入方法,用来做匹配的,忽略不管
*
*/
async function initHuGuanData3() {
let 企业名单 = onceSheetBecomeOfblockData('标记企业1112.xlsx', "sheet1");
let dataList = 企业名单[0].blockData;
......@@ -552,8 +585,11 @@ async function initHuGuanData3() {
// await enterpriseData.initEnterpriseBase(enterpriseList);
console.log("企业数据导入成功");
}
/**
* 初始化规上企业
* 和初始化企业很像,但是这个方法里面没有判断是否是张江域内的
*/
async function guishangEnterprise() {
let 企业名单 = onceSheetBecomeOfblockData('规上企业.xlsx', "sheet1");
......@@ -581,6 +617,7 @@ async function guishangEnterprise() {
/**
* 投促重点名单
* 和初始化企业很像,但是这个方法里面没有判断是否是张江域内的
*/
async function touchuEnterprise() {
let 企业名单 = onceSheetBecomeOfblockData('投促重点.xlsx', "sheet1");
......@@ -607,7 +644,10 @@ async function touchuEnterprise() {
/**
* 初始化标签
* 初始化标签 参考一下就好了
* 给各种企业打上基础标签,例如:重点企业 专精特新之类的
*
* 逻辑是,有各种企业标签的excel,然后做企业库的匹配
*/
async function initLabel() {
let zdqy = onceSheetBecomeOfblockData('重点企业.xlsx', "Sheet1");
......@@ -702,6 +742,14 @@ async function initLabel() {
console.log("标签导入成功");
}
/**
* 地址是否在张江域内
* @param address
* @param city
* @param uscc
* @returns
*/
export async function addInZJ(address, city, uscc) {
let pointInfo = await getAddressLatAndLng(address, city, uscc);
if (!pointInfo.error) {
......@@ -713,6 +761,13 @@ export async function addInZJ(address, city, uscc) {
return false;
}
/**
* 获取地址的经纬度
* @param address
* @param city
* @param uscc
* @returns
*/
export async function getAddressLatAndLng(address, city, uscc) {
let param = {
address:address,
......@@ -731,7 +786,13 @@ export async function getAddressLatAndLng(address, city, uscc) {
}
/**
* 百度地图依赖的请求方法
* @param url
* @param query
* @param headers
* @returns
*/
export function get(url:string, query?, headers?) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
return new Promise((resolve, reject)=>{
......@@ -746,6 +807,13 @@ export function get(url:string, query?, headers?) {
})
}
/**
* 使用射线法判断一个经纬度是否是域内
* 这里的张江域内 是参考的张江科学城的
* @param lat
* @param lng
* @returns
*/
export async function latLngInZJ(lat:number, lng:number) {
let point = {lat, lng};
/**射线法判断是否属于各个范围 命中一个就返回true*/
......@@ -765,6 +833,12 @@ export async function latLngInZJ(lat:number, lng:number) {
return isInside;
}
/**
* 射线法逻辑
* @param point
* @param pts
* @returns
*/
function itemIsPointInPolygon(point,pts){
var N = pts.length; //pts [{lat:xxx,lng:xxx},{lat:xxx,lng:xxx}]
var boundOrVertex = true; //如果点位于多边形的顶点或边上,也算做点在多边形内,直接返回true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment