using Kingdee.BOS; using Kingdee.BOS.App; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using ExtensionMethods; using Kingdee.BOS.Log; namespace MonthlyProductionSchedule { [Description("生产计划表-库存记录-定时任务"), HotUpdate] public class AutoRecordsInventoryPlugIn : IScheduleService { public void Run(Context ctx, Schedule schedule) { try { var executeDay = schedule.Parameters.Long2Int(); if (executeDay == 0) executeDay = 20; if (executeDay > 28) executeDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1).Day; var newDate = DateTime.Now; var appointDate = new DateTime(newDate.Year, newDate.Month, executeDay); Logger.Info(schedule.Name, $"记录物料即时库存检测:约定记录时间[{appointDate:yyyy-MM-dd}],当前时间[{newDate:yyyy-MM-dd}]"); if (newDate.Day == executeDay) { try { Logger.Info(schedule.Name, "记录物料即时库存start..."); ////如果这个日期下已保存有数据,先删除 //var delSql = $"DELETE FROM T_MATERIAL_INVENTORY_MONTH_RECORD WHERE RECORDDAY = {newDate.Day} AND RECORDMONTH = {newDate.Month} AND RECORDYEAR = {newDate.Year} "; //var delNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{delSql}"); //Logger.Info(schedule.Name, $"删除物料即时库存数据成功!(本次删除{delNum}条)"); var intoSql = $@" PROC_SAVE_MATERIAL_INVENTORY {ctx.UserLocale.LCID} ,{newDate.Year} ,{newDate.Month} ,{newDate.Day} "; var intoNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{intoSql}"); Logger.Info(schedule.Name, $"记录物料即时库存成功!(本次记录{intoNum}条)"); } catch (Exception ex) { Logger.Error(schedule.Name, ex.Message, ex); } finally { Logger.Info(schedule.Name, "记录物料即时库存end..."); } } } catch (Exception ex) { Logger.Error(schedule.Name, ex.Message, ex); } //DBServiceHelper.Execute(ctx, $"/*dialect*/ EXEC PROC_PPL_AutoSaveCurrentData {tableName} , {newDate.ToLongFormat()} ,{startDate.ToShortFormat()} ,{endDate.ToShortFormat()} ,{year} ,{month}"); } } }