using DOAN.Admin.WebApi.Filters;
using DOAN.Model;
using DOAN.Model.MES.product.Dto;
using DOAN.Service.MES.group.IService;
using DOAN.Service.MES.product;
using DOAN.Service.MES.product.IService;
using Microsoft.AspNetCore.Mvc;
namespace DOAN.WebApi.Controllers.MES.product
{
[Verify]
[Route("mes/productManagement/Proweekplan")]
public class ProweekplanManageController : BaseController
{
///
/// 周计划表接口
///
private readonly IProweekplanManageService _proweekplanManageService;
public ProweekplanManageController(IProweekplanManageService proweekplanManageService)
{
_proweekplanManageService = proweekplanManageService;
}
//TODO 查询计划列表 年周零件号
[HttpPost("searchWeekplan")]
[Log(Title = "查询计划列表 年周零件号", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)]
public IActionResult SearchWeekplan([FromBody] WeekplanQueryDto weekplanQuery)
{
PagedInfo result = _proweekplanManageService.SearchWeekplan(weekplanQuery);
return SUCCESS(result);
}
//TODO excel导入计划
///
/// 导入周计划
///
/// 使用IFromFile必须使用name属性否则获取不到文件
/// 导入成功数 若-1 则excel读取异常
[HttpPost("importWeekplan")]
[Log(Title = "生产工单导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)]
[AllowAnonymous]
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
{
if (formFile == null)
{
return SUCCESS(null);
}
int result = _proweekplanManageService.ImportExcel(formFile, HttpContext.GetName());
return SUCCESS(result);
}
//TODO 导出模板
///
/// 生产工单导入模板下载 workorder 启用(9/14)
///
///
[HttpGet("importTemplate")]
[Log(Title = "生产周计划导入模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)]
[AllowAnonymous]
public IActionResult ImportTemplateExcel()
{
(string, string) result = DownloadImportTemplate("weekplan");
return ExportExcel(result.Item2, result.Item1);
}
//TODO 导出excel指定日计划
[HttpGet("ExportWeekDatePlan")]
[AllowAnonymous]
public IActionResult ExportWeekDatePlan(int year, int week, string dayofweek)
{
try
{
// 调用Service层方法获取Excel字节数组和文件名
var (fileBytes, fileName) = _proweekplanManageService.ExportWeekDatePlan(year, week, dayofweek);
// 在Controller中使用File方法返回文件下载响应
return File(
fileBytes,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
fileName);
}
catch (Exception ex)
{
// 错误处理
return BadRequest(ex.Message);
}
}
//TODO 更新本周实际装配数量进度 输入年,周,更新计划进度
[HttpGet("updateactualassemblyprogress")]
public IActionResult UpdateActualAssemblyProgress(int year, int week)
{
int result = _proweekplanManageService.UpdateActualAssemblyProgress(year, week);
return SUCCESS(result);
}
}
}