From 66f27cd822bd8bd05ab027dde5bd6db706ed7faf Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Wed, 16 Oct 2024 16:17:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=BF=9B=E5=BA=A6=E8=B7=9F?= =?UTF-8?q?=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MES/product/ProWorkorderController.cs | 14 +++ DOAN.Model/MES/product/Dto/ProWorkorderDto.cs | 108 ++++++++++++++++++ DOAN.Model/MES/product/ProWorkorder.cs | 12 ++ DOAN.Repository/BaseRepository.cs | 25 ++++ .../JobKanban/WorkorderProgressService.cs | 23 ++-- .../product/IService/IProWorkorderService.cs | 2 + .../MES/product/ProWorkorderService.cs | 30 +++++ 7 files changed, 204 insertions(+), 10 deletions(-) diff --git a/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs b/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs index 901d35f..3c05ed0 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs @@ -15,6 +15,7 @@ using DOAN.Model.MES.base_.Dto; using Microsoft.AspNetCore.Http; using Aliyun.OSS; using System; +using DOAN.Infrastructure; //创建时间:2024-07-16 namespace DOAN.Admin.WebApi.Controllers @@ -45,6 +46,8 @@ namespace DOAN.Admin.WebApi.Controllers [ActionPermissionFilter(Permission = "productManagement:proworkorder:list")] public IActionResult QueryProWorkorder([FromBody] ProWorkorderQueryDto parm) { + parm.WorkorderDate[0]=ConvertDateTime.ConvertLocalDate(parm.WorkorderDate[0]); + parm.WorkorderDate[1]=ConvertDateTime.ConvertLocalDate(parm.WorkorderDate[1]); var response = _ProWorkorderService.GetList(parm); return SUCCESS(response); } @@ -326,6 +329,17 @@ namespace DOAN.Admin.WebApi.Controllers return SUCCESS(response); } + //TODO 获取工单进度追溯 + [HttpPost("get_workorder_trace_progress")] + public IActionResult GetWorkorderTraceProgressList([FromBody]ProWorkorderQueryDto query) + { + query.WorkorderDate[0] = ConvertDateTime.ConvertLocalDate(query.WorkorderDate[0]); + query.WorkorderDate[1] = ConvertDateTime.ConvertLocalDate(query.WorkorderDate[1]); + if (query == null) { throw new Exception("query为空"); } + var response= _ProWorkorderService.GetWorkorderTraceProgressList(query); + + return SUCCESS(response); + } } } diff --git a/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs b/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs index e1ca83a..4717b37 100644 --- a/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs +++ b/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs @@ -122,6 +122,18 @@ namespace DOAN.Model.MES.product.Dto /// public int? Status { get; set; } + + ///// + ///// 工单开始时间 + ///// + + //public DateTime? StartTime { get; set; } + + ///// + ///// 工单结束时间 + + //public DateTime? EndTime { get; set; } + /// /// 备注 /// @@ -281,6 +293,102 @@ namespace DOAN.Model.MES.product.Dto } + /// + /// 工单进度追溯 + /// + public class ProWorkorderTranceProgressDto + { + + /// + /// 雪花id + /// + public string Id { get; set; } + + /// + /// 工单号 + /// + public string Workorder { get; set; } + + /// + /// 存货编码 + /// + public string ProductionCode { get; set; } + + /// + /// 产品名称 + /// + public string ProductionName { get; set; } + + /// + /// 规格型号 + /// + public string Specification { get; set; } + + + /// + /// 交货数量 + /// + public int? DeliveryNum { get; set; } + + /// + /// 组别 + /// + public string GroupCode { get; set; } + + /// + /// 线别 + /// + public string LineCode { get; set; } + + /// + /// 序号 + /// + public int? Sort { get; set; } + + /// + /// 工单日期 + /// + public DateTime? WorkorderDate { get; set; } + + /// + /// 优先级 1-100 + /// + public int? Priority { get; set; } + + /// + /// 工单状态 + /// + public int? Status { get; set; } + + + /// + /// 工单开始时间 + /// + + public DateTime? StartTime { get; set; } + + /// + /// 工单结束时间 + + public DateTime? EndTime { get; set; } + + + + /// + /// 计划数量 + /// + public int? PlanNum { get; set; } + + + + /// + /// 实际数量 + /// + public int? ActualNum { get; set; } + + + + } diff --git a/DOAN.Model/MES/product/ProWorkorder.cs b/DOAN.Model/MES/product/ProWorkorder.cs index 2e59fde..10f36e7 100644 --- a/DOAN.Model/MES/product/ProWorkorder.cs +++ b/DOAN.Model/MES/product/ProWorkorder.cs @@ -106,6 +106,18 @@ namespace DOAN.Model.MES.product /// public int? Status { get; set; } + /// + /// 工单开始时间 + /// + [SugarColumn(ColumnName = "start_time")] + public DateTime? StartTime { get; set; } + + /// + /// 工单结束时间 + /// + [SugarColumn(ColumnName = "end_time")] + public DateTime? EndTime { get; set; } + /// /// 备注 /// diff --git a/DOAN.Repository/BaseRepository.cs b/DOAN.Repository/BaseRepository.cs index 3794780..571203d 100644 --- a/DOAN.Repository/BaseRepository.cs +++ b/DOAN.Repository/BaseRepository.cs @@ -363,5 +363,30 @@ namespace DOAN.Repository page.Result = result.Adapt>(); return page; } + /// + /// 分页查询 不转 + /// + /// + /// + /// + /// + public static PagedInfo ToPage_NO_Convert(this ISugarQueryable source, PagerInfo parm) + { + var page = new PagedInfo(); + var total = 0; + page.PageSize = parm.PageSize; + page.PageIndex = parm.PageNum; + if (parm.Sort.IsNotEmpty()) + { + source.OrderByPropertyName(parm.Sort, parm.SortType.Contains("desc") ? OrderByType.Desc : OrderByType.Asc); + } + var result = source + //.OrderByIF(parm.Sort.IsNotEmpty(), $"{parm.Sort.ToSqlFilter()} {(!string.IsNullOrWhiteSpace(parm.SortType) && parm.SortType.Contains("desc") ? "desc" : "asc")}") + .ToPageList(parm.PageNum, parm.PageSize, ref total); + + page.TotalNum = total; + page.Result = result; + return page; + } } } diff --git a/DOAN.Service/JobKanban/WorkorderProgressService.cs b/DOAN.Service/JobKanban/WorkorderProgressService.cs index 61c3367..6712947 100644 --- a/DOAN.Service/JobKanban/WorkorderProgressService.cs +++ b/DOAN.Service/JobKanban/WorkorderProgressService.cs @@ -175,23 +175,26 @@ namespace DOAN.Service.JobKanban .ExecuteCommand(); - result= Context.Updateable().SetColumns(it => it.Status == 2) - .Where(it => it.Workorder == workorder).ExecuteCommand(); + result = Context.Updateable().SetColumns(it => it.Status == 2) + .SetColumns(it => it.StartTime == DateTime.Now) + .Where(it => it.Workorder == workorder).ExecuteCommand(); }); return result; - + } public int FinishWorkOrder(string workorder) { - return Context.Updateable().SetColumns(it => it.Status == 3) + return Context.Updateable() + .SetColumns(it => it.Status == 3) + .SetColumns(it=>it.EndTime == DateTime.Now) .Where(it => it.Workorder == workorder).ExecuteCommand(); } - public ProWorkorder GetProductingWorkorder( string line_code, DateTime handleDate) + public ProWorkorder GetProductingWorkorder(string line_code, DateTime handleDate) { //TODO 这个日期有问题?????? - if(handleDate.Kind==DateTimeKind.Utc) + if (handleDate.Kind == DateTimeKind.Utc) { handleDate = handleDate.ToLocalTime().Date; @@ -200,7 +203,7 @@ namespace DOAN.Service.JobKanban { handleDate = handleDate.Date; } - + return Context.Queryable() .Where(it => it.LineCode == line_code) @@ -213,7 +216,7 @@ namespace DOAN.Service.JobKanban public int AddLabelLog(string labelContext, string workOrder) { - ProLabelTraceLog log = new ProLabelTraceLog(); + ProLabelTraceLog log = new ProLabelTraceLog(); log.Id = XueHua; log.LabelContext = labelContext; log.Workorder = workOrder; @@ -221,7 +224,7 @@ namespace DOAN.Service.JobKanban log.CreatedTime = DateTime.Now; log.CreatedBy = "MES"; - return Context.Insertable(log).ExecuteCommand(); + return Context.Insertable(log).ExecuteCommand(); } @@ -235,7 +238,7 @@ namespace DOAN.Service.JobKanban .ExecuteCommand(); } - + public int FinishAndReportWorkorder(string workorder, int finish_num) { diff --git a/DOAN.Service/MES/product/IService/IProWorkorderService.cs b/DOAN.Service/MES/product/IService/IProWorkorderService.cs index 243447e..35a443c 100644 --- a/DOAN.Service/MES/product/IService/IProWorkorderService.cs +++ b/DOAN.Service/MES/product/IService/IProWorkorderService.cs @@ -22,6 +22,8 @@ namespace DOAN.Service.MES.product.IService { PagedInfo GetList(ProWorkorderQueryDto parm); + PagedInfo GetWorkorderTraceProgressList(ProWorkorderQueryDto query); + ProWorkorder GetInfo(string Id); ProWorkorder AddProWorkorder(ProWorkorder parm); diff --git a/DOAN.Service/MES/product/ProWorkorderService.cs b/DOAN.Service/MES/product/ProWorkorderService.cs index 06e8d3e..d0430fc 100644 --- a/DOAN.Service/MES/product/ProWorkorderService.cs +++ b/DOAN.Service/MES/product/ProWorkorderService.cs @@ -928,6 +928,36 @@ namespace DOAN.Service.MES.product } + /// + /// 工单进度跟踪 + /// + /// + /// + public PagedInfo GetWorkorderTraceProgressList(ProWorkorderQueryDto query) + { + + var predicate = Expressionable.Create() + .AndIF(!string.IsNullOrEmpty(query.ProductionName), it => it.ProductionName.Contains(query.ProductionName)) + .AndIF(!string.IsNullOrEmpty(query.ProductionCode), it => it.ProductionCode.Contains(query.ProductionCode)) + .AndIF(!string.IsNullOrEmpty(query.LineCode), it => it.LineCode == query.LineCode) + .AndIF(!string.IsNullOrEmpty(query.GroupCode), it => it.GroupCode == query.GroupCode) + .AndIF(query.WorkorderDate != null && query.WorkorderDate[0] > DateTime.MinValue, it => it.WorkorderDate >= parm.WorkorderDate[0]) + .AndIF(query.WorkorderDate != null && query.WorkorderDate[1] > DateTime.MinValue, it => it.WorkorderDate <= parm.WorkorderDate[1]) + + ; + var query2 = Queryable() + .Where(predicate.ToExpression()); + + return Context.Queryable(query2).LeftJoin((q, r) => q.Workorder == r.FkWorkorder) + .Select((q, r) => new ProWorkorderTranceProgressDto() + { + PlanNum = q.DeliveryNum, + ActualNum = r.FinishedNum, + }, true).ToPage_NO_Convert(query); + + + } + }