guoziyun 9 месяцев назад
Родитель
Сommit
97fbfd7da6
2 измененных файлов с 7 добавлено и 2 удалено
  1. 3 1
      oms/dist/src/scripts/migrate-done-rates.js
  2. 4 1
      oms/src/scripts/migrate-done-rates.ts

+ 3 - 1
oms/dist/src/scripts/migrate-done-rates.js

@@ -84,13 +84,15 @@ async function migrateDoneRates() {
         const cursor = OldDoneRate.find({}).lean().cursor();
         const cursor = OldDoneRate.find({}).lean().cursor();
         // 逐条处理游标中的数据
         // 逐条处理游标中的数据
         for await (const doc of cursor) {
         for await (const doc of cursor) {
+            // 检查并重新计算 completionRate,以校正旧数据中的不合理值
+            const correctedCompletionRate = doc.startCount > 0 ? (doc.doneCount / doc.startCount) * 100 : 0;
             // 格式化数据以匹配本地模型
             // 格式化数据以匹配本地模型
             const newRecord = {
             const newRecord = {
                 date: doc.collectionName,
                 date: doc.collectionName,
                 res: doc.res,
                 res: doc.res,
                 startCount: doc.startCount,
                 startCount: doc.startCount,
                 doneCount: doc.doneCount,
                 doneCount: doc.doneCount,
-                completionRate: doc.completionRate,
+                completionRate: correctedCompletionRate, // 使用校正后的值
             };
             };
             batch.push(newRecord);
             batch.push(newRecord);
             // 如果达到批次大小,则执行批量插入
             // 如果达到批次大小,则执行批量插入

+ 4 - 1
oms/src/scripts/migrate-done-rates.ts

@@ -72,13 +72,16 @@ async function migrateDoneRates() {
 
 
     // 逐条处理游标中的数据
     // 逐条处理游标中的数据
     for await (const doc of cursor) {
     for await (const doc of cursor) {
+      // 检查并重新计算 completionRate,以校正旧数据中的不合理值
+      const correctedCompletionRate = doc.startCount > 0 ? (doc.doneCount / doc.startCount) * 100 : 0;
+
       // 格式化数据以匹配本地模型
       // 格式化数据以匹配本地模型
       const newRecord = {
       const newRecord = {
         date: doc.collectionName,
         date: doc.collectionName,
         res: doc.res,
         res: doc.res,
         startCount: doc.startCount,
         startCount: doc.startCount,
         doneCount: doc.doneCount,
         doneCount: doc.doneCount,
-        completionRate: doc.completionRate,
+        completionRate: correctedCompletionRate, // 使用校正后的值
       };
       };
       batch.push(newRecord);
       batch.push(newRecord);