diff --git a/DOAN.Admin.WebApi/Controllers/MES/group/GroupPersonOfSkillMatrixController.cs b/DOAN.Admin.WebApi/Controllers/MES/group/GroupPersonOfSkillMatrixController.cs index 84fb692..7a76bf0 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/group/GroupPersonOfSkillMatrixController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/group/GroupPersonOfSkillMatrixController.cs @@ -53,6 +53,15 @@ namespace DOAN.Admin.WebApi.Controllers return SUCCESS(response); } + //TODO 获取人员在某一工艺流程下技能的详情 + [HttpPost("get_detail")] + public IActionResult GetSkillsDetailofPepole([FromBody] HandleSkillQueryDto parm) + { + var response = _SkillMatrixService.GetSkillsDetailofPepole(parm); + + return SUCCESS(response); + + } } } \ No newline at end of file diff --git a/DOAN.Model/MES/group/Dto/HandleSkillInfoDto.cs b/DOAN.Model/MES/group/Dto/HandleSkillInfoDto.cs new file mode 100644 index 0000000..848ffb4 --- /dev/null +++ b/DOAN.Model/MES/group/Dto/HandleSkillInfoDto.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Model.MES.group.Dto +{ + public class HandleSkillQueryDto + { + /// + /// 人员清单 + /// + public string[] person_id { get; set; } + /// + /// 路线id + /// + public int Route_id { get; set; } + + } + /// + /// 人员技能矩阵 + /// + public class HandleSkillInfoDto + { + /// + /// 工艺流程名称 + /// + public string RouteName { get; set; } + + + + /// + /// 工艺流程绑定的工序 + /// + public List colums { get; set; } + + + + /// + /// 人员技能列表 + /// + public List tableList { get; set; } + + + } + /// + /// 工序详情 + /// + public class Columprocesses + { + /// + /// 工序名称 + /// + public string processesName { get; set; } + /// + /// 工序绑定的工位 + /// + public List chlidren { get; set; } + + + + } + + /// + /// 工位 + /// + public class StationChlidren + { + /// + /// 工位名称 + /// + public string stationName { get; set; } + + /// + /// 技能描述 + /// + public List children { get; set; } + } + + /// + /// 技能描述 + /// + public class Skillschlidren + { + /// + /// 技能id + /// + public string skillId { get; set; } + /// + /// 技能名称 + /// + public string skillName { get; set; } + } + /// + /// 个人的技能 + /// + public class PersonOfKills + { + /// + /// 个人id + /// + public string personId { get; set; } + /// + /// 工号 + /// + public string workNum { get; set; } + /// + /// 职位 + /// + public string postName { get; set; } + /// + /// 姓名 + /// + public string personName { get; set; } + + } + + + /// + /// 人员技能增加属性 + /// + public static class PersonOfKillsExtensions + { + /// + /// 获取属性 + /// + /// + /// + /// + public static string GetScore(this PersonOfKills person, string Property) + { + return person.GetType().GetProperty(Property).GetValue(person)?.ToString(); + } + /// + /// 设置属性 + /// + /// + /// + /// + public static void SetScore(this PersonOfKills person, string Property, int value) + { + var propertyInfo = person.GetType().GetProperty(Property); + if (propertyInfo != null && propertyInfo.CanWrite) + { + propertyInfo.SetValue(person, value); + } + } + } + +} + + + + + diff --git a/DOAN.Service/MES/group/GroupScheduleService.cs b/DOAN.Service/MES/group/GroupScheduleService.cs index e365c58..f4efe85 100644 --- a/DOAN.Service/MES/group/GroupScheduleService.cs +++ b/DOAN.Service/MES/group/GroupScheduleService.cs @@ -334,10 +334,8 @@ namespace DOAN.Service.Business if(item.FkSkillId == item2.FkSkillId) { item.WorkStationDescription = item.WorkStationDescription; - } - + } } - } return result_List; diff --git a/DOAN.Service/MES/group/IService/ISkillMatrixService.cs b/DOAN.Service/MES/group/IService/ISkillMatrixService.cs index 6e73af7..b3a439d 100644 --- a/DOAN.Service/MES/group/IService/ISkillMatrixService.cs +++ b/DOAN.Service/MES/group/IService/ISkillMatrixService.cs @@ -5,6 +5,7 @@ using DOAN.Model.MES.group; using DOAN.Model.MES.group.Dto; using System.Collections.Generic; using DOAN.Model.MES.base_; +using Microsoft.AspNetCore.Mvc; namespace DOAN.Service.MES.group.IService { @@ -16,5 +17,7 @@ namespace DOAN.Service.MES.group.IService List GetAllRoutes(); List GetPersonsList(string group_schedule_id); + + HandleSkillInfoDto GetSkillsDetailofPepole(HandleSkillQueryDto parm); } } diff --git a/DOAN.Service/MES/group/SkillMatrixService.cs b/DOAN.Service/MES/group/SkillMatrixService.cs index 75f43a4..bf18c23 100644 --- a/DOAN.Service/MES/group/SkillMatrixService.cs +++ b/DOAN.Service/MES/group/SkillMatrixService.cs @@ -14,6 +14,7 @@ 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 { @@ -25,9 +26,9 @@ namespace DOAN.Service.group { public List GetAllGroups(DateTime date) { - return Context.Queryable().Where(it=>it.Status==1) - .Where(it=>it.ScheduleDate==date) - .ToList(); + return Context.Queryable().Where(it => it.Status == 1) + .Where(it => it.ScheduleDate == date) + .ToList(); } @@ -43,5 +44,129 @@ namespace DOAN.Service.group 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; + + } } } \ No newline at end of file