using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure.Attribute; using DOAN.Service.JobKanban.IService; using DOAN.Model.MES.product; using DOAN.Model.MES.base_; using DOAN.Model.MES.product.Dto; using DOAN.Model.MES.mm; using DOAN.Model.JobKanban; namespace DOAN.Service.JobKanban { [AppService(ServiceType = typeof(IWorkorderProgressService), ServiceLifetime = LifeTime.Transient)] public class WorkorderProgressService : BaseService, IWorkorderProgressService { public List GetRoutes() { return Context.Queryable().Where(it => it.Status == 1).ToList(); } public List GetGroups() { return Context.Queryable().Where(it => it.Status == 1).ToList(); } public List GetWorkOrderList(string group_code, string line_code, DateTime handleDate) { handleDate = handleDate.ToLocalTime().Date; return Context.Queryable().Where(it => it.GroupCode == group_code) .Where(it => it.LineCode == line_code) .Where(it => it.WorkorderDate == handleDate) .ToList(); } /// /// 获取工单列表 未完成 /// /// /// /// public List GetWorkOrderListNoFinish(DateTime today, string line_code, string group_code) { today = today.ToLocalTime().Date; var query1 = Context.Queryable() .Where(it => it.WorkorderDate == today) .Where(it => it.LineCode == line_code) .Where(it => it.GroupCode == group_code) .Where(it => it.Status == 1 || it.Status == 2) ; List ProWorkorderDto4List = Context.Queryable(query1) .LeftJoin((q, r) => q.Workorder == r.FkWorkorder) .Select((q, r) => new ProWorkorderDto4() { FinishNum = r.FinishedNum }, true) .MergeTable() .OrderBy(it => it.Workorder) .ToList(); if (ProWorkorderDto4List.Count > 0) { foreach (var item in ProWorkorderDto4List) { item.progress = SearchMaterialPreparationProgress(item.Workorder); } } return ProWorkorderDto4List; } /// /// 根据工单号 查询每个工单号进度 /// /// /// private MaterialPreparationProgress SearchMaterialPreparationProgress(string Workorder) { MaterialPreparationProgress progress = new MaterialPreparationProgress(); //TODO 查询工单总任务数 progress.WorkOrder = Workorder; progress.Preparation_all_num = Context.Queryable().Where(it => it.FkWorkorder == Workorder) .Count(); progress.Preparationed_num = Context.Queryable().Where(it => it.FkWorkorder == Workorder) .Where(it => it.PreparationStatus == 2) .Count(); if (progress.Preparationed_num == progress.Preparation_all_num) { progress.PreparationStatus = 2; } else if (progress.Preparationed_num < progress.Preparation_all_num) { progress.PreparationStatus = 1; } if (progress.Preparation_all_num == 0) { progress.PreparationStatus = 0; } return progress; } public ProWorkorderDto4 GetWorkOrderDetail(string workorder) { var query = Context.Queryable() .Where(it => it.Workorder == workorder); return Context.Queryable(query) .LeftJoin((q, r) => q.Workorder == r.FkWorkorder) .Select((q, r) => new ProWorkorderDto4() { FinishNum = r.FinishedNum }, true).First(); } public KanbanInfo GetKanbanNum(DateTime today, string line_code, string group_code) { KanbanInfo kanbanInfo = new KanbanInfo(); today = today.ToLocalTime().Date; kanbanInfo.TotalTaskNum = Context.Queryable() .Where(it => it.WorkorderDate == today) .Where(it => it.LineCode == line_code) .Where(it => it.GroupCode == group_code) .Count(); kanbanInfo.RemainTasKNum = Context.Queryable() .Where(it => it.WorkorderDate == today) .Where(it => it.LineCode == line_code) .Where(it => it.GroupCode == group_code) .Where(it => it.Status == 1 || it.Status == 2) .Count(); return kanbanInfo; } public int StartWorkOrder(string workorder) { return Context.Updateable().SetColumns(it => it.Status == 2) .Where(it => it.Workorder == workorder).ExecuteCommand(); } public int FinishWorkOrder(string workorder) { return Context.Updateable().SetColumns(it => it.Status == 3) .Where(it => it.Workorder == workorder).ExecuteCommand(); } public ProWorkorder GetProductingWorkorder(string group_code, string line_code, DateTime handleDate) { handleDate = handleDate.ToLocalTime().Date; return Context.Queryable().Where(it => it.GroupCode == group_code) .Where(it => it.LineCode == line_code) .Where(it => it.WorkorderDate == handleDate) .Where(it => it.Status == 2).First(); } } }