Commit 5fb13fdf by lixinming

no message

parent 889bcfb6
...@@ -14,6 +14,8 @@ import { changeAddToString } from "../../../tools/system"; ...@@ -14,6 +14,8 @@ import { changeAddToString } from "../../../tools/system";
import { outPutMonthTableList } from "../fuHuaQi/month"; import { outPutMonthTableList } from "../fuHuaQi/month";
import { addressIsInZJ, latLngInZJ } from "../../../tools/transCode"; import { addressIsInZJ, latLngInZJ } from "../../../tools/transCode";
import { outPutFinancingList } from "../enterprise/financing"; import { outPutFinancingList } from "../enterprise/financing";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import * as transCodeTools from "../../../tools/transCode"
function changeTimeStr(dataCycle) { function changeTimeStr(dataCycle) {
let dataCycleStr = `${dataCycle}`; let dataCycleStr = `${dataCycle}`;
...@@ -342,17 +344,18 @@ export async function monthData() { ...@@ -342,17 +344,18 @@ export async function monthData() {
let year = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getFullYear(); let year = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getFullYear();
let month = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getMonth() + 1; let month = new Date(changeTimeStr(dataMonthInfo.dataCycle)).getMonth() + 1;
// /**月度任务 */ /**月度任务 */
// let monthDataList = await outPutMonthTableList(0, year, month, OUTPUTTYPE.当前数据 ); let monthDataList = await outPutMonthTableList(0, year, month, OUTPUTTYPE.当前数据 );
// /**新入孵数据 */ /**新入孵数据 */
// let ruFuData = await dwEnterpriseDataList(); let ruFuData = await dwEnterpriseDataList();
// /**新注册新迁入 */ /**新注册新迁入 */
// let {qianRuList, createList} = await monthEnterpriseStats(); let {qianRuList, createList} = await monthEnterpriseStats();
// /** 融资*/ /** 融资*/
// let financingDataStr = moment(changeTimeStr(dataMonthInfo.dataCycle)).add(1, 'M').format("YYYY-MM-DD"); 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 financingList = await outPutFinancingList(`${financingDataStr} 00:00:00`, "", [], 1, OUTPUTTYPE.当前数据, false);
let {thisYearDataList, thisYearQianRuList} = await t1();
let t1Res = await t1();
let thisYearFinancingList = []; let thisYearFinancingList = [];
...@@ -361,40 +364,49 @@ export async function monthData() { ...@@ -361,40 +364,49 @@ export async function monthData() {
thisYearFinancingList = thisYearFinancingList.concat(thisYearFinancingList, itemList) thisYearFinancingList = thisYearFinancingList.concat(thisYearFinancingList, itemList)
} }
/**本年度累计 */
let { thisYearDataList, thisYearQianRuList } = await accumulate();
let currentEnterpriseList = await currentEnterprise();
return { return {
title:"月报数据下载", title:"月报数据下载",
dataList:[ dataList:[
// { {
// sheetName:"孵化器基本情况", sheetName:"孵化器基本情况",
// data:monthDataList data:monthDataList
// }, },
// { {
// sheetName:"新入孵数据情况源数据", sheetName:"新入孵数据情况源数据",
// data:ruFuData.dataList data:ruFuData.dataList
// }, },
// { {
// sheetName:"新注册", sheetName:"新注册",
// data:createList data:createList
// }, },
// { {
// sheetName:"新迁入", sheetName:"新迁入",
// data:qianRuList data:qianRuList
// }, },
// { {
// sheetName:"融资", sheetName:"融资",
// data:financingList data:financingList
// }, },
// { {
// sheetName:`${2024}年1-${7}月累计融资企业汇总统计`, sheetName:`${2025}年1-${10}月累计融资企业汇总统计`,
// data:thisYearFinancingList data:thisYearFinancingList
// }, },
{ {
sheetName:`${year}年1-${month}月累计新迁入企业汇总统计`, sheetName:`${year}年1-${month}月累计新迁入企业汇总统计`,
data:thisYearQianRuList, data:t1Res.thisYearQianRuList,
}, },
{ {
sheetName:`${year}年1-${month}月累计新注册企业汇总统计`, sheetName:`${year}年1-${month}月累计新注册企业汇总统计`,
data:thisYearDataList, data:t1Res.thisYearDataList,
},
{
sheetName: `截至${year}年1-${month}月在孵企业汇总统计`,
data: currentEnterpriseList,
} }
] ]
...@@ -687,3 +699,273 @@ async function t1() { ...@@ -687,3 +699,273 @@ async function t1() {
thisYearQianRuList.sort((a:any, b:any) => {return a[0]-b[0]}); thisYearQianRuList.sort((a:any, b:any) => {return a[0]-b[0]});
return {thisYearDataList, thisYearQianRuList} return {thisYearDataList, thisYearQianRuList}
} }
async function currentEnterprise() {
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 transCodeTools.latLngInZJ(parseFloat(lat), parseFloat(lng));
if (isInZJ) {
logonAddressSuccess = true;
}
}
}
if (logonAddressSuccess && zaiFuQiYeSuccess) {
enterpriseList.push(list[i]);
console.log(i);
}
}
let usccMap = await 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", "canBaoRenShu", "leasedArea"
]; //表头对应的字段顺序
let checkEnterpriseItemKey = Object.assign({ canBaoRenShu: { key: "参保人数" } }, EnterpriseListConfig);
let dataList = [TitleList];
let deleFHQMap = {
"91310115MA1K49J04M": 1,
"91310115MA1K3DT2XP": 1,
"91310000755007083Q": 1,
"91310115MA1K4JHY79": 1,
"91310115MACFNHYE5A": 1,
"91310000MA1K382LX1": 1,
"91310115MA1HA8LK83": 1,
"91310115342032571U": 1,
"91310115342086027G": 1,
"913100005997953048": 1,
};
for (let i = 0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
if (deleFHQMap[info.fuhuaqiUscc])
continue;
/**截取返回结果 */
let changeData:any = extractData(checkEnterpriseItemKey, 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);
}
return dataList;
}
/**
* 本年度累计
* @returns
*/
async function accumulate() {
/** */
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", "canBaoRenShu"
]; //表头对应的字段顺序
let checkEnterpriseItemKey = Object.assign({ canBaoRenShu: { key: "参保人数" } }, EnterpriseListConfig);
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(checkEnterpriseItemKey, 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
...@@ -94,7 +94,7 @@ function getDeclarationTime() { ...@@ -94,7 +94,7 @@ function getDeclarationTime() {
export async function enterpriseNumberChnageInfo(year) { export async function enterpriseNumberChnageInfo(year) {
let param = { let param = {
taskId:{"$regex":/^\d{18}2024\d{1,2}$/}, taskId:{"$regex":`/^\d{18}${year}\d{1,2}$/`},
draftLock:true, draftLock:true,
}; };
let dbList = await findEnterpriseList(param); let dbList = await findEnterpriseList(param);
...@@ -134,7 +134,7 @@ export async function valueAnalysisStatis(uscc) { ...@@ -134,7 +134,7 @@ export async function valueAnalysisStatis(uscc) {
let param = { uscc }; let param = { uscc };
let i18dbList = await findI18nRegisterListByParam(param); let i18dbList = await findI18nRegisterListByParam(param);
let partnersCount = i18dbList.length(); let partnersCount = i18dbList.length;
let cooperateCount = await getIcrCountByParam(param); let cooperateCount = await getIcrCountByParam(param);
let dbList = await findFinancingList({fuHuaQiUscc:uscc}); let dbList = await findFinancingList({fuHuaQiUscc:uscc});
......
...@@ -510,6 +510,7 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param) ...@@ -510,6 +510,7 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param)
await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param); await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param);
} }
await dataBaseInfo.save();
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' ); addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
......
...@@ -43,16 +43,16 @@ export function setRouter(httpServer) { ...@@ -43,16 +43,16 @@ export function setRouter(httpServer) {
httpServer.post('/admin/stats/guanweih/fuhuaqi/valueanalysis',checkGuanWeiHuiToken, asyncHandler(valueAnalysis));//价值分析 httpServer.post('/admin/stats/guanweih/fuhuaqi/valueanalysis',checkGuanWeiHuiToken, asyncHandler(valueAnalysis));//价值分析
//企业自画像 //企业自画像
httpServer.post('/admin/stats/enterprise/portrait',checkGuanWeiHuiToken, asyncHandler(enterprisportrait));//价值分析 // httpServer.post('/admin/stats/enterprise/portrait',checkGuanWeiHuiToken, asyncHandler(enterprisportrait));//价值分析
} }
async function enterprisportrait(req, res) { // async function enterprisportrait(req, res) {
// d
} // }
...@@ -87,11 +87,11 @@ async function enterpriseChange(req, res) { ...@@ -87,11 +87,11 @@ async function enterpriseChange(req, res) {
async function valueAnalysis(req, res) { async function valueAnalysis(req, res) {
let reqConf = { year : 'Number' }; let reqConf = { uscc : 'String' };
const NotMustHaveKeys = []; const NotMustHaveKeys = [];
let { year } = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await enterpriseBaseBiz.valueAnalysisStatis(year); let result = await enterpriseBaseBiz.valueAnalysisStatis(uscc);
res.success(result); res.success(result);
} }
......
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