Commit f91d1d4f by chenjinjing

no message

parent 652d7636
No preview for this file type
No preview for this file type
...@@ -313,10 +313,11 @@ function formatDateTime(timestamp: number): string { ...@@ -313,10 +313,11 @@ function formatDateTime(timestamp: number): string {
const year = date.getFullYear(); const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0'); const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0');
const hours = date.getHours().toString().padStart(2, '0'); // const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0'); // const minutes = date.getMinutes().toString().padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}`; // return `${year}-${month}-${day} ${hours}:${minutes}`;
return `${year}-${month}-${day}`;
} }
......
...@@ -15,6 +15,7 @@ import { findTrackListByParam } from "../data/track"; ...@@ -15,6 +15,7 @@ import { findTrackListByParam } from "../data/track";
import { TRACKTYPE } from "../config/enum"; import { TRACKTYPE } from "../config/enum";
import { changeEnumValue } from "../util/verificationEnum"; import { changeEnumValue } from "../util/verificationEnum";
import * as labelEnum from "../config/enum/labelEnum"; import * as labelEnum from "../config/enum/labelEnum";
import { SUBDIVIDE } from "../config/enum/industryEnum";
let md5 = require("md5"); let md5 = require("md5");
...@@ -225,7 +226,8 @@ export async function adminUserCreate(param) { ...@@ -225,7 +226,8 @@ export async function adminUserCreate(param) {
// { id: PROPERTY.汽车创新港, name: "汽车创新港" }, // { id: PROPERTY.汽车创新港, name: "汽车创新港" },
// { id: PROPERTY.汽车城大厦, name: "汽车城大厦" }, // { id: PROPERTY.汽车城大厦, name: "汽车城大厦" },
// { id: PROPERTY.嘉亭荟, name: "嘉亭荟" }, // { id: PROPERTY.嘉亭荟, name: "嘉亭荟" },
// { id: PROPERTY.智驾园, name: "智驾园" }, // { id: PROPERTY.上海智慧出行设计谷, name: "上海智慧出行设计谷" },
// { id: PROPERTY.同济科技园, name: "同济科技园" },
// { id: PROPERTY.同济科技园, name: "同济科技园" } // { id: PROPERTY.同济科技园, name: "同济科技园" }
// ]; // ];
...@@ -263,7 +265,7 @@ export async function homePage() { ...@@ -263,7 +265,7 @@ export async function homePage() {
"企业总数": 0, "企业总数": 0,
"100平方公里范围企业": 0, "100平方公里范围企业": 0,
"3.73平方公里实体租赁": 0, "3.73平方公里实体租赁": 0,
"关联入驻企业": 0, "软信类企业": 0,
"小台账企业": 0, "小台账企业": 0,
"重点稳商": 0, "重点稳商": 0,
/**较上月变化量 */ /**较上月变化量 */
...@@ -296,7 +298,7 @@ export async function homePage() { ...@@ -296,7 +298,7 @@ export async function homePage() {
let currentMonthStats = { let currentMonthStats = {
"100平方公里范围企业": 0, "100平方公里范围企业": 0,
"3.73平方公里实体租赁": 0, "3.73平方公里实体租赁": 0,
"关联入驻企业": 0, "软信类企业": 0,
"小台账企业": 0, "小台账企业": 0,
"重点稳商": 0, "重点稳商": 0,
"总入驻企业": 0 "总入驻企业": 0
...@@ -305,7 +307,7 @@ export async function homePage() { ...@@ -305,7 +307,7 @@ export async function homePage() {
let lastMonthStats = { let lastMonthStats = {
"100平方公里范围企业": 0, "100平方公里范围企业": 0,
"3.73平方公里实体租赁": 0, "3.73平方公里实体租赁": 0,
"关联入驻企业": 0, "软信类企业": 0,
"小台账企业": 0, "小台账企业": 0,
"重点稳商": 0, "重点稳商": 0,
"总入驻企业": 0 "总入驻企业": 0
...@@ -329,7 +331,7 @@ export async function homePage() { ...@@ -329,7 +331,7 @@ export async function homePage() {
currentMonthStats["3.73平方公里实体租赁"] += 1; currentMonthStats["3.73平方公里实体租赁"] += 1;
break; break;
case ENTERPRISESYSTEMLABEL.软件关联入驻企业: case ENTERPRISESYSTEMLABEL.软件关联入驻企业:
currentMonthStats["关联入驻企业"] += 1; currentMonthStats["软信类企业"] += 1;
break; break;
case ENTERPRISESYSTEMLABEL.小台账企业: case ENTERPRISESYSTEMLABEL.小台账企业:
currentMonthStats["小台账企业"] += 1; currentMonthStats["小台账企业"] += 1;
...@@ -368,7 +370,7 @@ export async function homePage() { ...@@ -368,7 +370,7 @@ export async function homePage() {
lastMonthStats["3.73平方公里实体租赁"] += 1; lastMonthStats["3.73平方公里实体租赁"] += 1;
break; break;
case ENTERPRISESYSTEMLABEL.软件关联入驻企业: case ENTERPRISESYSTEMLABEL.软件关联入驻企业:
lastMonthStats["关联入驻企业"] += 1; lastMonthStats["软信类企业"] += 1;
break; break;
case ENTERPRISESYSTEMLABEL.小台账企业: case ENTERPRISESYSTEMLABEL.小台账企业:
lastMonthStats["小台账企业"] += 1; lastMonthStats["小台账企业"] += 1;
...@@ -384,14 +386,14 @@ export async function homePage() { ...@@ -384,14 +386,14 @@ export async function homePage() {
// 设置当前所有企业数量到汇总数据 // 设置当前所有企业数量到汇总数据
汇总数据["100平方公里范围企业"] = currentMonthStats["100平方公里范围企业"]; 汇总数据["100平方公里范围企业"] = currentMonthStats["100平方公里范围企业"];
汇总数据["3.73平方公里实体租赁"] = currentMonthStats["3.73平方公里实体租赁"]; 汇总数据["3.73平方公里实体租赁"] = currentMonthStats["3.73平方公里实体租赁"];
汇总数据["关联入驻企业"] = currentMonthStats["关联入驻企业"]; 汇总数据["软信类企业"] = currentMonthStats["软信类企业"];
汇总数据["小台账企业"] = currentMonthStats["小台账企业"]; 汇总数据["小台账企业"] = currentMonthStats["小台账企业"];
汇总数据["重点稳商"] = currentMonthStats["重点稳商"]; 汇总数据["重点稳商"] = currentMonthStats["重点稳商"];
// 计算变化量(本月数据 - 上月数据) // 计算变化量(本月数据 - 上月数据)
汇总数据.较上月100平方公里范围企业变化 = currentMonthStats["100平方公里范围企业"] - lastMonthStats["100平方公里范围企业"]; 汇总数据.较上月100平方公里范围企业变化 = currentMonthStats["100平方公里范围企业"] - lastMonthStats["100平方公里范围企业"];
汇总数据["较上月3.73平方公里实体租赁变化"] = currentMonthStats["3.73平方公里实体租赁"] - lastMonthStats["3.73平方公里实体租赁"]; 汇总数据["较上月3.73平方公里实体租赁变化"] = currentMonthStats["3.73平方公里实体租赁"] - lastMonthStats["3.73平方公里实体租赁"];
汇总数据.较上月关联入驻企业变化 = currentMonthStats["关联入驻企业"] - lastMonthStats["关联入驻企业"]; 汇总数据.较上月关联入驻企业变化 = currentMonthStats["软信类企业"] - lastMonthStats["软信类企业"];
汇总数据.较上月小台账企业变化 = currentMonthStats["小台账企业"] - lastMonthStats["小台账企业"]; 汇总数据.较上月小台账企业变化 = currentMonthStats["小台账企业"] - lastMonthStats["小台账企业"];
汇总数据.较上月重点稳商变化 = currentMonthStats["重点稳商"] - lastMonthStats["重点稳商"]; 汇总数据.较上月重点稳商变化 = currentMonthStats["重点稳商"] - lastMonthStats["重点稳商"];
汇总数据.较上月总入驻企业变化 = currentMonthStats["总入驻企业"] - lastMonthStats["总入驻企业"]; 汇总数据.较上月总入驻企业变化 = currentMonthStats["总入驻企业"] - lastMonthStats["总入驻企业"];
...@@ -419,8 +421,9 @@ export async function homePage() { ...@@ -419,8 +421,9 @@ export async function homePage() {
{ id: PROPERTY.汽车创新港, name: "汽车创新港" }, { id: PROPERTY.汽车创新港, name: "汽车创新港" },
{ id: PROPERTY.汽车城大厦, name: "汽车城大厦" }, { id: PROPERTY.汽车城大厦, name: "汽车城大厦" },
{ id: PROPERTY.嘉亭荟, name: "嘉亭荟" }, { id: PROPERTY.嘉亭荟, name: "嘉亭荟" },
{ id: PROPERTY.智驾园, name: "智驾园" }, { id: PROPERTY.上海智慧出行设计谷, name: "上海智慧出行设计谷" },
{ id: PROPERTY.同济科技园, name: "同济科技园" } { id: PROPERTY.同济科技园, name: "同济科技园" },
{ id: PROPERTY.国际汽车城软件园, name: "国际汽车城软件园" }
]; ];
// 初始化统计数组 // 初始化统计数组
...@@ -448,7 +451,53 @@ export async function homePage() { ...@@ -448,7 +451,53 @@ export async function homePage() {
} }
}); });
return {汇总数据, 企业服务追踪, 实体租赁企业场地分布};
/**行业领域分布 */
/** 查询所有小台账企业数据 */
let selectParam = {
"labels": {
"$elemMatch": {
"labelId": { "$in": [labelEnum.BASELABEL.小台账企业.toString()] }
}
}
}
let enterpriseXTZDbList = await enterpriseData.findEnterpriseListByParam(selectParam);
let 行业领域分布 = [];
// 定义物业列表(按你的需求顺序)
let subDivideList = [
{ id: SUBDIVIDE.智能载体, name: "智能载体" },
{ id: SUBDIVIDE.云平台及云服务, name: "云平台及云服务" },
{ id: SUBDIVIDE.应用软件及服务, name: "应用软件及服务" },
{ id: SUBDIVIDE.AI及人工智能大模型, name: "AI及人工智能大模型" },
{ id: SUBDIVIDE.电子架构及中间件, name: "电子架构及中间件" },
{ id: SUBDIVIDE.基础软件及操作系统, name: "基础软件及操作系统" },
{ id: SUBDIVIDE.智能芯片, name: "智能芯片" },
{ id: SUBDIVIDE.智能硬件及大算力平台, name: "智能硬件及大算力平台" },
];
// 初始化统计数组
subDivideList.forEach(subDivide => {
行业领域分布.push({
key: subDivide.name,
value: 0
});
});
enterpriseXTZDbList.forEach( info => {
let subDivideValue = info.subDivide;
// 转换为数字类型以确保类型匹配
let subDivideValueNum = Number(subDivideValue);
// 找到对应的物业并计数
let subDivideIndex = subDivideList.findIndex(s => s.id === subDivideValueNum);
if (subDivideIndex !== -1) {
行业领域分布[subDivideIndex].value += 1;
}
})
return {汇总数据, 企业服务追踪, 实体租赁企业场地分布, 行业领域分布};
} }
......
...@@ -116,20 +116,25 @@ export async function enterpriseCreate(param) { ...@@ -116,20 +116,25 @@ export async function enterpriseCreate(param) {
* @param dataType 不传=所有企业、1=100平方公里、2=3.73平方公里、3=软件关联入驻企业、4=小台账企业、5=重点稳商企业 * @param dataType 不传=所有企业、1=100平方公里、2=3.73平方公里、3=软件关联入驻企业、4=小台账企业、5=重点稳商企业
* @param name 企业名称 * @param name 企业名称
* @param industry 行业领域 * @param industry 行业领域
* @param subDivide 细分行业领域
* @param parkEntryTime 入驻年份 * @param parkEntryTime 入驻年份
* @param logonTime 企业成立年份 * @param logonTime 企业成立年份
* @param labelIdList 企业标签 可多选 * @param labelIdList 企业标签 可多选
* @param page 页 * @param page 页
*/ */
export async function enterpriseList(dataType:number, name:string, industry, parkEntryTime:number, logonTime:number, labelIdList, page:number) { export async function enterpriseList(dataType:number, name:string, industry, subDivide, parkEntryTime:number, logonTime:number, labelIdList, page:number) {
let selectParam:any = {}; let selectParam:any = {};
if (name) { if (name) {
selectParam.name = {"$regex":`${name}`}; selectParam.name = {"$regex":`${name}`};
} }
if (industry && industry.length > 0) { if (industry && industry.length > 0) {
verificationEnumTools.eccEnumValue('管理后台获取在谈在跟列表', 'industry', industryEnum.ALLINDUSTRY, industry); verificationEnumTools.eccEnumValue('管理后台获取企业库列表', 'industry', industryEnum.ALLINDUSTRY, industry);
selectParam.industry = {"$in":industry}; selectParam.industry = {"$in":industry};
} }
if (subDivide && subDivide.length > 0) {
verificationEnumTools.eccEnumValue('管理后台获取企业库列表', 'subDivide', industryEnum.SUBDIVIDE, subDivide);
selectParam.subDivide = {"$in":subDivide};
}
if (parkEntryTime) { if (parkEntryTime) {
let parkEntryStartTime = moment(`${parkEntryTime}-01-01`).valueOf(); let parkEntryStartTime = moment(`${parkEntryTime}-01-01`).valueOf();
let parkEntryEndTime = moment(`${parkEntryTime}-12-31`).valueOf(); let parkEntryEndTime = moment(`${parkEntryTime}-12-31`).valueOf();
...@@ -199,7 +204,7 @@ export async function enterpriseList(dataType:number, name:string, industry, par ...@@ -199,7 +204,7 @@ export async function enterpriseList(dataType:number, name:string, industry, par
/**需要用到的查询数据 */ /**需要用到的查询数据 */
// 使用更稳定的排序:首先按createTime,然后按id或uscc确保顺序稳定 // 使用更稳定的排序:首先按createTime,然后按id或uscc确保顺序稳定
let enterpriseDbList = await enterpriseData.findEnterpriseListToPageSort(selectParam, (page - 1) * 10, {createTime: -1, _id: -1}); let enterpriseDbList = await enterpriseData.findEnterpriseListToPageSort(selectParam, (page - 1) * 10, {createTime: -1});
let count = await enterpriseData.findEnterpriseCount(selectParam);//符合查询条件的数据总数 let count = await enterpriseData.findEnterpriseCount(selectParam);//符合查询条件的数据总数
/**组合返回结果 */ /**组合返回结果 */
...@@ -210,10 +215,10 @@ export async function enterpriseList(dataType:number, name:string, industry, par ...@@ -210,10 +215,10 @@ export async function enterpriseList(dataType:number, name:string, industry, par
let changeData:any = extractData(splitResultConfig.enterpriseListConfig, info, true); let changeData:any = extractData(splitResultConfig.enterpriseListConfig, info, true);
/**将枚举值转为字符 */ /**将枚举值转为字符 */
//行业领域
let industry = []; let industry = [];
if (changeData.industry && changeData.industry.length > 0) { if (changeData.industry && changeData.industry.length > 0) {
// 注意:这里应该是数组处理,但原代码用单个值处理 // 数组处理
// 根据实际情况调整
let industryValue = verificationEnumTools.changeEnumValue(industryEnum.ALLINDUSTRY, changeData.industry); let industryValue = verificationEnumTools.changeEnumValue(industryEnum.ALLINDUSTRY, changeData.industry);
if (industryValue) { if (industryValue) {
industry.push(industryValue); industry.push(industryValue);
...@@ -221,6 +226,18 @@ export async function enterpriseList(dataType:number, name:string, industry, par ...@@ -221,6 +226,18 @@ export async function enterpriseList(dataType:number, name:string, industry, par
} }
changeData.industry = industry; changeData.industry = industry;
//细分行业领域
let subDivide = [];
if (changeData.subDivide && changeData.subDivide.length > 0) {
// 数组处理
let subDivideValue = verificationEnumTools.changeEnumValue(industryEnum.SUBDIVIDE, changeData.subDivide);
if (subDivideValue) {
subDivide.push(subDivideValue);
}
}
changeData.subDivide = subDivide;
//标签
let labels = []; let labels = [];
if (changeData.labels && changeData.labels.length > 0) { if (changeData.labels && changeData.labels.length > 0) {
changeData.labels.forEach( info => { changeData.labels.forEach( info => {
...@@ -269,6 +286,7 @@ export async function enterpriseInfo(uscc:string) { ...@@ -269,6 +286,7 @@ export async function enterpriseInfo(uscc:string) {
parkEntryTime: enterpriseDbInfo.parkEntryTime, //moment(enterpriseDbInfo.parkEntryTime).format("YYYY-MM-DD"), //入驻园区时间 parkEntryTime: enterpriseDbInfo.parkEntryTime, //moment(enterpriseDbInfo.parkEntryTime).format("YYYY-MM-DD"), //入驻园区时间
labels: labels, //企业标签 labels: labels, //企业标签
industry: enterpriseDbInfo.industry, //行业领域 industry: enterpriseDbInfo.industry, //行业领域
subDivide: enterpriseDbInfo.subDivide, //细分行业领域
// property: enterpriseDbInfo.property.toString(), //所属物业 // property: enterpriseDbInfo.property.toString(), //所属物业
// enterpriseNature: enterpriseDbInfo.enterpriseNature.toString(), //企业性质 // enterpriseNature: enterpriseDbInfo.enterpriseNature.toString(), //企业性质
property: enterpriseDbInfo.property ? enterpriseDbInfo.property.toString() : "", //所属物业 property: enterpriseDbInfo.property ? enterpriseDbInfo.property.toString() : "", //所属物业
...@@ -296,6 +314,7 @@ export async function enterpriseUpdate(uscc:string, param) { ...@@ -296,6 +314,7 @@ export async function enterpriseUpdate(uscc:string, param) {
/**校验枚举 */ /**校验枚举 */
verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'industry', industryEnum.ALLINDUSTRY, param.industry); verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'industry', industryEnum.ALLINDUSTRY, param.industry);
verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'subDivide', industryEnum.SUBDIVIDE, param.subDivide);
verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'enterpriseNature', labelEnum.ENTERPRISENATURE, param.enterpriseNature); verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'enterpriseNature', labelEnum.ENTERPRISENATURE, param.enterpriseNature);
verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'property', labelEnum.PROPERTY, param.property); verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'property', labelEnum.PROPERTY, param.property);
verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'RAS', configEnum.RAS, param.RAS); verificationEnumTools.eccEnumValue('管理后台新增企业建档', 'RAS', configEnum.RAS, param.RAS);
...@@ -410,11 +429,7 @@ export async function enterpriseUpdate(uscc:string, param) { ...@@ -410,11 +429,7 @@ export async function enterpriseUpdate(uscc:string, param) {
// 如果已存在入驻年份标签 // 如果已存在入驻年份标签
if (existingYearLabel.labelId && existingYearLabel.labelId.toString() !== yearValue.toString()) { if (existingYearLabel.labelId && existingYearLabel.labelId.toString() !== yearValue.toString()) {
// 标签年份与当前年份不一致,需要更新 // 标签年份与当前年份不一致,需要更新
enterpriseDbInfo.labels[existingYearLabelIndex] = { enterpriseDbInfo.labels[existingYearLabelIndex]["labelId"] = yearValue.toString();
labelId: yearValue.toString(),
labelType: labelEnum.LABELTYPE.入驻年份,
state: true
};
console.log(`已为企业 ${enterpriseDbInfo.name} (${enterpriseDbInfo.uscc}) 更新入驻年份标签:从 ${existingYearLabel.labelId} 更新为 ${yearValue}`); console.log(`已为企业 ${enterpriseDbInfo.name} (${enterpriseDbInfo.uscc}) 更新入驻年份标签:从 ${existingYearLabel.labelId} 更新为 ${yearValue}`);
} else { } else {
// 标签年份一致,无需修改 // 标签年份一致,无需修改
...@@ -467,7 +482,7 @@ export async function enterpriseDelete(uscc:string) { ...@@ -467,7 +482,7 @@ export async function enterpriseDelete(uscc:string) {
* @param dataType 企业分类(1=100平方公里、2=3.73平方公里、3=软件关联入驻企业、4=小台账企业、5=重点稳商企业) * @param dataType 企业分类(1=100平方公里、2=3.73平方公里、3=软件关联入驻企业、4=小台账企业、5=重点稳商企业)
* @returns 二维数组,第一行为表头,后续行为数据 * @returns 二维数组,第一行为表头,后续行为数据
*/ */
export async function outPutEnterpriseData(name:string, industry:string[], parkEntryTime:number, logonTime:number, labelIdList:string[], dataType:number, uscc:string[]) { export async function outPutEnterpriseData(name:string, industry:string[], subDivide:string[], parkEntryTime:number, logonTime:number, labelIdList:string[], dataType:number, uscc:string[]) {
/** 拼接查询条件 */ /** 拼接查询条件 */
let selectParam: any = {}; let selectParam: any = {};
if (name) { if (name) {
...@@ -476,6 +491,9 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE ...@@ -476,6 +491,9 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE
if (industry && industry.length > 0) { if (industry && industry.length > 0) {
selectParam.industry = { "$in": industry }; selectParam.industry = { "$in": industry };
} }
if (subDivide && subDivide.length > 0) {
selectParam.subDivide = { "$in": subDivide };
}
if (parkEntryTime) { if (parkEntryTime) {
let parkEntryStartTime = moment(`${parkEntryTime}-01-01`).valueOf(); let parkEntryStartTime = moment(`${parkEntryTime}-01-01`).valueOf();
let parkEntryEndTime = moment(`${parkEntryTime}-12-31`).valueOf(); let parkEntryEndTime = moment(`${parkEntryTime}-12-31`).valueOf();
...@@ -524,6 +542,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE ...@@ -524,6 +542,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE
// "注册地址", // "注册地址",
"注册时间", "注册时间",
"入驻时间", "入驻时间",
"细分行业领域",
"行业领域", "行业领域",
"所属物业", "所属物业",
"企业性质", "企业性质",
...@@ -547,6 +566,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE ...@@ -547,6 +566,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE
// "logonAddress", // "logonAddress",
"logonTime", "logonTime",
"parkEntryTime", "parkEntryTime",
"subDivide",
"industry", "industry",
"property", "property",
"enterpriseNature", "enterpriseNature",
...@@ -567,6 +587,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE ...@@ -567,6 +587,7 @@ export async function outPutEnterpriseData(name:string, industry:string[], parkE
/** 枚举值转文本 */ /** 枚举值转文本 */
changeData.industry = verificationEnumTools.changeEnumValue(industryEnum.ALLINDUSTRY, changeData.industry) || "未选择"; changeData.industry = verificationEnumTools.changeEnumValue(industryEnum.ALLINDUSTRY, changeData.industry) || "未选择";
changeData.subDivide = verificationEnumTools.changeEnumValue(industryEnum.SUBDIVIDE, changeData.subDivide) || "未选择";
changeData.property = verificationEnumTools.changeEnumValue(labelEnum.PROPERTY, changeData.property) || "未选择"; changeData.property = verificationEnumTools.changeEnumValue(labelEnum.PROPERTY, changeData.property) || "未选择";
changeData.enterpriseNature = verificationEnumTools.changeEnumValue(labelEnum.ENTERPRISENATURE, changeData.enterpriseNature) || "未选择"; changeData.enterpriseNature = verificationEnumTools.changeEnumValue(labelEnum.ENTERPRISENATURE, changeData.enterpriseNature) || "未选择";
changeData.RAS = verificationEnumTools.changeEnumValue(configEnum.RAS, changeData.RAS) || "未选择"; changeData.RAS = verificationEnumTools.changeEnumValue(configEnum.RAS, changeData.RAS) || "未选择";
......
...@@ -128,11 +128,12 @@ export async function 全部企业(buff) { ...@@ -128,11 +128,12 @@ export async function 全部企业(buff) {
if (thisEnterprise) throw new BizError(ERRORENUM.该企业已存在, `${rowData[1]}已经在库中存在`); if (thisEnterprise) throw new BizError(ERRORENUM.该企业已存在, `${rowData[1]}已经在库中存在`);
/**枚举转换 */ /**枚举转换 */
let industry = [industryEnum.ALLINDUSTRY[rowData[12]]]; //行业领域 let subDivide = [industryEnum.SUBDIVIDE[rowData[12]]]; //细分行业领域-小台账用
let industry = [industryEnum.ALLINDUSTRY[rowData[13]]]; //行业领域
let labelList = parseLabels(rowData); //解析标签 let labelList = parseLabels(rowData); //解析标签
let enterpriseNature = labelEnum.ENTERPRISENATURE[rowData[9]]; //企业性质 let enterpriseNature = labelEnum.ENTERPRISENATURE[rowData[9]]; //企业性质
let property = labelEnum.PROPERTY[rowData[10]]; //所属物业 let property = labelEnum.PROPERTY[rowData[10]]; //所属物业
let RAS = configEnum.RAS[rowData[14]]; let RAS = configEnum.RAS[rowData[15]];
let logonAddress = [rowData[2], rowData[3], rowData[4], rowData[5]]; let logonAddress = [rowData[2], rowData[3], rowData[4], rowData[5]];
//准备企业数据 //准备企业数据
...@@ -143,15 +144,16 @@ export async function 全部企业(buff) { ...@@ -143,15 +144,16 @@ export async function 全部企业(buff) {
logonAddress: logonAddress, logonAddress: logonAddress,
logonTime: new Date(rowData[6]).valueOf(), logonTime: new Date(rowData[6]).valueOf(),
parkEntryTime: new Date(rowData[7]).valueOf(), parkEntryTime: new Date(rowData[7]).valueOf(),
subDivide,
industry, industry,
property, property,
enterpriseNature, enterpriseNature,
leasedArea: rowData[13], leasedArea: rowData[14],
RAS, RAS,
jingYingFanWei: rowData[15], jingYingFanWei: rowData[16],
legalPerson: rowData[16], legalPerson: rowData[17],
zhuceziben: rowData[17], zhuceziben: rowData[18],
dianHua: rowData[18], dianHua: rowData[19],
createTime: new Date().valueOf(), createTime: new Date().valueOf(),
labels: labelList, labels: labelList,
pwd: sysTools.getPwdMd5(rowData[1], md5(rowData[1].slice(rowData[1].length-6))), pwd: sysTools.getPwdMd5(rowData[1], md5(rowData[1].slice(rowData[1].length-6))),
...@@ -312,8 +314,8 @@ function parseLabels(rowData) { ...@@ -312,8 +314,8 @@ function parseLabels(rowData) {
// case "嘉亭荟": // case "嘉亭荟":
// propertyValue = labelEnum.PROPERTY.嘉亭荟; // propertyValue = labelEnum.PROPERTY.嘉亭荟;
// break; // break;
// case "智驾园": // case "上海智慧出行设计谷":
// propertyValue = labelEnum.PROPERTY.智驾园; // propertyValue = labelEnum.PROPERTY.上海智慧出行设计谷;
// break; // break;
// case "汽车创新港": // case "汽车创新港":
// propertyValue = labelEnum.PROPERTY.汽车创新港; // propertyValue = labelEnum.PROPERTY.汽车创新港;
...@@ -321,6 +323,9 @@ function parseLabels(rowData) { ...@@ -321,6 +323,9 @@ function parseLabels(rowData) {
// case "汽车城大厦": // case "汽车城大厦":
// propertyValue = labelEnum.PROPERTY.汽车城大厦; // propertyValue = labelEnum.PROPERTY.汽车城大厦;
// break; // break;
// case "国际汽车城软件园":
// propertyValue = labelEnum.PROPERTY.国际汽车城软件园;
// break;
// } // }
// labels.push({ // labels.push({
......
...@@ -96,6 +96,7 @@ export async function negotiationCreate(param) { ...@@ -96,6 +96,7 @@ export async function negotiationCreate(param) {
progressStatus: param.progressStatus, progressStatus: param.progressStatus,
primaryContact: param.primaryContact, primaryContact: param.primaryContact,
contactDepartment: param.contactDepartment, contactDepartment: param.contactDepartment,
progressDetails: param.progressDetails,
createTime:new Date().valueOf(), createTime:new Date().valueOf(),
} }
...@@ -127,6 +128,7 @@ export async function negotiationInfo(id:string) { ...@@ -127,6 +128,7 @@ export async function negotiationInfo(id:string) {
progressStatus: negotiationDbInfo.progressStatus, progressStatus: negotiationDbInfo.progressStatus,
primaryContact: negotiationDbInfo.primaryContact, primaryContact: negotiationDbInfo.primaryContact,
contactDepartment: negotiationDbInfo.contactDepartment, contactDepartment: negotiationDbInfo.contactDepartment,
progressDetails: negotiationDbInfo.progressDetails,
}; };
return {dataInfo}; return {dataInfo};
...@@ -222,6 +224,7 @@ export async function outPutNegotiationData(name:string, industry:string[], regi ...@@ -222,6 +224,7 @@ export async function outPutNegotiationData(name:string, industry:string[], regi
"注册情况", "注册情况",
"负责人/首谈人", "负责人/首谈人",
"对接部门", "对接部门",
"进度详情",
// "创建时间" // "创建时间"
]; ];
...@@ -233,6 +236,7 @@ export async function outPutNegotiationData(name:string, industry:string[], regi ...@@ -233,6 +236,7 @@ export async function outPutNegotiationData(name:string, industry:string[], regi
"registrationStatus", "registrationStatus",
"primaryContact", "primaryContact",
"contactDepartment", "contactDepartment",
"progressDetails",
// "createTime" // "createTime"
]; ];
......
...@@ -30,6 +30,7 @@ export const NegotiationAddConfig = { ...@@ -30,6 +30,7 @@ export const NegotiationAddConfig = {
progressStatus:{type:"Number"}, //进展情况 progressStatus:{type:"Number"}, //进展情况
primaryContact:{type:"String"}, //负责人、首谈人 primaryContact:{type:"String"}, //负责人、首谈人
contactDepartment:{type:"String"}, //对接部门 contactDepartment:{type:"String"}, //对接部门
progressDetails:{type:"String"}, //进度详情
}; };
...@@ -45,6 +46,7 @@ export const NegotiationUpdateConfig = { ...@@ -45,6 +46,7 @@ export const NegotiationUpdateConfig = {
progressStatus:{type:"Number"}, //进展情况 progressStatus:{type:"Number"}, //进展情况
primaryContact:{type:"String"}, //负责人、首谈人 primaryContact:{type:"String"}, //负责人、首谈人
contactDepartment:{type:"String"}, //对接部门 contactDepartment:{type:"String"}, //对接部门
progressDetails:{type:"String"}, //进度详情
}; };
...@@ -62,6 +64,7 @@ export const EnterpriseAddConfig = { ...@@ -62,6 +64,7 @@ export const EnterpriseAddConfig = {
labels:{type:"[String]"}, //企业标签 labels:{type:"[String]"}, //企业标签
// industryCategoryGb:{type:"String"}, //国标行业门类 // industryCategoryGb:{type:"String"}, //国标行业门类
industry:{type:"[Number]"}, //行业领域 industry:{type:"[Number]"}, //行业领域
subDivide:{type:"[Number]"}, //细分行业领域-用于小台账
property:{type:"Number"}, //企业所属物业 property:{type:"Number"}, //企业所属物业
enterpriseNature:{type:"Number"}, //企业性质 enterpriseNature:{type:"Number"}, //企业性质
leasedArea:{type:"Number"}, //租赁面积(㎡) leasedArea:{type:"Number"}, //租赁面积(㎡)
...@@ -86,6 +89,7 @@ export const EnterpriseUpdateConfig = { ...@@ -86,6 +89,7 @@ export const EnterpriseUpdateConfig = {
parkEntryTime:{type:'Number'}, //入驻园区时间 parkEntryTime:{type:'Number'}, //入驻园区时间
labels:{type:"[String]"}, //企业标签 labels:{type:"[String]"}, //企业标签
industry:{type:"[Number]"}, //行业领域 industry:{type:"[Number]"}, //行业领域
subDivide:{type:"[Number]"}, //细分行业领域-小台账用
property:{type:"Number"}, //企业所属物业 property:{type:"Number"}, //企业所属物业
enterpriseNature:{type:"String"}, //企业性质 enterpriseNature:{type:"String"}, //企业性质
leasedArea:{type:"Number"}, //租赁面积(㎡) leasedArea:{type:"Number"}, //租赁面积(㎡)
......
...@@ -79,10 +79,8 @@ export enum ACTIVITYTARGET { ...@@ -79,10 +79,8 @@ export enum ACTIVITYTARGET {
* 推进、注册情况 * 推进、注册情况
*/ */
export enum REGISTRATIONSTATUS { export enum REGISTRATIONSTATUS {
洽谈中 = 1, 合同洽谈 = 1,
已注册, 项目终止,
已入驻,
已终止,
} }
...@@ -91,9 +89,6 @@ export enum REGISTRATIONSTATUS { ...@@ -91,9 +89,6 @@ export enum REGISTRATIONSTATUS {
*/ */
export enum PROGRESSSTATUS { export enum PROGRESSSTATUS {
初次接触 = 1, 初次接触 = 1,
深度洽谈,
协议草拟,
协议签订,
项目落地, 项目落地,
} }
......
/** /**
* 细分行业领域-用于小台账
*/
export enum SUBDIVIDE {
智能载体 = 1,
云平台及云服务 = 2,
应用软件及服务 = 3,
AI及人工智能大模型 = 4,
电子架构及中间件 = 5,
基础软件及操作系统 = 6,
智能芯片 = 7,
智能硬件及大算力平台 = 8,
}
/**
* 国标行业门类 industryCategoryGb * 国标行业门类 industryCategoryGb
*/ */
export enum INDUSTRY { export enum INDUSTRY {
......
...@@ -29,8 +29,9 @@ export enum ENTERPRISESYSTEMLABEL { ...@@ -29,8 +29,9 @@ export enum ENTERPRISESYSTEMLABEL {
汽车创新港 = 602, 汽车创新港 = 602,
汽车城大厦 = 603, 汽车城大厦 = 603,
嘉亭荟 = 604, 嘉亭荟 = 604,
智驾园 = 605, 上海智慧出行设计谷 = 605, //智驾园
同济科技园 = 606, 同济科技园 = 606,
国际汽车城软件园 = 607,
/**入驻年份 */ /**入驻年份 */
"2023年" = 2023, "2023年" = 2023,
"2024年" = 2024, "2024年" = 2024,
...@@ -55,8 +56,9 @@ export enum REMOVEBASICLABEL { ...@@ -55,8 +56,9 @@ export enum REMOVEBASICLABEL {
汽车创新港 = 602, 汽车创新港 = 602,
汽车城大厦 = 603, 汽车城大厦 = 603,
嘉亭荟 = 604, 嘉亭荟 = 604,
智驾园 = 605, 上海智慧出行设计谷 = 605, //智驾园
同济科技园 = 606, 同济科技园 = 606,
国际汽车城软件园 = 607,
"2023年" = 2023, "2023年" = 2023,
"2024年" = 2024, "2024年" = 2024,
"2025年" = 2025, "2025年" = 2025,
...@@ -105,8 +107,9 @@ export enum PROPERTY { ...@@ -105,8 +107,9 @@ export enum PROPERTY {
汽车创新港 = 602, 汽车创新港 = 602,
汽车城大厦 = 603, 汽车城大厦 = 603,
嘉亭荟 = 604, 嘉亭荟 = 604,
智驾园 = 605, 上海智慧出行设计谷 = 605, //智驾园
同济科技园 = 606, 同济科技园 = 606,
国际汽车城软件园 = 607,
} }
......
...@@ -18,6 +18,7 @@ export const negotiationListConfig = { ...@@ -18,6 +18,7 @@ export const negotiationListConfig = {
progressStatus:{key:"进展情况"}, progressStatus:{key:"进展情况"},
primaryContact:{key:"负责人/首谈人"}, primaryContact:{key:"负责人/首谈人"},
contactDepartment:{key:"对接部门"}, contactDepartment:{key:"对接部门"},
progressDetails:{key:"进度详情"},
}; };
...@@ -30,6 +31,7 @@ export const enterpriseListConfig = { ...@@ -30,6 +31,7 @@ export const enterpriseListConfig = {
uscc:{key:"统一社会信用代码"}, uscc:{key:"统一社会信用代码"},
name:{key:"企业名称"}, name:{key:"企业名称"},
industry:{key:"行业领域[]"}, industry:{key:"行业领域[]"},
subDivide:{key:"细分行业领域[]"},
logonTime:{key:"企业成立时间", changeDate:true}, logonTime:{key:"企业成立时间", changeDate:true},
parkEntryTime:{key:"入驻园区年份", changeDate:true}, parkEntryTime:{key:"入驻园区年份", changeDate:true},
leasedArea:{key:"租赁面积(㎡)"}, leasedArea:{key:"租赁面积(㎡)"},
......
...@@ -81,6 +81,7 @@ const enterpriseSchema = new Schema({ ...@@ -81,6 +81,7 @@ const enterpriseSchema = new Schema({
uscc:{type:String, index: true}, //统一信用代码 uscc:{type:String, index: true}, //统一信用代码
isSettled: Number, //是否入驻 isSettled: Number, //是否入驻
industry:[Number], //行业领域 INDUSTRY industry:[Number], //行业领域 INDUSTRY
subDivide:[Number], //细分行业领域 用于小台账
logonAddress:{type:[String], default:[]},//注册地址 logonAddress:{type:[String], default:[]},//注册地址
logonTime:Number, //注册时间、成立时间 logonTime:Number, //注册时间、成立时间
parkEntryTime: Number, //入驻园区时间 parkEntryTime: Number, //入驻园区时间
......
...@@ -12,6 +12,7 @@ const negotiationSchema = new Schema({ ...@@ -12,6 +12,7 @@ const negotiationSchema = new Schema({
industry: [Number], //行业领域 ALLINDUSTRY industry: [Number], //行业领域 ALLINDUSTRY
registrationStatus:{type:Number, default:1}, //推进、注册情况 REGISTRATIONSTATUS: 1-洽谈中, 2-已注册, 3-已入驻, 4-已终止 registrationStatus:{type:Number, default:1}, //推进、注册情况 REGISTRATIONSTATUS: 1-洽谈中, 2-已注册, 3-已入驻, 4-已终止
progressStatus:{type:Number, default:1}, //进展情况 PROGRESSSTATUS:1-初次接触, 2-深度洽谈, 3-协议草拟, 4-协议签订, 5-项目落地 progressStatus:{type:Number, default:1}, //进展情况 PROGRESSSTATUS:1-初次接触, 2-深度洽谈, 3-协议草拟, 4-协议签订, 5-项目落地
progressDetails:String, //进度详情
primaryContact:String, //负责人、首谈人 primaryContact:String, //负责人、首谈人
contactDepartment:String, //对接部门 contactDepartment:String, //对接部门
createTime:Number, //创建时间 createTime:Number, //创建时间
......
...@@ -23,11 +23,11 @@ export function setRouter(httpServer) { ...@@ -23,11 +23,11 @@ export function setRouter(httpServer) {
* @param res * @param res
*/ */
async function getEnterpriseList(req, res) { async function getEnterpriseList(req, res) {
let reqConf = {dataType:'Number', name:'String', industry:'[Number]', parkEntryTime:'Number', logonTime:'Number', labelIdList:'[String]', page:'Number'}; let reqConf = {dataType:'Number', name:'String', industry:'[Number]', subDivide:'[Number]', parkEntryTime:'Number', logonTime:'Number', labelIdList:'[String]', page:'Number'};
const NotMustHaveKeys = ['dataType', 'name', 'industry', 'parkEntryTime', 'logonTime', 'labelIdList']; const NotMustHaveKeys = ['dataType', 'name', 'industry', 'subDivide', 'parkEntryTime', 'logonTime', 'labelIdList'];
let {dataType, name, industry, parkEntryTime, logonTime, labelIdList, page} = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let {dataType, name, industry, subDivide, parkEntryTime, logonTime, labelIdList, page} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await enterpriseBiz.enterpriseList(dataType, name, industry, parkEntryTime, logonTime, labelIdList, page); let result = await enterpriseBiz.enterpriseList(dataType, name, industry, subDivide, parkEntryTime, logonTime, labelIdList, page);
res.success(result); res.success(result);
} }
...@@ -94,11 +94,11 @@ async function delEnterprise(req, res) { ...@@ -94,11 +94,11 @@ async function delEnterprise(req, res) {
* @param res * @param res
*/ */
async function outPutEnterprise(req, res) { async function outPutEnterprise(req, res) {
let reqConf = {name:'String', industry:'[Number]', parkEntryTime:'Number', logonTime:'Number', labelIdList:'[String]', dataType:'Number', uscc:'[String]'}; let reqConf = {name:'String', industry:'[Number]', subDivide:"[Number]", parkEntryTime:'Number', logonTime:'Number', labelIdList:'[String]', dataType:'Number', uscc:'[String]'};
const NotMustHaveKeys = ['name', 'industry', 'parkEntryTime', 'logonTime', 'labelIdList', 'dataType', 'uscc']; const NotMustHaveKeys = ['name', 'industry', 'subDivide', 'parkEntryTime', 'logonTime', 'labelIdList', 'dataType', 'uscc'];
let {name, industry, parkEntryTime, logonTime, labelIdList, dataType, uscc} = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let {name, industry, subDivide, parkEntryTime, logonTime, labelIdList, dataType, uscc} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await enterpriseBiz.outPutEnterpriseData(name, industry, parkEntryTime, logonTime, labelIdList, dataType, uscc); let result = await enterpriseBiz.outPutEnterpriseData(name, industry, subDivide, parkEntryTime, logonTime, labelIdList, dataType, uscc);
res.success(result); res.success(result);
} }
......
...@@ -12,7 +12,7 @@ export function setRouter(httpServer) { ...@@ -12,7 +12,7 @@ export function setRouter(httpServer) {
httpServer.post('/admin/negotiation/add', checkAdminUserToken, asyncHandler(addNegotiation)); httpServer.post('/admin/negotiation/add', checkAdminUserToken, asyncHandler(addNegotiation));
httpServer.post('/admin/negotiation/info', checkAdminUserToken, asyncHandler(getNegotiationInfo)); httpServer.post('/admin/negotiation/info', checkAdminUserToken, asyncHandler(getNegotiationInfo));
httpServer.post('/admin/negotiation/update', checkAdminUserToken, asyncHandler(updateNegotiation)); httpServer.post('/admin/negotiation/update', checkAdminUserToken, asyncHandler(updateNegotiation));
httpServer.post('/admin/negotiation/list', checkAdminUserToken, asyncHandler(getNegotiationList)); httpServer.post('/admin/negotiation/del', checkAdminUserToken, asyncHandler(delNegotiation));
httpServer.post('/admin/negotiation/output', checkAdminUserToken, asyncHandler(outPutNegotiation)); httpServer.post('/admin/negotiation/output', checkAdminUserToken, asyncHandler(outPutNegotiation));
} }
......
...@@ -110,8 +110,9 @@ const propertyMap = { ...@@ -110,8 +110,9 @@ const propertyMap = {
'汽车创新港': labelEnum.PROPERTY.汽车创新港, '汽车创新港': labelEnum.PROPERTY.汽车创新港,
'汽车城大厦': labelEnum.PROPERTY.汽车城大厦, '汽车城大厦': labelEnum.PROPERTY.汽车城大厦,
'嘉亭荟': labelEnum.PROPERTY.嘉亭荟, '嘉亭荟': labelEnum.PROPERTY.嘉亭荟,
'智驾园': labelEnum.PROPERTY.智驾园, '上海智慧出行设计谷': labelEnum.PROPERTY.上海智慧出行设计谷,
'同济科技园': labelEnum.PROPERTY.同济科技园 '同济科技园': labelEnum.PROPERTY.同济科技园,
'国际汽车城软件园': labelEnum.PROPERTY.国际汽车城软件园
}; };
...@@ -373,8 +374,8 @@ function parseLabels(rowData) { ...@@ -373,8 +374,8 @@ function parseLabels(rowData) {
case "嘉亭荟": case "嘉亭荟":
propertyValue = labelEnum.PROPERTY.嘉亭荟; propertyValue = labelEnum.PROPERTY.嘉亭荟;
break; break;
case "智驾园": case "上海智慧出行设计谷":
propertyValue = labelEnum.PROPERTY.智驾园; propertyValue = labelEnum.PROPERTY.上海智慧出行设计谷;
break; break;
case "汽车创新港": case "汽车创新港":
propertyValue = labelEnum.PROPERTY.汽车创新港; propertyValue = labelEnum.PROPERTY.汽车创新港;
...@@ -382,6 +383,9 @@ function parseLabels(rowData) { ...@@ -382,6 +383,9 @@ function parseLabels(rowData) {
case "汽车城大厦": case "汽车城大厦":
propertyValue = labelEnum.PROPERTY.汽车城大厦; propertyValue = labelEnum.PROPERTY.汽车城大厦;
break; break;
case "国际汽车城软件园":
propertyValue = labelEnum.PROPERTY.国际汽车城软件园;
break;
} }
labels.push({ labels.push({
......
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