获取人员在某一工艺流程下技能的详情
This commit is contained in:
parent
4f613c80d8
commit
a13ad1bae6
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
156
DOAN.Model/MES/group/Dto/HandleSkillInfoDto.cs
Normal file
156
DOAN.Model/MES/group/Dto/HandleSkillInfoDto.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 人员清单
|
||||
/// </summary>
|
||||
public string[] person_id { get; set; }
|
||||
/// <summary>
|
||||
/// 路线id
|
||||
/// </summary>
|
||||
public int Route_id { get; set; }
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 人员技能矩阵
|
||||
/// </summary>
|
||||
public class HandleSkillInfoDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 工艺流程名称
|
||||
/// </summary>
|
||||
public string RouteName { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 工艺流程绑定的工序
|
||||
/// </summary>
|
||||
public List<Columprocesses> colums { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 人员技能列表
|
||||
/// </summary>
|
||||
public List<PersonOfKills> tableList { get; set; }
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 工序详情
|
||||
/// </summary>
|
||||
public class Columprocesses
|
||||
{
|
||||
/// <summary>
|
||||
/// 工序名称
|
||||
/// </summary>
|
||||
public string processesName { get; set; }
|
||||
/// <summary>
|
||||
/// 工序绑定的工位
|
||||
/// </summary>
|
||||
public List<StationChlidren> chlidren { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工位
|
||||
/// </summary>
|
||||
public class StationChlidren
|
||||
{
|
||||
/// <summary>
|
||||
/// 工位名称
|
||||
/// </summary>
|
||||
public string stationName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 技能描述
|
||||
/// </summary>
|
||||
public List<Skillschlidren> children { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 技能描述
|
||||
/// </summary>
|
||||
public class Skillschlidren
|
||||
{
|
||||
/// <summary>
|
||||
/// 技能id
|
||||
/// </summary>
|
||||
public string skillId { get; set; }
|
||||
/// <summary>
|
||||
/// 技能名称
|
||||
/// </summary>
|
||||
public string skillName { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 个人的技能
|
||||
/// </summary>
|
||||
public class PersonOfKills
|
||||
{
|
||||
/// <summary>
|
||||
/// 个人id
|
||||
/// </summary>
|
||||
public string personId { get; set; }
|
||||
/// <summary>
|
||||
/// 工号
|
||||
/// </summary>
|
||||
public string workNum { get; set; }
|
||||
/// <summary>
|
||||
/// 职位
|
||||
/// </summary>
|
||||
public string postName { get; set; }
|
||||
/// <summary>
|
||||
/// 姓名
|
||||
/// </summary>
|
||||
public string personName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 人员技能增加属性
|
||||
/// </summary>
|
||||
public static class PersonOfKillsExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取属性
|
||||
/// </summary>
|
||||
/// <param name="person"></param>
|
||||
/// <param name="Property"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetScore(this PersonOfKills person, string Property)
|
||||
{
|
||||
return person.GetType().GetProperty(Property).GetValue(person)?.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置属性
|
||||
/// </summary>
|
||||
/// <param name="person"></param>
|
||||
/// <param name="Property"></param>
|
||||
/// <param name="email"></param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -334,10 +334,8 @@ namespace DOAN.Service.Business
|
||||
if(item.FkSkillId == item2.FkSkillId)
|
||||
{
|
||||
item.WorkStationDescription = item.WorkStationDescription;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return result_List;
|
||||
|
||||
|
||||
@ -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<BaseWorkRoute> GetAllRoutes();
|
||||
|
||||
List<GroupPersonDto> GetPersonsList(string group_schedule_id);
|
||||
|
||||
HandleSkillInfoDto GetSkillsDetailofPepole(HandleSkillQueryDto parm);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<GroupSchedule> GetAllGroups(DateTime date)
|
||||
{
|
||||
return Context.Queryable<GroupSchedule>().Where(it=>it.Status==1)
|
||||
.Where(it=>it.ScheduleDate==date)
|
||||
.ToList();
|
||||
return Context.Queryable<GroupSchedule>().Where(it => it.Status == 1)
|
||||
.Where(it => it.ScheduleDate == date)
|
||||
.ToList();
|
||||
|
||||
}
|
||||
|
||||
@ -43,5 +44,129 @@ namespace DOAN.Service.group
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取人员在某一工艺流程下技能的详情
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public HandleSkillInfoDto GetSkillsDetailofPepole(HandleSkillQueryDto parm)
|
||||
{
|
||||
HandleSkillInfoDto handleSkillInfoDto = new HandleSkillInfoDto();
|
||||
|
||||
// 3 人员技能列表
|
||||
|
||||
|
||||
List<PersonOfKills> personOfKills_List = new List<PersonOfKills>();
|
||||
List<GroupPersonDto> groupPeople = Context.Queryable<GroupPerson>().LeftJoin<GroupPost>((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<BaseWorkRoute>().Where(it => it.Id == parm.Route_id).Select(it => it.Name).First();
|
||||
// 2 获取工艺流程绑定的工序
|
||||
List<BaseWorkProcesses> Processess = Context.Queryable<BaseRelWorkRouteProcesses>().LeftJoin<BaseWorkProcesses>((rel, p) => rel.FkWorkProcesses == p.Id)
|
||||
.Where((rel, p) => rel.FkWorkRoute == parm.Route_id).Select((rel, p) => p).ToList();
|
||||
|
||||
|
||||
List<Columprocesses> colums_process_List=new List<Columprocesses>();
|
||||
int index = 1;
|
||||
if (Processess != null && Processess.Count() > 0)
|
||||
{
|
||||
|
||||
foreach (var processItem in Processess)
|
||||
{
|
||||
|
||||
Columprocesses columprocesses = new Columprocesses();
|
||||
columprocesses.processesName = processItem.Name;
|
||||
|
||||
List<StationChlidren> chlidren_workstation_List=new List<StationChlidren>();
|
||||
// 获取工序下的工位
|
||||
List<BaseWorkStation> workStationList = Context.Queryable<BaseWorkStation>().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<GroupPersonSkill> skillList = Context.Queryable<GroupRelWorkstationSkill>()
|
||||
.LeftJoin<GroupPersonSkill>((rel, skill) => rel.FkSkillId == skill.Id)
|
||||
.Where((rel, skill) => rel.FkWorkstationId == workstation_item.Id)
|
||||
.Select((rel, skill) => skill)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
List<Skillschlidren> children_skill_list = new List<Skillschlidren>();
|
||||
|
||||
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<GroupRelPersonSkill>()
|
||||
.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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user