diff --git a/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs b/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs index ada0fa11..7d6e9ce1 100644 --- a/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/mm/MaterialInputController.cs @@ -68,11 +68,10 @@ namespace ZR.Admin.WebApi.Controllers.mes.mm [HttpPost("generatetask")] public IActionResult Generatetask([FromBody] IngredientTaskDto task) { - if(task==null||task.workorders==null) + if(task==null||task.workorders==null|| task.workorders.Count==0) { - SUCCESS(null); + return SUCCESS(null); } - task.ToCreate(); int res = materialInputService.Generatetask(task, HttpContext.GetName()); return SUCCESS(res); } diff --git a/ZR.Service/mes/mm/MaterialInputService.cs b/ZR.Service/mes/mm/MaterialInputService.cs index 846c4673..cb5805d8 100644 --- a/ZR.Service/mes/mm/MaterialInputService.cs +++ b/ZR.Service/mes/mm/MaterialInputService.cs @@ -16,6 +16,7 @@ using System.Globalization; using static System.Runtime.InteropServices.JavaScript.JSType; using ZR.Model.MES.mm.Dto; using SqlSugar; +using Microsoft.Extensions.Hosting; namespace ZR.Service.mes.mm { @@ -83,9 +84,31 @@ namespace ZR.Service.mes.mm .Where(it => it.Date == dayOfWeekNumber) .Where(it=>it.Remark3=="是") .ToList(); + string[] workorderArray=new string[WorkorderList.Count]; + for(int i = 0; i< WorkorderList.Count; i++) + { + workorderArray[i] = WorkorderList[i].ClientWorkorder; + } + // 配料list + List ingredients=Context.Queryable() + .Where(it=> workorderArray.Contains(it.FkWorkorder)) + .Where(it=> it.Isingredient==0) + .ToList(); + for (int i = 0; i < WorkorderList.Count; i++) + { + for (int j = 0; j < ingredients.Count; j++) + { + if (ingredients[j].FkWorkorder == WorkorderList[i].ClientWorkorder) + { + WorkorderList[i].PreviousNumber = ingredients[j].Remian ?? 0; + + } + } + + } - return WorkorderList; + return WorkorderList; } /// @@ -96,17 +119,45 @@ namespace ZR.Service.mes.mm public int Generatetask(IngredientTaskDto task,string name) { List ingredientTasks=new List (); - - foreach(var item in task.workorders) + long taskid= SnowFlakeSingle.Instance.NextId(); + foreach (var item in task.workorders) { + //TODO 处理 未完成的工单 + //1 判断为未完成的工单 + if (item.previousNumber > item.previousNumbered) + { + int remain = item.previousNumber - item.previousNumbered; + + //插入或者修改 + MmFkWorkorderIngredient ingredient=new MmFkWorkorderIngredient(); + ingredient.FkWorkorder=item.workorder; + ingredient.Isingredient=0; + ingredient.Remian = remain; + ingredient.CreatedTime=DateTime.Now; + ingredient.UpdatedTime=DateTime.Now; + + var x = Context.Storageable(ingredient).ToStorage(); + x.AsInsertable.ExecuteCommand();//不存在插入 + x.AsUpdateable.IgnoreColumns(z => z.CreatedTime).ExecuteCommand();//存在更新 + + } + else if (item.previousNumber==item.previousNumbered) + { + Context.Updateable() + .SetColumns(it => it.Isingredient == 1) + .SetColumns(it => it.Remian == 0) + .Where(it => it.FkWorkorder == item.workorder).ExecuteCommand(); + } + MmIngredientTask ingredientTask = new MmIngredientTask(); ingredientTask.AgvPosition = task.agv_position; - ingredientTask.TaskId = SnowFlakeSingle.Instance.NextId(); + ingredientTask.TaskId = taskid; ingredientTask.Workorder = item.workorder; ingredientTask.Partnumber = item.partnumber; ingredientTask.PreviousNumber = item.previousNumber; ingredientTask.PreviousNumbered=item.previousNumbered; ingredientTask.CreatedBy = name; + ingredientTask.CreatedTime=DateTime.Now; ingredientTasks.Add(ingredientTask); diff --git a/ZR.Service/mes/mm/MmFkWorkorderIngredient.cs b/ZR.Service/mes/mm/MmFkWorkorderIngredient.cs new file mode 100644 index 00000000..8f2b44fc --- /dev/null +++ b/ZR.Service/mes/mm/MmFkWorkorderIngredient.cs @@ -0,0 +1,63 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ZR.Service.mes.mm +{ + /// + /// + /// + [SugarTable("mm_fk_workorder_ingredient")] + public class MmFkWorkorderIngredient + { + /// + /// Id + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 工单号 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "fk_workorder")] + public string FkWorkorder { get; set; } + + /// + /// 是否完成配料 + /// + public int? Isingredient { get; set; } + + /// + /// 剩余的待上件数量 + /// + public int? Remian { get; set; } + + /// + /// CreatedBy + /// + [SugarColumn(ColumnName = "cREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// CreatedTime + /// + [SugarColumn(ColumnName = "cREATED_TIME")] + public DateTime? CreatedTime { get; set; } + + /// + /// UpdatedBy + /// + [SugarColumn(ColumnName = "uPDATED_BY")] + public string UpdatedBy { get; set; } + + /// + /// UpdatedTime + /// + [SugarColumn(ColumnName = "uPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + + } +} \ No newline at end of file