diff --git a/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs b/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs
index da88968..a2341ee 100644
--- a/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs
+++ b/DOAN.Admin.WebApi/Controllers/MES/product/ProWorkorderController.cs
@@ -384,5 +384,31 @@ namespace DOAN.Admin.WebApi.Controllers
return SUCCESS(response);
}
+
+ //TODO 获取甘特图
+ [HttpPost("getGanttChart")]
+ [AllowAnonymous]
+ public IActionResult GetGanttChart([FromBody] GanttChartQueryDto query)
+ {
+ var response = _ProWorkorderService.GetGanttChart(query);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 班组列表
+ ///
+ ///
+ ///
+ [HttpPost("GroupList")]
+ [AllowAnonymous]
+ public IActionResult GetGroupList([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);
+ }
}
}
diff --git a/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs b/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs
index 235f978..7456824 100644
--- a/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs
+++ b/DOAN.Model/MES/product/Dto/ProWorkorderDto.cs
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
+using static DOAN.Model.MES.product.Dto.GanttChartChildrenDto;
namespace DOAN.Model.MES.product.Dto
{
@@ -368,6 +369,42 @@ namespace DOAN.Model.MES.product.Dto
public int? ActualNum { get; set; }
}
+ ///
+ /// 甘特图接收参数DTO
+ ///
+ public class GanttChartQueryDto
+ {
+ ///
+ /// 组别
+ ///
+ public List GroupCode { get; set; }
+ ///
+ /// 日期
+ ///
+ public DateTime QueryDate { get; set; }
+ }
+ ///
+ /// 工单甘特图
+ ///
+ public class GanttChartDto
+ {
+ public string GroupCode { get; set; }
+
+ public double AllWorkTime { get; set; }
+ public List Workorders { get; set; }
+ }
+
+ // 工单详情DTO
+ public class GanttChartChildrenDto
+ {
+ public string Workorder { get; set; }
+ public string ProductionName { get; set; }
+ public double DeliveryNum { get; set; }
+ public double Beat { get; set; }
+ public DateTime? StartTime { get; set; }
+ public DateTime? EndTime { get; set; }
+ public double CalculatedValue { get; set; }
+ }
}
\ No newline at end of file
diff --git a/DOAN.Service/MES/product/IService/IProWorkorderService.cs b/DOAN.Service/MES/product/IService/IProWorkorderService.cs
index f1ec106..773711e 100644
--- a/DOAN.Service/MES/product/IService/IProWorkorderService.cs
+++ b/DOAN.Service/MES/product/IService/IProWorkorderService.cs
@@ -62,5 +62,7 @@ namespace DOAN.Service.MES.product.IService
List SearchBOMNum(string workorder_num);
int WorkOrderLog(string workorder, string log, string Operator);
+
+ public List GetGanttChart(GanttChartQueryDto query);
}
}
diff --git a/DOAN.Service/MES/product/ProWorkorderService.cs b/DOAN.Service/MES/product/ProWorkorderService.cs
index 0f788bd..1d794e8 100644
--- a/DOAN.Service/MES/product/ProWorkorderService.cs
+++ b/DOAN.Service/MES/product/ProWorkorderService.cs
@@ -1,42 +1,43 @@
-using System;
-using SqlSugar;
-using Infrastructure.Attribute;
+using Aliyun.OSS;
using DOAN.Model;
-
+using DOAN.Model.MES.base_;
+using DOAN.Model.MES.base_.Dto;
+using DOAN.Model.MES.BI.Dto;
+using DOAN.Model.MES.exception;
+using DOAN.Model.MES.group;
using DOAN.Model.MES.product;
using DOAN.Model.MES.product.Dto;
-
+using DOAN.Model.System;
using DOAN.Repository;
using DOAN.Service.MES.product.IService;
-
-using System.Linq;
-using SqlSugar.Extensions;
-using MimeKit.Tnef;
-using DOAN.Model.MES.base_;
-using Microsoft.AspNetCore.Http;
-using DOAN.Model.System;
-using MiniExcelLibs;
-using NPOI.SS.Formula.Functions;
-using NPOI.SS.UserModel;
-using NPOI.XSSF.UserModel;
-using System.Data.Common;
-using NPOI.XWPF.UserModel;
-using NPOI.HSSF.UserModel;
-using Microsoft.AspNetCore.Components.Forms;
-using System.Globalization;
-using System.ComponentModel;
-using NPOI.Util;
-using DOAN.Model.MES.base_.Dto;
-using Aliyun.OSS;
-using DOAN.Model.MES.group;
+using Infrastructure;
+using Infrastructure.Attribute;
+using Infrastructure.Converter;
using Mapster;
using Microsoft.AspNetCore.Authentication;
-using System.Reflection;
-using DOAN.Model.MES.exception;
-using Infrastructure;
-using Infrastructure.Converter;
-using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
+using Microsoft.Extensions.Logging;
+using Microsoft.IdentityModel.Tokens;
+using MimeKit.Tnef;
+using MiniExcelLibs;
+using NPOI.HSSF.UserModel;
+using NPOI.SS.Formula.Functions;
+using NPOI.SS.UserModel;
+using NPOI.Util;
+using NPOI.XSSF.UserModel;
+using NPOI.XWPF.UserModel;
+using Org.BouncyCastle.Asn1.Pkcs;
+using SqlSugar;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data.Common;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
namespace DOAN.Service.MES.product
{
@@ -1272,9 +1273,74 @@ namespace DOAN.Service.MES.product
}
+ return result;
+ }
+
+ ///
+ /// 甘特图
+ ///
+ ///
+ ///
+ public List GetGanttChart(GanttChartQueryDto query)
+ {
+ List groupCodes = new List();
+
+ // 确定要查询的组别(全部或指定)
+ if (query == null || query.GroupCode == null || !query.GroupCode.Any())
+ {
+ groupCodes = Context.Queryable()
+ .Where(p => !string.IsNullOrEmpty(p.GroupCode))
+ .Select(p => p.GroupCode)
+ .Distinct()
+ .ToList();
+ }
+ else
+ {
+ groupCodes = query.GroupCode
+ .Where(item => !string.IsNullOrEmpty(item))
+ .ToList();
+ }
+
+ var result = new List();
+
+ // 遍历每个组别,获取该组的所有工单
+ foreach (var groupCode in groupCodes)
+ {
+ var workorders = Context.Queryable()
+ .Where(p => p.GroupCode == groupCode)
+ .WhereIF(query != null && query.QueryDate > DateTime.MinValue,
+ p => p.WorkorderDate.Value == query.QueryDate)
+ .Select(p => new GanttChartChildrenDto
+ {
+ Workorder = p.Workorder,
+ ProductionName = p.ProductionName,
+ DeliveryNum = (double)p.DeliveryNum,
+ Beat = (double)p.Beat,
+ StartTime = p.StartTime,
+ EndTime = p.EndTime,
+ CalculatedValue = (double)(p.DeliveryNum * p.Beat /3600)
+ })
+ .ToList();
+
+ // 重新计算每组内的工单时间(从0点开始顺序排列)
+ var lastEndTime = new DateTime(query.QueryDate.Year, query.QueryDate.Month, query.QueryDate.Day, 8, 0, 0); // 当天0点
+ foreach (var workorder in workorders)
+ {
+ workorder.StartTime = lastEndTime;
+ workorder.EndTime = lastEndTime.AddHours(workorder.CalculatedValue);
+ lastEndTime = (DateTime)workorder.EndTime;
+ }
+
+ // 将当前组的数据添加到结果中
+ result.Add(new GanttChartDto
+ {
+ GroupCode = groupCode,
+ Workorders = workorders,
+ AllWorkTime = Math.Round(workorders.Sum(w => w.CalculatedValue), 1)
+ });
+ }
+
return result;
}
}
-
-
}
\ No newline at end of file