Browse Source

fix: export month & isimport & mc4

ryanemax 7 months ago
parent
commit
55bad8ae90
2 changed files with 86 additions and 11 deletions
  1. 84 10
      server/cloud/tbook/func-tbook-export.js
  2. 2 1
      server/cloud/tbook/test/test-export.js

+ 84 - 10
server/cloud/tbook/func-tbook-export.js

@@ -33,6 +33,8 @@ const squareCheck = [`□`,String.fromCharCode(0xFE)];
  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(app){
+
+    // 全新导出,每次都重新导出
     app.post("/parse/api/tbook/export",async (request,res)=>{
         let processId = request.body.processId;
         let bookList = request.body.bookList;
@@ -51,23 +53,90 @@ const squareCheck = [`□`,String.fromCharCode(0xFE)];
                     code:400,
                     err:"合集内无申报教材"
                 })
+                return
+            }
+            // return result
+            res.json({
+                code:200,
+                result:result
+              })
+              return
+        }catch(err){
+            console.error(err)
+            res.json({
+                code:400,
+                err:err
+            })
+            return
+            // throw new Parse.Error(404,"导出申报合集失败")
+        }
+        // throw new Parse.Error(404,"未找到该流程合集")
+      })
+
+    // 预览导出:已导出直接返回
+    //  curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "bookid": "j4pt2MMTXM" }' https://145.tbook.com.cn/parse/api/tbook/preview
+    app.post("/parse/api/tbook/preview",async (request,res)=>{
+        let bookid = request.body.bookid;
+        let isNew = request.body.isNew || false;
+        try{
+            let result
+            if(bookid){
+                let book
+                if(!isNew){
+                    let query = new Parse.Query("EduTextbook")
+                    query.include("childrens","department")
+                    book = await query.get(bookid);
+                }
+                if(book?.get("export")){
+                    res.json({
+                        code:200,
+                        data:{
+                            urlPdf:book?.get("export")
+                        }
+                    })
+                    return
+                }
+                result = await exportProcessReportDocs(null,[bookid])
+                let urlPdf = result?.docsList?.[0]?.urlPdf;
+                if(urlPdf){
+                    book.set('export',urlPdf);
+                    book.save();
+                    res.json({
+                        code:200,
+                        data:{
+                            urlPdf:urlPdf
+                        }
+                    })
+                    return
+                }
+            }
+            console.log(result)
+            if(result?.docsList?.length==0){
+                // throw new Parse.Error(404,"合集内无申报教材")
+                res.json({
+                    code:400,
+                    err:"无该教材"
+                })
+                return
             }
             // return result
             res.json({
                 code:200,
                 result:result
               })
+              return
         }catch(err){
             console.error(err)
             res.json({
                 code:400,
                 err:err
             })
+            return
             // throw new Parse.Error(404,"导出申报合集失败")
         }
         // throw new Parse.Error(404,"未找到该流程合集")
-        
       })
