using DOAN.Model.MES.group; using DOAN.Service.group.IService; using System; using SqlSugar; using Infrastructure.Attribute; using Infrastructure.Extensions; using DOAN.Model; using DOAN.Model.MES.group.Dto; using DOAN.Model.MES.group; using DOAN.Repository; using DOAN.Service.group.IService; using System.Linq; using Mapster; using DOAN.Service.MES.group.IService; using DOAN.Model.MES.base_; using NPOI.SS.Formula.Functions; namespace DOAN.Service.group { /// /// 班次Service业务层处理 /// [AppService(ServiceType = typeof(ISkillMatrixService), ServiceLifetime = LifeTime.Transient)] public class SkillMatrixService : BaseService, ISkillMatrixService { public List GetAllGroups(DateTime date) { return Context.Queryable().Where(it => it.Status == 1) .Where(it => it.ScheduleDate == date) .ToList(); } public List GetAllRoutes() { return Context.Queryable().Where(it => it.Status == 1).ToList(); } public List GetPersonsList(string group_schedule_id) { //var query=Context.Queryable() // .Where(it=>it.FkGroupId==group_schedule_id) //Context.Queryable(query).Where(it=>it.) return null; } /// /// 获取人员在某一工艺流程下技能的详情 /// /// /// public HandleSkillInfoDto GetSkillsDetailofPepole(HandleSkillQueryDto parm) { HandleSkillInfoDto handleSkillInfoDto = new HandleSkillInfoDto(); // 3 人员技能列表 List personOfKills_List = new List(); List groupPeople = Context.Queryable().LeftJoin((pe, po) => pe.FkPost == po.Id) .Where((pe, po) => parm.person_id.Contains(pe.Id)) .Select((pe, po) => new GroupPersonDto() { PostName = po.PostName }, true) .ToList(); if (groupPeople != null && groupPeople.Count() > 0) { foreach (GroupPersonDto person in groupPeople) { PersonOfKills personOfKills = new PersonOfKills(); personOfKills.personId = person.Id; personOfKills.workNum = person.WorkNum; personOfKills.postName = person.PostName; personOfKills_List.Add(personOfKills); } } handleSkillInfoDto.tableList = personOfKills_List; // 1 获取工艺流程 handleSkillInfoDto.RouteName = Context.Queryable().Where(it => it.Id == parm.Route_id).Select(it => it.Name).First(); // 2 获取工艺流程绑定的工序 List Processess = Context.Queryable().LeftJoin((rel, p) => rel.FkWorkProcesses == p.Id) .Where((rel, p) => rel.FkWorkRoute == parm.Route_id).Select((rel, p) => p).ToList(); List colums_process_List=new List(); int index = 1; if (Processess != null && Processess.Count() > 0) { foreach (var processItem in Processess) { Columprocesses columprocesses = new Columprocesses(); columprocesses.processesName = processItem.Name; List chlidren_workstation_List=new List(); // 获取工序下的工位 List workStationList = Context.Queryable().Where(it => it.FkWorkProcesses == processItem.Id).ToList(); if (workStationList != null && workStationList.Count() > 0) { foreach (var workstation_item in workStationList) { StationChlidren chlidren = new StationChlidren(); chlidren.stationName = workstation_item.WorkStationDescription; // 获取工位下的技能 List skillList = Context.Queryable() .LeftJoin((rel, skill) => rel.FkSkillId == skill.Id) .Where((rel, skill) => rel.FkWorkstationId == workstation_item.Id) .Select((rel, skill) => skill) .Distinct() .ToList(); List children_skill_list = new List(); if (skillList != null && skillList.Count() > 0) { foreach (var skill_item in skillList) { Skillschlidren skillschlidren = new Skillschlidren(); skillschlidren.skillId = skill_item.Id; skillschlidren.skillName = skill_item.SkillName; children_skill_list.Add(skillschlidren); // 判断在这个工位这个技能在某个人的评分 foreach(var person in handleSkillInfoDto.tableList) { int? score= Context.Queryable() .Where(it => it.FkSkillId == skill_item.Id) .Where(it => it.FkPersonId == person.personId) .Select(it=>it.Score).First(); if(score!=null) { person.SetScore("score" + index, score.Value); } index++; } } } chlidren.children = children_skill_list; chlidren_workstation_List.Add(chlidren); } } columprocesses.chlidren = chlidren_workstation_List; colums_process_List.Add(columprocesses); } } handleSkillInfoDto.colums = colums_process_List; return handleSkillInfoDto; } } }