From c3444a2a74b60c9fb1aa5587ba910f9efc835377 Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Thu, 14 Nov 2024 16:47:47 +0800 Subject: [PATCH] =?UTF-8?q?pad=20=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JobKanban/WorkOrderProgressController.cs | 20 +++++- .../IService/IWorkorderProgressService.cs | 2 + .../JobKanban/WorkorderProgressService.cs | 65 ++++++++++++++++--- .../TaskScheduler/Job_MovSlow_Execute.cs | 56 ++++++++++++++++ 4 files changed, 132 insertions(+), 11 deletions(-) create mode 100644 DOAN.Tasks/TaskScheduler/Job_MovSlow_Execute.cs diff --git a/DOAN.Admin.WebApi/Controllers/JobKanban/WorkOrderProgressController.cs b/DOAN.Admin.WebApi/Controllers/JobKanban/WorkOrderProgressController.cs index a326790..eed2187 100644 --- a/DOAN.Admin.WebApi/Controllers/JobKanban/WorkOrderProgressController.cs +++ b/DOAN.Admin.WebApi/Controllers/JobKanban/WorkOrderProgressController.cs @@ -64,6 +64,7 @@ public class WorkOrderProgressController : BaseController var response = workorderProgressService.GetWorkOrderListNoFinish(today, line_code, group_code); return SUCCESS(response); } + //TODO 获取全部工单 //TODO 根据班组 ,产线 和日期获取all工单 [HttpGet("get_workorder_list")] @@ -167,6 +168,22 @@ public class WorkOrderProgressController : BaseController return SUCCESS(response); } + //TODO 无需防错就报工 + /// + /// 无需防错就报工 + /// + /// 工单 + /// 报工数 + /// + [HttpGet("no_errorProofingAndReportingReport")] + public IActionResult NoErrorProofingAndReportingReport(string workorder,int reportNum) + { + if (string.IsNullOrEmpty(workorder) || reportNum<=0) + throw new CustomException("workorder或者报工数为0"); + var response = workorderProgressService.NoErrorProofingAndReportingReport(workorder, reportNum); + return SUCCESS(response); + } + /// /// TODO 完成 工单 /// @@ -216,7 +233,4 @@ public class WorkOrderProgressController : BaseController var response = workorderProgressService.GetWorkOrderScanCodeInfo(workorder); return SUCCESS(response); } - - - } \ No newline at end of file diff --git a/DOAN.Service/JobKanban/IService/IWorkorderProgressService.cs b/DOAN.Service/JobKanban/IService/IWorkorderProgressService.cs index 25a8ad5..67afa0e 100644 --- a/DOAN.Service/JobKanban/IService/IWorkorderProgressService.cs +++ b/DOAN.Service/JobKanban/IService/IWorkorderProgressService.cs @@ -35,6 +35,8 @@ namespace DOAN.Service.JobKanban.IService int ErrorProofingAndReportingWork(string workorder, string labelContext); + int NoErrorProofingAndReportingReport(string wokorder, int reportNum); + int FinishWorkorder(string workorder, int finish_num); (int ,int) GetWorkOrderProgress(string workorder); diff --git a/DOAN.Service/JobKanban/WorkorderProgressService.cs b/DOAN.Service/JobKanban/WorkorderProgressService.cs index bfbd456..8de5f05 100644 --- a/DOAN.Service/JobKanban/WorkorderProgressService.cs +++ b/DOAN.Service/JobKanban/WorkorderProgressService.cs @@ -32,6 +32,7 @@ public class WorkorderProgressService : BaseService, IWorkorderPro .Where(it => it.WorkorderDate == handleDate) .ToList(); } + public List GetReportWorkRecord(string group_code, string line_code, DateTime handleDate) { @@ -248,6 +249,55 @@ public class WorkorderProgressService : BaseService, IWorkorderPro } + public int NoErrorProofingAndReportingReport(string wokorder, int reportNum) + { + int result = 0; + var checked_workorder = Context.Queryable().Where(it => it.FkWorkorder == wokorder) + .Any(); + if (checked_workorder) + { + //修改 + result = Context.Updateable().Where(it => it.FkWorkorder == wokorder) + .SetColumns(it => it.FinishedNum == reportNum) + .SetColumns(it=>it.UpdatedTime==DateTime.Now) + .SetColumns(it=>it.UpdatedBy=="PDA") + .ExecuteCommand(); + + } + else + { + // 新增 + + var selected_workorder = Context.Queryable().Where(it => it.Workorder == wokorder) + .First(); + if (selected_workorder != null) + { + var reportWork = new ProReportwork(); + reportWork.Id = XueHua; + reportWork.FkWorkorder = wokorder; + reportWork.DispatchNum = selected_workorder.DeliveryNum; + reportWork.FinishedNum = reportNum; + reportWork.GroupCode = selected_workorder.GroupCode; + reportWork.LineCode = selected_workorder.LineCode; + reportWork.CreatedTime = DateTime.Now; + reportWork.CreatedBy = "kanban"; + reportWork.UpdatedBy = "kanban"; + reportWork.UpdatedTime = DateTime.Now; + result= Context.Insertable(reportWork).ExecuteCommand(); + } + else + { + return -1; + } + + + } + + return result; + + } + + public int FinishWorkorder(string workorder, int finish_num) { var result = 0; @@ -283,6 +333,13 @@ public class WorkorderProgressService : BaseService, IWorkorderPro return tuple; } + + //查询工单下的扫描条码信息 + public List GetWorkOrderScanCodeInfo(string workorder) + { + return Context.Queryable().Where(it => it.Workorder == workorder).ToList(); + } + /// /// 根据工单号 查询每个工单号进度 /// @@ -309,12 +366,4 @@ public class WorkorderProgressService : BaseService, IWorkorderPro return progress; } - - - - //查询工单下的扫描条码信息 - public List GetWorkOrderScanCodeInfo(string workorder) - { - return Context.Queryable().Where(it => it.Workorder == workorder).ToList(); - } } \ No newline at end of file diff --git a/DOAN.Tasks/TaskScheduler/Job_MovSlow_Execute.cs b/DOAN.Tasks/TaskScheduler/Job_MovSlow_Execute.cs new file mode 100644 index 0000000..ebda345 --- /dev/null +++ b/DOAN.Tasks/TaskScheduler/Job_MovSlow_Execute.cs @@ -0,0 +1,56 @@ +using Infrastructure; +using Infrastructure.Attribute; +using Microsoft.Extensions.DependencyInjection; +using Quartz; +using Quartz.Impl.Triggers; +using Quartz.Impl; +using SqlSugar.IOC; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DOAN.Model.System; +using DOAN.Service.MES.dev.IService; +using DOAN.Service.MES.mm.IService; + +namespace DOAN.Tasks.TaskScheduler +{ + + [AppService(ServiceType = typeof(Job_MovSlow_Execute), ServiceLifetime = LifeTime.Scoped)] + public class Job_MovSlow_Execute : JobBase, IJob + { + private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly IMmSlowMoveMaterialService MmSlowMoveMaterialService; + + public Job_MovSlow_Execute(IMmSlowMoveMaterialService MmSlowMoveMaterialService) + { + this.MmSlowMoveMaterialService = MmSlowMoveMaterialService; + } + + + public async Task Execute(IJobExecutionContext context) + { + await ExecuteJob(context, async () => await Run(context)); + } + + public async Task Run(IJobExecutionContext context) + { + AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; + //var info = await tasksQzService.CopyNew().GetByIdAsync(trigger.JobName); + // CopyNew 在多线程环境中,为每个线程或任务创建新的 SugarScope 实例以避免线程安全问题 + var info = await DbScoped.SugarScope.CopyNew().Queryable().FirstAsync(f => f.ID == trigger.JobName); + if (info == null) + { + throw new CustomException($"任务{trigger?.JobName}呆滞品任务调度请求执行失败,任务不存在"); + } + + bool result = MmSlowMoveMaterialService.GenerateShopFloorSluggishProducts(DateTime.Today, "任务调度"); + logger.Info($"(job)任务【{info.Name}】设备管理调度请求执行结果=" + result); + + } + } + +} + +