using Microsoft.AspNetCore.Mvc; using DOAN.Model.Dto; using DOAN.Service.MES.product.IService; using DOAN.Service.MES.product; using DOAN.Admin.WebApi.Filters; using DOAN.Model.MES.product.Dto; using DOAN.Model.MES.product; //创建时间:2025-10-16 namespace DOAN.Admin.WebApi.Controllers { /// /// 日计划达成率 /// [Verify] [Route("mes/productManagement/ProPlanAchievementrate")] public class ProPlanAchievementrateController : BaseController { /// /// 日计划达成率接口 /// private readonly IProPlanAchievementrateService _ProPlanAchievementrateService; public ProPlanAchievementrateController(IProPlanAchievementrateService ProPlanAchievementrateService) { _ProPlanAchievementrateService = ProPlanAchievementrateService; } /// /// 查询日计划达成率列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:list")] public IActionResult QueryProPlanAchievementrate([FromQuery] ProPlanAchievementrateQueryDto parm) { var response = _ProPlanAchievementrateService.GetList(parm); return SUCCESS(response); } //TODO 月度统计分类聚合 [HttpPost("month_list")] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:list")] public IActionResult QueryProPlanAchievementrateByMonth([FromQuery] ProPlanAchievementrateQueryDto2 parm) { var response = _ProPlanAchievementrateService.GetListByMonth(parm); return SUCCESS(response); } /// /// 查询日计划达成率详情 /// /// /// [HttpGet("{Id}")] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:query")] public IActionResult GetProPlanAchievementrate(int Id) { var response = _ProPlanAchievementrateService.GetInfo(Id); var info = response.Adapt(); return SUCCESS(info); } /// /// 添加日计划达成率 /// /// [HttpPost] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:add")] [Log(Title = "日计划达成率", BusinessType = BusinessType.INSERT)] public IActionResult AddProPlanAchievementrate([FromBody] ProPlanAchievementrateDto parm) { var modal = parm.Adapt().ToCreate(HttpContext); var response = _ProPlanAchievementrateService.AddProPlanAchievementrate(modal); return SUCCESS(response); } /// /// 更新日计划达成率 /// /// [HttpPut] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:edit")] [Log(Title = "日计划达成率", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateProPlanAchievementrate([FromBody] ProPlanAchievementrateDto parm) { var modal = parm.Adapt().ToUpdate(HttpContext); var response = _ProPlanAchievementrateService.UpdateProPlanAchievementrate(modal); return ToResponse(response); } /// /// 删除日计划达成率 /// /// [HttpDelete("{ids}")] [ActionPermissionFilter(Permission = "productManagement:proplanachievementrate:delete")] [Log(Title = "日计划达成率", BusinessType = BusinessType.DELETE)] public IActionResult DeleteProPlanAchievementrate(string ids) { int[] idsArr = Tools.SpitIntArrary(ids); if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } var response = _ProPlanAchievementrateService.Delete(idsArr); return ToResponse(response); } //TODO 根据日期和工单 生成日计划达成率 [HttpPost("dayofplanachievementrate")] public IActionResult DayofplanAchievementRate([FromBody] ProPlanAchievementrateQueryDto3 parm) { var response = _ProPlanAchievementrateService.DayofplanAchievementRate(parm); return SUCCESS(response); } //TODO 导出模板 [HttpGet("importTemplate")] [Log(Title = "计划达成率模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)] [AllowAnonymous] public IActionResult ImportTemplateExcel() { (string, string) result = DownloadImportTemplate("PlanAchievementRate"); return ExportExcel(result.Item2, result.Item1); } //TODO 导入excel 某天 [HttpPost("importData")] [Log(Title = "计划达成率导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)] [AllowAnonymous] public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile, [FromForm(Name = "importDate")] DateTime importDate) { if (formFile == null) { return SUCCESS(null); } int response = _ProPlanAchievementrateService.ImportData(formFile, HttpContext.GetName(), importDate); return SUCCESS(response); } //TODO 导出excel 某天 [HttpGet("exportData")] [Log(Title = "计划达成率导出", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)] [AllowAnonymous] public IActionResult ExportData([FromQuery] DateTime exportDate) { var excelBytes = _ProPlanAchievementrateService.ExportData(exportDate); string fileName = $"PlanAchievementRate_{exportDate:yyyyMMdd}.xlsx"; return File( excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName ); } } }