Commit 3cd6bda6 by lixinming

3.1归档

parent 3f3c0f7f
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import moment = require("moment"); import moment = require("moment");
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
import { createInformation, deleteInformationData, selectInformationByParam, selectInformationDataById } from "../../data/guanWeiHui/information"; import { createInformation, deleteInformationData, selectInformationByParam, selectInformationByParamCount, selectInformationByParamToPage, selectInformationDataById } from "../../data/guanWeiHui/information";
import { getInformationId } from "../../tools/system"; import { getInformationId } from "../../tools/system";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
...@@ -28,6 +28,7 @@ export async function openInformation(id:string, isPermanent:boolean, closeTimeM ...@@ -28,6 +28,7 @@ export async function openInformation(id:string, isPermanent:boolean, closeTimeM
informationData.isPermanent = isPermanent; informationData.isPermanent = isPermanent;
informationData.closeTimeMs = closeTimeMs; informationData.closeTimeMs = closeTimeMs;
informationData.state = true;
await informationData.save(); await informationData.save();
...@@ -38,8 +39,7 @@ export async function openInformation(id:string, isPermanent:boolean, closeTimeM ...@@ -38,8 +39,7 @@ export async function openInformation(id:string, isPermanent:boolean, closeTimeM
export async function closeInformation(id:string) { export async function closeInformation(id:string) {
let informationData = await selectInformationDataById(id); let informationData = await selectInformationDataById(id);
informationData.switch = true; informationData.state = false;
await informationData.save(); await informationData.save();
return {isSuccess:true}; return {isSuccess:true};
...@@ -90,8 +90,26 @@ export async function updateOnceInformation(id:string, desc:string, title:string ...@@ -90,8 +90,26 @@ export async function updateOnceInformation(id:string, desc:string, title:string
} }
export async function selectInformation() { export async function selectInformation(selectTitle:string, createTime:number, state:number, page:number) {
let dataBaseList = await selectInformationByParam({});
let selectParam = {};
if (state == 2 || state == 3) {
if (state == 2) {
selectParam = {state:true, "$or":[{closeTimeMs: {"$gt":new Date().valueOf()} }, {isPermanent:true}] };
} else {
selectParam = {"$or":[{closeTimeMs: {"$lt":new Date().valueOf()} }, {state:false}] };
}
}
if (selectTitle) {
selectParam["title"] = {"$regex":`${selectTitle}`};
}
if (createTime) {
selectParam["$and"] = [{"createTimeMs":{"$gt":createTime }}, {"createTimeMs":{"$lt":createTime+(3600*26*1000) }}]
}
let dataBaseList = await selectInformationByParamToPage(selectParam, (page-1)* 10);
let count = await selectInformationByParamCount(selectParam);
let pageCount = count ? Math.ceil(count/10) : 0;
let dataList = []; let dataList = [];
dataBaseList.forEach(info => { dataBaseList.forEach(info => {
...@@ -111,5 +129,5 @@ export async function selectInformation() { ...@@ -111,5 +129,5 @@ export async function selectInformation() {
}); });
}); });
return {dataList}; return {dataList, pageCount, count};
} }
...@@ -23,6 +23,8 @@ export async function getInformationList(uscc:string, selectTitle:string, page:n ...@@ -23,6 +23,8 @@ export async function getInformationList(uscc:string, selectTitle:string, page:n
} }
let informationList = await selectInformationByParamToPage(selectParam, (page-1) * 10 ); let informationList = await selectInformationByParamToPage(selectParam, (page-1) * 10 );
let count = await selectInformationByParamCount(selectParam); let count = await selectInformationByParamCount(selectParam);
let pageCount = count ? Math.ceil(count/10) : 0;
let dataList = []; let dataList = [];
informationList.forEach((info) => { informationList.forEach((info) => {
...@@ -32,7 +34,7 @@ export async function getInformationList(uscc:string, selectTitle:string, page:n ...@@ -32,7 +34,7 @@ export async function getInformationList(uscc:string, selectTitle:string, page:n
}); });
return {dataList, count}; return {dataList, count, pageCount};
} }
...@@ -51,6 +53,7 @@ export async function getOutOfDateInformationList(uscc:string, selectTitle:strin ...@@ -51,6 +53,7 @@ export async function getOutOfDateInformationList(uscc:string, selectTitle:strin
} }
let informationList = await selectInformationByParamToPage(selectParam, (page-1) * 10 ); let informationList = await selectInformationByParamToPage(selectParam, (page-1) * 10 );
let count = await selectInformationByParamCount(selectParam); let count = await selectInformationByParamCount(selectParam);
let pageCount = count ? Math.ceil(count/10) : 0;
let dataList = []; let dataList = [];
informationList.forEach((info) => { informationList.forEach((info) => {
...@@ -60,7 +63,7 @@ export async function getOutOfDateInformationList(uscc:string, selectTitle:strin ...@@ -60,7 +63,7 @@ export async function getOutOfDateInformationList(uscc:string, selectTitle:strin
}); });
return {dataList, count}; return {dataList, count, pageCount};
} }
......
...@@ -17,6 +17,7 @@ import { changeEnumValue, eccEnumValue } from "../../../util/verificationEnum"; ...@@ -17,6 +17,7 @@ import { changeEnumValue, eccEnumValue } from "../../../util/verificationEnum";
import * as scoreBiz from "./score"; import * as scoreBiz from "./score";
/** /**
* 主界面基础数据 * 主界面基础数据
* 小程序端 首页的基础数据 * 小程序端 首页的基础数据
...@@ -196,5 +197,3 @@ export async function updateOrganizationData(uscc:string, param) { ...@@ -196,5 +197,3 @@ export async function updateOrganizationData(uscc:string, param) {
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 孵化器经营数据填报
*
*/
import { FuHuaQiBusinessDataConfig } from "../../../config/eccFormParamConfig";
import { ERRORENUM } from "../../../config/errorEnum";
import { FuHuaQiBusinessDataInfoConfig } from "../../../config/splitResultConfig";
import { findBusinessByTaskId } from "../../../data/fuHuaQi/quarterTask/businessData";
import * as sysTools from "../../../tools/system";
import { BizError } from "../../../util/bizError";
import { extractData } from "../../../util/piecemeal";
import { eccFormParam } from "../../../util/verificationParam";
/**
* 新添加孵化器经营数据填报
* 小程序端
* 逻辑是 将填报编辑状态修改为true 当库里=true时
* @param uscc 孵化器的统一信用代码
* @param param
* @returns {isSuccess:true/false}
*/
export async function createBusiness(uscc:string, param) {
const TaskId = sysTools.getQuarterTaskId(uscc);
eccFormParam("新添加孵化器季度填报", FuHuaQiBusinessDataConfig, param);
let businessInfo = await findBusinessByTaskId(TaskId);
/**不可以重复创建 */
if ( businessInfo.isUpdate ) throw new BizError(ERRORENUM.该孵化器经营数据填报已存在, `孵化器 ${uscc}重复提交了经营数据`);
/**更新状态和数据 */
businessInfo.isUpdate = true;
for (let key in param) {
businessInfo[key] = param[key];
}
await businessInfo.save();
return {isSuccess:true};
}
export async function deleteBusiness(uscc:string) {
const TaskId = sysTools.getQuarterTaskId(uscc);
let businessInfo = await findBusinessByTaskId(TaskId);
/**删除校验 */
if ( !businessInfo.isUpdate ) throw new BizError(ERRORENUM.未填报数据不能删除, `孵化器 ${uscc}删除经营数据时经营数据不存在`);
if ( businessInfo.draftLock ) throw new BizError(ERRORENUM.已提交的数据不能进行操作, `孵化器 ${uscc}尝试 删除 已经提交的经营数据`);
/**更新状态和数据 */
businessInfo.isUpdate = false;
for (let key in FuHuaQiBusinessDataConfig) {
businessInfo[key] = 0;
}
await businessInfo.save();
return {isSuccess:true};
}
export async function selectBusiness(uscc:string) {
const TaskId = sysTools.getQuarterTaskId(uscc);
let businessInfo = await findBusinessByTaskId(TaskId);
/**不可以重复创建 */
if ( !businessInfo.isUpdate ) throw new BizError(ERRORENUM.请先填报数据, `孵化器 ${uscc}调用回显接口时经营数据不存在`);
if ( businessInfo.draftLock ) throw new BizError(ERRORENUM.已提交的数据不能进行操作, `孵化器 ${uscc}尝试 回显 已经提交的经营数据`);
let businessData = extractData(FuHuaQiBusinessDataInfoConfig, businessInfo, false)
return {businessData};
}
export async function updateBusiness(uscc:string, param) {
const TaskId = sysTools.getQuarterTaskId(uscc);
eccFormParam("修改孵化器季度填报", FuHuaQiBusinessDataConfig, param);
let businessInfo = await findBusinessByTaskId(TaskId);
/**不可以重复创建 */
if ( !businessInfo.isUpdate ) throw new BizError(ERRORENUM.请先填报数据, `孵化器 ${uscc}调用修改接口时经营数据不存在`);
if ( businessInfo.draftLock ) throw new BizError(ERRORENUM.已提交的数据不能进行操作, `孵化器 ${uscc}尝试 修改 已经提交的经营数据`);
/**更新状态和数据 */
for (let key in param) {
businessInfo[key] = param[key];
}
await businessInfo.save();
return {isSuccess:true};
}
\ No newline at end of file
/**
* 孵化器 机构资质
*
*/
import * as fuhuaqiData from "../../../data/fuHuaQi/fuhuaqi";
import { getI18nRegisterId } from "../../../tools/system";
import { addRegister, deleteI18nRegisterListById, findI18nRegisterListByParam, findOneI18nRegister } from "../../../data/fuHuaQi/i18nRegister";
/**
* 创建国际化登记
* @param uscc 企业统一信用代码
* @param country 国家
* @param partners 合作机构
* @param cMode 合作方式
* @param cAchievements 合作成果
* @returns
*/
export async function createI18nRegister(uscc:string, country:string, partners:string, cMode:string, cAchievements:string) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getI18nRegisterId(uscc);
await addRegister(id, uscc, fuHuaQiInfo.name, country, partners, cMode, cAchievements);
return {isSuccess:true};
}
/**
* 修改国际化登记
* @param uscc 企业统一信用代码
* @param id 标识
* @param country 国家
* @param partners 合作机构
* @param cMode 合作方式
* @param cAchievements 合作成果
* @returns
*/
export async function updateI18nRegister(uscc:string, id:string, country:string, partners:string, cMode:string, cAchievements:string) {
let registerInfo = await findOneI18nRegister(id);
registerInfo.country = country;
registerInfo.partners = partners;
registerInfo.cMode = cMode;
registerInfo.cAchievements = cAchievements;
await registerInfo.save();
return {isSuccess:true};
}
export async function selectI18nRegisterInfo(id:string) {
let registerInfo = await findOneI18nRegister(id);
let registerData = {
country : registerInfo.country,
partners : registerInfo.partners,
cMode : registerInfo.cMode,
cAchievements : registerInfo.cAchievements,
};
return {registerData}
}
export async function deleteI18nRegisterInfo(id:string) {
await deleteI18nRegisterListById(id);
return {isSuccess:true}
}
export async function i18nRegisterListData(uscc) {
let registerList = await findI18nRegisterListByParam({uscc});
let dataList = [];
registerList.forEach(info => {
dataList.push({
id:info.id,
country:info.country,
partners:info.partners,
cMode:info.cMode,
cAchievements:info.cAchievements,
});
});
return {dataList}
}
/**
* 修改创投基金登记信息
* @param uscc
* @param isCreatePTP
* @param scalePTP
* @param isParticipateInPTP
*/
export async function updatePTPInfo(uscc:string, isCreatePTP:boolean, scalePTP:number, isParticipateInPTP:boolean) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
fuHuaQiInfo.isCreatePTP = isCreatePTP;
fuHuaQiInfo.scalePTP = scalePTP;
fuHuaQiInfo.isParticipateInPTP = isParticipateInPTP;
await fuHuaQiInfo.save();
return {isSuccess:true};
}
export async function getFuHuaQiPTP(uscc:string) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let PTPInfo = {
isCreatePTP:fuHuaQiInfo.isCreatePTP,
scalePTP:fuHuaQiInfo.scalePTP,
isParticipateInPTP:fuHuaQiInfo.isParticipateInPTP,
};
return {PTPInfo};
}
export async function updateProfessionalTechnology(uscc:string, isProfessionalTechnology:boolean, professionalTechnologyName:String,
professionalTechnologyCreateTime:number, professionalTechnologyAmount:number, isCooperation:boolean, cooperationInstitutions:string) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
fuHuaQiInfo.isProfessionalTechnology= isProfessionalTechnology;//是否专业技术平台
fuHuaQiInfo.professionalTechnologyName= professionalTechnologyName;//专业技术平台名称
fuHuaQiInfo.professionalTechnologyCreateTime= professionalTechnologyCreateTime;//时间 年份 xxxx年01月01日 的时间戳
fuHuaQiInfo.professionalTechnologyAmount= professionalTechnologyAmount;//投资金额万元
fuHuaQiInfo.isCooperation= isCooperation;//是否与第三方合作
fuHuaQiInfo.cooperationInstitutions= cooperationInstitutions;//合作机构名称
await fuHuaQiInfo.save();
return {isSuccess:true};
}
export async function getProfessionalTechnology(uscc:string) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let professionalTechnologyInfo = {
isProfessionalTechnology:fuHuaQiInfo.isProfessionalTechnology,
professionalTechnologyName:fuHuaQiInfo.professionalTechnologyName,
professionalTechnologyCreateTime:fuHuaQiInfo.professionalTechnologyCreateTime,
professionalTechnologyAmount:fuHuaQiInfo.professionalTechnologyAmount,
isCooperation:fuHuaQiInfo.isCooperation,
cooperationInstitutions:fuHuaQiInfo.cooperationInstitutions,
};
return { professionalTechnologyInfo };
}
\ No newline at end of file
/** /**
* 月度表单逻辑层 * 月度表单逻辑层
* 作者: 陈金晶
* 需求说明 1.月度填报必须填值才能提交 * 需求说明 1.月度填报必须填值才能提交
* 逻辑说明 1.月度表单在孵化器任务生成时一起生成 * 逻辑说明 1.月度表单在孵化器任务生成时一起生成
* 2.草稿锁(draftLock)默认=false draftLock=true表示这个任务被提交了 草稿锁用于判断孵化器有没有提交 * 2.草稿锁(draftLock)默认=false draftLock=true表示这个任务被提交了 草稿锁用于判断孵化器有没有提交
......
...@@ -13,17 +13,18 @@ ...@@ -13,17 +13,18 @@
*/ */
import moment = require("moment"); import moment = require("moment");
import { SCOREWAYS, TASKTYPEENUM } from "../../../config/enum"; import { QUARTERTASKTYPEENUM, SCOREWAYS, TASKTYPEENUM } from "../../../../config/enum";
import { ERRORENUM } from "../../../config/errorEnum"; import { ERRORENUM } from "../../../../config/errorEnum";
import { findEnterpriseCount, findEnterpriseListByTaskId, updateEnterpriseDraftLock } from "../../../data/enterprise/enterprise"; import { findEnterpriseCount, findEnterpriseListByTaskId, updateEnterpriseDraftLock } from "../../../../data/enterprise/enterprise";
import { findFinancingCount, findFinancingListByTaskId, updateFinancingDraftLock } from "../../../data/fuHuaQi/monthTask/financing"; import { findFinancingCount, findFinancingListByTaskId, updateFinancingDraftLock } from "../../../../data/fuHuaQi/monthTask/financing";
import { findAllNotDisabledFuHuaQi } from "../../../data/fuHuaQi/fuhuaqi"; import { findAllNotDisabledFuHuaQi } from "../../../../data/fuHuaQi/fuhuaqi";
import * as monthTableData from "../../../data/fuHuaQi/monthTask/monthTable"; import * as monthTableData from "../../../../data/fuHuaQi/monthTask/monthTable";
import * as taskData from "../../../data/fuHuaQi/monthTask/task"; import * as taskData from "../../../../data/fuHuaQi/monthTask/task";
import { BizError } from "../../../util/bizError"; import * as quarterTaskData from "../../../../data/fuHuaQi/quarterTask/quarterTask";
import { logHandle } from "../../../util/log"; import { BizError } from "../../../../util/bizError";
import { getLastMonthTimeKey, getTaskId, getTaskIdByTime, getThisMonthMs, getTimeKey } from "../../../tools/system"; import { logHandle } from "../../../../util/log";
import * as scoreBiz from "../fuHuaQi/score"; import { getLastMonthTimeKey, getQuarterTaskId, getTaskId, getTaskIdByTime, getThisMonthMs, getTimeKey } from "../../../../tools/system";
import * as scoreBiz from "../score";
/** /**
...@@ -82,7 +83,7 @@ export async function fuHuaQiTaskList(uscc:string) { ...@@ -82,7 +83,7 @@ export async function fuHuaQiTaskList(uscc:string) {
} }
} }
} }
return {taskList:result}; return {taskList:result};
} }
...@@ -256,7 +257,7 @@ export async function checkTask(uscc:string, taskType:number) { ...@@ -256,7 +257,7 @@ export async function checkTask(uscc:string, taskType:number) {
* 系统自发 * 系统自发
* 下发任务的同时初始化月度报表数据 * 下发任务的同时初始化月度报表数据
*/ */
export async function provideTask() { export async function provideMonthTask() {
const TimeKey = getTimeKey(); const TimeKey = getTimeKey();
let taskCount = await taskData.findTaskCountByKey(TimeKey); let taskCount = await taskData.findTaskCountByKey(TimeKey);
if (taskCount) { if (taskCount) {
...@@ -299,7 +300,7 @@ export async function provideTask() { ...@@ -299,7 +300,7 @@ export async function provideTask() {
/** /**
* 回收任务分数 * 回收任务分数
*/ */
export async function retrieveTask() { export async function retrieveMonthTask() {
/**获取上个月 时间key */ /**获取上个月 时间key */
let TimeKey = getLastMonthTimeKey(); let TimeKey = getLastMonthTimeKey();
let notSubmitList = await taskData.findTaskListByParam({key:TimeKey, isSubmit:false}); let notSubmitList = await taskData.findTaskListByParam({key:TimeKey, isSubmit:false});
......
/**
* 孵化器 季度任务 主要逻辑
* 作者:lxm
*/
import moment = require("moment");
import { getLastQuarter, getQuarterTaskId, getQuarterTaskIdByTime, getQuarterTimeKey, getTaskId, getTaskIdByTime, getTimeKey } from "../../../../tools/system";
import * as quarterTaskData from "../../../../data/fuHuaQi/quarterTask/quarterTask";
import * as businessData from "../../../../data/fuHuaQi/quarterTask/businessData";
import { findAllNotDisabledFuHuaQi } from "../../../../data/fuHuaQi/fuhuaqi";
import { QUARTERTASKTYPEENUM } from "../../../../config/enum";
import { logHandle } from "../../../../util/log";
import { createBusinessToList } from "../../../../data/fuHuaQi/quarterTask/businessData";
import { ERRORENUM } from "../../../../config/errorEnum";
import { BizError } from "../../../../util/bizError";
/**
* 当前月是不是数据填报月
* @returns true = 是
*/
function isInTime() {
let thisMonth = new Date().getMonth() + 1;
let tipsMonth = [1, 4, 7, 10];
return tipsMonth.indexOf(thisMonth) > -1
}
export async function fuHuaQiQuarterTaskList(uscc:string) {
/**得到这个月的任务map taskMap格式为{type:{isSubmit}} */
const TaskId = getQuarterTaskId(uscc);
let taskMap = await quarterTaskData.findQuarterTaskMapTypeIsKeyByParam(TaskId);
let result = [];
for (let key in QUARTERTASKTYPEENUM) {
let anyKey:any = key;
/** 当key是枚举的键的时候 进入到逻辑 */
if (isNaN(anyKey)) {
const ValueStr = QUARTERTASKTYPEENUM[key];//字符型的枚举值 也就是 "4"
const ValueNumber = parseInt(ValueStr);//number型的枚举值 也就是 4
let onceObj = {
key:ValueNumber,
title:anyKey, //标题
quarter:'',
list:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
};
/**没有提交任务 则获取本月提交的任务相关信息 */
if (taskMap[ValueStr] && !taskMap[ValueStr].isSubmit) {
let dataList = [];
onceObj.quarter = `第${taskMap[ValueStr].quarter}季度`;
switch(ValueNumber) {
case QUARTERTASKTYPEENUM.孵化器经营状况:
/** 这里加限制 在月度任务中 isUpdate=true代表已经修改 isUpdate=false表示没有这个任务 */
dataList = await businessData.findBusinessListByTaskIdAndUpdate(TaskId, true);
break;
}
dataList.forEach(info => {
let addInfo:any = {name:info.name, id:info.uscc};
onceObj.list.push(addInfo);
});
result.push(onceObj);
}
}
}
return {taskList:result};
}
/**
* 孵化器 季度任务 已办任务列表
* 小程序端 3.1
* 只显示selectTime月分的 已经办理的任务
* @param uscc 孵化器统一信用
* @returns [{type:1, title:'', enterpriseList:[] }]
*/
export async function fuHuaQiQuarterCompletedTaskList(uscc:string, selectTime:number) {
/**得到查询月的任务map taskMap格式为{type:{isSubmit}} */
const TaskId = getQuarterTaskIdByTime(uscc, selectTime);
let editable = getTaskId(uscc) == TaskId && isInTime();//如果是本季度,并且在数据填报月 就是可以编辑的
let taskMap = await quarterTaskData.findQuarterTaskMapTypeIsKeyByParam(TaskId);
let result = [];
for (let key in QUARTERTASKTYPEENUM) {
let anyKey:any = key;
/** 当key是枚举的键的时候 进入到逻辑 */
if (isNaN(anyKey)) {
const ValueStr = QUARTERTASKTYPEENUM[key];//字符型的枚举值 也就是 "1"或者"2"或者"3"
const ValueNumber = parseInt(ValueStr);//number型的枚举值 也就是 1或者2或者3
let onceObj:any = {
key:ValueNumber,
title:anyKey, //标题
editable,
list:[] //相关的列表
};
/**当选中了系统上线时间前的时间 任务不存在 就是空列表 */
if (!taskMap[ValueStr]) continue;
/**获取提交的任务 */
if ( taskMap[ValueStr].isSubmit ) {
onceObj.quarter = `第${taskMap[ValueStr].quarter}季度`;
let dataList = [];
switch(ValueNumber) {
case QUARTERTASKTYPEENUM.孵化器经营状况:
/** 这里加限制 在月度任务中 isUpdate=true代表已经修改 isUpdate=false表示没有这个任务 */
dataList = await businessData.findBusinessListByTaskIdAndUpdate(TaskId, true);
break;
}
dataList.forEach(info => {
let addInfo:any = {name:info.name, id:info.uscc, editable };
onceObj.enterpriseList.push(addInfo);
});
result.push(onceObj);
}
}
}
return {taskList:result};
}
/**
* 孵化器 过期任务列表
* 小程序端 2.0
* 只显示selectTime月份的 过期任务
* @param uscc 孵化器统一信用
* @returns [{type:1, title:'', enterpriseList:[] }]
*/
export async function fuHuaQiQuarterPastdueTaskList(uscc:string, selectTime:number) {
/**得到查询月的任务map taskMap格式为{type:{isSubmit}} */
if (selectTime >= new Date().valueOf() ) return {taskList:[]};
const TaskId = getQuarterTaskIdByTime(uscc, selectTime);
let taskMap = await quarterTaskData.findQuarterTaskMapTypeIsKeyByParam(TaskId);
let result = [];
for (let key in QUARTERTASKTYPEENUM) {
let anyKey:any = key;
/** 当key是枚举的键的时候 进入到逻辑 */
if (isNaN(anyKey)) {
const ValueStr = QUARTERTASKTYPEENUM[key];//字符型的枚举值 也就是 "4"
const ValueNumber = parseInt(ValueStr);//number型的枚举值 也就是 4
let onceObj:any = {
key:ValueNumber,
title:anyKey, //标题
list:[] //相关的列表 这里不应该用这个字段名称 当时不能修改前端 沿用了这个字段名称
};
/**当选中了系统上线时间前的时间 任务不存在 就是空列表 */
if (!taskMap[ValueStr]) continue;
/**未提交的数据 */
if (!taskMap[ValueStr].isSubmit) {
onceObj.quarter = `第${taskMap[ValueStr].quarter}季度`;
result.push(onceObj);
}
}
}
return {taskList:result};
}
/**
* 提交 季度任务
* 小程序端
* @param uscc 孵化器统一信用代码
* @param taskType 任务类型
* @returns {isSuccess:true/false}
*/
export async function checkTask(uscc:string, taskType:number) {
const TaskId = getTaskId(uscc);
let taskInfo = await quarterTaskData.findQuarterTaskByTaskIdAndType(TaskId, taskType);;
/**提交限制 */
if (!taskInfo) throw new BizError(ERRORENUM.任务不存在, uscc, TaskId);
if ( taskInfo.isSubmit ) throw new BizError(ERRORENUM.不能重复提交任务, uscc, taskType);
let submitCount = 0;
switch (taskType) {
case QUARTERTASKTYPEENUM.孵化器经营状况:
/**月度报表每个月初和任务数据一起初始化 所以只需要修改状态 */
let monthTableInfo = await businessData.findBusinessByTaskId(TaskId);
if (!monthTableInfo.isUpdate) throw new BizError(ERRORENUM.该报表需要填写本季度内容后提交, uscc, taskType);
if ( monthTableInfo.draftLock ) throw new BizError(ERRORENUM.不能重复提交任务, uscc, taskType, '孵化器经营数据表lock = true');
monthTableInfo.draftLock = true;
monthTableInfo.submitTime = new Date().valueOf();
await monthTableInfo.save();
break;
}
/** 修改任务状态标识 和相关信息 */
taskInfo.isSubmit = true;
taskInfo.submitTime = new Date().valueOf();
taskInfo.submitCount = submitCount;
await taskInfo.save();
return {isSuccess:true};
}
/**
* 发放任务
* 系统自发
* 下发任务的同时初始化月度报表数据
*/
export async function provideFuHuaQiQuarterTask() {
//不是数据填报月不下发任务
if (!isInTime()) return;
let {year, quarter} = getLastQuarter();
let count = await quarterTaskData.findQuarterTaskCountByParam({year, quarter});
if (count) return;//不能重复发放任务
let addList = [];//任务列表
let businessDataList = [];//经营数据
let key = getQuarterTimeKey();
let fuHuaQiList = await findAllNotDisabledFuHuaQi();
fuHuaQiList.forEach(info => {
let { uscc } = info;
let taskId = getQuarterTaskId(uscc);
addList.push({
key, type:QUARTERTASKTYPEENUM.孵化器经营状况,
taskId, fuHuaQiUscc:uscc, submitTime:0, isSubmit:false,
quarter, year, submitCount:0
});
/**任务报表的初始状态为 草稿(draftLock=fals) 未被编辑(isUpdate=false) */
businessDataList.push({
taskId, quarter, year,
name:`孵化器第${quarter}季度填报`,
fuHuaQiUscc:uscc,
TR:0, ROR:0, RR:0, FS:0, MIS:0, NP:0, TP:0,
draftLock:false, isUpdate:false, submitTime:0
});
});
try {
/**初始化 孵化器季度任务 */
await quarterTaskData.createQuarterTaskToList(addList);
logHandle(`添加了${addList.length} 任务`);
/**初始化 经营数据报表 */
await createBusinessToList(businessDataList);
logHandle(`添加了${businessDataList.length} 月度任务`);
} catch (err) {
new BizError(ERRORENUM.系统错误, '添加任务和月度报表的时候 出现了异常 请检查数据库 ', err);
}
}
/**
* 回收任务分数
* 将回收月上一个月下发的数据进行状态回收 回收月与下发月永远会在同一个季度
*/
export async function retrieveMonthTask() {
/**回收本季度数据 */
//todo 这里没有涉及积分 不需要做处理 留好坑
}
\ No newline at end of file
...@@ -9,53 +9,72 @@ ...@@ -9,53 +9,72 @@
import moment = require("moment"); import moment = require("moment");
import { findTaskCountByKey, findTaskListByParam } from "../data/fuHuaQi/monthTask/task"; import { findTaskCountByKey, findTaskListByParam } from "../data/fuHuaQi/monthTask/task";
import { getTimeKey } from "../tools/system"; import { getQuarterTimeKey, getTimeKey } from "../tools/system";
import { provideTask, retrieveTask } from "./mobileFuHuaQi/fuHuaQi/task"; import { provideMonthTask, retrieveMonthTask } from "./mobileFuHuaQi/fuHuaQi/task/monthTask";
import { findFuHuaQiList } from "../data/fuHuaQi/fuhuaqi"; import { findFuHuaQiList } from "../data/fuHuaQi/fuhuaqi";
import { sendTaskPointOut } from "./sms"; import { sendTaskPointOut } from "./sms";
import { logHandle } from "../util/log"; import { logHandle } from "../util/log";
import { createSmsPointOutData, findSmsPointOutData } from "../data/fuHuaQi/smsPointOut"; import { createSmsPointOutData, findSmsPointOutData } from "../data/fuHuaQi/smsPointOut";
import { SMSTYPE } from "../config/enum"; import { SMSTYPE } from "../config/enum";
import { dataDeclarationTask } from "./mobileEnterprise/quarterTask/dataDeclaration"; import { dataDeclarationTask } from "./mobileEnterprise/quarterTask/dataDeclaration";
import { findQuarterTaskCountByParam } from "../data/fuHuaQi/quarterTask/quarterTask";
import { provideFuHuaQiQuarterTask } from "./mobileFuHuaQi/fuHuaQi/task/quarterTask";
/**
* 初始化任务
*/
export function initSystemTask() { export function initSystemTask() {
/**孵化器任务 */ /**孵化器月度任务 */
fuHuaQiTask(); fuHuaQiMonthTask();
setInterval(async function () { setInterval(async function () {
await fuHuaQiTask(); await fuHuaQiMonthTask();
}, 3600 * 1000); }, 3600 * 1000);
/**企业任务 */ /**孵化器季度任务 */
enterpriseTask(); fuHuaQiQuarterTask();
setInterval(async function () {
await fuHuaQiQuarterTask();
}, 3600 * 1000 * 2);
/**企业季度任务 */
enterpriseQuarterTask();
setInterval(async function () { setInterval(async function () {
await enterpriseTask(); await enterpriseQuarterTask();
}, 3600 * 1000 * 2); }, 3600 * 1000 * 2);
/**初始化短信任务 */
smsTask();
setInterval(async function () {
await smsTask();
}, 3600 * 1000);
console.log(`systemTask init success`);
console.log(`systemTask init success`); console.log(`systemTask init success`);
} }
/** /**
* 发放/回收 孵化器任务 * 发放/回收 孵化器月度任务
* @returns * @returns
*/ */
async function fuHuaQiTask() { async function fuHuaQiMonthTask() {
const Key = getTimeKey(); const Key = getTimeKey();
let count = await findTaskCountByKey(Key); let count = await findTaskCountByKey(Key);
if (count != 0) return; if (count != 0) return;
/**生成新的任务 */ /**生成新的任务 */
await provideTask(); await provideMonthTask();
/**回收旧任务计算分数 */ /**回收旧任务计算分数 */
await retrieveTask(); await retrieveMonthTask();
} }
/** /**
* 发放/回收 企业任务 * 发放/回收 企业季度任务
*/ */
async function enterpriseTask() { async function enterpriseQuarterTask() {
/**不在填报月份不下发数据 */ /**不在填报月份不下发数据 */
let thisMonth = new Date().getMonth() + 1; let thisMonth = new Date().getMonth() + 1;
let tipsMonth = [1, 4, 7, 10]; let tipsMonth = [1, 4, 7, 10];
...@@ -65,22 +84,10 @@ async function enterpriseTask() { ...@@ -65,22 +84,10 @@ async function enterpriseTask() {
} }
export function initSMSTask() {
smsTask();
setInterval(async function () {
await smsTask();
}, 3600 * 1000);
console.log(`systemTask init success`);
}
/** /**
* 短信任务 每月倒数第七天发送 * 短信任务 每月倒数第七天发送
*/ */
export async function smsTask() { async function smsTask() {
let nowMs = new Date().valueOf(); let nowMs = new Date().valueOf();
let lastDate = moment(nowMs).endOf("month").format("YYYY-MM-DD"); let lastDate = moment(nowMs).endOf("month").format("YYYY-MM-DD");
let checkMs = moment(lastDate+' 00:00:00').subtract(7,'days').valueOf(); let checkMs = moment(lastDate+' 00:00:00').subtract(7,'days').valueOf();
...@@ -123,3 +130,11 @@ export async function smsTask() { ...@@ -123,3 +130,11 @@ export async function smsTask() {
} }
} }
async function fuHuaQiQuarterTask() {
const Key = getQuarterTimeKey();
let count = await findQuarterTaskCountByParam({key:Key});
if (count != 0) return;
await provideFuHuaQiQuarterTask();
}
\ No newline at end of file
...@@ -432,4 +432,20 @@ export const FuHuaQiReplenishEnterpriseBusinessDataConfig = { ...@@ -432,4 +432,20 @@ export const FuHuaQiReplenishEnterpriseBusinessDataConfig = {
BI:{type:"Number"},//营业收入 BI:{type:"Number"},//营业收入
RD:{type:"Number"},//研发投入 RD:{type:"Number"},//研发投入
TXP:{type:"Number"},//纳税 TXP:{type:"Number"},//纳税
}
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 孵化器补充经营数据
*/
export const FuHuaQiBusinessDataConfig = {
TR:{type:"Number"},//综合收入
ROR:{type:"Number"},//投资收入
RR:{type:"Number"},//租金收入
FS:{type:"Number"},//财政补贴
MIS:{type:"Number"},//其他
NP:{type:"Number"},//净利润
TP:{type:"Number"},//纳税
} }
\ No newline at end of file
...@@ -3,12 +3,20 @@ ...@@ -3,12 +3,20 @@
* 孵化器任务填报类型 * 孵化器任务填报类型
*/ */
export enum TASKTYPEENUM { export enum TASKTYPEENUM {
孵化器月度填报=1, 孵化器月度填报=1,//月度任务
融资企业填报, 融资企业填报,//月度任务
新注册或迁入企业登记 新注册或迁入企业登记//月度任务
} }
/** /**
* 季度任务填报类型
*/
export enum QUARTERTASKTYPEENUM {
孵化器经营状况 = 4,//季度任务
}
/**
* 孵化器级别 * 孵化器级别
*/ */
export enum FUHUAQILV { export enum FUHUAQILV {
......
...@@ -59,7 +59,12 @@ export enum ERRORENUM { ...@@ -59,7 +59,12 @@ export enum ERRORENUM {
重复通过填报数据, 重复通过填报数据,
请先选择是否拥有, 请先选择是否拥有,
请先关闭该资讯, 请先关闭该资讯,
请不要重复开启资讯 请不要重复开启资讯,
该孵化器经营数据填报已存在,
未填报数据不能删除,
已提交的数据不能进行操作,
请先填报数据,
该报表需要填写本季度内容后提交
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -429,3 +429,16 @@ export const BusinessDataUnauditedListConfig = { ...@@ -429,3 +429,16 @@ export const BusinessDataUnauditedListConfig = {
} }
/**
* 使用端: 小程序端【孵化器入口】
* 场景: 孵化器经营数据回显
*/
export const FuHuaQiBusinessDataInfoConfig = {
TR:{key:"综合收入"},
ROR:{key:"投资收入"},
RR:{key:"租金收入"},
FS:{key:"财政补贴"},
MIS:{key:"其他"},
NP:{key:"净利润"},
TP:{key:"纳税"},
}
\ No newline at end of file
...@@ -88,6 +88,7 @@ const enterpriseSchema = new Schema({ ...@@ -88,6 +88,7 @@ const enterpriseSchema = new Schema({
tipsQualification:{type:Boolean, default:false},//标识-企业资质 tipsQualification:{type:Boolean, default:false},//标识-企业资质
tipsIntellectualProperty:{type:Boolean, default:false},//标识-知识产权 tipsIntellectualProperty:{type:Boolean, default:false},//标识-知识产权
tipsFinancingInfo:{type:Boolean, default:false},//标识-企业融资 tipsFinancingInfo:{type:Boolean, default:false},//标识-企业融资
}); });
var enterpriseModel; var enterpriseModel;
......
...@@ -50,13 +50,6 @@ const fuHuaQiSchema = new Schema({ ...@@ -50,13 +50,6 @@ const fuHuaQiSchema = new Schema({
foundingTeamType:{type:Number, default:1},//创业团队类型 foundingTeamType:{type:Number, default:1},//创业团队类型
operationModel:{type:[Number], default:[]},//运营模式 operationModel:{type:[Number], default:[]},//运营模式
operationModelDes:String,//运营模式描述 operationModelDes:String,//运营模式描述
/**专业技术平台 */
isProfessionalTechnology:Boolean,//是否专业技术平台
professionalTechnologyName:String,//专业技术平台名称
professionalTechnologyCreateTime:Number,//时间 年份 xxxx年01月01日 的时间戳
professionalTechnologyAmount:Number,//投资金额 万元
isCooperation:{type:Boolean, default:false},//是否与第三方合作
cooperationInstitutions:{type:String, default:""},//合作机构名称
/** 累计孵化企业数量*/ /** 累计孵化企业数量*/
fuHuaEnterpriseTotal:{type:Number, default:0},//累计孵化企业数量 初始值 fuHuaEnterpriseTotal:{type:Number, default:0},//累计孵化企业数量 初始值
/**用户相关 */ /**用户相关 */
...@@ -71,6 +64,17 @@ const fuHuaQiSchema = new Schema({ ...@@ -71,6 +64,17 @@ const fuHuaQiSchema = new Schema({
bindId:{type:String},//绑定标识 bindId:{type:String},//绑定标识
/**2.3加入字段 */ /**2.3加入字段 */
introduction:{type:String, default:""},//孵化器简介 introduction:{type:String, default:""},//孵化器简介
/**3.1 创投基金相关*/
isCreatePTP:Boolean,//是否成立创投基金
scalePTP:Number,//基金规模
isParticipateInPTP:Boolean,//是否参与创投基金
/**专业技术平台 */
isProfessionalTechnology:Boolean,//是否专业技术平台
professionalTechnologyName:String,//专业技术平台名称
professionalTechnologyCreateTime:Number,//时间 年份 xxxx年01月01日 的时间戳
professionalTechnologyAmount:Number,//投资金额 万元
isCooperation:{type:Boolean, default:false},//是否与第三方合作
cooperationInstitutions:{type:String, default:""},//合作机构名称
}); });
var fuHuaQiModel; var fuHuaQiModel;
......
/**
* 国际化登记
*
*/
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
const i18nRegisterSchema = new Schema({
id:{type:String, index:true},//标识
uscc:{type:String, index:true},//孵化器uscc
name:{type:String, index:true},//运营机构名称
country:String,//国家
partners:String,//合作机构
cMode:String,//合作方式
cAchievements:String,//合作成果
});
var i18nRegisterModel;
export function initModel(){
i18nRegisterModel = baseDB.model('fuHuaQiI18nRegister', i18nRegisterSchema);
i18nRegisterModel.selectOnceData = async function (paramater:object) {
let selectInfo = await i18nRegisterModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
export async function findOneI18nRegister(id:string) {
return await i18nRegisterModel.selectOnceData({id});
}
export async function findI18nRegisterListByParam(param) {
return await i18nRegisterModel.find(param);
}
export async function deleteI18nRegisterListById(id:string) {
await i18nRegisterModel.deleteOne({id});
}
export async function addRegister(id:string, uscc:string, name:string, country:string, partners:string, cMode:string, cAchievements:string) {
let addInfo = {id, uscc, name, country, partners, cMode, cAchievements};
await i18nRegisterModel.create(addInfo);
}
...@@ -6,12 +6,16 @@ ...@@ -6,12 +6,16 @@
* 任务提交之后将不会出现在列表中 2023-02-06 确定此需求 * 任务提交之后将不会出现在列表中 2023-02-06 确定此需求
* 任务不能提交后不能修改和删除 2023-02-06 确定此需求 * 任务不能提交后不能修改和删除 2023-02-06 确定此需求
* type 依赖枚举 * type 依赖枚举
*
* 注释 1.key 的规则是 YYYYMM 年月为发放任务时的 年月
* 2.month为 数据的月份,例如 key = 20235 那 month = 4, 年份(year)同理
*
*/ */
import {Schema} from 'mongoose'; import {Schema} from 'mongoose';
import { baseDB } from '../../../db/mongo/dbInit'; import { baseDB } from '../../../db/mongo/dbInit';
const fuHuaQiTaskSchema = new Schema({ const fuHuaQiTaskSchema = new Schema({
key:{type:Number, index:true},//任务标识 格式为:YYYYMM key:{type:Number, index:true},//任务标识 格式为:YYYYMM
type: {type:Number,index:true},//任务类型 type: {type:Number,index:true},//任务类型
taskId:String,//任务id taskId:String,//任务id
fuHuaQiUscc:String,//任务所属孵化器id fuHuaQiUscc:String,//任务所属孵化器id
......
/**
* 孵化器经营数据填报
*
*/
import {Schema} from 'mongoose';
import { baseDB } from '../../../db/mongo/dbInit';
const fuHuaQiBusinessSchema = new Schema({
taskId:{type:String, index:true},//任务id
name:String,//任务名称
fuHuaQiUscc:String,//任务所属孵化器id
TR:{type:Number, default:0},//综合收入
ROR:{type:Number, default:0},//投资收入
RR:{type:Number, default:0},//租金收入
FS:{type:Number, default:0},//财政补贴
MIS:{type:Number, default:0},//其他
NP:{type:Number, default:0},//净利润
TP:{type:Number, default:0},//纳税
/**不下发字段 */
draftLock:{type:Boolean, default:false},//草稿锁,true为提交之后,false为草稿
quarter:{type:Number, index:true},//数据填报季度
year:{type:Number, index:true},//数据填报年份
isUpdate:{type:Boolean, default:false},
submitTime:Number,//提交时间
});
var fuHuaQiBusinessModel;
export function initModel(){
fuHuaQiBusinessModel = baseDB.model('fuHuaQiBusiness', fuHuaQiBusinessSchema);
fuHuaQiBusinessModel.selectOnceData = async function (paramater:object) {
let selectInfo = await fuHuaQiBusinessModel.findOne(paramater).exec();
if (selectInfo) {
if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save;
selectInfo.save = save.bind(selectInfo)
}
}
return selectInfo;
}
}
export async function save(throwError=false) {
if (!this.isModified()) return;
await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err);
});
}
/**
* 创建季度任务
* @param tableList 任务列表
*/
export async function createBusinessToList(tableList:object) {
await fuHuaQiBusinessModel.insertMany(tableList);
}
export async function findBusinessByTaskId(taskId:string) {
return await fuHuaQiBusinessModel.selectOnceData({taskId});
}
export async function findBusinessListByTaskIdAndUpdate(taskId:string, isUpdate:boolean) {
return await fuHuaQiBusinessModel.find({taskId, isUpdate});
}
\ No newline at end of file
/** /**
* 孵化器季度任务 * 孵化器季度任务
* * 标识 key格式为YYYY0quarter 其含义为任务生成时的年和季度
*/ */
import {Schema} from 'mongoose'; import {Schema} from 'mongoose';
import { baseDB } from '../../../db/mongo/dbInit'; import { baseDB } from '../../../db/mongo/dbInit';
const monthTableSchema = new Schema({ const quarterTaskSchema = new Schema({
key:{type:Number, index:true},//任务标识 格式为:YYYYMM key:{type:Number, index:true},//任务标识 格式为:YYYY0quarter 这里和月度任务做区分
type: {type:Number,index:true},//任务类型 type: {type:Number,index:true},//任务类型
taskId:String,//任务id taskId:String,//任务id
fuHuaQiUscc:String,//任务所属孵化器id fuHuaQiUscc:String,//任务所属孵化器id
...@@ -19,11 +19,11 @@ const monthTableSchema = new Schema({ ...@@ -19,11 +19,11 @@ const monthTableSchema = new Schema({
submitCount:{type:Number, default:0},//提交数量 默认0 submitCount:{type:Number, default:0},//提交数量 默认0
}); });
var monthTableModel; var quarterTaskModel;
export function initModel(){ export function initModel(){
monthTableModel = baseDB.model('monthTable', monthTableSchema); quarterTaskModel = baseDB.model('fuHuaQiQuarterTask', quarterTaskSchema);
monthTableModel.selectOnceData = async function (paramater:object) { quarterTaskModel.selectOnceData = async function (paramater:object) {
let selectInfo = await monthTableModel.findOne(paramater).exec(); let selectInfo = await quarterTaskModel.findOne(paramater).exec();
if (selectInfo) { if (selectInfo) {
if (!selectInfo.runSave) { if (!selectInfo.runSave) {
selectInfo.runSave = selectInfo.save; selectInfo.runSave = selectInfo.save;
...@@ -38,4 +38,34 @@ export async function save(throwError=false) { ...@@ -38,4 +38,34 @@ export async function save(throwError=false) {
await this.runSave({validateBeforeSave:false}).catch(err=>{ await this.runSave({validateBeforeSave:false}).catch(err=>{
console.log(err); console.log(err);
}); });
} }
\ No newline at end of file
export async function findQuarterTaskByParam(param) {
return await quarterTaskModel.find(param);
}
export async function findQuarterTaskByTaskIdAndType(taskId:string, type:number) {
return await quarterTaskModel.selectOnceData({taskId, type});
}
export async function findQuarterTaskMapTypeIsKeyByParam(taskId:string) {
let result = await quarterTaskModel.find({taskId});
let map = {};
result.forEach(info => {
map[info.type] = info;
});
return map;
}
export async function findQuarterTaskCountByParam(param) {
return await quarterTaskModel.find(param).count();
}
/**
* 创建季度任务
* @param tableList 任务列表
*/
export async function createQuarterTaskToList(tableList:object) {
await quarterTaskModel.insertMany(tableList);
}
...@@ -3,7 +3,10 @@ import * as fuhuaqiinModel from "../../data/fuHuaQi/fuhuaqi"; ...@@ -3,7 +3,10 @@ import * as fuhuaqiinModel from "../../data/fuHuaQi/fuhuaqi";
import * as enterpriseinModel from "../../data/enterprise/enterprise"; import * as enterpriseinModel from "../../data/enterprise/enterprise";
import * as financinginModel from "../../data/fuHuaQi/monthTask/financing"; import * as financinginModel from "../../data/fuHuaQi/monthTask/financing";
import * as monthTableModel from "../../data/fuHuaQi/monthTask/monthTable"; import * as monthTableModel from "../../data/fuHuaQi/monthTask/monthTable";
import * as guanweihuiModel from "../../data/guanWeiHui/guanweihui"; import * as fuHuaQiBusinessDataModel from "../../data/fuHuaQi/quarterTask/businessData";
import * as fuHuaQiQuarterTaskModel from "../../data/fuHuaQi/quarterTask/quarterTask";
import * as scoreModel from "../../data/fuHuaQi/score"; import * as scoreModel from "../../data/fuHuaQi/score";
import * as scoreLogModel from "../../data/fuHuaQi/scoreLog"; import * as scoreLogModel from "../../data/fuHuaQi/scoreLog";
import * as codeModel from "../../data/fuHuaQi/code"; import * as codeModel from "../../data/fuHuaQi/code";
...@@ -15,6 +18,9 @@ import * as replenishModel from "../../data/enterprise/replenish"; ...@@ -15,6 +18,9 @@ import * as replenishModel from "../../data/enterprise/replenish";
import * as teamModel from "../../data/enterprise/quarterTask/team"; import * as teamModel from "../../data/enterprise/quarterTask/team";
import * as initialTeamModel from "../../data/enterprise/initialTeam"; import * as initialTeamModel from "../../data/enterprise/initialTeam";
import * as guanweihuiModel from "../../data/guanWeiHui/guanweihui";
import * as informationModel from "../../data/guanWeiHui/information";
export async function initTable() { export async function initTable() {
taskinModel.initModel(); taskinModel.initModel();
...@@ -23,6 +29,7 @@ export async function initTable() { ...@@ -23,6 +29,7 @@ export async function initTable() {
financinginModel.initModel(); financinginModel.initModel();
monthTableModel.initModel(); monthTableModel.initModel();
guanweihuiModel.initModel(); guanweihuiModel.initModel();
informationModel.initModel();
scoreModel.initModel(); scoreModel.initModel();
scoreLogModel.initModel(); scoreLogModel.initModel();
codeModel.initModel(); codeModel.initModel();
...@@ -33,4 +40,6 @@ export async function initTable() { ...@@ -33,4 +40,6 @@ export async function initTable() {
teamModel.initModel(); teamModel.initModel();
replenishModel.initModel(); replenishModel.initModel();
initialTeamModel.initModel(); initialTeamModel.initModel();
fuHuaQiBusinessDataModel.initModel();
fuHuaQiQuarterTaskModel.initModel();
} }
\ No newline at end of file
import { initSMS } from "./biz/sms"; import { initSMS } from "./biz/sms";
import { initSystemTask, initSMSTask } from "./biz/systemTask"; import { initSystemTask } from "./biz/systemTask";
import { initConfig, systemConfig} from "./config/serverConfig"; import { initConfig, systemConfig} from "./config/serverConfig";
import { initDB } from "./db/mongo/dbInit"; import { initDB } from "./db/mongo/dbInit";
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
...@@ -16,8 +16,6 @@ async function lanuch() { ...@@ -16,8 +16,6 @@ async function lanuch() {
await initSystemTask(); await initSystemTask();
/**初始化腾讯云短信配置 */ /**初始化腾讯云短信配置 */
await initSMS(); await initSMS();
/**初始化短信任务 */
await initSMSTask();
/**创建http服务 */ /**创建http服务 */
httpServer.createServer(systemConfig.port); httpServer.createServer(systemConfig.port);
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as monthAdminBiz from '../../biz/admin/fuHuaQi/month'; import * as monthAdminBiz from '../../biz/admin/fuHuaQi/month';
import * as fuHuaQiAdminBiz from '../../biz/admin/fuHuaQi/fuHuaQi'; import * as fuHuaQiAdminBiz from '../../biz/admin/fuHuaQi/fuHuaQi';
import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task'; import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task/monthTask';
import * as provideBiz from '../../biz/admin/provide'; import * as provideBiz from '../../biz/admin/provide';
import { getTimeKey } from '../../tools/system'; import { getTimeKey } from '../../tools/system';
import { checkGuanWeiHuiToken, checkInterior } from '../../middleware/user'; import { checkGuanWeiHuiToken, checkInterior } from '../../middleware/user';
......
...@@ -82,7 +82,12 @@ async function infoInformation(req, res) { ...@@ -82,7 +82,12 @@ async function infoInformation(req, res) {
* @param res * @param res
*/ */
async function listInformation(req, res) { async function listInformation(req, res) {
let data = await informationBiz.selectInformation(); let reqConf = {
page:"Number", selectTitle:"String", createTime:"Number", state:"Number"
};
const NotMustHaveKeys = ["selectTitle", "createTime", "state"];
let { selectTitle, createTime, state, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let data = await informationBiz.selectInformation(selectTitle, createTime, state, page);
res.success(data); res.success(data);
} }
......
/**
* 小程序端 孵化器入口 经营数据报表功能路由
*/
import * as asyncHandler from 'express-async-handler';
import * as fuHuaQiBusinessBiz from '../../biz/mobileFuHuaQi/fuHuaQi/fuHuaQiBusiness';
import { eccReqParamater } from '../../util/verificationParam';
import { checkFuHuaQiToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/business/addreport', checkFuHuaQiToken, asyncHandler(addreportBusiness));
httpServer.post('/fuhuaqi/business/updatereport', checkFuHuaQiToken, asyncHandler(updatereportBusiness));
httpServer.post('/fuhuaqi/business/deletereport', checkFuHuaQiToken, asyncHandler(deletereportBusiness));
httpServer.post('/fuhuaqi/business/select', checkFuHuaQiToken, asyncHandler(selectBusiness));
}
/**
* 添加孵化器经营数据
* @param req
* @param res
*/
async function addreportBusiness(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let monthInfo = fuHuaQiBusinessBiz.createBusiness(Uscc, form);
res.success(monthInfo);
}
/**
* 修改孵化器经营数据
* @param req
* @param res
*/
async function updatereportBusiness(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let monthInfo = fuHuaQiBusinessBiz.updateBusiness(Uscc, form);
res.success(monthInfo);
}
/**
* 删除孵化器经营数据
* @param req
* @param res
*/
async function deletereportBusiness(req, res) {
const Uscc = req.headers.uscc;
let monthInfo = fuHuaQiBusinessBiz.deleteBusiness(Uscc);
res.success(monthInfo);
}
/**
* 回显 孵化器经营数据
* @param req
* @param res
*/
async function selectBusiness(req, res) {
const Uscc = req.headers.uscc;
let monthInfo = fuHuaQiBusinessBiz.selectBusiness(Uscc);
res.success(monthInfo);
}
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as baseBiz from '../../biz/mobileFuHuaQi/fuHuaQi/base'; import * as baseBiz from '../../biz/mobileFuHuaQi/fuHuaQi/base';
import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task'; import * as taskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task/monthTask';
import * as quarterTaskBiz from '../../biz/mobileFuHuaQi/fuHuaQi/task/quarterTask';
import * as scoreBiz from '../../biz/mobileFuHuaQi/fuHuaQi/score'; import * as scoreBiz from '../../biz/mobileFuHuaQi/fuHuaQi/score';
import { eccReqParamater } from '../../util/verificationParam'; import { eccReqParamater } from '../../util/verificationParam';
import { checkFuHuaQiToken } from '../../middleware/user'; import { checkFuHuaQiToken } from '../../middleware/user';
...@@ -23,7 +24,12 @@ export function setRouter(httpServer) { ...@@ -23,7 +24,12 @@ export function setRouter(httpServer) {
httpServer.post('/fuhuaqi/task/list', checkFuHuaQiToken, asyncHandler(taskList));//待办任务 httpServer.post('/fuhuaqi/task/list', checkFuHuaQiToken, asyncHandler(taskList));//待办任务
httpServer.post('/fuhuaqi/task/submit', checkFuHuaQiToken, asyncHandler(submitTask));//提交待办任务 httpServer.post('/fuhuaqi/task/submit', checkFuHuaQiToken, asyncHandler(submitTask));//提交待办任务
httpServer.post('/fuhuaqi/task/completedlist', checkFuHuaQiToken, asyncHandler(completedList));//已办任务 httpServer.post('/fuhuaqi/task/completedlist', checkFuHuaQiToken, asyncHandler(completedList));//已办任务
httpServer.post('/fuhuaqi/task/pastduelist', checkFuHuaQiToken, asyncHandler(pastDueList));//已办任务 httpServer.post('/fuhuaqi/task/pastduelist', checkFuHuaQiToken, asyncHandler(pastDueList));//过期任务
/** 周期任务 */
httpServer.post('/fuhuaqi/quartertask/list', checkFuHuaQiToken, asyncHandler(quarterTaskList));//待办任务
httpServer.post('/fuhuaqi/quartertask/submit', checkFuHuaQiToken, asyncHandler(submitQuarterTask));//提交待办任务
httpServer.post('/fuhuaqi/quartertask/completedlist', checkFuHuaQiToken, asyncHandler(quarterTaskCompletedList));//已办任务
httpServer.post('/fuhuaqi/quartertask/pastduelist', checkFuHuaQiToken, asyncHandler(quarterTaskPastDueList));//过期任务
/**分数 */ /**分数 */
httpServer.post('/fuhuaqi/score/ranklist', checkFuHuaQiToken, asyncHandler(scoreRankList)); httpServer.post('/fuhuaqi/score/ranklist', checkFuHuaQiToken, asyncHandler(scoreRankList));
httpServer.post('/fuhuaqi/score/log', checkFuHuaQiToken, asyncHandler(scoreLog)); httpServer.post('/fuhuaqi/score/log', checkFuHuaQiToken, asyncHandler(scoreLog));
...@@ -187,4 +193,71 @@ async function scoreRankList(req, res) { ...@@ -187,4 +193,71 @@ async function scoreRankList(req, res) {
const Uscc = req.headers.uscc; const Uscc = req.headers.uscc;
let result = await scoreBiz.rankList(Uscc); let result = await scoreBiz.rankList(Uscc);
res.success(result); res.success(result);
} }
\ No newline at end of file
/**
* 季度任务列表
* 3.1
* @param req
* @param res
*/
async function quarterTaskList(req, res) {
const Uscc = req.headers.uscc;
let taskListObj = await quarterTaskBiz.fuHuaQiQuarterTaskList(Uscc);
res.success(taskListObj);
}
/**
* 季度任务 提交任务
* 3.1
* @param req
* @param res
*/
async function submitQuarterTask(req, res) {
let reqConf = {taskType:'Number'};
let { taskType } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await quarterTaskBiz.checkTask(Uscc, taskType);
res.success(result);
}
/**
* 季度任务 已办任务
* 3.1
* @param req
* @param res
*/
async function quarterTaskCompletedList(req, res) {
let reqConf = {selectTime:'Number'};
let { selectTime } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await quarterTaskBiz.fuHuaQiQuarterCompletedTaskList(Uscc, selectTime);
res.success(result);
}
/**
* 季度任务 过期任务
* 3.1
* @param req
* @param res
*/
async function quarterTaskPastDueList(req, res) {
let reqConf = {selectTime:'Number'};
let { selectTime } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await quarterTaskBiz.fuHuaQiQuarterPastdueTaskList(Uscc, selectTime);
res.success(result);
}
/**
* 机构性质 主要逻辑
*/
import * as asyncHandler from 'express-async-handler';
import * as institutionalNatureBiz from '../../biz/mobileFuHuaQi/fuHuaQi/institutionalNature';
import { checkFuHuaQiToken } from '../../middleware/user';
import { eccReqParamater } from '../../util/verificationParam';
export function setRouter(httpServer) {
/** 任务 */
httpServer.post('/fuhuaqi/institutionalnature/i18n/add', checkFuHuaQiToken, asyncHandler(addRegister));
httpServer.post('/fuhuaqi/institutionalnature/i18n/update', checkFuHuaQiToken, asyncHandler(updateRegister));
httpServer.post('/fuhuaqi/institutionalnature/i18n/info', checkFuHuaQiToken, asyncHandler(infoRegister));
httpServer.post('/fuhuaqi/institutionalnature/i18n/list', checkFuHuaQiToken, asyncHandler(listRegister));
httpServer.post('/fuhuaqi/institutionalnature/i18n/delete', checkFuHuaQiToken, asyncHandler(deleteRegister));
/**创投基金 */
httpServer.post('/fuhuaqi/institutionalnature/ptp/info', checkFuHuaQiToken, asyncHandler(PTPInfo));
httpServer.post('/fuhuaqi/institutionalnature/ptp/update', checkFuHuaQiToken, asyncHandler(updatePTP));
/**技术专业平台 */
httpServer.post('/fuhuaqi/institutionalnature/professionaltechnology/info', checkFuHuaQiToken, asyncHandler(professionalTechnologyInfo));
httpServer.post('/fuhuaqi/institutionalnature/professionaltechnology/update', checkFuHuaQiToken, asyncHandler(updateProfessionalTechnology));
}
/**
* 创建 国际化登记
* @param req
* @param res
*/
async function addRegister(req, res) {
let reqConf = {country:"String", partners:"String", cMode:"String", cAchievements:"String"};
let { country, partners, cMode, cAchievements } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.createI18nRegister(Uscc, country, partners, cMode, cAchievements);
res.success(result);
}
/**
* 修改 国际化登记
* @param req
* @param res
*/
async function updateRegister(req, res) {
let reqConf = {id:"String", country:"String", partners:"String", cMode:"String", cAchievements:"String"};
let { country, partners, cMode, cAchievements, id } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.updateI18nRegister(Uscc, id, country, partners, cMode, cAchievements);
res.success(result);
}
/**
* 回显 国际化登记
* @param req
* @param res
*/
async function infoRegister(req, res) {
let reqConf = {id: 'String' };//这里可以填0
let { id } = eccReqParamater(reqConf, req.body);
let result = await institutionalNatureBiz.selectI18nRegisterInfo(id);
res.success(result);
}
/**
* 查询列表 国际化登记
* @param req
* @param res
*/
async function listRegister(req, res) {
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.i18nRegisterListData(Uscc);
res.success(result);
}
/**
* 删除 国际化登记
* @param req
* @param res
*/
async function deleteRegister(req, res) {
let reqConf = {id: 'String' };//这里可以填0
let { id } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.deleteI18nRegisterInfo(id);
res.success(result);
}
/**
* 回显 创投基金
* @param req
* @param res
*/
async function PTPInfo(req, res) {
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.getFuHuaQiPTP(Uscc);
res.success(result);
}
/**
* 修改 创投基金
* @param req
* @param res
*/
async function updatePTP(req, res) {
let reqConf = {isCreatePTP: 'Boolean', scalePTP:'Number', isParticipateInPTP:'Boolean' };//这里可以填0
let { isCreatePTP, scalePTP, isParticipateInPTP } = eccReqParamater(reqConf, req.body, ["scalePTP", "isParticipateInPTP"]);
if (isCreatePTP) eccReqParamater(reqConf, req.body, []);
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.updatePTPInfo(Uscc, isCreatePTP, scalePTP, isParticipateInPTP);
res.success(result);
}
/**
* 回显 技术专业平台
* @param req
* @param res
*/
async function professionalTechnologyInfo(req, res) {
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.getProfessionalTechnology(Uscc);
res.success(result);
}
/**
* 修改 技术专业平台
* @param req
* @param res
*/
async function updateProfessionalTechnology(req, res) {
let reqConf = {
isProfessionalTechnology:"Boolean", professionalTechnologyName:"String",
professionalTechnologyCreateTime:"Number", professionalTechnologyAmount:"Number", isCooperation:"Boolean", cooperationInstitutions:"String"
};
let skipList = ["professionalTechnologyName", "professionalTechnologyCreateTime", "professionalTechnologyAmount", "isCooperation", "cooperationInstitutions"];
let { isProfessionalTechnology, professionalTechnologyName, professionalTechnologyCreateTime, professionalTechnologyAmount, isCooperation, cooperationInstitutions} = eccReqParamater(reqConf, req.body, skipList);
if (isProfessionalTechnology) eccReqParamater(reqConf, req.body, []);
const Uscc = req.headers.uscc;
let result = await institutionalNatureBiz.updateProfessionalTechnology(Uscc, isProfessionalTechnology, professionalTechnologyName, professionalTechnologyCreateTime, professionalTechnologyAmount, isCooperation, cooperationInstitutions);
res.success(result);
}
...@@ -9,6 +9,8 @@ import * as mobileClientFinancingRouters from './mobileClient/financing'; ...@@ -9,6 +9,8 @@ import * as mobileClientFinancingRouters from './mobileClient/financing';
import * as mobileClientFuHuaQiRouters from './mobileClient/fuHuaQi'; import * as mobileClientFuHuaQiRouters from './mobileClient/fuHuaQi';
import * as mobileClientMonthRouters from './mobileClient/month'; import * as mobileClientMonthRouters from './mobileClient/month';
import * as mobileClientUserRouters from './mobileClient/user'; import * as mobileClientUserRouters from './mobileClient/user';
import * as mobileClientBusinessRouters from './mobileClient/business';
import * as institutionalNatureRouters from './mobileClient/institutionalNature';
import * as adminEnterpriseRouters from './admin/enterprise'; import * as adminEnterpriseRouters from './admin/enterprise';
import * as adminFuHuaQiRouters from './admin/fuHuaQi'; import * as adminFuHuaQiRouters from './admin/fuHuaQi';
...@@ -35,7 +37,9 @@ export function setRouter(httpServer){ ...@@ -35,7 +37,9 @@ export function setRouter(httpServer){
mobileClientFinancingRouters.setRouter(httpServer); mobileClientFinancingRouters.setRouter(httpServer);
mobileClientFuHuaQiRouters.setRouter(httpServer); mobileClientFuHuaQiRouters.setRouter(httpServer);
mobileClientMonthRouters.setRouter(httpServer); mobileClientMonthRouters.setRouter(httpServer);
mobileClientBusinessRouters.setRouter(httpServer);
mobileClientUserRouters.setRouter(httpServer); mobileClientUserRouters.setRouter(httpServer);
institutionalNatureRouters.setRouter(httpServer);
/**管理后台端 入口路由 */ /**管理后台端 入口路由 */
adminEnterpriseRouters.setRouter(httpServer); adminEnterpriseRouters.setRouter(httpServer);
adminFuHuaQiRouters.setRouter(httpServer); adminFuHuaQiRouters.setRouter(httpServer);
......
...@@ -20,6 +20,27 @@ export function getTaskId(uscc:string) { ...@@ -20,6 +20,27 @@ export function getTaskId(uscc:string) {
return `${uscc}${getTimeKey()}`; return `${uscc}${getTimeKey()}`;
} }
/**
* 生成季度任务id
* 自动获取上一个季度
* @param uscc 企业标识
* @returns
*/
export function getQuarterTaskId(uscc:string) {
let thisQuarter = moment().quarter();//当月填报季度
return `${uscc}${new Date().getFullYear()}0${thisQuarter}`;
}
export function getQuarterTimeKey() {
let thisQuarter = moment().quarter();//当月填报季度
return parseInt(`${new Date().getFullYear()}0${thisQuarter}`);
}
export function getQuarterTaskIdByTime(uscc:string, timeMs:number) {
return `${uscc}${new Date(timeMs).getFullYear()}${moment(timeMs).quarter() }`;
}
/** /**
* 根据时间生成任务id * 根据时间生成任务id
...@@ -170,7 +191,7 @@ export function getSMSCode() { ...@@ -170,7 +191,7 @@ export function getSMSCode() {
/** /**
* 获取融资id * 生成融资id
* @param uscc * @param uscc
* @returns * @returns
*/ */
...@@ -180,7 +201,7 @@ export function getFinancingId(uscc) { ...@@ -180,7 +201,7 @@ export function getFinancingId(uscc) {
/** /**
* 获取创始团队成员id * 生成创始团队成员id
* @param uscc * @param uscc
* @param name * @param name
* @returns * @returns
...@@ -189,6 +210,31 @@ export function getInitialTeamMemberId(uscc:string, name:string) { ...@@ -189,6 +210,31 @@ export function getInitialTeamMemberId(uscc:string, name:string) {
return md5(`${uscc}${name}${Math.ceil(Math.ceil(Math.random() * 1000000))}`); return md5(`${uscc}${name}${Math.ceil(Math.ceil(Math.random() * 1000000))}`);
} }
/**
* 生成 资讯id
* @returns
*/
export function getInformationId() { export function getInformationId() {
return md5(`${Math.ceil(Math.ceil(Math.random() * 1000000))}${new Date().valueOf() }${Math.ceil(Math.ceil(Math.random() * 1000000))}`); return md5(`${Math.ceil(Math.ceil(Math.random() * 1000000))}${new Date().valueOf() }${Math.ceil(Math.ceil(Math.random() * 1000000))}`);
}
/**
* 获取上一个季度 年和季度
* @returns declarationYear:数据填报年 declarationQuarter:数据填报季度
*/
export function getLastQuarter() {
let thisYear = new Date().getFullYear();
let thisQuarter = moment().quarter();//当月填报季度
if ( (thisQuarter - 1) < 1 ) {
thisYear = moment().subtract(1, 'years').year();
thisQuarter = 4;
} else thisQuarter = thisQuarter - 1;
return {year:thisYear, quarter:thisQuarter};
}
export function getI18nRegisterId(uscc:string) {
return md5(`${uscc}${new Date().valueOf() }${Math.ceil(Math.ceil(Math.random() * 1000000))}`);
} }
\ No newline at end of file
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