刘东阳 3 months ago
parent 8f9f05b4ed
commit 931aa577d3

@ -0,0 +1 @@
[{"lx":"单选题","uuid":"e6d957c8-7d7b-4df1-999f-7959e776317a","xuexiang":[{"lx":"wb","wb":"选项A 正确","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d"},{"lx":"wb","wb":"选项B","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d"}],"tm":{"lx":"pic","pic":"http://localhost:89/e6d957c8-7d7b-4df1-999f-7959e776317a/askforteakcb.png","wb":"test"},"daan":"A"},{"lx":"多选题","uuid":"9bc5fe7b-9d41-42ff-8e3d-a37154e2fad1","xuexiang":[{"lx":"wb","wb":"选项A 正确","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d"},{"lx":"wb","wb":"选项B 正确","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d"},{"lx":"wb","wb":"选项C","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d"}],"tm":{"lx":"pic","pic":"http://localhost:89/9bc5fe7b-9d41-42ff-8e3d-a37154e2fad1/askforteakcb.png","wb":""},"daan":["A","B"]},{"lx":"填空题","uuid":"1b100b1b-ebaa-469c-bd2d-3227760cb32f","xuexiang":[],"tm":{"lx":"wb","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d","wb":"填空题 答案为TEST"},"sr":"TEST"},{"lx":"填空题","uuid":"91e4ffa9-21e2-47f0-9480-6c0d6ffc41dc","xuexiang":[],"tm":{"lx":"wb","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d","wb":"填空题 由老师判"},"sr":"pick up me 满分"},{"lx":"简答题","uuid":"8f577885-a8a4-43cf-94d4-b3a50828275a","xuexiang":[],"tm":{"lx":"wb","pic":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fddd83bc0-4c41-482a-8888-083d09096ae9%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1739691239&t=f2f6f3c92693182304a737e6faf0e97d","wb":"简答题 老师判"},"filelist":[{"url":"8f577885-a8a4-43cf-94d4-b3a50828275a202413501062/0ab5b8c5-1cdb-4531-b178-cc6ba74737e1.png","file":"a8.png"}]}]

@ -0,0 +1,124 @@
const fs = require('fs');
const path = require('path');
const uuidv4 = require('uuid');
var q = require('qiao-zip');
const os = require("os");
/*
name:biao[j][nameid],
xuehao:biao[j][xuehaoid],
sex:biao[j][sex],
classid:biao[j][classid],
xueyuan:biao[j][xueyaunid],
idcard:biao[j][idcardid],
ruxuetime:ruxue,
iphone:biao[j][iphone],
parentphone:biao[j][parentphone],
parentname:biao[j][parentname],
*/
function nametop(){
}
async function makeExcel(exceljson) {
let wblist=[]//excel文本列表
wblist.push("姓名");
wblist.push("学号")
wblist.push("性别")
wblist.push("专业");
wblist.push("学院")
wblist.push("身份证号")
wblist.push("入学时间")
wblist.push("手机号")
wblist.push("默认密码")
let listexcel=""
//console.log(exceljson);
exceljson.map((value,index) => {
let nameindex = wblist.indexOf(value.name);
if (nameindex == -1) {
wblist.push(value.name);
nameindex = wblist.indexOf(value.name);
}
let namexml = `<c r="A${index + 2}" t="s"><v>${nameindex}</v></c> `;
let xuehaoindex
= wblist.indexOf(value.xuehao);
if (xuehaoindex === -1) {
wblist.push(value.xuehao);
xuehaoindex = wblist.indexOf(value.xuehao);
}
let xuehaoxml = `<c r="B${index + 2}" t="s"><v>${xuehaoindex}</v></c> `
let sexindex = wblist.indexOf(value.sex);
if (sexindex === -1) {
wblist.push(value.sex)
sexindex = wblist.indexOf(value.sex)
}
let sexxml = `<c r="C${index + 2}" t="s"><v>${sexindex}</v></c>`
let classindex = wblist.indexOf(value.classid);
if (classindex === -1) {
wblist.push(value.classid);
classindex = wblist.indexOf(value.classid);
}
let classxml = `<c r="D${index + 2}" t="s"><v>${classindex}</v></c>`
let xueyuanindex = wblist.indexOf(value.xueyuan);
if (xueyuanindex === -1) {
wblist.push(value.xueyuan);
xueyuanindex = wblist.indexOf(value.xueyuan);
}
let xueyuanxml = `<c r="E${index + 2}" t="s"><v>${xueyuanindex}</v></c>`
let idcardindex = wblist.indexOf(value.idcard);
if (idcardindex === -1) {
wblist.push(value.idcard);
idcardindex = wblist.indexOf(value.idcard);
}
let idcardxml = `<c r="F${index + 2}" t="s"><v>${idcardindex}</v></c>`
let ruxuetimeindex = wblist.indexOf(value.ruxuetime);
if (ruxuetimeindex === -1) {
wblist.push(value.ruxuetime);
ruxuetimeindex = wblist.indexOf(value.ruxuetime);
}
let ruxuetimexml = `<c r="G${index + 2}" t="s"><v>${ruxuetimeindex}</v></c>`
let iphoneindex = wblist.indexOf(value.iphone);
if (iphoneindex === -1) {
wblist.push(value.iphone);
iphoneindex = wblist.indexOf(value.iphone);
}
let iphonexml = `<c r="H${index + 2}" t="s"><v>${iphoneindex}</v></c>`
let passwordindex = wblist.indexOf(value.password);
console.log(value.password)
if (passwordindex === -1) {
wblist.push(value.password);
passwordindex = wblist.indexOf(value.password);
}
let passwordxml = `<c r="I${index + 2}" t="s"><v>${passwordindex}</v></c>`
const xmlall=namexml+xuehaoxml+sexxml+classxml+xueyuanxml+idcardxml+ruxuetimexml+iphonexml+passwordxml;
const row=`<row r = "${index+2}" spans = "1:9" >${xmlall}</row> `
listexcel+=row;
})
let moban=fs.readFileSync("sheet2.xml","utf8")
let shuzu= moban.split("shuliang");
moban=shuzu[0]+`I${exceljson.length+1}`+shuzu[1];
shuzu=moban.split("charuwengjian");
moban=shuzu[0]+listexcel+shuzu[1];
let stringlist="";
wblist.map((value,index)=>{
const wbxml=`<si><t>${value}</t></si>`
stringlist+=wbxml;
})
let wbxml=fs.readFileSync("sharedStrings.xml","utf8")
let wbshuzu=wbxml.split("wblist");
wbxml=wbshuzu[0]+stringlist+wbshuzu[1];
const cacheDir = path.join(os.homedir(), '.cache');
const filedir=cacheDir+'\\learn\\'+uuidv4.v4();
console.log(filedir)
fs.mkdirSync(filedir);
await q.unzip("scexcelstu.zip", filedir)
fs.writeFileSync(`${filedir}\\xl\\sharedStrings.xml`,wbxml)
fs.writeFileSync(`${filedir}\\xl\\worksheets\\sheet1.xml`,moban)
const uuidv41=uuidv4.v4();
const dir=`C:\\Users\\l\\WebstormProjects\\examp\\serve\\nginx\\html\\stuexcel\\${uuidv41}.zip`;
await q.zip(filedir, dir,false)
fs.copyFileSync(dir,`C:\\Users\\l\\WebstormProjects\\examp\\serve\\nginx\\html\\stuexcel\\${uuidv41}.xlsx`)
return(`http://localhost:89/stuexcel/${uuidv41}.xlsx`);
}
exports.makeExcel=makeExcel;

@ -0,0 +1,59 @@
const uuidv4 = require('uuid');
const express = require('express');
const multer = require('multer');
const cors = require('cors');
const app = express();
const fs = require('fs');
const zlib = require('zlib');
const tar = require('tar');
const axios = require('axios');
const { promisify } = require('util');
const {exec} = require('child_process');
const moment=require('moment');
var mysql = require('mysql');
var q = require('qiao-zip');
const { basename, join, extname} = require("node:path");
const {c, r} = require("tar");
const {response} = require("express");
const {homedir} = require("node:os");
const readline = require("node:readline");
const crypto = require('crypto');
const makeexcel=require('./makeexcel')
const speakeasy = require('speakeasy');
const server=require('http').Server(app);
const io=require('socket.io')(server,{
pingInterval: 10000,
pingTimeout: 5000,
allowEIO3: true, // 如果你使用的是 Socket.io 3.x 或更高版本
cors: {
origin: "http://localhost:3000",
methods: ["GET", "POST"]
},
serveClient: false,
maxHttpBufferSize: 1e9, // 10 MB
perMessageDeflate: {
threshold: 1024
}
});
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '416416',
database : 'neigongda'
});
connection.connect();
app.use(cors({
origin: ['http://localhost:3000','http://localhost:89'],
}));
app.use(express.urlencoded({extended: false})); // 现在就方便多了express的两个方法一执行就行啦
app.use(express.json({limit: '100mb', extended: true}));
const port = process.env.PORT || 3400;
app.get('/api/test',(req,res)=>{
res.send("test");
})
server.listen(3500);

@ -0,0 +1,33 @@
{
"name": "serve",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"private": true,
"dependencies": {
"@napi-rs/canvas": "^0.1.70",
"archiver": "^7.0.1",
"axios": "^1.7.9",
"cors": "^2.8.5",
"express": "^4.21.1",
"http": "^0.0.1-security",
"lz-string": "^1.5.0",
"moment": "^2.30.1",
"multer": "^1.4.5-lts.1",
"mysql": "^2.18.1",
"node-xlsx": "^0.24.0",
"nodemon": "^3.1.9",
"pdfjs-dist": "^3.10.111",
"qiao-zip": "^4.7.4",
"qrcode": "^1.5.4",
"socket.io": "^4.8.1",
"speakeasy": "^2.0.0",
"tar": "^7.4.3",
"uuid": "^11.0.3",
"xlsx": "^0.18.5",
"xml2js": "^0.6.2"
}
}

@ -0,0 +1,140 @@
async function panduanyuejuan(){
const sqlstd="SELECT * FROM kaoshipaper WHERE uuid=?";
const resultstd=await new Promise((resolve, reject) => {
connection.query(sqlstd,[req.query.ksh],(error, results, fields) => {
if(error)throw error;
resolve(results[0]);
})
})
if(JSON.parse(resultstd.xx).pan_jue_finsih===false) {
const sql = "SELECT * FROM kaoshiend WHERE ks=?";
const resultksdaan = await new Promise((resolve, reject) => {
connection.query(sql, [parseInt(req.query.ksh)], (error, results, fields) => {
if (error) throw error;
resolve(results);
})
})
let finish = true;
for (let i = 0; i < resultksdaan.length; i++) {
const ksdaan = JSON.parse(resultksdaan[i].ksdaan);
ksdaan.map((value, index) => {
if (value.lx === "填空题") {
console.log(resultstd)
const stddaan = JSON.parse(resultstd.std);
if (stddaan[i].panjaun === "teacher") {
if (value.teacherid === undefined) {
finish = false
}
}
}
if (value.lx === "简答题") {
if (value.teacherid === undefined) {
finish = false
}
}
})
}
if(finish===true){
let jsonxx=JSON.parse(resultstd.xx);
jsonxx.pan_jue_finsih=true
const sqlupdate = 'UPDATE kaoshipaper SET xx=? WHERE `uuid`=?';
const up = await new Promise((resolve, reject) => {
connection.query(sqlupdate, [JSON.stringify(jsonxx, null, 4), req.query.ksh], (error, results, fields) => {
if (error) throw error;
resolve(results);
})
})
}
let infor=[]
let allprint=[]
if(finish===true){
for (let i = 0; i < resultksdaan.length; i++) {
const ksdaan = JSON.parse(resultksdaan[i].ksdaan);
let num=0;
let ksdaantemp=[...ksdaan]
ksdaan.map((value, index) => {
if (value.lx === "填空题") {
console.log(resultstd)
const stddaan = JSON.parse(resultstd.std);
if (stddaan[index].panjaun === "teacher") {
num=num+value.teacherprint
ksdaantemp[index].way="teacher"
ksdaantemp[index].printstu=value.teacherprint
}else{
if(value.sr.trimStart()===stddaan[index].std.trimStart()){
num=num+stddaan[index].print
ksdaantemp[index].way="computer"
ksdaantemp[index].printstu=stddaan[index].print
}
}
}
else if (value.lx === "简答题") {
const stddaan = JSON.parse(resultstd.std);
num=num+value.teacherprint
//ksdaantemp[index].way="teacher"
ksdaantemp[index].printstu=value.teacherprint
}else if(value.lx==="多选题"){
let zq=true
const stddaan = JSON.parse(resultstd.std);
value.daan.map((item,xuaho)=>{
if(!stddaan[index].std.includes(item)){}
zq=false
})
if(value.daan.length!==stddaan[index].std.length){
zq=false
}
if(zq){
num=num+stddaan[index].print
//ksdaantemp[index].way="teacher"
ksdaantemp[index].printstu=stddaan[index].print
}else{
ksdaantemp[index].printstu=0
}
}else if(value.lx==="单选题"){
const stddaan = JSON.parse(resultstd.std);
if(value.daan===stddaan[index].std){
num=num+stddaan[index].print
//ksdaantemp[index].way="teacher"
ksdaantemp[index].printstu=stddaan[index].print
}else{
ksdaantemp[index].printstu=0
num=num+0
}
}else if(value.lx==="判断题"){
const stddaan = JSON.parse(resultstd.std);
if(value.daan===stddaan[index].std){
num=num+stddaan[index].print
//ksdaantemp[index].way="teacher"
ksdaantemp[index].printstu=stddaan[index].print
}else{
ksdaantemp[index].printstu=0
}
}
})
const sqlupdate = 'UPDATE kaoshiend SET ksdaan=?,allprint=? WHERE id=?';
//resultksdaan[i].
await new Promise((resolve, reject) => {
connection.query(sqlupdate,[JSON.stringify(ksdaantemp,null,4),num,resultksdaan[i].id],(error, results) => {
if (error) throw error;
resolve(results);
})
})
allprint.push(num)
infor.push({infor:ksdaantemp,num:num})
}
}
res.send({finish: finishr})
}else{
res.send({finish: true})
}
}

@ -0,0 +1,165 @@
const xml2js = require('xml2js');
const parser = new xml2js.Parser();
const fs = require('fs');
const moment = require('moment');
const os = require('os');
const path = require('path');
var q = require('qiao-zip');
const uuidv4 = require('uuid');
const sheetlist=async(xlsx)=>{
const cacheDir = path.join(os.homedir(), '.cache');
const filedir=cacheDir+'\\learn\\'+uuidv4.v4();
fs.mkdirSync(filedir);
await q.unzip(xlsx, filedir)
const xmlwb=fs.readFileSync(filedir+"/[Content_Types].xml",'utf8');
const wbresult=await new Promise((resolve,reject)=>{
parser.parseString(xmlwb, (err, result) => {
if (err) {
console.error(err);
throw err;
}
resolve(result);
});
})
//console.log(wbresult);
let slist=[];
let wblist=await wblsit(filedir+"/xl/sharedStrings.xml")
wbresult.Types.Override.map((value,index)=>{
//console.log(value);
if(value['$'].ContentType==="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"){
slist.push(value['$'].PartName);
}
})
let chengji=[];
//console.log(slist);
let chengname=[];
for(let i=0;i<slist.length;i++){
const biao=await wjb(filedir+slist[i],wblist);
//
let xiangnum=-1;//姓名项在第几列
for(let j=0;j<biao.length;j++){
if(biao[j].includes("姓名")){
xiangnum=j;
break;
}
}
let nameid=biao[xiangnum].indexOf("姓名");
let xuehaoid=biao[xiangnum].indexOf("学号");
let sex=biao[xiangnum].indexOf("性别");
let classid=biao[xiangnum].indexOf("班级");
let xueyaunid=biao[xiangnum].indexOf("学院");
let idcardid=biao[xiangnum].indexOf("身份证号");
let ruxuetime=biao[xiangnum].indexOf("入学日期")
let iphone=biao[xiangnum].indexOf("学生手机号");
let parentname=biao[xiangnum].indexOf("家长姓名")
let parentphone=biao[xiangnum].indexOf("家长手机号")
//console.log(nameid)
// console.log(xiangnum);
//console.log(biao);
const stulsit=[];
for(let j=xiangnum+1;j<biao.length;j++){
let ruxue="" ;
if( /^\d+$/.test(biao[j][ruxuetime])){
if (parseInt(biao[j][ruxuetime])<80000){
ruxue=moment("1900-01-01").add(parseInt(biao[j][ruxuetime])-2,'day').format();
//console.log(mom);
}
}else{
ruxue=moment(biao[j][ruxuetime]).format();
}
const stu={
name:biao[j][nameid],
xuehao:biao[j][xuehaoid],
sex:biao[j][sex],
classid:biao[j][classid],
xueyuan:biao[j][xueyaunid],
idcard:biao[j][idcardid],
ruxuetime:ruxue,
iphone:biao[j][iphone],
parentphone:biao[j][parentphone],
parentname:biao[j][parentname],
choose:true
}
// console.log(stu);
stulsit.push(stu);
}
chengji.push({stu:stulsit,name:path.parse(filedir+slist[i]).name,add:false});
chengname.push(path.parse(filedir+slist[i]).name);
}
//
// console.log(chengname);
// console.log(chengji);
return chengji;
}
const wblsit=async (file)=>{
const xmlwb=fs.readFileSync(file,'utf8');
// console.log(xmlwb);
const wbresult=await new Promise((resolve,reject)=>{
parser.parseString(xmlwb, (err, result) => {
if (err) {
console.error(err);
throw err;
}
resolve(result);
});
})
let wbone=[];
wbresult.sst.si.map((value)=>{
//console.log(value);
wbone.push(value.t[0]);
})
//console.log(wbone);
return wbone;
}
const wjb=async(file,list)=>{
const xmlwb=fs.readFileSync(file,'utf8');
const wbresult=await new Promise((resolve,reject)=>{
parser.parseString(xmlwb, (err, result) => {
if (err) {
console.error(err);
throw err;
}
resolve(result);
});
})
const excerow=wbresult.worksheet.sheetData[0].row;
let allexcel=[]
wbresult.worksheet.sheetData[0].row.map((value,index)=>{
let hangexcel=[];
value.c.map((value,index)=>{
//console.log(value);
const t=value['$'].t;
const v=value.v[0];
let zhi="";
// if (parseInt(v)<40000&&parseInt(v)>80000) {
if (t === undefined) {
zhi = v;
} else if (t === 's') {
zhi = list[parseInt(v)];
} else {
zhi = v;
}
// }else{
// zhi =moment("1900-01-01").add(parseInt(v),'days').format('YYYY-MM-DD');
//}
hangexcel.push(zhi);
})
allexcel.push(hangexcel);
});
// console.log(allexcel);
return allexcel;
}
//wblsit("C:/Users/l/Desktop/a1/xl/sharedStrings.xml").then(t=>{
// wjb("C:/Users/l/Desktop/a1/xl/worksheets/sheet1.xml",t)
//})
//sheetlist("C:\\Users\\l\\Desktop\\12\\a141.xlsx")
const cacheDir = path.join(os.homedir(), '.cache');
console.log(cacheDir);
exports.sheetlist=sheetlist;

@ -0,0 +1,109 @@
//生成课表
const fs = require('fs');
const LkbString = require('lz-string');
const kb=[];
function compressText(text) {
return LkbString.compressToEncodedURIComponent(text);
}
for (let i = 0; i < 11; i++) {
kb[i*28+0]={ke:1,time:"n"+i.toString()+"z1A1"};
kb[i*28+1]={ke:2,time:"n"+i.toString()+"z1A2"};
kb[i*28+2]={ke:0,time:"n"+i.toString()+"z1A3"};
kb[i*28+3]={ke:0,time:"n"+i.toString()+"z1A4"};
kb[i*28+4]={ke:0,time:"n"+i.toString()+"z2A1"};
kb[i*28+5]={ke:2,time:"n"+i.toString()+"z2A2"};
kb[i*28+6]={ke:3,time:"n"+i.toString()+"z2A3"};
kb[i*28+7]={ke:0,time:"n"+i.toString()+"z2A4"};
kb[i*28+8]={ke:1,time:"n"+i.toString()+"z3A1"};
kb[i*28+9]={ke:4,time:"n"+i.toString()+"z3A2"};
kb[i*28+10]={ke:0,time:"n"+i.toString()+"z3A3"};
kb[i*28+11]={ke:0,time:"n"+i.toString()+"z3A4"};
kb[i*28+12]={ke:1,time:"n"+i.toString()+"z4A1"};
kb[i*28+13]={ke:2,time:"n"+i.toString()+"z4A2"};
kb[i*28+14]={ke:3,time:"n"+i.toString()+"z4A3"};
kb[i*28+15]={ke:0,time:"n"+i.toString()+"z4A4"};
kb[i*28+16]={ke:3,time:"n"+i.toString()+"z5A1"};
kb[i*28+17]={ke:4,time:"n"+i.toString()+"z5A2"};
kb[i*28+18]={ke:5,time:"n"+i.toString()+"z5A3"};
kb[i*28+19]={ke:0,time:"n"+i.toString()+"z5A4"};
kb[i*28+20]={ke:0,time:"n"+i.toString()+"z6A1"};
kb[i*28+21]={ke:0,time:"n"+i.toString()+"z6A2"};
kb[i*28+22]={ke:0,time:"n"+i.toString()+"z6A3"};
kb[i*28+23]={ke:0,time:"n"+i.toString()+"z6A4"};
kb[i*28+24]={ke:0,time:"n"+i.toString()+"z7A1"};
kb[i*28+25]={ke:0,time:"n"+i.toString()+"z7A2"};
kb[i*28+26]={ke:0,time:"n"+i.toString()+"z7A3"};
kb[i*28+27]={ke:0,time:"n"+i.toString()+"z7A4"};
}
for (let i = 11; i < 15; i++) {
kb[i*28+0]={ke:1,time:"n"+i.toString()+"z1A1"};
kb[i*28+1]={ke:2,time:"n"+i.toString()+"z1A2"};
kb[i*28+2]={ke:0,time:"n"+i.toString()+"z1A3"};
kb[i*28+3]={ke:6,time:"n"+i.toString()+"z1A4"};
kb[i*28+4]={ke:0,time:"n"+i.toString()+"z2A1"};
kb[i*28+5]={ke:2,time:"n"+i.toString()+"z2A2"};
kb[i*28+6]={ke:3,time:"n"+i.toString()+"z2A3"};
kb[i*28+7]={ke:0,time:"n"+i.toString()+"z2A4"};
kb[i*28+8]={ke:1,time:"n"+i.toString()+"z3A1"};
kb[i*28+9]={ke:4,time:"n"+i.toString()+"z3A2"};
kb[i*28+10]={ke:0,time:"n"+i.toString()+"z3A3"};
kb[i*28+11]={ke:0,time:"n"+i.toString()+"z3A4"};
kb[i*28+12]={ke:1,time:"n"+i.toString()+"z4A1"};
kb[i*28+13]={ke:2,time:"n"+i.toString()+"z4A2"};
kb[i*28+14]={ke:3,time:"n"+i.toString()+"z4A3"};
kb[i*28+15]={ke:0,time:"n"+i.toString()+"z4A4"};
kb[i*28+16]={ke:3,time:"n"+i.toString()+"z5A1"};
kb[i*28+17]={ke:4,time:"n"+i.toString()+"z5A2"};
kb[i*28+18]={ke:5,time:"n"+i.toString()+"z5A3"};
kb[i*28+19]={ke:0,time:"n"+i.toString()+"z5A4"};
kb[i*28+20]={ke:0,time:"n"+i.toString()+"z6A1"};
kb[i*28+21]={ke:0,time:"n"+i.toString()+"z6A2"};
kb[i*28+22]={ke:0,time:"n"+i.toString()+"z6A3"};
kb[i*28+23]={ke:0,time:"n"+i.toString()+"z6A4"};
kb[i*28+24]={ke:0,time:"n"+i.toString()+"z7A1"};
kb[i*28+25]={ke:0,time:"n"+i.toString()+"z7A2"};
kb[i*28+26]={ke:0,time:"n"+i.toString()+"z7A3"};
kb[i*28+27]={ke:0,time:"n"+i.toString()+"z7A4"};
}
for (let i = 15; i < 20; i++) {
kb[i*28+0]={ke:1,time:"n"+i.toString()+"z1A1"};
kb[i*28+1]={ke:0,time:"n"+i.toString()+"z1A2"};
kb[i*28+2]={ke:0,time:"n"+i.toString()+"z1A3"};
kb[i*28+3]={ke:0,time:"n"+i.toString()+"z1A4"};
kb[i*28+4]={ke:0,time:"n"+i.toString()+"z2A1"};
kb[i*28+5]={ke:0,time:"n"+i.toString()+"z2A2"};
kb[i*28+6]={ke:3,time:"n"+i.toString()+"z2A3"};
kb[i*28+7]={ke:0,time:"n"+i.toString()+"z2A4"};
kb[i*28+8]={ke:1,time:"n"+i.toString()+"z3A1"};
kb[i*28+9]={ke:0,time:"n"+i.toString()+"z3A2"};
kb[i*28+10]={ke:0,time:"n"+i.toString()+"z3A3"};
kb[i*28+11]={ke:0,time:"n"+i.toString()+"z3A4"};
kb[i*28+12]={ke:1,time:"n"+i.toString()+"z4A1"};
kb[i*28+13]={ke:0,time:"n"+i.toString()+"z4A2"};
kb[i*28+14]={ke:3,time:"n"+i.toString()+"z4A3"};
kb[i*28+15]={ke:0,time:"n"+i.toString()+"z4A4"};
kb[i*28+16]={ke:3,time:"n"+i.toString()+"z5A1"};
kb[i*28+17]={ke:0,time:"n"+i.toString()+"z5A2"};
kb[i*28+18]={ke:5,time:"n"+i.toString()+"z5A3"};
kb[i*28+19]={ke:0,time:"n"+i.toString()+"z5A4"};
kb[i*28+20]={ke:0,time:"n"+i.toString()+"z6A1"};
kb[i*28+21]={ke:0,time:"n"+i.toString()+"z6A2"};
kb[i*28+22]={ke:0,time:"n"+i.toString()+"z6A3"};
kb[i*28+23]={ke:0,time:"n"+i.toString()+"z6A4"};
kb[i*28+24]={ke:0,time:"n"+i.toString()+"z7A1"};
kb[i*28+25]={ke:0,time:"n"+i.toString()+"z7A2"};
kb[i*28+26]={ke:0,time:"n"+i.toString()+"z7A3"};
kb[i*28+27]={ke:0,time:"n"+i.toString()+"z7A4"};
//kb.push(JSON.stringify(kb));
}
const compressedText = JSON.stringify(kb);
fs.appendFile('wj3.json',compressedText, (err) => {
if (err) throw err;
console.log('数据已成功写入文件');
});

@ -0,0 +1,64 @@
const fs=require('fs');
const moment=require('moment');
var mysql = require('mysql');
const LZString = require('lz-string');
const e = require("express");
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '416416',
database : 'neigongda'
});
function decompressText(compressedText) {
return LZString.decompressFromEncodedURIComponent(compressedText);
}
connection.connect();
function qjkebiao(xuehao,start,end) {
const startxueiq=moment("2024-09-02T00:00:27+08:00");
const daystart=moment(start).diff(startxueiq,"days");
const dayend=moment(end).diff(startxueiq,"days");
console.log(daystart);
const minutestart=moment(start).minutes()+moment(start).hours()*60;
const minutesend=moment(end).minutes()+moment(end).hours()*60;
let kestart=0;
if(minutestart<500){
kestart=1;
}else if(minutestart<620){
kestart=2;
}else if(minutestart<840){
kestart=3;
}else if(minutestart<960){
kestart=4;
}else {
kestart=5;
}
let keend=0;
if(minutesend>1060){
keend=4;
}else if(minutesend<940){
keend=3;
}else if(minutesend<720){
keend=2;
}else if(minutesend<600){
keend=1;
}else {
keend=0;
}
const kaishi=daystart+kestart*4;
const jieshu=dayend+keend*4;
const sql = 'SELECT xunhuan(?,?,?)';
connection.query(sql, [kaishi,jieshu,xuehao], (error, results, fields) => {
if (error) throw error;
// 处理查询结果
console.log(results);
});
console.log(dayend);
return 0;
}
exports.qjkebiao = qjkebiao;