+
     Parse.Cloud.define("tbookExportReport", async (request) => {
         let processId = request.params.processId;
         let bookList = request.params.bookList;
@@ -147,7 +216,7 @@ export async function exportProcessReportDocs(processId,bookList) {
         if(zipPath){
             zipUrl = (await uploadFileToOSS(zipPath))?.url || null
         }
-        docsList = docsList.map(item=>{return {code:item.code,title:item.title,url:item?.url}})
+        docsList = docsList.map(item=>{return {code:item.code,title:item.title,url:item?.url,urlPdf:item?.urlPdf}})
     }
 
     let result = {
@@ -215,6 +284,7 @@ function fixVolumeData(json,volumeData,index){
     json.uGJ = circleCheck[(volumeData?.unitType?.indexOf("共建")>-1)?1:0];
     json.uQT = circleCheck[(volumeData?.unitType?.indexOf("其他")>-1)?1:0];
     json.mc4 = majorCode4;
+    json.majorCodePad = majorCode4;
     json.mn4 = majorName4;
     json.mc6 = majorCode6;
     json.mn6 = majorName6;
@@ -234,11 +304,12 @@ function fixVolumeData(json,volumeData,index){
     json.currentY = currentYear;
     json.currentM = currentMonth;
 
+    console.log(importantProject)
     json.isGJS = circleCheck[(importantProject?.indexOf("建设")>-1)?1:0];
     json.isBGJ = circleCheck[(importantProject?.indexOf("本科国家")>-1)?1:0];
     json.isBSYX = circleCheck[(importantProject?.indexOf("省级优秀")>-1)?1:0];
     json.isBSGH = circleCheck[(importantProject?.indexOf("省级规划")>-1)?1:0];
-    json.isBSQT = circleCheck[isBSQT?1:0];
+    json.isBSQT = circleCheck[isBSQT&&bsqtName?1:0];
     json.isFirstNot = circleCheck[volumeData?.importantProject?0:1];
     // 作者列表
     for (let index = 0; index < 6; index++) { // 补充空值
@@ -296,8 +367,6 @@ function renderReportDocsByTextbook(textbook){
         })
     }
 
-    
-
     // 联系电话:默认为作者首个存在的电话;
     let mobile = json?.authorList?.find(item => item.mobile)?.mobile || ""
     // 填报时间:默认为创建时间
@@ -316,7 +385,6 @@ function renderReportDocsByTextbook(textbook){
             volumeList.push(volumeData)
         }
     }
-    json.volumeList = volumeList
 
     // 作者列表 限6人
     let alist = []
@@ -368,7 +436,7 @@ function renderReportDocsByTextbook(textbook){
     // let codeBarImg = 
     // console.log(codeBarImg)
     // (其他佐证材料,限两份以内。)
-    console.log(codePngPath)
+    console.log(json?.approval)
     let isNotImpt = (json?.approval?.indexOf("101计划")==-1) && (json?.approval?.indexOf("中央")==-1) && (json?.approval?.indexOf("四新")==-1) && (json?.approval?.indexOf("建设")==-1);
     
 
@@ -440,7 +508,7 @@ function renderReportDocsByTextbook(textbook){
     })
     // console.log(bookData)
     // console.log(json)
-    let tempFileName = path.join(`${bookid}${json.title}.docx`)
+    let tempFileName = path.join(`${bookid}_${json.title}_申报书及附件.docx`)
 
     // 开始文件合并导出
         let filePath,pdfPath,urlDocx,urlPdf
@@ -495,12 +563,18 @@ function renderReportDocsByTextbook(textbook){
 
 function toYearMonth(date){
     // console.log("toYearMonth",date)
-    if(typeof date == "string" && date?.indexOf("年")>-1) return date
+    if(typeof date == "string" && (date?.indexOf("年")>-1 || date?.indexOf("-")>-1)) return date
     if(!date) return ""
     let datestr = date?.iso||date
     if(!datestr) return ""
     date = new Date(datestr);
-    return `${date.getFullYear()}年${date.getMonth()+1}月`
+    // return `${date.getFullYear()}年${date.getMonth()+1}月`
+    return `${date.getFullYear()}-${get2bitint(date.getMonth()+1)}`
+}
+function get2bitint(value){
+    if(value>=10) return value;
+    if(value>=0&&value<10) return "0" + value;
+    return value
 }
 
 function padString(str,width) {

+ 2 - 1
server/cloud/tbook/test/test-export.js

@@ -22,7 +22,8 @@ async function main(){
         // console.log(await exportProcessReportDocs("FR7KZtefyR"))
         // console.log("测试列表")
         // console.log(await exportProcessReportDocs(null,["9V575dapEM"]))
-        console.log(await exportProcessReportDocs(null,["BwZpEoOtS8","X10kCktA0r"]))
+        console.log(await exportProcessReportDocs(null,["wfzpYHpsRO"]))
+        // console.log(await exportProcessReportDocs(null,["BwZpEoOtS8","X10kCktA0r"]))
     }catch(err){
         console.error(err)
     }