Commit 23b1b9f7 by lixinming

修bug

parent 931bfbd0
...@@ -13,6 +13,7 @@ import * as businessData from "../../../data/enterprise/quarterTask/businessdata ...@@ -13,6 +13,7 @@ import * as businessData from "../../../data/enterprise/quarterTask/businessdata
import * as initialTeamData from "../../../data/enterprise/initialTeam"; import * as initialTeamData from "../../../data/enterprise/initialTeam";
import moment = require("moment"); import moment = require("moment");
import { findEnterpriseNewTeamData } from "../../../data/enterprise/quarterTask/team"; import { findEnterpriseNewTeamData } from "../../../data/enterprise/quarterTask/team";
import { changeAddToString } from "../../../tools/system";
/** /**
...@@ -43,6 +44,8 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu ...@@ -43,6 +44,8 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
if (state != configEnum.INSIDESTATE.全部) { if (state != configEnum.INSIDESTATE.全部) {
if (state == configEnum.INSIDESTATE.实体孵化) selectParam.state = configEnum.FUHUASTATE.实体孵化; if (state == configEnum.INSIDESTATE.实体孵化) selectParam.state = configEnum.FUHUASTATE.实体孵化;
if (state == configEnum.INSIDESTATE.虚拟孵化) selectParam.state = configEnum.FUHUASTATE.虚拟孵化; if (state == configEnum.INSIDESTATE.虚拟孵化) selectParam.state = configEnum.FUHUASTATE.虚拟孵化;
} else {
selectParam.state = {"$ne":configEnum.FUHUASTATE.迁出};
} }
if (createTime) { if (createTime) {
let startT = createTime; let startT = createTime;
...@@ -69,14 +72,26 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu ...@@ -69,14 +72,26 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || ""; changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
/** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */ /** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */
if (info.enterpriseIsInPut) changeData.isCreate = ""; if (!info.taskId || info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入"; else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state); changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state);
changeData.virtualCause = !changeData.virtualCause ? '-' : verificationEnumTools.changeEnumValue(configEnum.VIRTUALCAUSE, changeData.virtualCause); changeData.virtualCause = !changeData.virtualCause ? '-' : verificationEnumTools.changeEnumValue(configEnum.VIRTUALCAUSE, changeData.virtualCause);
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
}
if (!changeAddToString(info.logonAddress)) {
changeData.logonAddress = "-";
}
if (!changeAddToString(info.operatingAddress)) {
changeData.operatingAddress = "-";
}
/**将枚举值转为字符 */ /**将枚举值转为字符 */
changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry); changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry);
changeData.cycxfx = verificationEnumTools.changeEnumValue(configEnum.CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = verificationEnumTools.changeEnumValue(configEnum.CYCSRBJ, changeData.cycsrbj) || "未选择";
let intellectualProperty = changeData.intellectualProperty || {} let intellectualProperty = changeData.intellectualProperty || {}
changeData.alienPatent = intellectualProperty.alienPatent || 0; changeData.alienPatent = intellectualProperty.alienPatent || 0;
...@@ -159,12 +174,16 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string ...@@ -159,12 +174,16 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
const TitleList = [ const TitleList = [
"企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务", "企业名称", "入库时间", "所属孵化器", "新注册/新迁入", "孵化状态", "虚拟孵化服务模式", "统一信用代码", "行业领域","主营业务",
"注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址", "注册时间", "首次入孵时间", "迁入时间", "是否自然人控股", "迁入前注册地址",
"注册地址", "经营地址", "租赁面积(平方米)" "注册地址", "经营地址", "租赁面积(平方米)","创业创新方向","创业创始人背景",
"海外专利", "一类专利","二类专利",
"是否上市" , "高新技术" , "专精特新" , "小巨人培育" , "小巨人"
];//表头顺序 如果这里修改了 下面的keyList也要修改 ];//表头顺序 如果这里修改了 下面的keyList也要修改
const KeyList = [ const KeyList = [
"name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness", "logonTime", "name", "createTime", "fuhuaqiUscc", "isCreate", "state", "virtualCause", "uscc", "industry", "mainBusiness",
"firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress", "logonTime","firstIncubationTime", "timeOfImmigration", "isNaturalPersonHolding", "oldLogonAddress",
"logonAddress", "operatingAddress", "leasedArea" "logonAddress", "operatingAddress", "leasedArea","cycxfx","cycsrbj",
"alienPatent", "classIPatent", "secondClassPatent",
"beOnTheMarket", "highTechMs", "zjtxMs", "xjrpyMs", "xjrMs"
];//表头对应的字段顺序 ];//表头对应的字段顺序
let dataList = [TitleList]; let dataList = [TitleList];
...@@ -174,20 +193,62 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string ...@@ -174,20 +193,62 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */ /**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || ""; changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (info.enterpriseIsInPut) changeData.isCreate = ""; if (!info.taskId || 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 = verificationEnumTools.changeEnumValue(configEnum.CYCXFX, changeData.cycxfx) || "未选择";
changeData.cycsrbj = verificationEnumTools.changeEnumValue(configEnum.CYCSRBJ, changeData.cycsrbj) || "未选择";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否"; changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**修改枚举值 */ /**修改枚举值 */
changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry); changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry);
changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state); changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state);
changeData.virtualCause = verificationEnumTools.changeEnumValue(configEnum.VIRTUALCAUSE, changeData.virtualCause); changeData.virtualCause = verificationEnumTools.changeEnumValue(configEnum.VIRTUALCAUSE, changeData.virtualCause);
// dataList.push(changeData);
/**- */
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 = verificationEnumTools.changeEnumValue( configEnum.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的顺序 生成小数组 */ /**根据表头与key的顺序 生成小数组 */
let subList = []; let subList = [];
KeyList.forEach( keyStr => { KeyList.forEach( keyStr => {
subList.push(changeData[keyStr] || ''); let value = changeData[keyStr];
if (value == null || value == undefined) value = "-"
subList.push( value );
}); });
dataList.push(subList); dataList.push(subList);
}); });
...@@ -269,7 +330,17 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind ...@@ -269,7 +330,17 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否"; changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**将枚举值转为字符 */ /**将枚举值转为字符 */
changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry); changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry) || "-";
changeData.moveOutCause = verificationEnumTools.changeEnumValue(configEnum.MOVEOUTCAUSE, changeData.moveOutCause);
changeData.moveOutType = verificationEnumTools.changeEnumValue(configEnum.MOVEOUTTYPE, changeData.moveOutType);
changeData.logonAdd = changeAddToString(changeData.logonAddress) || "-";
changeData.operatingAdd = changeAddToString(changeData.operatingAddress) || "-";
changeData.oldLogonAdd = changeAddToString(changeData.oldLogonAddress) || "-";
changeData.mainBusiness = changeData.mainBusiness || "-";
changeData.leasedArea = 0;
dataList.push(changeData); dataList.push(changeData);
}); });
...@@ -329,7 +400,17 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin ...@@ -329,7 +400,17 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否"; changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**将枚举值转为字符 */ /**将枚举值转为字符 */
changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry); changeData.industry = verificationEnumTools.changeEnumValue(configEnum.INDUSTRY, changeData.industry) || "-";
changeData.moveOutCause = verificationEnumTools.changeEnumValue(configEnum.MOVEOUTCAUSE, changeData.moveOutCause);
changeData.moveOutType = verificationEnumTools.changeEnumValue(configEnum.MOVEOUTTYPE, changeData.moveOutType);
changeData.logonAdd = changeAddToString(changeData.logonAddress) || "-";
changeData.operatingAdd = changeAddToString(changeData.operatingAddress) || "-";
changeData.oldLogonAdd = changeAddToString(changeData.oldLogonAddress) || "-";
changeData.mainBusiness = changeData.mainBusiness || "-";
changeData.leasedArea = 0;
let subList = []; let subList = [];
...@@ -364,7 +445,12 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb ...@@ -364,7 +445,12 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb
let dataCount = await businessData.findBusinessDataCountByParamsToPage(selectParam); let dataCount = await businessData.findBusinessDataCountByParamsToPage(selectParam);
let dataList = []; let dataList = [];
dataBaseList.forEach(info => { dataBaseList.forEach(info => {
let changeData = extractData(splitResultConfig.EnterpriseBusinessDataConfig, info, true); let changeData:any = extractData(splitResultConfig.EnterpriseBusinessDataConfig, info, true);
if (!info.isUpdate) {
changeData.BI = "-";
changeData.RD = "-";
changeData.TXP = "-";
}
dataList.push(changeData); dataList.push(changeData);
}); });
...@@ -382,7 +468,7 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n ...@@ -382,7 +468,7 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
let fileName = "全部"; let fileName = "全部";
/**拼接查询条件 */ /**拼接查询条件 */
let selectParam:any = {state:configEnum.FUHUASTATE.迁出}; let selectParam:any = {state:{"$ne":configEnum.FUHUASTATE.迁出}};
if (type == configEnum.OUTPUTTYPE.当前数据) { if (type == configEnum.OUTPUTTYPE.当前数据) {
if (name) { if (name) {
selectParam.name = {"$regex":`${name}`}; selectParam.name = {"$regex":`${name}`};
...@@ -402,7 +488,12 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n ...@@ -402,7 +488,12 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
let dataList = [titleList]; let dataList = [titleList];
dataBaseList.forEach(info => { dataBaseList.forEach(info => {
let changeData = extractData(splitResultConfig.EnterpriseBusinessDataConfig, info, true); let changeData:any = extractData(splitResultConfig.EnterpriseBusinessDataConfig, info, true);
if (!info.isUpdate) {
changeData.BI = "-";
changeData.RD = "-";
changeData.TXP = "-";
}
let subList = []; let subList = [];
for (let i = 0; i < keyList.length; i++) { for (let i = 0; i < keyList.length; i++) {
let value = changeData[keyList[i]] let value = changeData[keyList[i]]
......
...@@ -55,7 +55,7 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust ...@@ -55,7 +55,7 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
/** 字段的特化处理 */ /** 字段的特化处理 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || ""; changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.industry = changeEnumValue(configEnum.INDUSTRY, info.industry); changeData.industry = changeEnumValue(configEnum.INDUSTRY, info.industry) || "-";
changeData.financingRounds = changeEnumValue(configEnum.FINANCINGROUNDS, info.financingRounds); changeData.financingRounds = changeEnumValue(configEnum.FINANCINGROUNDS, info.financingRounds);
changeData.fuHuaQiInvestmentStyle = changeEnumValue(configEnum.FUHUAQILNVESTMENTSTYLE, info.fuHuaQiInvestmentStyle); changeData.fuHuaQiInvestmentStyle = changeEnumValue(configEnum.FUHUAQILNVESTMENTSTYLE, info.fuHuaQiInvestmentStyle);
dataList.push(changeData); dataList.push(changeData);
...@@ -115,7 +115,7 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string, ...@@ -115,7 +115,7 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string,
/**截取返回字段 */ /**截取返回字段 */
let changeData:any = extractData(splitResultConfig.FinancingListConfig, info, true); let changeData:any = extractData(splitResultConfig.FinancingListConfig, info, true);
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || ""; changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.industry = changeEnumValue(configEnum.INDUSTRY, info.industry); changeData.industry = changeEnumValue(configEnum.INDUSTRY, info.industry) || "-";
changeData.financingRounds = changeEnumValue(configEnum.FINANCINGROUNDS, info.financingRounds); changeData.financingRounds = changeEnumValue(configEnum.FINANCINGROUNDS, info.financingRounds);
changeData.fuHuaQiInvestmentStyle = changeEnumValue(configEnum.FUHUAQILNVESTMENTSTYLE, info.fuHuaQiInvestmentStyle); changeData.fuHuaQiInvestmentStyle = changeEnumValue(configEnum.FUHUAQILNVESTMENTSTYLE, info.fuHuaQiInvestmentStyle);
......
...@@ -62,9 +62,12 @@ export async function fuHuaQiBaseList(lv:number, institutionalNature:number, ind ...@@ -62,9 +62,12 @@ export async function fuHuaQiBaseList(lv:number, institutionalNature:number, ind
selectParam.operationName = {"$regex":`${name}`}; selectParam.operationName = {"$regex":`${name}`};
} }
let enterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true});//计算孵化器拥有的累计企业数量 let startEnterpriseParam:any = {"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]};
let shiTiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true, state:configEnum.FUHUASTATE.实体孵化});//实体 let enterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//计算孵化器拥有的累计企业数量
let xuNiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true, state:configEnum.FUHUASTATE.虚拟孵化});//虚拟 startEnterpriseParam.state = configEnum.FUHUASTATE.实体孵化;
let shiTiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//实体
startEnterpriseParam.state = configEnum.FUHUASTATE.虚拟孵化;
let xuNiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//虚拟
let dataBaseList = await fuhuaqiData.findFuHuaQiListByPage(selectParam, (page-1)*10 ); let dataBaseList = await fuhuaqiData.findFuHuaQiListByPage(selectParam, (page-1)*10 );
...@@ -79,9 +82,9 @@ export async function fuHuaQiBaseList(lv:number, institutionalNature:number, ind ...@@ -79,9 +82,9 @@ export async function fuHuaQiBaseList(lv:number, institutionalNature:number, ind
changeData.enterpriseTotal = enterpriseMap[info.uscc] || 0; //企业孵化总数(包括历史) changeData.enterpriseTotal = enterpriseMap[info.uscc] || 0; //企业孵化总数(包括历史)
changeData.virtualEnterpriseNum = xuNiEnterpriseMap[info.uscc] || 0;//虚拟企业数量 changeData.virtualEnterpriseNum = xuNiEnterpriseMap[info.uscc] || 0;//虚拟企业数量
changeData.shiTiEnterpriseNum = shiTiEnterpriseMap[info.uscc] || 0;//实体企业数量 changeData.shiTiEnterpriseNum = shiTiEnterpriseMap[info.uscc] || 0;//实体企业数量
changeData.zaiFuEnterpriseNum = changeData.shiTiEnterpriseNum + changeData.virtualEnterpriseNum; changeData.zaiFuEnterpriseNum = changeData.shiTiEnterpriseNum + changeData.virtualEnterpriseNum;//在孵
let outEnterpriseNum = changeData.enterpriseTotal - changeData.zaiFuEnterpriseNum ; let outEnterpriseNum = changeData.enterpriseTotal - changeData.zaiFuEnterpriseNum;
changeData.outEnterpriseNum = outEnterpriseNum < 0 ? 0 : outEnterpriseNum; changeData.outEnterpriseNum = outEnterpriseNum < 0 ? 0 : outEnterpriseNum;//迁出
/**备案地址转换 */ /**备案地址转换 */
...@@ -167,9 +170,12 @@ export async function outPutFuHuaQiBaseData(lv:number, institutionalNature:numbe ...@@ -167,9 +170,12 @@ export async function outPutFuHuaQiBaseData(lv:number, institutionalNature:numbe
} }
} }
let enterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true});//计算孵化器拥有的累计企业数量 let startEnterpriseParam:any = {"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]};
let shiTiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true, state:configEnum.FUHUASTATE.实体孵化});//实体 let enterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//计算孵化器拥有的累计企业数量
let xuNiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam({draftLock:true, state:configEnum.FUHUASTATE.虚拟孵化});//虚拟 startEnterpriseParam.state = configEnum.FUHUASTATE.实体孵化;
let shiTiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//实体
startEnterpriseParam.state = configEnum.FUHUASTATE.虚拟孵化;
let xuNiEnterpriseMap = await enterpriseData.groupFindEnterpriseCountByParam(startEnterpriseParam);//虚拟
let dataBaseList = await fuhuaqiData.findFuHuaQiList(selectParam); let dataBaseList = await fuhuaqiData.findFuHuaQiList(selectParam);
......
...@@ -33,11 +33,14 @@ export async function monthTableList(state:number, year:number, month:number, pa ...@@ -33,11 +33,14 @@ export async function monthTableList(state:number, year:number, month:number, pa
let dataList = []; let dataList = [];
dataBaseList.forEach( info => { dataBaseList.forEach( info => {
let state = info.draftLock==false?'未填报':'已填报';
let occupancyRate = info.occupancyRate == null || info.occupancyRate == undefined ? '-' : info.occupancyRate;
if (state == "未填报" && occupancyRate != "-") state = "填写未提交";
let onceInfo = { let onceInfo = {
operationName:operationNameMap[info.fuHuaQiUscc] || '', operationName:operationNameMap[info.fuHuaQiUscc] || '',
state:info.draftLock==false?'未填报':'已填报',
time:`${info.year}${info.month}月`, time:`${info.year}${info.month}月`,
occupancyRate:info.occupancyRate || '-' state,
occupancyRate
}; };
dataList.push(onceInfo); dataList.push(onceInfo);
}); });
...@@ -72,11 +75,14 @@ export async function outPutMonthTableList(state:number, year:number, month:numb ...@@ -72,11 +75,14 @@ export async function outPutMonthTableList(state:number, year:number, month:numb
let titleList = [ "运营机构名称","填报状态","数据月份","出租率(%)"]; let titleList = [ "运营机构名称","填报状态","数据月份","出租率(%)"];
let dataList = [titleList]; let dataList = [titleList];
dataBaseList.forEach( info => { dataBaseList.forEach( info => {
let state = info.draftLock==false?'未填报':'已填报';
let occupancyRate = info.occupancyRate == null || info.occupancyRate == undefined ? '-' : info.occupancyRate;
if (state == "未填报" && occupancyRate != "-") state = "填写未提交";
let onceInfo = { let onceInfo = {
operationName:operationNameMap[info.fuHuaQiUscc], operationName:operationNameMap[info.fuHuaQiUscc] || '',
state:info.draftLock==false?'未填报':'已填报',
time:`${info.year}${info.month}月`, time:`${info.year}${info.month}月`,
occupancyRate:info.occupancyRate || '-' state,
occupancyRate
}; };
let subList = []; let subList = [];
......
...@@ -475,3 +475,16 @@ export async function initEnterprisePwd() { ...@@ -475,3 +475,16 @@ export async function initEnterprisePwd() {
return {} return {}
} }
export async function addFinancingIndustry() {
let dataList = await financingData.findFinancingList({});
for (let i = 0; i < dataList.length; i++) {
let {uscc, fuHuaQiUscc, name, taskId} = dataList[i];
let enterInfo = await enterpriseData.findEnterpriseByUscc(uscc);
let finInfo = await financingData.findFinancingInfoByTaskIdAndSucc(taskId, uscc);
finInfo.industry = JSON.parse( JSON.stringify(enterInfo.industry));
finInfo.save();
}
console.log("补全融资领域成功",dataList.length);
return {}
}
\ No newline at end of file
...@@ -3,9 +3,10 @@ ...@@ -3,9 +3,10 @@
* 作者:lxm * 作者:lxm
*/ */
import moment = require("moment");
import { GuanWeiHuiChnageFuHuaQiBaseConfig } from "../../../../config/eccParam/admin"; import { GuanWeiHuiChnageFuHuaQiBaseConfig } from "../../../../config/eccParam/admin";
import { OrganizationParamUpdateConfig } from "../../../../config/eccParam/fuHuaQi"; import { OrganizationParamUpdateConfig } from "../../../../config/eccParam/fuHuaQi";
import { FUHUAINDUSTRY, FUHUAQILV, INSTITUTIONALNATURE, OPERATIONMODEL, SCOREWAYS } from "../../../../config/enum"; import { FUHUAINDUSTRY, FUHUAQILV, INDUSTRY, INSTITUTIONALNATURE, OPERATIONMODEL, SCOREWAYS, STATEENUM } from "../../../../config/enum";
import { ERRORENUM } from "../../../../config/errorEnum"; import { ERRORENUM } from "../../../../config/errorEnum";
import { StarConfig } from "../../../../config/scoreConfig"; import { StarConfig } from "../../../../config/scoreConfig";
import { findFuHuaQiByUSCC } from "../../../../data/fuHuaQi/fuhuaqi"; import { findFuHuaQiByUSCC } from "../../../../data/fuHuaQi/fuhuaqi";
...@@ -14,7 +15,7 @@ import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjB ...@@ -14,7 +15,7 @@ import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjB
import * as scoreData from "../../../../data/fuHuaQi/score"; import * as scoreData from "../../../../data/fuHuaQi/score";
import { BizError } from "../../../../util/bizError"; import { BizError } from "../../../../util/bizError";
import { checkChange } from "../../../../util/piecemeal"; import { checkChange } from "../../../../util/piecemeal";
import { eccEnumValue } from "../../../../util/verificationEnum"; import { changeEnumValue, eccEnumValue } from "../../../../util/verificationEnum";
import { eccFormParam } from "../../../../util/verificationParam"; import { eccFormParam } from "../../../../util/verificationParam";
import { updateScore } from "../../../mobileFuHuaQi/fuHuaQi/score"; import { updateScore } from "../../../mobileFuHuaQi/fuHuaQi/score";
...@@ -43,11 +44,12 @@ export async function fuHuaQiBaseData(uscc:string) { ...@@ -43,11 +44,12 @@ export async function fuHuaQiBaseData(uscc:string) {
operationName:fuHuaQiInfo.operationName,//运营机构名称 不可修改 operationName:fuHuaQiInfo.operationName,//运营机构名称 不可修改
name,//名称 name,//名称
uscc:fuHuaQiInfo.uscc,//统一信用代码 也是登录账号 不可修改 uscc:fuHuaQiInfo.uscc,//统一信用代码 也是登录账号 不可修改
lv:fuHuaQiInfo.lv,//孵化器级别 lv:changeEnumValue(FUHUAQILV, fuHuaQiInfo.lv),//孵化器级别
identificationTime:fuHuaQiInfo.identificationTime,//认定时间 identificationTime:moment(fuHuaQiInfo.identificationTime).format("YYYY-MM-DD"),//认定时间
industry:fuHuaQiInfo.industry,//孵化领域 logonTime:moment(fuHuaQiInfo.logonTime).format("YYYY-MM-DD"),//注册时间
institutionalNature:fuHuaQiInfo.institutionalNature,//机构性质 industry:changeEnumValue(INDUSTRY, fuHuaQiInfo.industry),//孵化领域
isCreatePTP:fuHuaQiInfo.isCreatePTP,//是成立创投基金 institutionalNature:changeEnumValue(INSTITUTIONALNATURE, fuHuaQiInfo.institutionalNature),//机构性质
isCreatePTP:changeEnumValue(STATEENUM, fuHuaQiInfo.isCreatePTP),//是成立创投基金
liaison:fuHuaQiInfo.liaison,//联系人 liaison:fuHuaQiInfo.liaison,//联系人
personInCharge:fuHuaQiInfo.personInCharge,//负责人 personInCharge:fuHuaQiInfo.personInCharge,//负责人
personInChargePhone:fuHuaQiInfo.personInChargePhone,//负责人联系电话 personInChargePhone:fuHuaQiInfo.personInChargePhone,//负责人联系电话
......
...@@ -18,16 +18,28 @@ import { changeEnumValue } from "../../../../util/verificationEnum"; ...@@ -18,16 +18,28 @@ import { changeEnumValue } from "../../../../util/verificationEnum";
* @param uscc * @param uscc
*/ */
export async function fuHuaQiOperateStats(uscc:string, year:number) { export async function fuHuaQiOperateStats(uscc:string, year:number) {
let enterpriseTotal = await findEnterpriseCountByFuHuaQiUscc(uscc); //非迁出企业总数
let virtualEnterpriseNum = await findEnterpriseCount({fuHuaQiUscc:uscc, state:FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化
let monthTableDataList = await findMonthTableList({uscc, year}); 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 monthTableDataList = await findMonthTableList({fuHuaQiUscc:uscc, year});
monthTableDataList.sort((a, b) => {return a.month - b.month}); monthTableDataList.sort((a, b) => {return a.month - b.month});
let czlbhqs = {monthList:[], dataList:[]}; let czlbhqs = {monthList:[], dataList:[]};
monthTableDataList.forEach(info => { monthTableDataList.forEach(info => {
let {month, occupancyRate} = info; let {month, occupancyRate, draftLock} = info;
czlbhqs.monthList.push(month); czlbhqs.monthList.push(`${month}月`);
if (!draftLock) occupancyRate = "未填报";
czlbhqs.dataList.push(occupancyRate); czlbhqs.dataList.push(occupancyRate);
}); });
...@@ -64,30 +76,27 @@ export async function fuHuaQiOperateStats(uscc:string, year:number) { ...@@ -64,30 +76,27 @@ export async function fuHuaQiOperateStats(uscc:string, year:number) {
* @param uscc * @param uscc
*/ */
async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) { async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) {
let dataStartMs = new Date().valueOf(); let dataStartMs = new Date(moment().subtract(6, 'months').format("YYYY-MM")+"-01 00:00:00").valueOf();
let dataEndMs = new Date().valueOf();
if (year!= new Date().getFullYear()) {
dataStartMs = new Date(year+"-01-01 00:00:00").valueOf();
dataEndMs = new Date((year+1)+"-01-01 00:00:00").valueOf();
} else {
dataStartMs = new Date(moment().subtract(12, 'months').format("YYYY-MM")+"-01 00:00:00").valueOf();
}
let param = { let param = {
uid:uscc, uid:uscc,
ct:{"$gt":dataStartMs, "$lt":dataEndMs}, ct:{"$gt":dataStartMs},
}; };
let pointDataList = await getPointDataByParam(POINTTYPEENUM.孵化器, FUHUAQINODEENUM.企业状态变化, param); let pointDataList = await getPointDataByParam(POINTTYPEENUM.孵化器, FUHUAQINODEENUM.企业状态变化, param);
let distinctMap = {}; //{ month:{ct:xxx, dataInfo:{} } } let distinctMap = {}; //{ month:{ct:xxx, pointInfo:{} } }
for (let i = 1; i <= 6; i++) {
let key = moment().subtract(i, 'months').format("YYYY-MM");
distinctMap[key]={ct:0,pointInfo:{}};
}
/**获取每个月的最后一次改动 */ /**获取每个月的最后一次改动 */
pointDataList.forEach(info => { pointDataList.forEach(info => {
let {p1, ct } = info; let {p1, ct } = info;
let pointInfo = JSON.parse(p1); let pointInfo = JSON.parse(p1);
let dataMonth = new Date(ct).getMonth() + 1; let dataMonth = moment(ct).format("YYYY-MM");
if (!distinctMap[dataMonth]) distinctMap[dataMonth] = {ct, pointInfo}; if (!distinctMap[dataMonth]) console.log("数据异常 不符合范围之内的值 检查点1003");
else if(distinctMap[dataMonth].ct < ct) distinctMap[dataMonth] = {ct, pointInfo}; else if(distinctMap[dataMonth].ct < ct) distinctMap[dataMonth] = {ct, pointInfo};
}); });
...@@ -104,13 +113,15 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) { ...@@ -104,13 +113,15 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) {
let monthData = []; let monthData = [];
dataList.forEach(info => { dataList.forEach(info => {
let {month, xn, st} = info; let {month, xn, st} = info;
monthData.push(month); monthData.push(`${month}月`);
xnData.push(xn); xnData.push(xn);
stData.push(st); stData.push(st);
}); });
return {xnData, stData, monthData} return {xnData, stData, monthData}
} }
// async function newGetFuHuaQiEnterpriseCountStats(uscc:string, year:number) {}
/** /**
* 毕业企业数量变化趋势 * 毕业企业数量变化趋势
...@@ -119,44 +130,49 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) { ...@@ -119,44 +130,49 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) {
* @returns * @returns
*/ */
async function getFuHuaQiOwnEnterpriseGraduateCountStats(uscc:string, year:number) { async function getFuHuaQiOwnEnterpriseGraduateCountStats(uscc:string, year:number) {
let dataStartMs = new Date().valueOf(); let dataStartMs = new Date(moment().subtract(6, 'months').format("YYYY-MM")+"-01 00:00:00").valueOf();
let dataEndMs = new Date().valueOf();
if (year!= new Date().getFullYear()) {
dataStartMs = new Date(year+"-01-01 00:00:00").valueOf();
dataEndMs = new Date((year+1)+"-01-01 00:00:00").valueOf();
} else {
dataStartMs = new Date(moment().subtract(12, 'months').format("YYYY-MM")+"-01 00:00:00").valueOf();
}
let param = { let param = {
uid:uscc, uid:uscc,
ct:{"$gt":dataStartMs, "$lt":dataEndMs}, ct:{"$gt":dataStartMs},
}; };
let pointDataList = await getPointDataByParam(POINTTYPEENUM.孵化器, FUHUAQINODEENUM.我的企业_孵化状态, param); let pointDataList = await getPointDataByParam(POINTTYPEENUM.孵化器, FUHUAQINODEENUM.我的企业_孵化状态, param);
let monthDataMap = {}; let monthDataMap = {};
for (let i = 1; i <= 6; i++) {
let key = moment().subtract(i, 'months').format("YYYY-MM");
monthDataMap[key]={ct:0, month:key, count:0, graduation:0};
}
pointDataList.forEach(info => { pointDataList.forEach(info => {
let { p2, ct } = info; let { p2, ct } = info;
let { state, moveOutType } = JSON.parse(p2); let { state, moveOutType, graduation } = JSON.parse(p2);
let dataMonth = new Date(ct).getMonth() + 1; let dataMonth = moment(ct).format("YYYY-MM");
if (state == FUHUASTATE.迁出 && moveOutType == MOVEOUTTYPE.毕业迁出) { if (state == FUHUASTATE.迁出 && moveOutType == MOVEOUTTYPE.毕业迁出) {
if (!monthDataMap[dataMonth]) monthDataMap[dataMonth] = {ct, month:dataMonth, count:0} if (!monthDataMap[dataMonth]) {
console.log("数据异常 不符合范围之内的值 检查点1002");
} else {
monthDataMap[dataMonth].count += 1; monthDataMap[dataMonth].count += 1;
monthDataMap[dataMonth].graduation = Math.max(graduation||0, monthDataMap[dataMonth].graduation);
monthDataMap[dataMonth].ct = ct;
monthDataMap[dataMonth].month = dataMonth;
}
} }
}); });
let dataList = Object.values(monthDataMap); let dataList = Object.values(monthDataMap);
let monthData = []; let monthData = [];
let graduateData = []; let graduateData = [];
let nbyData = [];
dataList.forEach(info => { dataList.forEach(info => {
let {month, count}:any = info; let {month, count, graduation}:any = info;
monthData.push(month); monthData.push(month);
graduateData.push(count) graduateData.push(count);
nbyData.push(graduation);
}); });
//todo 这缺一个 拟毕业 return {monthData, graduateData, nbyData};
return {monthData, graduateData};
} }
async function getEnterpriseIndustry(uscc:string, year:number) { async function getEnterpriseIndustry(uscc:string, year:number) {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* 作者:lxm * 作者:lxm
*/ */
import moment = require("moment");
import { findTeamDataByParams } from "../../../../data/enterprise/quarterTask/team"; import { findTeamDataByParams } from "../../../../data/enterprise/quarterTask/team";
import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nRegister"; import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nRegister";
import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr"; import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr";
...@@ -14,62 +15,99 @@ export async function getValueStats(uscc) { ...@@ -14,62 +15,99 @@ export async function getValueStats(uscc) {
let i18nCount = await i18nRegisterData.getCount(uscc);//国际合作/大企业合作机构数 let i18nCount = await i18nRegisterData.getCount(uscc);//国际合作/大企业合作机构数
let icrCount = await icrData.getCount(uscc); //大学/科研院所合作机构 let icrCount = await icrData.getCount(uscc); //大学/科研院所合作机构
let businessData = await findBusinessDataByParam({fuHuaQiUscc:uscc, year:ThisYear }); /**季度任务查询条件 */
businessData.sort((a, b)=>{return a.quarter - b.quarter}); let queryDataMap = { };//格式 {"YYYY-季度":{TP:0, member:0, index:1}},
let quarterTaskParam:any = {fuHuaQiUscc:uscc};
let {declarationYear, declarationQuarter} = getDeclarationTime();
if (ThisYear != declarationYear) {
quarterTaskParam.year = declarationYear;
for (let i = 1; i <= 4; i++ ) {
let key = `${declarationYear}-Q${i}`;
queryDataMap[key] = {key, TP:0, member:0,index:i};
}
} else {
quarterTaskParam["$or"] = [
{year:ThisYear},
{year:declarationYear, declarationQuarter:{"$gte":declarationQuarter+1}}
];
for (let i = 4; i >= (declarationQuarter+1); i--) {
let key = `${declarationYear}-Q${i}`;
queryDataMap[key] = {key, TP:0, member:0,index:4-i};
}
for (let i =1; i < (declarationQuarter+1); i++) {
let key = `${ThisYear}-Q${i}`;
queryDataMap[key] = {key, TP:0, member:0,index:4+i};
}
}
let queryDataMap = { let businessData = await findBusinessDataByParam(quarterTaskParam);
1:{TP:0, member:0},
2:{TP:0, member:0},
3:{TP:0, member:0},
4:{TP:0, member:0}
};
businessData.forEach(info => { businessData.forEach(info => {
let {quarter, TP} = info; let {quarter,year, TP} = info;
queryDataMap[quarter].TP = TP; queryDataMap[`${year}-Q${quarter}`].TP = TP;
}); });
let teamData = await findTeamDataByParams({fuHuaQiUscc:uscc, year:ThisYear }); let teamData = await findTeamDataByParams(quarterTaskParam);
teamData.forEach(info => { teamData.forEach(info => {
let { quarter } = info; let { year, quarter } = info;
let quarterDataCount = 0; let quarterDataCount = 0;
quarterDataCount += info.doctor || 0;//博士 quarterDataCount += info.doctor || 0;//博士
quarterDataCount += info.master || 0;//硕士 quarterDataCount += info.master || 0;//硕士
quarterDataCount += info.undergraduate || 0;//本科 quarterDataCount += info.undergraduate || 0;//本科
quarterDataCount += info.juniorCollege || 0;//专科 quarterDataCount += info.juniorCollege || 0;//专科
quarterDataCount += info.other || 0;//其他 quarterDataCount += info.other || 0;//其他
queryDataMap[quarter].member += quarterDataCount; queryDataMap[`${year}-Q${quarter}`].member += quarterDataCount;
}); });
let quaryDataRank = Object.values(queryDataMap).sort((a:any, b:any) => {return a.index - b.index});
let tpList = []; let tpList = [];
let jyrsqsList = []; let jyrsqsList = [];
let queryList = []; let queryList = [];
for (let key in queryDataMap) { quaryDataRank.forEach((info:any) => {
queryList.push(parseInt(key)); queryList.push(info.key);
tpList.push( queryDataMap[key].TP ); tpList.push( info.TP );
jyrsqsList.push( queryDataMap[key].member ); jyrsqsList.push( info.member );
} });
/**融资企业数量趋势 */ /**融资企业数量趋势 */
let startTime = new Date(`${ThisYear}-01-01 00:00:00`).valueOf(); let startTime = new Date(moment().subtract(6, 'months').format("YYYY-MM")+"-01 00:00:00").valueOf();
let endTime = new Date(`${ThisYear+1}-01-01 00:00:00`).valueOf(); let financingData = await findFinancingList({fuHuaQiUscc:uscc, timeToObtainInvestment:{"$gt":startTime} });
let financingData = await findFinancingList({fuHuaQiUscc:uscc, timeToObtainInvestment:{"$gt":startTime, "$lt":endTime} });
let financingMap = {};//结构 {"YYYY-MM":{distinctKey:0,} }
for (let i = 1; i <= 6; i++) {
let key = moment().subtract(i, 'months').format("YYYY-MM");
let ms = moment().subtract(i, 'months').valueOf();
financingMap[key]={ms, key, data:{}};
}
let financingMap = {};//结构 {month:{distinctKey:0,} }
financingData.forEach(info => { financingData.forEach(info => {
let { uscc, investmentInstitutionsName, timeToObtainInvestment } = info; let { uscc, investmentInstitutionsName, timeToObtainInvestment } = info;
let distinctKey = uscc + investmentInstitutionsName + timeToObtainInvestment; let distinctKey = uscc + investmentInstitutionsName + timeToObtainInvestment;
let month = new Date(timeToObtainInvestment).getMonth() + 1; let month = moment(timeToObtainInvestment).format("YYYY-MM");
if ( !financingMap[month] ) financingMap[month] = {}; if (!financingMap[month]) console.log("数据异常 不符合范围之内的值 检查点1001");
financingMap[month][distinctKey] = 1; financingMap[month].data[distinctKey] = 1;
}); });
let financingRankList = Object.values(financingMap).sort((a:any, b:any) => {return a.ms - b.ms});
let rzqyslqs = []; let rzqyslqs = [];
for (let key in financingMap) { financingRankList.forEach((info:any) => {
let count = Object.keys(financingMap[key]); let {data, ms, key} = info;
let count = Object.keys(data || {}).length;
rzqyslqs.push({ rzqyslqs.push({
month:parseInt(key), month:key,
count count
}); });
} });
return { jyrsqs:{jyrsqsList, queryList}, i18nCount, icrCount, rzqyslqs, tpInfo:{tpList, queryList} }; return { jyrsqs:{jyrsqsList, queryList}, i18nCount, icrCount, rzqyslqs, tpInfo:{tpList, queryList} };
} }
function getDeclarationTime() {
let thisYear = new Date().getFullYear();
let thisQuarter = moment().quarter();//当月填报季度
if ( (thisQuarter - 1) < 1 ) {
thisYear = moment().subtract(1, 'years').year();
thisQuarter = 4;
} else thisQuarter = thisQuarter - 1;
return {declarationYear:thisYear, declarationQuarter:thisQuarter};
}
\ No newline at end of file
...@@ -18,9 +18,9 @@ export async function enterpriseBaseData() { ...@@ -18,9 +18,9 @@ export async function enterpriseBaseData() {
let businessData = await statsBusinessDataByParam(); let businessData = await statsBusinessDataByParam();
let businessDataList = [ //经营数据 let businessDataList = [ //经营数据
{key:"营业收入", count:businessData.BICount}, //营业收入 {key:"营业收入", count:Math.round(businessData.BICount/10000)}, //营业收入
{key:"研发投入", count:businessData.RDCount}, //研发投入 {key:"研发投入", count:Math.round(businessData.RDCount/10000)}, //研发投入
{key:"纳税", count:businessData.TXPCount} //纳税 {key:"纳税", count:Math.round(businessData.TXPCount/10000)} //纳税
]; ];
let intellectualPropertyData = await statsIntellectualPropertyData(); let intellectualPropertyData = await statsIntellectualPropertyData();
...@@ -34,8 +34,8 @@ export async function enterpriseBaseData() { ...@@ -34,8 +34,8 @@ export async function enterpriseBaseData() {
let gjylcrCount = 0;//国际一流人才 let gjylcrCount = 0;//国际一流人才
let initalTeamsList = await statsEnterpriseInitalTeamsType(); let initalTeamsList = await statsEnterpriseInitalTeamsType();
initalTeamsList.forEach(item => { initalTeamsList.forEach(item => {
if (item._id == ENTERPRISETEAM.国内一流人才) gnylcrCount = item.count; if (item._id == ENTERPRISETEAM.国内一流人才) gnylcrCount += item.count;
else if (item._id == ENTERPRISETEAM.国际一流人才) gjylcrCount = item.count; else if (item._id == ENTERPRISETEAM.国际一流人才) gjylcrCount += item.count;
}); });
let gnylrczb = Math.round( gjylcrCount/(gjylcrCount + gnylcrCount) *100)/100 let gnylrczb = Math.round( gjylcrCount/(gjylcrCount + gnylcrCount) *100)/100
let gjylrczb = 1 - gnylrczb; let gjylrczb = 1 - gnylrczb;
...@@ -55,8 +55,9 @@ export async function enterpriseBaseData() { ...@@ -55,8 +55,9 @@ export async function enterpriseBaseData() {
financingStatsList.sort((a, b) => {return a.ms - b.ms}); financingStatsList.sort((a, b) => {return a.ms - b.ms});
let financingTrendList = [];//融资趋势 let financingTrendList = [];//融资趋势
financingStatsList.forEach(info => { financingStatsList.forEach(info => {
let month = new Date(info.ms).getMonth() + 1;
financingTrendList.push({ financingTrendList.push({
month:info.month, key:month+'月',
count:info.count count:info.count
}); });
}); });
......
...@@ -34,7 +34,8 @@ export async function fuHuaQiWarningOverView() { ...@@ -34,7 +34,8 @@ export async function fuHuaQiWarningOverView() {
lowMonthData.forEach(info => { lowMonthData.forEach(info => {
let { fuHuaQiUscc, occupancyRate } = info; let { fuHuaQiUscc, occupancyRate } = info;
let name = fuHuaQiNameMap[fuHuaQiUscc]; let name = fuHuaQiNameMap[fuHuaQiUscc];
lowOccupancyRate.push({name, occupancyRate, uscc:fuHuaQiUscc}); let value = occupancyRate==null || occupancyRate == undefined ? "未填报" : occupancyRate;
lowOccupancyRate.push({name, value, uscc:fuHuaQiUscc});
}); });
...@@ -53,9 +54,9 @@ export async function fuHuaQiWarningOverView() { ...@@ -53,9 +54,9 @@ export async function fuHuaQiWarningOverView() {
for (let key in taskReportingMap ) { for (let key in taskReportingMap ) {
let {submit, notSubmit} = taskReportingMap[key]; let {submit, notSubmit} = taskReportingMap[key];
let itemReportingRate = Math.round(submit/(submit+notSubmit) *100 ); let itemReportingRate = Math.round(submit/(submit+notSubmit) *100 );
rankList.push({name:fuHuaQiNameMap[key], rate:itemReportingRate, uscc:key }); rankList.push({name:fuHuaQiNameMap[key], value:itemReportingRate, uscc:key });
} }
rankList.sort( (a, b) => {return a.itemReportingRate - b.itemReportingRate}); rankList.sort( (a, b) => {return a.value - b.value});
let lowReportingRate = rankList.slice(0,5)//低填报率 let lowReportingRate = rankList.slice(0,5)//低填报率
...@@ -175,7 +176,7 @@ export async function fuHuaQiTPAnomaly(page:number) { ...@@ -175,7 +176,7 @@ export async function fuHuaQiTPAnomaly(page:number) {
let name = fuHuaQiNameMap[fuHuaQiUscc]; let name = fuHuaQiNameMap[fuHuaQiUscc];
let bcos = ""; let bcos = "";
if (!draftLock) bcos = "上季度未提交"; if (!draftLock) bcos = "上季度未提交";
else bcos = "提交数据为0" else bcos = "上季度提交数据为0"
dataMap[fuHuaQiUscc] = {name, TP, bcos}; dataMap[fuHuaQiUscc] = {name, TP, bcos};
}); });
if ((declarationQuarter - 1) == 0) { if ((declarationQuarter - 1) == 0) {
...@@ -214,7 +215,7 @@ async function getFuHuaQiTPAnomalyCount(fuHuaQiNameMap) { ...@@ -214,7 +215,7 @@ async function getFuHuaQiTPAnomalyCount(fuHuaQiNameMap) {
let name = fuHuaQiNameMap[fuHuaQiUscc]; let name = fuHuaQiNameMap[fuHuaQiUscc];
let bcos = ""; let bcos = "";
if (!draftLock) bcos = "上季度未提交"; if (!draftLock) bcos = "上季度未提交";
else bcos = "提交数据为0" else bcos = "上季度提交数据为0"
dataMap[fuHuaQiUscc] = {name, TP, bcos}; dataMap[fuHuaQiUscc] = {name, TP, bcos};
}); });
if ((declarationQuarter - 1) == 0) { if ((declarationQuarter - 1) == 0) {
......
...@@ -33,7 +33,6 @@ export async function fuHuaQiBaseData() { ...@@ -33,7 +33,6 @@ export async function fuHuaQiBaseData() {
if (!institutionalNatureMap[institutionalStr]) institutionalNatureMap[institutionalStr] = {count:0, key:institutionalStr}; if (!institutionalNatureMap[institutionalStr]) institutionalNatureMap[institutionalStr] = {count:0, key:institutionalStr};
institutionalNatureMap[institutionalStr].count += 1; institutionalNatureMap[institutionalStr].count += 1;
logonTime = new Date('2023-02-01 00:11:00')
if (logonTime) { if (logonTime) {
let ago = moment(logonTime).fromNow(true); let ago = moment(logonTime).fromNow(true);
if (ago.indexOf('months') > -1) { if (ago.indexOf('months') > -1) {
...@@ -86,10 +85,10 @@ export async function fuHuaQiBaseData() { ...@@ -86,10 +85,10 @@ export async function fuHuaQiBaseData() {
async function czlqs() { async function czlqs() {
let dataList = []; let dataList = [];
for (let i = 0; i < 6; i++) { for (let i = 1; i <= 6; i++) {
let dataMonth = moment().subtract(6, 'months').month() +1 let dataMonth = moment().subtract(i, 'months').month() +1
let dataYear = moment().subtract(6, 'months').year(); let dataYear = moment().subtract(i, 'months').year();
let ms = moment().subtract(6, 'months').valueOf(); let ms = moment().subtract(i, 'months').valueOf();
let dataSum = await statsFuHuaQiMonthDataCount(dataYear, dataMonth); let dataSum = await statsFuHuaQiMonthDataCount(dataYear, dataMonth);
let dataCount = await findMonthTableListCount({year:dataYear, month:dataMonth, draftLock:true}); let dataCount = await findMonthTableListCount({year:dataYear, month:dataMonth, draftLock:true});
......
...@@ -9,6 +9,9 @@ import * as sysTools from "../../tools/system"; ...@@ -9,6 +9,9 @@ import * as sysTools from "../../tools/system";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import * as enterpriseData from "../../data/enterprise/enterprise"; import * as enterpriseData from "../../data/enterprise/enterprise";
import moment = require("moment"); import moment = require("moment");
import * as codeData from "../../data/fuHuaQi/code";
import { sendChangePwdCode } from "../sms";
import { CODETYPE } from "../../config/enum";
/** /**
* 企业登录 * 企业登录
...@@ -71,7 +74,6 @@ export async function firstChangePwd(uscc:string, pwd:string, confirmPwd:string) ...@@ -71,7 +74,6 @@ export async function firstChangePwd(uscc:string, pwd:string, confirmPwd:string)
/** /**
* 找回密码 * 找回密码
* todo 有问题, 企业没有负责人
* @param phone 负责人电话号码 如果和库里的对不上 就要报错 * @param phone 负责人电话号码 如果和库里的对不上 就要报错
* @param uscc 企业统一信用代码 * @param uscc 企业统一信用代码
* @param code 验证码 * @param code 验证码
...@@ -79,35 +81,82 @@ export async function firstChangePwd(uscc:string, pwd:string, confirmPwd:string) ...@@ -79,35 +81,82 @@ export async function firstChangePwd(uscc:string, pwd:string, confirmPwd:string)
* @param confirmPwd 确认密码 * @param confirmPwd 确认密码
*/ */
export async function resettingPwd(phone:string, uscc:string, code:string, pwd:string, confirmPwd:string) { export async function resettingPwd(phone:string, uscc:string, code:string, pwd:string, confirmPwd:string) {
// if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '重置密码时'); if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '重置密码时');
// let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc); let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
// if (!enterpriseInfo) throw new BizError(ERRORENUM.账号不存在, `重置密码时 uscc:${uscc}`); if (!enterpriseInfo) throw new BizError(ERRORENUM.账号不存在, `重置密码时 uscc:${uscc}`);
// if ( phone != fuHuaQiInfo.personInChargePhone) throw new BizError(ERRORENUM.号码与主体不一致, '修改密码发验证码时'); if (!enterpriseInfo.securePhon) throw new BizError(ERRORENUM.未填安全手机号无法修改密码, '企业-修改密码发验证码时-没有安全手机号');
// if (pwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致); if ( phone != enterpriseInfo.securePhon) throw new BizError(ERRORENUM.号码与主体不一致, '企业-修改密码发验证码时');
// if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由6至18位字符和数字组成);
if (pwd != confirmPwd) throw new BizError(ERRORENUM.密码不一致);
if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
let todayMs = sysTools.getTodayMs();
let codeList = await codeData.findTodayCodeByUscc(uscc, todayMs);
let now = new Date().valueOf();
let codeId = '';
let msg = ERRORENUM.验证码错误;
codeList.forEach(info => {
if (info.code == code) {
if (info.isUse) msg = ERRORENUM.验证码失效;
else if ( (now - info.sendMs) > (30 * 60 * 1000) ) msg = ERRORENUM.验证码过期
else codeId = info.id;
}
});
// let todayMs = sysTools.getTodayMs(); if (!codeId) throw new BizError(msg, `uscc:${uscc}重置密码的code:${code}`);
// let codeList = await codeData.findTodayCodeByUscc(uscc, todayMs);
// let now = new Date().valueOf(); await codeData.updateCodeState(codeId);
// let codeId = ''; enterpriseInfo.pwd = sysTools.getPwdMd5(uscc, sysTools.md5PwdStr(pwd));
// let msg = ERRORENUM.验证码错误;
// codeList.forEach(info => {
// if (info.code == code) {
// if (info.isUse) msg = ERRORENUM.验证码失效;
// else if ( (now - info.sendMs) > (30 * 60 * 1000) ) msg = ERRORENUM.验证码过期
// else codeId = info.id;
// }
// });
// if (!codeId) throw new BizError(msg, `uscc:${uscc}重置密码的code:${code}`); await enterpriseInfo.save();
// await codeData.updateCodeState(codeId); return {isSuccess:true};
}
// fuHuaQiInfo.pwd = sysTools.getPwdMd5(uscc, sysTools.md5PwdStr(pwd));
// await fuHuaQiInfo.save(); /**
* 发送修改密码的短信验证码
* @param uscc 企业统一信用代码
*/
export async function changePwdSendCode(uscc:string, phone:string) {
if (!sysTools.eccUscc(uscc)) throw new BizError(ERRORENUM.统一社会信用代码不合法, '重置密码时');
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.账号不存在, `企业-发送验证码时 uscc:${uscc}`);
if (!enterpriseInfo.securePhon) throw new BizError(ERRORENUM.未填安全手机号无法修改密码, '企业-修改密码发验证码时-没有安全手机号');
if ( phone != enterpriseInfo.securePhon) throw new BizError(ERRORENUM.号码与主体不一致, '企业-修改密码发验证码时');
let todayMs = sysTools.getTodayMs();
let todayCodeList = await codeData.findTodayCodeByUscc(uscc, todayMs);
if (todayCodeList.length >= 4) throw new BizError(ERRORENUM.发送验证码次数超限制, `${uscc} 修改密码发送验证码次数超限制4`);
let sendMs = todayMs;
todayCodeList.forEach(info => {
sendMs = Math.max(sendMs, info.sendMs);
});
let now = new Date().valueOf();
if ((now - sendMs) <= (60 * 1000) ) throw new BizError(ERRORENUM.发送验证码频率过快, `${uscc}`);
let codeId = sysTools.getSMSCodeId(uscc, todayCodeList.length);
let code = sysTools.getSMSCode();
await sendChangePwdCode(phone, code);
now = new Date().valueOf();
await codeData.createCode(uscc, codeId, code, CODETYPE.修改密码, now);
return {
isSuccess:true,
sendMs:now
};
}
export async function getFirstUpdatePwdState(uscc:string) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
// return {isSuccess:true}; return {firstLogin : !enterpriseInfo.firstLoginIsChangePwd,};
} }
\ No newline at end of file
...@@ -152,9 +152,9 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased ...@@ -152,9 +152,9 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
if (changeState) { if (changeState) {
/**企业状态改变埋点 */ /**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化 let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化 let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化 let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {}); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
} }
...@@ -181,6 +181,11 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual ...@@ -181,6 +181,11 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc); let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`); if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`);
/**埋点 -新值 */
let oldData = {
leasedArea: enterpriseInfo.leasedArea || 0,
state: enterpriseInfo.state,
};
if (enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`); if (enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`);
...@@ -195,11 +200,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual ...@@ -195,11 +200,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
enterpriseInfo.leasedArea = 0;//租赁面积 enterpriseInfo.leasedArea = 0;//租赁面积
enterpriseInfo.moveOutTime = 0; enterpriseInfo.moveOutTime = 0;
/**埋点 */ /**埋点 -新值 */
let oldData = {
leasedArea: enterpriseInfo.leasedArea || 0,
state: enterpriseInfo.state,
};
let newData = { let newData = {
leasedArea : 0, leasedArea : 0,
state: configEnum.FUHUASTATE.虚拟孵化, state: configEnum.FUHUASTATE.虚拟孵化,
...@@ -210,9 +211,9 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual ...@@ -210,9 +211,9 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
await enterpriseInfo.save(); await enterpriseInfo.save();
/**企业状态改变埋点 */ /**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化 let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化 let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化 let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {}); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
return {isUsccess:true}; return {isUsccess:true};
...@@ -256,6 +257,14 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu ...@@ -256,6 +257,14 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc); let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`); if (!enterpriseInfo) throw new BizError(ERRORENUM.该企业不存在, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`);
/**埋点 -旧值 */
let oldData = {
leasedArea: enterpriseInfo.leasedArea || 0,
state: enterpriseInfo.state,
virtualCause : null,//虚拟孵化模式
virtualCauseDes : "",//虚拟孵化原因
};
if (enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`); if (enterpriseInfo.fuHuaQiUscc != fuHuaQiUscc) throw new BizError(ERRORENUM.无法操作其他孵化器的企业, "修改企业孵化状态 修改为实体",`孵化器 ${fuHuaQiUscc} -> 企业${uscc}`);
enterpriseInfo.moveOutType = moveOutType; enterpriseInfo.moveOutType = moveOutType;
...@@ -270,13 +279,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu ...@@ -270,13 +279,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
enterpriseInfo.virtualCauseDes = "";//虚拟孵化原因 enterpriseInfo.virtualCauseDes = "";//虚拟孵化原因
enterpriseInfo.leasedArea = 0;//租赁面积 enterpriseInfo.leasedArea = 0;//租赁面积
/**埋点 */ /**埋点 -新值*/
let oldData = {
leasedArea: enterpriseInfo.leasedArea || 0,
state: enterpriseInfo.state,
virtualCause : null,//虚拟孵化模式
virtualCauseDes : "",//虚拟孵化原因
};
let newData = { let newData = {
leasedArea : 0, leasedArea : 0,
state: configEnum.FUHUASTATE.迁出, state: configEnum.FUHUASTATE.迁出,
...@@ -284,15 +287,17 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu ...@@ -284,15 +287,17 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
moveOutCause: moveOutCause, moveOutCause: moveOutCause,
moveOutTrace: moveOutTrace, moveOutTrace: moveOutTrace,
moveOutTime: new Date().valueOf(), moveOutTime: new Date().valueOf(),
graduation: await enterpriseData.findEnterpriseCount({ fuHuaQiUscc, graduation:true })
}; };
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData ); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
await enterpriseInfo.save(); await enterpriseInfo.save();
/**企业状态改变埋点 */ /**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化 let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化 let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc:uscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化 let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {}); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
return {isUsccess:true}; return {isUsccess:true};
...@@ -404,9 +409,9 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param) ...@@ -404,9 +409,9 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param)
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' ); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
/**企业状态改变埋点 */ /**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化 let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化 let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化 let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {}); addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
return {isSuccess:true}; return {isSuccess:true};
......
...@@ -327,3 +327,15 @@ export async function resettingPwd(phone:string, uscc:string, code:string, pwd:s ...@@ -327,3 +327,15 @@ export async function resettingPwd(phone:string, uscc:string, code:string, pwd:s
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 获取孵化器首次登录状态
* @param uscc
* @returns
*/
export async function getFirstUpdatePwdState(uscc:string) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
return {firstLogin:!fuHuaQiInfo.firstLoginIsChangePwd};
}
\ No newline at end of file
...@@ -103,10 +103,10 @@ export async function getPointDataByParam(type:number, pointId:number, param) { ...@@ -103,10 +103,10 @@ export async function getPointDataByParam(type:number, pointId:number, param) {
let url = 'http://localhost:7078/point/query'; let url = 'http://localhost:7078/point/query';
let result:any = await post(url, {type, pointId, param}, {sign:Sign}); let result:any = await post(url, {type, pointId, param}, {sign:Sign});
if (!result.success || result.countDocuments != 200) { if (!result.success || result.code != 200) {
logError(url, "请求失败", JSON.stringify(result) ); logError(url, "请求失败", JSON.stringify(result) );
console.log(url, "请求失败", JSON.stringify(result)); console.log(url, "请求失败", JSON.stringify(result));
return []; return [];
} }
return result.data || []; return result.data.dataList || [];
} }
\ No newline at end of file
...@@ -70,7 +70,8 @@ export enum ERRORENUM { ...@@ -70,7 +70,8 @@ export enum ERRORENUM {
系统错误请联系管理员, 系统错误请联系管理员,
企业审批中请下个自然月登录, 企业审批中请下个自然月登录,
缺少关键参数导致修改失败, 缺少关键参数导致修改失败,
不合规操作 不合规操作,
未填安全手机号无法修改密码
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -121,7 +121,9 @@ export const EnterpriseListConfig = { ...@@ -121,7 +121,9 @@ export const EnterpriseListConfig = {
state:{key:"孵化状态"}, state:{key:"孵化状态"},
virtualCause:{key:"虚拟孵化模式"}, virtualCause:{key:"虚拟孵化模式"},
intellectualProperty:{key:"知识产权"}, intellectualProperty:{key:"知识产权"},
qualification:{key:"企业资质"} qualification:{key:"企业资质"},
cycxfx:{key:"创业创新方向"},
cycsrbj:{key:"创业创始人背景"}
}; };
...@@ -142,15 +144,18 @@ export const EnterpriseMoveOutListConfig = { ...@@ -142,15 +144,18 @@ export const EnterpriseMoveOutListConfig = {
mainBusiness:{key:"主营业务"},//主营业务 mainBusiness:{key:"主营业务"},//主营业务
logonTime:{key:"注册时间", changeDate:true}, logonTime:{key:"注册时间", changeDate:true},
timeOfImmigration:{key:"迁入时间", changeDate:true}, timeOfImmigration:{key:"迁入时间", changeDate:true},
oldLogonAdd:{key:"迁入前注册地址"}, oldLogonAddress:{key:"迁入前注册地址"},
firstIncubationTime:{key:"首次入孵时间", changeDate:true}, firstIncubationTime:{key:"首次入孵时间", changeDate:true},
isNaturalPersonHolding:{key:"是否自然人控股"}, isNaturalPersonHolding:{key:"是否自然人控股"},
logonAdd:{key:"注册地址"}, logonAddress:{key:"注册地址"},
operatingAdd:{key:"经营地址"}, operatingAddress:{key:"经营地址"},
leasedArea:{key:"租赁面积(平方米)"}, leasedArea:{key:"租赁面积(平方米)"},
}; };
/** /**
* 使用端: 管理后台 * 使用端: 管理后台
* 场景: 企业融资信息列表 * 场景: 企业融资信息列表
......
...@@ -51,9 +51,9 @@ const enterpriseSchema = new Schema({ ...@@ -51,9 +51,9 @@ const enterpriseSchema = new Schema({
firstIncubationTime:Number,//首次入孵时间 firstIncubationTime:Number,//首次入孵时间
timeOfImmigration:Number,//迁入时间 timeOfImmigration:Number,//迁入时间
isNaturalPersonHolding:{type:Boolean, default:true},//是否自然人控股企业 isNaturalPersonHolding:{type:Boolean, default:true},//是否自然人控股企业
oldLogonAdd:String,//迁入前注册地址 oldLogonAdd:String,//迁入前注册地址 弃用
logonAdd:String,//注册地址 logonAdd:String,//注册地址 弃用
operatingAdd:String,//经营地址 operatingAdd:String,//经营地址 弃用
isCreate:{type:Boolean, default:false},//是否新建 isCreate:{type:Boolean, default:false},//是否新建
// isPhysicalPresence:{type:Boolean, default:true},//是否实地孵化 暂时弃用 // isPhysicalPresence:{type:Boolean, default:true},//是否实地孵化 暂时弃用
leasedArea:Number,//租赁面积(平方米) leasedArea:Number,//租赁面积(平方米)
......
...@@ -19,6 +19,7 @@ const financingSchema = new Schema({ ...@@ -19,6 +19,7 @@ const financingSchema = new Schema({
fuHuaQiInvestmentStyle:Number,//孵化器投资方式 fuHuaQiInvestmentStyle:Number,//孵化器投资方式
createTime:Number,//录入时间 createTime:Number,//录入时间
type:{type:Number, default:1},//1为 孵化器 2为企业自己添加 3为孵化器添加企业修改 type:{type:Number, default:1},//1为 孵化器 2为企业自己添加 3为孵化器添加企业修改
}); });
var financingInfoModel; var financingInfoModel;
...@@ -106,7 +107,7 @@ export async function selectEnterpriseTwoYeasFinancing(uscc:string, startTime:nu ...@@ -106,7 +107,7 @@ export async function selectEnterpriseTwoYeasFinancing(uscc:string, startTime:nu
export async function statsEnterpriseFinancing() { export async function statsEnterpriseFinancing() {
let statsList = await financingInfoModel.aggregate([ let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$financingRounds", count:{"$sum":"$financingAmount"} }} {"$group":{_id:"$financingRounds", count:{"$sum":1} }}
]); ]);
return statsList; return statsList;
} }
......
...@@ -109,7 +109,7 @@ export async function addManyTeamData(addList) { ...@@ -109,7 +109,7 @@ export async function addManyTeamData(addList) {
export async function statsEnterpriseTeamData(year:number, quarter:number) { export async function statsEnterpriseTeamData(year:number, quarter:number) {
let statsList = await teamModel.aggregate([ let statsList = await teamModel.aggregate([
{"$match":{year, quarter, draftLock:true}}, {"$match":{year, quarter, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{ {"$group":{
_id:"stats", _id:"stats",
doctorCount:{"$sum":"$doctor"}, doctorCount:{"$sum":"$doctor"},
...@@ -124,7 +124,7 @@ export async function statsEnterpriseTeamData(year:number, quarter:number) { ...@@ -124,7 +124,7 @@ export async function statsEnterpriseTeamData(year:number, quarter:number) {
export async function statsEnterTeamDataByFHQ(year:number, quarter:number) { export async function statsEnterTeamDataByFHQ(year:number, quarter:number) {
let statsList = await teamModel.aggregate([ let statsList = await teamModel.aggregate([
{"$match":{year, quarter, draftLock:true}}, {"$match":{year, quarter, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{ {"$group":{
_id:"$fuHuaQiUscc", _id:"$fuHuaQiUscc",
doctorCount:{"$sum":"$doctor"}, doctorCount:{"$sum":"$doctor"},
...@@ -144,7 +144,7 @@ export async function statsEnterTeamDataByFHQ(year:number, quarter:number) { ...@@ -144,7 +144,7 @@ export async function statsEnterTeamDataByFHQ(year:number, quarter:number) {
export async function statsEnterpriseTeamCountByNull(year:number, quarter:number) { export async function statsEnterpriseTeamCountByNull(year:number, quarter:number) {
let statsList = await teamModel.aggregate([ let statsList = await teamModel.aggregate([
{"$match":{year, quarter, draftLock:true}}, {"$match":{year, quarter, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$project":{ {"$project":{
name:1, count:[ "$doctor", "$master", "$undergraduate", "$juniorCollege", "$other"] name:1, count:[ "$doctor", "$master", "$undergraduate", "$juniorCollege", "$other"]
}}, }},
......
...@@ -89,8 +89,8 @@ export async function updateFinancingDraftLock(taskId:string) { ...@@ -89,8 +89,8 @@ export async function updateFinancingDraftLock(taskId:string) {
* @param taskId 任务id 格式遵循tool中getTaskId * @param taskId 任务id 格式遵循tool中getTaskId
* @param param 所添加表单 需要提前验证 * @param param 所添加表单 需要提前验证
*/ */
export async function createFinancing(fuHuaQiUscc:string, taskId:string, uscc:string, logonTime:number,industry, param) { export async function createFinancing(fuHuaQiUscc:string, taskId:string, uscc:string, logonTime:number, industry, param) {
let addInfo = Object.assign({fuHuaQiUscc, taskId, uscc, logonTime, createTime:new Date().valueOf()}, param); let addInfo = Object.assign({fuHuaQiUscc,industry, taskId, uscc, logonTime, createTime:new Date().valueOf()}, param);
if (logonTime) addInfo.logonTime = logonTime; if (logonTime) addInfo.logonTime = logonTime;
await financingModel.create(addInfo); await financingModel.create(addInfo);
} }
......
...@@ -143,7 +143,7 @@ export async function updateSubmitCount(taskId:string, type:number, count:number ...@@ -143,7 +143,7 @@ export async function updateSubmitCount(taskId:string, type:number, count:number
*/ */
export async function statsFuHuaQiTaskReportingRate(year:number, month:number) { export async function statsFuHuaQiTaskReportingRate(year:number, month:number) {
let statsList = await fuHuaQiTaskModel.aggregate([ let statsList = await fuHuaQiTaskModel.aggregate([
{"$match":{year, month, isSubmit:true}}, {"$match":{year, month}},
{"$group":{_id:{uid:"$fuHuaQiUscc", isSubmit:"$isSubmit"}, count:{"$sum":1} } } {"$group":{_id:{uid:"$fuHuaQiUscc", isSubmit:"$isSubmit"}, count:{"$sum":1} } }
]); ]);
......
...@@ -10,6 +10,9 @@ import { checkEnterpriseToken } from '../../middleware/user'; ...@@ -10,6 +10,9 @@ import { checkEnterpriseToken } from '../../middleware/user';
export function setRouter(httpServer) { export function setRouter(httpServer) {
httpServer.post('/enterprise/login', asyncHandler(login)); httpServer.post('/enterprise/login', asyncHandler(login));
httpServer.post('/enterprise/user/firstchangepwd', checkEnterpriseToken, asyncHandler(firstLoginChangeEnterprisePwd)); httpServer.post('/enterprise/user/firstchangepwd', checkEnterpriseToken, asyncHandler(firstLoginChangeEnterprisePwd));
httpServer.post('/enterprise/changepwd/resetting', asyncHandler(resettingEnterprisePwd));
httpServer.post('/enterprise/changepwd/sendcode', asyncHandler(changeEnterprisePwdSendCode));
httpServer.post('/enterprise/user/firstupdatepwdstate', checkEnterpriseToken, asyncHandler(firstUpdatePwdState));
} }
...@@ -45,3 +48,48 @@ async function firstLoginChangeEnterprisePwd(req, res) { ...@@ -45,3 +48,48 @@ async function firstLoginChangeEnterprisePwd(req, res) {
} }
/**
* 重置密码
* @param req
* @param res
*/
async function resettingEnterprisePwd(req, res) {
let reqConf = { phone:"String", uscc:"String", code:"String", pwd:"String", confirmPwd:"String"};
let {phone, uscc, code, pwd, confirmPwd} = eccReqParamater(reqConf, req.body);
let result = await userBiz.resettingPwd(phone, uscc, code, pwd, confirmPwd);
res.success(result);
}
/**
* 重置密码发验证码
* @param req
* @param res
*/
async function changeEnterprisePwdSendCode(req, res) {
let reqConf = {uscc:'String', phone:'String'};
let {uscc, phone} = eccReqParamater(reqConf, req.body);
let result = await userBiz.changePwdSendCode(uscc, phone);
res.success(result);
}
/**
* 获取孵化器首次登录状态
* @param uscc
* @returns
*/
export async function firstUpdatePwdState(req, res) {
const Uscc = req.headers.uscc;
let result = await userBiz.getFirstUpdatePwdState(Uscc);
res.success(result);
}
\ No newline at end of file
...@@ -16,6 +16,7 @@ export function setRouter(httpServer) { ...@@ -16,6 +16,7 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/bindlist', checkFuHuaQiToken, asyncHandler(bindList)); httpServer.post('/fuhuaqi/bindlist', checkFuHuaQiToken, asyncHandler(bindList));
httpServer.post('/fuhuaqi/changeuser', checkFuHuaQiToken, asyncHandler(changeUser)); httpServer.post('/fuhuaqi/changeuser', checkFuHuaQiToken, asyncHandler(changeUser));
httpServer.post('/fuhuaqi/forgotpwd', asyncHandler(forgotPwd)); httpServer.post('/fuhuaqi/forgotpwd', asyncHandler(forgotPwd));
httpServer.post('/fuhuaqi/user/firstupdatepwdstate', checkFuHuaQiToken, asyncHandler(firstUpdatePwdState));
/**发送短信验证码 */ /**发送短信验证码 */
httpServer.post('/fuhuaqi/changepwd/sendcode', asyncHandler(sendCode)); httpServer.post('/fuhuaqi/changepwd/sendcode', asyncHandler(sendCode));
} }
...@@ -148,7 +149,6 @@ async function bindList(req, res) { ...@@ -148,7 +149,6 @@ async function bindList(req, res) {
* @param res * @param res
*/ */
async function changeUser(req, res) { async function changeUser(req, res) {
let reqConf = { targetUscc:'String' }; let reqConf = { targetUscc:'String' };
let { targetUscc} = eccReqParamater(reqConf, req.body); let { targetUscc} = eccReqParamater(reqConf, req.body);
...@@ -158,3 +158,16 @@ async function changeUser(req, res) { ...@@ -158,3 +158,16 @@ async function changeUser(req, res) {
res.success(result); res.success(result);
} }
/**
* 获取孵化器首次登录状态
* @param req
* @param res
*/
async function firstUpdatePwdState(req, res) {
const Uscc = req.headers.uscc;
let result = await userBiz.getFirstUpdatePwdState(Uscc);
res.success(result);
}
\ No newline at end of file
...@@ -26,6 +26,9 @@ export function setRouter(httpServer) { ...@@ -26,6 +26,9 @@ export function setRouter(httpServer) {
/**3.2 */ /**3.2 */
httpServer.post('/admin/provide/enterprise/initpwd', checkInterior, asyncHandler(updateEnterprisePwd) ); httpServer.post('/admin/provide/enterprise/initpwd', checkInterior, asyncHandler(updateEnterprisePwd) );
/**4.2 */
httpServer.post('/admin/provide/enterprise/financing/industry', checkInterior, asyncHandler(addFinancingIndustry) );
} }
async function inputEnterprise202304Data(req, res) { async function inputEnterprise202304Data(req, res) {
...@@ -107,3 +110,8 @@ async function updateEnterprisePwd(req, res) { ...@@ -107,3 +110,8 @@ async function updateEnterprisePwd(req, res) {
await provideBiz.initEnterprisePwd(); await provideBiz.initEnterprisePwd();
res.success({isUsccess:true}); res.success({isUsccess:true});
} }
async function addFinancingIndustry(req, res) {
await provideBiz.addFinancingIndustry();
res.success({isUsccess:true});
}
\ 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