@ -0,0 +1,123 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>403 Forbidden</title>
<style>
html * {
padding: 0;
margin: 0;
}
body * {
padding: 10px 20px;
}
body * * {
padding: 0;
}
body {
font-family: sans-serif;
background: #eee;
color: #000;
}
body>div {
border-bottom: 1px solid #ddd;
}
h1 {
font-weight: normal;
margin-bottom: .4em;
}
h1 span {
font-size: 60%;
color: #666;
font-weight: normal;
}
#info {
background: #f6f6f6;
}
#info ul {
margin: 0.5em 4em;
}
#info p,
#summary p {
padding-top: 10px;
}
#summary {
background: #ffc;
}
#explanation {
background: #eee;
border-bottom: 0px none;
}
</style>
</head>
<body>
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
<p>You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is
required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>
<p>If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for
“same-origin” requests.</p>
</div>
<div id="info">
<h2>Help</h2>
<p>Reason given for failure:</p>
<pre>
CSRF cookie not set.
</pre>
<p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when
<a href="https://docs.djangoproject.com/en/5.1/ref/csrf/">Djangos
CSRF mechanism</a> has not been used correctly. For POST forms, you need to
ensure:</p>
<ul>
<li>Your browser is accepting cookies.</li>
<li>The view function passes a <code>request</code> to the templates <a
href="https://docs.djangoproject.com/en/5.1/topics/templates/#django.template.backends.base.Template.render"><code>render</code></a>
method.</li>
<li>In the template, there is a <code>{% csrf_token
%}</code> template tag inside each POST form that
targets an internal URL.</li>
<li>If you are not using <code>CsrfViewMiddleware</code>, then you must use
<code>csrf_protect</code> on any views that use the <code>csrf_token</code>
template tag, as well as those that accept the POST data.</li>
<li>The form has a valid CSRF token. After logging in in another browser
tab or hitting the back button after a login, you may need to reload the
page with the form, because the token is rotated after a login.</li>
</ul>
<p>Youre seeing the help section of this page because you have <code>DEBUG =
True</code> in your Django settings file. Change that to <code>False</code>,
and only the initial error message will be displayed. </p>
<p>You can customize this page using the CSRF_FAILURE_VIEW setting.</p>
</div>
</body>
</html>

