Commit e3b2bb56 by lixinming

版本4封版

parent b271f11c
......@@ -19,6 +19,7 @@
"mysql": "^2.18.1",
"node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1",
"officegen": "^0.6.5",
"qs": "^6.11.0",
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
......
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,8 @@
<path>127.0.0.1</path>
<port>27017</port>
<w>1</w>
<dataBase>baseDB</dataBase>
<!-- <dataBase>baseDB</dataBase> -->
<dataBase>zjscTest</dataBase>
<wtimeoutMS>30000</wtimeoutMS>
</mongodb>
<!-- 小程序的secret 和 appid -->
......
......@@ -72,7 +72,12 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
/** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */
if (!info.taskId || info.enterpriseIsInPut) changeData.isCreate = "底库数据";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state);
......@@ -139,7 +144,7 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
* @param isNaturalPersonHolding 自然人控股
* @returns 二维数组
*/
export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, state:number, createTime:number, name:string, type:number) {
export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, state:number, createTime:number, name:string, type:number, isFuHuaQi:boolean) {
/**拼接查询条件 */
let selectParam:any = {};
if (type == configEnum.OUTPUTTYPE.当前数据) {
......@@ -154,6 +159,8 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
if (state != configEnum.INSIDESTATE.全部) {
if (state == configEnum.INSIDESTATE.实体孵化) selectParam.state = configEnum.FUHUASTATE.实体孵化;
if (state == configEnum.INSIDESTATE.虚拟孵化) selectParam.state = configEnum.FUHUASTATE.虚拟孵化;
} else {
selectParam.state = {"$ne":configEnum.FUHUASTATE.迁出};
}
if (createTime) {
let startT = createTime;
......@@ -165,6 +172,9 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
}
}
selectParam["$or"] = [{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}] ; //未提交的企业不能查看
if (isFuHuaQi) {
selectParam.fuHuaQiUscc = fuHuaQiUscc;
}
/**查询内容 */
let usccMap = await fuHuaQiData.findAllFuHuaQiOperationNameMap();//用于将孵化器uscc变成孵化器名称
......@@ -193,8 +203,12 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
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 = "-";
......@@ -312,7 +326,7 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind
if (isNaturalPersonHolding == 2 || isNaturalPersonHolding == 3) {
selectParam.isNaturalPersonHolding = isNaturalPersonHolding == 2 ? true : false;
}
selectParam.draftLock = true; //未提交的企业不能查看
// selectParam.draftLock = true; //未提交的企业不能查看
/**需要用到的查询数据 */
let usccMap = await fuHuaQiData.findAllFuHuaQiOperationNameMap();//用于将孵化器uscc变成孵化器名称
......@@ -359,7 +373,7 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind
* @param type 页面
* @returns
*/
export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, type:number) {
export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, type:number, isFuHuaQi:boolean) {
let fileName = "全部";
/**拼接查询条件 */
let selectParam:any = {state:configEnum.FUHUASTATE.迁出};
......@@ -378,6 +392,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
selectParam.draftLock = true; //未提交的企业不能查看
fileName = "当前数据";
}
if (isFuHuaQi) selectParam.fuHuaQiUscc = fuHuaQiUscc;
/**需要用到的查询数据 */
......@@ -397,7 +412,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
let changeData:any = extractData(splitResultConfig.EnterpriseMoveOutListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.fuHuaQiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**将枚举值转为字符 */
......@@ -434,7 +449,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
* @param quarter 季度
* @param page 页面
*/
export async function getBusinessDataList(name:string, year:number, quarter:number, page:number) {
export async function getBusinessDataList(name:string, year:number, quarter:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
......@@ -442,6 +457,7 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb
selectParam.year = year;
if (quarter) selectParam.quarter = quarter;
}
if (fuHuaQiUscc) selectParam.fuHuaQiUscc = fuHuaQiUscc;
let dataBaseList = await businessData.findBusinessDataByParamsToPage(selectParam, (page-1)*10);
let dataCount = await businessData.findBusinessDataCountByParams(selectParam);
......@@ -466,7 +482,7 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb
* @param year 年份
* @param quarter 季度
*/
export async function outPutBusinessDataList(name:string, year:number, quarter:number, type:number) {
export async function outPutBusinessDataList(name:string, year:number, quarter:number, type:number, fuHuaQiUscc) {
let fileName = "全部";
/**拼接查询条件 */
......@@ -483,6 +499,8 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
fileName = "当前数据";
}
if (fuHuaQiUscc) selectParam.fuHuaQiUscc = fuHuaQiUscc;
let dataBaseList = await businessData.findBusinessDataByParams(selectParam);
let keyList = [ "name", "year", "quarter", "BI", "RD", "TXP"];
......@@ -515,7 +533,7 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
* @param type 人才类型
* @param page 页面
*/
export async function getInitialTeamList(name:string, member:string, type:number, page:number) {
export async function getInitialTeamList(name:string, member:string, type:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
if (member) selectParam.memberName = member;
......@@ -523,6 +541,15 @@ export async function getInitialTeamList(name:string, member:string, type:number
verificationEnumTools.eccEnumValue("企业创始团队列表", "type", configEnum.ENTERPRISETEAM, type );
selectParam.type = type;
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await enterpriseData.findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await initialTeamData.findEnterpriseInitialTeamsByParamToPage(selectParam, (page-1)*10 );
let count = await initialTeamData.findEnterpriseInitialTeamsCountByParamToPage(selectParam);
......@@ -548,7 +575,7 @@ export async function getInitialTeamList(name:string, member:string, type:number
* @param type
* @returns
*/
export async function outPutInitialTeamList(name:string, member:string, memberType:number, type:number) {
export async function outPutInitialTeamList(name:string, member:string, memberType:number, type:number, fuHuaQiUscc) {
let fileName = "全部";
/**拼接查询条件 */
let selectParam:any = {};
......@@ -562,6 +589,15 @@ export async function outPutInitialTeamList(name:string, member:string, memberTy
fileName = "当前数据";
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await enterpriseData.findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await initialTeamData.findEnterpriseInitialTeamsByParam(selectParam );
......
......@@ -13,6 +13,7 @@ import { changeEnumValue } from "../../../util/verificationEnum";
import { extractData } from "../../../util/piecemeal";
import * as financingInfoData from "../../../data/enterprise/financingInfo";
import moment = require("moment");
import { findEnterpriseList } from "../../../data/enterprise/enterprise";
/**
......@@ -75,7 +76,7 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
* @param type 页数
* @returns
*/
export async function outPutFinancingList(monthData:string, fuHuaQiName:string, industry, fuHuaQiInvestment:number, type:number) {
export async function outPutFinancingList(monthData:string, fuHuaQiName:string, industry, fuHuaQiInvestment:number, type:number, isFuHuaQi:boolean) {
let selectParam:any = {};
if (type == configEnum.OUTPUTTYPE.当前数据 ) {
/**如果选择当前数据 则拼接查询条件 */
......@@ -95,6 +96,11 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string,
selectParam.fuHuaQiInvestment = fuHuaQiInvestment == 2 ? true : false;
}
}
if (isFuHuaQi) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByName(fuHuaQiName);
if(!fuHuaQiInfo) throw new BizError(ERRORENUM.未找到数据, `管理后台查询融资列表时 ${fuHuaQiName}不存在`);
selectParam.fuHuaQiUscc = fuHuaQiInfo.uscc;
}
/**主要查询 */
let dataBaseList = await financingData.findFinancingList(selectParam );
......@@ -138,7 +144,7 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string,
* @param fuHuaQiInvestment 孵化器是否参与投资
* @param page 页面
*/
export async function getEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, page:number) {
export async function getEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
......@@ -146,6 +152,15 @@ export async function getEnterpriseFinancing(name:string, financingRounds:number
if (fuHuaQiInvestment == 2 || fuHuaQiInvestment == 3) {
selectParam.fuHuaQiInvestment = fuHuaQiInvestment == 2 ? true : false;
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await financingInfoData.selectFinancingListByParamsToPage(selectParam, page);
let count = await financingInfoData.selectFinancingCountByParams(selectParam);
......@@ -171,7 +186,7 @@ export async function getEnterpriseFinancing(name:string, financingRounds:number
* @param fuHuaQiInvestment
* @param type
*/
export async function outPutEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, type:number) {
export async function outPutEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, type:number, fuHuaQiUscc) {
let selectParam:any = {};
let fileName = "全部";
if (type == configEnum.OUTPUTTYPE.当前数据 ) {
......@@ -184,6 +199,16 @@ export async function outPutEnterpriseFinancing(name:string, financingRounds:num
fileName = "当前数据";
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await financingInfoData.selectFinancingListByParams(selectParam);
let keyList = [
......
......@@ -403,7 +403,6 @@ export async function fuHuaQiScore(time:number, name:string, page:number) {
for (let key in nameMap) {
if (nameMap[key] == name) param.uscc = key;
}
}
let rankList = [];
......@@ -420,8 +419,8 @@ export async function fuHuaQiScore(time:number, name:string, page:number) {
} else {
let endT = moment(time).endOf('month').valueOf();
let datList = await scoreLogData.getUptotheminuteScore(time, endT);
param.timeMs = {"$lt":moment(time).endOf('month').valueOf() }
let datList = await scoreLogData.getUptotheminuteScore(param);
datList.forEach(info => {
let name = nameMap[info._id]
......@@ -467,10 +466,9 @@ export async function outPutFuHuaQiScore(time:number) {
} else {
let endT = moment(time).endOf('month').valueOf();
let datList = await scoreLogData.getUptotheminuteScore(time, endT);
param.timeMs = {"$lt":moment(time).endOf('month').valueOf() }
let datList = await scoreLogData.getUptotheminuteScore(param);
outPutName = `${new Date(time).getFullYear()}${new Date(time).getMonth() + 1}月`;
rankList
datList.forEach(info => {
let name = nameMap[info._id]
if (!name) return;
......@@ -510,4 +508,4 @@ export async function updateFuHuaQiData(uscc:string, phone:string, name:string)
await fuHuaQiInfo.save();
return {isSuccess:true};
}
\ No newline at end of file
}
......@@ -4,13 +4,14 @@
*/
import moment = require("moment");
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE } from "../../../../config/enum";
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, STATEENUM, TASKTYPEENUM } from "../../../../config/enum";
import { ENTERPRISENODEENUM, FUHUAQINODEENUM, POINTTYPEENUM } from "../../../../config/pointConfig";
import { findEnterpriseCount, findEnterpriseList } from "../../../../data/enterprise/enterprise";
import { findMonthTableList } from "../../../../data/fuHuaQi/monthTask/monthTable";
import { getPointDataByParam } from "../../../point";
import { findBusinessDataByParam } from "../../../../data/fuHuaQi/quarterTask/businessData";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { findTaskListByParam } from "../../../../data/fuHuaQi/monthTask/task";
/**
......@@ -43,9 +44,11 @@ export async function fuHuaQiOperateStats(uscc:string, year:number) {
czlbhqs.dataList.push(occupancyRate);
});
let zfqyqs = await getFuHuaQiOwnEnterpriseCountStats(uscc, year);
// let zfqyqs = await getFuHuaQiOwnEnterpriseCountStats(uscc, year);
let zfqyqs = await newGetFuHuaQiEnterpriseCountStats(uscc, year); //todo 测试代码
let byqyslbhqs = await getFuHuaQiOwnEnterpriseGraduateCountStats(uscc, year);
// let byqyslbhqs = await getFuHuaQiOwnEnterpriseGraduateCountStats(uscc, year);
let byqyslbhqs = await newGetFuHuaQiEnterpriseGraduateCountStats(uscc, year);//todo 测试代码
let enterpriseIndustryList = await getEnterpriseIndustry(uscc, year);
......@@ -130,8 +133,107 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) {
return {xnData, stData, monthData}
}
// async function newGetFuHuaQiEnterpriseCountStats(uscc:string, year:number) {}
async function newGetFuHuaQiEnterpriseCountStats(uscc:string, year:number) {
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
fuHuaQiUscc: uscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]//未提交的企业不能查看
};
let enterpriseTotal = await findEnterpriseCount(selectParam); //非迁出企业总数
let xuniSelectParam = {
state : FUHUASTATE.虚拟孵化,
fuHuaQiUscc : uscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]//未提交的企业不能查看
};
let virtualEnterpriseNum = await findEnterpriseCount(xuniSelectParam); //虚拟孵化
let thisMonth = new Date().getMonth() + 1;
/**获取迁出企业 */
let outList = await findEnterpriseList({fuHuaQiUscc:uscc, state:FUHUASTATE.迁出 });
let inOrOutMap = {};
outList.forEach(info => {
let {moveOutTime} = info;
let month = new Date(moveOutTime).getMonth() + 1;
if (!inOrOutMap[month]) inOrOutMap[month] = {inNum:0, outNum:0};
inOrOutMap[month].outNum += 1;
});
/**获取入孵任务 */
let subTasklist = await findTaskListByParam({fuHuaQiUscc:uscc, isSubmit:true, type:TASKTYPEENUM.新注册或迁入企业登记, year});
subTasklist.forEach(info => {
let {submitCount, month} = info;
if (!inOrOutMap[month]) inOrOutMap[month] = {inNum:0, outNum:0};
inOrOutMap[month].inNum = submitCount || 0;
});
let dataList = [];
let lastNumber = enterpriseTotal;
for (let i = 12; i >=1; i--) {
let st = 0;
let xn = 0;
if (i>=thisMonth) {
continue;
dataList.push({ st, xn, month:i });
continue;
}
let {outNum, inNum} = inOrOutMap[i] || {outNum:0, inNum:0};
lastNumber = lastNumber + outNum - inNum;
if (lastNumber <= 0) lastNumber = 0;
dataList.push({
st:lastNumber,
month:i,
xn:i ==thisMonth-1 ? virtualEnterpriseNum : 0
});
}
dataList.sort( (a, b) => {return a.month - b.month})
let xnData = [];
let stData = [];
let monthData = [];
dataList.forEach(info => {
xnData.push(info.xn);
stData.push(info.st);
monthData.push(info.month);
});
return {xnData, stData, monthData};
}
async function newGetFuHuaQiEnterpriseGraduateCountStats(uscc:string, year:number) {
let thisMonth = new Date().getMonth() + 1;
/**获取迁出企业 */
let outList = await findEnterpriseList({fuHuaQiUscc:uscc, state:FUHUASTATE.迁出 });
let outMap = {};
outList.forEach(info => {
let {moveOutTime, moveOutType} = info;
let month = new Date(moveOutTime).getMonth() + 1;
if (!outMap[month]) outMap[month] = 0;
if (moveOutType == MOVEOUTTYPE.毕业迁出 ) outMap[month] += 1;
});
let dataList = [];
for (let i = 12; i >=1; i--) {
if (i>=thisMonth) continue;
dataList.push({
nby:0,
by:outMap[i] || 0,
month:i
});
}
dataList.sort( (a, b) => {return a.month - b.month});
let monthData = [];
let graduateData = [];
let nbyData = [];
dataList.forEach(info => {
nbyData.push(info.nby);
graduateData.push(info.by);
monthData.push(info.month);
});
return {monthData, graduateData, nbyData};
}
/**
* 毕业企业数量变化趋势
......
......@@ -9,6 +9,8 @@ import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nR
import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr";
import { findFinancingList } from "../../../../data/fuHuaQi/monthTask/financing";
import { findBusinessDataByParam } from "../../../../data/fuHuaQi/quarterTask/businessData";
import { findOneFuHuaQiMonthTaskData } from "../../../../data/fuHuaQi/monthTask/task";
import { TASKTYPEENUM } from "../../../../config/enum";
export async function getValueStats(uscc) {
const ThisYear = new Date().getFullYear();
......@@ -31,7 +33,7 @@ export async function getValueStats(uscc) {
{year:declarationYear, declarationQuarter:{"$gte":declarationQuarter+1}}
];
for (let i = 4; i >= (declarationQuarter+1); i--) {
let key = `${declarationYear}-Q${i}`;
let key = `${declarationYear-1}-Q${i}`;
queryDataMap[key] = {key, TP:0, member:0,index:4-i};
}
for (let i =1; i < (declarationQuarter+1); i++) {
......@@ -42,11 +44,20 @@ export async function getValueStats(uscc) {
let businessData = await findBusinessDataByParam(quarterTaskParam);
businessData.forEach(info => {
let {quarter,year, TP} = info;
queryDataMap[`${year}-Q${quarter}`].TP = TP;
let {quarter,year, TP, draftLock} = info;
queryDataMap[`${year}-Q${quarter}`].TP = draftLock ? TP : '未填报';
});
let teamData = await findTeamDataByParams(quarterTaskParam);
//获取未填报
let notSubmitMap = {};
teamData.forEach(info => {
let {year, quarter, isSubmit, fhqIsSubmit} = info;
if (!notSubmitMap[`${year}-Q${quarter}`]) notSubmitMap[`${year}-Q${quarter}`] = -1;
if ((isSubmit == true || fhqIsSubmit == true) && notSubmitMap[`${year}-Q${quarter}`] == -1 ) {
notSubmitMap[`${year}-Q${quarter}`] = 1;
}
});
teamData.forEach(info => {
let { year, quarter } = info;
let quarterDataCount = 0;
......@@ -65,7 +76,8 @@ export async function getValueStats(uscc) {
quaryDataRank.forEach((info:any) => {
queryList.push(info.key);
tpList.push( info.TP );
jyrsqsList.push( info.member );
if (notSubmitMap[info.key] == -1) jyrsqsList.push( '未填报' );
else jyrsqsList.push( info.member );
});
/**融资企业数量趋势 */
......@@ -75,28 +87,33 @@ export async function getValueStats(uscc) {
let financingMap = {};//结构 {"YYYY-MM":{distinctKey:0,} }
for (let i = 1; i <= 6; i++) {
let key = moment().subtract(i, 'months').format("YYYY-MM");
let itemDate = moment().subtract(i, 'months');
let key = itemDate.format("YYYY-MM");
let selectMonth = itemDate.month();
let selectYear = itemDate.year();
let {isSubmit} = await findOneFuHuaQiMonthTaskData({fuHuaQiUscc:uscc, type:TASKTYPEENUM.融资企业填报,month:selectMonth, year:selectYear});
let ms = moment().subtract(i, 'months').valueOf();
financingMap[key]={ms, key, data:{}};
financingMap[key]={ms, key, data:{}, fuHuaQiSubmit:isSubmit==true};
}
financingData.forEach(info => {
let { uscc, investmentInstitutionsName, timeToObtainInvestment } = info;
let { uscc, investmentInstitutionsName, timeToObtainInvestment, draftLock } = info;
let distinctKey = uscc + investmentInstitutionsName + timeToObtainInvestment;
let month = moment(timeToObtainInvestment).format("YYYY-MM");
if (!financingMap[month]) console.log("数据异常 不符合范围之内的值 检查点1001");
financingMap[month].data[distinctKey] = 1;
if (financingMap[month]) financingMap[month].data[distinctKey] = 1;
});
let financingRankList = Object.values(financingMap).sort((a:any, b:any) => {return a.ms - b.ms});
let rzqyslqs = [];
financingRankList.forEach((info:any) => {
let {data, ms, key} = info;
let count = Object.keys(data || {}).length;
let {data, ms, key, fuHuaQiSubmit} = info;
let count = fuHuaQiSubmit ? Object.keys(data || {}).length : "未填报";
rzqyslqs.push({
month:key,
count
});
});
//识别 rzqyslqs 中的未填报数据
return { jyrsqs:{jyrsqsList, queryList}, i18nCount, icrCount, rzqyslqs, tpInfo:{tpList, queryList} };
}
......
......@@ -9,34 +9,56 @@ import { ERRORENUM } from "../../config/errorEnum";
import { findGuanWeiHuiUserInfoByLoginId } from "../../data/guanWeiHui/guanweihui";
import { BizError } from "../../util/bizError";
import { getPwdMd5, getToken } from "../../tools/system";
import { findFuHuaQiByUSCC } from "../../data/fuHuaQi/fuhuaqi";
const md5 = require("md5");
/**
* 登录
* 4.0版本更新:加入孵化器角色登录
* @param loginId 信用代码
* @param pwd 密码
* @returns resultUserInfo:{uscc, name} 登录后的信息
*/
export async function login(loginId:string, pwd:string) {
let userInfo = await findGuanWeiHuiUserInfoByLoginId(loginId);
if(!userInfo) throw new BizError(ERRORENUM.账号不存在, loginId);
let userIsNull = false;
let isFuHuaQi = false;
if(!userInfo || !userInfo.loginId) {
userInfo = await findFuHuaQiByUSCC(loginId);
if (!userInfo || !userInfo.uscc) userIsNull = true;
isFuHuaQi = true;
pwd = md5(pwd);
}
if (userIsNull) throw new BizError(ERRORENUM.账号不存在, loginId);
let checkPwd = getPwdMd5(loginId, pwd);
if (userInfo.pwd != checkPwd) throw new BizError(ERRORENUM.密码错误);
const Token = getToken(loginId);
let token = getToken(loginId);
let resultUserInfo = {
loginId: userInfo.loginId,
loginId: "",
name: userInfo.name,
token:Token
token:"",
isFuHuaQi
};
userInfo.token = Token;
userInfo.tokenMs = new Date().valueOf();
if (isFuHuaQi) {
//孵化器登录管理后台
token = token +'ad'
resultUserInfo.loginId = userInfo.uscc;
resultUserInfo.token = token;
userInfo.adminToken = token;
} else {
//管委会登录管理后台
resultUserInfo.loginId = userInfo.loginId;
resultUserInfo.token = token;
userInfo.token = token;
userInfo.tokenMs = new Date().valueOf();
}
await userInfo.save();
return resultUserInfo;
}
\ No newline at end of file
}
export enum TARGET {
孵化器数量= 1,
孵化器孵化领域分布,
企业融资数量,
行业领域分布,
企业融资金额,
融资最多企业金额和占比,
上市企业数量,
上市企业分布,
融资行业领域占比,
融资事件最多的领域,
孵化器具备投资功能的数量和占比,
孵化器投融资金额,
融资企业的融资轮次分布,
孵化器就业人数,
在孵企业就业人数,
国际一流人才与国内一流人才占比,
布局新模式孵化器占比,
布局海外孵化器基地数量,
国际化合作数量,
搭建专业技术平台的数量,
搭建专业技术平台的占比,
创投基金数量,
创业创新方向各类型占比,
在孵企业营收总金额,
在孵企业营收季度趋势,
在孵企业纳税金额,
在孵企业纳税季度趋势,
在孵企业研发投入金额,
在孵企业研发投入季度趋势,
在孵企业创新方向占比,
孵化器营收总金额,
孵化器营收季度趋势,
孵化器纳税金额,
孵化器纳税季度趋势,
企业资质占比,
企业专利占比,
创业导师数量,
创业导师专业分布,
创业导师领域分布,
企业总数
}
\ No newline at end of file
/**
* ai聊天模块
*/
const request = require('request')
const AK = "SjRG4fWy8ByvLSmpBX3X7zyl"
const SK = "vA1jj6TbQoY4bXqzgZBEewNoi1eZAFoS"
/**
* 使用 AK,SK 生成鉴权签名(Access Token)
* @return string 鉴权签名信息(Access Token)
*/
function getAccessToken() {
let options = {
'method': 'POST',
'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK,
}
return new Promise((resolve, reject) => {
request(options, (error, response) => {
if (error) { reject(error) }
else { resolve(JSON.parse(response.body).access_token) }
})
})
}
export async function checkMsg(msg:string, preConditions?) {
if (!preConditions) preConditions = [];
let messages = [];
preConditions.forEach(str => {
messages.push({"role":"user", "content":str});
messages.push({"role":"assistant", "content":"好的"});
});
messages.push({"role":"user", "content":msg});
let access_token = await getAccessToken();
var options = {
'method': 'POST',
'url': 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=' + access_token,
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({messages})
};
return new Promise((resolve, reject) => {
request(options, function (error, response) {
if (error) throw new Error(error);
if (error) {
reject(error);
}
else {
resolve(JSON.parse(response.body).result);
}
});
})
}
\ No newline at end of file
/**
* 用于报告生成
*/
import { ERRORENUM } from "../../config/errorEnum";
import { findFuHuaQiList } from "../../data/fuHuaQi/fuhuaqi";
import { BizError } from "../../util/bizError";
import { TARGET } from "./enum";
import { checkMsg } from "./gpt";
import { getIndicationRate, getIndicationValueStr, getIndicationValue } from "./indicatorPool";
const officegen = require('officegen');
const fs = require('fs');
const path = require('path');
/**提问大纲 */
let outline = [];
export async function initOutline() {
outline = [
{ title:'概述', msg:"写一段话,概述孵化器的作用与意义来表达孵化器的重要性", removeParagraph:true },
{ title:'孵化器分析', msg:"请根据已知条件,从经济学的角度分析孵化器的运行情况,要求2000个字。", context:[fuHuaQiCombinationMessage()]},
{ title:'企业分析', msg:"请根据已知条件,从经济学的角度分析企业的运行情况, 要求2000个字。", context:[enterpriseCombinationMessage()]},
{ title:'改进与规划', msg:"请根据已知条件,从经济学的角度提出孵化器的不足和改进方向。", context:[fuHuaQiCombinationMessage(), enterpriseCombinationMessage()]}
];
}
/**
* 生成报告
* @param token
*/
export async function generateReport() {
return {fileName:"2023年采集数据分析.docx", size:'17kb', url:'/doc/2023年采集数据分析.docx'};
let docx = officegen('docx');
let pObj = docx.createP();
/**绑定事件 */
docx.on('finalize', function(written) {
console.log(
'报告已生成'
)
});
docx.on('error', function(err) {
console.log(err)
});
/**生成大标题 */
pObj.addText(`${new Date().getFullYear()}孵化器运行分析报告\n`,{ font_size:18, bold:true });
let index = 1;
for (let key in outline) {
let {title, msg, context, removeParagraph} = outline[key];
/**组合小标题 */
pObj.addText(`${index}${title}\n`, { font_size:16, bold:true });
context = context || [];
let chartStr:any = await checkMsg(msg, context);
if (removeParagraph) {
let rmvList = chartStr.split('\n');
let rmvStr = ``;
rmvList.forEach(itemStr => {rmvStr += itemStr});
chartStr = rmvStr;
}
pObj.addText(' '+chartStr+`\n`, { font_size:14 });
index ++;
}
let out = fs.createWriteStream( path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'test.docx' ));
docx.generate(out);
return {isSuccess:true};
}
export async function zjAiChart(token:string) {
let str = fuHuaQiCombinationMessage();
let enterpriseStr = enterpriseCombinationMessage();
let preConditions = [];
preConditions.push(str);
preConditions.push(enterpriseStr);
let resultMsg:any = await checkMsg(token, preConditions);
return {message:resultMsg};
}
export async function aiChart(token:string) {
if (!token) throw new BizError(ERRORENUM.请输入聊天内容);
let resultMsg:any = await checkMsg(token, []);
return {message:resultMsg};
}
/**
* 组合数据前置条件
* 孵化器
*/
function fuHuaQiCombinationMessage() {
const Unit = "家";
let fhqCount = getIndicationValueStr(TARGET.孵化器数量, Unit);
let str = `已知:上海张江共计${fhqCount}孵化器,`;
str += `其中${getIndicationValueStr(TARGET.孵化器孵化领域分布, Unit)}${fhqCount}孵化器中${getIndicationRate(TARGET.布局新模式孵化器占比)}。`;
str += `共计${getIndicationValueStr(TARGET.创投基金数量, Unit)}孵化器成立创投基金。`;
let rate = Math.ceil(getIndicationValue(TARGET.孵化器具备投资功能的数量和占比)/getIndicationValue(TARGET.孵化器数量)*10000)/100;
str +=`${getIndicationValueStr(TARGET.孵化器具备投资功能的数量和占比, Unit)}孵化器具备投资功能,占比${rate}%,共计投融资${getIndicationValueStr(TARGET.孵化器投融资金额, "万元")}。`
str +=`${getIndicationValueStr(TARGET.搭建专业技术平台的数量, Unit)}孵化器搭建专业技术平台,占比${getIndicationValueStr(TARGET.搭建专业技术平台的占比)}。`;
str += `${fhqCount}家孵化器中,共有${getIndicationValue(TARGET.国际化合作数量)}个国际化合作。`;
str += `${getIndicationValue(TARGET.创业导师数量)}个创业导师,在这${getIndicationValue(TARGET.创业导师数量)}个创业导师中,${getIndicationValueStr(TARGET.创业导师专业分布, "个")}。`
str += `所有孵化器从业人员中:${getIndicationRate(TARGET.国际一流人才与国内一流人才占比)}。`;
str +=`本年度孵化器总营收${getIndicationValue(TARGET.孵化器营收总金额)}元,其中${getIndicationValueStr(TARGET.孵化器营收季度趋势, "元")}。`;
str +=`本年度孵化器纳税共计${getIndicationValue(TARGET.孵化器纳税金额)}元,其中${getIndicationValueStr(TARGET.孵化器纳税季度趋势, "元")}。`;
return str;
}
function enterpriseCombinationMessage() {
let str = `已知:孵化器已采集的${getIndicationValue(TARGET.企业总数)}家企业数据情况如下,行业领域分布:${getIndicationRate(TARGET.行业领域分布)}。`;
str += `创业创新方向各类型分布:${getIndicationRate(TARGET.创业创新方向各类型占比)}。`;
str += `在统计范围之内共有${getIndicationValueStr(TARGET.企业融资数量, '次')}融资行为,共计融资${getIndicationValueStr(TARGET.企业融资金额, '万元')},`;
str += `其中融资轮次分布情况:${getIndicationRate(TARGET.融资企业的融资轮次分布)},`;
let maxIn = getIndicationValue(TARGET.融资事件最多的领域);
str += `融资行业领域占比${getIndicationRate(TARGET.融资行业领域占比)},其中${maxIn["领域"]}领域融资事件最多,有${maxIn["次数"]}次。`;
str += `其中融资最多企业金额和占比${getIndicationValue(TARGET.融资最多企业金额和占比)}。`;
str += `在统计范围内共有上市企业${getIndicationValue(TARGET.上市企业数量)}家。`;
str += `在统计范围内在孵企业的营收总额${getIndicationValue(TARGET.在孵企业营收总金额)}元,其中${getIndicationValueStr(TARGET.在孵企业营收季度趋势, "元")},`;
str += `在孵企业纳税总额${getIndicationValue(TARGET.在孵企业纳税金额)}元,其中${getIndicationValueStr(TARGET.在孵企业纳税季度趋势, "元")},`;
str += `在孵企业纳税总额${getIndicationValue(TARGET.在孵企业研发投入金额)}元,其中${getIndicationValueStr(TARGET.在孵企业研发投入季度趋势, "元")}。`;
str += `在统计范围内企业资质情况${getIndicationRate(TARGET.企业资质占比)}。`;
str += `在统计范围内企业专利情况${getIndicationRate(TARGET.企业专利占比)}。`;
return str;
}
......@@ -17,7 +17,7 @@ import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import { findBusinessDataByYear } from "../../../data/enterprise/quarterTask/businessdata";
import { findReplenishBusinessDataByYear } from "../../../data/enterprise/replenish";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -113,8 +113,8 @@ export async function updateEnterpriseBaseInfo(uscc:string, param) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.基本信息_经营地址, enterpriseInfo.operatingAddress, param.operatingAddress, enterpriseInfo.fuHuaQiUscc);
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.基本信息_行业领域, enterpriseInfo.industry, param.industry, enterpriseInfo.fuHuaQiUscc);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.基本信息_经营地址, enterpriseInfo.operatingAddress, param.operatingAddress, enterpriseInfo.fuHuaQiUscc);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.基本信息_行业领域, enterpriseInfo.industry, param.industry, enterpriseInfo.fuHuaQiUscc);
/**修改字段 */
let changeList = checkChange(param, enterpriseInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`);
......
......@@ -15,7 +15,7 @@ import { BizError } from "../../../util/bizError";
import { checkChange, extractData } from "../../../util/piecemeal";
import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
/**
* 修改创始团队信息
......@@ -90,7 +90,7 @@ export async function updateInitialTeamInfo(uscc:string, firstClassTalent:number
/**添加埋点 */
let oldPointData = {haveFirstClassTalent:oldHaveFirstClassTalent, teams:enterpriseInitialTeamList || [] };
let newPointData = {haveFirstClassTalent:firstClassTalent, teams};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.创始团队, oldPointData, newPointData);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.创始团队, oldPointData, newPointData);
return {isSuccess:true};
}
......
......@@ -5,7 +5,7 @@
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
/**
* 校验参数是否为空
......@@ -37,13 +37,13 @@ export async function updateIntellectualProperty(uscc:string, alienPatent:number
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (enterpriseInfo.alienPatent != alienPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_海外专利, enterpriseInfo.alienPatent || 0, alienPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_海外专利, enterpriseInfo.alienPatent || 0, alienPatent);
}
if (enterpriseInfo.classIPatent != classIPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_一类专利, enterpriseInfo.classIPatent || 0, classIPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_一类专利, enterpriseInfo.classIPatent || 0, classIPatent);
}
if (enterpriseInfo.secondClassPatent != secondClassPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_二类专利, enterpriseInfo.secondClassPatent || 0, secondClassPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_二类专利, enterpriseInfo.secondClassPatent || 0, secondClassPatent);
}
enterpriseInfo.intellectualProperty = {alienPatent, classIPatent, secondClassPatent};
......
......@@ -10,7 +10,7 @@ import { BizError } from "../../../util/bizError";
import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -60,19 +60,19 @@ export async function updateQualification(uscc:string, param) {
let oldHighTechData = {highTechMs:oldQualification.highTechMs, isHighTech:oldQualification.isHighTech};
let newHighTechData = {highTechMs:param.highTechMs, isHighTech:param.isHighTech};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_高新技术,oldHighTechData, newHighTechData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_高新技术,oldHighTechData, newHighTechData );
let oldIsZjtxData = {isZjtx:oldQualification.isZjtx, zjtxMs:oldQualification.zjtxMs};
let newIsZjtxData = {isZjtx:param.isZjtx, zjtxMs:param.zjtxMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_专精特新,oldIsZjtxData, newIsZjtxData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_专精特新,oldIsZjtxData, newIsZjtxData );
let oldIsXjrpyData = {isXjrpy:oldQualification.isXjrpy, xjrpyMs:oldQualification.xjrpyMs};
let newIsXjrpyData = {isXjrpy:param.isXjrpy, xjrpyMs:param.xjrpyMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_小巨人培育,oldIsXjrpyData, newIsXjrpyData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_小巨人培育,oldIsXjrpyData, newIsXjrpyData );
let oldIsXjrData = {isXjr:oldQualification.isXjr, xjrMs:oldQualification.xjrMs};
let newIsXjrData = {isXjr:param.isXjr, xjrMs:param.xjrMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_小巨人,oldIsXjrData, newIsXjrData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_小巨人,oldIsXjrData, newIsXjrData );
let oldMarketData = {
beOnTheMarket:oldQualification.beOnTheMarket ? JSON.stringify(oldQualification.beOnTheMarket) : '[]',
......@@ -82,7 +82,7 @@ export async function updateQualification(uscc:string, param) {
beOnTheMarket:param.beOnTheMarket ? JSON.stringify(param.beOnTheMarket) : '[]',
isBeOnTheMarket:param.isBeOnTheMarket
};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_上市情况,oldMarketData, newMarketData );
addEnterprisePoint(uscc, ENTERPRISENODEENUM.企业资质_上市情况,oldMarketData, newMarketData );
enterpriseInfo.qualification = JSON.parse(JSON.stringify(param) );
......
......@@ -4,7 +4,7 @@
import moment = require("moment");
import * as informationDat from "../../data/guanWeiHui/information";
import { addPoint } from "../point";
import { addEnterprisePoint } from "../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../config/pointConfig";
......@@ -84,7 +84,7 @@ export async function getOnceinformation(uscc:string, id:string) {
createTime:moment(dateBaseData.createTimeMs).format("MM/DD")
};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.政策速递, id);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.政策速递, id);
return {infomation:reuslt};
}
......
......@@ -10,7 +10,7 @@ import { findBusinessDataByUsccAndYear } from "../../../data/enterprise/quarterT
import { eccEnumValue } from "../../../util/verificationEnum";
import { BUSINESSDATATYPE } from "../../../config/enum";
import * as replenishData from "../../../data/enterprise/replenish";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -148,7 +148,7 @@ export async function replenishBusinessData(uscc:string, type:number, data) {
if (type == BUSINESSDATATYPE.研发投入) pointId = ENTERPRISENODEENUM.经营数据补录_研发投入;
if (type == BUSINESSDATATYPE.纳税) pointId = ENTERPRISENODEENUM.经营数据补录_纳税;
if (type == BUSINESSDATATYPE.营业收入) pointId = ENTERPRISENODEENUM.经营数据补录_营业收入;
addPoint(POINTTYPEENUM.企业, uscc, pointId, checkMap);
addEnterprisePoint( uscc, pointId, checkMap);
}
return {isSuccess:true};
......
......@@ -114,6 +114,7 @@ export async function moveInEnterprise(uscc:string, param) {
dataBaseInfo.moveOutCause = [];
dataBaseInfo.taskId = TaskId;
dataBaseInfo.moveOutTime = 0;
dataBaseInfo.draftLock = false;
for (let key in eccFormParamConfig.MoveInEnterpriseParamConfig) {
dataBaseInfo[key] = param[key];
}
......
......@@ -15,7 +15,7 @@ import * as verificationEnumTools from "../../../util/verificationEnum";
import { checkChange, extractData } from "../../../util/piecemeal";
import * as scoreBiz from "../fuHuaQi/score";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
import { addPoint } from "../../point";
import { addFuHuaQiPoint } from "../../point";
import moment = require("moment");
import { findEnterpriseNewTeamData } from "../../../data/enterprise/quarterTask/team";
import { EnterpriseTeamConfig } from "../../../config/splitResultConfig";
......@@ -114,8 +114,7 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
//兼容什么都没有修改的情况,这种情况不需要更改数据库和埋点
if (leasedArea != enterpriseInfo.leasedArea) {
/**埋点 */
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_占孵面积, enterpriseInfo.leasedArea || 0, leasedArea );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_占孵面积, enterpriseInfo.leasedArea || 0, leasedArea);
/**修改数据 */
enterpriseInfo.leasedArea = leasedArea;
}
......@@ -133,8 +132,7 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
state: configEnum.FUHUASTATE.实体孵化,
virtualCause : null,//虚拟孵化模式
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData);
/**修改数据 */
enterpriseInfo.leasedArea = leasedArea;
enterpriseInfo.state = configEnum.FUHUASTATE.实体孵化;
......@@ -155,7 +153,8 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
}
......@@ -205,7 +204,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
leasedArea : 0,
state: configEnum.FUHUASTATE.虚拟孵化,
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
await enterpriseInfo.save();
......@@ -214,7 +213,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isUsccess:true};
}
......@@ -290,7 +289,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
graduation: await enterpriseData.findEnterpriseCount({ fuHuaQiUscc, graduation:true })
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
await enterpriseInfo.save();
......@@ -298,7 +297,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isUsccess:true};
}
......@@ -354,7 +353,7 @@ export async function updateMyEnterpriseBaseInfo(fuHuaQiUscc:string, param) {
for (let key in param) {
oldPointInfo[key] = enterpriseInfo[key] || '';
}
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_基本信息, oldPointInfo, param );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_基本信息, oldPointInfo, param );
await enterpriseInfo.save();
......@@ -406,13 +405,13 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param)
await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param);
}
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
/**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isSuccess:true};
}
......@@ -440,13 +439,13 @@ export async function replenishMyEnterpriseCreateInfo(fuHuaQiUscc:string, param)
await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param);
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新注册' );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新注册' );
/**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isSuccess:true};
}
......
......@@ -15,7 +15,7 @@ import { ERRORENUM } from "../../../config/errorEnum";
import { eccFormParam, eccReqParamater } from "../../../util/verificationParam";
import { changeEnumValue, eccEnumValue } from "../../../util/verificationEnum";
import * as scoreBiz from "./score";
import { addPoint } from "../../point";
import { addFuHuaQiPoint } from "../../point";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -145,17 +145,17 @@ export async function updateFuHuaQiBaseData(uscc:string, param) {
switch (key) {
case "acreageTotal":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_总面积, baseDataInfo[key], param[key] );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.我的数据_总面积, baseDataInfo[key], param[key] );
}
break;
case "acreagePersonalUse":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_自用面积, baseDataInfo[key], param[key] );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.我的数据_自用面积, baseDataInfo[key], param[key] );
}
break;
case "incubatedAcreage":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_在孵面积, baseDataInfo[key], param[key]);
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.我的数据_在孵面积, baseDataInfo[key], param[key]);
}
break;
}
......@@ -167,7 +167,7 @@ export async function updateFuHuaQiBaseData(uscc:string, param) {
}
baseDataInfo["hatchingGround"] = param.hatchingGround;
if (JSON.stringify(param['hatchingGround'] || []) != JSON.stringify(baseDataInfo['hatchingGround'] || [])) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_经备案孵化场地, baseDataInfo['hatchingGround'], param['hatchingGround'] );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.我的数据_经备案孵化场地, baseDataInfo['hatchingGround'], param['hatchingGround'] );
}
await baseDataInfo.save();
......
......@@ -10,7 +10,7 @@ import { getI18nRegisterId } from "../../../../tools/system";
import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nRegister";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import { FUHUAQINODEENUM, OPERATETYPEENUM, POINTTYPEENUM } from "../../../../config/pointConfig";
......@@ -27,9 +27,9 @@ export async function createI18nRegister(uscc:string, country:string, partners:s
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getI18nRegisterId(uscc);
await i18nRegisterData.addRegister(id, uscc, fuHuaQiInfo.name, country, partners, cMode, cAchievements);
await i18nRegisterData.addRegister(id, uscc, fuHuaQiInfo.operationName, country, partners, cMode, cAchievements);
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, {country, partners, cMode, cAchievements}, null, OPERATETYPEENUM.添加 );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.机构资质_国际化登记, {country, partners, cMode, cAchievements}, null, OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -64,7 +64,7 @@ export async function updateI18nRegister(uscc:string, id:string, country:string,
await registerInfo.save();
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, newData, OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, newData, OPERATETYPEENUM.修改 );
return {isSuccess:true};
}
......@@ -105,7 +105,7 @@ export async function deleteI18nRegisterInfo(uscc:string, id:string) {
cAchievements: registerInfo.cAchievements,
};
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, null, OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, null, OPERATETYPEENUM.删除 );
await i18nRegisterData.deleteI18nRegisterListById(id);
......
......@@ -10,7 +10,7 @@ import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { COOPERATIONMODE } from "../../../../config/enum";
import moment = require("moment");
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -30,9 +30,9 @@ export async function createIcr(uscc:string, po:string, ce:string, cMode, startT
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await icrData.addData(id, uscc, fuHuaQiInfo.name, po, ce, cMode, startTimeMs);
await icrData.addData(id, uscc, fuHuaQiInfo.operationName, po, ce, cMode, startTimeMs);
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, {po, ce, cMode, startTimeMs}, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, {po, ce, cMode, startTimeMs}, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -59,7 +59,7 @@ export async function updateIcr(uscc:string, id:string, po:string, ce:string, cM
startTimeMs : dataInfo.startTimeMs,
};
let newData = { po, ce, cMode, startTimeMs };
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.po = po;
dataInfo.ce = ce;
......@@ -111,7 +111,7 @@ export async function deleteIcr(uscc:string, id:string) {
await icrData.deleteDataById(id);
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
return {isSuccess:true}
}
......
......@@ -9,7 +9,7 @@ import * as startupTeacherData from "../../../../data/fuHuaQi/instituQualify/sta
import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjBeyondLayout";
import { STATEENUM } from "../../../../config/enum";
import * as fuhuaqiData from "../../../../data/fuHuaQi/fuhuaqi";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
......@@ -34,7 +34,7 @@ export async function updatePTPInfo(uscc:string, isCreatePTP:number, scalePTP:nu
};
let newData = { isCreatePTP, scalePTP, isParticipateInPTP, participatingFundCompany };
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创投基金登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创投基金登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
fuHuaQiInfo.isCreatePTP = isCreatePTP;
fuHuaQiInfo.scalePTP = scalePTP;
......@@ -101,7 +101,7 @@ export async function updateProfessionalTechnology(uscc:string, isProfessionalTe
cooperationInstitutions,
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_专业技术平台登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_专业技术平台登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
fuHuaQiInfo.isProfessionalTechnology= isProfessionalTechnology;//是否专业技术平台
fuHuaQiInfo.professionalTechnologyName= professionalTechnologyName;//专业技术平台名称
......
......@@ -8,7 +8,7 @@ import { getRandomId } from "../../../../tools/system";
import * as startupTeacherData from "../../../../data/fuHuaQi/instituQualify/startupTeacher";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { SPECIALITY, TEACHERLV } from "../../../../config/enum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -30,10 +30,10 @@ export async function createStartUpTeacher(uscc:string, teacherName:string, unit
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await startupTeacherData.addData(id, uscc, fuHuaQiInfo.name, teacherName, unit, duties, speciality, teacherLv, serviceEnterprises);
await startupTeacherData.addData(id, uscc, fuHuaQiInfo.operationName, teacherName, unit, duties, speciality, teacherLv, serviceEnterprises);
let pointData = {teacherName, unit, duties, speciality, teacherLv, serviceEnterprises};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -64,7 +64,7 @@ export async function updateStartUpTeacher(uscc:string, id:string, teacherName:s
teacherLv:dataInfo.teacherLv,
serviceEnterprises:dataInfo.serviceEnterprises
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.teacherName = teacherName;
dataInfo.unit = unit;
......@@ -117,7 +117,7 @@ export async function deleteStartUpTeacher(uscc:string, id:string) {
teacherLv:dataInfo.teacherLv,
serviceEnterprises:dataInfo.serviceEnterprises
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
await startupTeacherData.deleteDataById(id);
......
......@@ -9,7 +9,7 @@ import { getRandomId } from "../../../../tools/system";
import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjBeyondLayout";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { ZJBEYONDLAYOUTOPERATIONMODE } from "../../../../config/enum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -27,10 +27,10 @@ export async function createZJBeyondLayout(uscc:string, city:string, area:number
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await zjBeyondLayoutData.addData(id, uscc, fuHuaQiInfo.name, city, area, operationMode);
await zjBeyondLayoutData.addData(id, uscc, fuHuaQiInfo.operationName, city, area, operationMode);
let pointData = {city, area, operationMode};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint(uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -54,7 +54,7 @@ export async function updateZJBeyondLayout(uscc:string, id:string, city:string,
operationMode:dataInfo.operationMode,
};
let newData = {city, area, operationMode};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.city = city;
dataInfo.area = area;
......@@ -98,7 +98,7 @@ export async function deleteZJBeyondLayout(uscc:string, id:string) {
area:dataInfo.area,
operationMode:dataInfo.operationMode,
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
await zjBeyondLayoutData.deleteDataById(id);
......
......@@ -126,7 +126,7 @@ export async function updateScore(uscc:string, type:number, isSubmitTask:boolean
// newScore = -1 * newScore;
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore, subType);
} else {
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore);
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore-oldScore);
}
scoreInfo.updateTime = new Date().valueOf();
......@@ -162,7 +162,8 @@ function getOnceTaskDeductScore(month:number) {
* @returns 我的企业得分
*/
async function myEnterpriseScoreCount(uscc:string) {
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:uscc, draftLock:true});
let startEnterpriseParam:any = {fuHuaQiUscc:uscc, "$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]};
let enterpriseList = await findEnterpriseList(startEnterpriseParam);
let isValueCount = 0;
let valueCount = 0;
......@@ -204,7 +205,11 @@ export async function fuHuaQiScoreLog(uscc:string, year:number) {
if ( !distinctMap[timeKey] ) distinctMap[timeKey] = [];
let itemWaysStr = waysStr(info.ways, info.taskType, info.changeMode);
itemWaysStr += `${Math.abs(info.addScore)}分`;
if (info.addScore > 1) {
itemWaysStr += `${Math.abs(Math.ceil(info.addScore))}分`;
} else {
itemWaysStr += `${Math.abs(Math.round(info.addScore*10)/10)}分`;
}
distinctMap[timeKey].push({
score:Math.ceil(info.score),
......
......@@ -5,7 +5,7 @@
import moment = require("moment");
import * as informationData from "../../data/guanWeiHui/information";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../config/pointConfig";
import { addPoint } from "../point";
import { addFuHuaQiPoint } from "../point";
/**
......@@ -81,7 +81,7 @@ export async function getOnceinformation(uscc:string, id:string) {
createTime:moment(baseData.createTimeMs).format("MM/DD")
};
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.政策速递, id);
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.政策速递, id);
return {infomation:reuslt};
}
......
......@@ -8,90 +8,66 @@ import { post } from "../util/request";
const Sign = "xxxx8901231kldosdjkfsdlk";
export async function addPoint(pointType:number, uid:string, pointId:number, p1, p2?, p3?) {
let url = 'http://localhost:7078/point/';
let pointInfo:any = {uid, ct:new Date().valueOf() };
if (pointType == POINTTYPEENUM.企业 ) {
url += "enterprise/add";
if (pointId != ENTERPRISENODEENUM.政策速递 && pointId != ENTERPRISENODEENUM.创始团队 ) {
pointInfo.pid = pointId;
}
/**组合埋点信息 */
if (pointId >= ENTERPRISENODEENUM.经营数据补录_营业收入 && pointId <= ENTERPRISENODEENUM.经营数据补录_纳税) {
/**经营数据不必保存旧值 */
pointInfo.p1 = JSON.stringify(p1);
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == ENTERPRISENODEENUM.政策速递) {
pointInfo.p1 = p1;
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == ENTERPRISENODEENUM.进入首页) {
post(url, {pointInfo, pointId}, {sign:Sign});
} else {
/**数组类型 or 对象类型 */
let oldData;
let newData;
if (typeof p1 == "object") {
oldData = JSON.stringify(p1);
newData = JSON.stringify(p2);
} else if (typeof p1 == "number") {
oldData = p1 + '';
newData = p2 + '';
} else {
oldData = p1;
newData = p2;
}
/**
* 添加孵化器埋点
* @param uid
* @param pointId
* @param p1
* @param p2
* @param p3
*/
export async function addFuHuaQiPoint(uid:string, pointId:number, p1, p2?, p3?) {
let param:any = {pid:pointId, uid, ct:new Date().valueOf()};
if (p1 != null || p1 != undefined) {
if (typeof p1 == "object") param.p1 = JSON.stringify(p1);
else if (typeof p1 == "boolean" || typeof p1 == "number") param.p1 = p1.toString();
else if (typeof p1 == "string") param.p1 == p1;
}
if (p2 != null || p2 != undefined) {
if (typeof p2 == "object") param.p2 = JSON.stringify(p2);
else if (typeof p2 == "boolean" || typeof p2 == "number") param.p2 = p2.toString();
else if (typeof p2 == "string") param.p2 == p2;
}
if (p3 != null || p3 != undefined) {
if (typeof p3 == "object") param.p3 = JSON.stringify(p3);
else if (typeof p3 == "boolean" || typeof p3 == "number") param.p3 = p3.toString();
else if (typeof p3 == "string") param.p3 == p3;
}
post('http://localhost:7078/point/fuhuaqi/add', {pointInfo:param, pointId}, {sign:Sign});
}
if (oldData != newData) {
pointInfo.p1 = oldData;
pointInfo.p2 = newData;
if (ENTERPRISENODEENUM.基本信息_经营地址 == pointId || ENTERPRISENODEENUM.基本信息_行业领域 == pointId) {
pointInfo.p3 = p3;
}
post(url, {pointInfo, pointId}, {sign:Sign});
}
}
} else {
/**孵化器埋点 */
url += "fuhuaqi/add";
if (pointId == FUHUAQINODEENUM.政策速递 ) {
pointInfo.p1 = p1;
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == FUHUAQINODEENUM.进入首页) {
post(url, {pointInfo, pointId}, {sign:Sign});
} else {
pointInfo.pid = pointId;
let oldData;
let newData;
if (typeof p1 == "object") {
oldData = JSON.stringify(p1);
newData = JSON.stringify(p2);
} else if (typeof p1 == "number") {
oldData = p1 + '';
newData = p2 + '';
} else {
oldData = p1;
newData = p2;
}
/**机构资质要加类型埋点 */
if (pointId >= 2 || pointId<= 7) {
pointInfo.pt = p3;
}
if (oldData != newData) {
pointInfo.p1 = oldData;
pointInfo.p2 = newData;
post(url, {pointInfo, pointId}, {sign:Sign});
}
}
/**
* 添加企业埋点
* @param uid
* @param pointId
* @param p1
* @param p2
* @param p3
*/
export async function addEnterprisePoint(uid:string, pointId:number, p1, p2?, p3?) {
let param:any = {p1, pid:pointId, uid, ct:new Date().valueOf()};
if (p1 != null || p1 != undefined) {
if (typeof p1 == "object") param.p1 = JSON.stringify(p1);
else if (typeof p1 == "boolean" || typeof p1 == "number") param.p1 = p1.toString();
else if (typeof p1 == "string") param.p1 == p1;
}
if (p2 != null || p2 != undefined) {
if (typeof p2 == "object") param.p2 = JSON.stringify(p2);
else if (typeof p2 == "boolean" || typeof p2 == "number") param.p2 = p2.toString();
else if (typeof p2 == "string") param.p2 == p2;
}
if (p3 != null || p3 != undefined) {
if (typeof p3 == "object") param.p3 = JSON.stringify(p3);
else if (typeof p3 == "boolean" || typeof p3 == "number") param.p3 = p3.toString();
else if (typeof p3 == "string") param.p3 == p3;
}
post('http://localhost:7078/point/enterprise/add', {pointInfo:param, pointId}, {sign:Sign});
}
/**
* 获取埋点数据
* @param type 类型
......
......@@ -71,7 +71,8 @@ export enum ERRORENUM {
企业审批中请下个自然月登录,
缺少关键参数导致修改失败,
不合规操作,
未填安全手机号无法修改密码
未填安全手机号无法修改密码,
请输入聊天内容
}
export enum ERRORCODEENUM {
......
......@@ -26,21 +26,21 @@ export enum FUHUAQINODEENUM {
* 企业端埋点
*/
export enum ENTERPRISENODEENUM {
政策速递 = 1,
政策速递 = 101,
创始团队,
企业资质_高新技术,
企业资质_专精特新,
企业资质_小巨人培育 = 5,
企业资质_小巨人培育,
企业资质_小巨人,
企业资质_上市情况,
知识产权_海外专利,
知识产权_一类专利,
知识产权_二类专利 = 10,
知识产权_二类专利,
基本信息_行业领域,
基本信息_经营地址,
经营数据补录_营业收入,
经营数据补录_研发投入,
经营数据补录_纳税 = 15,
经营数据补录_纳税,
进入首页
}
......
......@@ -5,7 +5,8 @@
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
import { FUHUASTATE } from '../../config/enum';
import { CYCXFX, FUHUASTATE, INDUSTRY } from '../../config/enum';
import { changeEnumValue } from '../../util/verificationEnum';
/**
* 创始团队
......@@ -285,7 +286,12 @@ export async function findEnterpriseList(selectParam) {
* @returns number 数据数量
*/
export async function findEnterpriseInfoByName(name:string) {
return await enterpriseModel.findOne({name, draftLock:true});
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
name,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
};
return await enterpriseModel.findOne(selectParam);
}
......@@ -298,7 +304,12 @@ export async function findEnterpriseInfoByName(name:string) {
* @returns []
*/
export async function findSubmittedEnterpriseListByFuHuaQiUscc(fuHuaQiUscc:string) {
return await enterpriseModel.find({fuHuaQiUscc, draftLock:true }, 'name logonAddress operatingAddress state');
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
fuHuaQiUscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
};
return await enterpriseModel.find(selectParam, 'name logonAddress operatingAddress state');
}
......@@ -380,4 +391,108 @@ export async function statsFHQHaveEnterpriseCount() {
map[info._id] = info.count;
});
return map;
}
/**
* 统计非迁出企业的 行业领域
*/
export async function statsEnterpriseIndustry() {
let statsList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":FUHUASTATE.迁出},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{"$group":{
_id:"$industry",
count:{"$sum":1}
}}
]);
let distinctMap = {};
statsList.forEach(info => {
info._id.forEach(item => {
let itemStr = changeEnumValue(INDUSTRY, item);
if (!distinctMap[itemStr]) distinctMap[itemStr] = 0;
distinctMap[itemStr] += 1;
})
});
return distinctMap;
}
/**
* 统计非迁出企业的 创新创业
*/
export async function statsEnterpriseCycxfx() {
let statsList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":FUHUASTATE.迁出},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{"$group":{
_id:"$cycxfx",
count:{"$sum":1}
}}
]);
let distinctMap = {};
statsList.forEach(info => {
let {_id} = info;
if (!_id) return;
_id.forEach(item => {
let itemStr = changeEnumValue(CYCXFX, item);
if (!distinctMap[itemStr]) distinctMap[itemStr] = 0;
distinctMap[itemStr] += 1;
})
});
return distinctMap;
}
export async function statsEnterpriseQualification() {
let resultMap = {isHighTech:0, isZjtx:0, isXjrpy:0, isXjr:0 };
let keyList = ["isHighTech", "isZjtx", "isXjrpy", "isXjr"];
for (let i = 0; i < keyList.length; i++) {
let key = keyList[i];
let subList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":4},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{
"$group":{ _id:`$qualification.${key}`, count:{"$sum":1} }
},
{"$match":{
"_id":true
}}
]);
resultMap[key] = subList[0] ? subList[0].count : 0;
}
return resultMap;
}
export async function statsEnterpriseIntellectualPropertyInfo() {
let subList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":4},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{
"$group":{
_id:"$null",
alienPatent:{"$sum":"$intellectualProperty.alienPatent"},
classIPatent:{"$sum":"$intellectualProperty.classIPatent"},
secondClassPatent:{"$sum":"$intellectualProperty.secondClassPatent"}
}
}
]);
let reuslt = subList[0];
if (!reuslt) return {"海外专利":0, "一类专利":0, "二类专利":0};
return {
"海外专利":reuslt.alienPatent,
"一类专利":reuslt.classIPatent,
"二类专利":reuslt.secondClassPatent
};
}
\ No newline at end of file
......@@ -5,6 +5,8 @@
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
import { changeEnumValue } from '../../util/verificationEnum';
import { FINANCINGROUNDS } from '../../config/enum';
const financingSchema = new Schema({
id:{type:String, index:true},//唯一标识
......@@ -162,4 +164,67 @@ export async function statsEnterpriseFinancingByTime(startTimeMs:number) {
});
return Object.values(dataMap);
}
/**
* 统计融资金额
* @returns
*/
export async function statsEnterpriseFinancingAmount() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$financingRounds", count:{"$sum":"$financingAmount"}, dis:{"$sum":0}}},
{"$group":{_id:"$dis", count:{"$sum":"$count"}}}
]);
return statsList[0] ? statsList[0].count : 0;
}
/**
* 统计最大融资金额
* @returns
*/
export async function statsEnterpriseFinancingMaxAmount() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$uscc", count:{"$sum":"$financingAmount"}, dis:{"$sum":0} }},
{"$sort":{"count":-1 }},
{"$group":{_id:"$dis", firstDoc:{"$first":"$$ROOT"} }}
]);
let statsInfo = statsList[0] ? statsList[0].firstDoc : {count:0};
return statsInfo.count;
}
/**
* 统计融资轮次
* @returns
*/
export async function statsEnterpriseFinancingRounds() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$financingRounds", count:{"$sum":1}}}
]);
let map = {};
statsList.forEach(info => {
let {_id, count} = info;
let str = changeEnumValue(FINANCINGROUNDS, _id);
map[str] = count;
});
return map;
}
/**
* 统计融资企业
* @returns
*/
export async function statsFinancingEnterprise() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$uscc", count:{"$sum":"$financingAmount"}} }
]);
let list = []
statsList.forEach(info => {
let {_id, count} = info;
list.push({uscc:_id, count});
});
return list;
}
\ No newline at end of file
......@@ -158,3 +158,43 @@ export async function statsBusinessCount(param) {
]);
return statsList;
}
/**
* 统计本年度企业经营情况
*/
export async function statsEnterpriseBusinessInfo(year:number) {
let list = await businessDataModel.aggregate([
{"$match":{year:2023, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{_id:"$year",
BI:{"$sum":"$BI"},
RD:{"$sum":"$RD"},
TXP:{"$sum":"$TXP"}
}}
]);
return list[0] || { BI:0, RD:0, TXP:0 };
}
export async function statsEnterpriseQuerterBusinessInfo(year:number) {
let list = await businessDataModel.aggregate([
{"$match":{year, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{_id:"$quarter",
BI:{"$sum":"$BI"},
RD:{"$sum":"$RD"},
TXP:{"$sum":"$TXP"}
}}
]);
let biMap = {};
let rdMap = {};
let txpMap = {};
list.forEach(info => {
let {_id, BI, RD, TXP} = info;
let str = `第${_id}季度`;
biMap[str] = BI;
rdMap[str] = RD;
txpMap[str] = TXP;
});
return { biMap, rdMap, txpMap };
}
\ No newline at end of file
......@@ -197,3 +197,31 @@ export async function statsEnterpriseTeamCountByNull(year:number, quarter:number
]);
return statsList;
}
export async function statsEnterpriseNewTeamCount() {
let list = await teamModel.aggregate([
{"$match":{"$or":[{isSubmit:true}, {fhqIsSubmit:true}]} },
{"$sort":{"year":-1, "quarter":-1}},
{"$group":{_id:"$uscc", firstDoc:{"$first":"$$ROOT"}, d:{"$sum":0}}},
{"$group":{
_id:"$d",
doctorCount:{"$sum":"$firstDoc.doctor"},
masterCount:{"$sum":"$firstDoc.master"},
undergraduateCount:{"$sum":"$firstDoc.undergraduate"},
juniorCollegeCount:{"$sum":"$firstDoc.juniorCollege"},
otherCount:{"$sum":"$firstDoc.other"}
}}
]);
let count = 0;
let countData = list[0];
if (countData) {
for (let key in countData) {
count += countData[key];
}
}
return count;
}
\ No newline at end of file
......@@ -59,6 +59,7 @@ const fuHuaQiSchema = new Schema({
firstLoginIsChangePwd:{type:Boolean, default:false},//首次登录是否修改密码
createTime:Number,
userState:{type:Boolean, default:false}, //是否禁用
adminToken:{type:String, index:true, default:""},//管理后台登录用的token
/**绑定账号相关 */
bindDeviceId:String,//绑定时的设备号
bindId:{type:String},//绑定标识
......
......@@ -157,3 +157,8 @@ export async function statsFuHuaQiTaskReportingRate(year:number, month:number) {
return statsList;
}
export async function findOneFuHuaQiMonthTaskData(selectParam) {
return await fuHuaQiTaskModel.findOne(selectParam);
}
\ No newline at end of file
......@@ -108,3 +108,55 @@ export async function findBusinessDataByParam(param) {
}
export async function statsFHQBusiness(year:number) {
let list = await fuHuaQiBusinessModel.aggregate([
{"$match":{draftLock:true, year }},
{"$group":{_id:"$year",
TR:{"$sum":"$TR"},
ROR:{"$sum":"$ROR"},
RR:{"$sum":"$RR"},
FS:{"$sum":"$FS"},
MIS:{"$sum":"$MIS"},
NP:{"$sum":"$NP"},
TP:{"$sum":"$TP"}
}}
]);
return list[0] || { TR:0, ROR:0, RR:0, FS:0, MIS:0, NP:0, TP:0 };
}
export async function statsFHQQuerterBusinessInfo(year:number) {
let list = await fuHuaQiBusinessModel.aggregate([
{"$match":{draftLock:true, year }},
{"$group":{_id:"$quarter",
TR:{"$sum":"$TR"},
ROR:{"$sum":"$ROR"},
RR:{"$sum":"$RR"},
FS:{"$sum":"$FS"},
MIS:{"$sum":"$MIS"},
NP:{"$sum":"$NP"},
TP:{"$sum":"$TP"}
}}
]);
let TRMap = {};
let RORMap = {};
let RRMap = {};
let FSMap = {};
let MISMap = {};
let NPMap = {};
let TPMap = {};
list.forEach(info => {
let {_id, TR, ROR, RR, FS, MIS, NP, TP} = info;
let str = `第${_id}季度`;
TRMap[str] = TR;
RORMap[str] = ROR;
RRMap[str] = RR;
FSMap[str] = FS;
MISMap[str] = MIS;
NPMap[str] = NP;
TPMap[str] = TP;
});
return { TRMap, RORMap, RRMap, FSMap, MISMap, NPMap, TPMap };
}
......@@ -72,4 +72,4 @@ export async function initFuHuaQiScore(array) {
/**通过条件查询孵化器得分信息 */
export async function findScoreDataByParam(param) {
return await fuHuaQiScoreModel.find(param);
}
\ No newline at end of file
}
......@@ -64,10 +64,9 @@ export async function getLog(uscc:string, startTime:number, endTime:number) {
* @param timeMs
* @returns
*/
export async function getUptotheminuteScore(startTimeMs:number, endTimeMs:number) {
export async function getUptotheminuteScore(param) {
return await fuHuaQiScoreLogModel.aggregate([
{"$match":{ timeMs :{"$gt":startTimeMs, "$lt":endTimeMs } } },
{"$project":{ score:1, uscc:1, timeMs:1 } },
{"$match":param },
{"$group":{_id:"$uscc", maxScore:{"$last":"$score"} } }
]);
}
......@@ -91,4 +90,12 @@ export async function addLogTOInitData(uscc:string, ways:number, changeMode:numb
export async function getAllLog() {
return await fuHuaQiScoreLogModel.find({ });
}
export async function getLogByParam(param) {
return await fuHuaQiScoreLogModel.find(param);
}
export async function updateLog(uscc:string, timeMs:number,ways:number,taskType:number, newTimeMs:number) {
return await fuHuaQiScoreLogModel.updateOne({uscc, ways, taskType, timeMs}, {"$set":{timeMs:newTimeMs}});
}
\ No newline at end of file
......@@ -34,6 +34,6 @@ export async function addMany_repair(addList) {
}
export async function getAllLog_repair() {
return await fuhuaqiscorelogRepairModel.find({ });
export async function getAllLog_repair(param) {
return await fuhuaqiscorelogRepairModel.find(param);
}
\ No newline at end of file
import { initPool } from "./biz/gpt/indicatorPool";
import { initOutline } from "./biz/gpt/report";
import { initSMS } from "./biz/sms";
import { initSystemTask } from "./biz/systemTask";
import { initConfig, systemConfig} from "./config/serverConfig";
......@@ -16,9 +18,12 @@ async function lanuch() {
await initSystemTask();
/**初始化腾讯云短信配置 */
await initSMS();
/**初始化指标池 */
await initPool();
initOutline();
/**创建http服务 */
httpServer.createServer(systemConfig.port);
// await smsTask();
console.log('This indicates that the server is started successfully.');
}
......
......@@ -42,19 +42,32 @@ export async function checkFuHuaQiToken(req, res, next) {
export async function checkGuanWeiHuiToken(req, res, next) {
if (!req.headers) req.headers = {};
const reqToken = req.headers.token;
const userId = req.headers.userid || "";
if (!userId) return next(new BizError(ERRORENUM.身份验证失败, `userId:${userId} token:${reqToken}`));
let userInfo = await findGuanWeiHuiUserInfoByLoginId(userId);
if (!userInfo) return next(new BizError(ERRORENUM.非法登录, `userId:${userId} token:${reqToken}`));
/**2023-2-8日需求 登录一次一直有效 */
// if (userInfo.token != reqToken || (new Date().valueOf() - userInfo.tokenMs) > (3600*100*24*7) ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${userId} token:${reqToken}`));
if (userInfo.token != reqToken ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${userId} token:${reqToken}`));
// req.headers.userid = req.headers.userid;
const ReqToken = req.headers.token || "";
const UserId = req.headers.userid || "";
if (!UserId) return next(new BizError(ERRORENUM.身份验证失败, `userId:${UserId} token:${ReqToken}`));
if (ReqToken.length == 32) {
//管委会
let userInfo = await findGuanWeiHuiUserInfoByLoginId(UserId);
if (!userInfo || !userInfo.loginId) return next(new BizError(ERRORENUM.非法登录, `userId:${UserId} token:${ReqToken}`));
if (userInfo.token != ReqToken ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${UserId} token:${ReqToken}`));
req.headers.isFuHuaQi = false;
} else if (ReqToken.length == 34) {
//孵化器
let userInfo = await findFuHuaQiByUSCC(UserId);
if (!userInfo || !userInfo.uscc) return next(new BizError(ERRORENUM.非法登录, `userId:${UserId} token:${ReqToken}`));
if (userInfo.adminToken != ReqToken) return next(new BizError(ERRORENUM.身份验证过期, `userId:${UserId} token:${ReqToken}`));
req.headers.userid = req.headers.userid;
req.headers.isFuHuaQi = true;
req.headers.operationName = userInfo.operationName;
req.headers.fuHuaQiName = userInfo.fuHuaQiName;
} else {
return next(new BizError(ERRORENUM.身份验证失败, `${UserId}的tokne不合规`));
}
next();
}
......
......@@ -43,8 +43,10 @@ export function setRouter(httpServer) {
async function getEnterpriseList(req, res) {
let reqConf = {name:'String', createType: 'Number', fuHuaQiUscc: 'String', industry: '[Number]', isNaturalPersonHolding: 'Number', state:'Number', createTime:'Number', page: 'Number' };
const NotMustHaveKeys = ["createType", "fuHuaQiUscc", "industry", "isNaturalPersonHolding", "state", "createTime", "name"];
let { createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let result = await enterpriseAdminBiz.enterpriseList(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, page);
res.success(result);
}
......@@ -75,6 +77,10 @@ async function getFinancingList(req, res) {
const NotMustHaveKeys = ["monthData", "fuHuaQiName", "fuHuaQiInvestment", "industry" ];
let {monthData, fuHuaQiName, industry, fuHuaQiInvestment, page} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiName = req.headers.userid;
}
let result = await financingAdminBiz.financingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, page);
res.success(result);
}
......@@ -102,7 +108,13 @@ async function outPutEnterpriseData(req, res) {
const NotMustHaveKeys = ["createType", "fuHuaQiUscc", "industry", "isNaturalPersonHolding", "state", "createTime", "name" ];
let { createType, fuHuaQiUscc, industry, isNaturalPersonHolding, type, state, createTime, name } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let dataList = await enterpriseAdminBiz.outPutEnterpriseData(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
isFuHuaQi = true;
}
let dataList = await enterpriseAdminBiz.outPutEnterpriseData(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, type, isFuHuaQi);
let fileName = `在孵企业${taskTool.getTimeKey()}.xlsx`;
......@@ -120,7 +132,13 @@ async function outPutFinancingData(req, res) {
const NotMustHaveKeys = ["monthData", "fuHuaQiName", "fuHuaQiInvestment", "industry" ];
let {monthData, fuHuaQiName, industry, fuHuaQiInvestment, type} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let dataList = await financingAdminBiz.outPutFinancingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiName = req.headers.fuHuaQiName;
isFuHuaQi = true;
}
let dataList = await financingAdminBiz.outPutFinancingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, type, isFuHuaQi);
let name = `融资企业${taskTool.getTimeKey()}.xlsx`;
......@@ -139,10 +157,13 @@ async function moveOutList(req, res) {
const NotMustHaveKeys = ["name", "fuHuaQiUscc", "industry", "isNaturalPersonHolding" ];
let { name, fuHuaQiUscc, industry, isNaturalPersonHolding, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.enterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, page);
res.success(restult);
}
......@@ -157,7 +178,12 @@ async function outPutMoveOutList(req, res) {
const NotMustHaveKeys = ["name", "fuHuaQiUscc", "industry", "isNaturalPersonHolding" ];
let { name, fuHuaQiUscc, industry, isNaturalPersonHolding, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutEnterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
isFuHuaQi = true;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutEnterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, type, isFuHuaQi);
res.success({data:dataList, name:`迁出企业${fileName}.xlsx`});
......@@ -173,8 +199,13 @@ async function businessDataList(req, res) {
let reqConf = {name:'String', year: 'Number', quarter: 'Number', page: 'Number'};
const NotMustHaveKeys = ["name", "year", "quarter" ];
let { name, year, quarter, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.getBusinessDataList(name, year, quarter, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.getBusinessDataList(name, year, quarter, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -190,7 +221,12 @@ async function outPutBusinessData(req, res) {
const NotMustHaveKeys = ["name", "year", "quarter" ];
let { name, year, quarter, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutBusinessDataList(name, year, quarter, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutBusinessDataList(name, year, quarter, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业经营.xlsx`});
}
......@@ -205,8 +241,13 @@ async function financingInfoList(req, res) {
let reqConf = {name:'String', financingRounds: 'Number', fuHuaQiInvestment: 'Number', page: 'Number'};
const NotMustHaveKeys = ["name", "financingRounds", "fuHuaQiInvestment" ];
let { name, financingRounds, fuHuaQiInvestment, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await financingAdminBiz.getEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await financingAdminBiz.getEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -222,7 +263,12 @@ async function outPutFinancingInfoList(req, res) {
const NotMustHaveKeys = ["name", "financingRounds", "fuHuaQiInvestment" ];
let { name, financingRounds, fuHuaQiInvestment, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await financingAdminBiz.outPutEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await financingAdminBiz.outPutEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业填报融资数据.xlsx`});
}
......@@ -238,7 +284,12 @@ async function initialTeamList(req, res) {
const NotMustHaveKeys = ["name", "member", "type" ];
let { name, member, type, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.getInitialTeamList(name, member, type, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.getInitialTeamList(name, member, type, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -254,7 +305,12 @@ async function outPutEnterpriseInitialTeamList(req, res) {
const NotMustHaveKeys = ["name", "member", "memberType" ];
let { name, member, type, memberType } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutInitialTeamList(name, member, memberType, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutInitialTeamList(name, member, memberType, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业创始团队数据.xlsx`});
}
\ No newline at end of file
......@@ -53,6 +53,11 @@ async function fuhuaqiBase(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiBiz.fuHuaQiBaseData(uscc);
res.success(result);
......@@ -72,6 +77,10 @@ async function updateFuhuaqiBase(req, res) {
const NotMustHaveKeys = [];
let { uscc, form } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiBiz.updateFuHuaQiBaseData(uscc, form);
res.success(result);
......@@ -92,6 +101,11 @@ async function operateStats(req, res) {
let { uscc, year } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiOperateBiz.fuHuaQiOperateStats(uscc, year);
res.success(result);
}
......@@ -110,6 +124,10 @@ async function valueStats(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiValueAnalysisBiz.getValueStats(uscc);
res.success(result);
......@@ -129,6 +147,10 @@ async function fuHuaQiWarningOverView(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.worningTips(uscc);
res.success(result);
......@@ -149,6 +171,10 @@ async function fuHuaQiTaskNotFilling(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuaQiTaskNotFillingList(uscc, page);
res.success(result);
......@@ -169,6 +195,10 @@ async function fuHuQiAddConflict(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuQiAddConflictList(uscc, page);
res.success(result);
......@@ -189,6 +219,10 @@ async function fuHuaQiLettingRate(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuaQiLettingRateList(uscc, page);
res.success(result);
......
/**
* 小程序端 孵化器入口 经营数据报表功能路由
*/
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { aiChart, zjAiChart, generateReport } from '../../biz/gpt/report';
import { checkGuanWeiHuiToken } from '../../middleware/user';
export function setRouter(httpServer) {
/**聊天 */
httpServer.post('/fuhuaqi/gpt/chart', checkGuanWeiHuiToken, asyncHandler(chart));
httpServer.post('/fuhuaqi/gpt/zjchart', checkGuanWeiHuiToken, asyncHandler(zJchart));
httpServer.post('/fuhuaqi/gpt/doc', checkGuanWeiHuiToken, asyncHandler(doc));
}
async function chart(req, res) {
let reqConf = {msg: 'String' };
let { msg } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = {};
if (!req.headers.isFuHuaQi) {
result = await aiChart(msg);
}
res.success(result);
}
async function zJchart(req, res) {
let reqConf = {msg: 'String' };
let { msg } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = {};
if (!req.headers.isFuHuaQi) {
result = await zjAiChart(msg);
}
res.success(result);
}
async function doc(req, res) {
let result = {};
if (!req.headers.isFuHuaQi) {
result = await generateReport();
}
res.success(result);
}
......@@ -6,7 +6,7 @@
import * as asyncHandler from 'express-async-handler';
import { checkEnterpriseToken, checkFuHuaQiToken} from '../middleware/user';
import { addPoint } from '../biz/point';
import { addFuHuaQiPoint } from '../biz/point';
import { FUHUAQINODEENUM, POINTTYPEENUM } from '../config/pointConfig';
......@@ -26,7 +26,7 @@ export function setRouter(httpServer) {
*/
async function fuHuaQiLoginPoint(req, res) {
const Uscc = req.headers.uscc;
addPoint(POINTTYPEENUM.孵化器, Uscc, FUHUAQINODEENUM.进入首页, null);
addFuHuaQiPoint(Uscc, FUHUAQINODEENUM.进入首页, null);
res.success({isSuccess:true});
}
......@@ -38,6 +38,6 @@ async function fuHuaQiLoginPoint(req, res) {
*/
async function enterpriseLoginPoint(req, res) {
const Uscc = req.headers.uscc;
addPoint(POINTTYPEENUM.孵化器, Uscc, FUHUAQINODEENUM.进入首页, null);
addFuHuaQiPoint( Uscc, FUHUAQINODEENUM.进入首页, null);
res.success({isSuccess:true});
}
......@@ -30,9 +30,18 @@ export function setRouter(httpServer) {
httpServer.post('/admin/provide/enterprise/financing/industry', checkInterior, asyncHandler(addFinancingIndustry) );
/**4.3 */
// httpServer.post('/admin/provide/enterprise/bussiness/rep', checkInterior, asyncHandler(addBussinessData) );
httpServer.post('/admin/provide/fuhuaqi/scort/repair', checkInterior, asyncHandler(repairScoreData) );
httpServer.post('/admin/provide/fuhuaqi/scort/change', checkInterior, asyncHandler(repairChangeScortData) );
/**4.4 */
httpServer.post('/admin/provide/fuhuaqi/scort/repairmonth', checkInterior, asyncHandler(repairChangeTaskScortTimeData) );
/**4.4.1 */
httpServer.post('/admin/provide/fuhuaqi/instituqualify/namechangetooperationname', checkInterior, asyncHandler(repairInstituQualifyNameChangeToOperationName) );
/**修复分数 内网用 */
httpServer.post('/admin/provide/fuhuaqi/scort/repair', checkInterior, asyncHandler(repairScoreData) );
/**修复任务分数 */
httpServer.post('/admin/provide/fuhuaqi/scort/correcttask', checkInterior, asyncHandler(correctFuHuaQiScore) );
httpServer.post('/admin/provide/fuhuaqi/scort/correctmyenterprise', checkInterior, asyncHandler(correctFuHuaQiMyEnterpriseScore) );
}
......@@ -135,6 +144,29 @@ async function repairScoreData(req, res) {
async function repairChangeScortData(req, res) {
await provideBiz.changeScortData();
await provideBiz.changeScoreLogByJson();
res.success({isUsccess:true});
}
async function repairChangeTaskScortTimeData(req, res) {
await provideBiz.changeTaskScortTimeData();
res.success({isUsccess:true});
}
async function repairInstituQualifyNameChangeToOperationName(req, res) {
await provideBiz.instituQualifyNameChangeToOperationName();
res.success({isUsccess:true});
}
\ No newline at end of file
}
async function correctFuHuaQiScore(req, res) {
await provideBiz.correctFuHuaQiScoreData();
res.success({isUsccess:true});
}
async function correctFuHuaQiMyEnterpriseScore(req, res) {
await provideBiz.correctFuHuaQiMyEnterpriseScoreData();
res.success({isUsccess:true});
}
......@@ -35,6 +35,7 @@ import * as enterpriseMobileFinancingRouters from './enterpriseMobileClient/fina
import * as testABIRouters from "./mobileClient/testAbi";
import * as pointRouters from "./point";
import * as gptRouters from "./gpt/ai";
export function setRouter(httpServer){
......@@ -75,4 +76,7 @@ export function setRouter(httpServer){
testABIRouters.setRouter(httpServer);
/**埋点接口 */
pointRouters.setRouter(httpServer);
/**gpt */
gptRouters.setRouter(httpServer);
}
\ No newline at end of file
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