|
@@ -12,10 +12,10 @@ if(!fs.existsSync(TemplateDocxPath)){
|
|
|
* @example
|
|
|
* Cloud Code test
|
|
|
导出流程
|
|
|
- curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "processId": "Wz34loxdbO" }' http://127.0.0.1:61337/parse/functions/tbookExportReport
|
|
|
- curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "processId": "Wz34loxdbO" }' http://8.140.98.43/parse/functions/tbookExportReport
|
|
|
+ curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "processId": "FR7KZtefyR" }' http://127.0.0.1:61337/parse/functions/tbookExportReport
|
|
|
+ curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "processId": "FR7KZtefyR" }' http://8.140.98.43/parse/functions/tbookExportReport
|
|
|
导出教材列表
|
|
|
- curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "bookList": ["2YBKitpCJL","xLdiEaHGrX"] }' http://127.0.0.1:61337/parse/functions/tbookExportReport
|
|
|
+ curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "bookList": ["9V575dapEM","2YBKitpCJL","xLdiEaHGrX"] }' http://8.140.98.43/parse/functions/tbookExportReport
|
|
|
*/
|
|
|
export function defineTbookExportReport(){
|
|
|
Parse.Cloud.define("tbookExportReport", async (request) => {
|
|
@@ -24,10 +24,10 @@ if(!fs.existsSync(TemplateDocxPath)){
|
|
|
try{
|
|
|
let result
|
|
|
if(processId){
|
|
|
- await exportProcessReportDocs(processId)
|
|
|
+ result = await exportProcessReportDocs(processId)
|
|
|
}
|
|
|
if(bookList?.length){
|
|
|
- await exportProcessReportDocs(null,bookList)
|
|
|
+ result = await exportProcessReportDocs(null,bookList)
|
|
|
}
|
|
|
if(result?.docsList?.length==0){
|
|
|
throw new Parse.Error(404,"合集内无申报教材")
|
|
@@ -111,18 +111,22 @@ function renderReportDocsByTextbook(textbook){
|
|
|
let createdDate = `${createdAt?.getFullYear()}年${createdAt?.getMonth()+1}月${createdAt?.getDate()}日`;
|
|
|
// 专业代码:前四位
|
|
|
let majorCode = json?.majorId || json?.major?.code
|
|
|
+ let majorCode6
|
|
|
if(majorCode?.length>4){
|
|
|
majorCode = majorCode.slice(0,4)
|
|
|
+ majorCode6 = majorCode.slice(0,6)
|
|
|
}
|
|
|
let majorName = json?.majorName || json?.major?.name
|
|
|
// 是否重点立项
|
|
|
+ let importantProject = json?.importantProject?.join();
|
|
|
+
|
|
|
let isJC = circleCheck[(json?.approval?.indexOf("基础")>-1)?1:0];
|
|
|
let isZL = circleCheck[(json?.approval?.indexOf("战略")>-1)?1:0];
|
|
|
|
|
|
let is101 = circleCheck[(json?.approval?.indexOf("101计划")>-1)?1:0]; // 2024新重点
|
|
|
let isZY = circleCheck[(json?.approval?.indexOf("中央")>-1)?1:0];
|
|
|
let isSX = circleCheck[(json?.approval?.indexOf("四新")>-1)?1:0];
|
|
|
- let isJS = circleCheck[(json?.importantProject?.indexOf("建设")>-1)?1:0];
|
|
|
+ let isJS = circleCheck[(importantProject?.indexOf("建设")>-1)?1:0];
|
|
|
|
|
|
let isNotImpt = (json?.approval?.indexOf("101计划")==-1) && (json?.approval?.indexOf("中央")==-1) && (json?.approval?.indexOf("四新")==-1) && (json?.approval?.indexOf("建设")==-1)
|
|
|
isNotImpt = circleCheck[isNotImpt?1:0];
|
|
@@ -139,12 +143,33 @@ function renderReportDocsByTextbook(textbook){
|
|
|
let latestYear = latestDate?.getFullYear();
|
|
|
let latestMonth = latestDate?.getMonth()+1;
|
|
|
// 初版至今重点项目
|
|
|
- let isBSQT = !((json?.importantProject?.indexOf("建设")>-1) || (json?.importantProject?.indexOf("本科国家")>-1) || (json?.importantProject?.indexOf("省级优秀")>-1) || (json?.importantProject?.indexOf("省级规划")>-1))// 是否其他省级奖项
|
|
|
+ let isBSQT = !((importantProject?.indexOf("建设")>-1) || (importantProject?.indexOf("本科国家")>-1) || (importantProject?.indexOf("省级优秀")>-1) || (importantProject?.indexOf("省级规划")>-1))// 是否其他省级奖项
|
|
|
+ let bsqtName = (json?.importantProject || [])?.filter(item=>(item?.indexOf("建设")==-1&&item?.indexOf("本科国家")==-1&&item?.indexOf("省级优秀")==-1&&item?.indexOf("省级规划")==-1));
|
|
|
+ // 教材适用
|
|
|
+ let characteristic = (json?.characteristic?.filter(item=>item?.checked).map(item=>item.label) || [])?.join(",")
|
|
|
|
|
|
- let bookData = {
|
|
|
+ // 作者列表 限6人
|
|
|
+ let alist = []
|
|
|
+ for (let index = 0; index < 9; index++) {
|
|
|
+ alist[index] = [json?.authorList?.[index]?.name||" ",json?.authorList?.[index]?.unit||" ",toYearMonth(json?.authorList?.[index]?.birth)||" ",json?.authorList?.[index]?.nationality||" ",json?.authorList?.[index]?.job||" ",json?.authorList?.[index]?.title||" ",json?.authorList?.[index]?.mobile||" ",json?.authorList?.[index]?.email||" ",json?.authorList?.[index]?.work||" "]
|
|
|
+ }
|
|
|
+ // 相关成果 限5项
|
|
|
+ let aclist = []
|
|
|
+ for (let index = 0; index < 5; index++) {
|
|
|
+ aclist[index] = [json?.achievementOptions?.[index]?.name||" ",json?.achievementOptions?.[index]?.unit||" ",toYearMonth(json?.achievementOptions?.[index]?.date)||" "]
|
|
|
+ }
|
|
|
+ // 申报历程 限4项
|
|
|
+ let clist = []
|
|
|
+ for (let index = 0; index < 4; index++) {
|
|
|
+ let num = json?.courses?.[index]?(index+1):" ";
|
|
|
+ clist[index] = [num,toYearMonth(json?.courses?.[index]?.date)||" ",json?.courses?.[index]?.wordage||" ",json?.courses?.[index]?.num||" ",json?.courses?.[index]?.sumNum||" ",json?.courses?.[index]?.accolade||" "]
|
|
|
+ }
|
|
|
+
|
|
|
+ let fixData = {
|
|
|
// 封面信息
|
|
|
titlePad:padString(json?.title,21),
|
|
|
- ISBN:padString(json?.ISBN,21),
|
|
|
+ ISBNPad:padString(json?.ISBN,21),
|
|
|
+ ISBN:json?.ISBN,
|
|
|
one:squareCheck[(json?.type=="单本"||json?.type=="单册")?1:0], // 单本/单册 方框
|
|
|
full:squareCheck[json?.type=="全册"?1:0], // 全册
|
|
|
oneCircle:circleCheck[(json?.type=="单本"||json?.type=="单册")?1:0], // 单本/单册 圆圈
|
|
@@ -162,6 +187,7 @@ function renderReportDocsByTextbook(textbook){
|
|
|
author:json?.author,
|
|
|
unit:json?.unit,
|
|
|
mc:majorCode,
|
|
|
+ mc6:majorCode6,
|
|
|
mn:majorName,
|
|
|
lCN:circleCheck[(json?.lang=="中文")?1:0],
|
|
|
lEN:circleCheck[(json?.lang=="英文")?1:0],
|
|
@@ -191,14 +217,48 @@ function renderReportDocsByTextbook(textbook){
|
|
|
currentM:currentMonth,
|
|
|
currentNum:json?.editionNumber || "",
|
|
|
printSum:json?.printSum || "",
|
|
|
- isBGJ:circleCheck[(json?.importantProject?.indexOf("本科国家")>-1)?1:0],
|
|
|
- isBSYX:circleCheck[(json?.importantProject?.indexOf("省级优秀")>-1)?1:0],
|
|
|
- isBSGH:circleCheck[(json?.importantProject?.indexOf("省级规划")>-1)?1:0],
|
|
|
+ isBGJ:circleCheck[(importantProject?.indexOf("本科国家")>-1)?1:0],
|
|
|
+ isBSYX:circleCheck[(importantProject?.indexOf("省级优秀")>-1)?1:0],
|
|
|
+ isBSGH:circleCheck[(importantProject?.indexOf("省级规划")>-1)?1:0],
|
|
|
isBSQT:circleCheck[isBSQT?1:0],
|
|
|
- bsqtName:isBSQT?(json?.importantProject || ""):"",
|
|
|
+ bsqtName:bsqtName||"",
|
|
|
isFirstNot:circleCheck[json?.importantProject?0:1],
|
|
|
+ // 教材适用情况
|
|
|
+ lessons:json?.lessons||[],
|
|
|
+ period:json?.period||"", // 学时
|
|
|
+ isBX:squareCheck[(characteristic?.indexOf("必修")>-1)?1:0],
|
|
|
+ isXX:squareCheck[(characteristic?.indexOf("选修")>-1)?1:0],
|
|
|
+ isTS:circleCheck[(characteristic?.indexOf("通识")>-1)?1:0],
|
|
|
+ isGG:circleCheck[(characteristic?.indexOf("公共")>-1)?1:0],
|
|
|
+ isZY:circleCheck[(characteristic?.indexOf("专业")>-1)?1:0],
|
|
|
+ isSXZZ:squareCheck[(characteristic?.indexOf("思想")>-1)?1:0],
|
|
|
+ isSY:squareCheck[(characteristic?.indexOf("实验")>-1)?1:0],
|
|
|
+ // 作者列表
|
|
|
+ a11:alist[0][0],a12:alist[0][1],a13:alist[0][2],a14:alist[0][3],a15:alist[0][4],a16:alist[0][5],a17:alist[0][6],a18:alist[0][7],a19:alist[0][8],
|
|
|
+ a21:alist[1][0],a22:alist[1][1],a23:alist[1][2],a24:alist[1][3],a25:alist[1][4],a26:alist[1][5],a27:alist[1][6],a28:alist[1][7],a29:alist[1][8],
|
|
|
+ a31:alist[2][0],a32:alist[2][1],a33:alist[2][2],a34:alist[2][3],a35:alist[2][4],a36:alist[2][5],a37:alist[2][6],a38:alist[2][7],a39:alist[2][8],
|
|
|
+ a41:alist[3][0],a42:alist[3][1],a43:alist[3][2],a44:alist[3][3],a45:alist[3][4],a46:alist[3][5],a47:alist[3][6],a48:alist[3][7],a49:alist[3][8],
|
|
|
+ a51:alist[4][0],a52:alist[4][1],a53:alist[4][2],a54:alist[4][3],a55:alist[4][4],a56:alist[4][5],a57:alist[4][6],a58:alist[4][7],a59:alist[4][8],
|
|
|
+ a61:alist[5][0],a62:alist[5][1],a63:alist[5][2],a64:alist[5][3],a65:alist[5][4],a66:alist[5][5],a67:alist[5][6],a68:alist[5][7],a69:alist[5][8],
|
|
|
+ // 成果列表
|
|
|
+ ac11:aclist[0][0],ac12:aclist[0][1],ac13:aclist[0][2],
|
|
|
+ ac21:aclist[1][0],ac22:aclist[1][1],ac23:aclist[1][2],
|
|
|
+ ac31:aclist[2][0],ac32:aclist[2][1],ac33:aclist[2][2],
|
|
|
+ ac41:aclist[3][0],ac42:aclist[3][1],ac43:aclist[3][2],
|
|
|
+ ac51:aclist[4][0],ac52:aclist[4][1],ac53:aclist[4][2],
|
|
|
+ // 历程列表
|
|
|
+ c11:clist[0][0],c12:clist[0][1],c13:clist[0][2],c14:clist[0][3],c15:clist[0][4],c16:clist[0][5],
|
|
|
+ c21:clist[1][0],c22:clist[1][1],c23:clist[1][2],c24:clist[1][3],c25:clist[1][4],c26:clist[1][5],
|
|
|
+ c31:clist[2][0],c32:clist[2][1],c33:clist[2][2],c34:clist[2][3],c35:clist[2][4],c36:clist[2][5],
|
|
|
+ c41:clist[3][0],c42:clist[3][1],c43:clist[3][2],c44:clist[3][3],c45:clist[3][4],c46:clist[3][5],
|
|
|
+
|
|
|
}
|
|
|
+ let bookData = json;
|
|
|
+ Object.keys(fixData).forEach(key=>{
|
|
|
+ bookData[key] = fixData[key]
|
|
|
+ })
|
|
|
console.log(bookData)
|
|
|
+ console.log(json)
|
|
|
let bookid = json.code || json?.objectId;
|
|
|
let tempFileName = path.join(`${bookid}${json.title}.docx`)
|
|
|
return new Promise((resolve)=>{
|
|
@@ -216,6 +276,11 @@ function renderReportDocsByTextbook(textbook){
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+function toYearMonth(date){
|
|
|
+ if(!date) return ""
|
|
|
+ date = new Date(date?.iso||date);
|
|
|
+ return `${date.getFullYear()}年${date.getMonth()+1}月`
|
|
|
+}
|
|
|
|
|
|
function padString(str,width) {
|
|
|
str = str || ""
|