@ -0,0 +1 @@
[{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":6,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":6,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":6,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":2,"z1A3":0,"z1A4":6,"z2A1":0,"z2A2":2,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":4,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":2,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":4,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":0,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":0,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":0,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":0,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":0,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":0,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":0,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":0,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":0,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":0,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":0,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":0,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":0,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":0,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":0,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":0,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":0,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":0,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":0,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":0,"z5A3":5,"z5A4":0},{"z1A1":1,"z1A2":0,"z1A3":0,"z1A4":0,"z2A1":0,"z2A2":0,"z2A3":3,"z2A4":0,"z3A1":1,"z3A2":0,"z3A3":0,"z3A4":0,"z4A1":1,"z4A2":0,"z4A3":3,"z4A4":0,"z5A1":3,"z5A2":0,"z5A3":5,"z5A4":0}]

@ -0,0 +1 @@
N4IgJgDARgjAgjEAuGAac14CZlfZWOAZmQn0zgBZTyosEaM64ck8n6Skjb7qkyTIgxS1hrSmOKMCw-oIKURaJktbtF07rSXzaAVhE8mhiQa37ze8DEKJRNwuvy34XBa6ozb9ex+bOjpzIxmA+XgIuUML2KmHRLMiSjsLuUXLeUEqxUWq4uVqhtrqZhvZFUKZJUYZclo6G1mBYdshxLdj54B1aCj1NLb4yg4ls+CNcoSMDCTndCWbzqcMJM9lt41mjGi1Kk5slkfNlIZtVSMnNlRZnEQpErQ5gD51j4C+9+B9ND0NHzwEugDgtp3swfrMNmDxNVoZ84RD1k8Hnk3gC9qcwYd7tdyl9rosAbVkPUiXd8JRHnFKa8NDT4WB6U1KX8FCzthTmPtwOzmZCnpSYRdOct-oLyTytnNGVtAjKMaD5RKZSdFZTzpd1TdJY0ZPoqfh9bTDYQ0uAjcr9ayTfQ5VbCjbLfy4vqhZdXQyPU19UiXbKgT6Heatt7cZiwPqNSbiUhSZHlQA2A3gJPGlOmmSpxPMPz4JO2oH5oNgItNJMxKElhawquihTl7O+vP+tFJhWhNvZ1Udgk1pMx0n95UAdmTYFHafHGf+E5HOZko4LaMXxZXTVHFaeG9Gl23ZqnGRnUsro9RGlPq5DC7DitHUfAd+1U91-wAHGP35PPwzv0139bwH-DlAK5cMgL-Z18HfN0oISfdoOVd8mxAs9YPbNDEJvUJ33vMAcKffCmgATjHEjJzIhkKOI+d-hIpcNDo4tGOozc4hImDwHYyjVhkEjkLAPjgIErZuWE7F8BI7sJN7YVOOuOppJfDwKGlGAKDlNTp2Uwgmk0gCwmgeiXEM4s9OVTTWOM6tZIMuDvGgQ9tP4zTUJsaB0Lcq9-k0qTPNwnynwC3TPFUzwNM8fcYE8fgExccJcxscJwtAxUovBbxbEsxLrMuNK6zinjvOKZQCtcsJitEtLxOy3zypk3LbAHAqlJcHpVJ6DSeki-pkFimwRgSsIRk6lKimmbwWiyoactauzvMm8zdhK-qWw0GAlsqpbdJaWr1vq2ampWlqbA+VSPg0j5Iu+XqXF+EQPDui7Rtu9LvIeKaYHencXvyk7Coe48nk+1aXo8sIUXMh5dqh76-sO8Hrl0+lVPpDT6UipkbpsdlBpgdk0ee7HXo8cUUZmonfrCcUkcBuI8ZBomwfp6qqawlwtUJen4a58yLVUi1WA8C1IotXT7Vx+1BZce1KvtMXIJsD0pcVuahf+6XaY11E1aZwN5d2+NlbCeMFJV46wizVSsyNmAs0irNdKLXGixtotKtLbwGyt6yPAbe31ZsTtve1lxO3drzfbZwOZMj7mh102dVNnG3Z0i2cE5ojwVxTwmwjXbxtyTn2XD3AuA7zzWbAvHOmYvDPdsfHPucfXTv1U78be-SLf28IDcaAzvc5gcDe4VsIEMHynh-L6fnKQ0YPHnyr59bqPx5jlx8NN9fzZgCjVIom2KMiqjvEY3HGKPofmLPse9+LmwuJPmfBIPlsPEEyrBN0ySjBcX+r7c1-vIAAvkAA

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save