Commit ad2dbaef by 孙香冬

二期假数据版本

parent b6c0070f
/**
* 学校健康信息监测
*/
import { getChartOutData, getKeyStringValueOutData, getListOutData } from "../../cal/out";
import { getHealthData } from "../../data/interface/secondPhase/healthInformation";
import { getReflectionData } from "../out";
import * as defaultConf from "../../config/healthConfig";
export async function getData(req, res) {
let ret:any = {};
//学生数班级数, 不同年级上报学生数(按天), 不同年级上报学生数(按月), 不同学校上报学生数, 不同症状上报学生数, 不同行政区上报学生数, 数据统计, 今日上报列表
let {stuData, dayStuData, monthStuData, differentSchoolType, differentSchoolStuNum, defferentSymptomsTypeList, differentDistrictStuNum, dataStatistics, todayReportList} = await getHealthData();
ret["xssbjs"] = getKeyStringValueOutData("各年级健康上报情况总数", stuData);
ret["gnjjksbqsfx"] = getChartOutData("各年级健康上报趋势分析", {"日": {unit:"", dataInfo:dayStuData}, "月": {unit: "", dataInfo: monthStuData}});
ret["gxdlx"] = differentSchoolType;
ret["gxdzzrsqk"] = getKeyStringValueOutData("各学段症状人数情况", differentSchoolStuNum);
let glzzrsyjData = {};
for(let key in defferentSymptomsTypeList) {
glzzrsyjData[key] = { unit: "", dataInfo: defferentSymptomsTypeList[key]};
}
ret["glzzrsyj"] = getChartOutData("各类症状人数预警", glzzrsyjData);
let gfzzsjdData = defaultConf.HighSymptomTimeDefault;
ret["gfzzsjd"] = getChartOutData("高发症状时间段", {"高发症状时间段": {unit:"", dataInfo:gfzzsjdData}});
let dtjcsjData = getKeyStringValueOutData("地图基础数据", dataStatistics);
dtjcsjData["deadline"] = "03-26 12:23";
ret["dtjcsj"] = dtjcsjData;
let dtData = defaultConf.MapDataDefault;
ret["dt"] = getReflectionData("地图坐标数据", dtData, "");
ret["gg"] = defaultConf.NoticeDefault;
ret["jrsblb"] = getListOutData("今日上报列表", todayReportList);
// let qyjksbqkData = [
// {
// "key": "浦东",
// "value": 132,
// },
// {
// "key": "长宁",
// "value": 201,
// },
// {
// "key": "徐汇",
// "value": 137,
// },
// {
// "key": "闵行",
// "value": 189,
// },
// {
// "key": "静安",
// "value": 172,
// },
// {
// "key": "杨浦",
// "value": 127,
// }
// ]
// let xxjksbqkData = [
// {
// "key": "*****学校",
// "value": 132,
// },
// {
// "key": "***学校",
// "value": 201,
// },
// {
// "key": "*****学校",
// "value": 137,
// },
// {
// "key": "***学校",
// "value": 189,
// },
// {
// "key": "******学校",
// "value": 172,
// },
// {
// "key": "****学校",
// "value": 127,
// }
// ]
ret["jksbqk"] = getChartOutData("健康上报情况", {"区域": {unit:"", dataInfo:differentDistrictStuNum}, "学校": {unit:"", dataInfo:differentSchoolStuNum}});
let zzlxfxData = defaultConf.SymptomTypeAnalysisDefault;
ret["zzlxfx"] = getKeyStringValueOutData("症状类型分析", zzlxfxData);
let zzphData = defaultConf.SymptomTypeAnalysisDefault;
ret["zzph"] = getKeyStringValueOutData("症状排行", zzphData);
let lsjksjjkl = defaultConf.HealthRateDefault;
ret["lsjksjjkl"] = getKeyStringValueOutData("历史健康数据分析健康率", lsjksjjkl);
let healthRateType = ["幼儿园","托育机构","早教中心","托儿所","小学","初级中学","高级中学","中职校","完中","九年一贯制","十年一贯制","十二年一贯制","其他"];
let healthRateData = defaultConf.HistoricalHealthDataDefault
let lsjksjData = {};
for(let type = 0; type < healthRateType.length; type++) {
lsjksjData[healthRateType[type]] = {unit: "", dataInfo:healthRateData}
}
ret["lsjksj"] = getChartOutData("历史健康数据分析趋势", lsjksjData);
res.send(ret);
}
/**
* 上海市青少年科学创新实践工作站
*/
import { getChartOutData, getKeyNumberValueOutData, getKeyStringValueOutData, getListOutData, getStringOutData } from "../../cal/out";
import { getWorkstationData } from "../../data/interface/secondPhase/workstation";
import * as defaultConf from "../../config/workstationConfig";
export async function getData(req, res) {
let ret:any = {};
let {} = await getWorkstationData();
let zsqkData = defaultConf.EnrollmentSituationDefault;
ret["zsqk"] = getKeyStringValueOutData("招生情况", zsqkData);
let tjsData = defaultConf.RecommendedStuDefault;
let zjsData = defaultConf.SelfRecommendationStuDefault;
ret["lnzmxyqk"] = getChartOutData("历年招募学员情况", {"推荐生": {unit:"", dataInfo:tjsData}, "自荐生": {unit: "", dataInfo:zjsData}});
let xslyfbData = defaultConf.StuSourceDistributionDefault;
ret["xslyfb"] = getChartOutData("学生来源分布", {"学生来源分布": {unit: "", dataInfo:xslyfbData}});
let xshglData = defaultConf.StuPassRateDefault;
ret["xshgqkhgl"] = getKeyStringValueOutData("学生合格情况合格率", xshglData);
let xstcyyData = defaultConf.StuExitReasonDefault;
ret["xstcyy"] = getKeyStringValueOutData("学生退出原因", xstcyyData);
let xklsfbData = defaultConf.SubjectTeacherDistributionDefault;
ret["xklsfb"] = getKeyNumberValueOutData("学科老师分布", xklsfbData);
let lnxzgzgqkData = defaultConf.PreviousYearsAddWorkstationDefault;
let gzzlxfbData = defaultConf.WorkstationTypeDistributionDefault;
ret["gzzqk"] = getChartOutData("工作站情况", {"历年新增工作站情况": {unit:"", dataInfo:lnxzgzgqkData}, "工作站类型分布": {unit: "", dataInfo:gzzlxfbData}});
let dtjcsjData = defaultConf.WorkstationMapBaseDataDefalt;
ret["dtjcsj"] = getKeyStringValueOutData("地图基础数据", dtjcsjData);
let dtData = defaultConf.WorkstationMapDataDefault;
ret["dt"] = getKeyStringValueOutData("地图坐标数据", dtData);
let rmktphData = defaultConf.HotTopicRankingDefault;
ret["rmktph"] = getKeyStringValueOutData("热门课题排行", rmktphData);
let jnxzktData = defaultConf.YearNewTopicDefault;
ret["jnxzkt"] = getKeyStringValueOutData("今年新增课题", jnxzktData);
let jnxzktxxData = defaultConf.YearNewTopicChartDefault;
ret["jnxzktxx"] = getKeyStringValueOutData("今年新增课题环形图", jnxzktxxData);
let ktztData = defaultConf.TopicStateDefault;
ret["ktzt"] = getKeyStringValueOutData("课题状态", ktztData);
let ktqkData = defaultConf.TopicSituationDefault;
ret["ktqk"] = getListOutData("课题情况", ktqkData);
let rmktData = defaultConf.HotTopicDefault;
ret["rmkt"] = getListOutData("热门课题", rmktData);
let sjryzzData = defaultConf.HonoraryQualificationsMunicipalDefault;
ret["sjryzz"] = getStringOutData("市级荣誉资质", sjryzzData);
let qjryzzData = defaultConf.HonoraryQualificationsDistrictDefault;
ret["qjryzz"] = getStringOutData("区级荣誉资质", qjryzzData);
let xjryzzData = defaultConf.HonoraryQualificationsSchoolDefault;
ret["xjryzz"] = getStringOutData("校级荣誉资质", xjryzzData);
let yxxsData = defaultConf.OutstandingStuDefault;
ret["yxxs"] = getListOutData("优秀学生", yxxsData);
let xsqxhglData = defaultConf.StuQualificationRateDefault;
ret["xsqxhgl"] = getKeyStringValueOutData("学生去向合格率", xsqxhglData);
let sylData = defaultConf.DoubleFirstClassDefault;
let bkData = defaultConf.UndergraduateCourseDefault;
let qtData = defaultConf.OtherStuMovementDefault;
let xsqxData = {"双一流": {"unit":"", dataInfo:sylData}, "本科": {"unit":"", dataInfo:bkData}, "其他": {"unit":"", dataInfo:qtData}}
ret["xsqx"] = getChartOutData("学生去向", xsqxData);
let xscgData = defaultConf.StuOutcomesDefault;
ret["xscg"] = getListOutData("学生成果", xscgData);
res.send(ret);
}
/**
* 上海市青少年科学创新实践工作站
*/
import { getChartOutData, getKeyNumberValueOutData, getKeyStringValueOutData, getListOutData } from "../../cal/out";
import { getWorkstationPopupData } from "../../data/interface/secondPhase/workstationPopup";
import * as defaultConf from "../../config/workstationPopupConfig";
export async function getData(req, res) {
let id = req.query.id || "上海交通大学能源科技与未来城市实践工作站";
let ret:any = {};
let {招生情况} = await getWorkstationPopupData(id);
let jcsjData = defaultConf.baseDefault;
ret["jcsj"] = getKeyStringValueOutData("工作站弹窗基础数据", jcsjData);
let jcsjslData = defaultConf.baseNumDefault;
ret["jcsjsl"] = getKeyStringValueOutData("基础数据数量", jcsjslData);
let drkqfxData = defaultConf.DailyAttendanceAnalysisDefault;
ret["drkqfx"] = getKeyStringValueOutData("当日考勤分析", drkqfxData);
let cqlData = defaultConf.AttendanceDefault;
ret["cql"] = getKeyStringValueOutData("出勤率", cqlData);
let qqyyfxData = defaultConf.ReasonForAbsenceDefault;
ret["qqyyfx"] = getKeyStringValueOutData("缺勤原因分析", qqyyfxData);
let xxfsfxData = defaultConf.LearningStyleAnalysisDefault;
ret["xxfsfx"] = getKeyStringValueOutData("学习方式分析", xxfsfxData);
let xxxkjdData = defaultConf.StuCourseScheduleDefault;
ret["xsxkjd"] = getKeyNumberValueOutData("学生选课进度", xxxkjdData);
let lspfpmData = defaultConf.TeacherRatingRankingDefault;
ret["lspfpm"] = getKeyStringValueOutData("老师评分排名", lspfpmData);
let bqxxhgfxData = defaultConf.StuQualifiedAnalysisDefault;
ret["bqxxhgfx"] = getKeyStringValueOutData("本期学生合格分析", bqxxhgfxData);
let tcyyfxData = defaultConf.ReasonForExitDefault;
ret["tcyyfx"] = getChartOutData("退出原因分析", {"退出原因分析": {unit:"", dataInfo:tcyyfxData}});
let xsktyjjdData = defaultConf.StuTopicResearchProgressDefault;
ret["xsktyjjd"] = getKeyStringValueOutData("学生课题研究进度", xsktyjjdData);
let xssjktyjjdData = defaultConf.StuMunicipalTopicResearchProgressDefault;
ret["xssjktyjjd"] = getKeyStringValueOutData("学生市级课题研究进度", xssjktyjjdData);
let gzzcgData = defaultConf.WorkstationAchievementsDefault;
ret["gzzcg"] = getListOutData("工作站成果", gzzcgData);
res.send(ret);
}
\ No newline at end of file
/**
* --------------------------实践工作站弹窗-----------------------------
*/
/**
* 基础数据
* url: 暂无接口数据
*/
export const baseDefault = {
"名称": "华东师范大学计算机与技术实践工作站",
"地址": "普陀区中山北路3663号",
"学科": "计算机",
"所辖实践点": ["华东理工大学附属闵行科技高级中学", "上海市建青实验学校", "上海交通大学附属中学浦东实验高中", "上海市复旦中学"]
};
/**
* 基础数据数量
* url: 暂无接口数据
*/
export const baseNumDefault = {
"老师数量": "12",
"学生数量": "102",
"课题数量": "27"
};
/**
* 当日考勤分析
* url: 暂无接口数据
*/
export const DailyAttendanceAnalysisDefault = {
"应到人数": "1253",
"实到人数": "1241",
"缺勤人数": "12"
};
/**
* 出勤率
* url: 暂无接口数据
*/
export const AttendanceDefault = {
"出勤率": "97.53%"
};
/**
* 缺勤原因分析
* url: 暂无接口数据
*/
export const ReasonForAbsenceDefault = {
"病假": "2",
"事假": "5",
"调休": "7",
"其他": "3"
};
/**
* 学习方式分析
* url: 暂无接口数据
*/
export const LearningStyleAnalysisDefault = {
"问卷调查法": "80",
"访谈": "37",
"个案研究": "67",
"实验法": "71",
"观察法": "80"
};
/**
* 学生选课进度
* url: 暂无接口数据
*/
export const StuCourseScheduleDefault = {
"未选课程学生数": "24人",
"已选课程学生数": "1217人"
};
/**
* 老师评分排名
* 评分:从高到低排序
* url: 暂无接口数据
*/
export const TeacherRatingRankingDefault = {
"李老师": "98",
"张老师": "92",
"黄老师": "89",
"宋老师": "84",
"刘老师": "79"
};
/**
* 本期学生合格分析
* url: 暂无接口数据
*/
export const StuQualifiedAnalysisDefault = {
"合格人数": "258",
"实际合格人数": "224",
"未合格人数": "34"
};
/**
* 退出原因分析
* url: 暂无接口数据
*/
export const ReasonForExitDefault = [
{
key: "原因1",
value: "124"
},
{
key: "原因2",
value: "103"
},
{
key: "原因3",
value: "171"
},
{
key: "原因4",
value: "119"
},
{
key: "原因5",
value: "92"
},
{
key: "原因6",
value: "135"
}
];
/**
* 学生课题研究进度
* url: 暂无接口数据
*/
export const StuTopicResearchProgressDefault = {
"李老师": "98",
"张老师": "92",
"黄老师": "89",
"宋老师": "84",
"刘老师": "79"
};
/**
* 学生市级课题研究进度
* url: 暂无接口数据
*/
export const StuMunicipalTopicResearchProgressDefault = {
"李老师": "98",
"张老师": "92",
"黄老师": "89",
"宋老师": "84",
"刘老师": "79"
};
/**
* 工作站成果
* url: 暂无接口数据
*/
export const WorkstationAchievementsDefault = [
{
"key": "名称",
"values": ["关于计算机与人工智能的联系研究", "计算机在生活和科研中的应用", "计算机的二进制", "通过计算机看世界"]
},
{
"key": "时间",
"values": ["2023-06-26", "2023-06-26", "2023-06-27", "2023-06-28"]
}
]
import { BizError } from "../../../util/bizError";
import { post, postForm } from "../../../util/request";
import { getSecondPhaseUrl, getUrl, healthEnum, urlEnum } from "../url";
import * as defaultConf from "../../../config/healthConfig"
import { healthConfig } from "../../../serverConfig";
const md5 = require("md5");
async function getBody(apiId) {
let body = {
apiId:"1342551525711858104",
appKey:"200000085",
env: "PROD",
pageNum:1, //分页页数
pageSize:100, //每页大小
execType:"2", //固定值
conditions:{}, //where查询条件
returnFields: [],
reqProtocol: "1"
};
let token = "df399738-1572-4c45-bdf3-c2d2c428fa62";
let sign = md5(`${body.apiId}&${body.appKey}&${token}`);
body["sign"] = sign;
let headers = {
'apiId': '1342551525711858104',
'appKey': '200000085',
'account': 'yujc',
'execType': '3',
'env': 'PROD',
'sign': sign,
'accept': 'application/json;charset=utf-8',
'Content-Type': 'application/json'
}
return {body, headers};
}
//学校健康信息监测
export async function getHealthData() {
let {body, headers} = await getBody(healthEnum.学生数班级数);
// let stuDataSource:any = await post(getSecondPhaseUrl(healthEnum.学生数班级数), body, headers);
let stuDataSource:any = defaultConf.StuDataDefault;
let stuData = {};
stuDataSource.forEach( item => {
let {mc, sl} = item;
if (mc == "xss") {
stuData["学生数"] = sl;
} else if (mc == "bjs") {
stuData["班级数"] = sl;
}
})
//日 昨天15点到今天15点
let 年级 = ["托小班", "小班", "中班", "大班", "一年级", "二年级", "三年级", "四年级", "五年级", "六年级", "七年级", "八年级", "九年级", "高一", "高二", "高三", "中职21级", "中职22级", "社会", "特教", "高预"]
//await post(getUrl(healthEnum.不同年级上报学生数按日), body, {})
let dayStuDataSource:any = defaultConf.DayStuDataDefault;
let dayStuData = [];
dayStuDataSource.forEach( item => {
let {njmc, xss} = item;
dayStuData.push({key:njmc, value:xss});
})
//月 近一个月数据
//await post(getUrl(healthEnum.不同年级上报学生数按月), body, {})
let monthStuDataSource:any = defaultConf.MonthStuDataDefault;
let monthStuData = [];
monthStuDataSource.forEach( item => {
let {njmc, xss} = item;
monthStuData.push({key:njmc, value:xss});
})
//参数:xxlx:"九年一贯制"
let differentSchoolType = ["幼儿园","托育机构","早教中心","托儿所","小学","初级中学","高级中学","中职校","完中","九年一贯制","十年一贯制","十二年一贯制","其他"];
//let differentSchoolStuNumSource:any = await post(getUrl(healthEnum.不同学校上报学生数), body, {})
let differentSchoolStuNum = {};
for(let type = 0; type < differentSchoolType.length; type++) {
body["conditions"] = {"xxlx": differentSchoolType[type]};
// let differentSchoolStuNumSource:any = await post(getUrl(healthEnum.不同学校上报学生数), body, {})
let differentSchoolStuNumSource:any = defaultConf.DifferentSchoolStuNumDefault;
differentSchoolStuNum[differentSchoolType[type]] = differentSchoolStuNumSource;
}
// let differentSchoolStuNum = {};
// differentSchoolStuNumSource.forEach( item => {
// let {xqmc, xss} = item;
// differentSchoolStuNum[xqmc] = xss;
// })
//参数:name:"发热"
//await post(getUrl(healthEnum.不同症状上报学生数), body, {})
let defferentSymptomsType = ["上呼吸道症状", "发热", "常见疾病", "消化道症状", "神经系统症状"];
let defferentSymptomsTypeList = {};
for (let type = 0; type < defferentSymptomsType.length; type++) {
body["conditions"] = {"name": defferentSymptomsType[type]};
// let defferentSymptomsStuNumSource:any = await post(getUrl(healthEnum.不同症状上报学生数), body, {});
let defferentSymptomsStuNumSource:any = defaultConf.DefferentSymptomsStuNumDefault;
if (!defferentSymptomsTypeList[defferentSymptomsType[type]]) defferentSymptomsTypeList[defferentSymptomsType[type]] = [];
defferentSymptomsStuNumSource.forEach( item => {
let {xss, sj} = item;
defferentSymptomsTypeList[defferentSymptomsType[type]].push({key: sj, value: xss});
})
// defferentSymptomsTypeList[defferentSymptomsType[type]] = defferentSymptomsStuNumSource;
}
//await post(getUrl(healthEnum.不同行政区上报学生数), body, {})
let differentDistrictStuNumSource:any = defaultConf.DifferentDistrictStuNumDefault;
let differentDistrictStuNum = [];
differentDistrictStuNumSource.forEach( item => {
let {xss, xzq} = item;
differentDistrictStuNum.push({key: xzq, value: xss});
})
//await post(getUrl(healthEnum.数据统计), body, {})
let dataStatisticsSource:any = defaultConf.DataStatisticsDefault;
let {sbs, ycrs, jhl} = dataStatisticsSource[0];
let dataStatistics = {"实时交换量": jhl, "今日上报数": sbs, "异常人数": ycrs};
//await post(getUrl(healthEnum.今日上报列表), body, {})
let todayReportListSource:any = defaultConf.TodayReportListDefault;
let bjmcList = [];
let yyList = [];
let sbsjList = [];
let xmList = [];
let xzqList = [];
let xxmcList = [];
todayReportListSource.forEach( item => {
let {bjmc, yy, sbsj, xm, xzq, xxmc} = item;
bjmcList.push(bjmc);
yyList.push(yy);
sbsjList.push(sbsj);
xmList.push(xm);
xzqList.push(xzq);
xxmcList.push(xxmc);
})
let todayReportList = [
{key: "姓名", values: xmList},
{key: "上报时间", values: sbsjList},
{key: "所在区", values: xzqList},
{key: "学校", values: xxmcList},
{key: "班级", values: bjmcList},
{key: "原因", values: yyList},
];
return {stuData, dayStuData, monthStuData, differentSchoolType, differentSchoolStuNum, defferentSymptomsTypeList, differentDistrictStuNum, dataStatistics, todayReportList};
}
import { getUrl, workstationEnum } from "../url";
//上海市青少年科学创新实践工作站
export async function getWorkstationData() {
let body = {};
// let zsqk = await post(getUrl(healthEnum.招生情况), body, {});
let 招生情况 = [{mc:"学生数量", sl:"6214"},{mc:"bjs", sl:"3671"}]
return {招生情况};
}
\ No newline at end of file
import { getUrl, workstationEnum } from "../url";
//上海市青少年科学创新实践工作站
export async function getWorkstationPopupData(id) {
let body = {};
// let zsqk = await post(getUrl(healthEnum.招生情况), body, {});
let 招生情况 = [{mc:"学生数量", sl:"6214"},{mc:"bjs", sl:"3671"}]
return {招生情况};
}
\ No newline at end of file
import { requestConfig } from "../../serverConfig";
import { requestConfig, healthConfig } from "../../serverConfig";
export enum urlEnum {
获取token = "/oauth/token",
......@@ -29,6 +29,27 @@ export enum urlEnum {
};
export enum healthEnum {
学生数班级数="1342551525711858104",
不同年级上报学生数按日="1342555266359937472",
不同年级上报学生数按月="1346636836747266576",
不同学校上报学生数="1342556870501910984",
不同症状上报学生数="1342803642723781086",
不同行政区上报学生数="1342804920948410855",
数据统计="1342805548139465199",
今日上报列表="1342805887678859772",
}
export enum workstationEnum {
}
export function getUrl(urlName) {
return `${requestConfig.url}${urlName}`
}
\ No newline at end of file
}
export function getSecondPhaseUrl(urlName) {
return `${healthConfig.url}${urlName}`
}
\ No newline at end of file
......@@ -5,6 +5,11 @@ import * as zyhdbzBiz from '../biz/zyhdbz';
import * as userBiz from '../biz/user';
import { adminPermission, checkToken, pagePermission } from '../middleware/sign';
//二期
import * as healthBiz from '../biz/secondPhase/healthInformation';
import * as workstationBiz from '../biz/secondPhase/workstation';
import * as workstationPopupBiz from '../biz/secondPhase/workstationPopup';
export function setRouter(httpServer){
httpServer.get('/sjzltx', asyncHandler(sjzltxBiz.getData));
httpServer.post('/sjzltx', asyncHandler(sjzltxBiz.getData));
......@@ -28,4 +33,13 @@ export function setRouter(httpServer){
httpServer.post('/permission/checkadmin', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
httpServer.post('/permission/checkhomepage', checkToken, asyncHandler(userBiz.checkPermissionForHomePage) );
//二期
httpServer.get('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
httpServer.get('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
httpServer.get('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
httpServer.post('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
httpServer.post('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
httpServer.post('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
}
\ 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