195 lines
7.7 KiB
C#
195 lines
7.7 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 班次Service业务层处理
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(ISkillMatrixService), ServiceLifetime = LifeTime.Transient)]
|
|
public class SkillMatrixService : BaseService<GroupShift>, ISkillMatrixService
|
|
{
|
|
public List<GroupSchedule> GetAllGroups(DateTime date)
|
|
{
|
|
return Context.Queryable<GroupSchedule>().Where(it => it.Status == 1)
|
|
.Where(it => it.ScheduleDate == date)
|
|
.ToList();
|
|
|
|
}
|
|
|
|
public List<BaseGroup> GetAllGroups()
|
|
{
|
|
return Context.Queryable<BaseGroup>().Where(it => it.Status == 1).ToList();
|
|
}
|
|
|
|
public List<BaseWorkRoute> GetAllRoutes()
|
|
{
|
|
return Context.Queryable<BaseWorkRoute>().Where(it => it.Status == 1).ToList();
|
|
}
|
|
public List<GroupPerson> GetPersonsList(string group_code)
|
|
{
|
|
var query = Context.Queryable<GroupRelPersonGroup>()
|
|
.Where(it => it.GroupCode == group_code);
|
|
var result = Context.Queryable(query).LeftJoin<GroupPerson>((q, p) => q.FkPersonId == p.Id)
|
|
.Select((q, p) => p).ToList();
|
|
|
|
return result;
|
|
}
|
|
// 获取组的人员列表
|
|
|
|
//public List<GroupPerson> GetPersonsList(string group_code)
|
|
//{
|
|
|
|
//}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取人员在某一工艺流程下技能的详情
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public HandleSkillInfoDto GetSkillsDetailofPepole(HandleSkillQueryDto parm)
|
|
{
|
|
HandleSkillInfoDto handleSkillInfoDto = new HandleSkillInfoDto();
|
|
|
|
// 3 人员技能列表
|
|
|
|
|
|
List<dynamic> personOfKills_List = new List<dynamic>();
|
|
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)
|
|
{
|
|
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<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>();
|
|
|
|
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 (dynamic person in handleSkillInfoDto.tableList)
|
|
{
|
|
string person_id = person.personId;
|
|
GroupRelPersonSkill skill = Context.Queryable<GroupRelPersonSkill>()
|
|
.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<string, object> personDict = (IDictionary<string, object>)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;
|
|
|
|
}
|
|
}
|
|
} |