Commit 7c77145f by lixinming

no message

parent 1318e1f4
......@@ -5,7 +5,7 @@
<port>27017</port>
<w>1</w>
<!-- <dataBase>baseDB</dataBase> -->
<dataBase>zjsc0227</dataBase>
<dataBase>zjsc0809</dataBase>
<wtimeoutMS>30000</wtimeoutMS>
</mongodb>
<!-- 小程序的secret 和 appid -->
......@@ -25,5 +25,7 @@
<!-- 初始化账号提示 -->
<initPointOut>1729288</initPointOut>
</sms>
<baidumap>KI1jEpifrEQtgr7ZJ2zAOKlUw1tme7Eb</baidumap>
<!-- <baidumap>KI1jEpifrEQtgr7ZJ2zAOKlUw1tme7Eb</baidumap> -->
<!-- <baidumap>QCxLry4y9BjIDRDIsGAerkcHrnrbo55I</baidumap> 夏-->
<baidumap>yvr5gS5rGO6tFfq3gERdRfzTRsguXG9T</baidumap>
</config>
/**
* 校验数据逻辑
*/
import moment = require("moment");
import { CYCSRBJ, CYCXFX, ENTERPRISESIZE, FINANCINGROUNDS, FUHUAQICUSTOMTASKTYPE, FUHUASTATE, INDUSTRY, MOVEOUTCAUSE, MOVEOUTTRACE, MOVEOUTTYPE, NASHUIRENZIZHI, OUTPUTTYPE, RAS, VIRTUALCAUSE } from "../../../config/enum";
import { getNewMonthTask } from "../../../data/fuHuaQi/customTask";
import { findEnterpriseCount, findEnterpriseList, findEnterpriseListToPage, selectOneEnterpriseByParam } from "../../../data/enterprise/enterprise";
import { extractData } from "../../../util/piecemeal";
import { EnterpriseListConfig, EnterpriseMoveOutListConfig } from "../../../config/splitResultConfig";
import { findFuHuaQiOperationNameMapByParam } from "../../../data/fuHuaQi/fuhuaqi";
import { changeEnumValue } from "../../../util/verificationEnum";
import { changeAddToString } from "../../../tools/system";
import { outPutMonthTableList } from "../fuHuaQi/month";
import { addressIsInZJ, latLngInZJ } from "../../../tools/transCode";
import { outPutFinancingList } from "../enterprise/financing";
function changeTimeStr(dataCycle) {
let dataCycleStr = `${dataCycle}`;
return `${dataCycleStr.slice(0,4)}-${dataCycleStr.slice(4,6)}-01 00:00:00`;
}
export async function checkEnterpriseDataList(page:number) {
/**获取最新数据月份 */
let dataMonthInfo = await getNewMonthTask(FUHUAQICUSTOMTASKTYPE.月度任务);
let startMs = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').valueOf();
let endMs = moment(startMs).add(1, 'M').valueOf();
let usccMap = await findFuHuaQiOperationNameMapByParam({});//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let param = {
createTime:{"$gt":startMs, "$lt":endMs}
}
let enterpriseList = await findEnterpriseListToPage(param, (page-1) * 10);
let enterpriseCount = await findEnterpriseCount(param);
let dataList = [];
enterpriseList.forEach(info => {
/**截取返回数据 */
let changeData:any = extractData(EnterpriseListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
/** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
changeData.state = changeEnumValue(FUHUASTATE, changeData.state);
changeData.virtualCause = !changeData.virtualCause ? '-' : changeEnumValue(VIRTUALCAUSE, changeData.virtualCause);
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
/**将枚举值转为字符 */
changeData.industry = changeEnumValue(INDUSTRY, changeData.industry);
changeData.cycxfx = changeEnumValue(CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = changeEnumValue(CYCSRBJ, changeData.cycsrbj) || "未选择";
let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0;
changeData.classIPatent = intellectualProperty.classIPatent || 0;
changeData.secondClassPatent = intellectualProperty.secondClassPatent || 0;
if (changeData.qualification) {
let onceData = changeData.qualification;
let beOnTheMarket = "无上市";
if (changeData.qualification.beOnTheMarket){
beOnTheMarket = changeEnumValue( FINANCINGROUNDS, onceData.beOnTheMarket)
}
let qualificationList = [{
beOnTheMarket,
highTechMs: onceData.highTechMs ? new Date(onceData.highTechMs).getFullYear() : '未认证',//高新技术
zjtxMs: onceData.zjtxMs ? new Date(onceData.zjtxMs).getFullYear() : '未认证',//专精特新
xjrpyMs: onceData.xjrpyMs ? new Date(onceData.xjrpyMs).getFullYear() : '未认证',//小巨人培育
xjrMs: onceData.xjrMs ? new Date(onceData.xjrMs).getFullYear() : '未认证',//小巨人
}];
changeData.qualification = qualificationList;
} else {
changeData.qualification = [{
beOnTheMarket:"无上市",
highTechMs: '未认证',//高新技术
zjtxMs: '未认证',//专精特新
xjrpyMs: '未认证',//小巨人培育
xjrMs: '未认证',//小巨人
}]
}
dataList.push(changeData);
});
let title = `${moment(startMs).format("YYYY年MM月")}数据新入孵${enterpriseCount}家`;
return {dataList, count:enterpriseCount, title};
}
export async function dwEnterpriseDataList() {
/**获取最新数据月份 */
let dataMonthInfo = await getNewMonthTask(FUHUAQICUSTOMTASKTYPE.月度任务);
let startMs = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').valueOf();
let endMs = moment(startMs).add(1, 'M').valueOf();
let usccMap = await findFuHuaQiOperationNameMapByParam({});//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let param = {
createTime:{"$gt":startMs, "$lt":endMs},
"$or" : [{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}] //未提交的企业不能查看
}
let enterpriseList = await findEnterpriseList(param);
let enterpriseCount = await findEnterpriseCount(param);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const TitleList = [
"企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务",
"注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址",
"注册地址", "经营地址", "租赁面积(平方米)","创业创新方向","创业创始人背景",
"海外专利", "一类专利","二类专利",
"是否上市" , "高新技术" , "专精特新" , "小巨人培育" , "小巨人"
];//表头顺序 如果这里修改了 下面的keyList也要修改
const KeyList = [
"name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness",
"logonTime","firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress",
"logonAddress", "operatingAddress", "leasedArea","cycxfx","cycsrbj",
"alienPatent", "classIPatent", "secondClassPatent",
"beOnTheMarket", "highTechMs", "zjtxMs", "xjrpyMs", "xjrMs"
];//表头对应的字段顺序
let dataList = [TitleList];
enterpriseList.forEach( info => {
/**截取返回结果 */
let changeData:any = extractData(EnterpriseListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
changeData.cycxfx = changeEnumValue(CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = changeEnumValue(CYCSRBJ, changeData.cycsrbj) || "未选择";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**修改枚举值 */
changeData.industry = changeEnumValue(INDUSTRY, changeData.industry);
changeData.state = changeEnumValue(FUHUASTATE, changeData.state);
changeData.virtualCause = changeEnumValue(VIRTUALCAUSE, changeData.virtualCause);
/**- */
let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0;
changeData.classIPatent = intellectualProperty.classIPatent || 0;
changeData.secondClassPatent = intellectualProperty.secondClassPatent || 0;
if (changeData.qualification) {
let onceData = changeData.qualification;
let beOnTheMarket = "无上市";
if (onceData.beOnTheMarket){
beOnTheMarket = changeEnumValue( FINANCINGROUNDS, onceData.beOnTheMarket) || "无上市"
}
changeData.beOnTheMarket = beOnTheMarket;
changeData.highTechMs = onceData.highTechMs ? new Date(onceData.highTechMs).getFullYear() : '未认证';//高新技术
changeData.zjtxMs = onceData.zjtxMs ? new Date(onceData.zjtxMs).getFullYear() : '未认证';//专精特新
changeData.xjrpyMs = onceData.xjrpyMs ? new Date(onceData.xjrpyMs).getFullYear() : '未认证';//小巨人培育
changeData.xjrMs = onceData.xjrMs ? new Date(onceData.xjrMs).getFullYear() : '未认证';//小巨人
} else {
changeData.beOnTheMarket = "无上市";//是否上市
changeData.highTechMs = '未认证';//高新技术
changeData.zjtxMs = '未认证';//专精特新
changeData.xjrpyMs = '未认证';//小巨人培育
changeData.xjrMs = '未认证';//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let subList = [];
KeyList.forEach( keyStr => {
let value = changeData[keyStr];
if (value == null || value == undefined) value = "-"
subList.push( value );
});
dataList.push(subList);
});
let title = `${moment(startMs).format("YYYY年MM月")}数据新入孵${enterpriseCount}家`;
return {dataList, count:enterpriseCount, title};
}
/**
* 注意工作流程,这里以后用uscc匹配企查查数据,匹配不到的证明企业信用代码不对
* @param list
*/
export async function upCheckEnterpriseData(dataList) {
//比对名称和uscc 有一个相同认为是同一个公司
let fhqNameMap = await findFuHuaQiOperationNameMapByParam({});
let notCheckList = [];
for (let i = 1; i < dataList.length; i++) {
let itemList = dataList[i];
let 原文件导入名称 = itemList[0];
let 系统匹配企业名称 = itemList[1];
let 登记状态 = itemList[2];
let 法定代表人 = itemList[3];
let 注册资本 = itemList[4];
let 实缴资本 = itemList[5];
let 成立日期 = itemList[6];
let 统一社会信用代码 = itemList[7];
let 企业地址 = itemList[8];
let 所属省份 = itemList[9];
let 所属城市 = itemList[10];
let 所属区县 = itemList[11];
let 电话 = itemList[12];
let 更多电话 = itemList[13];
let 邮箱 = itemList[14];
let 更多邮箱 = itemList[15];
let 企业机构类型 = itemList[16];
let 纳税人识别号 = itemList[17];
let 注册号 = itemList[18];
let 组织机构代码 = itemList[19];
let 参保人数 = itemList[20];
let 参保人数所属年报 = itemList[21];
let 核准日期 = itemList[22];
let 营业期限 = itemList[23];
let 国标行业门类 = itemList[24];
let 国标行业大类 = itemList[25];
let 国标行业中类 = itemList[26];
let 国标行业小类 = itemList[27];
let 企查查行业门类 = itemList[28];
let 企查查行业大类 = itemList[29];
let 企查查行业中类 = itemList[30];
let 企查查行业小类 = itemList[31];
let 企业规模 = itemList[32];
let 曾用名 = itemList[33];
let 英文名 = itemList[34];
let 官网 = itemList[35];
let 通信地址 = itemList[36];
let 企业简介 = itemList[37];
let 经营范围 = itemList[38];
let 登记机关 = itemList[39];
let 纳税人资质 = itemList[40];
let 最新年报年份 = itemList[41];
let 企业经营状态 = itemList[42];
let selectUscc = 统一社会信用代码 == "-" ? 原文件导入名称 : 统一社会信用代码;
let enterpriseInfo = await selectOneEnterpriseByParam({uscc:selectUscc});
if (!enterpriseInfo || !enterpriseInfo.uscc) {
notCheckList.push({index:i, uscc:selectUscc, name:系统匹配企业名称});
continue;
}
enterpriseInfo.name = 系统匹配企业名称;
/**核对基础信息,注册时间,注册地址,经营地址等 */
if (成立日期 != "-") {
enterpriseInfo.logonTime = new Date(成立日期).valueOf();
}
enterpriseInfo.logonAddress = [所属省份, 所属城市, 所属区县, 企业地址 ];
if (经营范围 != "-" && enterpriseInfo.mainBusiness) {
enterpriseInfo.mainBusiness = 经营范围;
}
let ras = RAS.续存;
if (登记状态.indexOf("注销") != -1) {
//企业注销 注销将企业改成迁出
let 等级状态数组 = 登记状态.split("(");
if (等级状态数组[1]) {
enterpriseInfo.logOffMS = new Date(等级状态数组[1].replace(")", "")).valueOf();
}
enterpriseInfo.state = FUHUASTATE.迁出;
enterpriseInfo.moveOutType = MOVEOUTTYPE.企业注销;
ras = RAS.注销;
}
/** 增补字段 */
enterpriseInfo.RAS = ras;//登记状态
enterpriseInfo.legalPerson = 法定代表人;//法人
enterpriseInfo.zhuceziben = 注册资本;//注册资本
enterpriseInfo.shijiaoziben = 实缴资本;//实缴资本
enterpriseInfo.dianHua = 电话;//电话
enterpriseInfo.gengDuoDianHua = 更多电话;//更多电话
enterpriseInfo.mail = 邮箱;//邮箱
enterpriseInfo.moreMail = 更多邮箱;//更多邮箱
enterpriseInfo.enterpriseType = 企业机构类型;//企业(机构)类型
enterpriseInfo.zhuCeHao = 注册号;//注册号
enterpriseInfo.zuZhiJiGouDaiMa = 组织机构代码;//组织机构代码
enterpriseInfo.canBaoRenShu = 参保人数 == "-" || !参保人数 ? 0: parseInt(参保人数); //参保人数
enterpriseInfo.canBaoRenShuNianBao = 参保人数所属年报 == "-" || !参保人数所属年报 ? 0: parseInt(参保人数所属年报); //参保人数所属年报
enterpriseInfo.yingYeQiXian = 营业期限;//营业期限
switch (企业规模) {
case 'XS(微型)': enterpriseInfo.qiYeGuiMo = ENTERPRISESIZE.微型;break;
case 'S(小型)': enterpriseInfo.qiYeGuiMo = ENTERPRISESIZE.小型;break;
case 'M(中型)': enterpriseInfo.qiYeGuiMo = ENTERPRISESIZE.中型;break;
case 'L(大型)': enterpriseInfo.qiYeGuiMo = ENTERPRISESIZE.大型;break;
default: enterpriseInfo.qiYeGuiMo = ENTERPRISESIZE.未知;break;
}
enterpriseInfo.guanWang = 官网;//官网
enterpriseInfo.tongXinDiZhi = 通信地址;//通信地址
enterpriseInfo.jianJie = 企业简介;//企业简介
enterpriseInfo.dengJiJiGuan = 登记机关;//登记机关
switch (纳税人资质) {
case 'XS(微型)': enterpriseInfo.naShuiRenZiZhi = NASHUIRENZIZHI.一般纳税人;break;
case '增值税一般纳税人': enterpriseInfo.naShuiRenZiZhi = NASHUIRENZIZHI.增值税一般纳税人;break;
case 'M(中型)': enterpriseInfo.naShuiRenZiZhi = NASHUIRENZIZHI.小规模纳税人;break;
default: enterpriseInfo.naShuiRenZiZhi = NASHUIRENZIZHI.未知;break;
}
enterpriseInfo.zuiXinNianBaoNianFen = isNaN(最新年报年份) ? 0: parseInt(最新年报年份); //最新年报年份
await enterpriseInfo.save();
}
return {isSuccess:true, notCheckList};
}
/**
* 月报数据源下载
*/
export async function monthData() {
let dataMonthInfo = await getNewMonthTask(FUHUAQICUSTOMTASKTYPE.月度任务);
let year = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getFullYear();
let month = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getMonth() + 1;
// /**月度任务 */
// let monthDataList = await outPutMonthTableList(0, year, month, OUTPUTTYPE.当前数据 );
// /**新入孵数据 */
// let ruFuData = await dwEnterpriseDataList();
// /**新注册新迁入 */
// let {qianRuList, createList} = await monthEnterpriseStats();
// /** 融资*/
// let financingDataStr = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').format("YYYY-MM-DD");
// let financingList = await outPutFinancingList(`${financingDataStr} 00:00:00`, "", [], 1, OUTPUTTYPE.当前数据, false);
let {thisYearDataList, thisYearQianRuList} = await t1();
let thisYearFinancingList = [];
for (let i = 2; i < 8; i++) {
let itemList = await outPutFinancingList(`2024-07-0${i} 00:00:00`, "", [], 1, OUTPUTTYPE.当前数据, false);
thisYearFinancingList = thisYearFinancingList.concat(thisYearFinancingList, itemList)
}
return {
title:"月报数据下载",
dataList:[
// {
// sheetName:"孵化器基本情况",
// data:monthDataList
// },
// {
// sheetName:"新入孵数据情况源数据",
// data:ruFuData.dataList
// },
// {
// sheetName:"新注册",
// data:createList
// },
// {
// sheetName:"新迁入",
// data:qianRuList
// },
// {
// sheetName:"融资",
// data:financingList
// },
// {
// sheetName:`${2024}年1-${7}月累计融资企业汇总统计`,
// data:thisYearFinancingList
// },
{
sheetName:`${year}年1-${month}月累计新迁入企业汇总统计`,
data:thisYearQianRuList,
},
{
sheetName:`${year}年1-${month}月累计新注册企业汇总统计`,
data:thisYearDataList,
}
]
}
}
async function monthEnterpriseStats() {
/**获取最新数据月份 */
let thisYearStartMs = new Date(`${new Date().getFullYear()}-01-01 00:00:00`).valueOf();
let dataMonthInfo = await getNewMonthTask(FUHUAQICUSTOMTASKTYPE.月度任务);
let startMs = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').valueOf();
let endMs = moment(startMs).add(1, 'M').valueOf();
let usccMap = await findFuHuaQiOperationNameMapByParam({});//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let param = {
createTime:{"$gt":startMs, "$lt":endMs},
"$or" : [{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}] //未提交的企业不能查看
}
let enterpriseList = await findEnterpriseList(param);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const TitleList = [
"企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务",
"注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址",
"注册地址", "经营地址", "租赁面积(平方米)","创业创新方向","创业创始人背景",
"海外专利", "一类专利","二类专利",
"是否上市" , "高新技术" , "专精特新" , "小巨人培育" , "小巨人"
];//表头顺序 如果这里修改了 下面的keyList也要修改
const KeyList = [
"name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness",
"logonTime","firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress",
"logonAddress", "operatingAddress", "leasedArea","cycxfx","cycsrbj",
"alienPatent", "classIPatent", "secondClassPatent",
"beOnTheMarket", "highTechMs", "zjtxMs", "xjrpyMs", "xjrMs"
];//表头对应的字段顺序
let dataList = [TitleList];
let qianRuList = [TitleList];
for (let i =0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
let logonAddressSuccess = false;
let logonTimeIsThisYear = false;
if (info.logonAddress) {
let isInZJ = await addressIsInZJ(changeAddToString(info.logonAddress));
if (isInZJ) {
logonAddressSuccess = true;
}
}
if (info.logonTime > thisYearStartMs) {
logonTimeIsThisYear = true;
}
let isCreate = false;
let isQianRu = false;
//迁入
if (info.oldLogonAddress && info.oldLogonAddress.length && info.oldLogonAddress[0]) {
let qianRuIsZJ = await addressIsInZJ(changeAddToString(info.oldLogonAddress));
if (!qianRuIsZJ) {//非张江
if (logonAddressSuccess) isQianRu = true;
} else {//张江
if (logonAddressSuccess && logonTimeIsThisYear) isCreate = true;
}
}
//新注册
if (info.isCreate) {
if (logonAddressSuccess && logonTimeIsThisYear) {
isCreate = true;
}
}
/**截取返回结果 */
let changeData:any = extractData(EnterpriseListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
changeData.cycxfx = changeEnumValue(CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = changeEnumValue(CYCSRBJ, changeData.cycsrbj) || "未选择";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**修改枚举值 */
changeData.industry = changeEnumValue(INDUSTRY, changeData.industry);
changeData.state = changeEnumValue(FUHUASTATE, changeData.state);
changeData.virtualCause = changeEnumValue(VIRTUALCAUSE, changeData.virtualCause);
/**- */
let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0;
changeData.classIPatent = intellectualProperty.classIPatent || 0;
changeData.secondClassPatent = intellectualProperty.secondClassPatent || 0;
if (changeData.qualification) {
let onceData = changeData.qualification;
let beOnTheMarket = "无上市";
if (onceData.beOnTheMarket){
beOnTheMarket = changeEnumValue( FINANCINGROUNDS, onceData.beOnTheMarket) || "无上市"
}
changeData.beOnTheMarket = beOnTheMarket;
changeData.highTechMs = onceData.highTechMs ? new Date(onceData.highTechMs).getFullYear() : '未认证';//高新技术
changeData.zjtxMs = onceData.zjtxMs ? new Date(onceData.zjtxMs).getFullYear() : '未认证';//专精特新
changeData.xjrpyMs = onceData.xjrpyMs ? new Date(onceData.xjrpyMs).getFullYear() : '未认证';//小巨人培育
changeData.xjrMs = onceData.xjrMs ? new Date(onceData.xjrMs).getFullYear() : '未认证';//小巨人
} else {
changeData.beOnTheMarket = "无上市";//是否上市
changeData.highTechMs = '未认证';//高新技术
changeData.zjtxMs = '未认证';//专精特新
changeData.xjrpyMs = '未认证';//小巨人培育
changeData.xjrMs = '未认证';//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let subList = [];
KeyList.forEach( keyStr => {
let value = changeData[keyStr];
if (value == null || value == undefined) value = "-"
subList.push( value );
});
if (isQianRu) qianRuList.push(subList)
if (isCreate) dataList.push(subList);
}
return {createList:dataList, qianRuList:qianRuList};
}
async function t1() {
/** */
let thisYearStartMs = new Date(`${new Date().getFullYear()}-01-01 00:00:00`).valueOf();
const TitleList = [
"月份","企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务",
"注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址",
"注册地址", "经营地址", "租赁面积(平方米)","创业创新方向","创业创始人背景",
"海外专利", "一类专利","二类专利",
"是否上市" , "高新技术" , "专精特新" , "小巨人培育" , "小巨人"
];//表头顺序 如果这里修改了 下面的keyList也要修改
let thisYearDataList = [TitleList];
let thisYearQianRuList = [TitleList];
let usccMap = await findFuHuaQiOperationNameMapByParam({});//用于将孵化器uscc变成孵化器名称
/**找目标月入库的数据 */
let param = {
createTime:{"$gt":new Date("2024-01-01 00:00:00").valueOf()},
"$or" : [{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}] //未提交的企业不能查看
}
let enterpriseList = await findEnterpriseList(param);
/**组合二维数组 titleList 与 keyList 要一一对应 */
const KeyList = [
"name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness",
"logonTime","firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress",
"logonAddress", "operatingAddress", "leasedArea","cycxfx","cycsrbj",
"alienPatent", "classIPatent", "secondClassPatent",
"beOnTheMarket", "highTechMs", "zjtxMs", "xjrpyMs", "xjrMs"
];//表头对应的字段顺序
for (let i =0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
let logonTimeIsThisYear = false;
if (info.logonAddress) {
}
if (info.logonTime > thisYearStartMs) {
logonTimeIsThisYear = true;
}
let isCreate = false;
let isQianRu = false;
//迁入
if (info.oldLogonAddress && info.oldLogonAddress.length && info.oldLogonAddress[0]) {
let qianRuIsZJ = await latLngInZJ(parseFloat(info.oldLat), parseFloat(info.oldLng));
if (!qianRuIsZJ) {//非张江
let logonAddressSuccess = await latLngInZJ(parseFloat(info.lat), parseFloat(info.lng));
if (logonAddressSuccess) isQianRu = true;
} else {//张江
if (logonTimeIsThisYear) {
let logonAddressSuccess = await latLngInZJ(parseFloat(info.lat), parseFloat(info.lng));
if (logonAddressSuccess) isCreate = true;
}
}
}
//新注册
if (info.isCreate) {
if (logonTimeIsThisYear) {
isCreate = await latLngInZJ(parseFloat(info.lat), parseFloat(info.lng));
}
}
/**截取返回结果 */
let changeData:any = extractData(EnterpriseListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
changeData.cycxfx = changeEnumValue(CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = changeEnumValue(CYCSRBJ, changeData.cycsrbj) || "未选择";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**修改枚举值 */
changeData.industry = changeEnumValue(INDUSTRY, changeData.industry);
changeData.state = changeEnumValue(FUHUASTATE, changeData.state);
changeData.virtualCause = changeEnumValue(VIRTUALCAUSE, changeData.virtualCause);
/**- */
let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0;
changeData.classIPatent = intellectualProperty.classIPatent || 0;
changeData.secondClassPatent = intellectualProperty.secondClassPatent || 0;
if (changeData.qualification) {
let onceData = changeData.qualification;
let beOnTheMarket = "无上市";
if (onceData.beOnTheMarket){
beOnTheMarket = changeEnumValue( FINANCINGROUNDS, onceData.beOnTheMarket) || "无上市"
}
changeData.beOnTheMarket = beOnTheMarket;
changeData.highTechMs = onceData.highTechMs ? new Date(onceData.highTechMs).getFullYear() : '未认证';//高新技术
changeData.zjtxMs = onceData.zjtxMs ? new Date(onceData.zjtxMs).getFullYear() : '未认证';//专精特新
changeData.xjrpyMs = onceData.xjrpyMs ? new Date(onceData.xjrpyMs).getFullYear() : '未认证';//小巨人培育
changeData.xjrMs = onceData.xjrMs ? new Date(onceData.xjrMs).getFullYear() : '未认证';//小巨人
} else {
changeData.beOnTheMarket = "无上市";//是否上市
changeData.highTechMs = '未认证';//高新技术
changeData.zjtxMs = '未认证';//专精特新
changeData.xjrpyMs = '未认证';//小巨人培育
changeData.xjrMs = '未认证';//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let subList = [];
subList.push(new Date(info.createTime).getMonth() + 1)
KeyList.forEach( keyStr => {
let value = changeData[keyStr];
if (value == null || value == undefined) value = "-"
subList.push( value );
});
if (isQianRu) thisYearDataList.push(subList)
if (isCreate) thisYearQianRuList.push(subList);
}
thisYearDataList.sort((a:any, b:any) => {return a[0]-b[0]});
thisYearQianRuList.sort((a:any, b:any) => {return a[0]-b[0]});
return {thisYearDataList, thisYearQianRuList}
}
\ No newline at end of file
......@@ -656,3 +656,28 @@ export async function getEnterpriseTeamInfoList(uscc:string) {
return {dataList};
}
/**
* 企业信息回显
* @param uscc
*/
export async function enterpriseInfomation(uscc:string) {
//暂时回显名称
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
let dataInfo = {
name:enterpriseInfo.name
}
return {dataInfo};
}
export async function updateEnterpriseInfomation(uscc:string, name:string) {
//暂时回显名称
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
enterpriseInfo.name = name;
await enterpriseInfo.save();
return {isSuccess:true}
}
\ No newline at end of file
......@@ -69,11 +69,11 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
/**
* 导出融资企业信息列表
* @param monthData 数据月份 目前数据库没有该字段
* @param monthData 入库月份 目前数据库没有该字段
* @param fuHuaQiName 所属孵化器
* @param industry 行业领域
* @param fuHuaQiInvestment 孵化器是否参与投资
* @param type 页数
* @param type 类型
* @returns
*/
export async function outPutFinancingList(monthData:string, fuHuaQiName:string, industry, fuHuaQiInvestment:number, type:number, isFuHuaQi:boolean) {
......
......@@ -9,7 +9,7 @@ import * as enterpriseData from "../../data/enterprise/enterprise";
import * as scoreBiz from "../mobileFuHuaQi/fuHuaQi/score";
import * as fuhuaqiData from "../../data/fuHuaQi/fuhuaqi";
import * as financingData from "../../data/fuHuaQi/monthTask/financing";
import { CHANGEMODE, CYCSRBJ, CYCXFX, ENTERPRISESIZE, FUHUAQICUSTOMTASKTYPE, FUHUASTATE, INDUSTRY, LISTINGSITUATION, MOVEOUTCAUSE, MOVEOUTCAUSENOTCLIENT, MOVEOUTTRACE, MOVEOUTTYPE, NASHUIRENZIZHI, RAS, SCOREWAYS, STATEENUM, TASKTYPEENUM, VIRTUALCAUSE } from "../../config/enum";
import { CHANGEMODE, CYCSRBJ, CYCXFX, ENTERPRISESIZE, FINANCINGROUNDS, FUHUAQICUSTOMTASKTYPE, FUHUASTATE, INDUSTRY, LISTINGSITUATION, MOVEOUTCAUSE, MOVEOUTCAUSENOTCLIENT, MOVEOUTTRACE, MOVEOUTTYPE, NASHUIRENZIZHI, RAS, SCOREWAYS, STATEENUM, TASKTYPEENUM, VIRTUALCAUSE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { findAllNotDisabledFuHuaQi, findFuHuaQiList } from "../../data/fuHuaQi/fuhuaqi";
import { BizError } from "../../util/bizError";
......@@ -37,6 +37,7 @@ import { EnterpriseListConfig } from "../../config/splitResultConfig";
import { changeAddToString } from "../../tools/system";
import { changeEnumValue } from "../../util/verificationEnum";
import { addTask } from "../../data/fuHuaQi/customTask";
import { addressIsInZJ, getAddressLatAndLng, latLngInZJ } from "../../tools/transCode";
const xlsx = require('node-xlsx');
const path = require('path');
......@@ -1741,12 +1742,12 @@ export async function test111() {
export async function zhenDuanBaoGao() {
let fhqList = [
"上海狮子山企业管理有限公司",
"上海荟泉实业有限公司",
"九沐(上海)投资有限公司",
"上海闵玉物联网科技有限公司",
"上海考拉创客空间管理有限公司",
"上海雨艺创业孵化器管理有限公司"
"上海衍禧堂企业管理有限公司",
"上海谦岩企业管理有限公司",
"上海瀜澈企业管理有限公司",
"上海点金树创业孵化器有限公司",
"上海翔港创业投资有限公司",
"上海晟唐创业孵化器管理有限公司"
];
......@@ -2086,4 +2087,212 @@ export async function test11111() {
fs.writeFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", '雨艺在孵企业excel.xlsx' ), buff);
console.log();
}
export async function test() {
// let enterpriseList = await enterpriseData.findEnterpriseList({});
let list = await enterpriseData.findEnterpriseList({state:FUHUASTATE.实体孵化});
let enterpriseList = [];
for (let i = 0; i < list.length; i++) {
let {logonTime, industry, logonAddress, state, lng, lat} = list[i];
// continue;
let zaiFuQiYeSuccess = false;
let logonAddressSuccess = false;
if (logonTime) {
let yearLong = moment().diff(logonTime, 'years');
if (industry.indexOf(INDUSTRY.人工智能及智能制造) != -1 || industry.indexOf(INDUSTRY.生物医药) != -1 || industry.indexOf(INDUSTRY.集成电路) != -1) {
if (yearLong < 5) zaiFuQiYeSuccess = true;
} else {//其他领域
if (yearLong < 4) zaiFuQiYeSuccess = true;
}
}
if (logonAddress && logonAddress.length && logonAddress[1] && state == FUHUASTATE.实体孵化) {
if (lat && lng) {
let isInZJ = await latLngInZJ(parseFloat(lat), parseFloat(lng));
if (isInZJ) {
logonAddressSuccess = true;
}
}
}
if (logonAddressSuccess && zaiFuQiYeSuccess) {
enterpriseList.push(list[i]);
console.log(i);
}
}
let usccMap = await fuhuaqiData.findFuHuaQiOperationNameMapByParam({});//用于将孵化器uscc变成孵化器名称
/**组合二维数组 titleList 与 keyList 要一一对应 */
const TitleList = [
"企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务",
"注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址",
"注册地址", "经营地址", "租赁面积(平方米)","创业创新方向","创业创始人背景",
"海外专利", "一类专利","二类专利",
"是否上市" , "高新技术" , "专精特新" , "小巨人培育" , "小巨人"
];//表头顺序 如果这里修改了 下面的keyList也要修改
const KeyList = [
"name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness",
"logonTime","firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress",
"logonAddress", "operatingAddress", "leasedArea","cycxfx","cycsrbj",
"alienPatent", "classIPatent", "secondClassPatent",
"beOnTheMarket", "highTechMs", "zjtxMs", "xjrpyMs", "xjrMs"
];//表头对应的字段顺序
let dataList = [TitleList];
for (let i =0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
/**截取返回结果 */
let changeData:any = extractData(EnterpriseListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
changeData.cycxfx = changeEnumValue(CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = changeEnumValue(CYCSRBJ, changeData.cycsrbj) || "未选择";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**修改枚举值 */
changeData.industry = changeEnumValue(INDUSTRY, changeData.industry);
changeData.state = changeEnumValue(FUHUASTATE, changeData.state);
changeData.virtualCause = changeEnumValue(VIRTUALCAUSE, changeData.virtualCause);
/**- */
let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0;
changeData.classIPatent = intellectualProperty.classIPatent || 0;
changeData.secondClassPatent = intellectualProperty.secondClassPatent || 0;
if (changeData.qualification) {
let onceData = changeData.qualification;
let beOnTheMarket = "无上市";
if (onceData.beOnTheMarket){
beOnTheMarket = changeEnumValue( FINANCINGROUNDS, onceData.beOnTheMarket) || "无上市"
}
changeData.beOnTheMarket = beOnTheMarket;
changeData.highTechMs = onceData.highTechMs ? new Date(onceData.highTechMs).getFullYear() : '未认证';//高新技术
changeData.zjtxMs = onceData.zjtxMs ? new Date(onceData.zjtxMs).getFullYear() : '未认证';//专精特新
changeData.xjrpyMs = onceData.xjrpyMs ? new Date(onceData.xjrpyMs).getFullYear() : '未认证';//小巨人培育
changeData.xjrMs = onceData.xjrMs ? new Date(onceData.xjrMs).getFullYear() : '未认证';//小巨人
} else {
changeData.beOnTheMarket = "无上市";//是否上市
changeData.highTechMs = '未认证';//高新技术
changeData.zjtxMs = '未认证';//专精特新
changeData.xjrpyMs = '未认证';//小巨人培育
changeData.xjrMs = '未认证';//小巨人
}
/**根据表头与key的顺序 生成小数组 */
let subList = [];
KeyList.forEach( keyStr => {
let value = changeData[keyStr];
if (value == null || value == undefined) value = "-"
subList.push( value );
});
dataList.push(subList);
}
let data = [
{
name:"sheet1",
data:dataList
}
];
let buff = xlsx.build(data);
fs.writeFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", `截至${new Date().getMonth()+1}全部企业.xlsx` ), buff);
console.log("数据更新完成");
}
export async function 修复重复() {
let usccList = await enterpriseData.repeatEnterprise();
for (let i= 0; i < usccList.length; i++) {
let uscc = usccList[i];
let thisUsccEnterpriseList = await findEnterpriseList({uscc});
thisUsccEnterpriseList.forEach(item => {
let { _id, uscc, fuHuaQiUscc, name, state, createTime, taskId, draftLock, firstLoginIsChangePwd, zuZhiJiGouDaiMa } = item;
console.log(_id, uscc, fuHuaQiUscc, name, state, moment(createTime).format("YYYY-MM-DD"), taskId, draftLock, firstLoginIsChangePwd, zuZhiJiGouDaiMa);
});
console.log("--");
console.log();
}
let removeList = [];
removeList.push({uscc:"91310115MAD600EEXK", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310115MABRJG092Y", firstLoginIsChangePwd:false});//上海岩测科技有限公司
removeList.push({uscc:"91310115MABQABT77B", firstLoginIsChangePwd:false});//上海欢引科技有限公司
removeList.push({uscc:"91310115MAC7AQU44W", firstLoginIsChangePwd:false});//广天映泰(上海)生物科技有限公司
removeList.push({uscc:"91310115MA1K4T7Y0L", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310115MA1HBEHJ6X", firstLoginIsChangePwd:false});//上海伴芯科技有限公司
removeList.push({uscc:"91310115MACCLEPJ70", state:4 });//上海池瀚生物科技有限公司
removeList.push({uscc:"91310115MA1HB8TL2B", firstLoginIsChangePwd:false});//上海锶唯弗实业有限公司
removeList.push({uscc:"91310115MA1K4UBL2E", firstLoginIsChangePwd:false});//九奕半导体设备(上海)有限公司
removeList.push({uscc:"91310115MA1K3NHN2N", state:4 });//上海巍啊数字科技有限公司
removeList.push({uscc:"91310120MA1HRWDU7C", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310114398613914X", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310000342209349R", zuZhiJiGouDaiMa:null });
removeList.push({uscc:"91310115MA1H9BY42P", fuHuaQiUscc:null});
removeList.push({uscc:"91310115MA1HB1146N", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310115MA1HAQKR87", zuZhiJiGouDaiMa:null});
removeList.push({uscc:"91310115MA1HB1BX7C", zuZhiJiGouDaiMa:null});
console.log();
}
export async function 补充经纬度() {
let enterpriseList = await findEnterpriseList({});
// for (let i = 0; i < enterpriseList.length; i++) {
// let {uscc} = enterpriseList[i];
// let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
// if (enterpriseInfo.logonAddress && enterpriseInfo.logonAddress.length && enterpriseInfo.logonAddress[0]) {
// let pointInfo = await getAddressLatAndLng(changeAddToString(enterpriseInfo.logonAddress), enterpriseInfo.logonAddress[0], uscc);
// if (!pointInfo.error) {
// enterpriseInfo.lng = pointInfo.lng;
// enterpriseInfo.lat = pointInfo.lat;
// console.log(i);
// }
// }
// await enterpriseInfo.save();
// }
for (let i = 0; i < enterpriseList.length; i++) {
let {uscc} = enterpriseList[i];
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (enterpriseInfo.oldLogonAddress && enterpriseInfo.oldLogonAddress.length && enterpriseInfo.oldLogonAddress[0]) {
let pointInfo = await getAddressLatAndLng(changeAddToString(enterpriseInfo.oldLogonAddress), enterpriseInfo.oldLogonAddress[0], uscc);
if (!pointInfo.error) {
enterpriseInfo.oldLng = pointInfo.lng;
enterpriseInfo.oldLat = pointInfo.lat;
console.log(i);
}
}
await enterpriseInfo.save();
}
console.log("经纬度更新成功");
}
\ No newline at end of file
......@@ -125,7 +125,13 @@ const enterpriseSchema = new Schema({
jianJie:String,//企业简介
dengJiJiGuan:String,//登记机关
naShuiRenZiZhi:Number,//纳税人资质
zuiXinNianBaoNianFen:Number//最新年报年份
zuiXinNianBaoNianFen:Number,//最新年报年份
//经纬度
lng:String,//经度
lat:String,//纬度
//迁入前经纬度
oldLng:String,//经度
oldLat:String,//纬度
});
var enterpriseModel;
......@@ -610,7 +616,8 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
let result = await enterpriseModel.aggregate([
{
"$match":{
fuHuaQiUscc
fuHuaQiUscc,
state:{"$ne":4}
}
},
{
......@@ -626,4 +633,34 @@ export async function statsFuHuaQiEnterpriseArea(fuHuaQiUscc:string) {
}
]);
return result[0];
}
export async function repeatEnterprise() {
let result = await enterpriseModel.aggregate([
{
$group: {
_id: "$uscc", // 按照email字段进行分组
count: { $sum: 1 }, // 计算每个email出现的次数
}
},
{
$match: {
count: { $gt: 1 } // 筛选出那些email出现次数大于1的分组
}
},
{
$project: {
_id: 0, // 不需要_id字段
uscc: "$_id", // 将_id字段重命名为email
count: 1, // 显示count字段
}
}
]);
let usccList = [];
result.forEach(info => {
usccList.push(info.uscc);
});
return usccList;
}
\ No newline at end of file
......@@ -76,3 +76,14 @@ export async function findCustomTaskCount(param) {
export async function addTask(customTaskId:string, customTaskType:number, dataCycle:number, startMs:number, endMs:number ) {
await customTaskModel.create({customTaskId, customTaskType, dataCycle, startMs, endMs, ct:new Date().valueOf()});
}
/**
* 获取最新月份
* @param param
*/
export async function getNewMonthTask(customTaskType:number) {
let list = await customTaskModel.find({customTaskType}).sort({dataCycle:-1}).limit(1);
return list[0];
}
\ No newline at end of file
import { test, zhenDuanBaoGao, 修复重复, 补充经纬度 } from "./biz/admin/provide";
import { initPool } from "./biz/gpt/indicatorPool";
import { initOutline } from "./biz/gpt/report";
import { initSMS } from "./biz/sms";
......@@ -24,7 +25,9 @@ async function lanuch() {
/**创建http服务 */
httpServer.createServer(systemConfig.port);
console.log('This indicates that the server is started successfully.');
// await zhenDuanBaoGao();
// await 补充经纬度();
// await test();
// await zhenDuanBaoGao();
}
......
/**
* 管理后台端 数据校验
*/
import * as asyncHandler from 'express-async-handler';
import { checkGuanWeiHuiToken } from '../../middleware/user';
import { eccReqParamater } from '../../util/verificationParam';
import { checkEnterpriseDataList, dwEnterpriseDataList, monthData, upCheckEnterpriseData } from '../../biz/admin/checkData/checkMonthData';
export function setRouter(httpServer) {
httpServer.post('/admin/checkdata/list',checkGuanWeiHuiToken, asyncHandler(checkDataList));
httpServer.post('/admin/checkdata/list/dw',checkGuanWeiHuiToken, asyncHandler(dwCheckDataList));
httpServer.post('/admin/checkdata/list/check',checkGuanWeiHuiToken, asyncHandler(checkData));
httpServer.post('/admin/checkdata/monthdata/dw',checkGuanWeiHuiToken, asyncHandler(dwMonthDataList));
}
/**
* 校验数据列表
* @param req
* @param res
*/
async function checkDataList(req, res) {
let reqConf = {page: 'Number' };
const NotMustHaveKeys = [];
let { page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await checkEnterpriseDataList(page);
res.success(result);
}
/**
* 下载校验数据
* @param req
* @param res
*/
async function dwCheckDataList(req, res) {
let result = await dwEnterpriseDataList();
res.success(result);
}
async function checkData(req, res) {
let reqConf = {dataList: '[Object]' };
const NotMustHaveKeys = [];
let { dataList } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await upCheckEnterpriseData(dataList);
res.success(result);
}
/**
* 下载校验数据
* @param req
* @param res
*/
async function dwMonthDataList(req, res) {
let result = await monthData();
res.success(result);
}
......@@ -32,6 +32,9 @@ export function setRouter(httpServer) {
/**企业创始团队列表 */
httpServer.post('/admin/enterprise/initialteam',checkGuanWeiHuiToken, asyncHandler(initialTeamList));
httpServer.post('/admin/data/output/initialteam',checkGuanWeiHuiToken, asyncHandler(outPutEnterpriseInitialTeamList));
/**企业名称编辑 */
httpServer.post('/admin/enterprise/info',checkGuanWeiHuiToken, asyncHandler(enterpriseInfo));
httpServer.post('/admin/enterprise/info/update',checkGuanWeiHuiToken, asyncHandler(updateEnterpriseInfo));
}
......@@ -313,4 +316,32 @@ async function outPutEnterpriseInitialTeamList(req, res) {
let {dataList, fileName} = await enterpriseAdminBiz.outPutInitialTeamList(name, member, memberType, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业创始团队数据.xlsx`});
}
\ No newline at end of file
}
/**
* 企业信息回显
*/
async function enterpriseInfo(req, res) {
let reqConf = {uscc:"String"};
const NotMustHaveKeys = [];
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.enterpriseInfomation(uscc);
res.success(restult);
}
/**
* 企业信息修改
*/
async function updateEnterpriseInfo(req, res) {
let reqConf = {uscc:"String", name:"String"};
const NotMustHaveKeys = [];
let { uscc, name } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.updateEnterpriseInfomation(uscc, name);
res.success(restult);
}
......@@ -43,6 +43,8 @@ import * as guanWeiHuiMobileClientUserRouters from './guanWeiHuiMobileClient/use
import * as dangJianRouters from './mobileClient/dangJian';
import * as checkDataRouters from './admin/checkData';
export function setRouter(httpServer){
/**下拉框等公用 路由 */
publicRouters.setRouter(httpServer);
......@@ -94,4 +96,7 @@ export function setRouter(httpServer){
/**党建 */
dangJianRouters.setRouter(httpServer);
/**数据校验 */
checkDataRouters.setRouter(httpServer);
}
\ No newline at end of file
......@@ -18,7 +18,8 @@ export async function addressIsInZJ(address) {
}
let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
if (reuslt.status != 0 || !reuslt.result.location) {
throw new BizError("获取张江地址错误", reuslt.message, JSON.stringify(reuslt));
new BizError("获取张江地址错误", reuslt.message, JSON.stringify(reuslt));
return false;
}
let point = reuslt.result.location;//转换好的经纬度
......@@ -39,24 +40,45 @@ export async function addressIsInZJ(address) {
return isInside;
}
// /**
// * 获取经纬度
// * @param address
// * @param city
// * @returns
// */
// export async function getAddressLatAndLng(address, city) {
// let param = {
// address:address,
// output:"json",
// ak:"tXZNOtuhb3PJHwax0eb7DkgHP9Zh5QOb",
// }
// let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
// if (reuslt.status == 0) {
// return reuslt.result.location
// }
// return {error:true, errMsg:reuslt.message||JSON.stringify(reuslt) };
// }
export async function latLngInZJ(lat:number, lng:number) {
let point = {lat, lng};
/**射线法判断是否属于各个范围 命中一个就返回true*/
let isInside = false;
for (let k = 0; k < areaList.length; k++) {
let polygon:any = areaList[k];//单个区域
if(polygon[0].lat != polygon[polygon.length-1].lat || polygon[0].lng != polygon[polygon.length-1].lng) {
polygon.push(polygon[0]);
}
isInside = itemIsPointInPolygon(point, polygon);
if (isInside) break;
}
return isInside;
}
/**
* 获取经纬度
* @param address
* @param city
* @returns
*/
export async function getAddressLatAndLng(address, city, uscc) {
let param = {
address:address,
output:"json",
city,
ak:systemConfig.ak,
}
let reuslt:any = await get("https://api.map.baidu.com/geocoding/v3/", param);
if (reuslt.status == 0) {
return reuslt.result.location
}
console.log(uscc, "失败", JSON.stringify(reuslt));
return {error:true, errMsg:reuslt.message||JSON.stringify(reuslt) };
}
// //使用射线法
// export function isPointInPolygon(point) {
......
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