Commit cd9c50ab by chenjinjing

no message

parent ff053674
<config> <config>
<port>9098</port> <port>9098</port>
<sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign> <sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign>
<dbServer>http://192.168.0.72:9096</dbServer> <dbServer>http://192.168.0.71:9096</dbServer>
<imgUrl>http://192.168.0.72:9098</imgUrl> <imgUrl>http://192.168.0.71:9098</imgUrl>
<imgFileUrl>http://192.168.0.72:9097</imgFileUrl> <imgFileUrl>http://192.168.0.71:9097</imgFileUrl>
<fileUrl>/yuyi/files/1/</fileUrl> <fileUrl>/yuyi/files/1/</fileUrl>
<qcc> <qcc>
<key>2b14555ce89346e8b96684e2e2a1c7c2</key> <key>2b14555ce89346e8b96684e2e2a1c7c2</key>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
import { ApplyForUpdateConfig, GardenNoticeUpdateConfig, PolicyUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise"; import { ApplyForUpdateConfig, GardenNoticeUpdateConfig, PolicyUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise";
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import * as enumConfig from "../config/enum/enum"; import * as enumConfig from "../config/enum/enum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData"; import { operationalData, paginateArray, selectData, selectManyTableData } from "../data/operationalData";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { eccFormParam } from "../util/verificationParam"; import { eccFormParam } from "../util/verificationParam";
import { ERRORENUM } from "../config/enum/errorEnum"; import { ERRORENUM } from "../config/enum/errorEnum";
...@@ -558,64 +558,109 @@ export async function outPutEnterpriseTalentList(enterpriseName:string, type:num ...@@ -558,64 +558,109 @@ export async function outPutEnterpriseTalentList(enterpriseName:string, type:num
* @returns * @returns
*/ */
export async function iprList(enterpriseName, page) { export async function iprList(enterpriseName, page) {
let selectParam:any = {}; let 商标 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.商标, {}, ["tmId", "eId", "qccId", "regNo", "name", "categoryId", "category", "person", "imageUrl", "flowStatusDesc", "RegDate"]);
if (enterpriseName) { let 作品著作权 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.作品著作权, {}, ["crId", "eId", "owner", "category", "name", "registerNo", "registerDate", "publishDate", "finishDate"]);
selectParam.enterpriseName = {"%like%":enterpriseName}; let 软件著作权 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.软件著作权, {}, ["scId", "eId", "category", "publishDate", "versionNo", "registerNo", "registerAperDate", "name", "shortName", "owner", "finishDevelopDate"]);
let 专利 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专利, {}, ["patentId", "eId", "category", "kindcode", "applicationNumber", "applicationDate", "publicationNumber", "publicationDate", "legalStatusDesc", "title", "agency", "kindCodeDesc", "IPCDesc", "inventorStringList", "assigneestringList"]);
let 知识产权Map:any = {};
if (商标.length) {
商标.forEach( info => {
if (!知识产权Map[info.eId]) 知识产权Map[info.eId] = {};
if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.商标信息]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.商标信息] = [];
知识产权Map[info.eId][enumConfig.IPRALLTYPE.商标信息].push(info)
})
} }
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.知识产权] = {column:["eId","number","iprType"], where:{}};
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, [], manyTableInfo, page); if (作品著作权.length) {
let allDataList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["enterpriseName", "uscc"], manyTableInfo); 作品著作权.forEach( info => {
if (!知识产权Map[info.eId]) 知识产权Map[info.eId] = {};
let dataList = []; if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.作品著作权]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.作品著作权] = [];
resInfo.forEach(info => { 知识产权Map[info.eId][enumConfig.IPRALLTYPE.作品著作权].push(info)
let {eId,uscc, enterpriseName, enterprise_iprs} = info; })
let addItem = { }
eId,
uscc,
enterpriseName,
count:0,
softwareCopyrightCount: 0,//软件著作权
inventionPatentCount: 0,
overseasPatentCount: 0,
plantVarietyCount: 0,
icLayoutCount: 0
};
for (let i = 0; i < enterprise_iprs.length; i++) {
let item = enterprise_iprs[i];
if (item.number) {
addItem.count += item.number;
}
if (软件著作权.length) {
软件著作权.forEach( info => {
if (!知识产权Map[info.eId]) 知识产权Map[info.eId] = {};
if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.软件著作权]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.软件著作权] = [];
知识产权Map[info.eId][enumConfig.IPRALLTYPE.软件著作权].push(info)
})
}
if (item.iprType === enumConfig.IPRALLTYPE.软件著作权) { if (专利.length) {
addItem.softwareCopyrightCount += item.number; //1.发明公布,2.发明授权,3.实用新型,4.外观设计
}else if (item.iprType === enumConfig.IPRALLTYPE.发明专利){ 专利.forEach( info => {
addItem.inventionPatentCount += item.number; if (!知识产权Map[info.eId]) 知识产权Map[info.eId] = {};
} else if (item.iprType === enumConfig.IPRALLTYPE.海外专利){ if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利] = [];
addItem.overseasPatentCount += item.number; if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.实用新型专利]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.实用新型专利] = [];
} else if (item.iprType === enumConfig.IPRALLTYPE.植物新品种){ if (!知识产权Map[info.eId][enumConfig.IPRALLTYPE.外观设计专利]) 知识产权Map[info.eId][enumConfig.IPRALLTYPE.外观设计专利] = [];
addItem.plantVarietyCount += item.number;
} else if (item.iprType === enumConfig.IPRALLTYPE.集成电路布图){ let {kindcode} = info;
addItem.icLayoutCount += item.number; if (kindcode == enumConfig.KUNDCODE.发明公布) {
知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利].push(info);
} else if (kindcode == enumConfig.KUNDCODE.发明授权) {
知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利].push(info);
} else if (kindcode == enumConfig.KUNDCODE.实用新型) {
知识产权Map[info.eId][enumConfig.IPRALLTYPE.实用新型专利].push(info);
} else if (kindcode == enumConfig.KUNDCODE.外观设计) {
知识产权Map[info.eId][enumConfig.IPRALLTYPE.外观设计专利].push(info);
} }
} })
}
// 确保 count 是所有专利类型的总和 let eIdConf = [];
addItem.count = addItem.softwareCopyrightCount for (let key in 知识产权Map) {
+ addItem.inventionPatentCount + addItem.overseasPatentCount eIdConf.push(key)
+ addItem.plantVarietyCount + addItem.icLayoutCount; }
for (let key in addItem) { let selectParam:any = {};
if (key !== 'eId' && addItem[key] == undefined) { if (enterpriseName) {
addItem[key] = "-"; selectParam.enterpriseName = {"%like%":enterpriseName};
} }
if (eIdConf.length) {
selectParam.eId = {"%in%":eIdConf};
}
let resInfo = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业基础信息表, selectParam, []);
let resData = [];
resInfo.forEach(info => {
let 知识产权数量 = {
商标信息 : 0,
作品著作权 : 0,
软件著作权 : 0,
外观设计专利 : 0,
实用新型专利 : 0,
发明专利 : 0,
}
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.商标信息]) 知识产权数量.商标信息 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.商标信息].length;
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.作品著作权]) 知识产权数量.作品著作权 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.作品著作权].length;
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.软件著作权]) 知识产权数量.软件著作权 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.软件著作权].length;
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.外观设计专利]) 知识产权数量.外观设计专利 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.外观设计专利].length;
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.实用新型专利]) 知识产权数量.实用新型专利 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.实用新型专利].length;
if (知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利]) 知识产权数量.发明专利 = 知识产权Map[info.eId][enumConfig.IPRALLTYPE.发明专利].length;
let count = 知识产权数量.商标信息 + 知识产权数量.作品著作权 + 知识产权数量.软件著作权 + 知识产权数量.外观设计专利 + 知识产权数量.实用新型专利 + 知识产权数量.发明专利;
let addInfo = {
eId:info.eId,
enterpriseName:info.enterpriseName,
count, //知识产权总数
shangbiao:知识产权数量.商标信息,//商标信息
zuopingzhuzuo:知识产权数量.作品著作权,//作品著作权
ruanjianzhuzuo:知识产权数量.软件著作权,//软件著作权
waiguansheji:知识产权数量.外观设计专利,//外观设计专利
shiyongxinxing:知识产权数量.实用新型专利,//实用新型专利
faming:知识产权数量.发明专利,//发明专利
} }
dataList.push(addItem);
});
return {dataList, dataCount:allDataList.length}; resData.push(addInfo)
})
let paginatedData = await paginateArray(resData, page);
let dataList = paginatedData.data;
let dataCount = paginatedData.meta.totalItems;
return {dataList, dataCount};
} }
/** /**
...@@ -623,57 +668,107 @@ export async function iprList(enterpriseName, page) { ...@@ -623,57 +668,107 @@ export async function iprList(enterpriseName, page) {
* @param eId * @param eId
* @returns * @returns
*/ */
export async function getiprDetails(eId: string) { export async function getiprDetails(eId:string) {
let selectParam:any = {eId }; let 商标 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.商标, {eId}, ["tmId", "eId", "qccId", "regNo", "name", "categoryId", "category", "person", "imageUrl", "flowStatusDesc", "RegDate"]);
let 作品著作权 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.作品著作权, {eId}, ["crId", "eId", "owner", "category", "name", "registerNo", "registerDate", "publishDate", "finishDate", "iprUrl"]);
let manyTableInfo:any = {}; let 软件著作权 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.软件著作权, {eId}, ["scId", "eId", "category", "publishDate", "versionNo", "registerNo", "registerAperDate", "name", "shortName", "owner", "finishDevelopDate", "iprUrl"]);
manyTableInfo[TABLENAME.知识产权] = {column:["eId","iprName","year","iprUrl", "iprType"], where:{}}; let 专利 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.专利, {eId}, ["patentId", "eId", "category", "kindcode", "applicationNumber", "applicationDate", "publicationNumber", "publicationDate", "legalStatusDesc", "title", "agency", "kindCodeDesc", "IPCDesc", "inventorStringList", "assigneestringList", "iprUrl"]);
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["enterpriseName", "uscc"], manyTableInfo);
let 知识产权Map:any = {};
if (商标.length) {
商标.forEach( info => {
if (!知识产权Map[enumConfig.IPRALLTYPE.商标信息]) 知识产权Map[enumConfig.IPRALLTYPE.商标信息] = [];
知识产权Map[enumConfig.IPRALLTYPE.商标信息].push(info)
})
}
// 检查 resInfo 是否为空或 undefined if (作品著作权.length) {
if (!resInfo || resInfo.length === 0) { 作品著作权.forEach( info => {
return {}; // 或者返回其他合适的默认值 if (!知识产权Map[enumConfig.IPRALLTYPE.作品著作权]) 知识产权Map[enumConfig.IPRALLTYPE.作品著作权] = [];
知识产权Map[enumConfig.IPRALLTYPE.作品著作权].push(info)
})
} }
let iprTypeInfo = {}; if (软件著作权.length) {
软件著作权.forEach( info => {
if (!知识产权Map[enumConfig.IPRALLTYPE.软件著作权]) 知识产权Map[enumConfig.IPRALLTYPE.软件著作权] = [];
知识产权Map[enumConfig.IPRALLTYPE.软件著作权].push(info)
})
}
let fileConfig = {}; if (专利.length) {
fileConfig[enumConfig.IPRALLTYPE.软件著作权] = "softwareCopyright"; //1.发明公布,2.发明授权,3.实用新型,4.外观设计
fileConfig[enumConfig.IPRALLTYPE.发明专利] = "inventionPatent"; 专利.forEach( info => {
fileConfig[enumConfig.IPRALLTYPE.海外专利] = "overseasPatent"; if (!知识产权Map[enumConfig.IPRALLTYPE.发明专利]) 知识产权Map[enumConfig.IPRALLTYPE.发明专利] = [];
fileConfig[enumConfig.IPRALLTYPE.植物新品种] = "plantVariety"; if (!知识产权Map[enumConfig.IPRALLTYPE.实用新型专利]) 知识产权Map[enumConfig.IPRALLTYPE.实用新型专利] = [];
fileConfig[enumConfig.IPRALLTYPE.集成电路布图] = "icLayout"; if (!知识产权Map[enumConfig.IPRALLTYPE.外观设计专利]) 知识产权Map[enumConfig.IPRALLTYPE.外观设计专利] = [];
resInfo[0].enterprise_iprs.forEach(info => { let {kindcode} = info;
let {iprName, year, iprUrl, iprType} = info; if (kindcode == enumConfig.KUNDCODE.发明公布) {
let typeStr = fileConfig[iprType]; 知识产权Map[enumConfig.IPRALLTYPE.发明专利].push(info);
let yearStr = moment(year).format("YYYY"); } else if (kindcode == enumConfig.KUNDCODE.发明授权) {
if(!iprTypeInfo[typeStr]) iprTypeInfo[typeStr] = []; 知识产权Map[enumConfig.IPRALLTYPE.发明专利].push(info);
let iprUrlStr = []; } else if (kindcode == enumConfig.KUNDCODE.实用新型) {
//遍历iprUrl 知识产权Map[enumConfig.IPRALLTYPE.实用新型专利].push(info);
if (iprUrl) { } else if (kindcode == enumConfig.KUNDCODE.外观设计) {
let iprUrlArr = JSON.parse(iprUrl); 知识产权Map[enumConfig.IPRALLTYPE.外观设计专利].push(info);
for (let i = 0; i < iprUrlArr.length; i++) {
iprUrlStr.push(`${systemConfig.imgFileUrl}${iprUrlArr[i]}`);
} }
})
}
let iprTypeInfo = {};
let iprConf = [];
for (let key in 知识产权Map) {
let dataList:any = [];
let iprType = parseInt(key);
if (iprType == enumConfig.IPRALLTYPE.商标信息) {
iprConf = ["tmId", "name", "RegDate", "imageUrl"]
} }
iprTypeInfo[typeStr].push([
{ if (iprType == enumConfig.IPRALLTYPE.作品著作权) {
key:"著作名称", iprConf = ["crId", "name", "registerDate", "iprUrl"]
value: iprName }
},
{ if (iprType == enumConfig.IPRALLTYPE.软件著作权) {
key:"认定时间", iprConf = ["scId", "name", "registerAperDate", "iprUrl"]
value: `${yearStr}年`, }
},
{ if (iprType == enumConfig.IPRALLTYPE.外观设计专利) {
key:"证明材料", iprConf = ["patentId", "title", "publicationDate", "iprUrl"]
// value:iprUrl ? JSON.parse(iprUrl) : [] }
value:iprUrlStr
if (iprType == enumConfig.IPRALLTYPE.实用新型专利) {
iprConf = ["patentId", "title", "publicationDate", "iprUrl"]
}
if (iprType == enumConfig.IPRALLTYPE.发明专利) {
iprConf = ["patentId", "title", "publicationDate", "iprUrl"]
}
知识产权Map[key].forEach( info => {
let iprUrl = [];
let iprUrlList = JSON.parse(info[iprConf[3]]);
for (let i = 0; i < iprUrlList.length; i++) {
let url = `${systemConfig.imgFileUrl}${iprUrlList[i]}`;
iprUrl.push(url);
} }
])
}); dataList.push({
iprId:info[iprConf[0]],
iprName:info[iprConf[1]],
iprTime:info[iprConf[2]],
iprUrl,
timeNumber:new Date(info[iprConf[2]]).valueOf()
})
})
//倒序
dataList.sort(function(a, b) {
return b.timeNumber - a.timeNumber;
});
iprTypeInfo[key] = dataList;
}
return iprTypeInfo; return iprTypeInfo;
} }
......
...@@ -433,7 +433,7 @@ async function 工商信息(uscc) { ...@@ -433,7 +433,7 @@ async function 工商信息(uscc) {
// isNaturalPersonHolding: 工商信息., //是否自然人控股 // isNaturalPersonHolding: 工商信息., //是否自然人控股
// industry: 工商信息., //领域 // industry: 工商信息., //领域
// moreMail: 工商信息., //更多邮箱 // moreMail: 工商信息., //更多邮箱
logonAddress: 工商信息.Address, //注册地址 // logonAddress: 工商信息.Address, //注册地址
// tongXinDiZhi: 工商信息., //通信地址 // tongXinDiZhi: 工商信息., //通信地址
// liaison: 工商信息., //联系人 // liaison: 工商信息., //联系人
// liaisonPhone: 工商信息., //联系电话 // liaisonPhone: 工商信息., //联系电话
......
...@@ -14,6 +14,7 @@ import moment = require("moment"); ...@@ -14,6 +14,7 @@ import moment = require("moment");
import { changeAdd, extractData } from "../util/piecemeal"; import { changeAdd, extractData } from "../util/piecemeal";
import { EnterpriseApplyForConfig } from "../config/splitResult/enterprise"; import { EnterpriseApplyForConfig } from "../config/splitResult/enterprise";
import { changeEnumValue } from "../util/verificationEnum"; import { changeEnumValue } from "../util/verificationEnum";
import { systemSendMail } from "./mail";
...@@ -80,7 +81,7 @@ export async function enterpriseServiceOption(esId:string, fangKui:string) { ...@@ -80,7 +81,7 @@ export async function enterpriseServiceOption(esId:string, fangKui:string) {
*/ */
export async function enterpriseServiceEnd(esId:string, outcome:number, desc:string) { export async function enterpriseServiceEnd(esId:string, outcome:number, desc:string) {
let selectParam:any = {esId}; let selectParam:any = {esId};
let filesList = ["esId"]; let filesList = ["esId", "eId"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业服务表, selectParam, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业服务表, selectParam, filesList);
if ( !resInfo || !resInfo.esId) { if ( !resInfo || !resInfo.esId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
...@@ -89,7 +90,13 @@ export async function enterpriseServiceEnd(esId:string, outcome:number, desc:str ...@@ -89,7 +90,13 @@ export async function enterpriseServiceEnd(esId:string, outcome:number, desc:str
let updateInfo = {outcome, followUpStatus:enumConfig.FOLLOWUPSTATUS.已完成, desc, resolveTime:getMySqlMs()}; let updateInfo = {outcome, followUpStatus:enumConfig.FOLLOWUPSTATUS.已完成, desc, resolveTime:getMySqlMs()};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业服务表,updateInfo, {esId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业服务表,updateInfo, {esId});
return { //发送邮件
isSuccess:true let mailStr = "";
}; mailStr +=`<p>您的服务处理结果为:${changeEnumValue(enumConfig.OUTCOME, outcome)}</p>`;
} mailStr +=`<p>${desc}</p>`;
\ No newline at end of file await systemSendMail(resInfo.eId, enumConfig.MAILTYPE.结束企业服务, mailStr );
return { isSuccess:true };
}
...@@ -32,7 +32,7 @@ export async function getBaseData() { ...@@ -32,7 +32,7 @@ export async function getBaseData() {
"在孵企业":0, "在孵企业":0,
"迁出企业":0, "迁出企业":0,
"毕业企业":0, "毕业企业":0,
"出租率": "", // 添加出租率字段 // "出租率": "", // 添加出租率字段
// "园区面积":0,//新增 // "园区面积":0,//新增
// "产业规模": 0, // "产业规模": 0,
// "总资产投入金额": 0, // "总资产投入金额": 0,
...@@ -42,7 +42,7 @@ export async function getBaseData() { ...@@ -42,7 +42,7 @@ export async function getBaseData() {
fuhuaPinfen:0, //孵化器评分 没有该字段 fuhuaPinfen:0, //孵化器评分 没有该字段
fuhuaInfo:{ //孵化器信息 fuhuaInfo:{ //孵化器信息
}, },
entryInfo: {}, // 孵化器入驻信息 entryInfo: [], // 孵化器入驻信息
promotionInfo: {} // 运营推广信息 promotionInfo: {} // 运营推广信息
}; };
...@@ -93,7 +93,7 @@ export async function getBaseData() { ...@@ -93,7 +93,7 @@ export async function getBaseData() {
// baseData.fuhuaData["总资产投入金额"] = yuyiList.totalAssetInvestmentAmount; // baseData.fuhuaData["总资产投入金额"] = yuyiList.totalAssetInvestmentAmount;
// baseData.fuhuaData["引入机构数量"] = yuyiList.numberOfInstitutionsIntroduced; // baseData.fuhuaData["引入机构数量"] = yuyiList.numberOfInstitutionsIntroduced;
// baseData.fuhuaData["引入机构投资"] = yuyiList.introduceInstitutionalInvestment; // baseData.fuhuaData["引入机构投资"] = yuyiList.introduceInstitutionalInvestment;
baseData.fuhuaData["出租率"] = yuyiList.rentRate;//出租率 // baseData.fuhuaData["出租率"] = yuyiList.rentRate;//出租率
baseData.fuhuaInfo = { baseData.fuhuaInfo = {
"运营名称":yuyiList.operateName, "运营名称":yuyiList.operateName,
...@@ -116,38 +116,55 @@ export async function getBaseData() { ...@@ -116,38 +116,55 @@ export async function getBaseData() {
* 孵化器入驻信息 * 孵化器入驻信息
*/ */
let entryList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.入驻信息表, {}, [`info_enterId`, `building`, `occupancyRate`, `enteredEnterprises`]); let entryList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.入驻信息表, {}, [`info_enterId`, `building`, `occupancyRate`, `enteredEnterprises`]);
baseData.entryInfo = {"1":{"入驻率":"", "入驻企业":""}, "3":{"入驻率":"", "入驻企业":""}, "4":{"入驻率":"", "入驻企业":""}}; let entryInfo = {"1":{"入驻率":"", "入驻企业":""}, "3":{"入驻率":"", "入驻企业":""}, "4":{"入驻率":"", "入驻企业":""}};
if (entryList.length) { if (entryList.length) {
entryList.forEach( info => { entryList.forEach( info => {
// let building = changeEnumValue(BUILDING, info.building); // let building = changeEnumValue(BUILDING, info.building);
let building = info.building; let building = info.building;
if (!baseData.entryInfo[building]) { if (!entryInfo[building]) {
baseData.entryInfo[building] = { "入驻率": "", "入驻企业": "" }; entryInfo[building] = { "入驻率": "", "入驻企业": "" };
} }
baseData.entryInfo[building].入驻率 = info.occupancyRate; entryInfo[building].入驻率 = info.occupancyRate;
baseData.entryInfo[building].入驻企业 = info.enteredEnterprises; entryInfo[building].入驻企业 = info.enteredEnterprises;
}) })
} }
baseData.entryInfo = [];
for (let key in entryInfo) {
let dataList = [];
for (let name in entryInfo[key]) {
dataList.push({key:name, value:entryInfo[key][name]});
}
baseData.entryInfo.push({name:changeEnumValue(BUILDING, parseInt(key)), dataList});
}
/** /**
* 运营推广(次数) * 运营推广(次数)
*/ */
let promotionList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.运营推广信息表,{}, ["opId","promotionType", "promotionApp", "promotionNum"]); let promotionList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.运营推广信息表,{}, ["opId","promotionType", "promotionApp", "promotionNum"]);
baseData.promotionInfo = {"线上推广": {}, "线下推广": {}}; let promotionInfo = {"线上推广": {}, "线下推广": {}};
if (promotionList.length) { if (promotionList.length) {
promotionList.forEach( info => { promotionList.forEach( info => {
let appStr = ""; let appStr = "";
if (info.promotionType == PROMOTIONTYPE.线上推广) { if (info.promotionType == PROMOTIONTYPE.线上推广) {
appStr = changeEnumValue(ONLINEPROMOTION, info.promotionApp); appStr = changeEnumValue(ONLINEPROMOTION, info.promotionApp);
baseData.promotionInfo["线上推广"][appStr] = info.promotionNum; promotionInfo["线上推广"][appStr] = info.promotionNum;
} else if (info.promotionType == PROMOTIONTYPE.线下推广) { } else if (info.promotionType == PROMOTIONTYPE.线下推广) {
appStr = changeEnumValue(OFFLINEPROMOTION, info.promotionApp); appStr = changeEnumValue(OFFLINEPROMOTION, info.promotionApp);
baseData.promotionInfo["线下推广"][appStr] = info.promotionNum; promotionInfo["线下推广"][appStr] = info.promotionNum;
} }
}) })
} }
baseData.promotionInfo = {"线上推广": [], "线下推广": []};
for (let key in promotionInfo) {
let infoData = promotionInfo[key];
for (let name in infoData) {
baseData.promotionInfo[key].push({key:name, value:infoData[name]});
}
}
return {baseData}; return {baseData};
} }
...@@ -269,20 +286,31 @@ export async function getOperateData(year) { ...@@ -269,20 +286,31 @@ export async function getOperateData(year) {
} }
export function getYearList() { /**
// 获取当前年份 * 根据传入的年份生成当前年份与目标年份之间的所有年份列表
const currentTime = moment(); * @param targetYear 传入的年份
const sixMonthsAgo = currentTime.clone().subtract(6, 'year'); * @returns
*/
export function getYearList(targetYear) {
const currentYear = new Date().getFullYear(); const currentYear = new Date().getFullYear();
// 初始化一个空数组来存储年份 // 生成目标年份与当前年份之间的年份列表
const years = []; const startYear = Math.min(targetYear, currentYear);
const endYear = Math.max(targetYear, currentYear);
// 使用一个循环来添加当前年份到6年后的每一个年份到数组中 let years = [];
for (let i = 0; i <= 6; i++) { for (let year = startYear; year <= endYear; year++) {
years.push(currentYear - i); years.push(year);
}
// 如果结果不足5年,返回近5年列表
if (years.length < 5) {
years = [];
for (let year = currentYear - 4; year <= currentYear; year++) {
years.push(year);
}
} }
// 确保输出顺序始终为时间正序
years.sort((a, b) => { years.sort((a, b) => {
return a - b; return a - b;
}) })
...@@ -350,16 +378,22 @@ export async function getWorthDate() { ...@@ -350,16 +378,22 @@ export async function getWorthDate() {
/**纳税趋势 */ /**纳税趋势 */
let nashuiList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, {}); let nashuiList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, {});
let minNaShuiYear = Math.min( ...nashuiList.map(item => new Date(item.investmentDate).getFullYear()) );
let nashuiData = {}; if (!nashuiList.length) minNaShuiYear = new Date().getFullYear();
nashuiList.forEach( info => { let nashuiYear = getYearList(minNaShuiYear);
let year = moment(info.annual).format("YYYY");
if (!nashuiData[year]) nashuiData[year] = 0; for(let i = 0; i < nashuiYear.length; i++) {
nashuiData[year] += parseFloat(info.TXP); let nashui = 0;
}) nashuiList.forEach( info => {
for (let key in nashuiData) { let parsedStartTime = moment(info.annual);
worthData.TXP.push({key, value:nashuiData[key].toString()}); if (parsedStartTime.isValid() && parsedStartTime.year() === nashuiYear[i]) {
nashui += parseFloat(info.TXP);
}
})
worthData.TXP.push({key:nashuiYear[i], value:nashui.toString()});
} }
//X轴排序 //X轴排序
worthData.TXP.sort( (a, b) => { worthData.TXP.sort( (a, b) => {
return a.key - b.key; return a.key - b.key;
...@@ -368,7 +402,9 @@ export async function getWorthDate() { ...@@ -368,7 +402,9 @@ export async function getWorthDate() {
/**融资额趋势分析 */ /**融资额趋势分析 */
let 融资情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, []); let 融资情况 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业融资, {}, []);
let year = getYearList(); let minYear = Math.min( ...融资情况.map(item => new Date(item.investmentDate).getFullYear()) );
if (!融资情况.length) minYear = new Date().getFullYear();
let year = getYearList(minYear);
for(let i = 0; i < year.length; i++) { for(let i = 0; i < year.length; i++) {
let 融资金额 = 0; let 融资金额 = 0;
融资情况.forEach(info => { 融资情况.forEach(info => {
...@@ -381,33 +417,38 @@ export async function getWorthDate() { ...@@ -381,33 +417,38 @@ export async function getWorthDate() {
} }
/**就业人数趋势 */ /**就业人数趋势 */
let jiuyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, {}, {}); let 参保记录 = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.参保记录, {}, {});
let jiuyeInfo = {}; let minJiuyeYear = Math.min( ...参保记录.map(item => new Date(item.investmentDate).getFullYear()) );
jiuyeList.forEach( info => { if (!参保记录.length) minJiuyeYear = new Date().getFullYear();
let year = moment(info.annual).format("YYYY"); let jiuyeyear = getYearList(minJiuyeYear);
if (!jiuyeInfo[year]) jiuyeInfo[year] = 0; for(let i = 0; i < jiuyeyear.length; i++) {
if (info.zhuanKe) { let 就业人数 = 0;
jiuyeInfo[year] += parseInt(info.zhuanKe); 参保记录.forEach(info => {
} let 参保日期 = moment(info.annual);
if (info.benKe) { if (参保日期.isValid() && 参保日期.year() === jiuyeyear[i]) {
jiuyeInfo[year] += parseInt(info.benKe); if (info.zhuanKe) {
} 就业人数 += parseInt(info.zhuanKe);
if (info.shuoshi) { }
jiuyeInfo[year] += parseInt(info.shuoshi); if (info.benKe) {
} 就业人数 += parseInt(info.benKe);
if (info.boShi) { }
jiuyeInfo[year] += parseInt(info.boShi); if (info.shuoshi) {
} 就业人数 += parseInt(info.shuoshi);
if (info.boshiyishang) { }
jiuyeInfo[year] += parseInt(info.boshiyishang); if (info.boShi) {
} 就业人数 += parseInt(info.boShi);
if (info.qiTa) { }
jiuyeInfo[year] += parseInt(info.qiTa); if (info.boshiyishang) {
} 就业人数 += parseInt(info.boshiyishang);
}) }
for(let key in jiuyeInfo) { if (info.qiTa) {
worthData.jiuye.push({key, value:jiuyeInfo[key].toString()}); 就业人数 += parseInt(info.qiTa);
}
}
});
worthData.jiuye.push({key:jiuyeyear[i], value:就业人数.toString()});
} }
//X轴排序 //X轴排序
worthData.jiuye.sort( (a, b) => { worthData.jiuye.sort( (a, b) => {
return a.key - b.key; return a.key - b.key;
......
...@@ -18,8 +18,8 @@ let transporter = nodemailer.createTransport({ ...@@ -18,8 +18,8 @@ let transporter = nodemailer.createTransport({
} }
}); });
async function send(toMail, name, type, code?) { async function send(toMail, name, type, otherStr?, code?) {
let {title, mailStr} = getModel(name, type, code); let {title, mailStr} = getModel(name, type, otherStr, code);
// 设置邮件选项 // 设置邮件选项
let mailOptions = { let mailOptions = {
from: '羽翼 <1685675085@qq.com>', // 发送者地址 from: '羽翼 <1685675085@qq.com>', // 发送者地址
...@@ -41,7 +41,7 @@ async function send(toMail, name, type, code?) { ...@@ -41,7 +41,7 @@ async function send(toMail, name, type, code?) {
} }
function getModel(name, type, code?) { function getModel(name, type, otherStr?, code?) {
let str = ""; let str = "";
let title = ""; let title = "";
switch (type) { switch (type) {
...@@ -49,6 +49,10 @@ function getModel(name, type, code?) { ...@@ -49,6 +49,10 @@ function getModel(name, type, code?) {
str = "您提交的企业材料审核成功,欢迎入驻羽翼孵化器。"; str = "您提交的企业材料审核成功,欢迎入驻羽翼孵化器。";
title = "审核通过"; title = "审核通过";
break; break;
case MAILTYPE.结束企业服务:
str = otherStr;
title = "企业服务受理结果";
break;
} }
let mailStr = "" let mailStr = ""
...@@ -65,14 +69,14 @@ function getModel(name, type, code?) { ...@@ -65,14 +69,14 @@ function getModel(name, type, code?) {
* @param userId * @param userId
* @param type * @param type
*/ */
export async function systemSendMail(eId, type) { export async function systemSendMail(eId, type, otherStr?) {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, ["eId", "enterpriseName", "uscc", "mail"]); let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, ["eId", "enterpriseName", "uscc", "mail"]);
if (!userInfo || !userInfo.eId) throw new BizError(ERRORENUM.企业不存在); if (!userInfo || !userInfo.eId) throw new BizError(ERRORENUM.企业不存在);
if (!userInfo.mail) { if (!userInfo.mail) {
new BizError(ERRORENUM.该用户邮箱为空, eId, eId.enterpriseName); new BizError(ERRORENUM.该用户邮箱为空, eId, eId.enterpriseName);
} else { } else {
let result = await send(userInfo.mail, userInfo.enterpriseName, type); let result = await send(userInfo.mail, userInfo.enterpriseName, type, otherStr);
} }
return successResult(); return successResult();
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import moment = require("moment"); import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData"; import { operationalData, paginateArray, selectData, selectManyTableData } from "../data/operationalData";
import { changeAdd } from "../util/piecemeal"; import { changeAdd } from "../util/piecemeal";
import { changeEnumManyValue, changeEnumValue } from "../util/verificationEnum"; import { changeEnumManyValue, changeEnumValue } from "../util/verificationEnum";
import * as enumConfig from "../config/enum/enum"; import * as enumConfig from "../config/enum/enum";
...@@ -25,7 +25,7 @@ import { BUILDING } from "../config/enum/enum"; ...@@ -25,7 +25,7 @@ import { BUILDING } from "../config/enum/enum";
* @param building 园区楼号 * @param building 园区楼号
* @returns * @returns
*/ */
export async function enterpriseList(enterpriseName:string, page:number, logonStartTime:string, logonEndTime:string, building: number ) { export async function enterpriseList(enterpriseName:string, page:number, logonStartTime:Number, logonEndTime:Number, startTime:Number, endTime:Number, building: number ) {
let selectParam: any = {state: enumConfig.CHANGESTATE.已通过}; let selectParam: any = {state: enumConfig.CHANGESTATE.已通过};
if (enterpriseName) { if (enterpriseName) {
selectParam.enterpriseName = { "%like%": enterpriseName }; selectParam.enterpriseName = { "%like%": enterpriseName };
...@@ -36,21 +36,29 @@ import { BUILDING } from "../config/enum/enum"; ...@@ -36,21 +36,29 @@ import { BUILDING } from "../config/enum/enum";
// 主表字段过滤参数保持不变 // 主表字段过滤参数保持不变
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
// 子表配置:租赁信息
let leaseWhere:any = {};
if (building) leaseWhere.building = building;
// if (startTime && endTime) {
// leaseWhere["%literal%"] = `(enterprise_lease.startTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}'
// or enterprise_lease.endTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
// }
let manyTableInfo: any = {}; let manyTableInfo: any = {};
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime", "building", "roomNumber"], where: leaseWhere };
let rufuSelectParam = { state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } }; let rufuSelectParam = { state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } };
manyTableInfo[TABLENAME.企业孵化信息] = { column:["moveOutTime", "moveOutType", "startTime", "endTime"], where: rufuSelectParam}; manyTableInfo[TABLENAME.企业孵化信息] = { column:["moveOutTime", "moveOutType", "startTime", "endTime"], where: rufuSelectParam};
let resInfo = await selectManyTableData( OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page ); let resInfo = await selectManyTableData( OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo );
let resCount = await selectManyTableData( OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo );
/**查询租赁表信息 */
let dataList = []; let leaseWhere:any = {};
if (startTime && endTime) {
leaseWhere["%literal%"] = `(startTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}' or endTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
}
if (building) {
if (!leaseWhere["%literal%"]) leaseWhere["%literal%"] = `building = ${building}`;
else leaseWhere["%literal%"] += ` and building = ${building}`;
}
let zuLingList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.租赁信息, leaseWhere, ["eId", "area", "startTime", "endTime", "building", "roomNumber"]);
let zaifuMap = {};
if (zuLingList.length) {
zuLingList.forEach(info => {
zaifuMap[info.eId] = info;
})
}
let zaifuList = [];
for (let info of resInfo) { for (let info of resInfo) {
let { let {
eId, eId,
...@@ -59,17 +67,16 @@ import { BUILDING } from "../config/enum/enum"; ...@@ -59,17 +67,16 @@ import { BUILDING } from "../config/enum/enum";
logonTime, logonTime,
logonAddress, logonAddress,
qiYeGuiMo, qiYeGuiMo,
enterprise_leases,
enterprise_fuhuas, enterprise_fuhuas,
} = info; } = info;
// let rufuSelectParam = { eId, state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } }; if (Object.keys(zaifuMap).length) {
// let rufuInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, rufuSelectParam, ["moveOutTime", "moveOutType", "startTime", "endTime"]); if (!zaifuMap[eId]) continue;
// if (!Object.keys(rufuInfo).length) continue; }
let leasesTime = '-'; let leasesTime = '-';
if (enterprise_leases[0]?.startTime) { if (zaifuMap[eId]?.startTime) {
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(zaifuMap[eId].startTime).format("YYYY-MM-DD")}${moment(zaifuMap[eId].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-'; let fuhuaTime = '-';
...@@ -77,7 +84,7 @@ import { BUILDING } from "../config/enum/enum"; ...@@ -77,7 +84,7 @@ import { BUILDING } from "../config/enum/enum";
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`; fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
} }
dataList.push({ zaifuList.push({
eId, eId,
enterpriseName, // 企业名称 enterpriseName, // 企业名称
uscc, // 统一信用代码 uscc, // 统一信用代码
...@@ -86,24 +93,18 @@ import { BUILDING } from "../config/enum/enum"; ...@@ -86,24 +93,18 @@ import { BUILDING } from "../config/enum/enum";
qiYeGuiMo, // 企业规模 qiYeGuiMo, // 企业规模
fuhuaTime, // 孵化时间 fuhuaTime, // 孵化时间
leasesTime, // 租赁时间 leasesTime, // 租赁时间
area: enterprise_leases[0]?.area ? `${enterprise_leases[0].area}㎡` : '-', area: zaifuMap[eId]?.area ? `${zaifuMap[eId].area}㎡` : '-',
building: enterprise_leases[0]?.building || '-', building: zaifuMap[eId]?.building || '-',
// building:changeEnumValue(enumConfig.BUILDING, enterprise_leases[0].building), // building:changeEnumValue(enumConfig.BUILDING, enterprise_leases[0].building),
roomNumber: enterprise_leases[0]?.roomNumber || '-' roomNumber: zaifuMap[eId]?.roomNumber || '-'
}); });
} }
// let dataCount = 0; let paginatedData = await paginateArray(zaifuList, page);
// for (let info of resCount) { let dataList = paginatedData.data;
// let { eId } = info; let dataCount = paginatedData.meta.totalItems;
// let rufuSelectParam = { eId, state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } };
// let rufuInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, rufuSelectParam, ["moveOutTime", "moveOutType", "startTime", "endTime"]);
// if (!Object.keys(rufuInfo).length) continue;
// dataCount += 1;
// }
return { dataList, dataCount:resCount.length }; return {dataList, dataCount};
} }
...@@ -597,7 +598,7 @@ export async function enterpriseServiceById(eId:string) { ...@@ -597,7 +598,7 @@ export async function enterpriseServiceById(eId:string) {
/** /**
* 加了注册时间,租赁时间,园区楼号筛选的 * 加了注册时间,租赁时间,园区楼号筛选的
*/ */
export async function dwEnterpriseTable(enterpriseName:string, type:number, logonStartTime:string, logonEndTime:string, building: number ) { export async function dwEnterpriseTable(enterpriseName:string, type:number, logonStartTime:number, logonEndTime:number, startTime:number, endTime:number, building: number ) {
let files = [{key:"企业名称",value:"enterpriseName"}, let files = [{key:"企业名称",value:"enterpriseName"},
{key:"统一信用代码",value:"uscc"}, {key:"统一信用代码",value:"uscc"},
{key:"注册时间",value:"logonTime"}, {key:"注册时间",value:"logonTime"},
...@@ -609,30 +610,39 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo ...@@ -609,30 +610,39 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo
{key:"楼号",value:"building"},//楼号 {key:"楼号",value:"building"},//楼号
{key:"室号",value:"roomNumber"}, {key:"室号",value:"roomNumber"},
]; ];
let selectParam: any = {state: enumConfig.CHANGESTATE.已通过}; let selectParam: any = {state: enumConfig.CHANGESTATE.已通过};
// 主表字段过滤参数保持不变 if (enterpriseName) {
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; selectParam.enterpriseName = { "%like%": enterpriseName };
// 子表配置:租赁信息 }
let leaseWhere:any = {}; if (logonStartTime && logonEndTime) {
if (type == 1) { selectParam.logonTime = {"%between%":[getMySqlMs(logonStartTime), getMySqlMs(logonEndTime)]}
if (enterpriseName) {
selectParam.enterpriseName = { "%like%": enterpriseName };
}
if (logonStartTime && logonEndTime) {
selectParam.logonTime = {"%between%":[getMySqlMs(logonStartTime), getMySqlMs(logonEndTime)]}
}
if (building) leaseWhere.building = building;
} }
// if (startTime && endTime) {
// leaseWhere["%literal%"] = `(enterprise_lease.startTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}'
// or enterprise_lease.endTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
// }
// 主表字段过滤参数保持不变
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo: any = {}; let manyTableInfo: any = {};
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime", "building", "roomNumber"], where: leaseWhere };
let rufuSelectParam = { state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } }; let rufuSelectParam = { state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } };
manyTableInfo[TABLENAME.企业孵化信息] = { column:["moveOutTime", "moveOutType", "startTime", "endTime"], where: rufuSelectParam}; manyTableInfo[TABLENAME.企业孵化信息] = { column:["moveOutTime", "moveOutType", "startTime", "endTime"], where: rufuSelectParam};
let resInfo = await selectManyTableData( OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo ); let resInfo = await selectManyTableData( OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo );
/**查询租赁表信息 */
let leaseWhere:any = {};
if (startTime && endTime) {
leaseWhere["%literal%"] = `(startTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}' or endTime BETWEEN '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
}
if (building) {
if (!leaseWhere["%literal%"]) leaseWhere["%literal%"] = `building = ${building}`;
else leaseWhere["%literal%"] += ` and building = ${building}`;
}
let zuLingList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.租赁信息, leaseWhere, ["eId", "area", "startTime", "endTime", "building", "roomNumber"]);
let zaifuMap = {};
if (zuLingList.length) {
zuLingList.forEach(info => {
zaifuMap[info.eId] = info;
})
}
let dataList = []; let dataList = [];
let titleList = [] let titleList = []
...@@ -651,23 +661,23 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo ...@@ -651,23 +661,23 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo
logonTime, logonTime,
logonAddress, logonAddress,
qiYeGuiMo, qiYeGuiMo,
enterprise_leases, enterprise_fuhuas,
enterprise_fuhuas
} = info; } = info;
let rufuSelectParam = { eId, state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] } }; if (Object.keys(zaifuMap).length) {
let rufuInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, rufuSelectParam, ["moveOutTime", "moveOutType", "startTime", "endTime"]); if (!zaifuMap[eId]) continue;
if (!Object.keys(rufuInfo).length) continue; }
let leasesTime = '-'; let leasesTime = '-';
if (enterprise_leases[0]?.startTime) { if (zaifuMap[eId]?.startTime) {
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(zaifuMap[eId].startTime).format("YYYY-MM-DD")}${moment(zaifuMap[eId].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-'; let fuhuaTime = '-';
if (enterprise_fuhuas[0]?.startTime) { if (enterprise_fuhuas[0]?.startTime) {
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`; fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
} }
let subList = []; let subList = [];
valueList.forEach(subInfo => { valueList.forEach(subInfo => {
if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称 if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称
...@@ -677,12 +687,12 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo ...@@ -677,12 +687,12 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, logo
if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模 if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模
if (subInfo == "fuhuaStartTime") subList.push(fuhuaTime);//孵化时间 if (subInfo == "fuhuaStartTime") subList.push(fuhuaTime);//孵化时间
if (subInfo == "leaseStartTime") subList.push(leasesTime);//租赁时间 if (subInfo == "leaseStartTime") subList.push(leasesTime);//租赁时间
if (subInfo == "area") subList.push(enterprise_leases[0]?.area ? `${enterprise_leases[0].area}㎡` : '-');//租赁面积 if (subInfo == "area") subList.push(zaifuMap[eId]?.area ? `${zaifuMap[eId].area}㎡` : '-');//租赁面积
if (subInfo == "building") subList.push(enterprise_leases[0]?.building || '-');//楼号 if (subInfo == "building") subList.push(zaifuMap[eId]?.building || '-');//楼号
if (subInfo == "roomNumber") subList.push(enterprise_leases[0]?.roomNumber || '-');//室号 if (subInfo == "roomNumber") subList.push(zaifuMap[eId]?.roomNumber || '-');//室号
}); });
dataList.push(subList); dataList.push(subList);
} }
return {dataList}; return {dataList};
......
...@@ -111,7 +111,7 @@ export const YuYiBaseDataUpdateConfig = { ...@@ -111,7 +111,7 @@ export const YuYiBaseDataUpdateConfig = {
synopsis:{type:"String"},//简介 synopsis:{type:"String"},//简介
totalArea:{type:"String"},//孵化器总面积 totalArea:{type:"String"},//孵化器总面积
zaifuArea:{type:"String"},//在孵面积 zaifuArea:{type:"String"},//在孵面积
rentRate:{type:"String"},//出租率 // rentRate:{type:"String"},//出租率
// uscc:{type:"String"},//统一信用代码 // uscc:{type:"String"},//统一信用代码
entryInfo:{type:"object"}, //孵化器入驻信息 entryInfo:{type:"object"}, //孵化器入驻信息
......
...@@ -29,9 +29,9 @@ export enum TABLENAME { ...@@ -29,9 +29,9 @@ export enum TABLENAME {
企业资质 ='enterprise_qualification', 企业资质 ='enterprise_qualification',
参保记录 ='enterprise_canbao', 参保记录 ='enterprise_canbao',
创业团队 ='enterprise_team', 创业团队 ='enterprise_team',
知识产权 ='enterprise_ipr', // 知识产权 ='enterprise_ipr',
法人信息表 ='enterprise_legal_person', 法人信息表 ='enterprise_legal_person',
企业专利表 ='enterprise_patent', // 企业专利表 ='enterprise_patent',
园区通知表 ='garden_notice', 园区通知表 ='garden_notice',
园区活动表 ='garden_activity', 园区活动表 ='garden_activity',
企业服务表 ='enterprise_service', 企业服务表 ='enterprise_service',
...@@ -55,6 +55,10 @@ export enum TABLENAME { ...@@ -55,6 +55,10 @@ export enum TABLENAME {
入孵申请审批表 ='approval_history', 入孵申请审批表 ='approval_history',
入驻信息表 = "info_enter", 入驻信息表 = "info_enter",
运营推广信息表 = "info_operation_promotion", 运营推广信息表 = "info_operation_promotion",
商标 = "trade_mark",
作品著作权 = "copy_right",
软件著作权 = "software_copyright",
专利 = "patent",
} }
...@@ -69,9 +73,9 @@ export enum TABLEID { ...@@ -69,9 +73,9 @@ export enum TABLEID {
企业资质 ='qu', 企业资质 ='qu',
参保记录 ='cb', 参保记录 ='cb',
创业团队 ='te', 创业团队 ='te',
知识产权 ='ipr', // 知识产权 ='ipr',
法人信息表 ='ps', 法人信息表 ='ps',
企业专利表 ='pe', // 企业专利表 ='pe',
园区通知表 ='nt', 园区通知表 ='nt',
园区活动表 ='ac', 园区活动表 ='ac',
企业服务表 ='es', 企业服务表 ='es',
......
...@@ -263,15 +263,33 @@ export enum QUARTER { ...@@ -263,15 +263,33 @@ export enum QUARTER {
* 知识产权 全类型 * 知识产权 全类型
*/ */
export enum IPRALLTYPE { export enum IPRALLTYPE {
软件著作权 = 1, 商标信息 = 1,
专利 = 100, 作品著作权,
发明专利 = 101, 软件著作权,
海外专利 = 102, 外观设计专利,
其他 = 200, 实用新型专利,
植物新品种 = 201, 发明专利
集成电路布图 =202 // 软件著作权 = 1,
// 专利 = 100,
// 发明专利 = 101,
// 海外专利 = 102,
// 其他 = 200,
// 植物新品种 = 201,
// 集成电路布图 =202
} }
/**
* 专利表属于知识产权类型中的详细分类
*/
export enum KUNDCODE {
发明公布 = 1,
发明授权,
实用新型,
外观设计
}
export enum IPRTYPE { export enum IPRTYPE {
软件著作权 = 1, 软件著作权 = 1,
专利 = 100, 专利 = 100,
...@@ -377,6 +395,7 @@ export enum RISKTYPE { ...@@ -377,6 +395,7 @@ export enum RISKTYPE {
*/ */
export enum MAILTYPE { export enum MAILTYPE {
通过入孵材料审核 = 1, 通过入孵材料审核 = 1,
结束企业服务,
} }
......
...@@ -33,7 +33,7 @@ export const YuYiBaseDataConfig = { ...@@ -33,7 +33,7 @@ export const YuYiBaseDataConfig = {
synopsis:{key:"简介"}, synopsis:{key:"简介"},
totalArea:{key:"孵化器总面积"}, totalArea:{key:"孵化器总面积"},
zaifuArea:{key:"在孵面积"}, zaifuArea:{key:"在孵面积"},
rentRate:{key:"出租率"}, // rentRate:{key:"出租率"},
// ziyonArea:{key:"自用面积"}, // ziyonArea:{key:"自用面积"},
// parkArea:{key:"园区面积"},//新增 // parkArea:{key:"园区面积"},//新增
// enterpriseNum:{key:"企业数量"}, // enterpriseNum:{key:"企业数量"},
......
...@@ -98,4 +98,38 @@ export async function selectManyTableData(url, tableName, param, column, includ ...@@ -98,4 +98,38 @@ export async function selectManyTableData(url, tableName, param, column, includ
if (result.code != 200) throw new BizError(ERRORENUM.数据联合查询失败, result.code); if (result.code != 200) throw new BizError(ERRORENUM.数据联合查询失败, result.code);
if (!result.data || !result.data.data) throw new BizError(ERRORENUM.数据联合查询失败, JSON.stringify(result.data)); if (!result.data || !result.data.data) throw new BizError(ERRORENUM.数据联合查询失败, JSON.stringify(result.data));
return result.data.data; return result.data.data;
} }
\ No newline at end of file
/**
* 数组分页函数
* @param {Array} data - 原始数组
* @param {Number} page - 当前页码(从1开始)
* @param {Number} pageSize - 每页数据量
* @returns {Object} 包含分页数据和元信息的对象
*/
export async function paginateArray(data, page = 1, pageSize = 10) {
// 校验参数合法性
page = Math.max(1, page) || 1;
pageSize = Math.max(1, pageSize) || 10;
// 计算分页索引
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
// 切割数据并生成结果
const paginatedData = data.slice(startIndex, endIndex);
return {
data: paginatedData,
meta: {
currentPage: page, //当前页码
pageSize: pageSize, //每页数据量
totalItems: data.length, //总条数
totalPages: Math.ceil(data.length / pageSize), //总页数
hasNextPage: endIndex < data.length, // 是否有下一页
hasPrevPage: startIndex > 0 // 是否有上一页
}
};
}
...@@ -337,8 +337,8 @@ async function outPutTalentList(req, res) { ...@@ -337,8 +337,8 @@ async function outPutTalentList(req, res) {
*/ */
async function enterpriseList(req, res) { async function enterpriseList(req, res) {
const UserInfo = req.userInfo; const UserInfo = req.userInfo;
let {enterpriseName, page, logonStartTime, logonEndTime, building } = req.body let {enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building } = req.body
let result = await zaiFuBiz.enterpriseList(enterpriseName, page, logonStartTime, logonEndTime, building); let result = await zaiFuBiz.enterpriseList(enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building);
res.success(result); res.success(result);
} }
...@@ -430,8 +430,8 @@ async function enterpriseDetails(req, res) { ...@@ -430,8 +430,8 @@ async function enterpriseDetails(req, res) {
* @param res * @param res
*/ */
async function dwEnterpriseList(req, res) { async function dwEnterpriseList(req, res) {
let {enterpriseName, type, logonStartTime, logonEndTime, building } = req.body let {enterpriseName, type, logonStartTime, logonEndTime, startTime, endTime, building } = req.body
let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, logonStartTime, logonEndTime, building ); let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, logonStartTime, logonEndTime, startTime, endTime, building );
// let {enterpriseName, type, files} = req.body // let {enterpriseName, type, files} = req.body
// let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, files); // let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, files);
......
...@@ -243,76 +243,76 @@ export async function data1210(req, res) { ...@@ -243,76 +243,76 @@ export async function data1210(req, res) {
if (subList[31]) { if (subList[31]) {
for(let i = 0; i < parseInt(subList[31]); i++) { // for(let i = 0; i < parseInt(subList[31]); i++) {
let enterprise_2022iprInfo = { // let enterprise_2022iprInfo = {
iprId:randomId(TABLEID.知识产权), // iprId:randomId(TABLEID.知识产权),
eId, // eId,
year:getMySqlMs("2022-01-01 00:00:00"), // year:getMySqlMs("2022-01-01 00:00:00"),
number:1, // number:1,
iprType:IPRALLTYPE.软件著作权, // iprType:IPRALLTYPE.软件著作权,
selectedValue:null, // selectedValue:null,
iprName:null, // iprName:null,
iprUrl:null, // iprUrl:null,
// softwareCopyrightCount:null, // // softwareCopyrightCount:null,
// inventionPatentCount:null, // // inventionPatentCount:null,
// overseasPatentCount:null, // // overseasPatentCount:null,
// plantVarietyCount:null, // // plantVarietyCount:null,
// icLayoutCount:null, // // icLayoutCount:null,
} // }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022iprInfo, {}); // await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022iprInfo, {});
} // }
} }
if (subList[32]) { if (subList[32]) {
for(let i = 0; i < parseInt(subList[32]); i++) { // for(let i = 0; i < parseInt(subList[32]); i++) {
let enterprise_2023iprInfo = { // let enterprise_2023iprInfo = {
iprId:randomId(TABLEID.知识产权), // iprId:randomId(TABLEID.知识产权),
eId, // eId,
year:getMySqlMs("2023-01-01 00:00:00"), // year:getMySqlMs("2023-01-01 00:00:00"),
number:1, // number:1,
iprType:IPRALLTYPE.软件著作权, // iprType:IPRALLTYPE.软件著作权,
selectedValue:null, // selectedValue:null,
iprName:null, // iprName:null,
iprUrl:null, // iprUrl:null,
// softwareCopyrightCount:null, // // softwareCopyrightCount:null,
// inventionPatentCount:null, // // inventionPatentCount:null,
// overseasPatentCount:null, // // overseasPatentCount:null,
// plantVarietyCount:null, // // plantVarietyCount:null,
// icLayoutCount:null, // // icLayoutCount:null,
} // }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2023iprInfo, {}); // await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2023iprInfo, {});
} // }
} }
if (subList[33]) { if (subList[33]) {
for(let i = 0; i < parseInt(subList[33]); i++) { // for(let i = 0; i < parseInt(subList[33]); i++) {
let enterprise_2022patent = { // let enterprise_2022patent = {
iprId:randomId(TABLEID.知识产权), // iprId:randomId(TABLEID.知识产权),
eId, // eId,
year:getMySqlMs("2022-01-01 00:00:00"), // year:getMySqlMs("2022-01-01 00:00:00"),
number:1, // number:1,
iprType:IPRALLTYPE.发明专利, // iprType:IPRALLTYPE.发明专利,
selectedValue:null, // selectedValue:null,
iprName:null, // iprName:null,
iprUrl:null, // iprUrl:null,
} // }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022patent, {}); // await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022patent, {});
} // }
} }
if (subList[34]) { if (subList[34]) {
for(let i = 0; i < parseInt(subList[34]); i++) { // for(let i = 0; i < parseInt(subList[34]); i++) {
let enterprise_2022patent = { // let enterprise_2022patent = {
iprId:randomId(TABLEID.知识产权), // iprId:randomId(TABLEID.知识产权),
eId, // eId,
year:getMySqlMs("2023-01-01 00:00:00"), // year:getMySqlMs("2023-01-01 00:00:00"),
number:1, // number:1,
iprType:IPRALLTYPE.发明专利, // iprType:IPRALLTYPE.发明专利,
selectedValue:null, // selectedValue:null,
iprName:null, // iprName:null,
iprUrl:null, // iprUrl:null,
} // }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022patent, {}); // await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.知识产权, enterprise_2022patent, {});
} // }
} }
if (subList[35] || subList[36] || subList[37] || subList[38]) { if (subList[35] || subList[36] || subList[37] || subList[38]) {
......
...@@ -28,9 +28,7 @@ const config = { ...@@ -28,9 +28,7 @@ const config = {
"/public/policytype":enumConfig.POLICYTYPE,// 政策文件类型 "/public/policytype":enumConfig.POLICYTYPE,// 政策文件类型
"/public/clientpolicytype":enumConfig.CLIENTPOLICYTYPE,// 政策文件类型-前端用 "/public/clientpolicytype":enumConfig.CLIENTPOLICYTYPE,// 政策文件类型-前端用
"/public/building":enumConfig.BUILDING,// 园区楼号 "/public/building":enumConfig.BUILDING,// 园区楼号
"/public/ipralltype":enumConfig.IPRALLTYPE, //企查查知识产权类型
// "/public/output/basedata":outputEnumConfig.BASEDATA, // "/public/output/basedata":outputEnumConfig.BASEDATA,
// "/public/output/opreatdata":outputEnumConfig.OPERATIONDATA, // "/public/output/opreatdata":outputEnumConfig.OPERATIONDATA,
// "/public/output/financingdata":outputEnumConfig.FINANCINGDATA, // "/public/output/financingdata":outputEnumConfig.FINANCINGDATA,
......
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