Commit 49b94055 by chenjinjing

no message

parent 1d9debb5
......@@ -40,24 +40,43 @@ export async function enterpriseApplyFor(eId:string) {
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "startTime", "endTime", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
// let leaseFilesList = ["leaseId", "startTime", "endTime", "area", "leaseContract", "entryPlan", "businessLicense", "agreement", "tripartiteAgreement"];
let leaseFilesList = ["leaseId", "startTime", "endTime", "area",
"sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
let dataInfo:any = extractData(EnterpriseApplyForConfig, enterpriseUserInfo);
dataInfo.logonTime = moment(enterpriseUserInfo.logonTime).format("YYYY-MM-DD");
dataInfo.leaseTime = `${moment(leaseInfo.startTime).format("YYYY-MM-DD")}${moment(leaseInfo.endTime).format("YYYY-MM-DD")}`;
// dataInfo.leaseTime = `${moment(leaseInfo.startTime).format("YYYY-MM-DD")}至${moment(leaseInfo.endTime).format("YYYY-MM-DD")}`;
dataInfo.area = leaseInfo.area;
dataInfo.leaseContract = leaseInfo.leaseContract;
dataInfo.entryPlan = leaseInfo.entryPlan;
dataInfo.businessLicense = leaseInfo.businessLicense;
dataInfo.agreement = leaseInfo.agreement;
dataInfo.leaseContractModelUrl = "/yuyi/files/孵化协议模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.agreementModelUrl = "/yuyi/files/三方协议.docx";
dataInfo.sanFangXieYi = leaseInfo.sanFangXieYi;
dataInfo.fuHuaXieYi = leaseInfo.fuHuaXieYi;
dataInfo.fangWuZuLing = leaseInfo.fangWuZuLing;
dataInfo.fuHuaXieYiBuChong = leaseInfo.fuHuaXieYiBuChong;
dataInfo.chengXinChengNuoHan = leaseInfo.chengXinChengNuoHan;
dataInfo.yingYeZhiZhao = leaseInfo.yingYeZhiZhao;
dataInfo.ruFuZiLiao = leaseInfo.ruFuZiLiao;
dataInfo.ruZhuJiHua = leaseInfo.ruZhuJiHua;
dataInfo.yaJinZhiFu = leaseInfo.yaJinZhiFu;
dataInfo.cardCopy = leaseInfo.cardCopy;
/**下载用:模板 */
dataInfo.sanFangXieYiModelUrl = "/yuyi/files/三方协议.docx"
dataInfo.fuHuaXieYiModelUrl = "/yuyi/files/孵化协议最新版.docx"
// dataInfo.fangWuZuLingModelUrl = ""
dataInfo.fuHuaXieYiBuChongModelUrl = "/yuyi/files/孵化协议补充协议书.docx"
dataInfo.chengXinChengNuoHanModelUrl = "/yuyi/files/诚信承诺函.docx"
// dataInfo.yingYeZhiZhaoModelUrl = ""
dataInfo.ruFuZiLiaoModelUrl = "/yuyi/files/入孵资料明细.xls"
dataInfo.ruZhuJiHuaModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx"
// dataInfo.yaJinZhiFuModelUrl = ""
// dataInfo.cardCopyModelUrl = ""
// dataInfo.leaseContractModelUrl = "/yuyi/files/孵化协议模板.docx";
// dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
// dataInfo.tripartiteModelUrl = "/yuyi/files/三方协议.docx";
return {dataInfo};
}
......@@ -283,6 +302,27 @@ export async function outPutEnterpriseManageList(enterpriseName:string, year:num
}
/**
* 经营数据-编辑
* @param mId
* @param BI 营收(万元)
* @param TXP 纳税(万元)
* @param RD 研发投入(万元)
* @returns
*/
export async function updateManage(mId:string, BI:string, TXP:string, RD:string) {
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业经营信息, {mId}, ["mId", "BI", "TXP", "RD", "annual", "quarter"]);
if (!resInfo || !resInfo.mId) {
throw new BizError(ERRORENUM.数据不存在);
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业经营信息, {BI, TXP, RD}, {mId});
return {isSuccess:true};
}
//===融资
export async function enterpriseFinancingList(enterpriseName:string, year:number, page:number) {
// let selectParam:any = {state:enumConfig.STATE.是};
......@@ -795,15 +835,21 @@ export async function getiprDetails(eId:string) {
* @returns
*/
export async function qiyeRenZheng(enterpriseName, page) {
let selectParam:any = {};
let selectParam:any = {state:enumConfig.CHANGESTATE.已通过};
if (enterpriseName) {
selectParam.enterpriseName = {"%like%":enterpriseName};
}
let manyTableInfo:any = {};
let manyTableColumn = ["qId", "kxState","kxTime","kxNumber","kxImg", "zjtxState","zjtxTime","zjtxImg",
"xjrState", "xjrTime","xjrImg","xjrPyState", "xjrPyTime","xjrPyImg",
"gxjsState","gaoXinJiShuTime","gaoXinJiShuImg","listedState", "goPublicTime", "goPublicSector","other"];
"xjrPyState", "xjrPyTime","xjrPyImg", "gxjsState", "cxTime", "cxImg", "cxState" ,"gaoXinJiShuTime","gaoXinJiShuImg"];
manyTableInfo[TABLENAME.企业资质] = {column:manyTableColumn, where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["fId", "eId"], where:{state: { "%between%": [enumConfig.FUHUASTATE.实体孵化, enumConfig.FUHUASTATE.虚拟孵化] }} };
// let manyTableInfo:any = {};
// let manyTableColumn = ["qId", "kxState","kxTime","kxNumber","kxImg", "zjtxState","zjtxTime","zjtxImg",
// "xjrState", "xjrTime","xjrImg","xjrPyState", "xjrPyTime","xjrPyImg",
// "gxjsState","gaoXinJiShuTime","gaoXinJiShuImg","listedState", "goPublicTime", "goPublicSector","other"];
// manyTableInfo[TABLENAME.企业资质] = {column:manyTableColumn, where:{} };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, ["enterpriseName", "uscc", "eId"], manyTableInfo, page);
let allDataList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["enterpriseName", "uscc"], manyTableInfo);
......@@ -821,22 +867,25 @@ export async function qiyeRenZheng(enterpriseName, page) {
zjtxTime:"-",
zjtxState:"否",
zjtxImg:[],
xjrState:"否",
xjrTime:"-",
xjrImg:[],
// xjrState:"否",
// xjrTime:"-",
// xjrImg:[],
xjrPyTime:"-",
xjrPyImg:[],
xjrPyState:"否",
gxjsState:"否",
goPublicTime:"-",
// goPublicTime:"-",
gaoXinJiShuImg:[],
gaoXinJiShuTime:"-",
listedState:"否",
other:"",
goPublicSector:"",
cxTime:"-",
cxState:"否",
cxImg:[],
// listedState:"否",
// other:"",
// goPublicSector:"",
};
let imgConf = ["kxImg", "zjtxImg", "xjrImg", "xjrPyImg", "gaoXinJiShuImg"];
let imgConf = ["kxImg", "zjtxImg", "xjrPyImg", "gaoXinJiShuImg", "cxImg"];
let updateInfo:any = {};
for (let i = 0; i < enterprise_qualifications.length; i++) {
......@@ -850,22 +899,26 @@ export async function qiyeRenZheng(enterpriseName, page) {
updateInfo.zjtxState = enumConfig.STATE.;
item.zjtxState = enumConfig.STATE.;
}
if (item.xjrTime && item.xjrState != enumConfig.STATE.) {
updateInfo.xjrState = enumConfig.STATE.;
item.xjrState = enumConfig.STATE.;
}
// if (item.xjrTime && item.xjrState != enumConfig.STATE.是) {
// updateInfo.xjrState = enumConfig.STATE.是;
// item.xjrState = enumConfig.STATE.是;
// }
if (item.xjrPyTime && item.xjrPyState != enumConfig.STATE.) {
updateInfo.xjrPyState = enumConfig.STATE.;
item.xjrPyState = enumConfig.STATE.;
}
if (item.goPublicTime && item.listedState != enumConfig.STATE.) {
updateInfo.listedState = enumConfig.STATE.;
item.listedState = enumConfig.STATE.;
}
// if (item.goPublicTime && item.listedState != enumConfig.STATE.是) {
// updateInfo.listedState = enumConfig.STATE.是;
// item.listedState = enumConfig.STATE.是;
// }
if (item.gaoXinJiShuTime && item.gxjsState != enumConfig.STATE.) {
updateInfo.gxjsState = enumConfig.STATE.;
item.gxjsState = enumConfig.STATE.;
}
if (item.cxTime && item.cxState != enumConfig.STATE.) {
updateInfo.cxState = enumConfig.STATE.;
item.cxState = enumConfig.STATE.;
}
if(Object.keys(updateInfo).length > 0) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, updateInfo, {qId:item.qId});
if (item.kxTime) addItem.kxTime = moment(item.kxTime).format("YYYY");
......@@ -876,8 +929,8 @@ export async function qiyeRenZheng(enterpriseName, page) {
if (item.zjtxState) addItem.zjtxState = changeEnumValue(enumConfig.STATE, item.zjtxState);
// if (item.zjtxImg) addItem.zjtxImg = JSON.parse(item.zjtxImg);
if (item.xjrTime) addItem.xjrTime = moment(item.xjrTime).format("YYYY");
if (item.xjrState) addItem.xjrState = changeEnumValue(enumConfig.STATE, item.xjrState);
// if (item.xjrTime) addItem.xjrTime = moment(item.xjrTime).format("YYYY");
// if (item.xjrState) addItem.xjrState = changeEnumValue(enumConfig.STATE, item.xjrState);
// if (item.xjrImg) addItem.xjrImg = JSON.parse(item.xjrImg);
if (item.xjrPyTime) addItem.xjrPyTime = moment(item.xjrPyTime).format("YYYY");
......@@ -891,6 +944,10 @@ export async function qiyeRenZheng(enterpriseName, page) {
if (item.gaoXinJiShuTime) addItem.gaoXinJiShuTime = moment(item.gaoXinJiShuTime).format("YYYY");
// if (item.gaoXinJiShuImg) addItem.gaoXinJiShuImg = JSON.parse(item.gaoXinJiShuImg);
if (item.cxTime) addItem.cxTime = moment(item.cxTime).format("YYYY");
if (item.cxState) addItem.cxState = changeEnumValue(enumConfig.STATE, item.cxState);
if (item.cxImg) addItem.cxImg = JSON.parse(item.cxImg);
if (item.goPublicSector && item.goPublicSector != "[]") {
// if (!addItem.goPublicSector) addItem.goPublicSector = [];
addItem.goPublicSector = changeEnumValue(enumConfig.LISTINGSITUATION, JSON.parse(item.goPublicSector));
......@@ -912,7 +969,7 @@ export async function qiyeRenZheng(enterpriseName, page) {
}
};
return {dataList, dataCount:allDataList.length};
return {dataList, dataCount:allDataList.length};
}
......
/**
* 企业自评
*/
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { STATE } from "../config/enum/enum";
import { paginateArray, selectData, selectManyTableData } from "../data/operationalData";
/**
* 企业自评结果
*/
export async function enterpriseResults(enterpriseName:string, page:number) {
// 1. 查询企业基本信息
let selectParam:any = {}
if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName};
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.企业基础信息表] = {column:["eId", "enterpriseName"], where:selectParam };
let enterpriseInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.答题记录, {answerStatus:STATE.}, ["garId"], manyTableInfo);
// 获取企业及其答题记录ID
let answerIdList = enterpriseInfo.map(info => info.garId);
// let answerIdList = [];
// enterpriseInfo.forEach( info => {
// answerIdList.push(info.garId);
// });
// 2. 获取答题记录总得分
let answerRecords = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.答题记录, { garId: { "%in%": answerIdList } }, ["garId", "totalScore"] );
// 3. 获取各分类得分
let manyAnswerTableInfo:any = {};
manyAnswerTableInfo[TABLENAME.高新企业创新能力评价答题] = { column:["answerType"], where:{} };
let answerDetails = await selectManyTableData(
OPERATIONALDATATYPE.多表联查,
TABLENAME.答题记录明细,
{ garId: { "%in%": answerIdList } },
["garId", "gaId", "questionScore"],
manyAnswerTableInfo
);
// 4. 处理数据,按企业分组并计算各分类得分
let result = [];
// 使用forEach遍历企业信息
enterpriseInfo.forEach(enterprise => {
// 1. 找出当前企业的答题记录
let currentRecords = [];
answerRecords.forEach(record => {
if (record.garId === enterprise.garId) {
currentRecords.push(record);
}
});
// 2. 找出当前企业的答题明细
let currentDetails = [];
answerDetails.forEach(detail => {
if (detail.garId === enterprise.garId) {
currentDetails.push(detail);
}
});
// 3. 初始化分类得分对象
let categoryScores = {
知识产权: 0,
科技成果: 0,
研发管理: 0,
企业成长: 0
};
// 4. 计算各分类得分
currentDetails.forEach(detail => {
let category = detail.gaoxin_answer.answerType;
if (categoryScores.hasOwnProperty(category)) {
categoryScores[category] += parseInt(detail.questionScore) || 0;
}
});
// 5. 构建结果对象并添加到结果数组
result.push({
garId:enterprise.garId,
企业名称: enterprise.enterprise.enterpriseName,
总得分: currentRecords[0]?.totalScore || 0,
...categoryScores
});
});
let paginatedData = await paginateArray(result, page);
let dataList = paginatedData.data;
let dataCount = paginatedData.meta.totalItems;
// let result = enterpriseInfo.map(enterprise => {
// /** filter方法:从数组中筛选出符合条件(相同garId)的元素 */
// // 1. 筛选当前企业的答题记录
// let records = answerRecords.filter(r => r.garId === enterprise.garId);
// // 2. 筛选当前企业的答题明细
// let details = answerDetails.filter(d => d.garId === enterprise.garId);
// // 初始化分类得分
// let categoryScores = {
// 知识产权: 0,
// 科技成果: 0,
// 研发管理: 0,
// 企业成长: 0
// };
// // 计算各分类得分
// details.forEach(detail => {
// let category = detail.gaoxin_answer.answerType;
// if (categoryScores.hasOwnProperty(category)) {
// categoryScores[category] += parseInt(detail.questionScore) || 0;
// }
// });
// return {
// 企业名称: enterprise.enterprise.enterpriseName,
// 总得分: records[0]?.totalScore || 0,
// ...categoryScores
// };
// });
return {dataList, dataCount};
}
/**
* 获取企业答题详情
* @param garId 答题记录ID
* @param answerType 题目类型(知识产权/科技成果/研发管理/企业成长)
* @returns 返回指定类型的答题详情数组
*/
export async function getAnswerDetails(garId: string, answerType: string) {
// 1. 查询答题记录明细
let manyTableInfo: any = {};
manyTableInfo[TABLENAME.高新企业创新能力评价答题] = {
column: ["subject", "sort", "answerType"],
where: { answerType }
};
let details = await selectManyTableData(
OPERATIONALDATATYPE.多表联查,
TABLENAME.答题记录明细,
{ garId },
["gadId", "gaId", "options", "questionScore"],
manyTableInfo
);
// 2. 查询选项数据(用于获取选项文本)
let optionPromises = details.map(detail =>
selectData(
OPERATIONALDATATYPE.查询多个,
TABLENAME.高新企业创新能力评价选项,
{ gaId: detail.gaId },
["goId", "option", "answer"]
)
);
let optionResults = await Promise.all(optionPromises);
// 3. 处理数据,构建返回结果
let result = [];
if (answerType == "企业成长") {
result = details.map((detail, index) => {
// 获取当前题目的选项
let options = optionResults[index] as Array<{ goId: number; answer: string }> | undefined;
// let options = optionResults[index];
// 解析用户选择的选项ID
let selectedOptionIds = JSON.parse(detail.options || "[]");
// 查找用户选择的选项文本
let selectedOptions = (options as Array<{ goId: number; answer: string }>)
.filter(opt => selectedOptionIds.includes(opt.goId))
.map(opt => opt.answer)
.join(", ");
// let selectedOptions = options.filter(opt =>
// selectedOptionIds.includes(opt.goId)
// ).map(opt => opt.answer).join(", ");
return {
版块: detail.gaoxin_answer.answerType,
序号: detail.gaoxin_answer.sort,
题目名称: detail.gaoxin_answer.subject,
选项: selectedOptions || "-", // 如果没有选择则显示"-"
得分: detail.questionScore || 0
};
});
} else {
result = details.map((detail, index) => {
// 获取当前题目的选项
let options = optionResults[index] as Array<{ goId: number; answer: string }> | undefined;
// let options = optionResults[index];
// 解析用户选择的选项ID
let selectedOptionIds = JSON.parse(detail.options || "[]");
// 查找用户选择的选项文本
let selectedOptions = (options as Array<{ goId: number; answer: string }>)
.filter(opt => selectedOptionIds.includes(opt.goId))
.map(opt => opt.answer)
.join(", ");
// let selectedOptions = options.filter(opt =>
// selectedOptionIds.includes(opt.goId)
// ).map(opt => opt.answer).join(", ");
return {
版块: detail.gaoxin_answer.answerType,
序号: detail.gaoxin_answer.sort,
题目名称: detail.gaoxin_answer.subject,
选项: selectedOptions || "-", // 如果没有选择则显示"-"
得分: detail.questionScore || 0
};
});
}
result.sort( (a, b) => {
return a.序号 - b.序号;
})
return result;
}
/**
* 查询所有企业的租房补贴资格评估列表
* @param enterpriseName 企业名称筛选条件(可选)
* @returns 企业评估结果列表
*/
export async function getHousingSubsidyEligibilityList(enterpriseName:string, page:number) {
// 1. 构建查询条件
let selectParam:any = {}
if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName};
// 2. 多表联查:企业信息 + 最新答题记录
let manyTableInfo: any = {};
manyTableInfo[TABLENAME.企业基础信息表] = {
column: ["eId", "enterpriseName"],
where: selectParam
};
// 获取企业及其最新答题记录(按答题时间降序)
let enterprises = await selectManyTableData(
OPERATIONALDATATYPE.多表联查, TABLENAME.租房补贴答题记录, {answerStatus:STATE.}, ["zarId", "eId", "totalScore"],
manyTableInfo
);
// 3. 如果没有企业数据,直接返回空数组
if (enterprises.length === 0) {
return [];
}
// 4. 获取所有答题记录明细及相关题目信息
let zarIds = enterprises.map(e => e.zarId);
let detailTableInfo: any = {};
detailTableInfo[TABLENAME.租房补贴企业自评] = {
column: ["zaId", "answerType", "subject", "sort"],
where: {},
order: [["sort", "ASC"]]
};
let allDetails = await selectManyTableData(
OPERATIONALDATATYPE.多表联查,
TABLENAME.租房补贴答题记录明细,
{ zarId: {"%in%":zarIds} },
["zadId", "zarId", "zaId", "options"],
detailTableInfo
);
let result = [];
// 5. 按企业分组处理数据
enterprises.forEach( enterprise => {
// 筛选该企业的答题明细
let details = allDetails.filter(d => d.zarId === enterprise.zarId);
// 初始化结果对象
let eligibility: any = {
企业名称: enterprise.enterprise.enterpriseName,
是否有研发费用: "",
是否有缴纳社保: "",
是否有软著等知识产权: "",
是否认定科小或创新型中小企业: "",
是否符合租房补贴申请: enterprise.totalScore === 1 ? "符合" : "不符合",
};
// 处理每个答题明细
details.forEach( detail => {
// 将answerType作为键,转换options为"是"/"否"
eligibility[detail.zufang_answer.answerType] = detail.options === 1 ? "是" : "否";
})
if (details.length >= 4) {
result.push(eligibility);
}
})
let paginatedData = await paginateArray(result, page);
let dataList = paginatedData.data;
let dataCount = paginatedData.meta.totalItems;
return {dataList, dataCount};
}
......@@ -3,17 +3,17 @@
*/
import moment = require("moment");
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import { BUILDING, CHANGESTATE, CHANGETYPE, DEGREE, EMIGRATIONTYPE, FUHUASTATE, INCOME, INDUSTRY, OFFLINEPROMOTION, ONLINEPROMOTION, PROMOTIONTYPE, STATE } from "../config/enum/enum";
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { BUILDING, CHANGESTATE, EMIGRATIONTYPE, FUHUASTATE, INDUSTRY, OFFLINEPROMOTION, ONLINEPROMOTION, PROMOTIONTYPE } from "../config/enum/enum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { getIntervalYear, getMySqlMs, randomId } from "../tools/system";
import { changeEnumValue } from "../util/verificationEnum";
import { eccFormParam } from "../util/verificationParam";
import { AdminRegisterAddConfig, YuYiBaseDataUpdateConfig } from "../config/eccParam/enterprise";
import { YuYiBaseDataUpdateConfig } from "../config/eccParam/enterprise";
import { ERRORENUM } from "../config/enum/errorEnum";
import { BizError } from "../util/bizError";
import { extractData } from "../util/piecemeal";
import { EnterpriseApplyForConfig, YuYiBaseDataConfig } from "../config/splitResult/enterprise";
import { YuYiBaseDataConfig } from "../config/splitResult/enterprise";
/**
......@@ -63,9 +63,10 @@ export async function getBaseData() {
zaifuResList.forEach(info => {
info.enterprise_leases.forEach(lease => {
// 确认租赁时间在有效范围内
if (nowTime >= lease.startTime && nowTime <= lease.endTime) {
baseData.fuhuaData["在孵面积"] += parseFloat(lease.area);
}
// if (nowTime >= lease.startTime && nowTime <= lease.endTime) {
// baseData.fuhuaData["在孵面积"] += parseFloat(lease.area);
// }
});
});
// baseData.fuhuaData["在孵面积占比"] = ((baseData.fuhuaData["在孵面积(㎡)"] / baseData.fuhuaData["总面积(㎡)"])*100).toFixed(2) + "%";
......@@ -76,7 +77,8 @@ export async function getBaseData() {
/**毕业企业 */
// let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {graduationTime:{"%ne%":null}}, {});
let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {moveOutType:EMIGRATIONTYPE.毕业迁出}, {});
// let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {moveOutType:EMIGRATIONTYPE.毕业迁出}, {});
let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {"%or%":[{moveOutType:EMIGRATIONTYPE.毕业迁出}, {moveOutType:EMIGRATIONTYPE.毕业未迁出}]}, {});
if (biyeList) baseData.fuhuaData["毕业企业"] = biyeList.length;
/**孵化器信息 */
......@@ -123,7 +125,7 @@ export async function getBaseData() {
"4":{"入驻率":"", "入驻企业":入驻企业[BUILDING["4号楼"]].length}};
if (entryList.length) {
entryList.forEach( info => {
// let building = changeEnumValue(BUILDING, info.building);
// let = changeEnumValue(BUILDING, info.building);
let building = info.building;
if (!entryInfo[building]) {
entryInfo[building] = { "入驻率": "", "入驻企业": "" };
......@@ -247,7 +249,7 @@ export async function getOperateData(year) {
let biyeList = await selectData(
OPERATIONALDATATYPE.查询多个,
TABLENAME.企业孵化信息,
{ moveOutType: EMIGRATIONTYPE.毕业迁出 }, {}); // 只查毕业迁出的企业
{"%or%":[{ moveOutType:EMIGRATIONTYPE.毕业迁出 }, { moveOutType:EMIGRATIONTYPE.毕业未迁出 }]}, {}); // 只查毕业迁出的企业
let biyeInfo = { ...qushiConf }; // 每月初始化为0
......@@ -270,7 +272,7 @@ export async function getOperateData(year) {
//将 industry 字符串转换为数组
let manyTableInfo: any = {}
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {} };
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["fId", "eId", "startTime", "endTime", "state"], where: {state: { "%between%": [FUHUASTATE.实体孵化, FUHUASTATE.虚拟孵化] }} };
manyTableInfo[TABLENAME.租赁信息] = { column: ["area", "startTime", "endTime"], where: {} };
let fhdbList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, { state: CHANGESTATE.已通过 }, ["industry", "eId"], manyTableInfo);
......@@ -383,7 +385,7 @@ export async function getRiskData() {
fhdbList.forEach(info => {
let riskLevel = "";
if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.违约退租 || info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.到期退租) {
if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.违约退租) {
yj.高风险 += 1;
riskLevel = "高风险";
riskEnterprises.push([info.enterpriseName, riskLevel]);
......@@ -391,7 +393,11 @@ export async function getRiskData() {
yj.中低风险 += 1;
riskLevel = "中低风险";
riskEnterprises.push([info.enterpriseName, riskLevel]);
}
} else if (info.enterprise_fuhuas[0].moveOutType == EMIGRATIONTYPE.到期退租) {
yj.关注 += 1;
riskLevel = "关注";
riskEnterprises.push([info.enterpriseName, riskLevel]);
}
});
let yujiData = [];
......
......@@ -4,7 +4,7 @@ import { systemConfig } from "../config/serverConfig";
import { getQcc } from "../util/request";
import { getMySqlMs, getPinyinInitials, randomId } from "../tools/system";
import moment = require("moment");
import { FINANCINGROUNDS, STATE } from "../config/enum/enum";
import { FINANCINGROUNDS, INDUSTRY, STATE } from "../config/enum/enum";
const md5 = require("md5");
......@@ -100,6 +100,27 @@ function getReqParam(uscc, isKeyNo?) {
}
function formatAddress(original) {
// 匹配省/直辖市(支持"北京市"/"上海"等格式)
const cityMatch = original.match(/^(.*?(?:省|市|自治区|特别行政区))/);
const city = cityMatch ? cityMatch[1] : original.split(/[市区县]/)[0] + '市';
// 匹配区级(支持"浦东新区"/"朝阳区"等格式)
const districtMatch = original.match(/(?:省|市)(.*?(?:区|县|市|旗))/);
const district = districtMatch ? districtMatch[1] : '';
// 处理详细地址(自动保留原格式,仅修正明显错误)
let detail = original.replace(city, '').replace(district, '')
.replace(/(\d+)[幢栋](\d+)层/g, (_, num1, num2) => {
const chineseNums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
return `${chineseNums[parseInt(num1)] || num1}${num2}${num2.length === 1 ? '室' : ''}`;
})
.trim();
return [city, city, district || city, detail || '地址不详'];
}
/**
* 同步工商信息数据
......@@ -111,269 +132,321 @@ async function 工商信息(uscc, eId) {
let {header, query} = getReqParam(uscc);
let 工商信息:any = await getQcc('https://api.qichacha.com/ECIInfoVerify/GetInfo', query, header);//获取工商信息
let khsfsb = getReqParam(uscc);
let 客户身份识别:any = await getQcc('https://api.qichacha.com/CustomerDueDiligence/KYC', khsfsb.query, khsfsb.header);//获取工商信息
let pinyinName = getPinyinInitials(工商信息.Name);
let industryList = []; //Industry
let TermStart = moment(工商信息.TermStart).format("YYYY-MM-DD");
let TermEnd = "无固定期限";
if (工商信息.TermEnd) TermEnd = moment(工商信息.TermEnd).format("YYYY-MM-DD");
if (工商信息.OperName) {
let farenInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.法人信息表, {eId, name:工商信息.OperName}, ["legalId"] );
if (!farenInfo || !farenInfo.legalId ) {
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.法人信息表, {}, {eId});
let addfr = {
legalId:randomId(TABLEID.法人信息表),
eId,
name:工商信息.OperName
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.法人信息表, addfr, {});
}
}
if (Object.keys(工商信息).length) {
let khsfsb = getReqParam(uscc);
let 客户身份识别:any = await getQcc('https://api.qichacha.com/CustomerDueDiligence/KYC', khsfsb.query, khsfsb.header);//获取工商信息
//企业基础信息
let guanWang = "";
if (工商信息.ContactInfo.WebSite && 工商信息.ContactInfo.WebSite[0]) {
guanWang = 工商信息.ContactInfo.WebSite[0].Url || "";
}
let qiYeGuiMo = "";
if (客户身份识别.Data && 客户身份识别.Data.Scale) {
switch (客户身份识别.Data.Scale) {
case "L": qiYeGuiMo = "大型"; break;
case "M": qiYeGuiMo = "中型"; break;
case "S": qiYeGuiMo = "小型"; break;
case "XS": qiYeGuiMo = "微型"; break;
let pinyinName = getPinyinInitials(工商信息.Name);
let TermStart = moment(工商信息.TermStart).format("YYYY-MM-DD");
let TermEnd = "无固定期限";
if (工商信息.TermEnd) TermEnd = moment(工商信息.TermEnd).format("YYYY-MM-DD");
if (工商信息.OperName) {
let farenInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.法人信息表, {eId, name:工商信息.OperName}, ["legalId"] );
if (!farenInfo || !farenInfo.legalId ) {
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.法人信息表, {}, {eId});
let addfr = {
legalId:randomId(TABLEID.法人信息表),
eId,
name:工商信息.OperName
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.法人信息表, addfr, {});
}
}
}
let baseInfo = {
enterpriseName: 工商信息.Name,
pinyinName,
uscc: 工商信息.CreditCode,
zhuCeHao: 工商信息.No, //EntType = 0/1/4/6/7/9/10/11/-1 中国境内企业时:该字段返回工商注册号;EntType = 3 中国香港企业时:该字段返回企业编号;EntType = 5 中国台湾企业时:该字段返回企业编号
zuZhiJiGouDaiMa: 工商信息.OrgNo,
// gengDuoDianHua: 工商信息., //更多电话
// mainBusiness: 工商信息., //主营业务
logonTime: getMySqlMs(工商信息.StartDate), //成立日期
mail: 工商信息.ContactInfo.Email, //邮箱
// isNaturalPersonHolding: 工商信息., //是否自然人控股
// industry: 工商信息., //领域
// moreMail: 工商信息., //更多邮箱
// logonAddress: 工商信息.Address, //注册地址
// tongXinDiZhi: 工商信息., //通信地址
// liaison: 工商信息., //联系人
liaisonPhone: 工商信息.ContactInfo.PhoneNumber, //联系电话
dengJiJiGuan: 工商信息.BelongOrg, //登机机关
qiYeGuiMo, //企业规模 TagList
RAS: 工商信息.Status, //登记状态
guanWang, //官网地址
yingYeQiXian: `${TermStart}${TermEnd}`, //营业期限 TermStart至TermEnd
logOffMS: 工商信息.EndDate || null, //注销时间
shijiaoziben: 工商信息.RecCap, //实缴资本
// enterpriseType: 工商信息., //企业机构类型
// jianJie: 工商信息., //简介
zhuceziben: 工商信息.RegistCapi, //注册资本
// naShuiRenZiZhi: 工商信息., //纳税人资质
// operatingAddress: 工商信息., //经营地址
// oldLogonAddress: 工商信息., //迁入前注册地址
// shuiHao: 工商信息., //税号
// shuiWuJu: 工商信息., //税务员
jingYingFanWei: 工商信息.Scope, //经营范围
};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, baseInfo, {uscc, eId});
/**
* 股权结构目前小程序没有做这块的更新,所以全部采用小程序的数据
* 逻辑:检测到 股权人+比例 与原来的不一样(只要出现一个不一样),就会删除这个企业下所有的,并且重新写入企查查的这一块数据
*/
if (工商信息.Partners) {
let 出现不存在数据 = false;
for (let i = 0; i < 工商信息.Partners.length; i++) {
let info = 工商信息.Partners[i];
let findItemParam = {
name:info.StockName,
finalBenefitPercent:info.FinalBenefitPercent,
stockPercent:info.StockPercent,
stockType:info.StockType,
realCapi:info.RealCapi,
};
if ( !await 数据是否存在(TABLENAME.股权结构, findItemParam, "owId") ) {
出现不存在数据 = true;
//企业基础信息
let guanWang = "";
if (工商信息.ContactInfo.WebSite && 工商信息.ContactInfo.WebSite[0]) {
guanWang = 工商信息.ContactInfo.WebSite[0].Url || "";
}
let qiYeGuiMo = "";
if (客户身份识别.Data && 客户身份识别.Data.Scale) {
switch (客户身份识别.Data.Scale) {
case "L": qiYeGuiMo = "大型"; break;
case "M": qiYeGuiMo = "中型"; break;
case "S": qiYeGuiMo = "小型"; break;
case "XS": qiYeGuiMo = "微型"; break;
}
}
if (出现不存在数据) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.股权结构, null, {eId});
//同步最新记录
let ownershipList = [];
工商信息.Partners.forEach(info => {
let addInfo:any = {
owId:randomId(TABLEID.股权结构),
eId,
let industryList = []; //Industry
if (工商信息.Industry) {
switch (工商信息.Industry.IndustryCode) {
case "I": industryList.push(INDUSTRY["信息传输、软件和信息技术服务业"]); break;
case "M": industryList.push(INDUSTRY.科学研究和技术服务业); break;
case "C": industryList.push(INDUSTRY.制造业); break;
case "E": industryList.push(INDUSTRY.建筑业); break;
case "L": industryList.push(INDUSTRY.租赁和商务服务业); break;
case "F": industryList.push(INDUSTRY.批发和零售业); break;
}
}
let logonAddress = '[]';
if (工商信息.Address) {
let logonAddressList = formatAddress(工商信息.Address);
logonAddress = JSON.stringify(logonAddressList);
}
let baseInfo = {
enterpriseName: 工商信息.Name,
pinyinName,
uscc: 工商信息.CreditCode,
zhuCeHao: 工商信息.No, //EntType = 0/1/4/6/7/9/10/11/-1 中国境内企业时:该字段返回工商注册号;EntType = 3 中国香港企业时:该字段返回企业编号;EntType = 5 中国台湾企业时:该字段返回企业编号
zuZhiJiGouDaiMa: 工商信息.OrgNo,
// gengDuoDianHua: 工商信息., //更多电话
// mainBusiness: 工商信息., //主营业务
logonTime: getMySqlMs(工商信息.StartDate), //成立日期
// isNaturalPersonHolding: 工商信息., //是否自然人控股
industry: JSON.stringify(industryList), //领域
// moreMail: 工商信息., //更多邮箱
logonAddress: logonAddress, //注册地址
// tongXinDiZhi: 工商信息., //通信地址
// liaison: 工商信息., //联系人
dengJiJiGuan: 工商信息.BelongOrg, //登机机关
qiYeGuiMo, //企业规模 TagList
RAS: 工商信息.Status, //登记状态
guanWang, //官网地址
yingYeQiXian: `${TermStart}${TermEnd}`, //营业期限 TermStart至TermEnd
logOffMS: 工商信息.EndDate || null, //注销时间
shijiaoziben: 工商信息.RecCap, //实缴资本
// enterpriseType: 工商信息., //企业机构类型
// jianJie: 工商信息., //简介
zhuceziben: 工商信息.RegistCapi, //注册资本
// naShuiRenZiZhi: 工商信息., //纳税人资质
// operatingAddress: 工商信息., //经营地址
// oldLogonAddress: 工商信息., //迁入前注册地址
// shuiHao: 工商信息., //税号
// shuiWuJu: 工商信息., //税务员
jingYingFanWei: 工商信息.Scope, //经营范围
};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, baseInfo, {uscc, eId});
let liaisondbInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc, eId}, ["mail", "liaisonPhone"]);
let liaisonInfo:any = {}
if (!liaisondbInfo.mail) liaisonInfo["mail"] = 工商信息.ContactInfo.Email; //邮箱
if (!liaisondbInfo.liaisonPhone) liaisonInfo["liaisonPhone"] = 工商信息.ContactInfo.PhoneNumber; //联系电话
if (Object.keys(liaisonInfo).length) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, liaisonInfo, {uscc, eId});
}
/**
* 股权结构目前小程序没有做这块的更新,所以全部采用小程序的数据
* 逻辑:检测到 股权人+比例 与原来的不一样(只要出现一个不一样),就会删除这个企业下所有的,并且重新写入企查查的这一块数据
*/
if (工商信息.Partners) {
let 出现不存在数据 = false;
for (let i = 0; i < 工商信息.Partners.length; i++) {
let info = 工商信息.Partners[i];
let findItemParam = {
name:info.StockName,
finalBenefitPercent:info.FinalBenefitPercent,
stockPercent:info.StockPercent,
stockType:info.StockType,
realCapi:info.RealCapi,
paidUpCapitalUnit:info.PaidUpCapitalUnit,
subscribedCapital:info.SubscribedCapital,
subscribedCapitalUnit:info.SubscribedCapitalUnit,
};
if (info.CapiDate) addInfo.capiDate = getMySqlMs(info.CapiDate);
if (info.ShoudDate) addInfo.shoudDate = getMySqlMs(info.ShoudDate);
ownershipList.push(addInfo);
});
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.股权结构, ownershipList, null);
if ( !await 数据是否存在(TABLENAME.股权结构, findItemParam, "owId") ) {
出现不存在数据 = true;
}
}
if (出现不存在数据) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.股权结构, null, {eId});
//同步最新记录
let ownershipList = [];
工商信息.Partners.forEach(info => {
let addInfo:any = {
owId:randomId(TABLEID.股权结构),
eId,
name:info.StockName,
finalBenefitPercent:info.FinalBenefitPercent,
stockPercent:info.StockPercent,
stockType:info.StockType,
realCapi:info.RealCapi,
paidUpCapitalUnit:info.PaidUpCapitalUnit,
subscribedCapital:info.SubscribedCapital,
subscribedCapitalUnit:info.SubscribedCapitalUnit,
};
if (info.CapiDate) addInfo.capiDate = getMySqlMs(info.CapiDate);
if (info.ShoudDate) addInfo.shoudDate = getMySqlMs(info.ShoudDate);
ownershipList.push(addInfo);
});
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.股权结构, ownershipList, null);
}
}
/**
* 企业标签表 ,已和项目经理确认同步需求:
* 做全量更新,所有的以企查查的为准,企查查的标签数据全量同步到标签表和资质表,如果有用户自己填的,企查查没有的就使用用户填的【2025年5月28日 罗说明】 李欣鸣注
* 逻辑说明:判断有和没有的标准是,是否存在标签或者资质名称。
* 更新逻辑:1.企查查有,小程序没有,同步企查查的数据
* 2.企查查没有,小程序有,用小程序的数据
* 3.企查查有,小程序有,不覆盖
* 4.企查查以前有现在没有,小程序没有,不删除之前的
*/
}
/**
* 企业标签表 ,已和项目经理确认同步需求:
* 做全量更新,所有的以企查查的为准,企查查的标签数据全量同步到标签表和资质表,如果有用户自己填的,企查查没有的就使用用户填的【2025年5月28日 罗说明】 李欣鸣注
* 逻辑说明:判断有和没有的标准是,是否存在标签或者资质名称。
* 更新逻辑:1.企查查有,小程序没有,同步企查查的数据
* 2.企查查没有,小程序有,用小程序的数据
* 3.企查查有,小程序有,不覆盖
* 4.企查查以前有现在没有,小程序没有,不删除之前的
*/
if (工商信息.TagList) {
for (let i = 0; i < 工商信息.TagList.length; i++) {
let info = 工商信息.TagList[i];
let {Type, Name} = info;
let dbLabelItem = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业标签表, {labelName:info.Name, eId}, ["elId"]);
if (!dbLabelItem || !dbLabelItem.elId) {
//添加新的
let addItemInfo = {
elId:randomId(TABLEID.企业标签表),
eId,
type:info.Type,
labelName:info.Name
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业标签表, addItemInfo, {} )
}
let zzInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业资质, {eId}, ["qId"]);
if (!zzInfo || !zzInfo.qId) {
//不存在 直接添加
zzInfo = {
qId : randomId(TABLEID.企业资质),
eId : eId,
// xjrState:STATE.否,
kxState:STATE.,
gxjsState:STATE.,
zjtxState:STATE.,
// listedState:STATE.否,
xjrPyState:STATE.,
cxState:STATE.,
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业资质, zzInfo, {})
}
//处理资质
let isAdd = false;//库里是否不存在这个企业的数据
let zzInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业资质, {eId}, ["qId"]);
if (!zzInfo || !zzInfo.qId) {
//不存在 直接添加
zzInfo = {
qId : randomId(TABLEID.企业资质),
eId : eId,
xjrState:STATE.,
kxState:STATE.,
gxjsState:STATE.,
zjtxState:STATE.,
listedState:STATE.,
xjrPyState:STATE.,
};
isAdd = true;
}
switch (Name) {
case "科技型中小企业":
if (isAdd) {
zzInfo.kxState = STATE.
} else {
if (!zzInfo.kxState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {kxState:STATE.}, {eId});
}
}
break;
case "科技小巨人企业":
if (isAdd) {
zzInfo.xjrState = STATE.
} else {
if (!zzInfo.xjrState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {xjrState:STATE.}, {eId});
}
}
break;
case "专精特新中小企业":
if (isAdd) {
zzInfo.zjtxState = STATE.
} else {
if (!zzInfo.zjtxState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {zjtxState:STATE.}, {eId});
if (工商信息.TagList) {
for (let i = 0; i < 工商信息.TagList.length; i++) {
let info = 工商信息.TagList[i];
let {Type, Name} = info;
let dbLabelItem = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业标签表, {labelName:info.Name, eId}, ["elId"]);
if (!dbLabelItem || !dbLabelItem.elId) {
//添加新的
let addItemInfo = {
elId:randomId(TABLEID.企业标签表),
eId,
type:info.Type,
labelName:info.Name
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业标签表, addItemInfo, {} )
}
//处理资质
let isAdd = false;//库里是否不存在这个企业的数据
let zzInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业资质, {eId}, ["qId"]);
if (!zzInfo || !zzInfo.qId) {
//不存在 直接添加
zzInfo = {
qId : randomId(TABLEID.企业资质),
eId : eId,
// xjrState:STATE.否,
kxState:STATE.,
gxjsState:STATE.,
zjtxState:STATE.,
// listedState:STATE.否,
xjrPyState:STATE.,
cxState:STATE.,
};
isAdd = true;
}
switch (Name) {
case "创新型中小企业":
if (isAdd) {
zzInfo.cxState = STATE.
} else {
if (!zzInfo.cxState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {cxState:STATE.}, {eId});
}
}
}
break;
case "高新技术企业":
if (isAdd) {
zzInfo.gxjsState = STATE.
} else {
if (!zzInfo.gxjsState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {gxjsState:STATE.}, {eId});
break;
case "科技型中小企业":
if (isAdd) {
zzInfo.kxState = STATE.
} else {
if (!zzInfo.kxState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {kxState:STATE.}, {eId});
}
}
}
break;
//如果后续有新的 标签 和 资质 关联,只需要在case里面加东西就好了
}
if (isAdd) {
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业资质, zzInfo, {})
break;
// case "科技小巨人企业":
// if (isAdd) {
// zzInfo.xjrState = STATE.是
// } else {
// if (!zzInfo.xjrState) {
// await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {xjrState:STATE.是}, {eId});
// }
// }
// break;
case "专精特新中小企业":
if (isAdd) {
zzInfo.zjtxState = STATE.
} else {
if (!zzInfo.zjtxState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {zjtxState:STATE.}, {eId});
}
}
break;
case "高新技术企业":
if (isAdd) {
zzInfo.gxjsState = STATE.
} else {
if (!zzInfo.gxjsState) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, {gxjsState:STATE.}, {eId});
}
}
break;
//如果后续有新的 标签 和 资质 关联,只需要在case里面加东西就好了
}
if (isAdd) {
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业资质, zzInfo, {})
}
}
}
}
/**
* 行业领域目前没有用到,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if (工商信息.Industry) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.行业信息分类, null, {eId});
//同步最新记录
let industryInfo = {
eiId:randomId(TABLEID.行业信息分类),
eId,
industryCode:工商信息.Industry.IndustryCode ,//行业门类code
industry:工商信息.Industry.Industry ,//行业门类描述
subIndustryCode:工商信息.Industry.SubIndustryCode ,//行业大类code
subIndustry:工商信息.Industry.SubIndustry ,//行业大类描述
middleCategoryCode:工商信息.Industry.MiddleCategoryCode ,//行业中类code
middleCategory:工商信息.Industry.MiddleCategory ,//行业中类描述
smallCategoryCode:工商信息.Industry.SmallCategoryCode ,//行业小类code
smallCategory:工商信息.Industry.SmallCategory ,//行业小类描述
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.行业信息分类, [industryInfo], null);
}
/**
* 变更记录目前小程序没有涉及到这部分数据,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if (工商信息.ChangeRecords && 工商信息.ChangeRecords.length) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.变更信息表, null, {eId});
//同步最新记录
let infoupdateList = [];
工商信息.ChangeRecords.forEach(info => {
infoupdateList.push({
updateId:randomId(TABLEID.变更信息表),
/**
* 行业领域目前没有用到,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if (工商信息.Industry) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.行业信息分类, null, {eId});
//同步最新记录
let industryInfo = {
eiId:randomId(TABLEID.行业信息分类),
eId,
afterContent:info.AfterContent, //变更前
beforeContent:info.BeforeContent, //变更后
changeDate:getMySqlMs(info.ChangeDate),//变更时间
projectName:info.ProjectName,//变更类型
industryCode:工商信息.Industry.IndustryCode ,//行业门类code
industry:工商信息.Industry.Industry ,//行业门类描述
subIndustryCode:工商信息.Industry.SubIndustryCode ,//行业大类code
subIndustry:工商信息.Industry.SubIndustry ,//行业大类描述
middleCategoryCode:工商信息.Industry.MiddleCategoryCode ,//行业中类code
middleCategory:工商信息.Industry.MiddleCategory ,//行业中类描述
smallCategoryCode:工商信息.Industry.SmallCategoryCode ,//行业小类code
smallCategory:工商信息.Industry.SmallCategory ,//行业小类描述
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.行业信息分类, [industryInfo], null);
}
/**
* 变更记录目前小程序没有涉及到这部分数据,所以直接与企查查全量更新
* 逻辑:先删除现有的,再重新添加
*/
if (工商信息.ChangeRecords && 工商信息.ChangeRecords.length) {
//删除历史记录数据
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.变更信息表, null, {eId});
//同步最新记录
let infoupdateList = [];
工商信息.ChangeRecords.forEach(info => {
infoupdateList.push({
updateId:randomId(TABLEID.变更信息表),
eId,
afterContent:info.AfterContent, //变更前
beforeContent:info.BeforeContent, //变更后
changeDate:getMySqlMs(info.ChangeDate),//变更时间
projectName:info.ProjectName,//变更类型
});
});
});
if (infoupdateList.length ) await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.变更信息表, infoupdateList, null);
if (infoupdateList.length ) await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.变更信息表, infoupdateList, null);
}
} else {
console.log(`企查查获取不到该企业数据:${uscc}`);
}
}
async function 商标详情查询(uscc, id) {
......@@ -399,7 +472,6 @@ async function 商标详情查询(uscc, id) {
* @param eId
*/
async function 知识产权(uscc, eId) {
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc}, ["eId", "enterpriseName"]);
let enterpriseName = enterpriseInfo.enterpriseName;
......@@ -408,11 +480,10 @@ async function 知识产权(uscc, eId) {
let 商标查询:any = await getQcc('https://api.qichacha.com/tm/SearchByApplicant', query, header);
if (Array.isArray(商标查询)) {
for (let i = 0; i < 商标查询.length; i++) {
let info = 商标查询[i];
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.商标, {qccId:info.ID}, ["qccId"]);
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.商标, {qccId:info.ID, eId}, ["qccId"]);
if (!item || !item.qccId) {
let qcc商标详情 = await 商标详情查询(uscc, info.ID);
let imageUrl = [];
......@@ -446,7 +517,7 @@ async function 知识产权(uscc, eId) {
for (let i = 0; i < 作品著作查询.length; i++) {
let info = 作品著作查询[i];
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.作品著作权, {registerNo:info.RegisterNo}, ["registerNo"]);
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.作品著作权, {registerNo:info.RegisterNo, eId}, ["registerNo"]);
if (!item || !item.registerNo) { // 库里不存在就会添加新的
let addItemInfo:any = {
crId:randomId(TABLEID.作品著作权),
......@@ -475,7 +546,7 @@ async function 知识产权(uscc, eId) {
for (let i = 0; i < 软件著作查询.length; i++) {
let info = 软件著作查询[i];
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.软件著作权, {registerNo:info.RegisterNo}, ["registerNo"]);
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.软件著作权, {registerNo:info.RegisterNo, eId}, ["registerNo"]);
if (!item || !item.registerNo) { // 库里不存在就会添加新的
let addItemInfo:any = {
scId:randomId(TABLEID.软件著作权),
......@@ -506,7 +577,7 @@ async function 知识产权(uscc, eId) {
for (let i = 0; i < 专利查询.length; i++) {
let info = 专利查询[i];
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.专利, {applicationNumber:info.ApplicationNumber}, ["applicationNumber"]);
let item = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.专利, {applicationNumber:info.ApplicationNumber, eId}, ["applicationNumber"]);
if (!item || !item.applicationNumber) { // 库里不存在就会添加新的
let addItemInfo:any = {
patentId:randomId(TABLEID.专利),
......
......@@ -76,10 +76,10 @@ import { systemSendMail } from "./mail";
unitPrice:param.unitPrice || null,
building: param.building || null, // 楼号
roomNumber:param.roomNumber || null,
// startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
// endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
startTime: getMySqlMs(param.leaseStartTime), // 租赁开始时间
endTime: getMySqlMs(param.leaseEndTime), // 租赁结束时间
startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
// startTime: getMySqlMs(param.leaseStartTime), // 租赁开始时间
// endTime: getMySqlMs(param.leaseEndTime), // 租赁结束时间
rent:param.rent,
}
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
......@@ -129,10 +129,8 @@ export async function settleInEnterpriseList(page:number, enterpriseName:string)
logonTime:moment(info.logonTime).format("YYYY-MM-DD"),//注册时间
leaseTime:`${moment(info.enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(info.enterprise_leases[0].endTime).format("YYYY-MM-DD")}`,
fuHuaTime:`${moment(info.enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(info.enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`,
// leaseTimeStart:info.enterprise_leases[0].startTime || 0,
// leaseTimeEnd:info.enterprise_leases[0].endTime || 0,
leaseStartTime:info.enterprise_leases[0].startTime || 0,
leaseEndTime:info.enterprise_leases[0].endTime || 0,
// leaseStartTime:info.enterprise_leases[0].startTime || 0,
// leaseEndTime:info.enterprise_leases[0].endTime || 0,
fuHuaTimeStart:info.enterprise_fuhuas[0].startTime||0,
fuHuaTimeEnd:info.enterprise_fuhuas[0].endTime||0,
area:info.enterprise_leases[0].area,//租赁面积
......@@ -366,30 +364,67 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) {
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "randomCode", "state", "register"];
let leaseConf = ["sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"];
let manyTableInfo:any = {}
manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} };
manyTableInfo[TABLENAME.租赁信息] = {column:leaseConf, where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} };
// manyTableInfo[TABLENAME.入孵申请审批表] = {column:["approvalId", "changeState", "createTimeMs"], where:{"%literal%":`approval_histories.changeType = ${enumConfig.CHANGETYPE.入孵材料审批}`, "%limit%":1} };
let resList = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page );
let allResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], manyTableInfo );
let leaseConfSome = ["sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "cardCopy"];
let dataList = [];
resList.forEach(info => {
let state = "待审核";
if (leaseConfSome.some(key => !info.enterprise_leases[0][key])) {
state = "未提交";
}
// if (!info.enterprise_leases[0].leaseContract || !info.enterprise_leases[0].entryPlan
// || !info.enterprise_leases[0].businessLicense || !info.enterprise_leases[0].agreement
// || !info.enterprise_leases[0].tripartiteAgreement) {
// state = "未提交";
// }
if (info.state == enumConfig.CHANGESTATE.已驳回) state = "已驳回";
dataList.push({
eId:info.eId,
enterpriseName:info.enterpriseName,
randomCode:info.randomCode,
/**跳转用 */
leaseContractUrl: info.enterprise_leases[0].leaseContract,
entryPlanUrl: info.enterprise_leases[0].entryPlan,
businessLicenseUrl: info.enterprise_leases[0].businessLicense,
agreementUrl: info.enterprise_leases[0].agreement,
sanFangXieYiUrl: info.enterprise_leases[0].sanFangXieYi,
fuHuaXieYiUrl: info.enterprise_leases[0].fuHuaXieYi,
fangWuZuLingUrl: info.enterprise_leases[0].fangWuZuLing,
fuHuaXieYiBuChongUrl: info.enterprise_leases[0].fuHuaXieYiBuChong,
chengXinChengNuoHanUrl: info.enterprise_leases[0].chengXinChengNuoHan,
yingYeZhiZhaoUrl: info.enterprise_leases[0].yingYeZhiZhao,
ruFuZiLiaoUrl: info.enterprise_leases[0].ruFuZiLiao,
ruZhuJiHuaUrl: info.enterprise_leases[0].ruZhuJiHua,
yaJinZhiFuUrl: info.enterprise_leases[0].yaJinZhiFu,
cardCopyUrl: info.enterprise_leases[0].cardCopy,
// leaseContractUrl: info.enterprise_leases[0].leaseContract,
// entryPlanUrl: info.enterprise_leases[0].entryPlan,
// businessLicenseUrl: info.enterprise_leases[0].businessLicense,
// agreementUrl: info.enterprise_leases[0].agreement,
// tripartiteAgreementUrl: info.enterprise_leases[0].tripartiteAgreement,
/**显示用:名称 */
leaseContract: getFileNameAndFormat(info.enterprise_leases[0].leaseContract) || "未提交",
entryPlan: getFileNameAndFormat(info.enterprise_leases[0].entryPlan) || "未提交",
businessLicense: getFileNameAndFormat(info.enterprise_leases[0].businessLicense) || "未提交",
agreement: getFileNameAndFormat(info.enterprise_leases[0].agreement) || "未提交",
status: info.state == enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射
sanFangXieYi: getFileNameAndFormat(info.enterprise_leases[0].sanFangXieYi) || "未提交",
fuHuaXieYi: getFileNameAndFormat(info.enterprise_leases[0].fuHuaXieYi) || "未提交",
fangWuZuLing: getFileNameAndFormat(info.enterprise_leases[0].fangWuZuLing) || "未提交",
fuHuaXieYiBuChong: getFileNameAndFormat(info.enterprise_leases[0].fuHuaXieYiBuChong) || "未提交",
chengXinChengNuoHan: getFileNameAndFormat(info.enterprise_leases[0].chengXinChengNuoHan) || "未提交",
yingYeZhiZhao: getFileNameAndFormat(info.enterprise_leases[0].yingYeZhiZhao) || "未提交",
ruFuZiLiao: getFileNameAndFormat(info.enterprise_leases[0].ruFuZiLiao) || "未提交",
ruZhuJiHua: getFileNameAndFormat(info.enterprise_leases[0].ruZhuJiHua) || "未提交",
yaJinZhiFu: getFileNameAndFormat(info.enterprise_leases[0].yaJinZhiFu) || "未提交",
cardCopy: getFileNameAndFormat(info.enterprise_leases[0].cardCopy) || "未提交",
// leaseContract: getFileNameAndFormat(info.enterprise_leases[0].leaseContract) || "未提交",
// entryPlan: getFileNameAndFormat(info.enterprise_leases[0].entryPlan) || "未提交",
// businessLicense: getFileNameAndFormat(info.enterprise_leases[0].businessLicense) || "未提交",
// agreement: getFileNameAndFormat(info.enterprise_leases[0].agreement) || "未提交",
// tripartiteAgreement: getFileNameAndFormat(info.enterprise_leases[0].tripartiteAgreement) || "未提交",
status: state // 状态映射
});
});
......@@ -407,7 +442,8 @@ export async function getRuFu(eId:string) {
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
let leaseFilesList = ["leaseId", "area",
"sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
......@@ -421,20 +457,38 @@ export async function getRuFu(eId:string) {
else dataInfo.endTime = "";
/**跳转用 */
dataInfo.area = leaseInfo.area;
dataInfo.leaseContractUrl = leaseInfo.leaseContract;
dataInfo.entryPlanUrl = leaseInfo.entryPlan;
dataInfo.businessLicenseUrl = leaseInfo.businessLicense;
dataInfo.agreementUrl = leaseInfo.agreement;
dataInfo.sanFangXieYiUrl = leaseInfo.sanFangXieYi;
dataInfo.fuHuaXieYiUrl = leaseInfo.fuHuaXieYi;
dataInfo.fangWuZuLingUrl = leaseInfo.fangWuZuLing;
dataInfo.fuHuaXieYiBuChongUrl = leaseInfo.fuHuaXieYiBuChong;
dataInfo.chengXinChengNuoHanUrl = leaseInfo.chengXinChengNuoHan;
dataInfo.yingYeZhiZhaoUrl = leaseInfo.yingYeZhiZhao;
dataInfo.ruFuZiLiaoUrl = leaseInfo.ruFuZiLiao;
dataInfo.ruZhuJiHuaUrl = leaseInfo.ruZhuJiHua;
dataInfo.yaJinZhiFuUrl = leaseInfo.yaJinZhiFu;
dataInfo.cardCopyUrl = leaseInfo.cardCopy;
/**显示用:名称 */
dataInfo.leaseContract = getFileNameAndFormat(leaseInfo.leaseContract);
dataInfo.entryPlan = getFileNameAndFormat(leaseInfo.entryPlan);
dataInfo.businessLicense = getFileNameAndFormat(leaseInfo.businessLicense);
dataInfo.agreement = getFileNameAndFormat(leaseInfo.agreement);
dataInfo.leaseContractModelUrl = "/yuyi/files/房屋租赁合同模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.businessLicenseUrl = "/yuyi/files/营业执照复印件.docx";
dataInfo.agreementModelUrl = "/yuyi/files/孵化协议模板.docx";
dataInfo.sanFangXieYi = getFileNameAndFormat(leaseInfo.sanFangXieYi);
dataInfo.fuHuaXieYi = getFileNameAndFormat(leaseInfo.fuHuaXieYi);
dataInfo.fangWuZuLing = getFileNameAndFormat(leaseInfo.fangWuZuLing);
dataInfo.fuHuaXieYiBuChong = getFileNameAndFormat(leaseInfo.fuHuaXieYiBuChong);
dataInfo.chengXinChengNuoHan = getFileNameAndFormat(leaseInfo.chengXinChengNuoHan);
dataInfo.yingYeZhiZhao = getFileNameAndFormat(leaseInfo.yingYeZhiZhao);
dataInfo.ruFuZiLiao = getFileNameAndFormat(leaseInfo.ruFuZiLiao);
dataInfo.ruZhuJiHua = getFileNameAndFormat(leaseInfo.ruZhuJiHua);
dataInfo.yaJinZhiFu = getFileNameAndFormat(leaseInfo.yaJinZhiFu);
dataInfo.cardCopy = getFileNameAndFormat(leaseInfo.cardCopy);
/**下载用:模板 */
dataInfo.sanFangXieYiModelUrl = "/yuyi/files/三方协议.docx"
dataInfo.fuHuaXieYiModelUrl = "/yuyi/files/孵化协议最新版.docx"
// dataInfo.fangWuZuLingModelUrl = ""
dataInfo.fuHuaXieYiBuChongModelUrl = "/yuyi/files/孵化协议补充协议书.docx"
dataInfo.chengXinChengNuoHanModelUrl = "/yuyi/files/诚信承诺函.docx"
// dataInfo.yingYeZhiZhaoModelUrl = ""
dataInfo.ruFuZiLiaoModelUrl = "/yuyi/files/入孵资料明细.xls"
dataInfo.ruZhuJiHuaModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx"
// dataInfo.yaJinZhiFuModelUrl = ""
// dataInfo.cardCopyModelUrl = ""
return {dataInfo};
}
......@@ -471,14 +525,16 @@ export async function enterpriseRegisterExaminePass(eId:string) {
if (!eId) throw new BizError(ERRORENUM.参数错误);
let manyTableInfo:any = {}
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} };
manyTableInfo[TABLENAME.租赁信息] = {column:["sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"], where:{} };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表单个, TABLENAME.企业基础信息表, {eId}, filesList, manyTableInfo);
if (!resInfo || !resInfo.eId) throw new BizError(ERRORENUM.数据不存在);
if (!resInfo.enterprise_leases[0].leaseContract || !resInfo.enterprise_leases[0].entryPlan || !resInfo.enterprise_leases[0].businessLicense || !resInfo.enterprise_leases[0].agreement) {
throw new BizError(ERRORENUM.请上传所有入孵材料);
}
// if (!resInfo.enterprise_leases[0].leaseContract || !resInfo.enterprise_leases[0].entryPlan
// || !resInfo.enterprise_leases[0].businessLicense || !resInfo.enterprise_leases[0].agreement
// || !resInfo.enterprise_leases[0].tripartiteAgreement) {
// throw new BizError(ERRORENUM.请上传所有入孵材料);
// }
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, {state:enumConfig.CHANGESTATE.已通过}, {eId});
......@@ -533,14 +589,17 @@ export async function enterpriseRegisterExamineOut(eId:string, descType, desc:st
if (!resInfo || !resInfo.eId) throw new BizError(ERRORENUM.数据不存在);
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, []);
if (!leaseInfo.leaseContract || !leaseInfo.entryPlan || !leaseInfo.businessLicense || !leaseInfo.agreement) throw new BizError(ERRORENUM.该企业暂未提交入孵材料);
// if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
let updateLeaseInfo = {
leaseContract:null,
entryPlan:null,
businessLicense:null,
agreement:null
let leaseConf = ["sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "cardCopy"];
for (let i = 0; i < leaseConf.length; i++) {
if(!leaseInfo[leaseConf[i]]) {
throw new BizError(ERRORENUM.该企业暂未提交入孵材料);
}
}
let updateLeaseInfo:any = {yaJinZhiFu:null};
for (let i = 0; i < leaseConf.length; i++) {
updateLeaseInfo[leaseConf[i]] = null;
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, updateLeaseInfo, {eId});
......@@ -602,6 +661,8 @@ export async function updateRuFu(eId:string, param) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, param, {eId});
// await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, {state:enumConfig.CHANGESTATE.未审核}, {});
return {isSuccess:true};
}
......@@ -643,8 +704,8 @@ export async function enterpriseRegister(param) {
let leaseInfo = {
eId:addEInfo.eId,
leaseId:randomId(TABLEID.租赁信息),
startTime:getMySqlMs(param.leaseTimeStart),
endTime:getMySqlMs(param.leaseTimeEnd),
// startTime:getMySqlMs(param.leaseTimeStart),
// endTime:getMySqlMs(param.leaseTimeEnd),
area:param.area
}
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
......
......@@ -96,7 +96,15 @@ export async function getRuFuState(uId) {
if (enterpriseInfo.state == CHANGESTATE.未审核 && enterpriseInfo.register == CHANGESTATE.已通过) {
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId:enterpriseUserInfo.eId}, []);
//如果入孵申请已通过,并且入孵材料还未上传,进入材料上传界面
if (!leaseInfo.leaseContract && !leaseInfo.entryPlan || !leaseInfo.businessLicense || !leaseInfo.agreement) {
let leaseConf = ["sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "cardCopy"];
// ruFuState = RUFUSTATE.入孵材料审核中;
// if (leaseConf.some(key => !(key in leaseInfo))) {
// ruFuState = RUFUSTATE.入孵材料填写;
// }
if (!leaseInfo.sanFangXieYi || !leaseInfo.fuHuaXieYi || !leaseInfo.fangWuZuLing || !leaseInfo.fuHuaXieYiBuChong || !leaseInfo.chengXinChengNuoHan ||
!leaseInfo.yingYeZhiZhao || !leaseInfo.ruFuZiLiao || !leaseInfo.ruZhuJiHua || !leaseInfo.cardCopy) {
ruFuState = RUFUSTATE.入孵材料填写;
} else {
ruFuState = RUFUSTATE.入孵材料审核中;
......@@ -148,7 +156,7 @@ export async function createRuFu(uId, param) {
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {});
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业用户表, {eId:addEInfo.eId}, {uId});
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业用户表, {eId:addEInfo.eId, uscc:addEInfo.uscc}, {uId});
let fuHuaInfo = {
eId:addEInfo.eId,
......@@ -257,7 +265,8 @@ export async function getRuFu(eId:string) {
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
let leaseFilesList = ["leaseId", "area",
"sanFangXieYi", "fuHuaXieYi", "fangWuZuLing", "fuHuaXieYiBuChong", "chengXinChengNuoHan", "yingYeZhiZhao", "ruFuZiLiao", "ruZhuJiHua", "yaJinZhiFu", "cardCopy"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
......@@ -273,20 +282,39 @@ export async function getRuFu(eId:string) {
dataInfo.area = leaseInfo.area;
/**跳转用 */
dataInfo.leaseContractUrl = leaseInfo.leaseContract;
dataInfo.entryPlanUrl = leaseInfo.entryPlan;
dataInfo.businessLicenseUrl = leaseInfo.businessLicense;
dataInfo.agreementUrl = leaseInfo.agreement;
dataInfo.area = leaseInfo.area;
dataInfo.sanFangXieYiUrl = leaseInfo.sanFangXieYi;
dataInfo.fuHuaXieYiUrl = leaseInfo.fuHuaXieYi;
dataInfo.fangWuZuLingUrl = leaseInfo.fangWuZuLing;
dataInfo.fuHuaXieYiBuChongUrl = leaseInfo.fuHuaXieYiBuChong;
dataInfo.chengXinChengNuoHanUrl = leaseInfo.chengXinChengNuoHan;
dataInfo.yingYeZhiZhaoUrl = leaseInfo.yingYeZhiZhao;
dataInfo.ruFuZiLiaoUrl = leaseInfo.ruFuZiLiao;
dataInfo.ruZhuJiHuaUrl = leaseInfo.ruZhuJiHua;
dataInfo.yaJinZhiFuUrl = leaseInfo.yaJinZhiFu;
dataInfo.cardCopy = leaseInfo.cardCopy;
/**显示用:名称 */
dataInfo.leaseContract = getFileNameAndFormat(leaseInfo.leaseContract);
dataInfo.entryPlan = getFileNameAndFormat(leaseInfo.entryPlan);
dataInfo.businessLicense = getFileNameAndFormat(leaseInfo.businessLicense);
dataInfo.agreement = getFileNameAndFormat(leaseInfo.agreement);
dataInfo.leaseContractModelUrl = "/yuyi/files/房屋租赁合同模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.businessLicenseUrl = "/yuyi/files/营业执照复印件.docx";
dataInfo.agreementModelUrl = "/yuyi/files/孵化协议模板.docx";
dataInfo.sanFangXieYi = getFileNameAndFormat(leaseInfo.sanFangXieYi);
dataInfo.fuHuaXieYi = getFileNameAndFormat(leaseInfo.fuHuaXieYi);
dataInfo.fangWuZuLing = getFileNameAndFormat(leaseInfo.fangWuZuLing);
dataInfo.fuHuaXieYiBuChong = getFileNameAndFormat(leaseInfo.fuHuaXieYiBuChong);
dataInfo.chengXinChengNuoHan = getFileNameAndFormat(leaseInfo.chengXinChengNuoHan);
dataInfo.yingYeZhiZhao = getFileNameAndFormat(leaseInfo.yingYeZhiZhao);
dataInfo.ruFuZiLiao = getFileNameAndFormat(leaseInfo.ruFuZiLiao);
dataInfo.ruZhuJiHua = getFileNameAndFormat(leaseInfo.ruZhuJiHua);
dataInfo.yaJinZhiFu = getFileNameAndFormat(leaseInfo.yaJinZhiFu);
dataInfo.cardCopy = getFileNameAndFormat(leaseInfo.cardCopy);
/**下载用:模板 */
dataInfo.sanFangXieYiModelUrl = "/yuyi/files/三方协议.docx"
dataInfo.fuHuaXieYiModelUrl = "/yuyi/files/孵化协议最新版.docx"
// dataInfo.fangWuZuLingModelUrl = ""
dataInfo.fuHuaXieYiBuChongModelUrl = "/yuyi/files/孵化协议补充协议书.docx"
dataInfo.chengXinChengNuoHanModelUrl = "/yuyi/files/诚信承诺函.docx"
// dataInfo.yingYeZhiZhaoModelUrl = ""
dataInfo.ruFuZiLiaoModelUrl = "/yuyi/files/入孵资料明细.xls"
dataInfo.ruZhuJiHuaModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx"
// dataInfo.yaJinZhiFuModelUrl = ""
// dataInfo.cardCopyModelUrl = ""
return {dataInfo};
}
......
......@@ -43,13 +43,16 @@ import { BUILDING } from "../config/enum/enum";
/**查询租赁表信息 */
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}`;
leaseWhere = { building }
}
// 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) {
......@@ -185,10 +188,10 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number)
formattedMoveOutTypeName = changeEnumValue(enumConfig.EMIGRATIONTYPE, parseInt(String(enterprise_fuhuas[0].moveOutType)));
}
let leasesTime = '-'
if (enterprise_leases[0].startTime){
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
}
// let leasesTime = '-'
// if (enterprise_leases[0].startTime){