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);
+ }
}