using Microsoft.AspNetCore.Mvc; using ZR.Admin.WebApi.Extensions; using ZR.Model.mes.md; using ZR.Model.mes.pro; using ZR.Service.mes.pro.IService; using ZR.Service.MES.md; namespace ZR.Admin.WebApi.Controllers.MES.pro { // // [Route("mes/pro/workplan")] public class ProWorkplanController : BaseController { private readonly IProWorkplanService proWorkplanService; public ProWorkplanController(IProWorkplanService proWorkplanService) { this.proWorkplanService = proWorkplanService; } /// /// 获取生产计划列表 /// /// 页编号 /// 页大小 /// 年份 /// 周数 /// 零件号 /// 颜色 /// [HttpGet("list")] public IActionResult List(int pageNum, int pageSize, int year=-1, int week=-1, string partNumber = "", string color = "") { (List,int) data = proWorkplanService.GetAllData(pageNum, pageSize, year, week, partNumber, color); return ToResponse(new ApiResult(200, "success", data)); } /// /// 新增生产计划 /// /// 生产计划对象 /// [HttpPost("addworkplan")] public IActionResult AddWorkPlan([FromBody] ProWorkplan proWorkplan) { int data = 0; if (proWorkplan!=null) { proWorkplan.ToCreate(HttpContext); data = proWorkplanService.AddWorkPlan(proWorkplan); } return ToResponse(new ApiResult(200, "success", data)); } /// /// 更新生产计划 /// /// 生产计划对象 /// [HttpPost("updateworkplan")] public IActionResult UpdateWorkPlan([FromBody] ProWorkplan proWorkplan) { int data = 0; if (proWorkplan != null) { proWorkplan.ToUpdate(HttpContext); data = proWorkplanService.UpdateWorkPlan(proWorkplan); } return ToResponse(new ApiResult(200, "success", data)); } /// /// 删除生产计划 /// /// 计划ID /// [HttpGet("deleteitem/{id}")] public IActionResult DeleteItem(string id) { int data = 0; if (!string.IsNullOrEmpty(id)) { data = proWorkplanService.DeleteWorkPlan(id); } return ToResponse(new ApiResult(200, "success", data)); } /// /// 获取生产工单 /// /// 计划ID /// [HttpGet("getworkorderList/{id}")] public IActionResult GetWorkorderList(string id) { List lst = new List(); if (!string.IsNullOrEmpty(id)) { lst = proWorkplanService.GetWorkorderList(id); } return ToResponse(new ApiResult(200, "success", lst)); } /// /// 新增生产工单 /// /// 生产工单对象 /// [HttpPost("addworkorder")] public IActionResult AddWorkorder([FromBody] ProWorkorder proWorkorder) { // TODO 获取工单对象 // TODO 增加插入时间,插入人员:ToCreate // TODO 根据工单对象里的计划ID,查询生产计划的数量,判断工单数和要小于等于计划数:能插入,正常返回,0或1;大于,2 int data = 0; if (proWorkorder != null) { proWorkorder.Id = DateTime.Now.ToString("yyyyMMddHHmmss"); string workPlanId = proWorkorder.FkProPlanId; string workorderId = proWorkorder.Id; if (!string.IsNullOrEmpty(workPlanId) && !string.IsNullOrEmpty(workorderId)) { // 查询生产计划对象 List lstWorkplan = proWorkplanService.GetProWorkplanById(workPlanId); // 查询所有生产工单 List lstWorkorder = proWorkplanService.GetWorkorderList(workorderId); // 计算所有工单的数量和,生产计划的数量:比较 if(lstWorkplan!=null && lstWorkplan.Count==1) { int countWorkplan = int.Parse(lstWorkplan[0].ActualplanNumber.Trim()); int countWorkorder = 0; foreach (ProWorkorder item in lstWorkorder) { countWorkorder += item.Actualnumber.GetValueOrDefault(); } countWorkorder += proWorkorder.Actualnumber.GetValueOrDefault(); // 计划数>0 计划数要大于等于当前工单总数 if(countWorkplan > 0 && (countWorkplan>= countWorkorder)) { proWorkorder.ToCreate(HttpContext); data = proWorkplanService.AddWorkorder(proWorkorder); } else { data = 2; } } } } return ToResponse(new ApiResult(200, "success", data)); } /// /// 更新生产工单 /// /// 生产工单对象 /// [HttpPost("updateworkorder")] public IActionResult UpdateWorkorder([FromBody] ProWorkorder proWorkorder) { // TODO 判断更新的数量是否超过计划数 int data = 0; if (proWorkorder != null) { string workPlanId = proWorkorder.FkProPlanId; string workorderId = proWorkorder.Id; if (!string.IsNullOrEmpty(workPlanId) && !string.IsNullOrEmpty(workorderId)) { // 查询生产计划对象 List lstWorkplan = proWorkplanService.GetProWorkplanById(workPlanId); // 查询所有生产工单 List lstWorkorder = proWorkplanService.GetWorkorderList(workorderId); // 计算所有工单的数量和,生产计划的数量:比较 if (lstWorkplan != null && lstWorkplan.Count == 1) { int countWorkplan = int.Parse(lstWorkplan[0].ActualplanNumber.Trim()); int countWorkorder = 0; foreach (ProWorkorder item in lstWorkorder) { countWorkorder += item.Actualnumber.GetValueOrDefault(); } countWorkorder += proWorkorder.Actualnumber.GetValueOrDefault(); // 计划数>0 计划数要大于等于当前工单总数 if (countWorkplan > 0 && (countWorkplan >= countWorkorder)) { proWorkorder.ToUpdate(HttpContext); data = proWorkplanService.UpdateWorkorder(proWorkorder); } else { data = 2; } } } } return ToResponse(new ApiResult(200, "success", data)); } /// /// 删除生产工单 /// /// 工单ID /// [HttpGet("deleteworkorder/{id}")] public IActionResult DeleteWorkorder(string id) { int data = 0; if (!string.IsNullOrEmpty(id)) { data = proWorkplanService.DeleteWorkorder(id); } return ToResponse(new ApiResult(200, "success", data)); } } }