diff --git a/DOAN.Admin.WebApi/Controllers/MES/Product/ProReportworkController.cs b/DOAN.Admin.WebApi/Controllers/MES/Product/ProReportworkController.cs index 18fac8f..d27d862 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/Product/ProReportworkController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/Product/ProReportworkController.cs @@ -6,6 +6,8 @@ using DOAN.Admin.WebApi.Filters; using DOAN.Model.MES.product; using DOAN.Service.MES.product.IService; using Infrastructure.Converter; +using DOAN.Common; +using Microsoft.AspNetCore.Authorization; //创建时间:2024-12-03 namespace DOAN.Admin.WebApi.Controllers @@ -65,25 +67,25 @@ namespace DOAN.Admin.WebApi.Controllers } - /// - /// 查询工序列表 - /// - /// - [HttpPost("baseworkprocesseslist")] - [ActionPermissionFilter(Permission = "proreportwork:baseworkprocesseslist")] - public IActionResult QueryBaseWorkProcesses() - { - - var response = _ProReportworkService.GetBaseWorkProcesses(); - return SUCCESS(response); - } + /// + /// 查询工序列表 + /// + /// + [HttpPost("baseworkprocesseslist")] + [ActionPermissionFilter(Permission = "proreportwork:baseworkprocesseslist")] + public IActionResult QueryBaseWorkProcesses() + { - /// - /// 查询报工详情 - /// - /// - /// - [HttpGet("{Id}")] + var response = _ProReportworkService.GetBaseWorkProcesses(); + return SUCCESS(response); + } + + /// + /// 查询报工详情 + /// + /// + /// + [HttpGet("{Id}")] [ActionPermissionFilter(Permission = "proreportwork:query")] public IActionResult GetProReportwork(string Id) { @@ -138,7 +140,32 @@ namespace DOAN.Admin.WebApi.Controllers return ToResponse(_ProReportworkService.Delete(idArr)); } + /// + /// 导出报工数据 + /// + /// + /// + [HttpPost("export")] + [Log(Title = "报工导出", BusinessType = BusinessType.EXPORT)] + [AllowAnonymous] + public IActionResult WorkOrderExport([FromBody] ProReportworkQueryDto parm) + { + // 转换日期格式 + if (parm.JobDateTime != null && parm.JobDateTime.Length == 2) + { + parm.JobDateTime[0] = DOANConvertDate.ConvertLocalDate(parm.JobDateTime[0]); + parm.JobDateTime[1] = DOANConvertDate.ConvertLocalDate(parm.JobDateTime[1]); + } + // 忽略分页,执行全量数据查询 + parm.PageNum = 1; + parm.PageSize = int.MaxValue; + + var list = _ProReportworkService.GetExportList(parm); + + var result = ExportExcelMini(list, "proreportwork", "报工数据"); + return ExportExcel(result.Item2, result.Item1); + } } } \ No newline at end of file diff --git a/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs b/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs index e9a8009..fff3cd9 100644 --- a/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs +++ b/DOAN.Model/MES/Product/Dto/ProReportworkDto.cs @@ -1,17 +1,16 @@ - namespace DOAN.Model.BZFM.Dto { /// /// 报工查询对象 /// - public class ProReportworkQueryDto : PagerInfo + public class ProReportworkQueryDto : PagerInfo { public string Workorder { get; set; } - public int RouteId { get; set; } + public int? RouteId { get; set; } + + public int? ProcessId { get; set; } - public int ProcessId { get; set; } - public string Worker { get; set; } public DateTime[] JobDateTime { get; set; } = new DateTime[2]; @@ -23,47 +22,70 @@ namespace DOAN.Model.BZFM.Dto public class ProReportworkDto { [Required(ErrorMessage = "雪花不能为空")] + [ExcelColumn(Name = "系统编号")] public string Id { get; set; } + [ExcelColumn(Name = "工单编号")] + public string Workorder { get; set; } + + // 产成品号 + [ExcelColumn(Name = "主体品名")] + public string ProductionName { get; set; } + + [ExcelColumn(Name = "主体型号")] + public string ProductionCode { get; set; } + + // 原材料号 + [ExcelColumn(Name = "原材料编码")] + public string MaterialCode { get; set; } + + [ExcelColumn(Name = "原材料型号")] + public string MaterialName { get; set; } // 炉号 + [ExcelColumn(Name = "炉号")] public string StoveCode { get; set; } - public string Workorder { get; set; } - // 产成品号 - public string ProductionName { get; set; } - public string ProductionCode { get; set; } - // 原材料号 - public string MaterialCode { get; set; } - public string MaterialName { get; set; } // 领料批次号 + [ExcelColumn(Name = "领料批次号")] public string FeedOrder { get; set; } + [ExcelColumn(Name = "产线编号")] public string RouteId { get; set; } + [ExcelColumn(Name = "系统工序编号")] public int ProcessId { get; set; } + + [ExcelColumn(Name = "工序名称")] public string ProcessName { get; set; } + [ExcelColumn(Name = "计划数量")] public int? PlanNum { get; set; } + [ExcelColumn(Name = "完成数量")] public int? FinishNum { get; set; } + [ExcelColumn(Name = "不良品数量")] public int? BadNum { get; set; } + [ExcelColumn(Name = "作业员")] public string Worker { get; set; } + [ExcelColumn(Name = "作业日期")] public DateTime? JobDateTime { get; set; } + [ExcelColumn(Name = "备注")] public string Remark { get; set; } + [ExcelColumn(Name = "创建人")] public string CreatedBy { get; set; } + [ExcelColumn(Name = "创建时间")] public DateTime? CreatedTime { get; set; } + [ExcelColumn(Name = "更新人")] public string UpdatedBy { get; set; } + [ExcelColumn(Name = "更新时间")] public DateTime? UpdatedTime { get; set; } - - - } -} \ No newline at end of file +} diff --git a/DOAN.Model/MES/Product/Dto/ProWorkorderDto.cs b/DOAN.Model/MES/Product/Dto/ProWorkorderDto.cs index f738fe5..071f267 100644 --- a/DOAN.Model/MES/Product/Dto/ProWorkorderDto.cs +++ b/DOAN.Model/MES/Product/Dto/ProWorkorderDto.cs @@ -1,10 +1,9 @@ - namespace DOAN.Model.MES.product.Dto { /// /// 工单查询对象 /// - public class ProWorkorderQueryDto : PagerInfo + public class ProWorkorderQueryDto : PagerInfo { public string productionName { get; set; } @@ -12,7 +11,6 @@ namespace DOAN.Model.MES.product.Dto public string Workorder { get; set; } - public string RouteCode { get; set; } public string GroupCode { get; set; } @@ -38,11 +36,10 @@ namespace DOAN.Model.MES.product.Dto public class ProWorkorderExportDto { - public string [] WorkorderArray { get; set; } + public string[] WorkorderArray { get; set; } public string Path { get; set; } } - /// /// 工单输入输出对象 /// @@ -64,7 +61,6 @@ namespace DOAN.Model.MES.product.Dto public int? ShipmentNum { get; set; } public int? Sort { get; set; } - public DateTime? WorkorderDate { get; set; } public int? Priority { get; set; } @@ -93,7 +89,6 @@ namespace DOAN.Model.MES.product.Dto public string GroupCode { get; set; } - /// /// 进料单号(领料) /// @@ -121,13 +116,8 @@ namespace DOAN.Model.MES.product.Dto public string UpdatedBy { get; set; } public DateTime? UpdatedTime { get; set; } - - - - } - /// /// 工单备料进度 /// @@ -172,7 +162,6 @@ namespace DOAN.Model.MES.product.Dto /// /// 下一个工单号 /// - public string next_id { get; set; } } @@ -186,46 +175,40 @@ namespace DOAN.Model.MES.product.Dto /// public string IsMatch_material_code { get; set; } - /// /// 物料name在物料清单是否存在 /// public string IsMatch_material_name { get; set; } - /// /// 工艺路线是否存在 /// public string IsMatch_line { get; set; } - /// /// 组是否存在 /// public string IsMatch_group { get; set; } - /// /// 单位是否存在 /// public string IsMatch_Unit { get; set; } } + /// /// 工单BOM 及其所需数量 /// - public class WorkOrderBom { /// /// 子件编码 /// - public string SubInvCode { get; set; } /// /// 子件名称 /// - public string SubInvName { get; set; } /// @@ -236,13 +219,11 @@ namespace DOAN.Model.MES.product.Dto /// /// 使用总数量 /// - public string Iusequantity_All { get; set; } /// /// BOM版本号 /// - public string BOMVersion { get; set; } } @@ -252,90 +233,82 @@ namespace DOAN.Model.MES.product.Dto public class ProWorkorderTranceProgressDto { /// - /// 雪花id + /// 雪花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 RouteCode { get; set; } /// - /// 序号 + /// 序号 /// public int? Sort { get; set; } /// - /// 工单日期 + /// 工单日期 /// public DateTime? WorkorderDate { get; set; } /// - /// 优先级 1-100 + /// 优先级 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; } } - - -} \ No newline at end of file +} diff --git a/DOAN.Service/MES/Product/IService/IProReportworkService.cs b/DOAN.Service/MES/Product/IService/IProReportworkService.cs index 90a49ec..4172ff0 100644 --- a/DOAN.Service/MES/Product/IService/IProReportworkService.cs +++ b/DOAN.Service/MES/Product/IService/IProReportworkService.cs @@ -12,13 +12,13 @@ namespace DOAN.Service.MES.product.IService { List GetRoute(); - /// - /// 查询全部工序 - /// - /// - List GetBaseWorkProcesses(); + /// + /// 查询全部工序 + /// + /// + List GetBaseWorkProcesses(); - List GetProcessByRoute(int route_id); + List GetProcessByRoute(int route_id); PagedInfo GetList(ProReportworkQueryDto parm); ProReportwork01 GetInfo(string Id); @@ -27,6 +27,19 @@ namespace DOAN.Service.MES.product.IService ProReportwork01 AddProReportwork(ProReportwork01 parm); int UpdateProReportwork(ProReportwork01 parm); + /// + /// 导出报工数据 + /// + /// + /// + List ReportWorkExport(DateTime extportDate); + + /// + /// 导出报工数据(带查询参数) + /// + /// + /// + List GetExportList(ProReportworkQueryDto parm); } } diff --git a/DOAN.Service/MES/Product/ProReportworkService.cs b/DOAN.Service/MES/Product/ProReportworkService.cs index 54cb49e..87d05ae 100644 --- a/DOAN.Service/MES/Product/ProReportworkService.cs +++ b/DOAN.Service/MES/Product/ProReportworkService.cs @@ -56,6 +56,7 @@ public class ProReportworkService : BaseService, IProReportwork (q, w, wo) => new ProReportworkDto { + PlanNum = wo.PlanNum, ProcessName = w.Name, FeedOrder = wo.FeedOrder, ProductionName = wo.productionName, @@ -137,8 +138,8 @@ public class ProReportworkService : BaseService, IProReportwork ) //.AndIF(!string.IsNullOrEmpty(parm.Worker), it => it.Worker.Contains(parm.Worker)) .AndIF(!string.IsNullOrEmpty(parm.Worker), it => it.Worker.Contains(parm.Worker)) - .AndIF(parm.RouteId > 0, it => it.RouteId == parm.RouteId) - .AndIF(parm.ProcessId > 0, it => it.ProcessId == parm.ProcessId) + .AndIF(parm.RouteId.HasValue && parm.RouteId > 0, it => it.RouteId == parm.RouteId) + .AndIF(parm.ProcessId.HasValue && parm.ProcessId > 0, it => it.ProcessId == parm.ProcessId) .AndIF( parm.JobDateTime != null && parm.JobDateTime[0] > DateTime.MinValue, it => it.JobDateTime >= parm.JobDateTime[0] @@ -150,4 +151,64 @@ public class ProReportworkService : BaseService, IProReportwork return predicate; } + + /// + /// 执行报工数据查询 + /// + /// + /// + private List ExecuteExportQuery(ISugarQueryable query) + { + var response = Context + .Queryable(query) + .LeftJoin((q, w) => q.ProcessId == w.Id) + .LeftJoin((q, w, wo) => q.Workorder == wo.Workorder) + .OrderBy((q, w, wo) => new { q.Workorder, w.Id }) + .Select( + (q, w, wo) => + new ProReportworkDto + { + PlanNum = wo.PlanNum, + ProcessName = w.Name, + FeedOrder = wo.FeedOrder, + ProductionName = wo.productionName, + ProductionCode = wo.productionCode, + MaterialCode = wo.MaterialCode, + MaterialName = wo.MaterialName, + StoveCode = wo.StoveCode, + }, + true + ) + .ToList(); + + return response; + } + + /// + /// 导出报工数据 + /// + /// + /// + public List ReportWorkExport(DateTime extportDate) + { + var startDate = extportDate.Date; + var endDate = startDate.AddDays(1); + + var query = Queryable() + .Where(it => it.JobDateTime >= startDate && it.JobDateTime < endDate); + + return ExecuteExportQuery(query); + } + + /// + /// 导出报工数据(带查询参数) + /// + /// + /// + public List GetExportList(ProReportworkQueryDto parm) + { + var predicate = QueryExp(parm); + var query = Queryable().Where(predicate.ToExpression()); + return ExecuteExportQuery(query); + } }