Commit 94fd4336 by lixinming

no message

parent 5fb13fdf
......@@ -5,7 +5,7 @@
<port>27017</port>
<w>1</w>
<!-- <dataBase>baseDB</dataBase> -->
<dataBase>zjsc0819</dataBase>
<dataBase>zjsc1014</dataBase>
<wtimeoutMS>30000</wtimeoutMS>
</mongodb>
<!-- 小程序的secret 和 appid -->
......
......@@ -794,7 +794,7 @@ export async function zlqyList( name, contractState, state, page) {
let contractEndTime = "";
let rentDay = 0;
let contractState = "";//合同状态
let rentRecent = "";
let rentRecent = "";//最近租金缴纳情况
let rentNext = "";
if (leaseInfo && leaseInfo.uscc) {
leaseInfo.rentPayment.forEach(item => {
......@@ -802,17 +802,17 @@ export async function zlqyList( name, contractState, state, page) {
});
if (leaseInfo.rentPayment.length) {
rentRecent = leaseInfo.rentPayment[ leaseInfo.rentPayment.length - 1].payStartTime;
if (rentRecent) rentRecent = moment(rentRecent).format("YYYY-MM");
if (rentRecent) rentRecent = moment(rentRecent).format("YYYY-MM-DD");
}
}
if (info.leaseInfo) {
if (info.leaseInfo && info.leaseInfo.contractStartTime) {
contractStartTime = moment(info.leaseInfo.contractStartTime).format("YYYY-MM-DD");
contractEndTime = moment(info.leaseInfo.contractEndTime).format("YYYY-MM-DD");
if (info.leaseInfo.rentEndTime) {
rentDay = moment().diff(moment(info.leaseInfo.rentEndTime));
rentDay = moment(info.leaseInfo.rentEndTime).diff(moment(), 'days');
if (!rentDay) rentDay = rentDay < 0 ? 0 : rentDay;
}
......@@ -885,7 +885,8 @@ export async function zlqyInfo(uscc:string) {
rentRecent,
area:leaseInfo.area || 0,
areaUnit:leaseInfo.areaUnit || 1,
address:leaseInfo.address || ""
address:leaseInfo.address || "",
files:leaseInfo.files || []
}
return {dataInfo};
}
......@@ -913,6 +914,7 @@ export async function zlqyUpdate(uscc:string, param) {
area : param.area,
areaUnit : param.areaUnit,
address : param.address,
files: param.files
}
await leaseData.createData(addInfo);
} else {
......@@ -923,6 +925,7 @@ export async function zlqyUpdate(uscc:string, param) {
leaseInfo.area = param.area;
leaseInfo.areaUnit = param.areaUnit;
leaseInfo.address = param.address;
leaseInfo.files = param.files;
await leaseInfo.save();
}
......@@ -951,22 +954,43 @@ export async function zlqyrentPaymentList(uscc) {
}
export async function zlqyrentPaymentUpdate(uscc, rentPayment) {
let rentStartTime = rentPayment[0].payStartTime;
let rentEndTimeLong = rentPayment[rentPayment.length - 1].payLong;
let rentEndTimeMonth = rentPayment[rentPayment.length - 1].payStartTime;
let rentEndTime = moment(rentEndTimeMonth).add(rentEndTimeLong, 'M').valueOf()
let leaseInfo = await leaseData.findOnceData({uscc});
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!leaseInfo || !leaseInfo.uscc) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
let addInfo = {
uscc:enterpriseInfo.uscc,
enterpriseName:enterpriseInfo.name,
rentPayment:rentPayment
rentPayment:rentPayment,
contractStartTime: rentStartTime,
contractEndTime:rentEndTime
};
await leaseData.createData(addInfo);
} else {
leaseInfo.rentPayment = rentPayment;
await leaseInfo.save();
}
let newleaseInfo:any = {};
if (enterpriseInfo.leaseInfo) {
if (enterpriseInfo.leaseInfo.contractStartTime) newleaseInfo.contractStartTime = enterpriseInfo.leaseInfo.contractStartTime;
else newleaseInfo.contractStartTime = rentStartTime;
if (enterpriseInfo.leaseInfo.contractEndTime) newleaseInfo.contractEndTime = enterpriseInfo.leaseInfo.contractEndTime;
else newleaseInfo.contractEndTime = rentEndTime;
newleaseInfo.rentStartTime = rentStartTime;
newleaseInfo.rentEndTime = rentEndTime;
} else {
newleaseInfo.contractStartTime = rentStartTime;
newleaseInfo.contractEndTime = rentEndTime;
}
enterpriseInfo.leaseInfo = newleaseInfo;
await enterpriseInfo.save();
return {isSuccess:true};
}
......@@ -977,7 +1001,7 @@ export async function demandList(name:string, demand, page) {
if (name) param.enterpriseName = name;
if (demand) param.demand = {"$in":[demand]};
let dbList = await demandData.findEnterpriseListToPage(param, page);
let dbList = await demandData.findEnterpriseListToPage(param, (page-1)*10);
let dataCount = await demandData.findCountByParam(param);
let dataList = [];
......@@ -1128,6 +1152,7 @@ export async function keynoteActivityList(uscc) {
let dataList = [];
dbList.forEach(info => {
dataList.push({
changeType:verificationEnumTools.changeEnumValue(configEnum.ENTERPRISECHANGETYPE,info.changeType),
time:moment(info.createTime).format("YYYY.MM.DD"),
contentBefore:info.oldContent,
content:info.content
......
import moment = require("moment");
import { FINANCINGROUNDS, RAS, RESEARCHTYPE, VISITDEMAND, VISITSTATE } from "../../../config/enum";
import { ENTERPRISESIZE, FINANCINGROUNDS, NASHUIRENZIZHI, RAS, RESEARCHTYPE, VISITDEMAND, VISITSTATE } from "../../../config/enum";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import { changeEnumValue } from "../../../util/verificationEnum";
import * as labelData from "../../../data/label";
......@@ -208,7 +208,19 @@ export async function portrait(uscc) {
logonTime:eInfo.logonTime ? moment(eInfo.logonTime).format("YYYY-MM-DD") : "-",
firstIncubationTime:eInfo.firstIncubationTime ? moment(eInfo.firstIncubationTime).format("YYYY-MM-DD") : "-",
zuZhiJiGouDaiMa:eInfo.zuZhiJiGouDaiMa,
label
label,
isNaturalPersonHolding:eInfo.isNaturalPersonHolding ? "是" : "否",//是否自然人控股企业
enterpriseType:eInfo.enterpriseType,//企业(机构)类型
zhuCeHao:eInfo.zhuCeHao,//注册号
canBaoRenShu:eInfo.canBaoRenShu,//参保人数
canBaoRenShuNianBao:eInfo.canBaoRenShuNianBao,//参保人数所属年报
qiYeGuiMo:changeEnumValue(ENTERPRISESIZE, eInfo.qiYeGuiMo),//企业规模
tongXinDiZhi:eInfo.tongXinDiZhi,//通信地址
jianJie:eInfo.jianJie,//企业简介
dengJiJiGuan:eInfo.dengJiJiGuan,//登记机关
naShuiRenZiZhi:changeEnumValue(NASHUIRENZIZHI, eInfo.naShuiRenZiZhi),//纳税人资质
jingYingFanWei:eInfo.jingYingFanWei,//经营范围
guQuanJieGou:eInfo.guQuanJieGou//股权结构
},
zscq:{
count:zscqCount,
......
......@@ -10,19 +10,21 @@ import { ERRORENUM } from "../../../config/errorEnum";
export async function trackList(name, type, state, page) {
let param:any = {follow:true};
let param:any = {};
if (name) param.name = {"$regex":name};
if (type) param.enterpriseType = type;
if (state) param.state = state;
let dbList = await visitData.findPageByParam(param, (page-1)*10);
let count = visitData.findCountByParam(param);
let count = await visitData.findCountByParam(param);
let dataList = [];
dbList.forEach(info => {
let stateStr = "待走访";
if (info.state == 2) stateStr = "取消走访";
else if (info.state == 3) stateStr = "完成走访";
let completionTime = "";
if (info.completionTime) completionTime = moment(info.completionTime).format("YYYY-MM-DD") //这里小程序走访完成的时候不会记录时间
let item = {
id:info.id,
uscc:info.uscc,
......@@ -30,7 +32,7 @@ export async function trackList(name, type, state, page) {
trackType:changeEnumValue(VISITENTERPRISETYPE, info.enterpriseType),
trackState:stateStr,
trackTime:moment(info.visitTime).format("YYYY-MM-DD"),
completionTime:"-"//这里小程序走访完成的时候不会记录时间
completionTime:completionTime
};
dataList.push(item);
})
......@@ -52,6 +54,9 @@ export async function changeTrackState(id, state) {
if (!trackInfo || !trackInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
trackInfo.state = state;
trackInfo.completionTime = new Date().valueOf();
await trackInfo.save();
return {isSuccess:true};
}
......
......@@ -38,6 +38,7 @@ import { changeAddToString } from "../../tools/system";
import { changeEnumValue } from "../../util/verificationEnum";
import { addTask } from "../../data/fuHuaQi/customTask";
import { addressIsInZJ, getAddressLatAndLng, latLngInZJ } from "../../tools/transCode";
import { delLabel } from "../../data/label";
const xlsx = require('node-xlsx');
const path = require('path');
......@@ -2296,3 +2297,41 @@ export async function 补充经纬度() {
}
console.log("经纬度更新成功");
}
export async function enterpriselabeldistinct() {
let distinctIds = [
"385deba8b00e71241aa030fec12b6b8c",
"21875fca01e8af7a6f2905ff25db9d80",
"6f9c9081b4522222e9f6ffab167663a6",
"f3c630528b19abadaa8a91ad31650bca",
"label_a2d1069d45b2cf838774d6db1822e707"
];
let enterpriseList = await enterpriseData.findEnterpriseList({});
for (let i =0; i < enterpriseList.length; i++) {
let info = enterpriseList[i];
let item = await enterpriseData.selectOneEnterpriseByParam({uscc:info.uscc});
if (item.labels) {
let newLabel = [];
item.labels.forEach(labelInfo => {
if (distinctIds.indexOf(labelInfo.labelId) == -1) {
newLabel.push(labelInfo);
}
})
item.labels = newLabel;
await item.save();
}
console.log(i)
}
await delLabel(distinctIds[0]);
await delLabel(distinctIds[1]);
await delLabel(distinctIds[2]);
await delLabel(distinctIds[3]);
await delLabel(distinctIds[4]);
console.log("数据修复成功");
return {isSuccess:true}
}
\ No newline at end of file
/**
* 大屏 数字沙盘
*/
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
const xlsx = require('node-xlsx');
const path = require('path');
const fs = require('fs');
/**
* 孵化器板块
*/
export async function fhqbk() {
let excelData = onceSheetBecomeOfblockData("数字沙盘.xlsx", "孵化板块");
let res = {};
res["fhqjbxx"] = checkKeyValue_heng("孵化器基本信息", excelData[0].blockData);
res["fhqjb"] = checkChart("孵化器级别", excelData[1].blockData, ["key", "value", "rate"]);
res["fhqjgxz"] = checkChart("孵化器机构性质", excelData[2].blockData, ["key", "value", "rate"]);
res["zcsjfb"] = checkKeyValue_shu("注册时间分布", excelData[3].blockData);
res["fhqlyfb"] = checkKeyValue_shu("孵化器领域分布", excelData[4].blockData);
res["sjqsfx"] = barChart("数据趋势分析", excelData[5].blockData);
res["czlpm"] = checkKeyValue_shu("孵化器出租率排名", excelData[6].blockData);
res["qygk"] = checkKeyValue_heng("企业概况", excelData[7].blockData);
res["xzcorxqr"] = checkChart("本季度新注册或新迁入", excelData[8].blockData, ["name", "fhqName", "hangye", "time"]);
res["hylyfb"] = checkKeyValue_shu("行业领域分布", excelData[9].blockData);
res["gczqyrzsl"] = checkKeyValue_shu("高成长企业融资数量", excelData[10].blockData);
res["gczqyrzlb"] = checkChart("高成长企业融资列表", excelData[11].blockData, ["name", "rongzie", "lunci", "time"]);
return res;
}
/**
* 科技金融
* @returns
*/
export async function kjjr() {
let excelData = onceSheetBecomeOfblockData("数字沙盘.xlsx", "科技金融");
let res = {};
res["rzjbxx"] = checkKeyValue_heng("融资基本信息", excelData[0].blockData);
res["sjqsfx"] = barChart("数据趋势分析", excelData[1].blockData);
res["rzlchlxfx"] = checkKeyValue_shu("融资轮次和类型分析", excelData[2].blockData);
res["rzlyfb"] = checkKeyValue_shu("融资领域分布", excelData[3].blockData);
res["sdhyrzfx"] = checkKeyValue_heng("三大行业融资分析", excelData[4].blockData);
res["jdqsfx"] = barChart("季度趋势分析", excelData[5].blockData);
res["ctfhydfxt"] = checkKeyValue_heng("创投方活跃度分析图", excelData[6].blockData);
res["wdzbgzbk"] = checkKeyValue_heng("外地资本关注板块", excelData[7].blockData);
res["ctlyjejcs"] = barChart("创投领域金额及次数", excelData[8].blockData);
res["zjkxcrzbtqk"] = checkKeyValue_heng("张江科学城融资补贴情况", excelData[9].blockData);
res["rzbtqktjt"] = barChart("融资补贴情况统计图", excelData[10].blockData);
return res;
}
//封装keyvalue
function checkKeyValue_heng(title, blockList) {
let dataList = [];
for (let i = 0; i < blockList[0].length; i++) {
dataList.push({
key:blockList[0][i],
value:blockList[1][i]
});
}
return {title, dataList}
}
function checkKeyValue_shu(title, blockList) {
let dataList = [];
blockList.forEach( (subList, index) => {
if (!index) return
dataList.push({
key:subList[0],
value:subList[1]
})
});
return {title, dataList}
}
function checkChart(title, blockList, xkeyList) {
let dataList = [];
blockList.forEach((subList, index) =>{
if (!index) return
let item = {};
for (let i = 0; i < xkeyList.length; i++) {
let key = xkeyList[i]
item[key] = typeof subList[i] == "number" ? Math.ceil(subList[i]) : subList[i];
}
dataList.push(item);
})
return {title, dataList}
}
function barChart(title, blockList ) {
let xList = blockList[0];
let dataList = [];
for (let i = 1; i < blockList.length; i++) {
let sbuList = blockList[i];
let itemList = [];
for (let y = 1; y < sbuList.length; y++) {
itemList.push({
key:xList[y],
value:sbuList[y]
});
}
dataList.push({
title:sbuList[0],
dataList:itemList
});
}
return {title, dataList};
}
//更新
export async function upShowExcel(list) {
let data = [];
list.forEach(info => {
data.push({
name:info.sheetName,
data:info.data
});
})
let buff = xlsx.build(data);
fs.writeFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", '数字沙盘.xlsx' ), buff);
return {isSuccess:true}
}
\ No newline at end of file
......@@ -4,8 +4,8 @@
import moment = require("moment");
import { ENTERPRISETEAM, FINANCINGROUNDS, FUHUASTATE } from "../../../../config/enum";
import { findEnterpriseCount, statsIntellectualPropertyData, findEnterpriseList } from "../../../../data/enterprise/enterprise";
import { statsEnterpriseFinancing, statsEnterpriseFinancingByTime } from "../../../../data/enterprise/financingInfo";
import { findEnterpriseCount, statsIntellectualPropertyData, findEnterpriseList, findEnterpriseByUscc } from "../../../../data/enterprise/enterprise";
import { statsEnterpriseFinancing, statsEnterpriseFinancingByTime, selectFinancingListByParams } from "../../../../data/enterprise/financingInfo";
import { statsBusinessDataByParam } from "../../../../data/enterprise/quarterTask/businessdata";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { statsEnterpriseTeamData } from "../../../../data/enterprise/quarterTask/team";
......@@ -13,6 +13,7 @@ import { statsEnterpriseInitalTeamsType } from "../../../../data/enterprise/init
import { findI18nRegisterListByParam } from "../../../../data/fuHuaQi/instituQualify/i18nRegister";
import { getIcrCountByParam } from "../../../../data/fuHuaQi/instituQualify/icr";
import { findFinancingList } from "../../../../data/fuHuaQi/monthTask/financing";
import * as qualificationsData from "../../../../data/enterprise/qualifications";
export async function enterpriseBaseData() {
......@@ -172,4 +173,67 @@ export async function valueAnalysisStatis(uscc) {
return {countList, montyList, partnersCount, cooperateCount};
}
export async function enterprIsPortrait(uscc) {
let star = 3;
let enterpriseInfo = await findEnterpriseByUscc(uscc);
let isBeOnTheMarket = false;
let isFinancing = false;
let isHighTech = false;
let iszjtx = false;
let isXjr = false;
if (enterpriseInfo.qualification) {
if (enterpriseInfo.qualification.isBeOnTheMarket) {
star += 1;
isBeOnTheMarket = true;
}
if (enterpriseInfo.qualification.isHighTech) {
star += 1;
isHighTech = true;
}
if (enterpriseInfo.qualification.iszjtx) {
star += 1;
iszjtx = true;
}
if (enterpriseInfo.qualification.isXjr) {
star += 1;
isXjr = true;
}
}
let zscqCount = 0;
if (enterpriseInfo.intellectualProperty) {
zscqCount += enterpriseInfo.intellectualProperty.alienPatent || 0;
zscqCount += enterpriseInfo.intellectualProperty.classIPatent || 0;
zscqCount += enterpriseInfo.intellectualProperty.secondClassPatent || 0;
}
let financingList = await selectFinancingListByParams({uscc});
let financingCount= 0;
financingList.forEach(info => {
let {financingAmount} = info;
isFinancing = true;
financingCount +=financingAmount;
});
if (financingCount) star += 1;
let qualificationsList = await qualificationsData.findList({uscc});
let dataInfo = {
isBeOnTheMarket,
isFinancing,
isHighTech,
iszjtx,
isXjr,
financingCount,
zzCount:qualificationsList.length,
zscqCount:10,
star,
starStr:star > 0 ? "优秀" :"良好"
}
return {
dataInfo
}
}
......@@ -14,13 +14,13 @@ const path = require('path');
*/
export async function upFile(files, type) {
let pngId = getPolicyBGImgId();
let upUrl = path.join(__dirname.substring(0,__dirname.indexOf("out")), 'files', 'policy');
let upUrl = path.join(__dirname.substring(0,__dirname.indexOf("out")), 'files', 'admin', 'policy');
let stats = fs.existsSync(upUrl);
if (!stats) fs.mkdirSync(upUrl);
let fileName = `${pngId}${type}`;
fs.renameSync(files.file.path, path.join(upUrl, `${fileName}` ));
// fs.renameSync(files.formData.path, path.join(upUrl, `${fileName}` ));
return {isSuccess:true, url:`/policy/${fileName}`, fileName};
return {isSuccess:true, url:`/admin/policy/${fileName}`, fileName};
}
\ No newline at end of file
......@@ -395,10 +395,10 @@ export async function initSystemLabelData() {
systemLabelList.push({id:'qcqy', labelName:"迁出企业", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.系统标签, state:false});
systemLabelList.push({id:'qyzx', labelName:"企业注销", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.系统标签, state:false});
systemLabelList.push({id:getLabelId(), labelName:"上市企业", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
systemLabelList.push({id:getLabelId(), labelName:"高新企业", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
systemLabelList.push({id:getLabelId(), labelName:"专精特新", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
systemLabelList.push({id:getLabelId(), labelName:"小巨人", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
// systemLabelList.push({id:getLabelId(), labelName:"上市企业", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
// systemLabelList.push({id:getLabelId(), labelName:"高新企业", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
// systemLabelList.push({id:getLabelId(), labelName:"专精特新", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
// systemLabelList.push({id:getLabelId(), labelName:"小巨人", ctMs:now, goal:LABELGOAL.企业, labelType:LABELTYPE.自定义标签, state:false});
systemLabelList.push({id:'fhqzyjspt', labelName:"专业技术平台", ctMs:now, goal:LABELGOAL.孵化器, labelType:LABELTYPE.系统标签, state:false});
systemLabelList.push({id:getLabelId(), labelName:"高质量孵化", ctMs:now, goal:LABELGOAL.孵化器, labelType:LABELTYPE.自定义标签, state:false});
......
......@@ -141,12 +141,15 @@ export async function keynoteList(fuHuaQiUscc:string, str:string, labels) {
return {dataList}
}
export async function changeEnterpriseFollow(uscc:string, followState) {
export async function changeEnterpriseFollow(uscc:string, followState, label?) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (!enterpriseInfo) throw new BizError(ERRORENUM.目标数据不存在);
enterpriseInfo.follow = followState;
if (followState) enterpriseInfo.keynote = label;
else enterpriseInfo.keynote = [];
await enterpriseInfo.save();
return {isSuccess:true}
......
......@@ -233,22 +233,28 @@ export async function zlInfo(uscc:string) {
let enterpriseInfo = await findEnterpriseByUscc(uscc);
let leaseInfo = await leaseData.findOnceData({uscc});
let dataInfo:any = {uscc, enterpriseName:enterpriseInfo.enterpriseName};
if (!leaseInfo || !leaseInfo.uscc) {
dataInfo.contractStartTime = 0;
dataInfo.contractEndTime = 0;
dataInfo.contractLong = "";
dataInfo.contractState = "签约企业";
dataInfo.contractState = "到期未签";
dataInfo.price = 0;
dataInfo.area = 0;
dataInfo.rentPayment = [];
dataInfo.address = "";
dataInfo.areaUnit = AREAUNIT.面积;
} else {
let now = new Date().valueOf();
let contractState = "到期未签"
if (leaseInfo.contractStartTime < now && leaseInfo.contractEndTime >= now) {
contractState = "签约企业";
}
dataInfo.contractStartTime = leaseInfo.contractStartTime;
dataInfo.contractEndTime = leaseInfo.contractEndTime;
dataInfo.contractLong = leaseInfo.contractLong;
dataInfo.contractState = "签约企业";
dataInfo.contractState = contractState;
dataInfo.price = leaseInfo.price;
dataInfo.area = leaseInfo.area;
dataInfo.rentPayment = leaseInfo.rentPayment;
......
......@@ -13,6 +13,7 @@ import { ERRORENUM } from "../../config/errorEnum";
import { getRandomId } from "../../tools/system";
import { eccFormParam } from "../../util/verificationParam";
import { AddVisitConfig } from "../../config/eccParam/fuHuaQi";
import { selectLabelOne } from "../../data/label";
export async function visitStatisBase(fuHuaQiUscc:string) {
......@@ -68,7 +69,8 @@ export async function visitStatisTypeList(fuHuaQiUscc) {
"$or":[
{"firstIncubationTime":{"$gt":now-(24*3600*90*1000) }},
{"timeOfImmigration":{"$gt":now-(24*3600*90*1000) }}
]
],
fuHuaQiUscc
};
let zcdbList = await enterpriseData.findEnterpriseList(selectzcparam);
......@@ -84,10 +86,29 @@ export async function visitStatisTypeList(fuHuaQiUscc) {
});
});
let nbyLabelInfo = await selectLabelOne({labelName:"拟毕业企业"});
let nbyList = [];
if (nbyLabelInfo && nbyLabelInfo.id) {
let nbydbList = await enterpriseData.findEnterpriseList({labels:{"$elemMatch": { "labelId":nbyLabelInfo.id }}, fuHuaQiUscc});
nbydbList.forEach(info => {
let createTime = "";
if (info.firstIncubationTime) createTime = moment(info.firstIncubationTime).format("YYYY-MM-DD");
if (info.timeOfImmigration) createTime = moment(info.timeOfImmigration).format("YYYY-MM-DD");
nbyList.push({
uscc:info.uscc,
enterpriseName:info.name,
createTime
});
});
}
let dataList = [
{key:changeEnumValue(VISITENTERPRISETYPE, VISITENTERPRISETYPE.主动申报需求企业), count:demanList.length, list:demanList },
{key:changeEnumValue(VISITENTERPRISETYPE, VISITENTERPRISETYPE.新入驻企业), count:zcList.length, list:zcList },
{key:changeEnumValue(VISITENTERPRISETYPE, VISITENTERPRISETYPE.临近毕业企业), count:0, list:[] },
{key:changeEnumValue(VISITENTERPRISETYPE, VISITENTERPRISETYPE.临近毕业企业), count:nbyList.length, list:nbyList },
{key:changeEnumValue(VISITENTERPRISETYPE, VISITENTERPRISETYPE.数据异常企业), count:0, list:[] },
];
......@@ -98,9 +119,10 @@ export async function visitStatisTypeList(fuHuaQiUscc) {
export async function visitAlendarStatis(fuHuaQiUscc:string) {
let startMs = moment().startOf("month").valueOf();
let endMs = moment().endOf("month").valueOf();
let shengYuCount = await visitData.findCountByParam({ visitTime:{"$gt":startMs}, fuHuaQiUscc, state:VISITSTATE.走访安排});
let leiJiCount = await visitData.findCountByParam({ visitTime:{"$gt":startMs}, fuHuaQiUscc, state:VISITSTATE.完成});
let shengYuCount = await visitData.findCountByParam({ visitTime:{"$gt":startMs, "$lt":endMs}, fuHuaQiUscc, state:VISITSTATE.走访安排});
let leiJiCount = await visitData.findCountByParam({ visitTime:{"$gt":startMs, "$lt":endMs}, fuHuaQiUscc, state:VISITSTATE.完成});
let thisMonthCount = shengYuCount + leiJiCount;
let rate = 0;
......@@ -217,6 +239,7 @@ export async function visitUpdateState(id, state:number) {
if (!visitInfo || !visitInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
visitInfo.state = state;
visitInfo.completionTime = new Date().valueOf();
await visitInfo.save();
return {isSuccess:true}
......
......@@ -137,8 +137,11 @@ export async function enterpriseList(name:string, pageNumber:number, labelId:str
param.state = FUHUASTATE.迁出;
if (labelId == ENTERPRISESYSTEMLABEL.毕业企业) param.moveOutType = MOVEOUTTYPE.毕业迁出;
if (labelId == ENTERPRISESYSTEMLABEL.企业注销) param.moveOutType = MOVEOUTTYPE.企业注销;
} else {
// 融资企业
param.labels = {"$elemMatch": { "labelId":labelId, "state":true }};
}
//todo 融资企业
} else if (labelId) {
if (year || month) throw new BizError(ERRORENUM.多余年份与月份参数);
param.labels = {"$elemMatch": { "labelId":labelId, "state":true }};
......
......@@ -98,7 +98,7 @@ export async function taskList(submitType:number, dataYear:number, dataMonth:num
/**新注册新迁入 */
let inputEnterpriseList = await fuHuaQiEnterpairseCount(taskKey);
inputEnterpriseList.forEach(info => {
inputEnterpriseList.forEach((info:any) => {
let {_id, isCreateSum, isNotCreateSum} = info;
if (fuHuaQiMap[_id]) {
fuHuaQiMap[_id].enterprise.importCount = `${isNotCreateSum}`;
......
......@@ -9,10 +9,11 @@ import { findTaskListByParam } from "../../data/fuHuaQi/monthTask/task";
import { statsAvgOccupancyRate } from "../../data/fuHuaQi/monthTask/monthTable";
import { statsFinancingCount, statsFinancingEnterpriseCount } from "../../data/fuHuaQi/monthTask/financing";
import { changeEnumValue } from "../../util/verificationEnum";
import { INDUSTRY } from "../../config/enum";
import { FUHUAQICUSTOMTASKTYPE, INDUSTRY } from "../../config/enum";
import { getEffectiveLabelMap } from "../../data/label";
import { statsFuHuaQiLabels } from "../../data/fuHuaQi/fuhuaqi";
import { LABELGOAL } from "../../config/enum/labelEnum";
import { getNew2MonthTaskBy } from "../../data/fuHuaQi/customTask";
/**
......@@ -41,33 +42,46 @@ export async function stagingHomePageTop(year:number, month:number) {
if (taskStatsMap[key]) submitCount += 1;
}
let tianBaoMonth = moment(new Date(`${year}-${month}-1 00:00:00`).valueOf()).add(1, 'month');
let nextMonthTaskId = `${tianBaoMonth.year()}${tianBaoMonth.month() + 1}`;
// let tianBaoMonth = moment(new Date(`${year}-${month}-1 00:00:00`).valueOf()).add(1, 'month');
// let nextMonthTaskId = `${tianBaoMonth.year()}${tianBaoMonth.month() + 1}`;
let statsList = [];
let zhouqi = await getNew2MonthTaskBy(FUHUAQICUSTOMTASKTYPE.月度任务);
let thisMonthTaskIdNum = parseInt(zhouqi[0].dataCycle);
let lastMonthTaskIdNum = parseInt(zhouqi[1].dataCycle);
let thisMonthTaskyear = Math.floor(thisMonthTaskIdNum/100);
let thisMonthTaskmonth = Math.floor(thisMonthTaskIdNum%100);
let thisMonthTaskYearAndMonth = moment(new Date(`${thisMonthTaskyear}-${thisMonthTaskmonth}-1`).valueOf()).add(1,'M')
let thisMonthTaskId = thisMonthTaskYearAndMonth.format("YYYYM");
let lastMonthTaskyear = Math.floor(lastMonthTaskIdNum/100);
let lastMonthTaskmonth = Math.floor(lastMonthTaskIdNum%100);
let lastMonthTaskId = moment(new Date(`${lastMonthTaskyear}-${lastMonthTaskmonth}-1`).valueOf()).add(1,'M').format("YYYYM");
//新注册企业
let registerCount = await findEnterpriseCount({taskId:{"$regex":`${nextMonthTaskId}$`}, isCreate:true, draftLock:true});
let lastMonthRegisterCount = await findEnterpriseCount({taskId:{"$regex":`${lastYear}${lastMonth}$`}, isCreate:true});
let registerCount = await findEnterpriseCount({taskId:{"$regex":`${thisMonthTaskId}$`}, isCreate:true, draftLock:true});
let lastMonthRegisterCount = await findEnterpriseCount({taskId:{"$regex":`${lastMonthTaskId}$`}, isCreate:true});
statsList.push({key:"新注册企业", value:registerCount, mom:Math.round(((registerCount-lastMonthRegisterCount)/lastMonthRegisterCount)*10000)/100 });
//新迁入企业
let moveInCount = await findEnterpriseCount({taskId:{"$regex":`${nextMonthTaskId}$`}, isCreate:false});
let lastMonthMoveInCount = await findEnterpriseCount({taskId:{"$regex":`${lastYear}${lastMonth}$`}, isCreate:false});
let moveInCount = await findEnterpriseCount({taskId:{"$regex":`${thisMonthTaskId}$`}, isCreate:false});
let lastMonthMoveInCount = await findEnterpriseCount({taskId:{"$regex":`${lastMonthTaskId}$`}, isCreate:false});
statsList.push({key:"新迁入企业", value:moveInCount, mom:Math.round(((moveInCount-lastMonthMoveInCount)/lastMonthMoveInCount)*10000)/100 });
//平均出租率
let occupancyRateAVG = await statsAvgOccupancyRate(year, month);
let lastMonthOccupancyRateAVG = await statsAvgOccupancyRate(lastYear, lastMonth);
statsList.push({key:"平均出租率", value:occupancyRateAVG, mom:Math.round(((occupancyRateAVG-lastMonthOccupancyRateAVG)/lastMonthOccupancyRateAVG)*10000)/100 } );
//融资企业数
let financingEnterpriseCount = await statsFinancingEnterpriseCount({taskId:{"$regex":`${nextMonthTaskId}$`}, draftLock:true});
let lastMonthFinancingEnterpriseCount = await statsFinancingEnterpriseCount({taskId:{"$regex":`${lastYear}${lastMonth}$`}, draftLock:true});
let financingEnterpriseCount = await statsFinancingEnterpriseCount({taskId:{"$regex":`${thisMonthTaskId}$`}, draftLock:true});
let lastMonthFinancingEnterpriseCount = await statsFinancingEnterpriseCount({taskId:{"$regex":`${lastMonthTaskId}$`}, draftLock:true});
statsList.push({key:"融资企业", value:financingEnterpriseCount, mom:Math.round(((financingEnterpriseCount-lastMonthFinancingEnterpriseCount)/lastMonthFinancingEnterpriseCount)*10000)/100 });
//融资额
let financingCount = await statsFinancingCount({taskId:{"$regex":`${nextMonthTaskId}$`}, draftLock:true});
let lastMonthFinancingCount = await statsFinancingCount({taskId:{"$regex":`${lastYear}${lastMonth}$`}, draftLock:true});
let financingCount = await statsFinancingCount({taskId:{"$regex":`${thisMonthTaskId}$`}, draftLock:true});
let lastMonthFinancingCount = await statsFinancingCount({taskId:{"$regex":`${lastMonthTaskId}$`}, draftLock:true});
statsList.push({key:"融资额", value:financingCount, mom:Math.round(((financingCount-lastMonthFinancingCount)/lastMonthFinancingCount)*10000)/100 });
/**新增企业行业分布 */
let industryDBList = await newEnterpriseIndustry(year, month);
let industryDBList = await newEnterpriseIndustry(year, thisMonthTaskYearAndMonth.month()+1);
let industryList = [];
let industryCount = 0;
industryDBList.forEach(info => {
......@@ -113,12 +127,19 @@ export async function enterpriseLabel() {
countMap[id] = info.count;
});
let biye = await findEnterpriseCount({moveOutType:3,state:4});
let zhuxiao = await findEnterpriseCount({moveOutType:1,state:4});
let dataList = [];
for (let key in labelNameMap) {
let name = labelNameMap[key].labelName;
let count= 0;
if (name == "毕业企业") count = biye;
else if (name == "企业注销") count = zhuxiao;
else count = countMap[key];
dataList.push({
label:name,
count:countMap[key] || 0
count
});
}
dataList.sort((a,b) => {return b.count-a.count});
......
......@@ -75,7 +75,7 @@ export async function addEnterprisePoint(uid:string, pointId:number, p1, p2?, p3
* @returns
*/
export async function getPointDataByParam(type:number, pointId:number, param) {
let url = 'http://localhost:7078/point/query';
let url = 'http://118.25.109.173:7078/point/query';
let result:any = await post(url, {type, pointId, param}, {sign:Sign});
if (!result.success || result.code != 200) {
......
......@@ -96,6 +96,7 @@ export async function updateItemQCCData(uscc) {
await 严重违法核查(uscc);
await 科创分(uscc);
await 资质证书查询(uscc);
}
/**
......@@ -162,8 +163,6 @@ function formatAddress(original) {
return [city, city, district || city, detail || '地址不详'];
}
/**
* 同步工商信息数据
* @param uscc
......@@ -244,9 +243,8 @@ async function 工商信息(uscc) {
for (let i = 0; i < 工商信息.TagList.length; i++) {
let info = 工商信息.TagList[i];
let {Type, Name} = info;
if (Name == "曾用名") continue
let labelInfo = await labelData.selectLabelOne({labelName:Name});
if (!labelInfo || !labelInfo.id) {
//添加
labelInfo = {
......@@ -305,6 +303,117 @@ async function 工商信息(uscc) {
}
}
export function test2222() {
let a = {
"投资人居所变更": 1,
"投资人(股权)变更": 1,
"负责人变更(法定代表人、负责人、首席代表、合伙事务执行人等变更)": 1,
"章程修正案备案": 1,
"监事备案": 1,
"出资方式变更": 1,
"经营范围变更(含业务范围变更)": 1,
"一般经营项目变更": 1,
"许可经营项目变更": 1,
"经营范围变更": 1,
"行业代码变更": 1,
"章程备案": 1,
"住所变更": 1,
"企业类型变更": 1,
"高级管理人员备案": 1,
"董事备案": 1,
"联络员": 1,
"法定代表人变更": 1,
"高级管理人员备案(董事、监事、经理等)": 1,
"注册资本(金)变更": 1,
"登记机关变更": 1,
"名称变更": 1,
"投资人变更(包括出资": 1,
"其他事项": 1,
"境外股东发起人的境内": 1,
"地址变更(住所地址、经营场所、驻在地址等变更)": 1,
"经营期限(营业期限)变": 1,
"投资人变更(包括出资额、出资方式、出资日期、投资人名称等)": 1,
"名称变更(字号名称、集团名称等)": 1,
"经理备案": 1,
"注册资本变更(注册资金、资金数额等变更)": 1,
"其他变更": 1,
"工商登记联络员备案": 1,
"投资者名称(姓名)变更": 1,
"外商投资企业法律文件送达接受人(外国公司境内法律文书送达人)备案": 1,
"其他事项备案": 1,
"": 1,
"境外股东发起人的境内法律文件送达接受人备案": 1,
"合伙协议备案": 1,
"出资额变更": 1,
"负责人变更": 1,
"经营场所变更": 1,
"合伙协议修正案备案": 1,
"出资日期变更": 1,
"出资比例变更": 1,
"经营场所": 1,
"市场主体类型变更": 1,
"注册资本": 1,
"投资人": 1,
"董事(理事)、经理、监事": 1,
"执行事务合伙人及委派": 1,
"期限变更(经营期限、营业期限、驻在期限等变更)": 1,
"联络员备案": 1,
"分公司/分支机构备案": 1,
"负责人姓名": 1,
};
for (let key in a) {
console.log(key, "=>", ENTERPRISECHANGETYPE[checkchangetype(key)]);
}
console.log();
}
function checkchangetype(typeStr) {
if (typeStr.indexOf("投资人") > -1) {
return ENTERPRISECHANGETYPE.投资人信息变更;
}
if (typeStr.indexOf("负责人") > -1) {
return ENTERPRISECHANGETYPE.负责人变更;
}
if (typeStr.indexOf("联络员") > -1) {
return ENTERPRISECHANGETYPE.联络员信息变更;
}
if (typeStr.indexOf("经理") > -1 || typeStr.indexOf("监事") > -1 || typeStr.indexOf("董事") > -1 || typeStr.indexOf("高级管理人员备案") > -1) {
return ENTERPRISECHANGETYPE.高级管理人员备案;
}
if (typeStr.indexOf("注册资本") > -1 || typeStr.indexOf("注册资本变更") > -1) {
return ENTERPRISECHANGETYPE.注册资本变更;
}
if (typeStr.indexOf("地址变更") > -1 || typeStr.indexOf("经营场所变更") > -1 || typeStr.indexOf("经营场所") > -1 || typeStr.indexOf("住所变更") > -1) {
return ENTERPRISECHANGETYPE.地址变更;
}
if (typeStr.indexOf("经营期限") > -1 || typeStr.indexOf("期限变更") > -1) {
return ENTERPRISECHANGETYPE.经营期限;
}
if (typeStr.indexOf("投资者") > -1 ) {
return ENTERPRISECHANGETYPE.投资者变更;
}
if (typeStr.indexOf("出资信息变更") > -1 || typeStr.indexOf("出资额变更") > -1 || typeStr.indexOf("出资比例变更") > -1 || typeStr.indexOf("出资日期变更") > -1 || typeStr.indexOf("出资方式变更") > -1) {
return ENTERPRISECHANGETYPE.出资信息变更;
}
if (typeStr.indexOf("分公司") > -1 || typeStr.indexOf("分支机构") > -1) {
return ENTERPRISECHANGETYPE.分公司或分支机构备案;
}
if (typeStr.indexOf("经营范围") > -1 ) {
return ENTERPRISECHANGETYPE.经营范围变更;
}
if (typeStr.indexOf("其他") > -1 ) {
return ENTERPRISECHANGETYPE.其他;
}
if (typeStr.indexOf("外商投资企业法律文件") > -1 ) {
return ENTERPRISECHANGETYPE.外商投资企业法律文件送达接受人备案;
}
return ENTERPRISECHANGETYPE[typeStr] || ENTERPRISECHANGETYPE.其他
}
/**
* 准入尽职调查
* 逻辑:增量更新
......
......@@ -61,4 +61,5 @@ export const ZuLinEnterpriseConfig = {
area:{type:"Number"},
areaUnit:{type:"Number"},
address:{type:"String"},
files:{type:"[String]", notMustHave:true}
}
\ No newline at end of file
......@@ -610,6 +610,34 @@ export enum ENTERPRISECHANGETYPE {
高新技术认定,
企业认定,
股东,
投资人信息变更,
负责人变更,
章程修正案备案,
经营范围变更,
一般经营项目变更,
许可经营项目变更,
行业代码变更,
章程备案,
企业类型变更,
高级管理人员备案,
联络员信息变更,
法定代表人变更,
注册资本变更,
登记机关变更,
名称变更,
境外股东发起人的境内,
地址变更,
经营期限,
投资者变更,
外商投资企业法律文件送达接受人备案,
境外股东发起人的境内法律文件送达接受人备案,
合伙协议备案,
出资信息变更,
合伙协议修正案备案,
市场主体类型变更,
重要人员备案,
执行事务合伙人及委派,
分公司或分支机构备案,
其他
}
......@@ -638,3 +666,4 @@ export enum ZHONGDIANQIYE {
专精特新企业
}
......@@ -86,7 +86,10 @@ export enum ERRORENUM {
党员年龄分布总和大于总数,
不可选择未来时间,
智能体调用出错请联系管理员,
手机号不存在
手机号不存在,
只能上传docdocxpngjpg图片,
空文件失败,
上传时缺失关键参数
}
export enum ERRORCODEENUM {
......
......@@ -633,6 +633,17 @@ export async function fuHuaQiEnterpairseCount(taskKey:string) {
}
}
]);
// let enterpriseList = await enterpriseModel.find({taskId:{"$regex":`${taskKey}$`}, draftLock:true});
// let map = {};
// enterpriseList.forEach(info => {
// if (!map[info.fuHuaQiUscc]) map[info.fuHuaQiUscc] = {isCreateSum:0, isNotCreateSum:0, _id:info.fuHuaQiUscc};
// if (info.isCreate) {
// map[info.fuHuaQiUscc].isCreateSum += 1;
// } else {
// map[info.fuHuaQiUscc].isNotCreateSum += 1;
// }
// });
return subList;
}
......
......@@ -87,3 +87,8 @@ export async function getNewMonthTask(customTaskType:number) {
let list = await customTaskModel.find({customTaskType}).sort({dataCycle:-1}).limit(1);
return list[0];
}
export async function getNew2MonthTaskBy(customTaskType:number) {
let list = await customTaskModel.find({customTaskType}).sort({dataCycle:-1}).limit(2);
return list;
}
\ No newline at end of file
......@@ -22,6 +22,7 @@ const visitSchema = new Schema({
enterpriseType:{type:Number},//VISITENTERPRISETYPE
// demand:{type:[Number], default:[]},//企业需求
// demandDesc:String
completionTime:{type:Number}//操作走访完成或取消时间
});
......
......@@ -23,6 +23,7 @@ const leaseSchema = new Schema({
areaUnit:Number,//单位
rentPayment:{type:[rentPaymentScheme], default:[]},//租金缴纳情况
address:String,//地址
files:{type:[String], default:[]}//文件地址
});
......
import { test, zhenDuanBaoGao, 修复重复, 补充经纬度 } from "./biz/admin/provide";
import { kjjr } from "./biz/admin/show";
import { initPool } from "./biz/gpt/indicatorPool";
import { initOutline } from "./biz/gpt/report";
import { getFuHuaQiEnterprise } from "./biz/initPassword";
import { initSystemLabelData } from "./biz/label";
import { updateQCCDataTask } from "./biz/qccInit";
import { initSMS } from "./biz/sms";
import { initSystemTask } from "./biz/systemTask";
......@@ -35,6 +37,10 @@ async function lanuch() {
/**初始化孵化器上海张江药谷公共服务平台有限公司下所有企业密码 */
// await getFuHuaQiEnterprise();
// kjjr();
// await initSystemLabelData();
// await updateQCCDataTask();
// test2222();
}
......
......@@ -4,30 +4,63 @@ import { BizError } from "../util/bizError";
var formidable = require("formidable");
const path = require('path');
export async function parseFormParam(req, res, next) {
var form = new formidable.IncomingForm();
form.uploadDir = path.join(__dirname.substring(0,__dirname.indexOf("out")), 'files');
if (!req.headers) req.headers = {};
let subPath = '';
if (req.originalUrl.indexOf("policy") > -1) subPath = "policy";
else subPath = "doc";
var form = new formidable.IncomingForm({
uploadDir:path.join(__dirname.substring(0,__dirname.indexOf("out")),'files', 'admin', subPath),
maxFildsSize:10*1024*1024,
keepExtensions:true
});
form.parse(req, (err, fields, files)=>{
if (err) {
next(err)
return next(err);
} else if (!files || !Object.keys(files).length) {
return next(new BizError(ERRORENUM.空文件失败));
}
else {
req.fields = fields;
req.files = files;
if (!files.file) {
return next(new BizError(ERRORENUM.文件上传失败) )
req.files = {};
if (!files.formData && !files.file ) return next(new BizError(ERRORENUM.文件上传失败) );
if (files.formData) {
req.files.formData = files.formData;
}
if ( files.file.type == 'image/png') {
else {
req.files.formData = files.file;
}
if (!req.files.formData || !req.files.formData.name) {
return next(new BizError(ERRORENUM.文件上传失败) );
}
if ( req.files.formData.type == 'image/png') {
req.fileType = '.png';
next();
} else if (files.file.type == 'image/jpg' || files.file.type == 'image/jpeg') {
return next();
} else if (req.files.formData.type == 'image/jpg' || req.files.formData.type == 'image/jpeg') {
req.fileType = '.jpg';
next();
return next();
} else if (req.files.formData.type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
req.fileType = '.docx';
return next();
} else if (req.files.formData.type == "application/msword") {
req.fileType = '.doc';
return next();
} else if (req.files.formData.type == "application/pdf") {
req.fileType = '.pdf';
return next();
} else if (req.files.formData.type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"){
req.fileType = '.xlsx';
return next();
} else {
return next(new BizError(ERRORENUM.只能上传pngjpg图片) )
return next(new BizError(ERRORENUM.只能上传docdocxpngjpg图片) )
}
}
})
}
......@@ -7,7 +7,6 @@ import * as portraitBiz from '../../biz/admin/enterprise/enterprisePortrait';
export function setRouter(httpServer) {
/** 标签管理*/
httpServer.post('/admin/portrait/enterprise',checkGuanWeiHuiToken, asyncHandler(enterprisePortrait));
}
......
......@@ -43,16 +43,24 @@ export function setRouter(httpServer) {
httpServer.post('/admin/stats/guanweih/fuhuaqi/valueanalysis',checkGuanWeiHuiToken, asyncHandler(valueAnalysis));//价值分析
//企业自画像
// httpServer.post('/admin/stats/enterprise/portrait',checkGuanWeiHuiToken, asyncHandler(enterprisportrait));//价值分析
httpServer.post('/admin/stats/enterprise/portrait',checkGuanWeiHuiToken, asyncHandler(enterprisportrait));
}
// async function enterprisportrait(req, res) {
// d
// }
async function enterprisportrait(req, res) {
let reqConf = {
uscc : 'String'
};
const NotMustHaveKeys = [];
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await enterpriseBaseBiz.enterprIsPortrait(uscc);
res.success(result);
}
......
/**
* 文件上传
*/
import * as asyncHandler from 'express-async-handler'
import { parseFormParam } from '../middleware/fromParam';
import { checkGuanWeiHuiToken } from '../middleware/user';
import moment = require('moment');
const fs = require('fs');
const path = require('path');
export function setRouter(httpServer){
httpServer.post('/admin/files/up', checkGuanWeiHuiToken, parseFormParam, asyncHandler(upFiles));
httpServer.post('/admin/files/policy/up', checkGuanWeiHuiToken, parseFormParam, asyncHandler(upPolicyBackground));
}
async function upFiles(req, res) {
let fileType = req.fileType;
let { name } = req.files.formData;
let docPath = req.files.formData.path;
let fileDir = path.resolve(docPath, '..');
let fileName = `${getFilesId(fileType, name)}${fileType}`;
let newPath = path.join(fileDir, fileName);
fs.renameSync(docPath, newPath );
console.log("上传文件",fileName,"成功");
res.success({isSuccess:true, url:`/admin/doc/${fileName}`, fileName});
}
export function getFilesId( type:string, fileName:string) {
return `${fileName.replace(type, "")}${moment().format("YYYYMMDD_HHmmSS")}`;
}
async function upPolicyBackground(req, res) {
let fileType = req.fileType;
let { name } = req.files.formData;
let docPath = req.files.formData.path;
let fileDir = path.resolve(docPath, '..');
let fileName = `${getFilesId(fileType, name)}${fileType}`;
let newPath = path.join(fileDir, fileName);
fs.renameSync(docPath, newPath );
console.log("上传文件",fileName,"成功");
res.success({isSuccess:true, url:`/admin/policy/${fileName}`, fileName});
}
......@@ -40,6 +40,8 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/keynote/list', checkFuHuaQiToken, asyncHandler(keynote_list));//企业列表
httpServer.post('/fuhuaqi/keynote/add', checkFuHuaQiToken, asyncHandler(keynote_add));//添加企业
httpServer.post('/fuhuaqi/keynote/del', checkFuHuaQiToken, asyncHandler(keynote_del));//取消重点企业
// httpServer.post('/fuhuaqi/keynote/labellist', checkFuHuaQiToken, asyncHandler(keynote_add_labels));//
}
......@@ -86,15 +88,16 @@ async function keynote_list(req, res) {
}
async function keynote_add(req, res) {
let reqConf = {uscc: 'String'};
let { uscc } = eccReqParamater(reqConf, req.body);
let reqConf = {uscc: 'String', label:'[Number]'};
let { uscc, label } = eccReqParamater(reqConf, req.body);
const FuHuaQiUscc = req.headers.uscc;
let result = await keynoteBiz.changeEnterpriseFollow( uscc, true);
let result = await keynoteBiz.changeEnterpriseFollow( uscc, true, label);
res.success(result);
}
async function keynote_del(req, res) {
let reqConf = {uscc: 'String'};
let { uscc } = eccReqParamater(reqConf, req.body);
......
......@@ -60,8 +60,17 @@ export function setRouter(httpServer) {
/** */
httpServer.post('/admin/provide/fuhuaqi/customtask/6', checkInterior, asyncHandler(customTaskAndTaskId) );
/**修复标签 */
httpServer.post('/admin/provide/enterprise/label/distinct', checkInterior, asyncHandler(labeldistinct) );
}
async function labeldistinct(req, res) {
provideBiz.enterpriselabeldistinct();
res.success({isUsccess:true});
}
async function inputEnterprise202304Data(req, res) {
await provideBiz.replaceInitEnberpriseData();
res.success({isUsccess:true});
......
......@@ -12,7 +12,7 @@ import * as mobileClientUserRouters from './mobileClient/user';
import * as mobileClientBusinessRouters from './mobileClient/business';
import * as institutionalNatureRouters from './mobileClient/institutionalNature';
import * as remindRouters from './mobileClient/remind';
import * as filesRouters from './admin/files';
// import * as filesRouters from './admin/files'; 弃用
import * as adminEnterpriseRouters from './admin/enterprise';
import * as adminFuHuaQiRouters from './admin/fuHuaQi';
......@@ -53,6 +53,8 @@ import * as adminActivityRouter from './admin/activity';
import * as portraitRouter from './admin/portrait';
import * as dataSyncRouter from './admin/dataSync';
import * as showRouter from './show';
import * as filesRouter from './files';
export function setRouter(httpServer){
/**下拉框等公用 路由 */
......@@ -75,7 +77,7 @@ export function setRouter(httpServer){
adminScoreRouters.setRouter(httpServer);
adminTaskRouters.setRouter(httpServer);
informationRouters.setRouter(httpServer);
filesRouters.setRouter(httpServer);
// filesRouters.setRouter(httpServer);
instituQualifyRouters.setRouter(httpServer);
dataMaintenanceRouters.setRouter(httpServer);
statsRouters.setRouter(httpServer);
......@@ -120,4 +122,8 @@ export function setRouter(httpServer){
dataSyncRouter.setRouter(httpServer);
portraitRouter.setRouter(httpServer);
showRouter.setRouter(httpServer);
filesRouter.setRouter(httpServer);
}
\ No newline at end of file
/**
* 大屏
*/
import * as asyncHandler from 'express-async-handler';
import { checkEnterpriseToken, checkFuHuaQiToken, checkGuanWeiHuiToken} from '../middleware/user';
import { addFuHuaQiPoint } from '../biz/point';
import { FUHUAQINODEENUM, POINTTYPEENUM } from '../config/pointConfig';
import { fhqbk, kjjr, upShowExcel } from '../biz/admin/show';
import { eccReqParamater } from '../util/verificationParam';
export function setRouter(httpServer) {
/** 孵化器端 */
httpServer.post('/show/fhqbk', asyncHandler(fhqbkdata) );
httpServer.post('/show/kjjr', asyncHandler(kjjrdata) );
httpServer.post('/show/updata', checkGuanWeiHuiToken, asyncHandler(upData) );
}
async function upData(req, res) {
let reqConf = {list:'[Object]'};
let {list} = eccReqParamater(reqConf, req.body);
let result = await upShowExcel(list);
res.success(result);
}
/**
*
* @param req
* @param res
*/
async function fhqbkdata(req, res) {
let result = await fhqbk();
res.success(result);
}
async function kjjrdata(req, res) {
let result = await kjjr();
res.success(result);
}
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