feat(hjgl): 完善焊接任务与质量管理流程
This commit is contained in:
@@ -112,6 +112,135 @@ namespace BLL
|
||||
return q.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按项目、班组查询逻辑任务单;同一TaskCode下的多条焊口记录合并为一张任务单。
|
||||
/// </summary>
|
||||
public static List<Model.WeldTaskListItem> GetTaskListByTeamGroup(string projectId, string teamGroupId, string unitWorkId)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(projectId))
|
||||
{
|
||||
return new List<Model.WeldTaskListItem>();
|
||||
}
|
||||
|
||||
var query = Funs.DB.HJGL_WeldTask.Where(x => x.ProjectId == projectId && x.TaskCode != null);
|
||||
if (!string.IsNullOrWhiteSpace(teamGroupId))
|
||||
{
|
||||
query = query.Where(x => x.TeamGroupId == teamGroupId);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(unitWorkId))
|
||||
{
|
||||
query = query.Where(x => x.UnitWorkId == unitWorkId);
|
||||
}
|
||||
|
||||
var tasks = query.ToList()
|
||||
.GroupBy(x => new { x.ProjectId, x.TaskCode })
|
||||
.Select(g =>
|
||||
{
|
||||
var first = g.OrderBy(x => x.WeldTaskId).First();
|
||||
return new Model.WeldTaskListItem
|
||||
{
|
||||
ProjectId = g.Key.ProjectId,
|
||||
TaskCode = g.Key.TaskCode,
|
||||
UnitWorkId = first.UnitWorkId,
|
||||
UnitId = first.UnitId,
|
||||
TaskDate = first.TaskDate,
|
||||
SerialNumber = first.SerialNumber,
|
||||
TeamGroupId = g.Select(x => x.TeamGroupId).FirstOrDefault(x => !string.IsNullOrEmpty(x)),
|
||||
WeldJointCount = g.Select(x => x.WeldJointId).Where(x => x != null).Distinct().Count()
|
||||
};
|
||||
})
|
||||
.OrderByDescending(x => x.TaskDate)
|
||||
.ThenByDescending(x => x.TaskCode)
|
||||
.ToList();
|
||||
|
||||
var unitWorkIds = tasks.Select(x => x.UnitWorkId).Where(x => x != null).Distinct().ToList();
|
||||
var unitIds = tasks.Select(x => x.UnitId).Where(x => x != null).Distinct().ToList();
|
||||
var teamIds = tasks.Select(x => x.TeamGroupId).Where(x => x != null).Distinct().ToList();
|
||||
var unitWorkMap = Funs.DB.WBS_UnitWork.Where(x => unitWorkIds.Contains(x.UnitWorkId)).ToDictionary(x => x.UnitWorkId, x => x.UnitWorkName);
|
||||
var unitMap = Funs.DB.Base_Unit.Where(x => unitIds.Contains(x.UnitId)).ToDictionary(x => x.UnitId, x => x.UnitName);
|
||||
var teamMap = Funs.DB.ProjectData_TeamGroup.Where(x => teamIds.Contains(x.TeamGroupId)).ToDictionary(x => x.TeamGroupId, x => x.TeamGroupName);
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
task.UnitWorkName = task.UnitWorkId != null && unitWorkMap.ContainsKey(task.UnitWorkId) ? unitWorkMap[task.UnitWorkId] : string.Empty;
|
||||
task.UnitName = task.UnitId != null && unitMap.ContainsKey(task.UnitId) ? unitMap[task.UnitId] : string.Empty;
|
||||
task.TeamGroupName = task.TeamGroupId != null && teamMap.ContainsKey(task.TeamGroupId) ? teamMap[task.TeamGroupId] : string.Empty;
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public static Model.WeldTaskDetailItem GetTaskDetail(string projectId, string taskCode)
|
||||
{
|
||||
var tasks = Funs.DB.HJGL_WeldTask
|
||||
.Where(x => x.ProjectId == projectId && x.TaskCode == taskCode)
|
||||
.OrderBy(x => x.PipeLineSortIndex)
|
||||
.ThenBy(x => x.WeldTaskId)
|
||||
.ToList();
|
||||
var first = tasks.FirstOrDefault();
|
||||
if (first == null) return null;
|
||||
|
||||
var summary = GetTaskListByTeamGroup(projectId, null, first.UnitWorkId)
|
||||
.FirstOrDefault(x => x.TaskCode == taskCode);
|
||||
if (summary == null) return null;
|
||||
var jointIds = tasks.Select(x => x.WeldJointId).Where(x => x != null).Distinct().ToList();
|
||||
var jointMap = Funs.DB.View_HJGL_WeldJoint.Where(x => jointIds.Contains(x.WeldJointId)).ToDictionary(x => x.WeldJointId, x => x);
|
||||
return new Model.WeldTaskDetailItem
|
||||
{
|
||||
ProjectId = first.ProjectId,
|
||||
TaskCode = summary.TaskCode,
|
||||
UnitWorkId = summary.UnitWorkId,
|
||||
UnitWorkName = summary.UnitWorkName,
|
||||
UnitId = summary.UnitId,
|
||||
UnitName = summary.UnitName,
|
||||
TaskDate = summary.TaskDate,
|
||||
SerialNumber = summary.SerialNumber,
|
||||
TeamGroupId = summary.TeamGroupId,
|
||||
TeamGroupName = summary.TeamGroupName,
|
||||
WeldJointCount = summary.WeldJointCount,
|
||||
Joints = tasks.Select(x =>
|
||||
{
|
||||
Model.View_HJGL_WeldJoint joint = null;
|
||||
if (!string.IsNullOrEmpty(x.WeldJointId) && jointMap.ContainsKey(x.WeldJointId)) joint = jointMap[x.WeldJointId];
|
||||
return new Model.WeldTaskJointItem
|
||||
{
|
||||
WeldTaskId = x.WeldTaskId,
|
||||
WeldJointId = x.WeldJointId,
|
||||
PipelineId = joint == null ? null : joint.PipelineId,
|
||||
PipelineCode = joint == null ? null : joint.PipelineCode,
|
||||
WeldJointCode = joint == null ? null : joint.WeldJointCode,
|
||||
JointAttribute = x.JointAttribute,
|
||||
WeldingMode = x.WeldingMode,
|
||||
WeldTypeCode = joint == null ? null : joint.WeldTypeCode,
|
||||
Size = joint == null ? null : joint.Size,
|
||||
CoverWelderId = x.CoverWelderId,
|
||||
BackingWelderId = x.BackingWelderId
|
||||
};
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
|
||||
public static void UpdateTaskTeamGroup(string projectId, string taskCode, string teamGroupId)
|
||||
{
|
||||
var tasks = Funs.DB.HJGL_WeldTask.Where(x => x.ProjectId == projectId && x.TaskCode == taskCode).ToList();
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
task.TeamGroupId = string.IsNullOrWhiteSpace(teamGroupId) || teamGroupId == Const._Null ? null : teamGroupId;
|
||||
}
|
||||
Funs.DB.SubmitChanges();
|
||||
}
|
||||
|
||||
public static void GenerateOutPlanByTaskCode(string projectId, string taskCode, string personId)
|
||||
{
|
||||
var task = Funs.DB.HJGL_WeldTask.FirstOrDefault(x => x.ProjectId == projectId && x.TaskCode == taskCode);
|
||||
if (task == null || !task.TaskDate.HasValue)
|
||||
{
|
||||
throw new ArgumentException("焊接任务单不存在或任务日期为空。");
|
||||
}
|
||||
|
||||
// 沿用原方法,TaskCode只负责定位其所需的组合任务参数。
|
||||
TwInOutplanmasterService.GenOutPlanmasterByWeldTaskId(
|
||||
task.UnitWorkId, task.UnitId, task.TaskDate.Value, task.SerialNumber, personId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加焊接任务单信息
|
||||
/// </summary>
|
||||
@@ -139,7 +268,8 @@ namespace BLL
|
||||
CanWeldingRodName = WeldTask.CanWeldingRodName,
|
||||
CanWeldingWireName = WeldTask.CanWeldingWireName,
|
||||
PipeLineSortIndex = WeldTask.PipeLineSortIndex,
|
||||
SerialNumber = WeldTask.SerialNumber
|
||||
SerialNumber = WeldTask.SerialNumber,
|
||||
TeamGroupId = WeldTask.TeamGroupId
|
||||
|
||||
};
|
||||
|
||||
@@ -172,6 +302,7 @@ namespace BLL
|
||||
newWeldTask.IsSaved = WeldTask.IsSaved;
|
||||
newWeldTask.SerialNumber = WeldTask.SerialNumber;
|
||||
newWeldTask.PipeLineSortIndex = WeldTask.PipeLineSortIndex;
|
||||
newWeldTask.TeamGroupId = WeldTask.TeamGroupId;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user