From 3c47cd5450aac2387a994e01941a952e4c630833 Mon Sep 17 00:00:00 2001 From: zhou keda <1315948824@qq.com> Date: Mon, 12 Aug 2024 09:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=A3=80=E4=BF=9D=E5=85=BBbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateMaintainPlanTimeWorker.cs | 27 ++++++++++--------- .../GenerateSpotInspectionPlanTimeWorker.cs | 18 +++++++------ 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs index 644e035d..2d1932e3 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs @@ -34,11 +34,14 @@ namespace JNPF.TaskScheduler.Listener List tobeCreateList = new List(); List tobeCreateTemplets = new List(); + int second = DateTime.Now.Second;//当前的秒数 + int offsetMinute = second > 30 ? 1 : 0; + DateTime now = DateTime.Parse(DateTime.Now.AddMinutes(offsetMinute).ToString("yyyy-MM-dd HH:mm:00")); foreach (var item in eqpSpotInsTemEquipHsByOne) { if (item.start_time.AddDays((double)item.plan_cycle).ToString("yyyy-MM-dd") == - DateTime.Now.ToString("yyyy-MM-dd")) + now.ToString("yyyy-MM-dd")) { tobeCreateTemplets.Add(item); } @@ -50,7 +53,7 @@ namespace JNPF.TaskScheduler.Listener //整除表示一个周期到了 // foreach (var item in eqpSpotInsTemEquipHsByCirculate) // { - // TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + // TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); // TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); // TimeSpan ts3 = ts1.Subtract(ts2).Duration(); // if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) @@ -67,7 +70,7 @@ namespace JNPF.TaskScheduler.Listener .FirstAsync(); if (eqpMaintainRecordH == null) { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -78,7 +81,7 @@ namespace JNPF.TaskScheduler.Listener } else if (eqpMaintainRecordH.status != "1") { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts2 = new TimeSpan(Convert .ToDateTime(eqpMaintainRecordH.execute_time.Value.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -102,7 +105,7 @@ namespace JNPF.TaskScheduler.Listener if (equipments.FirstOrDefault(x => x.id == item.equip_id) == null) continue; - string code = $"{DateTime.Now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; tobeCreateList.Add(new EqpMaintainRecordH() { code = code, @@ -119,7 +122,7 @@ namespace JNPF.TaskScheduler.Listener is_send = item.is_send, repeat_user_id = item.repeat_user_id, execute_user_id = item.duty_user_id, - create_time = DateTime.Now, + create_time = now, status = Tnb.EquipMgr.SpotInsRecordExecutionStatus.TOBEEXECUTED @@ -224,7 +227,7 @@ namespace JNPF.TaskScheduler.Listener foreach (var item in toolMoldByOne) { if (item.start_time.AddDays((double)item.plan_cycle).ToString("yyyy-MM-dd") == - DateTime.Now.ToString("yyyy-MM-dd")) + now.ToString("yyyy-MM-dd")) { toolMoldTobeCreateTemplets.Add(item); } @@ -236,7 +239,7 @@ namespace JNPF.TaskScheduler.Listener //整除表示一个周期到了 // foreach (var item in toolMoldByCirculate) // { - // TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + // TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); // TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); // TimeSpan ts3 = ts1.Subtract(ts2).Duration(); // if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) @@ -253,7 +256,7 @@ namespace JNPF.TaskScheduler.Listener .FirstAsync(); if (eqpMaintainRecordH == null) { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -264,7 +267,7 @@ namespace JNPF.TaskScheduler.Listener } else if (eqpMaintainRecordH.status != "1") { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts2 = new TimeSpan(Convert .ToDateTime(eqpMaintainRecordH.execute_time.Value.ToString("yyyy-MM-dd")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); @@ -287,7 +290,7 @@ namespace JNPF.TaskScheduler.Listener if (toolMoldList.FirstOrDefault(x => x.id == item.mold_id) == null) continue; - string code = $"{DateTime.Now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; toolMoldTobeCreateList.Add(new ToolMoldMaintainRecordH() { code = code, @@ -304,7 +307,7 @@ namespace JNPF.TaskScheduler.Listener is_send = item.is_send, repeat_user_id = item.repeat_user_id, execute_user_id = item.duty_user_id, - create_time = DateTime.Now, + create_time = now, status = Tnb.EquipMgr.SpotInsRecordExecutionStatus.TOBEEXECUTED diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs index da72c4d9..58cd7eca 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs @@ -29,10 +29,16 @@ namespace JNPF.TaskScheduler.Listener List eqpSpotInsTemEquipHsByCirculate = await db.Queryable().Where(x => x.is_start == "1" && x.plan_cycle_unit == "2").ToListAsync(); List tobeCreateList = new List(); List tobeCreateTemplets = new List(); + + //丢失精度补齐 例如设定10分钟执行 但是这个破框架会再9:59 时进入这个方法导致不能正常执行 + //精确到分的定时任务可以不使用本地任务 采用数据接口的方式规避掉这个问题 + int second = DateTime.Now.Second;//当前的秒数 + int offsetMinute = second > 30 ? 1 : 0; + DateTime now = DateTime.Parse(DateTime.Now.AddMinutes(offsetMinute).ToString("yyyy-MM-dd HH:mm:00")); foreach (var item in eqpSpotInsTemEquipHsByOne) { - if (item.start_time.AddHours((double)item.plan_cycle).ToString("yyyy-MM-dd HH:mm") == DateTime.Now.ToString("yyyy-MM-dd HH:mm")) + if (item.start_time.AddHours((double)item.plan_cycle).ToString("yyyy-MM-dd HH:mm") == now.ToString("yyyy-MM-dd HH:mm")) { tobeCreateTemplets.Add(item); } @@ -60,15 +66,11 @@ namespace JNPF.TaskScheduler.Listener // } // } - //丢失精度补齐 例如设定10分钟执行 但是这个破框架会再9:59 时进入这个方法导致不能正常执行 - //精确到分的定时任务可以不使用本地任务 采用数据接口的方式规避掉这个问题 - int second = DateTime.Now.Second;//当前的秒数 - int offsetMinute = second > 30 ? 1 : 0; //整除表示一个周期到了 foreach (var item in eqpSpotInsTemEquipHsByCirculate) { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm")).Ticks); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(now.ToString("yyyy-MM-dd HH:mm")).Ticks); TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd HH:mm")).Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); if ((ts3.TotalMinutes + offsetMinute) * 10 / 60 % (10 * (double)item.plan_cycle) == 0) @@ -88,7 +90,7 @@ namespace JNPF.TaskScheduler.Listener if (equipments.FirstOrDefault(x => x.id == item.equip_id) == null) continue; - string code = $"{DateTime.Now.ToString("yyyyMMddHHmm") + (index++).ToString().PadLeft(3, '0')}"; + string code = $"{now.ToString("yyyyMMddHHmm") + (index++).ToString().PadLeft(3, '0')}"; tobeCreateList.Add(new EqpSpotInsRecordH() { id = SnowflakeIdHelper.NextId(), @@ -104,7 +106,7 @@ namespace JNPF.TaskScheduler.Listener is_repeat = item.is_repeat, repeat_post_info_user_id = item.repeat_post_info_user_id, is_send = item.is_send, - create_time = DateTime.Now, + create_time = now, repeat_user_id= item.repeat_user_id, spot_record_user_id=item.duty_user_id, status = Tnb.EquipMgr.SpotInsRecordExecutionStatus.TOBEEXECUTED