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; using System.Dynamic; 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 GetAllGroups() { return Context.Queryable().Where(it => it.Status == 1).ToList(); } public List GetAllRoutes() { return Context.Queryable().Where(it => it.Status == 1).ToList(); } public List GetPersonsList(string group_code) { var query = Context.Queryable() .Where(it => it.GroupCode == group_code); var result = Context.Queryable(query).LeftJoin((q, p) => q.FkPersonId == p.Id) .Select((q, p) => p).ToList(); return result; } // 获取组的人员列表 //public List GetPersonsList(string group_code) //{ //} /// /// 获取人员在某一工艺流程下技能的详情 /// /// /// 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) { dynamic personOfKills = new ExpandoObject(); personOfKills.personId = person.Id; personOfKills.personName = person.Name; 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(); 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 (dynamic person in handleSkillInfoDto.tableList) { string person_id = person.personId; GroupRelPersonSkill skill = Context.Queryable() .Where(it => it.FkSkillId == skill_item.Id) .Where(it => it.FkPersonId == person_id) .First(); if (skill != null) { //person.SetScore(skill.FkSkillId + index, skill.Score.Value); // person[skill.FkSkillId + index] = skill.Score.Value; IDictionary personDict = (IDictionary)person; string key = skill.FkSkillId; personDict[key] = skill.Score.Value; } } } } chlidren.children = children_skill_list; chlidren_workstation_List.Add(chlidren); } } columprocesses.children = chlidren_workstation_List; colums_process_List.Add(columprocesses); } } handleSkillInfoDto.colums = colums_process_List; return handleSkillInfoDto; } } }