Commit 6778ed4e by Zllgogo

no message

parent d8d013ee
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -310,7 +310,7 @@ export async function getOperateData(year) {
},
"出租率变化趋势": [],
"在孵企业行业领域": [],
"孵化器收入": []
// "孵化器收入": []
};
let qushiConf = { "01": 0, "02": 0, "03": 0, "04": 0, "05": 0, "06": 0, "07": 0, "08": 0, "09": 0, "10": 0, "11": 0, "12": 0 };
......@@ -424,13 +424,13 @@ export async function getOperateData(year) {
}
/**孵化器收入 */
for (let key in INCOME) {
let anyKey: any = key;
if (isNaN(anyKey)) {
operateData.孵化器收入.push({ key: anyKey, value: 0 });
}
}
// /**孵化器收入 */
// for (let key in INCOME) {
// let anyKey: any = key;
// if (isNaN(anyKey)) {
// operateData.孵化器收入.push({ key: anyKey, value: 0 });
// }
// }
return { operateData };
......@@ -441,10 +441,28 @@ export async function getOperateData(year) {
* 风险预警
* 暂未接入数据库数据
*/
// export async function getRiskData() {
// let riskData = [
// {
// key:"出租率异常",
// value:0
// },
// {
// key:"办公地址冲突",
// value:0
// },
// {
// key:"连续未填报",
// value:0
// },
// ]
// return riskData;
// }
export async function getRiskData() {
let riskData = [
{
key:"出租率异常",
key:"迁出异常",
value:0
},
{
......@@ -457,25 +475,67 @@ export async function getRiskData() {
},
]
// 1. 迁出异常
let qianchuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, { state: FUHUASTATE.迁出 }, {});
let qianchuAbnormal = qianchuList.filter(info => {
// 示例条件:迁出时间在当前时间之后(不合理)
return new Date(info.endTime) > new Date();
});
riskData[0].value = qianchuAbnormal.length;
// 2. 办公地址冲突
let leaseList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.租赁信息, {}, ["address", "startTime", "endTime", "eId"]);
let addressConflict = new Map<string, number[]>();
leaseList.forEach(lease => {
let key = `${lease.address}-${lease.startTime}-${lease.endTime}`;
if (addressConflict.has(key)) {
addressConflict.get(key)?.push(lease.eId);
} else {
addressConflict.set(key, [lease.eId]);
}
});
riskData[1].value = Array.from(addressConflict.values()).filter(ids => ids.length > 1).length;
// 3. 连续未填报
let reportList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, ["eId", "annual"]);
let continuousUnreported = new Set<number>();
// 假设每年需要填报,检查最近三年的填报情况
let currentYear = new Date().getFullYear();
for (let i = 0; i < reportList.length; i++) {
let eId = reportList[i].eId;
let reportedYears = new Set(reportList.filter(item => item.eId === eId).map(item => item.annual));
for (let year = currentYear - 2; year <= currentYear; year++) {
if (!reportedYears.has(year.toString())) {
continuousUnreported.add(eId);
break;
}
}
}
riskData[2].value = continuousUnreported.size;
return riskData;
}
/**
* 价值分析
*/
export async function getWorthDate() {
let worthData = {
"countData":[
{
key:"国际合作/大企业合作机构",
value:0
},
{
key:"大学/科研院合作机构",
value:0
}
],
// "countData":[
// {
// key:"国际合作/大企业合作机构",
// value:0
// },
// {
// key:"大学/科研院合作机构",
// value:0
// }
// ],
"TXP":[], //纳税趋势(万元)
"financing":[], //融资企业数量趋势
"jiuye":[] //就业人数趋势
......
......@@ -72,7 +72,7 @@ import { changeEnumValue } from "../util/verificationEnum";
leaseId:randomId(TABLEID.租赁信息),
area:param.area,
unitPrice:param.unitPrice,
buillding: param.building|| null, // 楼号
building: param.building|| null, // 楼号
roomNumber:param.roomNumber,
// startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
// endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
......@@ -109,15 +109,16 @@ export async function settleInEnterpriseList(page:number, enterpriseName:string)
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "mail"];
let manyTableInfo:any = {}
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "building","roomNumber", "rent", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "building", "roomNumber", "rent", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.企业用户表] = {column:["userName", "pwd", "phone", "uId"], where:{} };
manyTableInfo[TABLENAME.入孵申请审批表] = {column:["approvalId", "changeState", "createTimeMs"], where:{"%literal%":`approval_histories.changeType = ${enumConfig.CHANGETYPE.入孵申请}`, "%limit%":1} };
// 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 dataList = [];
resList.forEach(info => {
dataList.push({
eId:info.eId,
enterpriseName:info.enterpriseName,//企业名称
......@@ -126,8 +127,6 @@ export async function settleInEnterpriseList(page:number, enterpriseName:string)
leaseTime:`${moment(info.enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(info.enterprise_leases[0].endTime).format("YYYY-MM-DD")}`,
// leaseTimeStart:info.enterprise_leases[0].startTime || 0,
// leaseTimeEnd:info.enterprise_leases[0].endTime || 0,
// leaseStart: moment(info.enterprise_leases[0].startTime).format("YYYY-MM-DD"),//leaseStartTime
// leaseEnd: moment(info.enterprise_leases[0].endTime).format("YYYY-MM-DD"),
leaseStartTime:info.enterprise_leases[0].startTime || 0,
leaseEndTime:info.enterprise_leases[0].endTime || 0,
fuHuaTimeStart:info.enterprise_fuhuas[0].startTime||0,
......@@ -145,8 +144,10 @@ export async function settleInEnterpriseList(page:number, enterpriseName:string)
mail:info.mail,//邮箱地址
uId:info.enterprise_users[0].uId,
// totalPrice: info.enterprise_leases[0].totalPrice, // 添加年总价字段——暂时没用
status: info.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
// status: info.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
});
});
return {dataList, dataCount:allResList.length};
......@@ -279,7 +280,7 @@ export async function settleInEnterpriseUpdate(eId:string, param) {
// endTime: param.fuHuaTimeEndTime, //租赁结束日期
startTime:param.leaseStartTimeStart,
endTime:param.leaseEndTime,
building:param.buillding,
building:param.building,
roomNumber:param.roomNumber,
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, leaseInfo, {eId});
......@@ -349,7 +350,7 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) {
let manyTableInfo:any = {}
manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.入孵申请审批表] = {column:["approvalId", "changeState", "createTimeMs"], where:{"%literal%":`approval_histories.changeType = ${enumConfig.CHANGETYPE.入孵材料审批}`, "%limit%":1} };
// 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 );
......@@ -359,11 +360,16 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) {
eId:info.eId,
enterpriseName:info.enterpriseName,
randomCode:info.randomCode,
leaseContract:info.enterprise_leases[0].leaseContract || "未提交",
entryPlan:info.enterprise_leases[0].entryPlan || "未提交",
businessLicense:info.enterprise_leases[0].businessLicense || "未提交",
agreement:info.enterprise_leases[0].agreement || "未提交",
status: info.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
// leaseContract:info.enterprise_leases[0].leaseContract || "未提交",
// entryPlan:info.enterprise_leases[0].entryPlan || "未提交",
// businessLicense:info.enterprise_leases[0].businessLicense || "未提交",
// agreement:info.enterprise_leases[0].agreement || "未提交",
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.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
});
});
......@@ -372,15 +378,44 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) {
}
// 辅助函数:获取文件名和格式
function getFileNameAndFormat(fileName: string): string {
if (fileName === "未提交") return fileName;
const parts = fileName.split('.');
if (parts.length < 2) return fileName; // 如果没有找到 . 则直接返回原字符串
// function getFileNameAndFormat(fileName: string | null | undefined): string {
// if (fileName === null || fileName === undefined || fileName === "未提交") {
// return "未提交";
// }
// // 提取文件名(去掉路径)
// const basename = fileName.split('/').pop() || fileName;
// // 分割文件名和格式
// const parts = basename.split('.');
// if (parts.length < 2) {
// return basename; // 如果没有找到 . 则直接返回原字符串
// }
// const name = parts.slice(0, -1).join('.');
// const format = parts.pop();
// return `${name}.${format}`;
// }
function getFileNameAndFormat(fileName: string | null | undefined): string {
if (fileName === null || fileName === undefined || fileName === "未提交") {
return "未提交";
}
// 提取文件名(去掉路径)
let basename = fileName.split('/').pop() || fileName;
// 移除时间戳(假设时间戳格式为 YYYYMMDD_HHMMSS)
basename = basename.replace(/(\d{8}_\d{6})/, '');
// 分割文件名和格式
const parts = basename.split('.');
if (parts.length < 2) {
return basename; // 如果没有找到 . 则直接返回原字符串
}
const name = parts.slice(0, -1).join('.');
const format = parts.pop();
return `${name}.${format}`;
return `${name.trim()}.${format}`;
}
/**
* 入孵材料审核通过
......
......@@ -144,7 +144,7 @@ export async function createRuFu(uId, param) {
area: param.area || null, // 可为空
unitPrice:param.unitPrice,
// roomNumber:param.roomNumber,
buillding: param.building|| null, // 楼号
building: param.building|| null, // 楼号
roomNumber: param.roomNumber || null,// 室号
// startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
// endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
......
......@@ -6,11 +6,13 @@ import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { changeAdd } from "../util/piecemeal";
import { changeEnumValue } from "../util/verificationEnum";
import { changeEnumManyValue, changeEnumValue } from "../util/verificationEnum";
import * as enumConfig from "../config/enum/enum";
import { BizError } from "../util/bizError";
import { ERRORENUM } from "../config/enum/errorEnum";
import { getMySqlMs } from "../tools/system";
import { log } from "console";
import { BUILDING } from "../config/enum/enum";
/**
* 备份在孵企业列表
......@@ -76,7 +78,7 @@ import { getMySqlMs } from "../tools/system";
// return {dataList, dataCount:dataCount.length};
// }
export async function enterpriseList(enterpriseName:string, page:number, logonStartTime:string, logonEndTime:string, startTime: number,endTime: number, building: number) {
export async function enterpriseList(enterpriseName:string, page:number, logonStartTime:string, logonEndTime:string, startTime: number,endTime: number, building: number ) {
let selectParam: any = { state: 1 };
if (enterpriseName) { selectParam.enterpriseName = { "%like%": enterpriseName };}
......@@ -102,13 +104,17 @@ export async function enterpriseList(enterpriseName:string, page:number, logonSt
}
// if (building && ['1', '3', '4'].includes(building)) {leaseWhere.building = building;}
if (building) selectParam["enterprise_leases.building"] = building
// if (building) selectParam["enterprise_leases.building"] = building
if (building) {
leaseWhere.building = building;
}
let manyTableInfo: any = {};
// 租赁信息表配置
manyTableInfo[TABLENAME.租赁信息] = {
column: ["area", "startTime", "endTime", "roomNumber", "building"],
column: ["area", "startTime", "endTime", "building", "roomNumber"],
where: leaseWhere
};
......@@ -170,10 +176,10 @@ export async function enterpriseList(enterpriseName:string, page:number, logonSt
fuhuaTime, // 孵化时间
leasesTime, // 租赁时间
area: enterprise_leases[0]?.area ? `${enterprise_leases[0].area}㎡` : '-',
// building: enterprise_leases[0]?.building || '-',
building:changeEnumValue(enumConfig.BUILDING, enterprise_leases[0]?.building),
building: enterprise_leases[0]?.building || '-',
// building:changeEnumValue(enumConfig.BUILDING, enterprise_leases[0].building),
roomNumber: enterprise_leases[0]?.roomNumber || '-'
});
});
}
return { dataList, dataCount: dataCount.length };
......@@ -712,7 +718,7 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber", "building"], where:{} };
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber" ], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime",], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
......@@ -796,7 +802,7 @@ export async function dwBasicInformation(eId:string) {
let filesList = ["enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber","building"], where:{}};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber"], where:{}};
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["startTime", "endTime"], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
......@@ -1106,7 +1112,7 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number,
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber" ,"building"], where:{} };
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber" ], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime"], where: { state:enumConfig.FUHUASTATE.迁出 } };
......
......@@ -44,7 +44,7 @@ export const SettleInForUpdateConfig = {
leaseEndTime:{type:"Number"},//租赁结束时间
area:{type:"Number"},//面积
// unitPrice:{type:"Number"},//单价
buillding:{type:"String"},//楼号
building:{type:"String"},//楼号
roomNumber:{type:"String"},//室号
rent:{type:"Number"},//每月租金
// totalPrice:{type:"Number"},//总价
......@@ -74,15 +74,15 @@ export const AdminRegisterAddConfig = {
fuHuaTimeEndTime:{type:"Number",required: true, message: '孵化结束时间不能为空'},//孵化结束时间
area:{type:"Number", required: false},//面积非必填
// unitPrice:{type:"Number"},//单价
buillding: { type: 'string', required: false }, // 租赁楼号非必填
building: { type: 'string', required: false }, // 租赁楼号非必填
roomNumber:{type:"String", required: false},//室号非必填
rent:{type:"Number",required: true, message: '每月租金不能为空'},//每月租金
// totalPrice:{type:"Number"},//总价
pwd:{type:"String",required: true, message: '密码不能为空'},
phone:{type:"String",required: true, message: '手机号码不能为空'},
userName:{type:"String",required: true, message: '用户名不能为空'},
leaseStartTime: { type: 'string', required: true, message: '租赁开始时间不能为空' },
leaseEndTime: { type: 'string', required: true, message: '租赁结束时间不能为空' },
leaseStartTime: { type: 'Number', required: true, message: '租赁开始时间不能为空' },
leaseEndTime: { type: 'Number', required: true, message: '租赁结束时间不能为空' },
mail: { type: 'string', required: true, message: '邮箱地址不能为空' },
}
......@@ -139,7 +139,7 @@ export const UserRegisterAddConfig = {
userName: { type: 'string', required: true, message: '联系人不能为空' },
phone: { type: 'string', required: true, message: '登录手机号码不能为空' },
pwd: { type: 'string', required: true, message: '登录密码不能为空' },
buillding: { type: 'string', required: false }, // 租赁楼号非必填
building: { type: 'string', required: false }, // 租赁楼号非必填
roomNumber: { type: 'string', required: false }, // 租赁室号非必填
area: { type: 'number', required: false }, // 租赁面积非必填
}
......
......@@ -336,7 +336,7 @@ async function outPutTalentList(req, res) {
*/
async function enterpriseList(req, res) {
const UserInfo = req.userInfo;
let {enterpriseName, page ,logonStartTime, logonEndTime ,startTime, endTime ,building } = req.body
let {enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building } = req.body
let result = await zaiFuBiz.enterpriseList(enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building);
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