Browse Source

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

Tony Kang 1 year ago
parent
commit
fd84d4112a

+ 22 - 23
app/extend/helper.js

@@ -1689,37 +1689,50 @@ module.exports = {
         return str;
     },
     calculateNextSendTime(startTime, intervalHours = 6, quietStart = 0, quietEnd = 8) {
-        function parseTime(timeStr, day = 0) {
+        function parseTime(stime, timeStr, day = 0) {
             const [hours, minutes] = timeStr.split(':').map(Number);
             const date = new Date();
-            date.setDate(date.getDate() + day);
+            date.setDate(stime.getDate() + day);
             date.setHours(hours, minutes, 0, 0); // Set hours and minutes, reset seconds and milliseconds
             return date;
         }
+        function calculateHoursBetween(start, end) {
+            // 将时间字符串转换为 Date 对象
+            const startTime = new Date(`2000-01-01T${start}`);
+            const endTime = new Date(`2000-01-01T${end}`);
+            // 检查是否跨越了当前日期和隔天日期
+            if (endTime < startTime) {
+                endTime.setDate(endTime.getDate() + 1); // 将结束时间调整到隔天
+            }
+            // 计算两个时间之间的毫秒数差距
+            const timeDifference = endTime - startTime;
+            // 将毫秒数转换为小时并返回
+            const hours = timeDifference / (1000 * 60 * 60);
+            return 24 - hours;
+        }
         // let startDateTime = parseTime(startTime);
         let startDateTime = startTime;
         let endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
         if (quietStart && quietEnd) {
             quietStart = (quietStart < 10 ? '0' + quietStart : quietStart) + ':00';
             quietEnd = (quietEnd < 10 ? '0' + quietEnd : quietEnd) + ':00';
-            let quietStartDateTime = parseTime(quietStart);
-            let quietEndDateTime = parseTime(quietEnd);
+            let quietStartDateTime = parseTime(startDateTime, quietStart);
+            let quietEndDateTime = parseTime(startDateTime, quietEnd);
             if (quietEndDateTime <= quietStartDateTime) {
                 quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
             }
             // 判断非屏蔽时间内是否大于间隔时间,大于则要再隔天发送
-            const hours = this.calculateHoursBetween(quietStart, quietEnd);
+            const hours = calculateHoursBetween(quietStart, quietEnd);
             if (hours < intervalHours) {
                 // 除法算出差的天数
                 const days = Math.floor(intervalHours / hours);
-                quietStartDateTime = parseTime(quietStart, days);
-                quietEndDateTime = parseTime(quietEnd, days);
+                quietStartDateTime = parseTime(startDateTime, quietStart, days);
+                quietEndDateTime = parseTime(startDateTime, quietEnd, days);
                 intervalHours %= hours;
                 startDateTime.setDate(startDateTime.getDate() + days);
             } else if (startDateTime >= quietEndDateTime) {
-                quietStartDateTime = parseTime(quietStart, 1);
+                quietStartDateTime = parseTime(startDateTime, quietStart, 1);
             }
-
             if (quietEndDateTime <= quietStartDateTime) {
                 quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
             }
@@ -1737,18 +1750,4 @@ module.exports = {
         //     endDateTime.getMinutes().toString().padStart(2, '0');
         return endDateTime;
     },
-    calculateHoursBetween(start, end) {
-        // 将时间字符串转换为 Date 对象
-        const startTime = new Date(`2000-01-01T${start}`);
-        const endTime = new Date(`2000-01-01T${end}`);
-        // 检查是否跨越了当前日期和隔天日期
-        if (endTime < startTime) {
-            endTime.setDate(endTime.getDate() + 1); // 将结束时间调整到隔天
-        }
-        // 计算两个时间之间的毫秒数差距
-        const timeDifference = endTime - startTime;
-        // 将毫秒数转换为小时并返回
-        const hours = timeDifference / (1000 * 60 * 60);
-        return 24 - hours;
-    },
 };

+ 1 - 1
app/lib/rm/change_apply.js

@@ -24,7 +24,7 @@ class rptMemChange extends RptMemBase {
     async doCheckTender(tenderId) {
         if (this.ctx.tender) return;
         this.ctx.tender = { id: tenderId };
-        this.ctx.tender.data = await this.ctx.service.getTender(tenderId);
+        this.ctx.tender.data = await this.ctx.service.tender.getTender(tenderId);
         this.ctx.tender.info = await this.ctx.service.tenderInfo.getTenderInfo(tenderId);
     }
 

+ 1 - 1
app/lib/rm/change_plan.js

@@ -24,7 +24,7 @@ class rptMemChange extends RptMemBase {
     async doCheckTender(tenderId) {
         if (this.ctx.tender) return;
         this.ctx.tender = { id: tenderId };
-        this.ctx.tender.data = await this.ctx.service.getTender(tenderId);
+        this.ctx.tender.data = await this.ctx.service.tender.getTender(tenderId);
         this.ctx.tender.info = await this.ctx.service.tenderInfo.getTenderInfo(tenderId);
     }
 

+ 1 - 1
app/lib/rm/change_project.js

@@ -24,7 +24,7 @@ class rptMemChange extends RptMemBase {
     async doCheckTender(tenderId) {
         if (this.ctx.tender) return;
         this.ctx.tender = { id: tenderId };
-        this.ctx.tender.data = await this.ctx.service.getTender(tenderId);
+        this.ctx.tender.data = await this.ctx.service.tender.getTender(tenderId);
         this.ctx.tender.info = await this.ctx.service.tenderInfo.getTenderInfo(tenderId);
     }
 

+ 0 - 75
app/view/setting/user_permission_modal.ejs

@@ -321,80 +321,5 @@
                 $('#wx-setting').modal('hide');
             });
         });
-
-        function calculateNextSendTime(startTime, intervalHours = 6, quietStart = "00:00", quietEnd = "08:00") {
-            function parseTime(timeStr, day = 0) {
-                const [hours, minutes] = timeStr.split(":").map(Number);
-                const date = new Date();
-                date.setDate(date.getDate() + day);
-                date.setHours(hours, minutes, 0, 0); // Set hours and minutes, reset seconds and milliseconds
-                return date;
-            }
-
-            // let startDateTime = parseTime(startTime);
-            let startDateTime = startTime;
-            let endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
-            if (quietStart && quietEnd) {
-                let quietStartDateTime = parseTime(quietStart);
-                let quietEndDateTime = parseTime(quietEnd);
-                if (quietEndDateTime <= quietStartDateTime) {
-                    quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
-                }
-                // 判断非屏蔽时间内是否大于间隔时间,大于则要再隔天发送
-                const hours = calculateHoursBetween(quietStart, quietEnd);
-                if (hours < intervalHours) {
-                    // 除法算出差的天数
-                    const days = Math.floor(intervalHours / hours);
-                    quietStartDateTime = parseTime(quietStart, days);
-                    quietEndDateTime = parseTime(quietEnd, days);
-                    intervalHours %= hours;
-                    startDateTime.setDate(startDateTime.getDate() + days);
-                } else if (startDateTime >= quietEndDateTime) {
-                    quietStartDateTime = parseTime(quietStart, 1);
-                }
-
-                if (quietEndDateTime <= quietStartDateTime) {
-                    quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
-                }
-                if (startDateTime >= quietStartDateTime) {
-                    startDateTime = quietEndDateTime;
-                }
-                endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
-                if (endDateTime >= quietStartDateTime && endDateTime < quietEndDateTime) {
-                    let timeIntoQuiet = (quietStartDateTime - startDateTime) / (60 * 60 * 1000);
-                    let remainingTime = intervalHours - timeIntoQuiet;
-                    endDateTime = new Date(quietEndDateTime.getTime() + remainingTime * 60 * 60 * 1000);
-                }
-            }
-
-            // return endDateTime.getHours().toString().padStart(2, '0') + ':' +
-            //     endDateTime.getMinutes().toString().padStart(2, '0');
-            return endDateTime;
-        }
-
-        function calculateHoursBetween(start, end) {
-            // 将时间字符串转换为 Date 对象
-            const startTime = new Date(`2000-01-01T${start}`);
-            const endTime = new Date(`2000-01-01T${end}`);
-
-            // 检查是否跨越了当前日期和隔天日期
-            if (endTime < startTime) {
-                endTime.setDate(endTime.getDate() + 1); // 将结束时间调整到隔天
-            }
-
-            // 计算两个时间之间的毫秒数差距
-            const timeDifference = endTime - startTime;
-
-            // 将毫秒数转换为小时并返回
-            const hours = timeDifference / (1000 * 60 * 60);
-
-            return 24 - hours;
-        }
-
-        let firstSendTime = new Date("2024-1-12 19:23");
-        console.log(firstSendTime);
-        let secondSendTime = calculateNextSendTime(firstSendTime);
-
-        console.log("Second send time:", secondSendTime);
     });
 </script>

+ 3 - 3
sql/update.sql

@@ -49,13 +49,13 @@ ADD INDEX `PRJ_STG_BZ` (`prj_id` ASC, `stage_id` ASC, `business_id` ASC);
 ;
 
 ALTER TABLE `zh_rpt_archive_encryption`
-ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: 变更令;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `stage_id`;
+ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: ;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `stage_id`;
 
 ALTER TABLE `zh_rpt_archive`
-ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: 变更令;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `stage_id`;
+ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: ;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `stage_id`;
 
 ALTER TABLE `zh_role_rpt_rel`
-ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: 变更令;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `sid`;
+ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: ;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `sid`;
 
 ALTER TABLE `zh_role_rpt_rel`
 ADD COLUMN `business_id` VARCHAR(45) NULL AFTER `sid`,