From 36e4944e5e5bbfbc91b582f50f0af023ae172df8 Mon Sep 17 00:00:00 2001 From: qianjiawei <1184704771@qq.com> Date: Tue, 5 Sep 2023 16:15:18 +0800 Subject: [PATCH] 1 --- .../Entity/ToolMoldMaintainPlanRelation.cs | 3 + .../Entity/ToolMoldMaintainRunRecordD.cs | 2 + EquipMgr/Tnb.EquipMgr/Tnb.EquipMgr.csproj | 1 + .../ToolMoldMaintainRuleService.cs | 77 ++++++++++++++++++- .../ToolMoldMaintainRunService.cs | 31 +++++++- .../Listener/MoldMaintainTask.cs | 66 ++++++++++++++++ 6 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 taskschedule/Tnb.TaskScheduler/Listener/MoldMaintainTask.cs diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainPlanRelation.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainPlanRelation.cs index 7218b75f..4a0ec1b5 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainPlanRelation.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainPlanRelation.cs @@ -26,6 +26,9 @@ public partial class ToolMoldMaintainPlanRelation : BaseEntity /// public string mold_id { get; set; } = string.Empty; + public string group_id { get; set; } = string.Empty; + + } diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainRunRecordD.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainRunRecordD.cs index 04a23a42..20f684dc 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainRunRecordD.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMoldMaintainRunRecordD.cs @@ -39,4 +39,6 @@ public partial class ToolMoldMaintainRunRecordD : BaseEntity /// public string? check_item_name { get; set; } + public string? mainid { get; set; } + } diff --git a/EquipMgr/Tnb.EquipMgr/Tnb.EquipMgr.csproj b/EquipMgr/Tnb.EquipMgr/Tnb.EquipMgr.csproj index 94325618..ad5c6e86 100644 --- a/EquipMgr/Tnb.EquipMgr/Tnb.EquipMgr.csproj +++ b/EquipMgr/Tnb.EquipMgr/Tnb.EquipMgr.csproj @@ -11,6 +11,7 @@ + diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs index c39705c9..9490814b 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRuleService.cs @@ -2,11 +2,14 @@ using System.Collections.Generic; using System.Dynamic; using System.Linq; +using System.Reactive; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Aop.Api.Domain; using Aspose.Cells.Drawing; using JNPF.Common.Core.Manager; +using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Security; using JNPF.DependencyInjection; @@ -14,11 +17,18 @@ using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Interfaces.System; +using JNPF.TaskScheduler; +using JNPF.TaskScheduler.Entitys.Dto.TaskScheduler; +using JNPF.TaskScheduler.Entitys.Model; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; +using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.CSharp.Syntax; using SqlSugar; using Tnb.BasicData; +using Tnb.BasicData.Entities; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Interfaces; @@ -30,17 +40,78 @@ namespace Tnb.EquipMgr /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] - public class ToolMoldMaintainRuleService : IToolMoldMaintainRuleService, IDynamicApiController, ITransient + [OverideVisualDev(ModuleId)] + public class ToolMoldMaintainRuleService : IOverideVisualDevService, IToolMoldMaintainRuleService, IDynamicApiController, ITransient { + + private const string ModuleId = "26164864904981"; private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; private readonly IDictionaryDataService _dictionaryDataService; - - public ToolMoldMaintainRuleService(ISqlSugarRepository repository, IUserManager userManager, IDictionaryDataService dictionaryDataService) + private readonly TimeTaskService _timeTaskService; + private readonly IVisualDevService _visualDevService; + private readonly IRunService _runService; + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + public ToolMoldMaintainRuleService(ISqlSugarRepository repository, IUserManager userManager, IDictionaryDataService dictionaryDataService, TimeTaskService timeTaskService, IVisualDevService visualDevService, IRunService runService) { _db = repository.AsSugarClient(); _userManager = userManager; _dictionaryDataService = dictionaryDataService; + _timeTaskService = timeTaskService; + _visualDevService = visualDevService; + _runService = runService; + OverideFuncs.DeleteAsync = Delete; + OverideFuncs.CreateAsync = Create; + } + private async Task Create(VisualDevModelDataCrInput input) + { + int cycle = int.Parse(input.data["cycle"].ToString()!); + var startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds(long.Parse(input.data["startandend_date"].ToString()!)); + ToolMoldMaintainRule toolMoldMaintainRule = new ToolMoldMaintainRule(); + toolMoldMaintainRule.id = SnowflakeIdHelper.NextId(); + toolMoldMaintainRule.mode = input.data["mode"].ToString(); + toolMoldMaintainRule.cycle = cycle; + toolMoldMaintainRule.startandend_date = startTime.ToString("yyyy-MM-dd HH:mm:ss"); + await _db.Insertable(toolMoldMaintainRule).ExecuteCommandAsync(); + if (toolMoldMaintainRule.mode == "27118635748885") + { + string id = toolMoldMaintainRule.id; + var comtentModel = new ContentModel(); + comtentModel.cron = "0 0 9 "+ startTime.Day + "/"+ toolMoldMaintainRule.cycle + " * ?"; + comtentModel.interfaceId = ""; + comtentModel.interfaceName = ""; + comtentModel.parameter = new List(); + comtentModel.parameter!.Add(new InterfaceParameter() { field = "id", value = id, defaultValue = "" }); + comtentModel.localHostTaskId = "MoldMaintainTask/CreateTask"; + comtentModel.startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + comtentModel.TenantId = _userManager?.TenantId!; + comtentModel.TenantDbName = _userManager?.TenantDbName!; + comtentModel.ConnectionConfig = _userManager?.ConnectionConfig!; + comtentModel.Token = _userManager?.ToKen!; + TimeTaskCrInput timeTaskCrInput = new TimeTaskCrInput() + { + enCode = DateTime.Now.ToString("yyyyMMddHHmmss"), + fullName = "生成模具保养任务" + id, + executeType = "3", + executeContent = comtentModel.ToJsonString(), + description = "", + sortCode = 99, + enabledMark = 1, + }; + await _timeTaskService.DeleteByName(timeTaskCrInput.fullName); + await _timeTaskService.Create(timeTaskCrInput, false); + } + return await Task.FromResult(true); + } + private async Task Delete(string id) + { + var ToolMoldMaintainRule = await _db.Queryable().Where(p => p.id == id).FirstAsync(); + var ToolMoldMaintainRuleRelations = await _db.Queryable().Where(p => p.rule_id == id).ToListAsync(); + await _timeTaskService.DeleteByName("生成模具保养任务" + id); + await _db.Ado.BeginTranAsync(); + await _db.Deleteable(ToolMoldMaintainRule).ExecuteCommandAsync(); + await _db.Deleteable(ToolMoldMaintainRuleRelations).ExecuteCommandAsync(); + await _db.Ado.CommitTranAsync(); } /// /// 根据规则Id获取匹配的模具列表 diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs index f9b3691d..72038c0d 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRunService.cs @@ -135,6 +135,10 @@ namespace Tnb.EquipMgr item_name = e.name, }) .ToListAsync(); + //新增功能 + var ToolMoldMaintainPlanRelation= _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id&& !string.IsNullOrEmpty(a.group_id)).First(); + if (ToolMoldMaintainPlanRelation != null) + items = items.Where(a => a.item_group_id == ToolMoldMaintainPlanRelation.group_id).ToList(); var checkItems = await _db.Queryable().Where(it => it.plan_id == input.plan_id && it.mold_id == input.mold_id).Select(it => new { plan_id = it.plan_id, @@ -183,7 +187,7 @@ namespace Tnb.EquipMgr var isOk = await _db.Updateable(mold).Where(it => it.id == input.mold_id).ExecuteCommandHasChangeAsync(); if (!isOk) throw Oops.Oh(ErrorCode.COM1001); var plan = await _db.Queryable().LeftJoin((a, b) => a.maintain_plan_id == b.id) - .Where(a => a.mold_id == input.mold_id).Select((a, b) => b).FirstAsync(); + .Where(a => a.mold_id == input.mold_id && a.maintain_plan_id == input.plan_id).Select((a, b) => b).FirstAsync(); if (plan is not null) { @@ -200,6 +204,10 @@ namespace Tnb.EquipMgr var row = await _db.Insertable(record).ExecuteCommandAsync(); if (row < 1) throw Oops.Oh(ErrorCode.COM1001); + + var groupids = _db.Queryable().Where(a => !string.IsNullOrEmpty(a.group_id) && a.mold_id == input.mold_id && a.maintain_plan_id == input.plan_id).ToList().Select(p => p.group_id); + + /* var maintainInfos = await _db.Queryable() .LeftJoin((a, b) => a.item_group_id == b.id) .LeftJoin((a, b, c) => b.id == c.item_group_id) @@ -213,12 +221,27 @@ namespace Tnb.EquipMgr check_item_name = d.name }) .ToListAsync(); + */ + var maintainInfos = await _db.Queryable() + .LeftJoin((a, b) => a.item_group_id == b.id) + .LeftJoin((a, b, c) => b.id == c.item_group_id) + .LeftJoin((a, b, c, d) => c.item_id == d.id) + .WhereIF(groupids.Count() > 0, (a) => groupids.Contains(a.item_group_id)) + .Where(a => a.mold_id == input.mold_id) + .Select((a, b, c, d) => new + { + group_id = b.id, + group_name = b.name, + check_item_id = d.id, + check_item_name = d.name + }).ToListAsync(); if (maintainInfos?.Count > 0) { List recordDs = new(); foreach (var info in maintainInfos) { ToolMoldMaintainRunRecordD record_d = new(); + record_d.mainid = record.id; record_d.group_id = info.group_id; record_d.group_name = info.group_name; record_d.check_item_id = info.check_item_id; @@ -253,6 +276,7 @@ namespace Tnb.EquipMgr record.mold_id = input.mold_id; record.item_group_id = item.item_group_id; record.item_id = item.item_id; + record.status = 1; records.Add(record); } var row = await _db.Insertable(records).ExecuteCommandAsync(); @@ -283,6 +307,11 @@ namespace Tnb.EquipMgr item_name = e.name, }) .ToListAsync(); + //新增功能 + var ToolMoldMaintainPlanRelation = _db.Queryable().Where((a) => a.maintain_plan_id == input.plan_id && a.mold_id == input.mold_id && !string.IsNullOrEmpty(a.group_id)).First(); + if (ToolMoldMaintainPlanRelation != null) + items = items.Where(a => a.item_group_id == ToolMoldMaintainPlanRelation.group_id).ToList(); + var checkItems = await _db.Queryable().Where(it => it.plan_id == input.plan_id && it.mold_id == input.mold_id).Select(it => new { plan_id = it.plan_id, diff --git a/taskschedule/Tnb.TaskScheduler/Listener/MoldMaintainTask.cs b/taskschedule/Tnb.TaskScheduler/Listener/MoldMaintainTask.cs new file mode 100644 index 00000000..6bcbd9ff --- /dev/null +++ b/taskschedule/Tnb.TaskScheduler/Listener/MoldMaintainTask.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JNPF; +using JNPF.Common.Security; +using JNPF.Systems.Entitys.System; +using JNPF.TaskScheduler; +using JNPF.TaskScheduler.Entitys.Model; +using SqlSugar; +using Tnb.EquipMgr.Entities; +using Tnb.ProductionMgr.Entities; +using Tnb.QcMgr.Entities; +using Tnb.QcMgr.Entities.Entity; + +namespace Tnb.TaskScheduler.Listener +{ + internal class MoldMaintainTask : ISpareTimeWorker + { + private ISqlSugarRepository repository => App.GetService>(); + [SpareTime("0 0 0 * * ?", "生成模具保养任务", ExecuteType = SpareTimeExecuteTypes.Serial, StartNow = false)] + public async void CreateTask(SpareTimer timer, long count) + { + try + { + var timeTaskEntity = await repository.AsSugarClient().Queryable().Where(p => p.Id == timer.WorkerName && p.EnabledMark == 1).FirstAsync(); + if (timeTaskEntity == null) + return; + ContentModel? comtentModel = timeTaskEntity.ExecuteContent.ToObject(); + var ToolMoldMaintainRule = await repository.AsSugarClient().Queryable().Where(p => p.id == comtentModel.parameter.Where(p => p.field == "id").First().value).FirstAsync(); + if (ToolMoldMaintainRule == null) + return; + var ToolMoldMaintainRuleRelations= await repository.AsSugarClient().Queryable().Where(p => p.rule_id == ToolMoldMaintainRule.id).ToListAsync(); + if (ToolMoldMaintainRuleRelations.Count() > 0) + { + var now = DateTime.Now; + Random rNum = new Random(); + ToolMoldMaintainPlan toolMoldMaintainPlan=new ToolMoldMaintainPlan(); + toolMoldMaintainPlan.id = SnowflakeIdHelper.NextId(); + toolMoldMaintainPlan.plan_code = "JHDM" + now.ToString("yyyyMMdd") + rNum.Next(1000, 9999).ToString(); + toolMoldMaintainPlan.mode = ToolMoldMaintainRule.mode; + toolMoldMaintainPlan.status = "UnMaintain"; + toolMoldMaintainPlan.plan_start_date = now; + toolMoldMaintainPlan.plan_end_date = now.AddDays((double)ToolMoldMaintainRule.cycle!); + List toolMoldMaintainPlanRelations = new List(); + foreach (var ToolMoldMaintainRuleRelation in ToolMoldMaintainRuleRelations) + { + ToolMoldMaintainPlanRelation toolMoldMaintainPlanRelation = new ToolMoldMaintainPlanRelation(); + toolMoldMaintainPlanRelation.id= SnowflakeIdHelper.NextId(); + toolMoldMaintainPlanRelation.maintain_plan_id = toolMoldMaintainPlan.id; + toolMoldMaintainPlanRelation.mold_id = ToolMoldMaintainRuleRelation.mold_id; + toolMoldMaintainPlanRelation.group_id = ToolMoldMaintainRuleRelation.item_group_id; + toolMoldMaintainPlanRelations.Add(toolMoldMaintainPlanRelation); + } + await repository.AsSugarClient().Insertable(toolMoldMaintainPlanRelations).ExecuteCommandAsync(); + await repository.AsSugarClient().Insertable(toolMoldMaintainPlan).ExecuteCommandAsync(); + } + } + catch (Exception) + { + } + + } + } +}