using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MadRunFabric.Common; using Microsoft.AspNetCore.Authorization; using DistributionApi.IRepositories; using Microsoft.Extensions.Logging; using Api.SignToken; using MadRunFabric.Model; using MongoDB.Bson; using System.Security.Claims; namespace DistributionApi.Controllers { /// /// 自动定时计划 /// [Authorize] [ApiVersion("6.0")] [Produces("application/json")] [Route("api/[controller]")] public class HangfirePlanTimeingController : BaseController { private readonly ILogger _logger; private readonly IHangfirePlan_DistributionRepository _hangfireplan_distributionrepository; private readonly IHangfireService _hangfireService; public HangfirePlanTimeingController( ILogger logger, IHangfirePlan_DistributionRepository hangfireplan_distributionrepository, IHangfireService hangfireService ) { _logger = logger; _hangfireplan_distributionrepository = hangfireplan_distributionrepository; _hangfireService = hangfireService; } /// /// 自动定时计划 - 自动分配 /// 配送岗 抢单时效 3分钟(某单子此时间内没人抢,系统强制分配) /// 配送岗 待配送工单滞留时效 30分钟(超时就记一次超时违规记录,可以有违规申诉) /// /// /// /// /// [HttpPost("addautoassign")] public async Task AddAutoAssignAsync(int plancycle, int planinterval) { var usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; var model = new HangfirePlan_Distribution(); model.id = ObjectId.GenerateNewId().ToString(); model.wotype = 2; model.plantype = (int)EnumDistributionPlanType.timing; model.plancycle = plancycle; model.planinterval = planinterval; model.planstate = (int)EnumDistributionPlanState.start;//默认计划开启 model.createby = usercode; model.createtime = DateTime.Now; model.isdelete = 0; bool b = await _hangfireplan_distributionrepository.Add(model); if (b) { SetTask(model.id, model.wotype, model.plancycle, model.planinterval); return Success("添加成功"); } return Error("添加失败"); } ///// ///// 获取计划定时事件详情 ///// ///// ///// //[AllowAnonymous] //[HttpPost("gethangfireplaninfo")] //public async Task GetHangfirePlanInfo(string planid) //{ // var model = await _hangfireplan_distributionrepository.GetSingle(planid); // if (model!=null) // { // return Success("添加成功", model); // } // return Error("添加失败"); //} #region 设置定时任务 private void SetTask(string id, int wotype, int plancycle, int planinterval) { _hangfireService.SaveAutoAssign(id, wotype, plancycle, planinterval); } #endregion } }