Commit 806d4c53 by chenjinjing

no message

parent 873fa460
<config>
<port>40015</port>
<dbPort>9096</dbPort>
<dbHost>192.168.0.72</dbHost>
<dbHost>192.168.0.71</dbHost>
<sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign>
<!-- <imgPath>http://127.0.0.1:4980/yuyi/viewpage</imgPath> -->
<imgPath>http://192.168.0.72:40015</imgPath>
<imgFileUrl>http://192.168.0.72:9097</imgFileUrl>
<imgPath>http://192.168.0.71:40015</imgPath>
<imgFileUrl>http://192.168.0.71:9097</imgFileUrl>
</config>
......@@ -47,11 +47,11 @@ export async function getData(req, res) {
let fhcg = keyValuePackage(dbList['孵化成果'].dataList);
ret['fhcg'] = getKeyValueOut('孵化成果', fhcg);
let qyfwxqxyl = keyValuePackage(dbList['企业服务需求响应率'].dataList);
ret['qyfwxqxyl'] = getKeyValueOut('企业服务需求响应率', qyfwxqxyl);
let qyfwxqxyl = keyValuePackage(dbList['企业服务需求受理数'].dataList);
ret['qyfwxqxyl'] = getKeyValueOut('企业服务需求受理数(本年)', qyfwxqxyl);
let yxyxqcljd = keyValuePackage(dbList['已响应需求处理进度'].dataList);
ret['yxyxqcljd'] = getKeyValueOut('已响应需求处理进度', yxyxqcljd);
let yxyxqcljd = keyValuePackage(dbList['受理需求完结率'].dataList);
ret['yxyxqcljd'] = getKeyValueOut('受理需求完结率(本年)', yxyxqcljd);
let qyfwgxqTop5 = keyValuePackage(dbList['企业服务高需求类型排行趋势'].dataList);
ret['qyfwgxqTop5'] = getKeyValueOut('企业服务高需求类型排行趋势', qyfwgxqTop5);
......
......@@ -7,61 +7,66 @@ import { getKeyValueOut, getStringOut, getTableOut } from '../dataPackage/out';
import { getQyszhx } from '../data/db/qyszhx';
import { selectData, selectManyTableData } from '../data/db/operationalData';
import { CHANGESTATE, FUHUASTATE, INDUSTRY, OPERATIONALDATATYPE, TABLENAME } from '../config/enum';
import { BizError } from '../util/bizError';
import { ERRORENUM } from '../config/errorEnum';
export async function getData(req, res) {
let eId = req.body.eId;
if (!eId) throw new BizError(ERRORENUM.缺少必要参数_eId);
let dbData = await getQyszhx(eId);
let ret: any = {};
let qymc = keyValuePackage(dbData['企业名称'].dataList);
let qymc = keyValuePackage(dbData.企业名称.dataList);
ret['qymc'] = getKeyValueOut('企业名称', qymc);
let qyzhxPackageData = keyValuePackage(dbData['企业自画像'].dataList);
let qyzhxPackageData = keyValuePackage(dbData.企业自画像.dataList);
ret['qyzhx'] = getKeyValueOut('企业自画像', qyzhxPackageData);
let kxPackageData = keyValuePackage(dbData['科小'].dataList);
let kxPackageData = keyValuePackage(dbData.科小.dataList);
ret['kx'] = getKeyValueOut('科小', kxPackageData);
let gxPackageData = keyValuePackage(dbData['高新'].dataList);
let gxPackageData = keyValuePackage(dbData.高新.dataList);
ret['gz'] = getKeyValueOut('高新', gxPackageData);
let zfbtPackageData = keyValuePackage(dbData['租房补贴'].dataList);
let zfbtPackageData = keyValuePackage(dbData.租房补贴.dataList);
ret['zfbt'] = getKeyValueOut('租房补贴', zfbtPackageData);
let dkbtPackageData = keyValuePackage(dbData['贷款补贴'].dataList);
let dkbtPackageData = keyValuePackage(dbData.贷款补贴.dataList);
ret['dkbt'] = getKeyValueOut('贷款补贴', dkbtPackageData);
let qyjbqkPackageData = dbData['企业基本情况'].dataList;
let qyjbqkPackageData = dbData.企业基本情况.dataList;
ret['qyjbqk'] = getKeyValueOut('企业基本情况', qyjbqkPackageData);
let qybqPackageData = stringListPackage(dbData['企业标签'].dataList);
let qybqPackageData = stringListPackage(dbData.企业标签.dataList);
ret['qybq'] = getStringOut('企业标签', qybqPackageData);
let ssgjejhy = keyValuePackage(dbData['企业科创分'].count);
let ssgjejhy = keyValuePackage(dbData.企业科创分.count);
ret['ssgjejhy'] = getKeyValueOut('所属国际二级行业', ssgjejhy);
let qykcfbt = keyValuePackage(dbData['企业科创分'].chartData);
let qykcfbt = keyValuePackage(dbData.企业科创分.chartData);
ret['qykcfbt'] = getKeyValueOut('企业科创分饼图', qykcfbt);
let qykcf = keyValuePackage(dbData['企业科创分'].dataList);
let qykcf = keyValuePackage(dbData.企业科创分.dataList);
ret['qykcf'] = getKeyValueOut('企业科创分', qykcf);
let gqjg = keyValuePackage(dbData['股权结构'].dataList);
let gqjg = keyValuePackage(dbData.股权结构.dataList);
ret['gqjg'] = getKeyValueOut('股权结构', gqjg);
let zzrz = keyValuePackage(dbData['资质认证'].count);
let zzrz = keyValuePackage(dbData.资质认证.count);
ret['zzrz'] = getKeyValueOut('资质认证', zzrz);
let zzrzTableData = tablePackage(dbData["资质认证"].headerList[0], dbData["资质认证"].bodyList);
let zzrzTableData = tablePackage(dbData.资质认证.headerList[0], dbData.资质认证.bodyList);
ret['zzrzTable'] = getTableOut('资质认证表格', zzrzTableData);
ret['sxhc'] = {title:"风险详情", dataList:dbData.风险详情};
let sxhc = keyValuePackage(dbData['风险详情'].count);
ret['sxhc'] = getKeyValueOut('风险详情', sxhc);
// let sxhc = keyValuePackage(dbData['风险详情'].count);
// ret['sxhc'] = getKeyValueOut('风险详情', sxhc);
ret['sxhcxx'] = {title:'风险详情详细', dataList:dbData['风险详情'].dataList};
// ret['sxhcxx'] = {title:'风险详情详细', dataList:dbData['风险详情'].dataList};
// let sxhc = keyValuePackage(dbData['失信详情'].count);
// ret['sxhc'] = getKeyValueOut('失信详情', sxhc);
......@@ -75,36 +80,36 @@ export async function getData(req, res) {
// let wfhcxx = keyValuePackage(dbData['违法核查'].dataList);
// ret['wfhcxx'] = getKeyValueOut('违法核查详细', wfhcxx);
let qyfwsqqk = keyValuePackage(dbData['企业服务申请情况'].dataList);
let qyfwsqqk = keyValuePackage(dbData.企业服务申请情况.dataList);
ret['qyfwsqqk'] = getKeyValueOut('企业服务申请情况', qyfwsqqk);
let qyfwsqlx = keyValuePackage(dbData['企业服务申请类型'].dataList);
let qyfwsqlx = keyValuePackage(dbData.企业服务申请类型.dataList);
ret['qyfwsqlx'] = getKeyValueOut('企业服务申请类型', qyfwsqlx);
let zlsl = keyValuePackage(dbData['知识产权'].count);
let zlsl = keyValuePackage(dbData.知识产权.count);
ret['zlsl'] = getKeyValueOut('专利数量', zlsl);
let zscq = keyValuePackage(dbData['知识产权'].dataList);
let zscq = keyValuePackage(dbData.知识产权.dataList);
ret['zscq'] = getKeyValueOut('知识产权', zscq);
let rzqk = keyValuePackage(dbData['融资情况'].count);
let rzqk = keyValuePackage(dbData.融资情况.count);
ret['rzqk'] = getKeyValueOut('融资情况', rzqk);
let rzqsfx = keyValuePackage(dbData['融资情况'].dataList);
let rzqsfx = keyValuePackage(dbData.融资情况.dataList);
ret['rzqsfx'] = getKeyValueOut('融资趋势分析', rzqsfx);
let ysqk = keyValuePackage(dbData['营收情况'].dataList);
let ysqk = keyValuePackage(dbData.营收情况.dataList);
ret['ysqk'] = getKeyValueOut('营收情况', ysqk);
ret['ysqsfx'] = {title:"营收趋势分析", dataList:dbData["营收趋势分析"]};
ret['ysqsfx'] = {title:"营收趋势分析", dataList:dbData.营收趋势分析};
let ysmx = tablePackage(dbData["营收明细"].headerList[0], dbData["营收明细"].bodyList);
let ysmx = tablePackage(dbData.营收明细.headerList[0], dbData.营收明细.bodyList);
ret['ysmx'] = getTableOut('营收明细', ysmx);
let nssr = tablePackage(dbData["纳税明细"].headerList[0], dbData["纳税明细"].bodyList);
let nssr = tablePackage(dbData.纳税明细.headerList[0], dbData.纳税明细.bodyList);
ret['nssr'] = getTableOut('纳税明细', nssr);
let yftrmx = tablePackage(dbData["研发投入明细"].headerList[0], dbData["研发投入明细"].bodyList);
let yftrmx = tablePackage(dbData.研发投入明细.headerList[0], dbData.研发投入明细.bodyList);
ret['yftrmx'] = getTableOut('研发投入明细', yftrmx);
res.send(ret);
......
/**
* 企业登录
*/
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum";
import * as enumConfig from "../config/enum";
import { ERRORENUM } from "../config/errorEnum";
import { selectManyTableData } from "../data/db/operationalData";
import { BizError } from "../util/bizError";
/**
* 登录
* @param phone
* @param pwd
* @returns
*/
export async function enterpriseLogin(req, res) {
let {phone, pwd } = req.body
let ret: any = {};
let filesList = ["userName", "eId", "pwd", "uId", "phone"];
let includeConf = {};
includeConf[TABLENAME.企业孵化信息] = {colum:["state", "startTime", "endTime"], where:{state:{"%ne%":enumConfig.FUHUASTATE.迁出}} };
includeConf[TABLENAME.企业用户表] = {colum:filesList, where:{phone} };
let enterpriseInfo = await selectManyTableData(OPERATIONALDATATYPE.多表单个, TABLENAME.企业基础信息表, {state:enumConfig.CHANGESTATE.已通过}, ["eId", "enterpriseName"], includeConf);
if (!enterpriseInfo || !enterpriseInfo.eId) {
throw new BizError(ERRORENUM.账号或密码错误);
}
let {enterprise_users} = enterpriseInfo;
let enterpriseUserInfo = enterprise_users[0];
if (!enterpriseUserInfo || !enterpriseUserInfo.phone) {
throw new BizError(ERRORENUM.账号或密码错误);
}
if (enterpriseUserInfo.pwd != pwd) {
throw new BizError(ERRORENUM.账号或密码错误);
}
let userInfo = {
userId:enterpriseUserInfo.uId,
userName:enterpriseUserInfo.userName,
eId:enterpriseInfo.eId
};
ret['dataInfo'] = userInfo;
res.send(ret);
}
......@@ -41,7 +41,7 @@ export async function getData(req, res) {
ret['dt'] = { title: "地图", dataList: dt };
let byqk = keyValuePackage(excelData['毕业情况'].dataList);
let byqk = keyValuePackage(dbData.毕业情况);
ret['byqk'] = getKeyValueOut('毕业情况', byqk);
let qymyd = keyValuePackage(excelData['服务成果'].dataList);
......
......@@ -193,16 +193,24 @@ export enum LV {
* 行业领域
*/
export enum INDUSTRY {
集成电路 = 1,
生物医药,
人工智能及智能制造,
航空航天,
汽车产业,
软件和信息服务业,
低碳环保及新材料,
综合,
文化创意
"信息传输、软件和信息技术服务业" = 1,
科学研究和技术服务业,
制造业,
建筑业,
租赁和商务服务业,
批发和零售业
}
// 集成电路 = 1,
// 生物医药,
// 人工智能及智能制造,
// 航空航天,
// 汽车产业,
// 软件和信息服务业,
// 低碳环保及新材料,
// 综合,
// 文化创意
/**
* 最高学历
......@@ -249,10 +257,22 @@ export enum FUHUASTATE {
*/
export enum EMIGRATIONTYPE {
毕业迁出 = 1,
毕业未迁出, //新加状态
到期退租,
违约退租
}
/**
* 风险类别
*/
export enum RISKTYPE {
法律风险 = 1,
经营稳定性风险,
关联企业风险
}
/**
* 上市情况
*/
......
......@@ -16,7 +16,9 @@ export enum ERRORENUM {
数据联合查询失败,
文件不存在,
请完善信息,
地址数据不完整
地址数据不完整,
账号或密码错误,
缺少必要参数_eId
}
......
......@@ -21,8 +21,8 @@ export async function getJxgljsc() {
预警: { dataList: [], titleList: ['key', 'value'] },//预警
企业预警: { bodyList: [], headerList: [['企业名称', '风险等级']] },
孵化成果: {count:[], dataList:[]},//孵化成果
企业服务需求响应率: { dataList: [], titleList: ['key', 'value'] },
已响应需求处理进度: { dataList: [], titleList: ['key', 'value'] },
企业服务需求受理数: { dataList: [], titleList: ['key', 'value'] },
受理需求完结率: { dataList: [], titleList: ['key', 'value'] },
企业服务高需求类型排行趋势: { dataList: [], titleList: ['key', 'value'] },
金融服务: { dataList: [], titleList: ['key', 'value'] }, //金融服务累计信息
融资金额变化趋势: { name: "融资金额变化趋势", data: [] },
......@@ -92,7 +92,7 @@ export async function getJxgljsc() {
* 孵化成果
*/
// let 资质Column = ["qId", "eId", "kxTime", "zjtxTime", "xjrTime", "xjrPyTime", "goPublicTime", "gaoXinJiShuTime", "goPublicSector"];
let 资质Column = ["qId", "eId", "xjrState", "kxState", "gxjsState", "zjtxState"];
let 资质Column = ["qId", "eId", "cxState", "kxState", "gxjsState", "zjtxState"];
let 企业资质联查includeConf = {};
企业资质联查includeConf[TABLENAME.企业资质] = { cloum: 资质Column, where: {} }
let 企业资质信息 = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, [], 企业资质联查includeConf);
......@@ -129,18 +129,20 @@ export async function getJxgljsc() {
* 企业服务分析
*/
//获取所有企业服务表联查企业信息表
let 企业服务dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业服务表, {}, []);
let startYear = moment().format("YYYY-01-01");
let endYear = moment().format("YYYY-12-31");
let 企业服务dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业服务表, {shouLiTime:{"%between%":[startYear, endYear]}}, []);
//已受理企业服务
let 已受理企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {followUpStatus:{"%ne%":FOLLOWUPSTATUS.未受理}}, []);
let 已完成企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {followUpStatus:FOLLOWUPSTATUS.已完成}, []);
let 已受理企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {followUpStatus:{"%ne%":FOLLOWUPSTATUS.未受理}, shouLiTime:{"%between%":[startYear, endYear]}}, []);
let 已完成企业服务Count = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业服务表, {followUpStatus:FOLLOWUPSTATUS.已完成, shouLiTime:{"%between%":[startYear, endYear]}}, []);
let 企业服务需求响应率 = "0%";
if (企业服务dbList.length) 企业服务需求响应率 = ((已受理企业服务Count / 企业服务dbList.length) * 100).toFixed(2) + "%";
jxgljsc.企业服务需求响应率.dataList = [{key:"企业服务需求响应率", value:企业服务需求响应率}];
let 企业服务需求受理数 = 0;
if (已受理企业服务Count) 企业服务需求受理数 = 已受理企业服务Count;
jxgljsc.企业服务需求受理数.dataList = [{key:"企业服务需求受理数", value:企业服务需求受理数}];
let 已响应需求处理进度 = "0%";
if (已受理企业服务Count) 已响应需求处理进度 = ((已完成企业服务Count / 已受理企业服务Count) * 100).toFixed(2) + "%";
jxgljsc.已响应需求处理进度.dataList = [{key:"已响应需求处理进度", value:已响应需求处理进度}];
let 受理需求完结率 = "0%";
if (已受理企业服务Count) 受理需求完结率 = ((已完成企业服务Count / 企业服务dbList.length) * 100).toFixed(2) + "%";
jxgljsc.受理需求完结率.dataList = [{key:"受理需求完结率", value:受理需求完结率}];
jxgljsc.企业服务高需求类型排行趋势.dataList = await getRfqyfwqk(企业服务dbList);
......@@ -341,17 +343,20 @@ async function getyj() {
中低风险: 0,
关注: 0
}
let riskEnterprises: any[] = [];
let riskEnterprises:any[] = [];
let fhColumn = ["enterpriseName", "industry", "eId", "shijiaoziben"];
//获取所有企业孵化信息
let manyTableInfo: any = {}
let manyTableInfo:any = {};
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: { state: FUHUASTATE.实体孵化 } };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "moveOutTime", "moveOutType"], where: {} };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "moveOutTime", "moveOutType", "state"], where: {} };
// manyTableInfo[TABLENAME.企业经营信息] = { column: ["annual"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state: CHANGESTATE.已通过}, fhColumn, manyTableInfo);
let manageList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, ["annual", "eId"]);
// let jymanyTableInfo:any = {};
// jymanyTableInfo[TABLENAME.企业基础信息表] = { column: ["eId"], where: {state: CHANGESTATE.已通过} };
// let manageList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业经营信息, {}, ["annual", "eId"], jymanyTableInfo);
let manageList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {isSubmit:STATE.}, ["annual", "eId"]);
let map = {};
manageList.forEach(info => {
......@@ -362,11 +367,16 @@ async function getyj() {
fhdbList.forEach(info => {
let riskLevel = "";
if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.违约退租 || info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.到期退租) {
// if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.违约退租 || info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.到期退租) {
if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.违约退租) {
yj.高风险 += 1;
riskLevel = "高风险";
riskEnterprises.push([info.enterpriseName, riskLevel]);
} else if (!map[info.eId]) {
} else if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.到期退租) {
yj.关注 += 1;
riskLevel = "关注";
riskEnterprises.push([info.enterpriseName, riskLevel]);
} else if (info.enterprise_fuhuas[0].state != FUHUASTATE.迁出 && !map[info.eId]) {
yj.中低风险 += 1;
riskLevel = "中低风险";
riskEnterprises.push([info.enterpriseName, riskLevel]);
......@@ -387,10 +397,10 @@ async function getyj() {
async function qyfhs(data) {
//获取企业孵化数
let qyfhs = {
"科技小巨人": 0,
"科技型中小企业": 0,//新增"科小"
"高新技术": 0,
"专精特新": 0,
"高新技术": 0,
"科技型中小企业": 0,//新增"科小"
"创新性中小企业": 0,
// "小巨人培育": 0,
};
......@@ -398,9 +408,9 @@ async function qyfhs(data) {
let { enterprise_qualifications } = info;
enterprise_qualifications.forEach(item => {
if (item.kxState == STATE.) qyfhs.科技型中小企业 += 1;//新增"科小"
if (item.xjrState == STATE.) qyfhs.科技小巨人 += 1;
if (item.gxjsState == STATE.) qyfhs.高新技术 += 1;
if (item.zjtxState == STATE.) qyfhs.专精特新 += 1;
if (item.cxState == STATE.) qyfhs.创新性中小企业 += 1;
// if (item.xjrPyState == STATE.是) qyfhs.小巨人培育 += 1;
})
})
......@@ -438,3 +448,5 @@ async function get融资金额变化趋势(融资dbData) {
}
......@@ -6,21 +6,35 @@ import { changeEnumValue } from "../../tools/eccEnum";
export async function get在孵企业面积() {
// 获取当前时间
let nowTime = moment().format('YYYY-MM-DD HH:mm:ss');
// let nowTime = new Date( moment().format("YYYY-01-01") ).valueOf();
let nowTime = new Date().valueOf();
let zlColumn = ["eId", "area", "unitPrice", "isDeposit", "startTime", "endTime", "rentFreeStart", "rentFreeEnd", "roomNumber",
"rent", "notes", "leaseContract", "entryPlan", "businessLicense", "agreement"];
"rent", "notes",
"sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"];
// "rent", "notes", "leaseContract", "entryPlan", "businessLicense", "agreement"];
// let manyTableInfo: any = {}
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }} };
// manyTableInfo[TABLENAME.租赁信息] = { column: zlColumn, where: {"startTime": {"%lt%": nowTime}, "endTime": { "%gt%": nowTime }} }; //租赁开始时间小于当前时间、租赁结束时间大于当前时间
// let zldbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["industry", "eId"], manyTableInfo);
/**2025.06.05 罗总开会确认去掉租赁时间,在孵面积计算只用判断是否在孵企业 */
let manyTableInfo: any = {}
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }} };
manyTableInfo[TABLENAME.租赁信息] = { column: zlColumn, where: {"startTime": {"%lt%": nowTime}, "endTime": { "%gt%": nowTime }} };
let zldbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["industry", "eId"], manyTableInfo);
manyTableInfo[TABLENAME.租赁信息] = { column: zlColumn, where: {} }; //租赁开始时间小于当前时间、租赁结束时间大于当前时间
let zldbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state: CHANGESTATE.已通过}, ["industry", "eId"], manyTableInfo);
let 在孵企业面积 = 0;
let 在孵企业面积变化趋势 = [];
zldbList.forEach( info => {
let {enterprise_fuhuas, enterprise_leases} = info;
// if (nowTime <= new Date(enterprise_fuhuas[0].endTime).valueOf()) {
// enterprise_leases.forEach( leases => {
// if (leases.area) 在孵企业面积 += parseFloat(leases.area);
// })
// }
enterprise_leases.forEach( leases => {
在孵企业面积 += parseFloat(leases.area);
if (leases.area) 在孵企业面积 += parseFloat(leases.area);
})
});
......@@ -37,14 +51,31 @@ export async function get在孵企业面积() {
export async function get在孵企业面积变化趋势() {
// 获取当前时间
// let nowTime = moment().format('YYYY-MM-DD HH:mm:ss');
// let zlColumn = ["eId", "area", "unitPrice", "isDeposit", "startTime", "endTime", "rentFreeStart", "rentFreeEnd", "roomNumber",
// "rent", "notes", "leaseContract", "entryPlan", "businessLicense", "agreement"];
// let manyTableInfo: any = {}
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }} };
// manyTableInfo[TABLENAME.租赁信息] = { column: zlColumn, where: {"startTime": {"%lt%": nowTime}, "endTime": { "%gt%": nowTime }} }; //租赁开始时间小于当前时间、租赁结束时间大于当前时间
// let zldbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["industry", "eId"], manyTableInfo);
let manyTableInfo: any = {}
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }} };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {} };
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { state: CHANGESTATE.已通过 }, ["industry", "eId"], manyTableInfo);
let areaCount = 0;
let 面积变化Map = {};//孵化面积变化
let thisYear = new Date().getFullYear();
let thisMonthList = getMonthList();
for(let i = 0; i < thisMonthList.length; i++) {
面积变化Map[thisMonthList[i]] = {key:thisMonthList[i], value:0};
}
// let thisMonth = new Date().getMonth();
let thisMonth = moment(new Date()).format("YY/MM");
let industryMap = {};
fhdbList.forEach(info => {
......@@ -58,12 +89,12 @@ export async function get在孵企业面积变化趋势() {
if (area) {
areaCount += parseFloat(area);//租赁面积累加
if (enterprise_leases[0].startTime && enterprise_leases[0].endTime) {
let leasesYearList = getStartAndEndTimeYearList(enterprise_leases[0].startTime, enterprise_leases[0].endTime);
leasesYearList.forEach(itemYear => {
if (itemYear > thisYear) return;
if (!面积变化Map[itemYear]) 面积变化Map[itemYear] = { key: itemYear, value: 0 };
面积变化Map[itemYear].value += parseFloat(area);
if (enterprise_fuhuas[0].startTime && enterprise_fuhuas[0].endTime) {
let leasesMonthList = getStartAndEndTimeMonthList(enterprise_fuhuas[0].startTime, enterprise_fuhuas[0].endTime);
leasesMonthList.forEach(itemMonth => {
// if (itemMonth > thisMonth) return;
if (!面积变化Map[itemMonth]) return;
面积变化Map[itemMonth].value += parseFloat(area);
});
}
}
......@@ -158,7 +189,6 @@ export async function getById知识产权(eId) {
}
function getStartAndEndTimeYearList(startTime, endTime) {
let startYear = new Date(startTime).getFullYear();
let endYear = new Date(endTime).getFullYear();
......@@ -170,10 +200,38 @@ function getStartAndEndTimeYearList(startTime, endTime) {
}
function getStartAndEndTimeMonthList(startTime, endTime) {
let startMonth = moment(startTime);
let endMonth = moment(endTime);
let result = [];
// 如果开始日期晚于结束日期,返回空数组
if (startMonth.isAfter(endMonth)) {
return [];
}
let current = moment(startMonth);
// 设置日期为月份第一天
current.startOf('month');
while (current.isSameOrBefore(endMonth)) {
// 使用 moment 的 format 方法直接格式化
result.push(current.format('YY/MM'));
// 增加一个月
current.add(1, 'month');
}
return result;
}
export function getKeyValue(data) {
let result = [];
for (let key in data) {
result.push({key, value:data[key]});
let value = data[key];
if (!isNaN(data[key]) && data[key]) value = value.toFixed(2);
result.push({key, value});
}
return result;
......
......@@ -23,7 +23,7 @@ export async function getEnterprise() {
入驻率入驻企业:{},
企业基本情况: { dataList: [], titleList: ['key', 'value'] }, // 在孵企业面积,在孵企业,毕业企业
入孵企业数量变化趋势: [], // 入孵企业按月、按年的迁入、迁出数量
入孵时长分布: { dataList: [], titleList: ['key', 'value'] },
入孵时长分布: { dataList: [], titleList: ['key', 'value'] }, //在孵企业孵化时长分布
拟毕业企业情况: {count:[], dataList: { bodyList: [], headerList: [['企业名称', '预计毕业时间']] }}, // count:即将到期企业数(小于3个月)
入孵企业行业分布: { dataList: [], titleList: ['key', 'value'] }, //行业领域分布
企业服务汇总数据: { dataList: [], titleList: ['key', 'value'] }, //中间汇总数据
......@@ -93,7 +93,7 @@ export async function getEnterprise() {
qyfw.入孵时长分布.dataList = getKeyValue(rfscfb);
//拟毕业企业情况
qyfw.拟毕业企业情况.count = [{key:"即将到期企业数", value:nbyqyqk.count}];
qyfw.拟毕业企业情况.count = [{key:"3个月内即将毕业企业数", value:nbyqyqk.count}];
qyfw.拟毕业企业情况.dataList.bodyList = nbyqyqk.dataList;
//入孵企业行业分布
......@@ -294,10 +294,14 @@ function getRfqyslbhqsMonth(在孵dbList, 迁出dbList) {
if (monthDiff >= 0 && monthDiff < 3) {
nbyqyqk.count += 1;
nbyqyqk.dataList.push([enterprise.enterpriseName, moment(item.endTime).format("YYYY-MM-DD")]);
} else if (monthDiff >= 3 && monthDiff < 12) rfscfb["1年以内"] += 1;
else if (monthDiff >= 12 && monthDiff < 24) rfscfb["1-2年"] += 1;
else if (monthDiff >= 24 && monthDiff < 36) rfscfb["2-3年"] += 1;
else if (monthDiff >= 36 && monthDiff < 48) rfscfb["3-4年"] += 1;
}
let parsedStartTime = moment(item.startTime); //获取入孵结束时间
let monthStartDiff = nowTime.diff(parsedStartTime, 'months');// 获取月份差值
if (monthStartDiff >= 3 && monthStartDiff < 12) rfscfb["1年以内"] += 1;
else if (monthStartDiff >= 12 && monthStartDiff < 24) rfscfb["1-2年"] += 1;
else if (monthStartDiff >= 24 && monthStartDiff < 36) rfscfb["2-3年"] += 1;
else if (monthStartDiff >= 36 && monthStartDiff < 48) rfscfb["3-4年"] += 1;
})
return {rfscfb, nbyqyqk};
......
import moment = require("moment");
import { FINANCINGROUNDS, FOLLOWUPSTATUS, IPRALLTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, TABLENAME } from "../../config/enum";
import { FINANCINGROUNDS, FOLLOWUPSTATUS, IPRALLTYPE, NEEDCATEGORY, OPERATIONALDATATYPE, QUARTER, RISKTYPE, TABLENAME } from "../../config/enum";
import { selectData } from "./operationalData";
import { getAll知识产权, getById知识产权, getChart, getKeyValue, getRecentQuarters, getYearList } from "./out";
import { changeEnumValue } from "../../tools/eccEnum";
......@@ -13,7 +13,7 @@ export async function getQyszhx(eId) {
企业科创分: { count: [], dataList: [], chartData:[]}, //count:所属国际二级行业,chartData:饼图
股权结构: { dataList: [], titleList: ['key', 'value'] },
资质认证: {count:[], bodyList: [], headerList: [['生效时间', '证书名称', '状态']]}, //count:资质认证总数
风险详情: {count:[], dataList:[]},
风险详情: {}, //法律风险、经营稳定性风险、关联企业风险
// 失信详情: {count:[], dataList:[]},//todo
// 违法核查: {count:[], dataList: []},//todo
企业服务申请情况: { dataList: [], titleList: ['key', 'value'] },
......@@ -118,12 +118,25 @@ export async function getQyszhx(eId) {
//企业风险动态:失信核查、失信详情、违法核查 --改为风险数据
let 企业风险动态 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.风险, {eId}, ["eId", "title", "description", "passage", "riskType", "typeCode"]);
let qyfxdt = {风险详情:[]};
let qyfxdt = {
法律风险:{count:0, dataList:[]},
经营稳定性风险:{count:0, dataList:[]},
关联企业风险:{count:0, dataList:[]}
};
企业风险动态.forEach( info => {
qyfxdt.风险详情.push(info.description);
if (info.riskType == "法律风险") {
qyfxdt.法律风险.count += 1;
qyfxdt.法律风险.dataList.push(info.description);
} else if (info.riskType == "经营稳定性风险") {
qyfxdt.经营稳定性风险.count += 1;
qyfxdt.经营稳定性风险.dataList.push(info.description);
} else if (info.riskType == "关联企业风险") {
qyfxdt.关联企业风险.count += 1;
qyfxdt.关联企业风险.dataList.push(info.description);
}
})
qyszhx.风险详情.count = [{key:"风险统计次数", value:企业风险动态.length}];
qyszhx.风险详情.dataList = qyfxdt.风险详情;
qyszhx.风险详情 = qyfxdt;
// let 企业风险动态 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.失信核查, {eId}, ["eId", "liandate", "anno", "executegov", "executestatus", "publicdate", "executeno", "actionRemark", "amount"]);
// let qyfxdt = {失信详情:[], 违法核查:[]};
// 企业风险动态.forEach( info => {
......@@ -442,7 +455,7 @@ function get租房补贴(企业资质信息, 企业专利信息, 参保记录信
/**
* 获取企业资质达标情况的通用函数
* @param data 企业资质数据
* @param key 判断依据的字段名(如 'gxjsState', 'kxState', 'xjrState')
* @param key 判断依据的字段名(如 'gxjsState', 'kxState', 'cxState')
* @returns 达标情况对象
*/
function get资质达标情况(data, key: string) {
......
import moment = require("moment");
import { BUILDING, CHANGESTATE, FOLLOWUPSTATUS, FUHUASTATE, INDUSTRY, NEEDCATEGORY, OFFLINEPROMOTION, ONLINEPROMOTION, OPERATIONALDATATYPE, POLICYTYPE, PROMOTIONTYPE, TABLENAME } from "../../config/enum";
import { BUILDING, CHANGESTATE, EMIGRATIONTYPE, FOLLOWUPSTATUS, FUHUASTATE, INDUSTRY, NEEDCATEGORY, OFFLINEPROMOTION, ONLINEPROMOTION, OPERATIONALDATATYPE, POLICYTYPE, PROMOTIONTYPE, STATE, TABLENAME } from "../../config/enum";
import { selectData, selectManyTableData } from "./operationalData";
import { changeEnumValue } from "../../tools/eccEnum";
import { getAll知识产权, getRecentQuarters, get在孵企业面积, get在孵企业面积变化趋势, get明星企业列表 } from "./out";
......@@ -63,6 +63,7 @@ export async function getZhyy() {
孵化器概况:[],
在孵企业面积占比:[],
孵化运营:{ count:[], dataList:[] },
毕业情况:[], //毕业未迁出、毕业已迁出
运营推广:{ 线上推广:{count:"", dataList:[]}, 线下推广:{count:"", dataList:[]}},
汇总数据:[],
本年新增就业:[],
......@@ -120,6 +121,15 @@ export async function getZhyy() {
let {在孵企业面积变化趋势, 行业领域分布} = await get在孵企业面积变化趋势();
zhyy.孵化运营.dataList = 在孵企业面积变化趋势;
//毕业情况
let 毕业未迁出dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {moveOutType:EMIGRATIONTYPE.毕业未迁出}, {});
let 毕业已迁出dbList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {moveOutType:EMIGRATIONTYPE.毕业迁出}, {});
let byqk = {
毕业未迁出:毕业未迁出dbList.length || 0,
毕业已迁出:毕业已迁出dbList.length || 0
};
zhyy.毕业情况 = getKeyValue(byqk);
//运营推广
let promotionList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.运营推广信息表,{}, ["opId","promotionType", "promotionApp", "promotionNum"]);
let 线上推广 = { total:0, apps:{} };
......@@ -177,7 +187,7 @@ export async function getZhyy() {
})
}
let 营收情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, []);
let 营收情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {isSubmit:STATE.}, []);
营收情况.forEach(info => {
let { BI, TXP } = info;
hzsj.企业总营收额 += parseFloat(BI);
......@@ -190,15 +200,15 @@ export async function getZhyy() {
let { bnjyxz, rfqyjyrsph, xlqkfx } = await get就业情况();
zhyy.本年新增就业 = getKeyValue(bnjyxz);
zhyy.入孵企业就业人数排行 = rfqyjyrsph;
zhyy.学历情况分析 = getKeyValue(xlqkfx);
zhyy.学历情况分析 = getKeyValue(xlqkfx);
//本季度新增规模
let bjdxzgm = await get本季度新增规模();
zhyy.本季度新增规模 = getKeyValue(bjdxzgm);
//在孵企业营收占比
let jingYingThisYear = moment().startOf("year").format("YYYY-MM-DD HH:mm:ss");
let jingYingList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { annual: jingYingThisYear }, null);
let jingYingList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, { isSubmit:STATE., annual: jingYingThisYear }, null);
let 产业规模企业Map = {};
jingYingList.forEach(info => {
let { BI, TXP, eId } = info;
......@@ -293,22 +303,24 @@ export async function getZhyy() {
let policyType = changeEnumValue(POLICYTYPE, info.policyType);
政策类型次数[policyType] += 1;
政策速递详情.push(info.title);
})
});
zhyy.政策速递 = getKeyValue(政策类型次数);
zhyy.政策速递详情 = 政策速递详情;
zhyy.明星企业列表 = await get明星企业列表();
let 拟入驻企业 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, {}, []);
let nrzqy = [];
拟入驻企业.forEach( info => {
if (info.state == CHANGESTATE.未审核 && (info.register == CHANGESTATE.未审核 || info.register == CHANGESTATE.已驳回)) {
zhyy.拟入驻企业.push(info.enterpriseName);
}
if (info.register == CHANGESTATE.已通过 && (info.state == CHANGESTATE.未审核 || info.state == CHANGESTATE.已驳回)) {
zhyy.拟入驻企业.push(info.enterpriseName);
nrzqy.push(info.enterpriseName);
} else if (info.register == CHANGESTATE.已通过 && (info.state == CHANGESTATE.未审核 || info.state == CHANGESTATE.已驳回)) {
nrzqy.push(info.enterpriseName);
}
})
});
// zhyy.拟入驻企业 = nrzqy;
zhyy.拟入驻企业 = nrzqy.filter((item, index) => nrzqy.indexOf(item) === index);
return zhyy;
}
......
......@@ -10,6 +10,9 @@ import * as qyfwBiz from '../biz/qyfw';
import * as zhyyBiz from '../biz/zhyy';
import * as publicBiz from '../biz/public';
import * as userInfoBiz from '../biz/user';
export function setRouter(httpServer){
......@@ -25,5 +28,8 @@ export function setRouter(httpServer){
httpServer.post('/yuyi/viewserver/zhyy', asyncHandler(zhyyBiz.getData));//智慧运营
httpServer.post('/yuyi/viewserver/public/selectparam', asyncHandler(publicBiz.publicRouter));
//登录登出
httpServer.post('/yuyi/viewserver/login', asyncHandler(userInfoBiz.enterpriseLogin));
}
\ No newline at end of file
......@@ -16,6 +16,14 @@ export function generateSystemId(tableName:string, userId:string) {
}
/**
* 获取token
* @param uscc 统一信用代码
*/
export function getToken(uscc:string) {
return md5(`${uscc}${new Date().valueOf()}${Math.ceil(Math.random() *100)}`);
}
/**
* 生成token
* @param userId
* @returns
......@@ -64,8 +72,7 @@ export function getUserToken(loginId:string) {
}
export function getMySqlMs(time?) {
time = time || new Date().valueOf();
// time += (8*3600*1000);
time = new Date(time).valueOf() || new Date().valueOf();
return moment(time).format("YYYY-MM-DD HH:mm:ss");
}
......
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